From 2f18780a16a68f7fc67dd3bca61b8d0aed7c8e1a Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 19 四月 2025 15:09:08 +0800
Subject: [PATCH] 提交代码
---
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zjjg.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.g.targets | 2
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderService.csproj.nuget.g.targets | 6
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callC.png | 0
项目代码/WMS/WIDESEA_WMSClient/public/favicon.ico | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role.vue | 217
项目代码/PDA/LDY_PDA/uview-ui/components/u-badge/u-badge.vue | 213
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.g.targets | 8
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj | 21
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/components/workflow/node_form.vue | 350
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/inorder.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj | 13
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2 | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/uni.ttf | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-checkbox/u-checkbox.vue | 275
项目代码/WCS/WIDESEAWCS_Client/src/views/builder/coder.vue | 658
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/logo.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/05.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/UploadExcel.vue | 221
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielInfo.vue | 95
项目代码/PDA/LDY_PDA/uview-ui/components/u-count-to/u-count-to.vue | 239
项目代码/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj | 47
项目代码/PDA/LDY_PDA/uview-ui/components/u-td/u-td.vue | 102
项目代码/PDA/LDY_PDA/pages/index/main.vue | 159
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/WIDESEA_WMSServer.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/static/image/logo.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_UnitInfo.vue | 84
项目代码/WMS/WIDESEA_WMSClient/.gitignore | 23
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/roomtemperature.vue | 61
项目代码/PDA/LDY_PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue | 256
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj | 15
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj | 17
项目代码/PDA/LDY_PDA/static/image/ReceivingGoodsE.png | 0
项目代码/PDA/LDY_PDA/static/image/login.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ortherbox.png | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing2.png | 0
项目代码/PDA/LDY_PDA/static/image/out3.png | 0
项目代码/PDA/LDY_PDA/static/image/in1.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out3.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue | 108
项目代码/PDA/LDY_PDA/static/image/forkliftB.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj | 17
项目代码/PDA/LDY_PDA/pages/Outbound/OutboundCheck.vue | 300
项目代码/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v9.bin | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/WIDESEA_Core.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj | 23
项目代码/PDA/LDY_PDA/components/wyb-popup/wyb-popup.vue | 420
项目代码/PDA/LDY_PDA/static/image/boxing2.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageBasicServices.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/uview-ui/components/u-row-notice/u-row-notice.vue | 267
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/obj/WIDESEA_BusinessServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2 | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/redirect/RedirectError.vue | 59
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageBasicServices.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/uview-ui/components/u-empty/u-empty.vue | 193
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue | 152
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniapperror.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/redirect/404.vue | 21
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-mask/u-mask.vue | 123
项目代码/PDA/LDY_PDA/components/watch-login/watch-input.vue | 208
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj | 14
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsC.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/logo.png | 0
项目代码/PDA/LDY_PDA/components/uni-link/uni-link.vue | 72
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/lend.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-tr/u-tr.vue | 25
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx | 189
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue | 67
项目代码/PDA/LDY_PDA/uview-ui/components/u-avatar/u-avatar.vue | 241
项目代码/PDA/LDY_PDA/uview-ui/components/u-parse/libs/handler.wxs | 22
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/obj/WIDESEA_StorageOutOrderRepository.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSClient/src/components/workflow/node_filter.vue | 201
项目代码/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list-item.vue | 142
项目代码/PDA/LDY_PDA/uview-ui/components/u-parse/u-parse.vue | 630
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callC.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.g.targets | 2
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/uview-ui/index.scss | 23
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicService.csproj.nuget.g.targets | 6
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/formChart.vue | 118
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj | 14
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx | 61
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zj.png | 0
项目代码/PDA/LDY_PDA/uni.scss | 7
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-parse/libs/trees.vue | 501
项目代码/PDA/LDY_PDA/static/image/inorder.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskService.csproj.nuget.g.targets | 6
项目代码/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue | 71
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/appoint.png | 0
项目代码/PDA/LDY_PDA/components/uni-load-more/uni-load-more.vue | 364
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/04.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue | 618
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/WIDESEA_StorageOutOrderRepository.csproj | 13
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/error-img.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-count-down/u-count-down.vue | 315
项目代码/PDA/LDY_PDA/uview-ui/components/u-upload/u-upload.vue | 614
项目代码/PDA/LDY_PDA/unpackage/cache/apk/__UNI__C94AE9A_cm.apk | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/log.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Volume.vue | 58
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/obj/WIDESEA_DTO.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/extension/quartzJob/extend/importDevicePro.vue | 116
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/logo.jpg.jpg | 0
项目代码/PDA/LDY_PDA/pages/Outbound/OutboundCompleted.vue | 233
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/WIDESEAWCS_ProcessService.csproj | 14
项目代码/PDA/LDY_PDA/pages/Check/Check.vue | 280
项目代码/PDA/LDY_PDA/static/image/check2.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-keyboard/u-keyboard.vue | 217
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Staticlibrary.vue | 96
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj | 44
项目代码/PDA/LDY_PDA/pages/Inbound/InboundBoxing.vue | 460
项目代码/WMS/WIDESEA_WMSClient/.eslintrc.cjs | 19
项目代码/PDA/LDY_PDA/static/image/out4.png | 0
项目代码/PDA/LDY_PDA/static/image/callE.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/routerview.vue | 96
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/public/static/imgs/icon4.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/editor/KindEditor.vue | 13
项目代码/PDA/LDY_PDA/uview-ui/components/u-form-item/u-form-item.vue | 401
项目代码/PDA/LDY_PDA/components/uni-swiper-dot/uni-swiper-dot.vue | 198
项目代码/PDA/LDY_PDA/static/image/forklift.png | 0
项目代码/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item copy.vue | 167
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out2.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-picker/u-picker.vue | 676
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/logo.png | 0
项目代码/PDA/LDY_PDA/components/uni-popup/uni-popup-dialog.vue | 243
项目代码/PDA/LDY_PDA/uview-ui/components/u-dropdown/u-dropdown.vue | 231
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/logo.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/in1.png | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsD.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-read-more/u-read-more.vue | 179
项目代码/PDA/LDY_PDA/uview-ui/components/u-field/u-field.vue | 382
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less | 193
项目代码/PDA/LDY_PDA/uview-ui/components/u-link/u-link.vue | 89
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/obj/WIDESEAWCS_IProcessService.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/uview-ui/components/u-back-top/u-back-top.vue | 153
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callB.png | 0
项目代码/WMS/WIDESEA_WMSClient/public/static/imgs/icon3.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue | 1793 +
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/AsyncLoading.vue | 10
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielAttribute.vue | 86
项目代码/PDA/LDY_PDA/static/uni.ttf | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.g.targets | 8
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/obj/WIDESEA_Model.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderServices.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/uview-ui/components/u-top-tips/u-top-tips.vue | 121
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_User.vue | 369
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj | 9
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.vue | 806
项目代码/PDA/LDY_PDA/uview-ui/components/u-no-network/u-no-network.vue | 233
项目代码/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue | 246
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageTaskRepository.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/uview-ui/theme.scss | 38
项目代码/PDA/LDY_PDA/uview-ui/components/u-card/u-card.vue | 298
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Repository/obj/WIDESEA_Repository.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_WareAreaInfo.vue | 86
项目代码/PDA/LDY_PDA/static/image/lend.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/logo.jpg.jpg | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskService.csproj.nuget.g.targets | 6
项目代码/WCS/WIDESEAWCS_Client/src/App.vue | 63
项目代码/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/basicinfo/router.vue | 265
项目代码/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue | 281
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj | 41
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/obj/WIDESEA_IRepository.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridCustomColumn.vue | 95
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue | 67
项目代码/WMS/WIDESEA_WMSClient/src/components/workflow/node.vue | 100
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/system/test.vue | 18
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/return.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-th/u-th.vue | 53
项目代码/PDA/LDY_PDA/static/image/qualityIn.png | 0
项目代码/PDA/LDY_PDA/components/uni-nav-bar/uni-nav-bar.vue | 235
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/binding.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/head_bg.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/quartzJob/dispatchInfo.vue | 247
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callE.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/FormationLibrary.vue | 49
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png | 0
项目代码/PDA/LDY_PDA/components/uni-number-box/uni-number-box.vue | 197
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out5.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageOutBasicRepository.csproj.nuget.g.targets | 6
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ortherbox.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-line-progress/u-line-progress.vue | 145
项目代码/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskExecuteDetail.vue | 259
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes.vue | 107
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/public/static/el.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-select/u-select.vue | 417
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniappsuccess.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/favicon.ico | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/WIDESEA_StoragIntegrationServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/extension/system/Sys_User/Sys_UserGridHeader.vue | 85
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/bigdata.vue | 258
项目代码/PDA/LDY_PDA/static/image/out5.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/DeviceStacker.vue | 57
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderSorting.vue | 99
项目代码/WMS/WIDESEA_WMSClient/src/views/signalR/Index.vue | 113
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj | 13
项目代码/PDA/LDY_PDA/static/image/qualityOut.png | 0
项目代码/PDA/LDY_PDA/static/image/cancel.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-full-screen/u-full-screen.vue | 52
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj | 13
项目代码/PDA/LDY_PDA/static/image/check1.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/DeviceLineVo.vue | 67
项目代码/WCS/WIDESEAWCS_Client/src/views/Login.vue | 386
项目代码/WMS/WIDESEA_WMSClient/yarn.lock | 4710 ++
项目代码/PDA/LDY_PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue | 182
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue | 126
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/obj/WIDESEA_IBusinessServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/03.jpg | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_needBarcode.vue | 90
项目代码/PDA/LDY_PDA/components/uni-title/uni-title.vue | 170
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue | 215
项目代码/PDA/LDY_PDA/uview-ui/components/u-form/u-form.vue | 149
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolBox.vue | 200
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role1.vue | 72
项目代码/PDA/LDY_PDA/static/image/zj.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageTaskRepository.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSClient/public/static/imgs/icon2.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-loading-page/u-loading-page.vue | 25
项目资料/接口协议/车轮压装WCS交互资料(1)/车轮压装WCS交互资料/配送系统坐标图.dwg | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue | 59
项目代码/PDA/LDY_PDA/components/uni-card/uni-card.vue | 403
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/05.jpg | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj | 38
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj | 13
项目代码/PDA/LDY_PDA/components/uni-calendar/uni-calendar-item.vue | 151
项目代码/PDA/LDY_PDA/uview-ui/components/u-table/u-table.vue | 89
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox1.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-search/u-search.vue | 342
项目代码/WMS/WIDESEA_WMSClient/run.bat | 1
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsC.png | 0
项目代码/WCS/WIDESEAWCS_Client/yarn.lock | 11095 ++++++
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Permission.vue | 359
项目代码/PDA/LDY_PDA/unpackage/cache/cloudcertificate/package.keystore | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-time-line/u-time-line.vue | 43
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zjjg.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-tabs/u-tabs.vue | 347
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj | 24
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/WIDESEAWCS_ITaskInfo_HtyService.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/components/workflow/node_form.vue | 351
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue | 98
项目代码/WCS/WIDESEAWCS_Client/src/views/system/system/Sys_Department.vue | 71
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicService.csproj.nuget.g.targets | 6
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj | 13
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj | 14
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsA.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue | 84
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageBasicRepository.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniapperror.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue | 880
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.jsx | 1721 +
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj | 22
项目代码/PDA/LDY_PDA/components/uni-section/uni-section.vue | 137
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue | 95
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskServices.csproj.nuget.g.targets | 6
项目代码/PDA/LDY_PDA/static/image/Test.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue | 93
项目代码/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue | 19
项目代码/PDA/LDY_PDA/uview-ui/components/u-section/u-section.vue | 154
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue | 536
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/WIDESEA_IStorageOutOrderServices.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue | 95
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/in1.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj | 20
项目代码/PDA/LDY_PDA/components/uni-popup/uni-popup-message.vue | 116
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj | 26
项目代码/PDA/LDY_PDA/components/uni-grid/uni-grid.vue | 142
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue | 76
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue | 84
项目代码/PDA/LDY_PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue | 242
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2 | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-column-notice/u-column-notice.vue | 233
项目代码/PDA/LDY_PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue | 290
项目代码/WMS/WIDESEA_WMSClient/node_modules.zip | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/index/Message.vue | 45
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/07.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/02.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue | 252
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue | 56
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out4.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-grid/u-grid.vue | 95
项目代码/WCS/WIDESEAWCS_Client/README.md | 41
项目代码/WMS/WIDESEA_WMSClient/install.bat | 1
项目代码/PDA/LDY_PDA/components/uni-segmented-control/uni-segmented-control.vue | 133
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Permission/RoleTree.vue | 152
项目代码/PDA/LDY_PDA/uview-ui/libs/css/color.scss | 155
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/chart.vue | 101
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransferDetail.vue | 82
项目代码/PDA/LDY_PDA/uview-ui/components/u-navbar/u-navbar.vue | 309
项目代码/PDA/LDY_PDA/uview-ui/components/u-waterfall/u-waterfall.vue | 181
项目代码/WMS/WIDESEA_WMSClient/src/views/Login.vue | 408
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsE.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Traintype.vue | 71
项目代码/PDA/LDY_PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue | 272
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/PointStackerRelation.vue | 81
项目代码/WCS/WIDESEAWCS_Client/src/components/redirect/401.vue | 19
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsD.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-divider/u-divider.vue | 151
项目代码/PDA/LDY_PDA/uview-ui/components/u-image/u-image.vue | 262
项目代码/PDA/LDY_PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue | 255
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/uni.ttf | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forkliftB.png | 0
项目代码/PDA/LDY_PDA/static/image/returnbox.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/inorder.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderDetail.vue | 90
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue | 1487
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolImageViewer.vue | 34
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue | 200
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/06.jpg | 0
项目代码/PDA/LDY_PDA/static/image/boxing1.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/WIDESEAWCS_Server.csproj.CopyComplete | 0
项目代码/PDA/LDY_PDA/static/image/exp.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-grid-item/u-grid-item.vue | 113
项目代码/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocol.vue | 229
项目代码/PDA/LDY_PDA/uview-ui/components/u-toast/u-toast.vue | 222
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj | 17
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/zzzz.vue | 364
项目代码/PDA/LDY_PDA/uview-ui/libs/css/style.vue.scss | 174
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/01.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/IviewCircle.vue | 102
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageOutTaskRepository.csproj.nuget.g.targets | 6
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml | 17
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/obj/WIDESEAWCS_TaskInfo_HtyRepository.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check2.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue | 630
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/WIDESEAWCS_TaskInfo_HtyRepository.csproj | 13
项目代码/PDA/LDY_PDA/uview-ui/components/u-loadmore/u-loadmore.vue | 199
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue | 1873 +
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/demo_Product/Dt_TaskExecuteDetail.vue | 88
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Config.jsx | 48
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/views/basicinfo/Dt_needBarcode.vue | 93
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj | 100
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue | 1551
项目代码/WCS/WIDESEAWCS_Client/src/views/index/Message.vue | 45
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue | 206
项目代码/WCS/WIDESEAWCS_Client/.gitignore | 23
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue | 3
项目代码/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue | 25
项目代码/PDA/LDY_PDA/components/uni-list-item/uni-list-item.vue | 270
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniappsuccess.png | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsB.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/WIDESEAWCS_IProcessService.csproj | 14
项目代码/WMS/WIDESEA_WMSClient/public/static/imgs/icon1.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/lend.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callD.png | 0
项目代码/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list.vue | 317
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/QuickSearch.vue | 152
项目代码/WMS/WIDESEA_WMSClient/src/views/Index.vue | 717
项目代码/PDA/LDY_PDA/unpackage/cache/apk/__UNI__6F62323_cm.apk | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue | 96
项目代码/PDA/LDY_PDA/uview-ui/components/u-gap/u-gap.vue | 54
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_d.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityOut.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-line/u-line.vue | 84
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/views/Home.vue | 219
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/obj/WIDESEAWCS_TaskInfo_HtyService.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj | 13
项目代码/WCS/WIDESEAWCS_Client/public/wms_d.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/AuditHis.vue | 46
项目代码/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocolDetail.vue | 207
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/Audit.vue | 59
项目代码/PDA/LDY_PDA/components/uni-calendar/uni-calendar.vue | 431
项目代码/WCS/WIDESEAWCS_Client/src/components/editor/VolWangEditor.vue | 154
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx | 150
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check2.png | 0
项目代码/PDA/LDY_PDA/uview-ui/libs/css/common.scss | 171
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/obj/WIDESEA_Common.csproj.nuget.g.targets | 2
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj | 13
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/flex.vue | 386
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageBasicRepository.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Client/src/assets/css/common.less | 75
项目代码/PDA/LDY_PDA/uview-ui/components/u-number-box/u-number-box.vue | 348
项目代码/PDA/LDY_PDA/static/image/changebox1.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff | 0
项目代码/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/addrouters.vue | 351
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskServices.csproj.nuget.g.targets | 6
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue | 90
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue | 382
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/obj/WIDESEAWCS_ProcessService.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/uview-ui/components/u-icon/u-icon.vue | 262
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/login.png | 0
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/appoint.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridDetail.vue | 283
项目代码/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue | 317
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml | 21
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Strategy.vue | 86
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/cancel.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln | 474
项目代码/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue | 365
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png | 0
项目代码/PDA/LDY_PDA/common/demo.scss | 86
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj | 9
项目代码/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/error.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forklift.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue | 39
项目代码/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue | 59
项目代码/PDA/LDY_PDA/components/xfl-select/xfl-select.vue | 967
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue | 72
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forkliftB.png | 0
项目代码/WMS/WIDESEA_WMSClient/.browserslistrc | 3
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out1.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.g.targets | 9
项目代码/PDA/LDY_PDA/static/image/ReceivingGoodsB.png | 0
项目代码/PDA/LDY_PDA/components/uni-tag/uni-tag.vue | 226
项目代码/WCS/WIDESEAWCS_Client/src/views/Index.vue | 720
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox1.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/03.jpg | 0
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/demo_Product/LocationChange.vue | 142
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue | 89
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check1.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue | 122
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/RouterLoading.vue | 105
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/binding.png | 0
项目代码/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.g.targets | 2
项目代码/PDA/LDY_PDA/uview-ui/components/u-cell-item/u-cell-item.vue | 300
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsA.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_StationManager.vue | 84
项目代码/PDA/LDY_PDA/components/uni-rate/uni-rate.vue | 157
项目代码/WMS/WIDESEA_WMSClient/src/components/workflow/node_menu.vue | 129
项目代码/PDA/LDY_PDA/static/image/callB.png | 0
项目代码/PDA/LDY_PDA/components/uni-popup/uni-popup.vue | 293
项目代码/PDA/LDY_PDA/components/uni-steps/uni-steps.vue | 253
项目代码/PDA/LDY_PDA/static/image/return.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/workflow/node.vue | 99
项目代码/PDA/LDY_PDA/uview-ui/components/u-swiper/u-swiper.vue | 338
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/obj/WIDESEA_BusinessesRepository.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.jsx | 75
项目代码/PDA/LDY_PDA/components/uni-status-bar/uni-status-bar.vue | 26
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrder.vue | 116
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue | 236
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/WIDESEAWCS_ProcessRepository.csproj | 13
项目代码/PDA/LDY_PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue | 254
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue | 70
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/WIDESEA_Tasks.csproj.nuget.g.targets | 2
项目代码/PDA/LDY_PDA/components/uni-list/uni-refresh.vue | 65
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/indexLibrary.vue | 48
项目代码/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/layout.less | 197
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxingInfo.vue | 82
项目代码/PDA/LDY_PDA/pages/Outbound/OutboundCall.vue | 688
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj | 13
项目代码/PDA/LDY_PDA/static/image/binding.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicServices.csproj.nuget.g.targets | 6
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_Log.vue | 70
项目代码/PDA/LDY_PDA/components/uni-drawer/uni-drawer.vue | 170
项目代码/PDA/LDY_PDA/uview-ui/components/u-calendar/u-calendar.vue | 644
项目代码/PDA/LDY_PDA/uview-ui/components/u-index-list/u-index-list.vue | 321
项目代码/PDA/LDY_PDA/uview-ui/libs/css/style.mp.scss | 47
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2 | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_AreaInfo.vue | 92
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.less | 178
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/return.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue | 105
项目代码/PDA/LDY_PDA/uview-ui/components/u-row/u-row.vue | 84
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityIn.png | 0
项目代码/WMS/WIDESEA_WMSClient/public/static/qq.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out1.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/demo_Product/Dt_BillGroupStockDetail.vue | 106
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj | 13
项目代码/WCS/WIDESEAWCS_Client/src/views/system/test.vue | 18
项目代码/PDA/LDY_PDA/components/uni-swipe-action-item/uni-swipe-action-item.vue | 265
项目代码/PDA/LDY_PDA/components/uni-list/uni-refresh.wxs | 87
项目代码/PDA/LDY_PDA/uview-ui/libs/css/style.h5.scss | 8
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue | 325
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/HandTask/ManualOutboundTask.vue | 90
项目代码/WMS/WIDESEA_WMSClient/README.md | 29
项目代码/PDA/LDY_PDA/components/uni-fab/uni-fab.vue | 428
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/WIDESEA_StorageOutOrderServices.csproj | 25
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj | 16
项目代码/PDA/LDY_PDA/components/uni-search-bar/uni-search-bar.vue | 203
项目代码/PDA/LDY_PDA/uview-ui/components/u-tabbar/u-tabbar.vue | 321
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/Empty.vue | 3
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue | 85
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue | 80
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityOut.png | 0
项目代码/PDA/LDY_PDA/static/image/ReceivingGoodsA.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/default_header.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsB.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridAudit.vue | 427
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_ProcessParameters.csproj.nuget.g.targets | 2
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj | 15
项目代码/PDA/LDY_PDA/components/uni-collapse/uni-collapse.vue | 59
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out2.png | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callA.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/WIDESEAWCS_IProcessRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue | 46
项目代码/WMS/WIDESEA_WMSClient/vite.config.ts | 82
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue | 102
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue | 95
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/Test.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_RoadWayInfo.vue | 85
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderAndStock.vue | 85
项目代码/PDA/LDY_PDA/static/image/callA.png | 0
项目代码/PDA/LDY_PDA/static/image/ortherbox.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicServices.csproj.nuget.g.targets | 6
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/04.jpg | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenu.vue | 198
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageTaskServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/obj/WIDESEAWCS_ITaskInfo_HtyRepository.csproj.nuget.g.targets | 8
项目代码/WCS/WIDESEAWCS_Client/src/components/workflow/panel.vue | 612
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue | 10
项目代码/PDA/LDY_PDA/components/uni-popup/uni-popup-share.vue | 168
项目代码/PDA/LDY_PDA/components/uni-countdown/uni-countdown.vue | 200
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj | 18
项目代码/PDA/LDY_PDA/uview-ui/components/u-modal/u-modal.vue | 283
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/Test.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/index/index.less | 644
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Services/obj/WIDESEA_Services.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/WIDESEAWCS_ITaskInfo_HtyRepository.csproj | 14
项目代码/PDA/LDY_PDA/uview-ui/libs/css/style.nvue.scss | 3
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.jsx | 153
项目代码/PDA/LDY_PDA/pages/Inbound/InboundInfo.vue | 192
项目代码/PDA/LDY_PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue | 158
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing2.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue | 109
项目代码/PDA/LDY_PDA/uview-ui/components/u-radio/u-radio.vue | 237
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/01.jpg | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/favicon.ico | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/WIDESEAWCS_TaskInfo_HtyService.csproj | 13
项目代码/PDA/LDY_PDA/components/tki-qrcode/tki-qrcode.vue | 210
项目代码/WCS/WIDESEAWCS_Client/public/static/login_bg.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/static/image/ReceivingGoodsC.png | 0
项目代码/PDA/LDY_PDA/uview-ui/README.md | 102
项目代码/WCS/WIDESEAWCS_Client/src/components/DeviceLine.vue | 84
项目代码/PDA/LDY_PDA/pages/index/index.vue | 142
项目代码/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj | 20
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue | 3
项目代码/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue | 21
项目代码/PDA/LDY_PDA/uview-ui/components/u-rate/u-rate.vue | 214
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.jsx | 26
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callE.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes_hty.vue | 92
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/WIDESEA_IStoragIntegrationServices.csproj | 13
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/obj/WIDESEA_IStorageOutOrderRepository.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln | 248
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/Icons.vue | 345
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj | 42
项目代码/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Twoletters.vue | 48
项目代码/WCS/WIDESEAWCS_Client/src/views/system/Sys_DictionaryList.vue | 65
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_hty.vue | 87
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageTaskServices.csproj.nuget.g.targets | 7
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj | 14
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/favicon.ico | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue | 206
项目代码/PDA/LDY_PDA/unpackage/cache/certdata | 3
项目代码/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v9.bin | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing1.png | 0
项目代码/PDA/LDY_PDA/static/image/out2.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callA.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/favicon.ico | 0
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx | 148
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/momTest.vue | 364
项目代码/PDA/LDY_PDA/uview-ui/components/u-radio-group/u-radio-group.vue | 105
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolHeader.vue | 67
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj | 17
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsE.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-skeleton/u-skeleton.vue | 199
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_logo.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderService.csproj.nuget.g.targets | 6
项目代码/PDA/LDY_PDA/uview-ui/components/u-button/u-button.vue | 578
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out3.png | 0
项目代码/WCS/WIDESEAWCS_Client/public/wcslogo.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.g.targets | 8
项目代码/WCS/WIDESEAWCS_Client/src/components/workflow/node_filter.vue | 201
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj | 13
项目代码/PDA/LDY_PDA/static/image/callD.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/LocationStatusChange.vue | 71
项目代码/PDA/LDY_PDA/unpackage/cache/cloudcertificate/certini | 4
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.jsx | 86
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx | 168
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.jsx | 22
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue | 94
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/log.png | 0
项目代码/WMS/WIDESEA_WMSClient/build.bat | 1
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue | 1157
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/07.jpg | 0
项目代码/PDA/LDY_PDA/static/image/zjjg.png | 0
项目代码/PDA/LDY_PDA/uview-ui/libs/css/style.components.scss | 3
项目代码/PDA/LDY_PDA/uview-ui/components/u-verification-code/u-verification-code.vue | 164
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransfer.vue | 104
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityIn.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-sticky/u-sticky.vue | 157
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methodsDetail.jsx | 43
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrder.vue | 113
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageOutBasicRepository.csproj.nuget.g.targets | 6
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProductionDetail.vue | 83
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/exp.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-tag/u-tag.vue | 292
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/ErrorMsg.vue | 3
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormDraggable.vue | 1159
项目代码/PDA/LDY_PDA/components/uni-goods-nav/uni-goods-nav.vue | 230
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callB.png | 0
项目代码/PDA/LDY_PDA/components/uni-swipe-action-item/index.wxs | 204
项目代码/WCS/WIDESEAWCS_Client/src/components/redirect/coding.vue | 25
项目代码/PDA/LDY_PDA/uview-ui/components/u-slider/u-slider.vue | 257
项目代码/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing1.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-cell-group/u-cell-group.vue | 69
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProduction.vue | 104
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue | 115
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.g.targets | 9
项目代码/PDA/LDY_PDA/components/uni-fav/uni-fav.vue | 136
项目代码/PDA/LDY_PDA/static/image/ReceivingGoodsD.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/components/redirect/Message.vue | 39
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj | 13
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/returnbox.png | 0
项目代码/PDA/LDY_PDA/components/uni-collapse-item/uni-collapse-item.vue | 217
项目代码/PDA/LDY_PDA/pages/Inbound/InboundOrderBoxing.vue | 181
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callD.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/login.png | 0
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/cancel.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue | 917
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/06.jpg | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.g.targets | 8
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/obj/WIDESEAWCS_SignalR.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj | 26
项目代码/PDA/LDY_PDA/uview-ui/components/u-loading/u-loading.vue | 101
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/exp.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/02.jpg | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue | 83
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue | 427
项目代码/PDA/LDY_PDA/unpackage/cache/apk/apkurl | 1
项目代码/PDA/LDY_PDA/components/uni-combox/uni-combox.vue | 212
项目代码/PDA/LDY_PDA/uview-ui/components/u-popup/u-popup.vue | 452
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/workflow/panel.vue | 612
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check1.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/logo.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/hightemperature.vue | 60
项目代码/WCS/WIDESEAWCS_Client/src/views/index/index.less | 644
项目代码/PDA/LDY_PDA/uview-ui/components/u-col/u-col.vue | 135
项目代码/PDA/LDY_PDA/components/uni-badge/uni-badge.vue | 148
项目代码/PDA/LDY_PDA/components/watch-login/watch-button.vue | 124
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml | 17
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out5.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.ttf | 0
项目代码/WMS/WIDESEA_WMSClient/src/App.vue | 63
项目代码/PDA/LDY_PDA/components/uni-icons/uni-icons.vue | 67
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forklift.png | 0
项目代码/WMS/WIDESEA_WMSClient/public/static/login_bg.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-switch/u-switch.vue | 161
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zj.png | 0
项目代码/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out4.png | 0
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IServices/obj/WIDESEA_IServices.csproj.nuget.g.targets | 7
项目代码/WMS/WIDESEA_WMSClient/src/components/editor/KindEditor.vue | 13
项目代码/PDA/LDY_PDA/pages/Inbound/ZDPInbound.vue | 445
项目代码/PDA/LDY_PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue | 473
项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/extension/Dt_InboundOrderDetail.vue | 102
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/WIDESEA_IStorageOutOrderRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSClient/src/assets/imgs/favicon.ico | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-steps/u-steps.vue | 200
项目代码/WCS/WIDESEAWCS_Client/src/components/workflow/node_menu.vue | 126
项目代码/PDA/LDY_PDA/static/image/callC.png | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-input/u-input.vue | 366
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/returnbox.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.g.targets | 8
项目代码/PDA/LDY_PDA/static/image/out1.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue | 345
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj | 13
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/obj/WIDESEA_IBusinessesRepository.csproj.nuget.g.targets | 7
项目代码/PDA/LDY_PDA/components/uni-pagination/uni-pagination.vue | 200
项目代码/WCS/WIDESEAWCS_Client/src/views/Home.vue | 51
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormPreview.vue | 206
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue | 68
项目代码/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.woff | 0
项目代码/WMS/WIDESEA_WMSClient/src/assets/css/common.less | 75
项目代码/PDA/LDY_PDA/App.vue | 160
项目代码/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item.vue | 125
项目代码/PDA/LDY_PDA/uview-ui/components/u-collapse/u-collapse.vue | 104
项目代码/PDA/LDY_PDA/components/uni-notice-bar/uni-notice-bar.vue | 392
项目代码/WMS/WIDESEA_WMSClient/src/components/editor/VolWangEditor.vue | 231
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj | 13
项目代码/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenuChild.vue | 56
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/logo.png | 0
项目代码/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/baozhuang.vue | 42
项目代码/WMS/WIDESEA_WMSClient/env.d.ts | 1
项目代码/PDA/LDY_PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue | 218
项目代码/PDA/LDY_PDA/uview-ui/components/u-subsection/u-subsection.vue | 356
项目代码/PDA/LDY_PDA/static/image/changebox.png | 0
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/obj/WIDESEAWCS_ITaskInfo_HtyService.csproj.nuget.g.targets | 8
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageOutTaskRepository.csproj.nuget.g.targets | 6
项目代码/PDA/LDY_PDA/pages/Inbound/InboundEmpty.vue | 172
项目代码/PDA/LDY_PDA/components/uni-list/uni-list.vue | 78
项目代码/PDA/LDY_PDA/components/uni-swipe-action/uni-swipe-action.vue | 58
项目代码/PDA/LDY_PDA/components/uni-transition/uni-transition.vue | 279
项目代码/PDA/LDY_PDA/static/image/appoint.png | 0
项目代码/PDA/LDY_PDA/unpackage/release/__UNI__6F62323.wgt | 0
项目代码/PDA/LDY_PDA/uview-ui/components/u-message-input/u-message-input.vue | 304
项目代码/PDA/LDY_PDA/uview-ui/LICENSE | 21
项目代码/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_x.png | 0
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue | 65
716 files changed, 97,113 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/App.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/App.vue"
new file mode 100644
index 0000000..d76958a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/App.vue"
@@ -0,0 +1,160 @@
+<script>
+ import Vue from 'vue'
+ export default {
+ created() {
+ //plus.navigator.closeSplashscreen();
+ },
+ onLaunch: function() {
+ // plus.screen.lockOrientation('landscape');
+ // plus.screen.lockOrientation('portrait');
+ uni.getSystemInfo({
+ success: function(e) {
+ Vue.prototype.statusBar = e.statusBarHeight;
+ let height = 45;
+ if (e.platform == 'android')
+ height = 50;
+ Vue.prototype.CustomBar = e.statusBarHeight + height;
+ }
+ })
+ // #ifdef APP-PLUS
+ // console.log(plus.push.getClientInfo().clientid);
+ // const _self = this;
+ // const _handlePush = function(message) {
+ // };
+ // plus.push.addEventListener('click', function(message) {
+ // //plus.nativeUI.toast('push click');
+ // // uni.navigateTo({
+ // // url: "/pages/index/main"
+ // // })
+ // });
+ // plus.push.addEventListener('receive', function(message) {
+ // //plus.push.createMessage("鎮ㄦ湁鏂扮殑娑堟伅");
+ // //plus.nativeUI.alert(message.content);
+ // // uni.navigateTo({
+ // // url: "/pages/index/main"
+ // // })
+ // });
+ var requestIP = this.$AjaxRequest.RequestUrl;
+ // 鑾峰彇鏈湴搴旂敤璧勬簮鐗堟湰鍙�
+ plus.runtime.getProperty(plus.runtime.appid, function(inf) {
+ //console.log("褰撳墠搴旂敤鐗堟湰锛�" + inf.version + "---" + plus.runtime.version);
+ var server = requestIP + "Dt_appVersionRecord/CheckVersion"; //妫�鏌ユ洿鏂板湴鍧�
+ var req = { //鍗囩骇妫�娴嬫暟鎹�
+ MainData: {
+ "appid": plus.runtime.appid,
+ "version": inf.version, //plus.runtime.version,
+ "Extra": 'APP',
+ 'VerificationCode': 'App',
+ 'UUID': 'App'
+ }
+ };
+ //console.log(req);
+ uni.request({
+ method: 'POST',
+ url: server,
+ data: req,
+ dataType: 'json',
+ header: {
+ 'Content-Type': 'application/json; charset=utf-8',
+ 'Authorization': 'Bearer '
+ },
+ success: (res) => {
+ if (res.statusCode == 200 && res.data.data.status && !res.data.data.latestVersion) {
+ var urls = res.data.data.url;
+ var downLoad = requestIP + "Dt_appVersionRecord/DownLoadWgt?filePath=" + urls;
+ uni.showModal({ //鎻愰啋鐢ㄦ埛鏇存柊
+ title: "鏇存柊鎻愮ず",
+ content: "妫�娴嬫柊鐗堟湰,鏄惁鏇存柊?",
+ showCancel: true,
+ success: (res) => {
+ if (res.confirm) {
+ var wgtWaiting = null;
+ wgtWaiting = plus.nativeUI.showWaiting("寮�濮嬩笅杞�");
+ var down = plus.downloader.createDownload(downLoad, {}, function(download, status) {
+ plus.nativeUI.closeWaiting();
+ if (status == 200) {
+ //console.log(down.filename);
+ installApk(down.filename); // 鏇存柊搴旂敤璧勬簮
+ } else {
+ plus.downloader.clear();
+ }
+ });
+ down.start();
+ down.addEventListener("statechanged", function(download, status) {
+ switch (download.state) {
+ case 2:
+ wgtWaiting.setTitle("宸茶繛鎺ュ埌鏈嶅姟鍣�");
+ break;
+ case 3:
+ var percent = download.downloadedSize / download.totalSize * 100;
+ wgtWaiting.setTitle("宸蹭笅杞� " + parseInt(percent) + "%");
+ break;
+ case 4:
+ wgtWaiting.setTitle("涓嬭浇瀹屾垚");
+ break;
+ }
+ });
+ }
+ }
+ });
+ }
+ }
+ })
+ // 鏇存柊搴旂敤璧勬簮
+ var installApk = function(path) {
+ plus.runtime.install(path, {}, function() {
+ plus.nativeUI.closeWaiting();
+ //console.log("瀹夎鏂囦欢鎴愬姛锛�");
+ plus.runtime.restart();
+ }, function(e) {
+ plus.nativeUI.closeWaiting();
+ //console.log(JSON.stringify(e));
+ uni.showToast({
+ title: '瀹夎澶辫触',
+ mask: false,
+ icon: 'none',
+ duration: 2500
+ });
+ });
+ }
+ });
+
+ //#endif
+ }
+ };
+</script>
+
+<style lang="scss">
+ @import "uview-ui/index.scss";
+ @import "common/demo.scss";
+/* #ifdef H5 */
+ @media screen and (min-width: 768px) {
+ body{
+ overflow-y: scroll;
+ }
+ }
+
+ /* 椤舵爮閫氭爮鏍峰紡 */
+ /* .uni-top-window {
+ left: 0;
+ right: 0;
+ } */
+
+ uni-page-body {
+ background-color: #F5F5F5 !important;
+ min-height: 100% !important;
+ height: auto !important;
+ }
+
+ .uni-top-window uni-tabbar .uni-tabbar {
+ background-color: #fff !important;
+ }
+
+ .uni-app--showleftwindow .hideOnPc {
+ display: none !important;
+ }
+ /* #endif */
+ body {
+ background: #FFFFFF !important;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/common/demo.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/common/demo.scss"
new file mode 100644
index 0000000..9c91b53
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/common/demo.scss"
@@ -0,0 +1,86 @@
+/* #ifndef APP-NVUE */
+view,
+text {
+ box-sizing: border-box;
+}
+/* #endif */
+
+/* start--婕旂ず椤甸潰浣跨敤鐨勭粺涓�鏍峰紡--start */
+.u-demo {
+ padding: 50rpx 40rpx;
+}
+
+.u-demo-wrap {
+ border-width: 1px;
+ border-color: #ddd;
+ border-style: dashed;
+ background-color: rgb(250, 250, 250);
+ padding: 40rpx 20rpx;
+ border-radius: 6px;
+}
+
+.u-demo-area {
+ text-align: center;
+}
+
+.u-no-demo-here {
+ color: $u-tips-color;
+ font-size: 26rpx;
+}
+
+.u-demo-result-line {
+ border-width: 1px;
+ border-color: #ddd;
+ border-style: dashed;
+ padding: 10rpx 40rpx;
+ margin-top: 30rpx;
+ border-radius: 5px;
+ background-color: rgb(240, 240, 240);
+ color: $u-content-color;
+ font-size: 32rpx;
+ /* #ifndef APP-NVUE */
+ word-break: break-word;
+ display: inline-block;
+ /* #endif */
+ text-align: left;
+
+}
+
+.u-demo-title,
+.u-config-title {
+ text-align: center;
+ font-size: 32rpx;
+ font-weight: bold;
+ margin-bottom: 40rpx;
+}
+
+.u-config-item {
+ margin-top: 50rpx;
+}
+
+.u-config-title {
+ margin-top: 40rpx;
+ padding-bottom: 10rpx;
+}
+
+.u-item-title {
+ position: relative;
+ font-size: 28rpx;
+ padding-left: 8px;
+ line-height: 1;
+ margin-bottom: 22rpx;
+}
+
+.u-item-title:after {
+ position: absolute;
+ width: 4px;
+ top: -1px;
+ height: 16px;
+ /* #ifndef APP-NVUE */
+ content: '';
+ /* #endif */
+ left: 0;
+ border-radius: 10px;
+ background-color: $u-content-color;
+}
+/* end--婕旂ず椤甸潰浣跨敤鐨勭粺涓�鏍峰紡--end */
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/tki-qrcode/tki-qrcode.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/tki-qrcode/tki-qrcode.vue"
new file mode 100644
index 0000000..f1bb6de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/tki-qrcode/tki-qrcode.vue"
@@ -0,0 +1,210 @@
+<template xlang="wxml" minapp="mpvue">
+ <view class="tki-qrcode">
+ <!-- #ifndef MP-ALIPAY -->
+ <canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+ <!-- #endif -->
+ <!-- #ifdef MP-ALIPAY -->
+ <canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" />
+ <!-- #endif -->
+ <image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+ </view>
+</template>
+
+<script>
+import QRCode from "./qrcode.js"
+let qrcode
+export default {
+ name: "tki-qrcode",
+ props: {
+ cid: {
+ type: String,
+ default: 'tki-qrcode-canvas'
+ },
+ size: {
+ type: Number,
+ default: 200
+ },
+ unit: {
+ type: String,
+ default: 'upx'
+ },
+ show: {
+ type: Boolean,
+ default: true
+ },
+ val: {
+ type: String,
+ default: ''
+ },
+ background: {
+ type: String,
+ default: '#ffffff'
+ },
+ foreground: {
+ type: String,
+ default: '#000000'
+ },
+ pdground: {
+ type: String,
+ default: '#000000'
+ },
+ icon: {
+ type: String,
+ default: ''
+ },
+ iconSize: {
+ type: Number,
+ default: 40
+ },
+ lv: {
+ type: Number,
+ default: 3
+ },
+ onval: {
+ type: Boolean,
+ default: false
+ },
+ loadMake: {
+ type: Boolean,
+ default: false
+ },
+ usingComponents: {
+ type: Boolean,
+ default: true
+ },
+ showLoading: {
+ type: Boolean,
+ default: true
+ },
+ loadingText: {
+ type: String,
+ default: '浜岀淮鐮佺敓鎴愪腑'
+ },
+ },
+ data() {
+ return {
+ result: '',
+ }
+ },
+ methods: {
+ _makeCode() {
+ let that = this
+ if (!this._empty(this.val)) {
+ qrcode = new QRCode({
+ context: that, // 涓婁笅鏂囩幆澧�
+ canvasId:that.cid, // canvas-id
+ usingComponents: that.usingComponents, // 鏄惁鏄嚜瀹氫箟缁勪欢
+ showLoading: that.showLoading, // 鏄惁鏄剧ずloading
+ loadingText: that.loadingText, // loading鏂囧瓧
+ text: that.val, // 鐢熸垚鍐呭
+ size: that.cpSize, // 浜岀淮鐮佸ぇ灏�
+ background: that.background, // 鑳屾櫙鑹�
+ foreground: that.foreground, // 鍓嶆櫙鑹�
+ pdground: that.pdground, // 瀹氫綅瑙掔偣棰滆壊
+ correctLevel: that.lv, // 瀹归敊绾у埆
+ image: that.icon, // 浜岀淮鐮佸浘鏍�
+ imageSize: that.iconSize,// 浜岀淮鐮佸浘鏍囧ぇ灏�
+ cbResult: function (res) { // 鐢熸垚浜岀淮鐮佺殑鍥炶皟
+ that._result(res)
+ },
+ });
+ } else {
+ uni.showToast({
+ title: '浜岀淮鐮佸唴瀹逛笉鑳戒负绌�',
+ icon: 'none',
+ duration: 2000
+ });
+ }
+ },
+ _clearCode() {
+ this._result('')
+ qrcode.clear()
+ },
+ _saveCode() {
+ let that = this;
+ if (this.result != "") {
+ uni.saveImageToPhotosAlbum({
+ filePath: that.result,
+ success: function () {
+ uni.showToast({
+ title: '浜岀淮鐮佷繚瀛樻垚鍔�',
+ icon: 'success',
+ duration: 2000
+ });
+ }
+ });
+ }
+ },
+ _result(res) {
+ this.result = res;
+ this.$emit('result', res)
+ },
+ _empty(v) {
+ let tp = typeof v,
+ rt = false;
+ if (tp == "number" && String(v) == "") {
+ rt = true
+ } else if (tp == "undefined") {
+ rt = true
+ } else if (tp == "object") {
+ if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+ } else if (tp == "string") {
+ if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+ } else if (tp == "function") {
+ rt = false
+ }
+ return rt
+ }
+ },
+ watch: {
+ size: function (n, o) {
+ if (n != o && !this._empty(n)) {
+ this.cSize = n
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 100);
+ }
+ }
+ },
+ val: function (n, o) {
+ if (this.onval) {
+ if (n != o && !this._empty(n)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ }
+ },
+ computed: {
+ cpSize() {
+ if(this.unit == "upx"){
+ return uni.upx2px(this.size)
+ }else{
+ return this.size
+ }
+ }
+ },
+ mounted: function () {
+ if (this.loadMake) {
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ },
+}
+</script>
+<style>
+.tki-qrcode {
+ position: relative;
+}
+.tki-qrcode-canvas {
+ position: fixed;
+ top: -99999upx;
+ left: -99999upx;
+ z-index: -99999;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-badge/uni-badge.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-badge/uni-badge.vue"
new file mode 100644
index 0000000..8e89cd2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-badge/uni-badge.vue"
@@ -0,0 +1,148 @@
+<template>
+ <text v-if="text" :class="inverted ? 'uni-badge--' + type + ' uni-badge--' + size + ' uni-badge--' + type + '-inverted' : 'uni-badge--' + type + ' uni-badge--' + size" :style="badgeStyle" class="uni-badge" @click="onClick()">{{ text }}</text>
+</template>
+
+<script>
+ /**
+ * Badge 鏁板瓧瑙掓爣
+ * @description 鏁板瓧瑙掓爣涓�鑸拰鍏跺畠鎺т欢锛堝垪琛ㄣ��9瀹牸绛夛級閰嶅悎浣跨敤锛岀敤浜庤繘琛屾暟閲忔彁绀猴紝榛樿涓哄疄蹇冪伆鑹茶儗鏅�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=21
+ * @property {String} text 瑙掓爣鍐呭
+ * @property {String} type = [default|primary|success|warning|error] 棰滆壊绫诲瀷
+ * @value default 鐏拌壊
+ * @value primary 钃濊壊
+ * @value success 缁胯壊
+ * @value warning 榛勮壊
+ * @value error 绾㈣壊
+ * @property {String} size = [normal|small] Badge 澶у皬
+ * @value normal 涓�鑸昂瀵�
+ * @value small 灏忓昂瀵�
+ * @property {String} inverted = [true|false] 鏄惁鏃犻渶鑳屾櫙棰滆壊
+ * @event {Function} click 鐐瑰嚮 Badge 瑙﹀彂浜嬩欢
+ * @example <uni-badge text="1"></uni-badge>
+ */
+ export default {
+ name: 'UniBadge',
+ props: {
+ type: {
+ type: String,
+ default: 'default'
+ },
+ inverted: {
+ type: Boolean,
+ default: false
+ },
+ text: {
+ type: [String, Number],
+ default: ''
+ },
+ size: {
+ type: String,
+ default: 'normal'
+ }
+ },
+ data() {
+ return {
+ badgeStyle: ''
+ };
+ },
+ watch: {
+ text() {
+ this.setStyle()
+ }
+ },
+ mounted() {
+ this.setStyle()
+ },
+ methods: {
+ setStyle() {
+ this.badgeStyle = `width: ${String(this.text).length * 8 + 12}px`
+ },
+ onClick() {
+ this.$emit('click');
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-badge {
+ /* #ifndef APP-PLUS */
+ display: flex;
+ box-sizing: border-box;
+ overflow: hidden;
+ /* #endif */
+ justify-content: center;
+ flex-direction: row;
+ height: 20px;
+ line-height: 20px;
+ color: #333;
+ border-radius: 100px;
+ background-color: #f1f1f1;
+ background-color: transparent;
+ text-align: center;
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
+ font-size: 12px;
+ padding: 0px 6px;
+ }
+
+ .uni-badge--inverted {
+ padding: 0 5px 0 0;
+ color: #f1f1f1;
+ }
+
+ .uni-badge--default {
+ color: #333;
+ background-color: #f1f1f1;
+ }
+
+ .uni-badge--default-inverted {
+ color: #999;
+ background-color: transparent;
+ }
+
+ .uni-badge--primary {
+ color: #fff;
+ background-color: #007aff;
+ }
+
+ .uni-badge--primary-inverted {
+ color: #007aff;
+ background-color: transparent;
+ }
+
+ .uni-badge--success {
+ color: #fff;
+ background-color: #4cd964;
+ }
+
+ .uni-badge--success-inverted {
+ color: #4cd964;
+ background-color: transparent;
+ }
+
+ .uni-badge--warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ }
+
+ .uni-badge--warning-inverted {
+ color: #f0ad4e;
+ background-color: transparent;
+ }
+
+ .uni-badge--error {
+ color: #fff;
+ background-color: #dd524d;
+ }
+
+ .uni-badge--error-inverted {
+ color: #dd524d;
+ background-color: transparent;
+ }
+
+ .uni-badge--small {
+ transform: scale(0.8);
+ transform-origin: center center;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar-item.vue"
new file mode 100644
index 0000000..d633df1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar-item.vue"
@@ -0,0 +1,151 @@
+<template>
+ <view class="uni-calendar-item__weeks-box" :class="{
+ 'uni-calendar-item--disable':weeks.disable,
+ 'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+ 'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) ,
+ 'uni-calendar-item--multiple': weeks.multiple
+ }" @click="choiceDate(weeks)">
+ <view class="uni-calendar-item__weeks-box-item">
+ <text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
+ <text class="uni-calendar-item__weeks-box-text" :class="{
+ 'uni-calendar-item--isDay-text': weeks.isDay,
+ 'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+ 'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+ 'uni-calendar-item--multiple': weeks.multiple,
+ 'uni-calendar-item--disable':weeks.disable,
+ }">{{weeks.date}}</text>
+ <text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{
+ 'uni-calendar-item--isDay-text':weeks.isDay,
+ 'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+ 'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+ 'uni-calendar-item--multiple': weeks.multiple,
+ }">浠婂ぉ</text>
+ <text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{
+ 'uni-calendar-item--isDay-text':weeks.isDay,
+ 'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+ 'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+ 'uni-calendar-item--multiple': weeks.multiple,
+ 'uni-calendar-item--disable':weeks.disable,
+ }">{{weeks.isDay?'浠婂ぉ': (weeks.lunar.IDayCn === '鍒濅竴'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text>
+ <text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{
+ 'uni-calendar-item--extra':weeks.extraInfo.info,
+ 'uni-calendar-item--isDay-text':weeks.isDay,
+ 'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+ 'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+ 'uni-calendar-item--multiple': weeks.multiple,
+ 'uni-calendar-item--disable':weeks.disable,
+ }">{{weeks.extraInfo.info}}</text>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ weeks: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ calendar: {
+ type: Object,
+ default: () => {
+ return {}
+ }
+ },
+ selected: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ lunar: {
+ type: Boolean,
+ default: false
+ }
+ },
+ methods: {
+ choiceDate(weeks) {
+ this.$emit('change', weeks)
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-calendar-item__weeks-box {
+ flex: 1;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-calendar-item__weeks-box-text {
+ font-size: 14px;
+ color: #333;
+ }
+
+ .uni-calendar-item__weeks-lunar-text {
+ font-size: 12px;
+ color: #333;
+ }
+
+ .uni-calendar-item__weeks-box-item {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 100rpx;
+ height: 100rpx;
+ }
+
+ .uni-calendar-item__weeks-box-circle {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ width: 8px;
+ height: 8px;
+ border-radius: 8px;
+ background-color: #dd524d;
+
+ }
+
+ .uni-calendar-item--disable {
+ background-color: rgba(249, 249, 249, 0.3);
+ color: #c0c0c0;
+ }
+
+ .uni-calendar-item--isDay-text {
+ color: #007aff;
+ }
+
+ .uni-calendar-item--isDay {
+ background-color: #007aff;
+ opacity: 0.8;
+ color: #fff;
+ }
+
+ .uni-calendar-item--extra {
+ color: #dd524d;
+ opacity: 0.8;
+ }
+
+ .uni-calendar-item--checked {
+ background-color: #007aff;
+ color: #fff;
+ opacity: 0.8;
+ }
+
+ .uni-calendar-item--multiple {
+ background-color: #007aff;
+ color: #fff;
+ opacity: 0.8;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar.vue"
new file mode 100644
index 0000000..8b81c10
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-calendar/uni-calendar.vue"
@@ -0,0 +1,431 @@
+<template>
+ <view class="uni-calendar" @touchmove.stop.prevent="clean">
+ <view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view>
+ <view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}">
+ <view v-if="!insert" class="uni-calendar__header uni-calendar--fixed-top">
+ <view class="uni-calendar__header-btn-box" @click="close">
+ <text class="uni-calendar__header-text uni-calendar--fixed-width">鍙栨秷</text>
+ </view>
+ <view class="uni-calendar__header-btn-box" @click="confirm">
+ <text class="uni-calendar__header-text uni-calendar--fixed-width">纭畾</text>
+ </view>
+ </view>
+ <view class="uni-calendar__header">
+ <view class="uni-calendar__header-btn-box" @click="pre">
+ <view class="uni-calendar__header-btn uni-calendar--left"></view>
+ </view>
+ <text class="uni-calendar__header-text">{{ (nowDate.year||'') +'骞�'+( nowDate.month||'') +'鏈�'}}</text>
+ <view class="uni-calendar__header-btn-box" @click="next">
+ <view class="uni-calendar__header-btn uni-calendar--right"></view>
+ </view>
+ <text class="uni-calendar__backtoday" @click="backtoday">鍥炲埌浠婂ぉ</text>
+ </view>
+ <view class="uni-calendar__box">
+ <view v-if="showMonth" class="uni-calendar__box-bg">
+ <text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
+ </view>
+ <view class="uni-calendar__weeks">
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">鏃�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">涓�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">浜�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">涓�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">鍥�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">浜�</text>
+ </view>
+ <view class="uni-calendar__weeks-day">
+ <text class="uni-calendar__weeks-day-text">鍏�</text>
+ </view>
+ </view>
+ <view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
+ <view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
+ <uni-calendar-item :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" @change="choiceDate"></uni-calendar-item>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import Calendar from './util.js';
+ import uniCalendarItem from './uni-calendar-item.vue'
+ /**
+ * Calendar 鏃ュ巻
+ * @description 鏃ュ巻缁勪欢鍙互鏌ョ湅鏃ユ湡锛岄�夋嫨浠绘剰鑼冨洿鍐呯殑鏃ユ湡锛屾墦鐐规搷浣溿�傚父鐢ㄥ満鏅锛氶厭搴楁棩鏈熼璁€�佺伀杞︽満绁ㄩ�夋嫨璐拱鏃ユ湡銆佷笂涓嬬彮鎵撳崱绛�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=56
+ * @property {String} date 鑷畾涔夊綋鍓嶆椂闂达紝榛樿涓轰粖澶�
+ * @property {Boolean} lunar 鏄剧ず鍐滃巻
+ * @property {String} startDate 鏃ユ湡閫夋嫨鑼冨洿-寮�濮嬫棩鏈�
+ * @property {String} endDate 鏃ユ湡閫夋嫨鑼冨洿-缁撴潫鏃ユ湡
+ * @property {Boolean} range 鑼冨洿閫夋嫨
+ * @property {Boolean} insert = [true|false] 鎻掑叆妯″紡,榛樿涓篺alse
+ * @value true 寮圭獥妯″紡
+ * @value false 鎻掑叆妯″紡
+ * @property {Array} selected 鎵撶偣锛屾湡寰呮牸寮廩{date: '2019-06-27', info: '绛惧埌', data: { custom: '鑷畾涔変俊鎭�', name: '鑷畾涔夋秷鎭ご',xxx:xxx... }}]
+ * @property {Boolean} showMonth 鏄惁閫夋嫨鏈堜唤涓鸿儗鏅�
+ * @event {Function} change 鏃ユ湡鏀瑰彉锛宍insert :ture` 鏃剁敓鏁�
+ * @event {Function} confirm 纭閫夋嫨`insert :false` 鏃剁敓鏁�
+ * @event {Function} monthSwitch 鍒囨崲鏈堜唤鏃惰Е鍙�
+ * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
+ */
+ export default {
+ components: {
+ uniCalendarItem
+ },
+ props: {
+ date: {
+ type: String,
+ default: ''
+ },
+ selected: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ lunar: {
+ type: Boolean,
+ default: false
+ },
+ startDate: {
+ type: String,
+ default: ''
+ },
+ endDate: {
+ type: String,
+ default: ''
+ },
+ range: {
+ type: Boolean,
+ default: false
+ },
+ insert: {
+ type: Boolean,
+ default: true
+ },
+ showMonth: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ show: false,
+ weeks: [],
+ calendar: {},
+ nowDate: '',
+ aniMaskShow: false
+ }
+ },
+ watch: {
+ selected(newVal) {
+ this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
+ this.weeks = this.cale.weeks
+ }
+ },
+ created() {
+ // 鑾峰彇鏃ュ巻鏂规硶瀹炰緥
+ this.cale = new Calendar({
+ date: this.date,
+ selected: this.selected,
+ startDate: this.startDate,
+ endDate: this.endDate,
+ range: this.range,
+ })
+ this.init(this.cale.date.fullDate)
+ },
+ methods: {
+ // 鍙栨秷绌块��
+ clean() {},
+ init(date) {
+ this.weeks = this.cale.weeks
+ this.nowDate = this.calendar = this.cale.getInfo(date)
+ },
+ open() {
+ this.show = true
+ this.$nextTick(() => {
+ setTimeout(() => {
+ this.aniMaskShow = true
+ }, 50)
+ })
+ },
+ close() {
+ this.aniMaskShow = false
+ this.$nextTick(() => {
+ setTimeout(() => {
+ this.show = false
+ }, 300)
+ })
+ },
+ confirm() {
+ this.setEmit('confirm')
+ this.close()
+ },
+ change() {
+ if (!this.insert) return
+ this.setEmit('change')
+ },
+ monthSwitch() {
+ let {
+ year,
+ month
+ } = this.nowDate
+ this.$emit('monthSwitch', {
+ year,
+ month: Number(month)
+ })
+ },
+ setEmit(name) {
+ let {
+ year,
+ month,
+ date,
+ fullDate,
+ lunar,
+ extraInfo
+ } = this.calendar
+ this.$emit(name, {
+ range: this.cale.multipleStatus,
+ year,
+ month,
+ date,
+ fulldate: fullDate,
+ lunar,
+ extraInfo: extraInfo || {}
+ })
+ },
+ choiceDate(weeks) {
+ if (weeks.disable) return
+ this.calendar = weeks
+ // 璁剧疆澶氶��
+ this.cale.setMultiple(this.calendar.fullDate)
+ this.weeks = this.cale.weeks
+ this.change()
+ },
+ backtoday() {
+ this.cale.setDate(this.date)
+ this.weeks = this.cale.weeks
+ this.nowDate = this.calendar = this.cale.getInfo(this.date)
+ this.change()
+ },
+ pre() {
+ const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
+ this.setDate(preDate)
+ this.monthSwitch()
+
+ },
+ next() {
+ const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
+ this.setDate(nextDate)
+ this.monthSwitch()
+ },
+ setDate(date) {
+ this.cale.setDate(date)
+ this.weeks = this.cale.weeks
+ this.nowDate = this.cale.getInfo(date)
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-calendar {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-calendar__mask {
+ position: fixed;
+ bottom: 0;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: rgba(0, 0, 0, 0.4);
+ transition-property: opacity;
+ transition-duration: 0.3s;
+ opacity: 0;
+ /* #ifndef APP-NVUE */
+ z-index: 99;
+ /* #endif */
+ }
+
+ .uni-calendar--mask-show {
+ opacity: 1
+ }
+
+ .uni-calendar--fixed {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ transition-property: transform;
+ transition-duration: 0.3s;
+ transform: translateY(460px);
+ /* #ifndef APP-NVUE */
+ z-index: 99;
+ /* #endif */
+ }
+
+ .uni-calendar--ani-show {
+ transform: translateY(0);
+ }
+
+ .uni-calendar__content {
+ background-color: #fff;
+ }
+
+ .uni-calendar__header {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ height: 50px;
+ border-bottom-color: #e5e5e5;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ }
+
+ .uni-calendar--fixed-top {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: space-between;
+ border-top-color: #e5e5e5;
+ border-top-style: solid;
+ border-top-width: 1px;
+ }
+
+ .uni-calendar--fixed-width {
+ width: 50px;
+ /* padding: 0 15px;
+ */
+ }
+
+ .uni-calendar__backtoday {
+ position: absolute;
+ right: 0;
+ top: 25rpx;
+ padding: 0 5px;
+ padding-left: 10px;
+ height: 25px;
+ line-height: 25px;
+ font-size: 12px;
+ border-top-left-radius: 25px;
+ border-bottom-left-radius: 25px;
+ color: #333;
+ background-color: #f1f1f1;
+ }
+
+ .uni-calendar__header-text {
+ text-align: center;
+ width: 100px;
+ font-size: 14px;
+ color: #333;
+ }
+
+ .uni-calendar__header-btn-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 50px;
+ height: 50px;
+ }
+
+ .uni-calendar__header-btn {
+ width: 10px;
+ height: 10px;
+ border-left-color: #808080;
+ border-left-style: solid;
+ border-left-width: 2px;
+ border-top-color: #555555;
+ border-top-style: solid;
+ border-top-width: 2px;
+ }
+
+ .uni-calendar--left {
+ transform: rotate(-45deg);
+ }
+
+ .uni-calendar--right {
+ transform: rotate(135deg);
+ }
+
+
+ .uni-calendar__weeks {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-calendar__weeks-item {
+ flex: 1;
+ }
+
+ .uni-calendar__weeks-day {
+ flex: 1;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: 45px;
+ border-bottom-color: #F5F5F5;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ }
+
+ .uni-calendar__weeks-day-text {
+ font-size: 14px;
+ }
+
+ .uni-calendar__box {
+ position: relative;
+ }
+
+ .uni-calendar__box-bg {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ justify-content: center;
+ align-items: center;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ }
+
+ .uni-calendar__box-bg-text {
+ font-size: 200px;
+ font-weight: bold;
+ color: #999;
+ opacity: 0.1;
+ text-align: center;
+ /* #ifndef APP-NVUE */
+ line-height: 1;
+ /* #endif */
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-card/uni-card.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-card/uni-card.vue"
new file mode 100644
index 0000000..ede6eac
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-card/uni-card.vue"
@@ -0,0 +1,403 @@
+<template>
+ <view class="uni-card uni-border" :class="{ 'uni-card--full': isFull === true || isFull === 'true', 'uni-card--shadow': isShadow === true || isShadow === 'true'}">
+ <!-- 鍩虹 -->
+ <view v-if="mode === 'basic' && title" class="uni-card__header uni-border-bottom" @click.stop="onClick">
+ <view v-if="thumbnail" class="uni-card__header-extra-img-view">
+ <image :src="thumbnail" class="uni-card__header-extra-img" />
+ </view>
+ <text class="uni-card__header-title-text">{{ title }}</text>
+ <text v-if="extra" class="uni-card__header-extra-text">{{ extra }}</text>
+ </view>
+ <!-- 鏍囬 -->
+ <view v-if="mode === 'title'" class="uni-card__title uni-border-bottom" @click.stop="onClick">
+ <view class="uni-card__title-box">
+ <view class="uni-card__title-header">
+ <image class="uni-card__title-header-image" :src="thumbnail" mode="scaleToFill" />
+ </view>
+ <view class="uni-card__title-content">
+ <text class="uni-card__title-content-title uni-ellipsis">{{ title }}</text>
+ <text class="uni-card__title-content-extra uni-ellipsis">{{ subTitle }}</text>
+ </view>
+ </view>
+ <view v-if="extra">
+ <text class="uni-card__header-extra-text">{{ extra }}</text>
+ </view>
+ </view>
+ <!-- 鍥炬枃 -->
+ <view v-if="mode === 'style'" class="uni-card__thumbnailimage" @click.stop="onClick">
+ <view class="uni-card__thumbnailimage-box">
+ <image class="uni-card__thumbnailimage-image" :src="thumbnail" mode="aspectFill" />
+ </view>
+ <view v-if="title" class="uni-card__thumbnailimage-title"><text class="uni-card__thumbnailimage-title-text">{{ title }}</text></view>
+ </view>
+ <!-- 鍐呭 -->
+ <view class="uni-card__content uni-card__content--pd" @click.stop="onClick">
+ <view v-if="mode === 'style' && extra" class=""><text class="uni-card__content-extra">{{ extra }}</text></view>
+ <slot />
+ </view>
+ <!-- 搴曢儴 -->
+ <view v-if="note" class="uni-card__footer uni-border-top">
+ <slot name="footer">
+ <text class="uni-card__footer-text">{{ note }}</text>
+ </slot>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * Card 鍗$墖
+ * @description 鍗$墖瑙嗗浘缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=22
+ * @property {String} title 鏍囬鏂囧瓧
+ * @property {String} subTitle 鍓爣棰橈紙浠呬粎mode=title涓嬬敓鏁堬級
+ * @property {String} extra 鏍囬棰濆淇℃伅
+ * @property {String} note 鏍囬宸︿晶缂╃暐鍥�
+ * @property {String} thumbnail 搴曢儴淇℃伅
+ * @property {String} mode = [basic|style|title] 鍗$墖妯″紡
+ * @value basic 鍩虹鍗$墖
+ * @value style 鍥炬枃鍗$墖
+ * @value title 鏍囬鍗$墖
+ * @property {Boolean} isFull = [true | false] 鍗$墖鍐呭鏄惁閫氭爮锛屼负 true 鏃跺皢鍘婚櫎padding鍊�
+ * @property {Boolean} isShadow = [true | false] 鍗$墖鍐呭鏄惁寮�鍚槾褰�
+ * @event {Function} click 鐐瑰嚮 Card 瑙﹀彂浜嬩欢
+ * @example <uni-card title="鏍囬鏂囧瓧" thumbnail="https://img-cdn-qiniu.dcloud.net.cn/new-page/uni.png" extra="棰濆淇℃伅" note="Tips">鍐呭涓讳綋锛屽彲鑷畾涔夊唴瀹瑰強鏍峰紡</uni-card>
+ */
+ export default {
+ name: 'UniCard',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ subTitle: {
+ type: String,
+ default: ''
+ },
+ extra: {
+ type: String,
+ default: ''
+ },
+ note: {
+ type: String,
+ default: ''
+ },
+ thumbnail: {
+ type: String,
+ default: ''
+ },
+ mode: {
+ type: String,
+ default: 'basic'
+ },
+ isFull: {
+ // 鍐呭鍖哄煙鏄惁閫氭爮
+ type: Boolean,
+ default: false
+ },
+ isShadow: {
+ // 鏄惁寮�鍚槾褰�
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ methods: {
+ onClick() {
+ this.$emit('click')
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-card {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex: 1;
+ box-shadow: 0 0 0 rgba(0, 0, 0, 0);
+ /* #endif */
+ margin: 12px 15px;
+ background-color: #ffffff;
+ position: relative;
+ flex-direction: column;
+ border-radius: 5px;
+ overflow: hidden;
+ }
+
+
+
+ .uni-border {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-color: #e5e5e5;
+ border-style: solid;
+ border-width: 0.5px;
+ /* #endif */
+ z-index: 1;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-border:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ top: 0;
+ right: 0;
+ border: 1px solid #e5e5e5;
+ border-radius: 10px;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: left top;
+ z-index: -1;
+ }
+
+ /* #endif */
+
+ .uni-border-bottom {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-bottom-color: #e5e5e5;
+ border-bottom-style: solid;
+ border-bottom-width: 0.5px;
+ /* #endif */
+ z-index: 1;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-border-bottom:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ top: 0;
+ right: 0;
+ border-bottom: 1px solid #e5e5e5;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: left top;
+ z-index: -1;
+ }
+
+ /* #endif */
+ .uni-border-top {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-top-color: #e5e5e5;
+ border-top-style: solid;
+ border-top-width: 0.5px;
+ /* #endif */
+ z-index: 1;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-border-top:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ top: 0;
+ right: 0;
+ border-top: 1px solid #e5e5e5;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: left top;
+ z-index: -1;
+ }
+
+ /* #endif */
+
+ .uni-card__thumbnailimage {
+ position: relative;
+ flex-direction: column;
+ justify-content: center;
+ height: 150px;
+ overflow: hidden;
+ }
+
+ .uni-card__thumbnailimage-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ overflow: hidden;
+ }
+
+ .uni-card__thumbnailimage-image {
+ flex: 1;
+ }
+
+ .uni-card__thumbnailimage-title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ flex-direction: row;
+ padding: 8px 12px;
+ background-color: rgba(0, 0, 0, 0.4);
+ }
+
+ .uni-card__thumbnailimage-title-text {
+ flex: 1;
+ font-size: 14px;
+ color: #fff;
+ }
+
+ .uni-card__title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ padding: 10px;
+
+ }
+
+ .uni-card__title-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ align-items: center;
+ overflow: hidden;
+ }
+
+ .uni-card__title-header {
+ width: 40px;
+ height: 40px;
+ overflow: hidden;
+ border-radius: 5px;
+ }
+
+ .uni-card__title-header-image {
+ width: 40px;
+ height: 40px;
+ }
+
+ .uni-card__title-content {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ flex: 1;
+ padding-left: 10px;
+ height: 40px;
+ overflow: hidden;
+ }
+
+ .uni-card__title-content-title {
+ font-size: 14px;
+ line-height: 22px;
+ }
+
+ .uni-card__title-content-extra {
+ font-size: 12px;
+ line-height: 27px;
+ color: #999;
+ }
+
+ .uni-card__header {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ position: relative;
+ flex-direction: row;
+ padding: 12px;
+ align-items: center;
+ }
+
+ .uni-card__header-title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ margin-right: 8px;
+ justify-content: flex-start;
+ align-items: center;
+ }
+
+ .uni-card__header-title-text {
+ font-size: 16;
+ flex: 1;
+ color: #333;
+ }
+
+ .uni-card__header-extra-img {
+ height: 20px;
+ width: 20px;
+ margin-right: 8px;
+ }
+
+ .uni-card__header-extra-text {
+ flex: 1;
+ margin-left: 8px;
+ font-size: 12px;
+ text-align: right;
+ color: #999;
+ }
+
+ .uni-card__content {
+ color: #333;
+ }
+
+ .uni-card__content--pd {
+ padding: 12px;
+ }
+
+ .uni-card__content-extra {
+ font-size: 14px;
+ padding-bottom: 10px;
+ color: #999;
+ }
+
+ .uni-card__footer {
+ justify-content: space-between;
+ padding: 12px;
+ }
+
+ .uni-card__footer-text {
+ color: #999;
+ font-size: 12px;
+ }
+
+ .uni-card--shadow {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.1);
+ /* #endif */
+ }
+
+ .uni-card--full {
+ margin: 0;
+ border-radius: 0;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-card--full:after {
+ border-radius: 0;
+ }
+
+ /* #endif */
+ .uni-ellipsis {
+ /* #ifndef APP-NVUE */
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ lines: 1
+ /* #endif */
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse-item/uni-collapse-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse-item/uni-collapse-item.vue"
new file mode 100644
index 0000000..6a04f04
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse-item/uni-collapse-item.vue"
@@ -0,0 +1,217 @@
+<template>
+ <view :class="{ 'uni-collapse-cell--disabled': disabled,'uni-collapse-cell--notdisabled': !disabled, 'uni-collapse-cell--open': isOpen,'uni-collapse-cell--hide':!isOpen }" class="uni-collapse-cell">
+ <view class="uni-collapse-cell__title" @click="onClick">
+ <image v-if="thumb" :src="thumb" class="uni-collapse-cell__title-img" />
+ <text class="uni-collapse-cell__title-text">{{ title }}</text>
+ <!-- #ifdef MP-ALIPAY -->
+ <view :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__title-arrow">
+ <uni-icons color="#bbb" size="20" type="arrowdown" />
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef MP-ALIPAY -->
+ <uni-icons :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__title-arrow" color="#bbb" size="20" type="arrowdown" />
+ <!-- #endif -->
+ </view>
+ <view :class="{'uni-collapse-cell__content--hide':!isOpen}" class="uni-collapse-cell__content">
+ <view :class="{ 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__wrapper" :style="{'transform':isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpen?'translateY(0)':'translateY(-50%)'}">
+ <slot />
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ /**
+ * CollapseItem 鎶樺彔闈㈡澘瀛愮粍浠�
+ * @description 鎶樺彔闈㈡澘瀛愮粍浠�
+ * @property {String} title 鏍囬鏂囧瓧
+ * @property {String} thumb 鏍囬宸︿晶缂╃暐鍥�
+ * @property {Boolean} disabled = [true|false] 鏄惁灞曞紑闈㈡澘
+ * @property {Boolean} showAnimation = [true|false] 寮�鍚姩鐢�
+ */
+ export default {
+ name: 'UniCollapseItem',
+ components: {
+ uniIcons
+ },
+ props: {
+ title: {
+ // 鍒楄〃鏍囬
+ type: String,
+ default: ''
+ },
+ name: {
+ // 鍞竴鏍囪瘑绗�
+ type: [Number, String],
+ default: 0
+ },
+ disabled: {
+ // 鏄惁绂佺敤
+ type: Boolean,
+ default: false
+ },
+ showAnimation: {
+ // 鏄惁鏄剧ず鍔ㄧ敾
+ type: Boolean,
+ default: false
+ },
+ open: {
+ // 鏄惁灞曞紑
+ type: Boolean,
+ default: false
+ },
+ thumb: {
+ // 缂╃暐鍥�
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ isOpen: false
+ }
+ },
+ watch: {
+ open(val) {
+ this.isOpen = val
+ }
+ },
+ inject: ['collapse'],
+ created() {
+ this.isOpen = this.open
+ this.nameSync = this.name ? this.name : this.collapse.childrens.length
+ this.collapse.childrens.push(this)
+ if (String(this.collapse.accordion) === 'true') {
+ if (this.isOpen) {
+ let lastEl = this.collapse.childrens[this.collapse.childrens.length - 2]
+ if (lastEl) {
+ this.collapse.childrens[this.collapse.childrens.length - 2].isOpen = false
+ }
+ }
+ }
+ },
+ methods: {
+ onClick() {
+ if (this.disabled) {
+ return
+ }
+ if (String(this.collapse.accordion) === 'true') {
+ this.collapse.childrens.forEach(vm => {
+ if (vm === this) {
+ return
+ }
+ vm.isOpen = false
+ })
+ }
+ this.isOpen = !this.isOpen
+ this.collapse.onChange && this.collapse.onChange()
+ this.$forceUpdate()
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-collapse-cell {
+ flex-direction: column;
+ border-color: #e5e5e5;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ }
+
+
+ .uni-collapse-cell--hover {
+ background-color: #f1f1f1;
+ }
+
+ .uni-collapse-cell--open {
+ background-color: #f1f1f1;
+ }
+
+ .uni-collapse-cell--disabled {
+ background-color: #f1f1f1;
+ /* opacity: 0.3;
+ */
+ }
+
+
+ .uni-collapse-cell--hide {
+ height: 48px;
+ }
+
+ .uni-collapse-cell--animation {
+ /* transition: transform 0.3s ease;
+ */
+ transition-property: transform;
+ transition-duration: 0.3s;
+ transition-timing-function: ease;
+ }
+
+ .uni-collapse-cell__title {
+ padding: 12px 12px;
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ box-sizing: border-box;
+ /* #endif */
+ height: 48px;
+ line-height: 24px;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .uni-collapse-cell__title:active {
+ background-color: #f1f1f1;
+ }
+
+ .uni-collapse-cell__title-img {
+ height: 26px;
+ width: 26px;
+ margin-right: 10px;
+ }
+
+ .uni-collapse-cell__title-arrow {
+ width: 20px;
+ height: 20px;
+ transform: rotate(0deg);
+ transform-origin: center center;
+
+ }
+
+ .uni-collapse-cell__title-arrow-active {
+ transform: rotate(180deg);
+ }
+
+ .uni-collapse-cell__title-text {
+ flex: 1;
+ font-size: 14px;
+ /* #ifndef APP-NVUE */
+ white-space: nowrap;
+ color: inherit;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ lines: 1;
+ /* #endif */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .uni-collapse-cell__content {
+ overflow: hidden;
+ }
+
+ .uni-collapse-cell__wrapper {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-collapse-cell__content--hide {
+ height: 0px;
+ line-height: 0px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse/uni-collapse.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse/uni-collapse.vue"
new file mode 100644
index 0000000..b1b8777
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-collapse/uni-collapse.vue"
@@ -0,0 +1,59 @@
+<template>
+ <view class="uni-collapse">
+ <slot />
+ </view>
+</template>
+<script>
+ /**
+ * Collapse 鎶樺彔闈㈡澘
+ * @description 灞曠ず鍙互鎶樺彔 / 灞曞紑鐨勫唴瀹瑰尯鍩�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=23
+ * @property {Boolean} accordion = [true|false] 鏄惁寮�鍚墜椋庣惔鏁堟灉鏄惁寮�鍚墜椋庣惔鏁堟灉
+ * @event {Function} change 鍒囨崲闈㈡澘鏃惰Е鍙戯紝activeNames锛圓rray锛夛細灞曞紑鐘舵�佺殑uniCollapseItem鐨� name 鍊�
+ */
+ export default {
+ name: 'UniCollapse',
+ props: {
+ accordion: {
+ // 鏄惁寮�鍚墜椋庣惔鏁堟灉
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ data() {
+ return {}
+ },
+ provide() {
+ return {
+ collapse: this
+ }
+ },
+ created() {
+ this.childrens = []
+ },
+ methods: {
+ onChange() {
+ let activeItem = []
+ this.childrens.forEach((vm, index) => {
+ if (vm.isOpen) {
+ activeItem.push(vm.nameSync)
+ }
+ })
+ this.$emit('change', activeItem)
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-collapse {
+ /* #ifndef APP-NVUE */
+ width: 100%;
+ display: flex;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ flex: 1;
+ /* #endif */
+ flex-direction: column;
+ background-color: #ffffff;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-combox/uni-combox.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-combox/uni-combox.vue"
new file mode 100644
index 0000000..2f80816
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-combox/uni-combox.vue"
@@ -0,0 +1,212 @@
+<template>
+ <view class="uni-combox">
+ <view v-if="label" class="uni-combox__label" :style="labelStyle">
+ <text>{{label}}</text>
+ </view>
+ <view class="uni-combox__input-box">
+ <input class="uni-combox__input" type="text" :placeholder="placeholder" v-model="inputVal" @input="onInput" @focus="onFocus" @blur="onBlur" />
+ <uni-icons class="uni-combox__input-arrow" type="arrowdown" size="14" @click="toggleSelector"></uni-icons>
+ <view class="uni-combox__selector" v-if="showSelector">
+ <scroll-view scroll-y="true" class="uni-combox__selector-scroll">
+ <view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0">
+ <text>{{emptyTips}}</text>
+ </view>
+ <view class="uni-combox__selector-item" v-for="(item,index) in filterCandidates" :key="index" @click="onSelectorClick(index)">
+ <text>{{item}}</text>
+ </view>
+ </scroll-view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ /**
+ * Combox 缁勫悎杈撳叆妗�
+ * @description 缁勫悎杈撳叆妗嗕竴鑸敤浜庢棦鍙互杈撳叆涔熷彲浠ラ�夋嫨鐨勫満鏅�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=1261
+ * @property {String} label 宸︿晶鏂囧瓧
+ * @property {String} labelWidth 宸︿晶鍐呭瀹藉害
+ * @property {String} placeholder 杈撳叆妗嗗崰浣嶇
+ * @property {Array} candidates 鍊欓�夐」鍒楄〃
+ * @property {String} emptyTips 绛涢�夌粨鏋滀负绌烘椂鏄剧ず鐨勬枃瀛�
+ * @property {String} value 缁勫悎妗嗙殑鍊�
+ */
+ export default {
+ name: 'uniCombox',
+ components: {
+ uniIcons
+ },
+ props: {
+ label: {
+ type: String,
+ default: ''
+ },
+ labelWidth: {
+ type: String,
+ default: 'auto'
+ },
+ placeholder: {
+ type: String,
+ default: ''
+ },
+ candidates: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ emptyTips: {
+ type: String,
+ default: '鏃犲尮閰嶉」'
+ },
+ value: {
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ showSelector: false,
+ inputVal: ''
+ }
+ },
+ computed: {
+ labelStyle() {
+ if (this.labelWidth === 'auto') {
+ return {}
+ }
+ return {
+ width: this.labelWidth
+ }
+ },
+ filterCandidates() {
+ return this.candidates.filter((item) => {
+ return item.indexOf(this.inputVal) > -1
+ })
+ },
+ filterCandidatesLength() {
+ return this.filterCandidates.length
+ }
+ },
+ watch: {
+ value: {
+ handler(newVal) {
+ this.inputVal = newVal
+ },
+ immediate: true
+ }
+ },
+ methods: {
+ toggleSelector() {
+ this.showSelector = !this.showSelector
+ },
+ onFocus() {
+ this.showSelector = true
+ },
+ onBlur() {
+ setTimeout(() => {
+ this.showSelector = false
+ }, 50)
+ },
+ onSelectorClick(index) {
+ this.inputVal = this.filterCandidates[index]
+ this.showSelector = false
+ this.$emit('input', this.inputVal)
+ },
+ onInput() {
+ setTimeout(() => {
+ this.$emit('input', this.inputVal)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-combox {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ height: 40px;
+ flex-direction: row;
+ align-items: center;
+ /* border-bottom: solid 1px #DDDDDD; */
+ }
+
+ .uni-combox__label {
+ font-size: 16px;
+ line-height: 22px;
+ padding-right: 10px;
+ color: #999999;
+ }
+
+ .uni-combox__input-box {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ align-items: center;
+ }
+
+ .uni-combox__input {
+ flex: 1;
+ font-size: 16px;
+ height: 22px;
+ line-height: 22px;
+ }
+
+ .uni-combox__input-arrow {
+ padding: 10px;
+ }
+
+ .uni-combox__selector {
+ box-sizing: border-box;
+ position: absolute;
+ top: 42px;
+ left: 0;
+ width: 100%;
+ background-color: #FFFFFF;
+ border-radius: 6px;
+ box-shadow: #DDDDDD 4px 4px 8px, #DDDDDD -4px -4px 8px;
+ z-index: 2;
+ }
+
+ .uni-combox__selector-scroll {
+ max-height: 200px;
+ box-sizing: border-box;
+ }
+
+ .uni-combox__selector::before {
+ content: '';
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-bottom: solid 6px #FFFFFF;
+ border-right: solid 6px transparent;
+ border-left: solid 6px transparent;
+ left: 50%;
+ top: -6px;
+ margin-left: -6px;
+ }
+
+ .uni-combox__selector-empty,
+ .uni-combox__selector-item {
+ /* #ifdef APP-NVUE */
+ display: flex;
+ /* #endif */
+ line-height: 36px;
+ font-size: 14px;
+ text-align: center;
+ border-bottom: solid 1px #DDDDDD;
+ margin: 0px 10px;
+ }
+
+ .uni-combox__selector-empty:last-child,
+ .uni-combox__selector-item:last-child {
+ border-bottom: none;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-countdown/uni-countdown.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-countdown/uni-countdown.vue"
new file mode 100644
index 0000000..d4ed8e0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-countdown/uni-countdown.vue"
@@ -0,0 +1,200 @@
+<template>
+ <view class="uni-countdown">
+ <text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text>
+ <text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">澶�</text>
+ <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text>
+ <text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '鏃�' }}</text>
+ <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text>
+ <text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '鍒�' }}</text>
+ <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text>
+ <text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">绉�</text>
+ </view>
+</template>
+<script>
+ /**
+ * Countdown 鍊掕鏃�
+ * @description 鍊掕鏃剁粍浠�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=25
+ * @property {String} backgroundColor 鑳屾櫙鑹�
+ * @property {String} color 鏂囧瓧棰滆壊
+ * @property {Number} day 澶╂暟
+ * @property {Number} hour 灏忔椂
+ * @property {Number} minute 鍒嗛挓
+ * @property {Number} second 绉�
+ * @property {Boolean} showDay = [true|false] 鏄惁鏄剧ず澶╂暟
+ * @property {Boolean} showColon = [true|false] 鏄惁浠ュ啋鍙蜂负鍒嗛殧绗�
+ * @property {String} splitorColor 鍒嗗壊绗﹀彿棰滆壊
+ * @event {Function} timeup 鍊掕鏃舵椂闂村埌瑙﹀彂浜嬩欢
+ * @example <uni-countdown :day="1" :hour="1" :minute="12" :second="40"></uni-countdown>
+ */
+ export default {
+ name: 'UniCountdown',
+ props: {
+ showDay: {
+ type: Boolean,
+ default: true
+ },
+ showColon: {
+ type: Boolean,
+ default: true
+ },
+ backgroundColor: {
+ type: String,
+ default: '#FFFFFF'
+ },
+ borderColor: {
+ type: String,
+ default: '#000000'
+ },
+ color: {
+ type: String,
+ default: '#000000'
+ },
+ splitorColor: {
+ type: String,
+ default: '#000000'
+ },
+ day: {
+ type: Number,
+ default: 0
+ },
+ hour: {
+ type: Number,
+ default: 0
+ },
+ minute: {
+ type: Number,
+ default: 0
+ },
+ second: {
+ type: Number,
+ default: 0
+ }
+ },
+ data() {
+ return {
+ timer: null,
+ syncFlag: false,
+ d: '00',
+ h: '00',
+ i: '00',
+ s: '00',
+ leftTime: 0,
+ seconds: 0
+ }
+ },
+ watch: {
+ day(val) {
+ this.changeFlag()
+ },
+ hour(val) {
+ this.changeFlag()
+ },
+ minute(val) {
+ this.changeFlag()
+ },
+ second(val) {
+ this.changeFlag()
+ }
+ },
+ created: function(e) {
+ this.startData();
+ },
+ beforeDestroy() {
+ clearInterval(this.timer)
+ },
+ methods: {
+ toSeconds(day, hours, minutes, seconds) {
+ return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
+ },
+ timeUp() {
+ clearInterval(this.timer)
+ this.$emit('timeup')
+ },
+ countDown() {
+ let seconds = this.seconds
+ let [day, hour, minute, second] = [0, 0, 0, 0]
+ if (seconds > 0) {
+ day = Math.floor(seconds / (60 * 60 * 24))
+ hour = Math.floor(seconds / (60 * 60)) - (day * 24)
+ minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
+ second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
+ } else {
+ this.timeUp()
+ }
+ if (day < 10) {
+ day = '0' + day
+ }
+ if (hour < 10) {
+ hour = '0' + hour
+ }
+ if (minute < 10) {
+ minute = '0' + minute
+ }
+ if (second < 10) {
+ second = '0' + second
+ }
+ this.d = day
+ this.h = hour
+ this.i = minute
+ this.s = second
+ },
+ startData() {
+ this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+ if (this.seconds <= 0) {
+ return
+ }
+ this.countDown()
+ this.timer = setInterval(() => {
+ this.seconds--
+ if (this.seconds < 0) {
+ this.timeUp()
+ return
+ }
+ this.countDown()
+ }, 1000)
+ },
+ changeFlag() {
+ if (!this.syncFlag) {
+ this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+ this.startData();
+ this.syncFlag = true;
+ }
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-countdown {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: flex-start;
+ padding: 2rpx 0;
+ }
+
+ .uni-countdown__splitor {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ justify-content: center;
+ line-height: 48rpx;
+ padding: 5rpx;
+ font-size: 12px;
+ }
+
+ .uni-countdown__number {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ justify-content: center;
+ align-items: center;
+ width: 52rpx;
+ height: 48rpx;
+ line-height: 48rpx;
+ margin: 5rpx;
+ text-align: center;
+ font-size: 12px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-drawer/uni-drawer.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-drawer/uni-drawer.vue"
new file mode 100644
index 0000000..f62c329
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-drawer/uni-drawer.vue"
@@ -0,0 +1,170 @@
+<template>
+ <view v-if="visibleSync" :class="{ 'uni-drawer--visible': showDrawer }" class="uni-drawer" @touchmove.stop.prevent="clear">
+ <view class="uni-drawer__mask" :class="{ 'uni-drawer__mask--visible': showDrawer && mask }" @tap="close('mask')" />
+ <view class="uni-drawer__content" :class="{'uni-drawer--right': rightMode,'uni-drawer--left': !rightMode, 'uni-drawer__content--visible': showDrawer}" :style="{width:drawerWidth+'px'}">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * Drawer 鎶藉眽
+ * @description 鎶藉眽渚ф粦鑿滃崟
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=26
+ * @property {Boolean} mask = [true | false] 鏄惁鏄剧ず閬僵
+ * @property {Boolean} maskClick = [true | false] 鐐瑰嚮閬僵鏄惁鍏抽棴
+ * @property {Boolean} mode = [left | right] Drawer 婊戝嚭浣嶇疆
+ * @value left 浠庡乏渚ф粦鍑�
+ * @value right 浠庡彸渚т晶婊戝嚭
+ * @property {Number} width 鎶藉眽鐨勫搴� 锛屼粎 vue 椤甸潰鐢熸晥
+ * @event {Function} close 缁勪欢鍏抽棴鏃惰Е鍙戜簨浠�
+ */
+ export default {
+ name: 'UniDrawer',
+ props: {
+ /**
+ * 鏄剧ず妯″紡锛堝乏銆佸彸锛夛紝鍙湪鍒濆鍖栫敓鏁�
+ */
+ mode: {
+ type: String,
+ default: ''
+ },
+ /**
+ * 钂欏眰鏄剧ず鐘舵��
+ */
+ mask: {
+ type: Boolean,
+ default: true
+ },
+ /**
+ * 閬僵鏄惁鍙偣鍑诲叧闂�
+ */
+ maskClick: {
+ type: Boolean,
+ default: true
+ },
+ /**
+ * 鎶藉眽瀹藉害
+ */
+ width: {
+ type: Number,
+ default: 220
+ }
+ },
+ data() {
+ return {
+ visibleSync: false,
+ showDrawer: false,
+ rightMode: false,
+ watchTimer: null,
+ drawerWidth: 220
+ }
+ },
+ created() {
+ // #ifndef APP-NVUE
+ this.drawerWidth = this.width
+ // #endif
+ this.rightMode = this.mode === 'right'
+ },
+ methods: {
+ clear() {},
+ close(type) {
+ // fixed by mehaotian 鎶藉眽灏氭湭瀹屽叏鍏抽棴鎴栭伄缃╃姝㈢偣鍑绘椂涓嶈Е鍙戜互涓嬮�昏緫
+ if ((type === 'mask' && !this.maskClick) || !this.visibleSync) return
+ this._change('showDrawer', 'visibleSync', false)
+ },
+ open() {
+ // fixed by mehaotian 澶勭悊閲嶅鐐瑰嚮鎵撳紑鐨勪簨浠�
+ if (this.visibleSync) return
+ this._change('visibleSync', 'showDrawer', true)
+ },
+ _change(param1, param2, status) {
+ this[param1] = status
+ if (this.watchTimer) {
+ clearTimeout(this.watchTimer)
+ }
+ this.watchTimer = setTimeout(() => {
+ this[param2] = status
+ this.$emit('change', status)
+ }, status ? 50 : 300)
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ /* 鎶藉眽瀹藉害
+ */
+
+ .uni-drawer {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+ z-index: 999;
+ }
+
+ .uni-drawer__content {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: absolute;
+ top: 0;
+ width: 220px;
+ bottom: 0;
+ background-color: #ffffff;
+ transition: transform 0.3s ease;
+ }
+
+ .uni-drawer--left {
+ left: 0;
+ /* #ifdef APP-NVUE */
+ transform: translateX(-220px);
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ transform: translateX(-100%);
+ /* #endif */
+ }
+
+ .uni-drawer--right {
+ right: 0;
+ /* #ifdef APP-NVUE */
+ transform: translateX(220px);
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ transform: translateX(100%);
+ /* #endif */
+ }
+
+ .uni-drawer__content--visible {
+ transform: translateX(0px);
+ }
+
+
+ .uni-drawer__mask {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ background-color: rgba(0, 0, 0, 0.4);
+ transition: opacity 0.3s;
+ }
+
+ .uni-drawer__mask--visible {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ opacity: 1;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fab/uni-fab.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fab/uni-fab.vue"
new file mode 100644
index 0000000..288803f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fab/uni-fab.vue"
@@ -0,0 +1,428 @@
+<template>
+ <view>
+ <view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop)" :class="{
+ 'uni-fab--leftBottom': leftBottom,
+ 'uni-fab--rightBottom': rightBottom,
+ 'uni-fab--leftTop': leftTop,
+ 'uni-fab--rightTop': rightTop
+ }" class="uni-fab">
+ <view :class="{
+ 'uni-fab__content--left': horizontal === 'left',
+ 'uni-fab__content--right': horizontal === 'right',
+ 'uni-fab__content--flexDirection': direction === 'vertical',
+ 'uni-fab__content--flexDirectionStart': flexDirectionStart,
+ 'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
+ 'uni-fab__content--other-platform': !isAndroidNvue
+ }" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }" class="uni-fab__content" elevation="5">
+ <view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
+ <view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }" class="uni-fab__item" @click="_onItemClick(index, item)">
+ <image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image" mode="widthFix" />
+ <text class="uni-fab__item-text" :style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
+ </view>
+ <view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
+ </view>
+ </view>
+ <view :class="{
+ 'uni-fab__circle--leftBottom': leftBottom,
+ 'uni-fab__circle--rightBottom': rightBottom,
+ 'uni-fab__circle--leftTop': leftTop,
+ 'uni-fab__circle--rightTop': rightTop,
+ 'uni-fab__content--other-platform': !isAndroidNvue
+ }" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor }" @click="_onClick">
+ <view class="fab-circle-v" :class="{'uni-fab__plus--active': isShow}"></view>
+ <view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow}"></view>
+ </view>
+ </view>
+</template>
+
+<script>
+ let platform = 'other'
+ // #ifdef APP-NVUE
+ platform = uni.getSystemInfoSync().platform
+ // #endif
+
+ /**
+ * Fab 鎮诞鎸夐挳
+ * @description 鐐瑰嚮鍙睍寮�涓�涓浘褰㈡寜閽彍鍗�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=144
+ * @property {Object} pattern 鍙�夋牱寮忛厤缃」
+ * @property {Object} horizontal = [left | right] 姘村钩瀵归綈鏂瑰紡
+ * @value left 宸﹀榻�
+ * @value right 鍙冲榻�
+ * @property {Object} vertical = [bottom | top] 鍨傜洿瀵归綈鏂瑰紡
+ * @value bottom 涓嬪榻�
+ * @value top 涓婂榻�
+ * @property {Object} direction = [horizontal | vertical] 灞曞紑鑿滃崟鏄剧ず鏂瑰紡
+ * @value horizontal 姘村钩鏄剧ず
+ * @value vertical 鍨傜洿鏄剧ず
+ * @property {Array} content 灞曞紑鑿滃崟鍐呭閰嶇疆椤�
+ * @property {Boolean} popMenu 鏄惁浣跨敤寮瑰嚭鑿滃崟
+ * @event {Function} trigger 灞曞紑鑿滃崟鐐瑰嚮浜嬩欢锛岃繑鍥炵偣鍑讳俊鎭�
+ * @event {Function} fabClick 鎮诞鎸夐挳鐐瑰嚮浜嬩欢
+ */
+ export default {
+ name: 'UniFab',
+ props: {
+ pattern: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ horizontal: {
+ type: String,
+ default: 'left'
+ },
+ vertical: {
+ type: String,
+ default: 'bottom'
+ },
+ direction: {
+ type: String,
+ default: 'horizontal'
+ },
+ content: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ show: {
+ type: Boolean,
+ default: false
+ },
+ popMenu: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ fabShow: false,
+ isShow: false,
+ isAndroidNvue: platform === 'android',
+ styles: {
+ color: '#3c3e49',
+ selectedColor: '#007AFF',
+ backgroundColor: '#fff',
+ buttonColor: '#3c3e49'
+ }
+ }
+ },
+ computed: {
+ contentWidth(e) {
+ return (this.content.length + 1) * 55 + 10 + 'px'
+ },
+ contentWidthMin() {
+ return 55 + 'px'
+ },
+ // 鍔ㄦ�佽绠楀搴�
+ boxWidth() {
+ return this.getPosition(3, 'horizontal')
+ },
+ // 鍔ㄦ�佽绠楅珮搴�
+ boxHeight() {
+ return this.getPosition(3, 'vertical')
+ },
+ // 璁$畻宸︿笅浣嶇疆
+ leftBottom() {
+ return this.getPosition(0, 'left', 'bottom')
+ },
+ // 璁$畻鍙充笅浣嶇疆
+ rightBottom() {
+ return this.getPosition(0, 'right', 'bottom')
+ },
+ // 璁$畻宸︿笂浣嶇疆
+ leftTop() {
+ return this.getPosition(0, 'left', 'top')
+ },
+ rightTop() {
+ return this.getPosition(0, 'right', 'top')
+ },
+ flexDirectionStart() {
+ return this.getPosition(1, 'vertical', 'top')
+ },
+ flexDirectionEnd() {
+ return this.getPosition(1, 'vertical', 'bottom')
+ },
+ horizontalLeft() {
+ return this.getPosition(2, 'horizontal', 'left')
+ },
+ horizontalRight() {
+ return this.getPosition(2, 'horizontal', 'right')
+ }
+ },
+ watch: {
+ pattern(newValue, oldValue) {
+ //console.log(JSON.stringify(newValue))
+ this.styles = Object.assign({}, this.styles, newValue)
+ }
+ },
+ created() {
+ this.isShow = this.show
+ if (this.top === 0) {
+ this.fabShow = true
+ }
+ // 鍒濆鍖栨牱寮�
+ this.styles = Object.assign({}, this.styles, this.pattern)
+ },
+ methods: {
+ _onClick() {
+ this.$emit('fabClick')
+ if (!this.popMenu) {
+ return
+ }
+ this.isShow = !this.isShow
+ },
+ open() {
+ this.isShow = true
+ },
+ close() {
+ this.isShow = false
+ },
+ /**
+ * 鎸夐挳鐐瑰嚮浜嬩欢
+ */
+ _onItemClick(index, item) {
+ this.$emit('trigger', {
+ index,
+ item
+ })
+ },
+ /**
+ * 鑾峰彇 浣嶇疆淇℃伅
+ */
+ getPosition(types, paramA, paramB) {
+ if (types === 0) {
+ return this.horizontal === paramA && this.vertical === paramB
+ } else if (types === 1) {
+ return this.direction === paramA && this.vertical === paramB
+ } else if (types === 2) {
+ return this.direction === paramA && this.horizontal === paramB
+ } else {
+ return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
+ }
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-fab {
+ position: fixed;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ justify-content: center;
+ align-items: center;
+ z-index: 10;
+ }
+
+ .uni-fab--active {
+ opacity: 1;
+ }
+
+ .uni-fab--leftBottom {
+ left: 5px;
+ bottom: 20px;
+ /* #ifdef H5 */
+ bottom: calc(20px + var(--window-bottom));
+ /* #endif */
+ padding: 10px;
+ }
+
+ .uni-fab--leftTop {
+ left: 5px;
+ top: 30px;
+ /* #ifdef H5 */
+ top: calc(30px + var(--window-top));
+ /* #endif */
+ padding: 10px;
+ }
+
+ .uni-fab--rightBottom {
+ right: 5px;
+ bottom: 20px;
+ /* #ifdef H5 */
+ bottom: calc(20px + var(--window-bottom));
+ /* #endif */
+ padding: 10px;
+ }
+
+ .uni-fab--rightTop {
+ right: 5px;
+ top: 30px;
+ /* #ifdef H5 */
+ top: calc(30px + var(--window-top));
+ /* #endif */
+ padding: 10px;
+ }
+
+ .uni-fab__circle {
+ position: fixed;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ justify-content: center;
+ align-items: center;
+ width: 55px;
+ height: 55px;
+ background-color: #3c3e49;
+ border-radius: 55px;
+ z-index: 11;
+ }
+
+ .uni-fab__circle--leftBottom {
+ left: 15px;
+ bottom: 30px;
+ /* #ifdef H5 */
+ bottom: calc(30px + var(--window-bottom));
+ /* #endif */
+ }
+
+ .uni-fab__circle--leftTop {
+ left: 15px;
+ top: 40px;
+ /* #ifdef H5 */
+ top: calc(40px + var(--window-top));
+ /* #endif */
+ }
+
+ .uni-fab__circle--rightBottom {
+ right: 15px;
+ bottom: 30px;
+ /* #ifdef H5 */
+ bottom: calc(30px + var(--window-bottom));
+ /* #endif */
+ }
+
+ .uni-fab__circle--rightTop {
+ right: 15px;
+ top: 40px;
+ /* #ifdef H5 */
+ top: calc(40px + var(--window-top));
+ /* #endif */
+ }
+
+ .uni-fab__circle--left {
+ left: 0;
+ }
+
+ .uni-fab__circle--right {
+ right: 0;
+ }
+
+ .uni-fab__circle--top {
+ top: 0;
+ }
+
+ .uni-fab__circle--bottom {
+ bottom: 0;
+ }
+
+ .uni-fab__plus {
+ font-weight: bold;
+ }
+
+ .fab-circle-v {
+ position: absolute;
+ width: 3px;
+ height: 31px;
+ left: 26px;
+ top: 12px;
+ background-color: white;
+ transform: rotate(0deg);
+ transition: transform 0.3s;
+ }
+
+ .fab-circle-h {
+ position: absolute;
+ width: 31px;
+ height: 3px;
+ left: 12px;
+ top: 26px;
+ background-color: white;
+ transform: rotate(0deg);
+ transition: transform 0.3s;
+ }
+
+ .uni-fab__plus--active {
+ transform: rotate(135deg);
+ }
+
+ .uni-fab__content {
+ /* #ifndef APP-NVUE */
+ box-sizing: border-box;
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ border-radius: 55px;
+ overflow: hidden;
+ transition-property: width, height;
+ transition-duration: 0.2s;
+ width: 55px;
+ border-color: #DDDDDD;
+ border-width: 1rpx;
+ border-style: solid;
+ }
+
+ .uni-fab__content--other-platform {
+ border-width: 0px;
+ box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
+ }
+
+ .uni-fab__content--left {
+ justify-content: flex-start;
+ }
+
+ .uni-fab__content--right {
+ justify-content: flex-end;
+ }
+
+ .uni-fab__content--flexDirection {
+ flex-direction: column;
+ justify-content: flex-end;
+ }
+
+ .uni-fab__content--flexDirectionStart {
+ flex-direction: column;
+ justify-content: flex-start;
+ }
+
+ .uni-fab__content--flexDirectionEnd {
+ flex-direction: column;
+ justify-content: flex-end;
+ }
+
+ .uni-fab__item {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 55px;
+ height: 55px;
+ opacity: 0;
+ transition: opacity 0.2s;
+ }
+
+ .uni-fab__item--active {
+ opacity: 1;
+ }
+
+ .uni-fab__item-image {
+ width: 25px;
+ height: 25px;
+ margin-bottom: 3px;
+ }
+
+ .uni-fab__item-text {
+ color: #FFFFFF;
+ font-size: 12px;
+ }
+
+ .uni-fab__item--first {
+ width: 55px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fav/uni-fav.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fav/uni-fav.vue"
new file mode 100644
index 0000000..4e9ec8b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-fav/uni-fav.vue"
@@ -0,0 +1,136 @@
+<template>
+ <view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]" @click="onClick" class="uni-fav">
+ <!-- #ifdef MP-ALIPAY -->
+ <view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
+ <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef MP-ALIPAY -->
+ <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled" v-if="!checked && (star === true || star === 'true')" />
+ <!-- #endif -->
+ <text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentText.contentFav : contentText.contentDefault }}</text>
+ </view>
+</template>
+
+<script>
+ import uniIcons from "../uni-icons/uni-icons.vue";
+
+ /**
+ * Fav 鏀惰棌鎸夐挳
+ * @description 鐢ㄤ簬鏀惰棌鍔熻兘锛屽彲鐐瑰嚮鍒囨崲閫変腑銆佷笉閫変腑鐨勭姸鎬�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=864
+ * @property {Boolean} star = [true|false] 鎸夐挳鏄惁甯︽槦鏄�
+ * @property {String} bgColor 鏈敹钘忔椂鐨勮儗鏅壊
+ * @property {String} bgColorChecked 宸叉敹钘忔椂鐨勮儗鏅壊
+ * @property {String} fgColor 鏈敹钘忔椂鐨勬枃瀛楅鑹�
+ * @property {String} fgColorChecked 宸叉敹钘忔椂鐨勬枃瀛楅鑹�
+ * @property {Boolean} circle = [true|false] 鏄惁涓哄渾瑙�
+ * @property {Boolean} checked = [true|false] 鏄惁涓哄凡鏀惰棌
+ * @property {Object} contentText = [true|false] 鏀惰棌鎸夐挳鏂囧瓧
+ * @event {Function} click 鐐瑰嚮 fav鎸夐挳瑙﹀彂浜嬩欢
+ * @example <uni-fav :checked="true"/>
+ */
+ export default {
+ name: "UniFav",
+ components: {
+ uniIcons
+ },
+ props: {
+ star: {
+ type: [Boolean, String],
+ default: true
+ },
+ bgColor: {
+ type: String,
+ default: "#eeeeee"
+ },
+ fgColor: {
+ type: String,
+ default: "#666666"
+ },
+ bgColorChecked: {
+ type: String,
+ default: "#007aff"
+ },
+ fgColorChecked: {
+ type: String,
+ default: "#FFFFFF"
+ },
+ circle: {
+ type: [Boolean, String],
+ default: false
+ },
+ checked: {
+ type: Boolean,
+ default: false
+ },
+ contentText: {
+ type: Object,
+ default () {
+ return {
+ contentDefault: "鏀惰棌",
+ contentFav: "宸叉敹钘�"
+ };
+ }
+ }
+ },
+ watch: {
+ checked() {
+ if (uni.report) {
+ if (this.checked) {
+ uni.report("鏀惰棌", "鏀惰棌");
+ } else {
+ uni.report("鍙栨秷鏀惰棌", "鍙栨秷鏀惰棌");
+ }
+ }
+ }
+ },
+ methods: {
+ onClick() {
+ this.$emit("click");
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-fav {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 60px;
+ height: 25px;
+ line-height: 25px;
+ text-align: center;
+ border-radius: 3px;
+ }
+
+ .uni-fav--circle {
+ border-radius: 30px;
+ }
+
+ .uni-fav-star {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ height: 25px;
+ line-height: 24px;
+ margin-right: 3px;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-fav-text {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ height: 25px;
+ line-height: 25px;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-goods-nav/uni-goods-nav.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-goods-nav/uni-goods-nav.vue"
new file mode 100644
index 0000000..69e5637
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-goods-nav/uni-goods-nav.vue"
@@ -0,0 +1,230 @@
+<template>
+ <view class="uni-goods-nav">
+ <!-- 搴曢儴鍗犱綅 -->
+ <view class="uni-tab__seat" />
+ <view class="uni-tab__cart-box flex">
+ <view class="flex uni-tab__cart-sub-left">
+ <view v-for="(item,index) in options" :key="index" class="flex uni-tab__cart-button-left uni-tab__shop-cart" @click="onClick(index,item)">
+ <view class="uni-tab__icon">
+ <uni-icons :type="item.icon" size="20" color="#646566"></uni-icons>
+ <!-- <image class="image" :src="item.icon" mode="widthFix" /> -->
+ </view>
+ <text class="uni-tab__text">{{ item.text }}</text>
+ <view class="flex uni-tab__dot-box">
+ <text v-if="item.info" :class="{ 'uni-tab__dots': item.info > 9 }" class="uni-tab__dot " :style="{'backgroundColor':item.infoBackgroundColor?item.infoBackgroundColor:'#ff0000',
+ color:item.infoColor?item.infoColor:'#fff'
+ }">{{ item.info }}</text>
+ </view>
+ </view>
+ </view>
+ <view :class="{'uni-tab__right':fill}" class="flex uni-tab__cart-sub-right ">
+ <view v-for="(item,index) in buttonGroup" :key="index" :style="{backgroundColor:item.backgroundColor,color:item.color}" class="flex uni-tab__cart-button-right" @click="buttonClick(index,item)"><text :style="{color:item.color}" class="uni-tab__cart-button-right-text">{{ item.text }}</text></view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ /**
+ * GoodsNav 鍟嗗搧瀵艰埅
+ * @description 鍟嗗搧鍔犲叆璐墿杞︺�佺珛鍗宠喘涔扮瓑
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=865
+ * @property {Array} options 缁勪欢鍙傛暟
+ * @property {Array} buttonGroup 缁勪欢鎸夐挳缁勫弬鏁�
+ * @property {Boolean} fill = [true | false] 缁勪欢鎸夐挳缁勫弬鏁�
+ * @event {Function} click 宸︿晶鐐瑰嚮浜嬩欢
+ * @event {Function} buttonClick 鍙充晶鎸夐挳缁勭偣鍑讳簨浠�
+ * @example <uni-goods-nav :fill="true" options="" buttonGroup="buttonGroup" @click="" @buttonClick="" />
+ */
+ export default {
+ name: 'UniGoodsNav',
+ components: {
+ uniIcons
+ },
+ props: {
+ options: {
+ type: Array,
+ default () {
+ return [{
+ icon: 'shop',
+ text: '搴楅摵',
+ }, {
+ icon: 'cart',
+ text: '璐墿杞�'
+ }]
+ }
+ },
+ buttonGroup: {
+ type: Array,
+ default () {
+ return [{
+ text: '鍔犲叆璐墿杞�',
+ backgroundColor: '#ffa200',
+ color: '#fff'
+ },
+ {
+ text: '绔嬪嵆璐拱',
+ backgroundColor: '#ff0000',
+ color: '#fff'
+ }
+ ]
+ }
+ },
+ fill: {
+ type: Boolean,
+ default: false
+ }
+ },
+ methods: {
+ onClick(index, item) {
+ this.$emit('click', {
+ index,
+ content: item,
+
+ })
+ },
+ buttonClick(index, item) {
+ if (uni.report) {
+ uni.report(item.text, item.text)
+ }
+ this.$emit('buttonClick', {
+ index,
+ content: item
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .flex {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-goods-nav {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ }
+
+ .uni-tab__cart-box {
+ flex: 1;
+ height: 50px;
+ background-color: #fff;
+ z-index: 900;
+ }
+
+ .uni-tab__cart-sub-left {
+ padding: 0 5px;
+ }
+
+ .uni-tab__cart-sub-right {
+ flex: 1;
+ }
+
+ .uni-tab__right {
+ margin: 5px 0;
+ margin-right: 10px;
+ border-radius: 100px;
+ overflow: hidden;
+ }
+
+ .uni-tab__cart-button-left {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ /* flex: 1;
+ */
+ position: relative;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ margin: 0 10px;
+ }
+
+ .uni-tab__icon {
+ width: 18px;
+ height: 18px;
+ }
+
+ .image {
+ width: 18px;
+ height: 18px;
+ }
+
+ .uni-tab__text {
+ margin-top: 3px;
+ font-size: 12px;
+ color: #646566;
+ }
+
+ .uni-tab__cart-button-right {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex-direction: column;
+ /* #endif */
+ flex: 1;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-tab__cart-button-right-text {
+ font-size: 14px;
+ color: #fff;
+ }
+
+ .uni-tab__cart-button-right:active {
+ opacity: 0.7;
+ }
+
+ .uni-tab__dot-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex-direction: column;
+ /* #endif */
+ position: absolute;
+ right: -2px;
+ top: 2px;
+ justify-content: center;
+ align-items: center;
+ /* width: 0;
+ */
+ /* height: 0;
+ */
+ }
+
+ .uni-tab__dot {
+ /* width: 30rpx;
+ */
+ /* height: 30rpx;
+ */
+ padding: 0 4px;
+ line-height: 15px;
+ color: #ffffff;
+ text-align: center;
+ font-size: 12px;
+ background-color: #ff0000;
+ border-radius: 15px;
+ }
+
+ .uni-tab__dots {
+ padding: 0 4px;
+ /* width: auto;
+ */
+ border-radius: 15px;
+ }
+
+ .uni-tab__color-y {
+ background-color: #ffa200;
+ }
+
+ .uni-tab__color-r {
+ background-color: #ff0000;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item copy.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item copy.vue"
new file mode 100644
index 0000000..d9a5703
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item copy.vue"
@@ -0,0 +1,167 @@
+<template>
+ <view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">
+ <view :class="{ 'uni-grid-item--border': showBorder, 'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }" :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }" class="uni-grid-item__box" @click="_onClick">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * GridItem 瀹牸
+ * @description 瀹牸缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=27
+ * @property {Number} index 瀛愮粍浠剁殑鍞竴鏍囪瘑 锛岀偣鍑籫ird浼氳繑鍥炲綋鍓嶇殑鏍囪瘑
+ */
+ export default {
+ name: 'UniGridItem',
+ inject: ['grid'],
+ props: {
+ index: {
+ type: Number,
+ default: 0
+ }
+ },
+ data() {
+ return {
+ column: 0,
+ showBorder: true,
+ square: true,
+ highlight: true,
+ left: 0,
+ top: 0,
+ openNum: 2,
+ width: 0,
+ borderColor: '#e5e5e5'
+ }
+ },
+ created() {
+ this.column = this.grid.column
+ this.showBorder = this.grid.showBorder
+ this.square = this.grid.square
+ this.highlight = this.grid.highlight
+ this.top = this.hor === 0 ? this.grid.hor : this.hor
+ this.left = this.ver === 0 ? this.grid.ver : this.ver
+ this.borderColor = this.grid.borderColor
+ this.grid.children.push(this)
+ // this.grid.init()
+ this.width = this.grid.width
+ },
+ beforeDestroy() {
+ this.grid.children.forEach((item, index) => {
+ if (item === this) {
+ this.grid.children.splice(index, 1)
+ }
+ })
+ },
+ methods: {
+ _onClick() {
+ this.grid.change({
+ detail: {
+ index: this.index
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-grid-item {
+ /* #ifndef APP-NVUE */
+ height: 100%;
+ display: flex;
+ /* #endif */
+ }
+
+ .uni-grid-item__box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ /* #endif */
+ position: relative;
+ flex: 1;
+ flex-direction: column;
+ /* justify-content: center;
+ */
+ /* align-items: center;
+ */
+ }
+
+ .uni-grid-item--border {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-bottom-color: #e5e5e5;
+ border-bottom-style: solid;
+ border-bottom-width: 0.5px;
+ border-right-color: #e5e5e5;
+ border-right-style: solid;
+ border-right-width: 0.5px;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ z-index: 0;
+ /* #endif */
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-grid-item--border:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ top: 0;
+ right: 0;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ border-bottom-color: inherit;
+ border-right-style: solid;
+ border-right-width: 1px;
+ border-right-color: inherit;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: left top;
+ z-index: -1;
+ }
+
+ /* #endif */
+
+ .uni-grid-item--border-top {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-top-color: #e5e5e5;
+ border-top-style: solid;
+ border-top-width: 0.5px;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ height: 100%;
+ box-sizing: border-box;
+ z-index: 0;
+ /* #endif */
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-grid-item--border-top:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ top: 0;
+ right: 0;
+ border-top-style: solid;
+ border-top-width: 1px;
+ border-top-color: inherit;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: left top;
+ z-index: -1;
+ }
+
+ /* #endif */
+ .uni-highlight:active {
+ background-color: #f1f1f1;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item.vue"
new file mode 100644
index 0000000..5ab7063
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid-item/uni-grid-item.vue"
@@ -0,0 +1,125 @@
+<template>
+ <view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">
+ <view :class="{ 'uni-grid-item--border': showBorder, 'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }" :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }" class="uni-grid-item__box" @click="_onClick">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * GridItem 瀹牸
+ * @description 瀹牸缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=27
+ * @property {Number} index 瀛愮粍浠剁殑鍞竴鏍囪瘑 锛岀偣鍑籫ird浼氳繑鍥炲綋鍓嶇殑鏍囪瘑
+ */
+ export default {
+ name: 'UniGridItem',
+ inject: ['grid'],
+ props: {
+ index: {
+ type: Number,
+ default: 0
+ }
+ },
+ data() {
+ return {
+ column: 0,
+ showBorder: true,
+ square: true,
+ highlight: true,
+ left: 0,
+ top: 0,
+ openNum: 2,
+ width: 0,
+ borderColor: '#e5e5e5'
+ }
+ },
+ created() {
+ this.column = this.grid.column
+ this.showBorder = this.grid.showBorder
+ this.square = this.grid.square
+ this.highlight = this.grid.highlight
+ this.top = this.hor === 0 ? this.grid.hor : this.hor
+ this.left = this.ver === 0 ? this.grid.ver : this.ver
+ this.borderColor = this.grid.borderColor
+ this.grid.children.push(this)
+ // this.grid.init()
+ this.width = this.grid.width
+ },
+ beforeDestroy() {
+ this.grid.children.forEach((item, index) => {
+ if (item === this) {
+ this.grid.children.splice(index, 1)
+ }
+ })
+ },
+ methods: {
+ _onClick() {
+ this.grid.change({
+ detail: {
+ index: this.index
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-grid-item {
+ /* #ifndef APP-NVUE */
+ height: 100%;
+ display: flex;
+ /* #endif */
+ }
+
+ .uni-grid-item__box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ /* #endif */
+ position: relative;
+ flex: 1;
+ flex-direction: column;
+ /* justify-content: center;
+ */
+ /* align-items: center;
+ */
+ }
+
+ .uni-grid-item--border {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-bottom-color: #e5e5e5;
+ border-bottom-style: solid;
+ border-bottom-width: 0.5px;
+ border-right-color: #e5e5e5;
+ border-right-style: solid;
+ border-right-width: 0.5px;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ z-index: 0;
+ border-bottom: 1px #e5e5e5 solid;
+ border-right: 1px #e5e5e5 solid;
+ /* #endif */
+ }
+
+ .uni-grid-item--border-top {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-top-color: #e5e5e5;
+ border-top-style: solid;
+ border-top-width: 0.5px;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ border-top: 1px #e5e5e5 solid;
+ z-index: 0;
+ /* #endif */
+ }
+
+
+ .uni-highlight:active {
+ background-color: #f1f1f1;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid/uni-grid.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid/uni-grid.vue"
new file mode 100644
index 0000000..1355b4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-grid/uni-grid.vue"
@@ -0,0 +1,142 @@
+<template>
+ <view class="uni-grid-wrap">
+ <view :id="elId" ref="uni-grid" class="uni-grid" :class="{ 'uni-grid--border': showBorder }" :style="{ 'border-left-color':borderColor}">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ // #ifdef APP-NVUE
+ const dom = uni.requireNativePlugin('dom');
+ // #endif
+
+ /**
+ * Grid 瀹牸
+ * @description 瀹牸缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=27
+ * @property {Number} column 姣忓垪鏄剧ず涓暟
+ * @property {String} borderColor 杈规棰滆壊
+ * @property {Boolean} showBorder 鏄惁鏄剧ず杈规
+ * @property {Boolean} square 鏄惁鏂瑰舰鏄剧ず
+ * @property {Boolean} Boolean 鐐瑰嚮鑳屾櫙鏄惁楂樹寒
+ * @event {Function} change 鐐瑰嚮 grid 瑙﹀彂锛宔={detail:{index:0}}锛宨ndex 涓哄綋鍓嶇偣鍑� gird 涓嬫爣
+ */
+ export default {
+ name: 'UniGrid',
+ props: {
+ // 姣忓垪鏄剧ず涓暟
+ column: {
+ type: Number,
+ default: 3
+ },
+ // 鏄惁鏄剧ず杈规
+ showBorder: {
+ type: Boolean,
+ default: true
+ },
+ // 杈规棰滆壊
+ borderColor: {
+ type: String,
+ default: '#e5e5e5'
+ },
+ // 鏄惁姝f柟褰㈡樉绀�,榛樿涓� true
+ square: {
+ type: Boolean,
+ default: true
+ },
+ highlight: {
+ type: Boolean,
+ default: true
+ }
+ },
+ provide() {
+ return {
+ grid: this
+ }
+ },
+ data() {
+ const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+ return {
+ elId,
+ width: 0
+ }
+ },
+ created() {
+ this.children = []
+ },
+ mounted() {
+ this.$nextTick(() => {
+ this.init()
+ })
+ },
+ methods: {
+ init() {
+ setTimeout(() => {
+ this._getSize((width) => {
+ this.children.forEach((item, index) => {
+ item.width = width
+ })
+ })
+ }, 50)
+ },
+ change(e) {
+ this.$emit('change', e)
+ },
+ _getSize(fn) {
+ // #ifndef APP-NVUE
+ uni.createSelectorQuery()
+ .in(this)
+ .select(`#${this.elId}`)
+ .boundingClientRect()
+ .exec(ret => {
+ this.width = parseInt((ret[0].width - 1) / this.column) + 'px'
+ fn(this.width)
+ })
+ // #endif
+ // #ifdef APP-NVUE
+ dom.getComponentRect(this.$refs['uni-grid'], (ret) => {
+ this.width = parseInt((ret.size.width - 1) / this.column) + 'px'
+ fn(this.width)
+ })
+ // #endif
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-grid-wrap {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: column;
+ /* #ifdef H5 */
+ width: 100%;
+ /* #endif */
+ }
+
+ .uni-grid {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ /* flex: 1;
+ */
+ flex-direction: row;
+ flex-wrap: wrap;
+ }
+
+ .uni-grid--border {
+ position: relative;
+ /* #ifdef APP-NVUE */
+ border-left-color: #e5e5e5;
+ border-left-style: solid;
+ border-left-width: 0.5px;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ z-index: 1;
+ border-left: 1px #e5e5e5 solid;
+ /* #endif */
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-icons/uni-icons.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-icons/uni-icons.vue"
new file mode 100644
index 0000000..c1f1227
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-icons/uni-icons.vue"
@@ -0,0 +1,67 @@
+<template>
+ <text :style="{ color: color, 'font-size': size + 'px' }" class="uni-icons" @click="_onClick">{{icons[type]}}</text>
+</template>
+
+<script>
+ import icons from './icons.js';
+ // #ifdef APP-NVUE
+ var domModule = weex.requireModule('dom');
+ domModule.addRule('fontFace', {
+ 'fontFamily': "uniicons",
+ 'src': "url('data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYoJ48wAAGf4AAAAHEdERUYAJwCMAABn2AAAAB5PUy8yWXpc3QAAAVgAAABgY21hcB9SCa8AAAPQAAADImdhc3D//wADAABn0AAAAAhnbHlmWWfecQAACAQAAFYcaGVhZBehAMAAAADcAAAANmhoZWEH+gSHAAABFAAAACRobXR4D3IujAAAAbgAAAIYbG9jYa77miAAAAb0AAABDm1heHABnACoAAABOAAAACBuYW1lj4vbUwAAXiAAAAM5cG9zdH/g11YAAGFcAAAGcwABAAAAAQAAGbvTeF8PPPUACwQAAAAAANoxE3MAAAAA2jSpUAAA/5UEHANrAAAACAACAAAAAAAAAAEAAAOA/4AAXASAAAAAAAQcAAEAAAAAAAAAAAAAAAAAAACGAAEAAACGAJwADAAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAwQBAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUGZFZABAAB3o6QOA/4AAXAOAAIAAAAABAAAAAAIAAs0AAAAgAAEEAAAAAAAAAAFVAAAEAABLBAAAiQQAACEEAABLBAAAlwQAACkEAABdBAAAJwQAACgEAAAABAAAcwQAACcEAAAoBAAAAAQAACAEgABVBAAAegQAACgEAACcBAAAkgQAAAgEAADNBAAAyQQAAN0EAADJBAAAeAQAAAYEAABCBAAAVgQAAGoEAACEBAAAhAQAAEsEAAAxBAAAMQQAAEsEAAAcBAAASwQAAEsEAABLBAAASwQAAEsEAAAcBAAASwQAAEsEAABLBAAASQQAAOMEAAEABAAASwQAABwEAAAdBAAAbQQAAJ8EAAFABAABQAQAALgEAAALBAAASwQAAFYEAAA/BAAASwQAAEsEAADRBAAAZAQAAIMEAAALBAAAVgQAAEsEAABLBAAAZAQAAFAEAABRBAAAkgQAAAQEAABqBAAAAAQAAIwEAACMBAABLwQAAS4EAAC7BAAAuwQAAHIEAAByBAABHgQAAA0EAAA5BAAAQAQAADEEAAAxBAAACAQAABEEAAASBAAASQQAAEsEAAAABAAAAAQAAAAEAACDBAAAVQQAADwEAABVBAAAVgQAADwEAABWBAAAKAQAACYEAAAmBAAA1gQAAEEEAAFfBAAAZwQAAEsEAAA/BAAABgQAAAAEAAAABAAASwQAAHgEAAAABAAAhAQAAJIEAACEBAAARQQAAIQEEgAcBBIAHAQSABwEEgAcAVUAAAAAAAMAAAADAAAAHAABAAAAAAIcAAMAAQAAABwABAIAAAAAfABAAAUAPAAAAB3hAuEy4gPiM+Jk4wPjM+Ng42TkCeQR5DTkOeRC5GPkZuRo5HLlCOUw5TLlNeU35WDlY+Vl5WjliOWQ5gnmEufW59nn7+f15/roAegl6EDoR+hO6FboXOhe6GToaOhu6Hfoe+iE6JLooeik6K/osei/6Nzo5ujp//8AAAAAAB3hAOEw4gDiMOJg4wDjMuNg42PkAOQQ5DTkN+RA5GDkZeRo5HDlAOUw5TLlNOU35WDlYuVl5WflgOWQ5gnmEufW59nn7+f05/roAegi6DvoR+hN6FboXOhe6GToaOhu6HfoeuiE6JLooeik6K/osei/6Nzo5Ojp//8AAf/kHwMe1h4JHd0dsR0WHOgcvBy6HB8cGRv3G/Ub7xvSG9Eb0BvJGzwbFRsUGxMbEhrqGuka6BrnGtAayRpRGkkYhhiEGG8YaxhnGGEYQRgsGCYYIRgaGBUYFBgPGAwYBxf/F/0X9RfoF9oX2BfOF80XwBekF50XmwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEoAmgEgAWIBkAH4AnACwgMUA5YD3AQkBE4EoAU0Ba4GPgauBvQHVgfsCFAIigjgCRIJmgnkCkAKigsUC2oLvgwUDHQM1A1ADaYN+A42DmQOqA8CDzIPcA+aD9oQEhBAEGoQsBEAEfoSNhJmEnoSjhK6ExwTaBQuFIAU2hVIFYwV6BY+FpwXChdSF6wX4Bh4GN4ZHhmAGd4aGho8GmIahBqqGtwbDhtAG3IbhBwMHLgdOh1wHaYeEB5oHsgfFB8uH5QgAiBSIIog7iGgIgQiMCLiIzQjhCPUJDwkbCSmJNolNCViJZwl5iY+Jpgm0CdCJ64n+CgqKHIowik6KcQqJCquKw4rDgAAAAMAS//LA7UDNQALAB0AKQAABT4BNy4BJw4BBx4BEw4BBy4BJz4BNx4BFxQGBy4BJz4BNy4BJw4BBx4BAgC4+AUF+Li59wUF+LhijCIrMAEEzJybzQQxKyKMYj9TAQJSPz9TAQJSNQX4uLj4BQX4uLj4AR4BOScwfEebzQQEzZtHfDEoOUoBWkZDWgICWkNGWQAAAAAEAIn/8gN3Aw0ACwAXACIALQAAAT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BASEWJy4BJw4BBwY3Bjc0NjceARUWJwIAT2gCAmhPTmkCAmlOMEMBAUIxMkEBAUL+wgIaagEBxbCwxQEBVhEBnZSUnQEQAYACclVUbgICb1RVcT4CTDo5SgEBSTk6Tf4xAUZbsQYGsVtGQgENO4kGBok7DQEABQAh/6wD4ANUAAsAFwAsADgAVQAAAT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BByIGBxYXNjceARcWJyEGByEWJy4BAT4BNy4BJw4BBx4BNyImPQEjLgE0NjsBNTQ2MhYdATMyFhQGByMVFAYCaU5pAgJoT05pAgJpTjFCAQFCMTFCAQFCMTplKRsVP1mUnAEBEf6FAQoBcmoBAsT94lt8AgJ7XFx7AwN7XAsRUgsPDwtSERcQUgsPDwtSEAHHAnJVVW0CAm9TVXI/AUw7OUkBAUk5Ok13GRYWHB8BBok7DQEhIAFGW7H+IQJ8XFx7AgJ7XF17Sg4NWAEPFg9ZDA4ODFkPFg8BWA0OAAAAAAMAS//LA7UDNQALABcAJAAABT4BNy4BJw4BBx4BEx4BFw4BBy4BJz4BARcOASImJzc+ATceAQIAuPgFBfi4ufcFBfi4P1ICAVM/P1MBAVMBRAEziJaJMgEchmNjhTUF+Li4+AUF+Li4+AKnAlpDRloBAllGQ1r+DQU1Ojo1BSlBAgJBAAIAl///A2kDAQALABgAAAE+ATcuAScOAQceAQMhMjY1LgEnDgEHFBYCAEdjAgJjR0diAgJixgIaMioCv6iovwIqAYwBalJRZgEBZ1FRav5yHB1ZqAYGqFkdHAAABAAp/7ID2ANOAAsAGgAmAEMAAAE+ATcuAScOAQceARciBgceARUUByEyNicuAQE+ATcuAScOAQceATciJic1IyImNDY7ATU+ATIWFxUzMhYUBisBFQ4BAm9HYgICYkdHYgICYkc3XycvNggBbTIqAQG//etcewMCfFxcewICe10MEAFRDA8PDFEBEBcQAVEMDg4MUQEQAdkCaVJRZgEBZ1FRaU8YFCZuQSAfHRxZqP4sAnxbXHwCAnxcXHtKDgxZDxcPWQwODgxZDxcPWQwOAAIAXf/cA6QDJAAnAE4AAAUWNj8BNic2LwEmIg8BBicuAycmPwE+AS8BJiMmDwEOARUUHgI3Ii4CJzY3Njc+AR8BFhQPAQYUFx4DFxYyPwE2Mh8BFgYPAQYCzDdQIQknAQE5fR0/GyEODxI6MiwNCg4hGgEVVycuKSsMJCBu0NRdU8CrbwEBMgQFEycMUwcKJhYQEzc0QhoWMhYmChUKfRMBEgYuIwEhJQosKC8oVhQaIQ4KDDIyMxUODiEbPx19OAEnCSBQN13V0G5Ca6vEVEgtAwQQAhN9ChUKJhcxFho+NDoUEBYmCgZUDCcUCDEAAAUAJwAPA9kC8QANABcAHQAhAC4AADchMjY1ETQjISIGFREUCQE2MyEyFwEGIgURNRcHJgERJzcBIiclFxY3Fj8BBQYjrQKyOz+G/U46QAGm/rwOFAKqFA/+vRsy/oD39gEDMPX1/RMSDQEAHCwtLC0cAQAOEw9CQwHZhEJC/ieFAVsBQAYH/sEbuwHZBPLzBAHc/iLx8f3gBv0bKwEBKxv9BgAAAgAo/74D2AM5ABkAMAAAJTYXFjM+ATcuAScOAQcUFh8BMiMXHgEXNzYBNiQ3FgQXBgQHIicxJgYHBj4BLwEuAQFlKSsjJK/kBATkr6/kBEQ/EgECBxkZARoM/ssFAQrJyQEKBQX+9skrKCtZaC1EIx0XSlVkDgkFBLyJibwEBLyJRnwvDQQTLxsNBgFMqOAEBOCoqd8FBghFHwxHVhkQN5kAAAADAAD/tQQAAuUAJwBAAFkAABcyNj8BFhczFx4BMz4BPQEzPgE3NS4BJyM1LgEnIQ4BBxEeARczFRQ3LgErASImJxE+ATMhMhYXFSMOAQcVFBcHBScuASsBIiYnNT4BMyEyFhcVDgErASIGB/ENGRB4J0t7dxAWDRIUD0RQAQFQRDgBUEn+AkdTAQFTRy82AQ8MRjA0AQE0MAH3MDQB6UdNAQeDAiZyChIOdi0xAQExLQFULTEBATEtJgwPASMMD2srAWYNDwEXFVUBTEfSR0wBG0lPAQFPSf63SU8BYSqjEA4zMgFFMjMzMhkBTEfSHRh5J2cJBzAv0C8wMC/QLzAODwAAAAEAc//xA40DDwAsAAAlHgEXFjc+ATU0Ji8BJiMGDwEGIicuAycmND8BNjc0LwEmByIGBw4BFR4BAUxf0V5TOxITDQ+EHRccHB8HFAcUPUEzCwUGHh4BFVwYJBUqEx8dAnjNXnsCAT8TKxYQHgtdFQEeHgYEDDNBPRQIEgcgHBwXHoEfARMSHkkpXs8ABAAnAA8D2QLxAAoAEQAYACQAAAEWNwEmIyEiBwEWBQkBBhURFAU2NRE0JwkBITI3AQcGIi8BARYCARobAXQYP/1ONxUBdxv+SwEv/tAKA6gKCf7R/gwCsjYV/swdKlwqHf7MGAFPARwBcRYV/o4c+gErASwSLP4nLhITLQHZKxL+1f6QFAEyHCoqHP7PFQAAAQAo/74D2AM5ABYAABM2JDcWBBcGBAciJzEmBgcGPgEvAS4BKAUBCsnJAQoFBf72ySsoK1loLUQjHRdKVQGtqOAEBOCoqd8FBghFHwxHVhkQN5kAAgAA/7IEAALtABwANQAAFzI2PwEuASc1PgE7AScuASchDgEHER4BFzMVFBYFPgE9ATM+ATc1LgEnIQ4BHQEUFhczFx4B5gsSDWoQFQEBXlT+AQRHPv4PP0oBAUo/PBECWQ8RJj9KAQFKP/6aQkhIQnODDRIbCwxiCy4s8FRdDjhCAQFGQf6cQksBaREUMwEUEGoBS0HdQUYBAUZB3UFLAXcMDAAHACAAGgP6AzYACwAgACwAOABEAE0AVgAAATYmBwYmNzYWBwYmAS4BJzQ2Nz4BBwY2NzYWBwYWFxYCAy4BBw4BFx4BNz4BAwYWNzYWBwYWNzYmAQ4BJy4BNz4BFx4BIyYOAR4BPgEmNyYOAR4BPgEmAxsJLCMgCx5JWRMNNf6enPEGS0SU0yEEGANzhCIECQu3zhoLrXp6mAULrXp6mBkjDiVqgxwGPQ8nuP7XGnU9OioYG2w7PDG5EygXCSUqGAsqBw8IAw8QCAQCEyMxBgM2CwxlRh0R/iYBh3g/ikSNBIYRBQEvMF8NCQNN/ssBAVBaCg56UVBbCg96AkIMPwMRkGkkFCGTzP2hODESFV80MzAOEV0IDiUkEQ4mJCEDBg4NBwYPDQAAAAYAVf/2BBwDCgAWAB8AKAA5AEMATQAAATIXLgEnDgEHFBYXBzceATMyNyY1PgEnMhYUBiImNDYHIiY0NjIWFAYBLgEnDgEHHgEXMjY3Fyc+ASUiJjQ2Nx4BFAYzIiY0NjceARQGAuMREBm/gZHBBEhBIncgOR8QEAoCozsUFxcoHh7bFB8fJxcXAs0EqHd9owMDo30ZNBpeGjRD/oAOFBQOExcXqQ4UFQ0TFxcCGwJqhQIDo31GdC1nPAcKASImc5hgFycXFycXVRcnFxcnF/7uaYwDA4xpaowDCwc0VidkZRUaFAEBFBsUFRoUAQEUGxQAAAAJAHr/+gOGAwYABwAQABgAIAAoAEAASABQAFgAACUOAR8BPgE3JRUWFzI3JyYGEyIHFxY3NSYFBgcUFzc2JzcOAQchMjYnBxUUHwEWOwEyPwE2PQE0LwEmKwEiDwEGJQcGFzM2NzQDERQWPwEuAQEeARcRLgEHAfUCAgKQPGMj/hRNWigl7QIFpycl7gUBTf5FJQEI7gMGETxjIwFRAgICtgJeAgOFAwJeAgJeAgOFAwJeAgIm7QQGzCUBrQUCkBZN/YQVTjUBBAKoAQQCkBVNNUXNJQEI7QICAhcH7gMFzSXdTVsoJe4FAsgWTTUFAp2EAwJeAgJeAgOEBAJdAwNdAwftBQJNWycBHf6wAgICkDxj/lw8YyMBUQICAgAAAAAFACj/xQPYAzsAGAAxADoAQwBMAAAFMjY/ASE+ATURNCYjISIGFREUFhczFRQWNzU0JisBIiY1ETQ2MyEyFhURFAYjISIGBwMuASIGFBYyNjcuASIGFBYyNjc0JiIGFBYyNgEvEBsTlAETYGRkYP3YYGRkYBUYKA8RNUE+PkECKEE+PkH+6hEXDFEBIDAgIDAgxAEgMCAgMCDEITAgIDAhOxERgwFlXwFIX2VlX/64X2UBbxkdTnwSD0A/AUg/QEA//rg/QAgNAScYICAwISEYGCAgMCEhGBggIDAhIQAAAAEAnP/ZA2QDJgApAAAlLgEnFAYHHgEHBiYnDgEnJjY3LgE1DgEHIiY3Nj8BJjY3HgEHFxYXFgYDWhE2AykrGDsIE8A0NMATCDsYKykDNhEIAhoMECYFgI2MgAQmEAwaAnEETQYoWiYHHhQOAgYGAg4UHgcmWigGTQROVigoX5TKBATIll8oKFZOAAAABACSAKUDbgJbAA8AHwAtAD8AABMVHgEzITI2PQE0JiMhIgYnITIWFREUBiMhIiYnET4BBRUUHwEWNjc1LgEPAQYnNz4BHgEVERQOASYvASY9ATTbARQQASUPFRUP/tsQFAEBbh4rKx7+kh4qAQEqAjEHJAkUAQEUCSQHKW0JFBQLCxQUCW0OAe7cDxUVD9wPFRVeKx7+3B4rKx4BJB4rtUwJBR4GCguGCwoGHgUlWAYDCRIL/uILEgkCB1gLEXARAAAAAAUACP/nA/gDGQAbADsARwBVAGQAABchNjcRJisBIiYvAS4BKwEiBg8BDgErASIHERY3IiY1ETQ2OwEyNj8BPgE7ATIWHwEeATsBMhYVERQGIyU+ATcuAScOAQceAQEyNjc0LgEiDgEVFBYXAS4BJz4BNzIeAhQOAo8C4oYBAYZkGBoNIw8nIasgKA8jDRoYYYYBAYcgIyMgcR0kECIRHhx/HB4RIhAkHXQgIyMg/pBkgwMDg2RkgwMDgwGYFh4BDhkcGQ4eF/7MSF8CAl9IIj0wGhowPRkBhAHBhA0QJhITExImEA2E/j+ERCIiAbkiIQ4SJRQPDxQlEg4hIv5HIiJEA4RkZIQCAoRkZIQBUR4WDxgODhgPFh4B/u8BYEhIXwIZMD5EPjAZAAAAAAMAzf+1AzMDSwANABkAQgAAAREuAScOAQcRHgEXPgEnFAYiJjURNDYyFhcBIgYUFjMhMjY0JisBNT4BNzU0JiIGHQEOAQcuASc1NCYiBgcVHgEXFQKcAVVGRlUBAVVGRlVAMVMyMlMxAf7lDhISDgF/DRMTDaB9lAITGxMBgXBvggETGhMBApR9AZUBDktbAgJbS/7yS1wBAVxLMDg4MAEOMDc3MP1TExsTExsTZAyggFcNExMNVW+CAgKCb1UNExMNV4CgDGQAAgDJ/8QDNwM3ABAAHwAAAS4BJw4BBx4BHwEWMj8BPgElPgE3HgEXBgIHBiInJgIC7gKCamqCAgJsWQoLJAsKWWz93QOwhISwAwm4SRQzE0m4AduBkQEBkYFL0nUODQ0OddNKprUBAbWmg/7YVhYWVQEpAAACAN3/xAMjAzwADQA2AAABES4BJw4BBxEeARc+AQEOARQWMyEyNjQmJyM1PgE3NTQmIgYHFQ4BBy4BJzUuASIGHQEeARcVAoIBRzo6RwEBRzo6R/63DRMTDQGQDRMTDah3iwESGhIBAX1mZn0BARIaEgGLdgGAATI9TAEBTD3+zjxNAQFN/sEBExoTExoTAV4MmndlDRISDWVkfAICfGRlDRISDWV3mgxeAAAAAgDJ/8QDNwM3AA4AGgAAEz4BNx4BFwYCBwYiJyYCJT4BNy4BJw4BBx4ByQOwhISwAwm4SRQzE0m4AS4vPgEBPi8vPgEBPgHbprUBAbWmg/7YVhYWVQEpOgE+Ly8+AQE+Ly8+AAUAeP/AA4cDQAARAB0APgBKAFkAAAEeAR0BFxEuAScOAQ8BFzU+AQEWMjY0JwEmIgYUFxMiBhQWMyEyNjQmKwE1NjcnBgcuASc1NCYiBh0BHgEXFQE0JiIGBxUUBxc2NQUyNjcnBiMiJic1JxUeAQHoJSxCAk9COkwJAT8BLAGLChsTCv00ChsUCp4NExMNAZANExMNp1I7LjVLZnwCEhsSAop3AUMSGhIBBTUP/tUZJA41Bg8iJgFCAU0DAgEzJ85CAQ5EVgEBQzYNPiwnM/0dChMbCgLNChQbCv0WExoTExoTXggqLiQBAn1kZQ0SEg1ld5sMXgHhDRISDWUZGTMuN5MJCTQHKSIaQ1RKSQAAAwAG//UD+gMLAAwAHwArAAAXITI3ESYnISIHERYzAS4BDwEnJiciDwERNjMhMhYVESU+ATcuAScOAQceAY0C5oYBAYb9GoYBAYYCQR1HHcFQGx4dGoABQQLkICL9kio5AQE5Kis5AQE5CoQCDIQBhf30hQGMGgEbrUgYARhzAdhDISL+J9MBOiorOQICOSsqOQAAAAQAQv/RA74DLwAbACUALAA4AAAFMj8BNjURJiciDwEnJiIPAQYVERQWMzI/ARcWJSI1ETQ/AREHBgUmLwERHwETETc2NxYXERQPAQYCjRgT4SUBMA8U5OkTMBTeJhoXDxXZ7Rj+GAYOwMIDAdYJCboNv0XCBAIFAQ6sCi8LfxUrAlIwAQt+jgwMfxUq/a4YGgx1hQxpBwITDwlv/cxrAQ4FBWkCMgh0/c8CNWkCAQEG/e0QCGQGAAADAFb/zQOmAzAACQARACkAAAE3NjQvASYGDwEBNwEnAQcGFgMhMjY3EQcRDgEjISInETYzITchIgcRFgN8HwsLCgobCx/+TVMBezv+hicCCasB9zo/AUUBHhf+C0ECAkEBc0X+R4YBAQLKHwwbCwsKAgof/gckAXo6/oZQBgr+w0NCAd1F/mshIkMB50NFhP4ShQAABgBq/6EDlgNfAB8AKQAzAEAATQBZAAAlEzMyNjQmJyM1NCYnIw4BBxUjDgEUFjsBEx4BFyE+AQE0NjsBMhYdASMDLgEnAyEDDgEHJzI2NxM0JiIGBwMUFiMyNjUDNCYiBhUTHgE3ETQmIgYHER4BMjYDLh4rDRISDbw5MqEyOAG6DRMTDSsdAzgvAYkuOP5eGBSWFBjuRxMYAR4CDxwBGBQ/Cw4BDA4VDgENDvMLDg0PFQ4NAQ2kDxUPAQEPFQ8GAnMSGxMBQC42AQE2LkABEhwS/Y0vNQEBNQMfEhcXEjz9JwEYEwJs/ZQTGAFMDw0BxA0PDwz+OwwQEAwBxQwPDw3+PA0PHAHFDA8PDP47DBAQAAAAAgCE/5wDfQNkABoAOAAAJTI2NREnFxYyNjQvASYiDwEOARYyPwEHERQWAyE2JxE2JyMVMzIWFREUBiMhJicRNjczNSMiFREUAgAOFAJdChsSCpEMGgyRCQERHApeAxToAeyHAQGHd3YgIiIg/hdCAQFCdniG7BMOAbhAYwoQGwmMDAyMCRoRCmRB/kgOE/6wAYQBp4QBRSIi/mEiIgFDAZ9DAUWF/lmFAAAAAAIAhP+xA30DTgAaADgAACUyPwE2NCYiDwE3ETQmIgYVERcnJiIGFh8BFgMhMicRNicjFTMyFhURFAYjISInETY3MzUjBhURFAIADQyRChIbCl0CFBwUA14KHBEBCpAM6QHshwEBh3x7ICIiIP4XQgEBQnp8hssMiwobEApkQAHEDhMTDv48QGQKEBsKiw3+6IQBu4QBRSMh/k0iIUMBs0MBRQGE/kWFAAMAS//LA7UDNQALABcANAAABT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BJTI/ARcWMjY0LwE3NjQmIg8BJyYiBhQfAQcGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPO/tIPCnp5Ch4TCnp7ChQcCnt7ChwUCnp6ChQ1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMyyC3p6ChMeCXp7ChwUCnt6ChMdCnp6CR4TAAACADH/9gPPAwkAIAA+AAAFMjY3ATY0JwEuASMiBh0BIwYCFx4BMxY2Nz4BFzMVFBY3Ij0BNAcjDgEHBiI1PgE3MxY9ATQ2MhcBFhQHAQYCKw8cEAFSFxf+rhIZDxccDebVAQEZEg4bCzinew0cLwYOOpnCJQIFAqzZOg4DBwMBMQUF/s8ECQ4OAT8YLBgBPBAPHheiAv7w8BwdAQ0TaFABpBYcXAamDwEBX1IEBZ7xBwEPqgMDA/7bBAgE/t8EAAACADH/9gPPAwkAIAA+AAAFMjY9ATM2FhceATcyNjc2AicjNTQmIyIGBwEGFBcBHgEnIicBJjQ3ATYyFh0BFDczHgEXFCInLgEnIyYdARQB1RYcDXunNwwbDhIZAQHV5g0cFw8aEf6uFxcBUhAbCQME/s8FBQExAwcDDjrZrAIGASXCmToOCRwWpAFQZxQNAR0c8AEQA6IWHg8Q/sQYLBj+wQ4OXAQBIQQIBAElAwMDqg8BB/GfBARSXwEBD6YGAAADAEv/ywO1AzUACwAXAEMAAAU+ATcuAScOAQceATcuASc+ATceARcOAQEeARc+ATc0JiIGFQ4BBy4BJz4BNzIXBwYeATI/ATY0LwEmIgYUHwEmIw4BAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzv6lAmxSUWsCERgRAko4OUoCAko5CAcqCAEOFwhTCAhSCBgOBx4GBkpqNQX4uLj4BQX4uLj4RATMnJvNBATNm5zMAVRSbQICbVEMEBAMOUoCAko5OEoCASkIGA8IUwgXCVQIEBcIHwECaQACABz/sQPkA0kAGQA9AAAXFj8BFxY2JwM3NiYjBQMmIgcDJSIGHwEDBjciPwE2LwEmNjMFFj8BNjIfARY3JTIWDwEGHwEWBi8BJg8BBtsaKOPjKDUQWeUoFDL+51UPQRBV/ucxFSnlWhBZAQFVCRbVAwEEAQMaCEoCAwFKCBoBBAMBA9UWClUBAgPOFhXPAjwTHqamHicuAQukHD8CAQwvL/70Aj8cpP71LkEE9RkPkwIDBQEa+AQE+BoBBQMCkw8Z9QQCA50QEJ4CAAADAEv/ywO1AzUACwAXADQAAAU+ATcuAScOAQceATcuASc+ATceARcOASc+ATc1MzI2NCYnIzUuASIGHQEjDgEUFjsBFRQWAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzpwREwGGEhYVE4YBEyIShhMWFxKGEjUF+Li4+AUF+Li4+EQEzJybzQQEzZuczJwBFRN/EiMSAYYTFhYThgESIxJ/EhYAAAMAS//LA7UDNQALABcAIwAABT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BASEyNjQmIyEiBhQWAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzv64AVkSFhUT/qcTFhc1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMwBRBIiExMiEgACAEv/ywO1AzUACwAXAAAFPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgECALj4BQX4uLn3BQX4uJvNBATMnJvNBAPONQX4uLj4BQX4uLj4RATMnJvNBATNm5zMAAAAAAIAS//LA7UDNQALACgAAAU+ATcuAScOAQceATciJjQ/AScmNDYyHwE3Nh4CDwEXFhQGIi8BBwYCALj4BQX4uLn3BQX4Hg8VC4CACxUeCoGBCx0UAQuAgAoVHgqAgAs1Bfi4uPgFBfi4uPjyFR4KgYAKHhQKgIAMARQeCoGACh8VCoGBCgAAAAACAEv/ywO1AzUACwA3AAAFPgE3LgEnDgEHHgEDPgE3MhcnJjQ2Mh8BHgEPAQYiJjQ/ASYHDgEHHgEXPgE3NDYyFhUOAQcuAQIAuPgFBfi4ufcFBfgLA2tMBgYfBw8YCFQHAQhUCRcPCCoHCDpMAQFMOjlLAhEZEQJtUlNuNQX4uLj4BQX4uLj4AZ5SawIBHwgYEAhWCBgIVAgPGAgqAQEBSzk6SwICSzoMEREMU24CAm8AAAABABz/sQPkA0kAGQAAFxY/ARcWNicDNzYmIwUDJiIHAyUiBh8BAwbbGijj4yg1EFnlKBQy/udVD0EQVf7nMRUp5VoQPBMepqYeJy4BC6QcPwIBDC8v/vQCPxyk/vUuAAACAEv/ywO1AzUACwAoAAAFPgE3LgEnDgEHHgE3IiY9ASMiJjQ2OwE1NDYyFh0BMzIWDgErARUUBgIAuPgFBfi4ufcFBfi3EhONExcWFI0TJBSNFBcBFhSNFDUF+Li4+AUF+Li4+NsXE4UTJROOExcWFI4TJROFFBYAAAAAAgBL/8sDtQM1AAsAFwAABT4BNy4BJw4BBx4BEyImNDYzITIWFAYjAgC4+AUF+Li59wUF+AMUFxcUAWoUFhcTNQX4uLj4BQX4uLj4AYoTJRMTJRMAAwBL/8sDtQM1AAsAFwAjAAAFPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgEnPgE3LgEnDgEHHgECALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOm3SeAwOedHadAwOeNQX4uLj4BQX4uLj4RATMnJvNBATNm5zMUgOedXWeAwOedXWeAAACAEn/yQO3AzcACwAgAAAFLgEnPgE3HgEXDgETJiIPAQYiLwEmIgYUHwEWMj8BNjQCALr4BQX4urr4BQX4CwkaCcgKGQk7ChkTCWgJGQr0CTcF+Lq6+AUF+Lq6+AJGCQnICgo6ChMZCmcJCfQKGQAAAQDjAGMDHQKdABsAADcGFBYyPwEXFjI2NC8BNzY0JiIPAScmIgYUHwHuCxYfDNzcCx8XC9zcCxcfC9zcDB8WC9ukCx8XC9zcCxcfC9zcCx8XC9zcCxcfC9wAAAABAQAAgAMAAtgAFgAAJS4BJz4BNzUXBzUOAQceARc+ATczDgECAG2QAwOQbcDAXHoCAnpcXHoCKAOQgAOQbW2QA1iAb28CelxcegICelxtkQAAAAABAEv/nQO1A14AKQAABT4BNy4BJyYOARYXHgEXDgEHLgEnPgE3FR4BPwE2NC8BJgYHFQ4BBx4BAgC4+AUBYlQPHREHDUVRAQPOm5vNBAOafAEZEooODokSGgGZxgMF+GMF+LhtuD0LBRwbCjKYXZvNBATNm4XAHj4WDA1gChsLYAwLFz0g66K4+AAAAAIAHP+xA+QDSQAZAC0AABcWPwEXFjYnAzc2JiMFAyYiBwMlIgYfAQMGJRE2HwEWNyUyFg8BBh8BFgYvASbbGijj4yg1EFnlKBQy/udVD0EQVf7nMRUp5VoQAUACAUoIGgEEAwED1RYKVQECA84KPBMepqYeJy4BC6QcPwIBDC8v/vQCPxyk/vUu5wIiAQT4GgEFAwKTDxn1BAIDnQgAAAAMAB3/nQPjA2MADAAZACYAMwBAAE0AWgBnAHQAgQCOAJsAAAEiBgcVHgEyNjc1LgEHDgEfAR4BPgEvAS4BBSYGDwEGHgE2PwE2JgUGFh8BFj4BJi8BJgYFLgEPAQ4BHgE/AT4BFzQmJyMOARQWFzM+ASUUFhczPgE0JicjDgEFNiYvASYOARYfARY2JR4BPwE+AS4BDwEOAQU+AS8BLgEOAR8BHgElFjY/ATYuAQYPAQYWFzI2NzUuASIGBxUeAQIADREBAREaEQEBEf4MBgZMBxgWBwdMBxcB2AwXCEwGBxYYB0wGBv1gBgcLhAsYDQYMhAsYAz8HGAuFCwYNFwyECwc6EQ6YDRERDZgOEfw6EQ2ZDRERDZkNEQOGBgcLhAwXDQYLhAwY/MEHGAuFCwYNGAuECwcCmgwGBkwHGBcGBkwIF/4pCxcISwcGGBcHTAYG/Q0RAQERGhEBAREDYxEOmA0REQ2YDhFABxgLhQsGDRgLhAsHBgYHC4QLGQwGC4ULGKoMFwhMBgYXGAdMBgYMDAYGTAcYFwYGTAgX5g0RAQERGhEBARENDREBAREaEQEBEf4LFwhMBgYXGAdMBgYMDAYGTAcYFwYGTAgXvQcYC4ULBg0XDIQLBwYGBwuEDBcNBgyECxhHEQ6YDRERDZgOEQAAAAIAbf/pA5QDFwAVACEAACUyNjcXFjI+AS8BPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgEBtjRhK8sOKhoBDsogIwEEuoyMugMDuoxtkwICk21tkwMDk4QgHssOGykPyiplOYu7AwO7i4y6QwOTbW2SAwOSbW2TAAAAAAEAnwAXA2EC6AAcAAAlPgE1ESE+ATQmIyERNCYiBhURISIGFBYXIREUFgIAEBYBFRAWFhD+6xYgFv7rEBYWEAEVFhcBFQ8BHQEWIBYBHg8VFQ/+4hYgFgH+4w8VAAAAAAEBQABAAsACwAAFAAABNwkBJwEBQEEBP/7BQQD/An9B/sD+wEEA/wABAUAAQALAAsAABQAAAScJATcDAsBB/sEBP0H/An9B/sD+wEEA/wAAAQC4AIUDWgJ/ABcAAAEXFhQHAQYiLwEmND8BNjIfARYyNwE2MgNDDQoK/lwLHQy1CwsNCx0LdQwdCwFjCx0CdA0LHQv+XAsLtgsdDAwLC3UKCgFjCwAAAAIAC/+9A/UDQwAnAD0AABchPgE1ERcWFzI2NyYvATU0JicjDgEdAScmIgcBBgceATM2PwERFBYBNCYrASIGFREjJicRAT4BFwERBgcj5wIzLjI3DRIQFAEBDJURDjgOEaoXOBf+SwwBARQQEg03MwHCEQ+2DxKPKQEBJgcQBwEmASmQQwExLQGHMg4BEg8TCof9DhABARAOkZoVFf5yCRMPEgEOMv55LjABYQ8REQ/+4wEqAbUBDAYBB/70/ksqAQAAAAADAEv/ywO1AzUACwAXACwAAAU+ATcuAScOAQceATcuASc+ATceARcOASUyPwE2Mh8BFjI2JicDJiIHAwYUFgIAuPgFBfi4ufcFBfi4m80EBMycm80EA87+tQsGlAYKBpMIFQ0BA6QLKgqlAww1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMyIB5QFBZQHDRMJAaMaGv5dCBQNAAQAVv/TA6wDKgAtAGYAcgB+AAAlNjc+ATc2NyY2NyYnBiY3NSYnBwYiLwEHFRYGJyMHFxYUDwEWFzM2FgcWFz4BByYnNzYmDwEmJzc2NC8BNjcXFjYvATY3FxYyPwEWFwcGFj8BFhcHBhQfAQYHJyYGHwEGBycmIg8BEz4BNy4BJw4BBx4BFy4BJz4BNx4BFw4BAoYPDwJlTQcGNwI4BAZSaQILDAI6lzoGEwJrUwoHBj09AwUFBFJrAQ4OOJGsQzsCATovMSMRJyEhKQ8gOC86AQM4PiUgUyAiQDcCATsuLCMOHiIiHBElJS86AQI8RBkgUyAcXy8+AQE+Ly8+AQE+L0ZdAgJdRkZdAgJdGwYHTWUCDw85kTgODgFrUgQFBQM9PQcIClNrAhMGOpc5AwwLAmlSBgQ4An4OIywvOgECN0AiIFMgJT44AwE6LzggDykhIScRIzEvOgECO0McIFMgGUQ8AgE7LiUlERwiIh8BPwE+Ly8+AQE+Ly8+OAJdRkZdAgJdRkZdAAAAAAMAP/+/A8EDQQAUACAALQAABTI2NwE2NCYiBwEOARUUFhcFEx4BAyUmNDclNj8BBwYHAyInAwE+ATcHBgcDBgJXFyIMARkMGCse/R8cJCgfATVaCRxr/tgKCQJEGRkxLhcSmAQDWgEmEigRFwwK2wRBJR8C3R4rGAz+5QohFx0cCVr+ziEpAb1aAwgE2woMFyUTEv15CgEoAScSMBYxGRr9vAkABABL/8sDtQM1AAsAFwAgADkAAAU+ATcuAScOAQceATcuASc+ATceARcOAQMyNjQmIgYUFgMzPgE0JisBNTQmKwEiBhQWOwEVIyIGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOnxgfHzAfIDCuDhERDjUREFENEhINLjUOERE1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMwCASAvICAvIP57ARAaEdoSFREaEcURGhAAAAAABABL/8sDtQM1AAsAFwA8AEUAAAU+ATcuAScOAQceATcuASc+ATceARcOAQM+AT0BNDY3PgE3LgEOAQcGFRQWMzI2NzY3HgEVFAYHDgEdARQXPgE0JiIGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOpBATFRYgJwECTnBFCQQSCxIPCRUrHSMbHBgeIRMbGicbGzUF+Li4+AUF+Li4+EQEzJybzQQEzZuczAEPARENBREbDxMvJTY4ASseCwsODxEMJQEBHRkVHhIQJx8GIoABGSYZGSYZAAAAAAMA0f/LAy8DNQAUABwAKwAAASIGBxUGFREUFjMhMjY1ETQnNS4BBz4BMhYXFSEFMhYVERQGIyEGNRE0NjMCAF2FA0owMAGeMDBKA4X9AlqIWgL+wAFtDw4OD/5mHQ4PAzWBg2IJW/7FNDExNAE7Wwlig4H7Wl9fWmlBDhL+vBIPASIBRBIOAAAGAGQBLgOdAdMACAASABsAJQAuADgAAAEeARQGIiY0NjcOARQWMjY0JicFHgEUBiImNDY3DgEUFjI2NCYnBR4BFAYiJjQ2Nw4BFBYyNjQmJwIAFBoaKBoaFCMvL0YvLyP+thMbGycaGhQkLi5HLy8jApUUGhonGxsTIy8vRy4uJAGvARooGhooGiUBL0YvL0YvASQBGigaGigaJQEvRi8vRi8BJAEaKBoaKBolAS9GLy9GLwEAAAAAAgCD/9sDfQMlACEANAAAFz4BNzU+ATceARcyPgI3ES4BIw4BBy4BJyIOAgcRHgEBLgEnIgYHET4BMx4BFzY3EQ4BpA4SAQg6MHO4bTE1LRoBARkTD0A3brd0MTUtGgEBEgI5Z7l4JDwSBDYybrhzRiwFNSUBEg7uBA8BBUQFCxUkHQG0ERMBEAEFRAULFSQd/TgOEgEVBUQFCAgBkwsWBEQFAQ3+bwsWAAAAAAIAC/+9A/UDQwAhADkAABMeATM2NwE2MhcBFhcyNjcmLwE1NCYnIw4BHQEnJiIHAQYTFBYXMxE0NjczHgEVETM+ATURASYiBwELARQQEg0BogcQBwGiDRIQFAEBDJUQDjkOEaoXOBf+Swx6My2uEg+XDxKtLjL+lAcPB/6VAYMPEgEOAX0HB/6DDgESDxMKh/0OEAEBEA6SmxUV/nMK/oYtMQEBMQ8RAQERD/7PATEtATkBSAcH/rYAAAAAAgBW/9MDrAMqADgARAAABSYnNzYmDwEmJzc2NC8BNjcXFjYvATY3FxYyPwEWFwcGFj8BFhcHBhQfAQYHJyYGHwEGBycmIg8BNz4BNy4BJw4BBx4BAaFDOwIBOi8xIxEnISEpDyA4LzoBAzg+JSBTICJANwIBOy4sIw4eIiIcESUlLzoBAjxEGSBTIBxfTmcCAmdOTmcCAmcsDiMsLzoBAjdAIiBTICU+OAMBOi84IA8pISEnESMxLzoBAjtDHCBTIBlEPAIBOy4lJREcIiIf9gJnTk5nAgJnTk5nAAMAS//LA7UDNQALABQALQAABT4BNy4BJw4BBx4BEyImNDYyHgEGAy4BNDY7ATUjIiY0NjsBMhYdATMyFhQGBwIAuPgFBfi4ufcFBfi0FyAfMB8BIV4OEREONS4NEhINURARNQ4REQ41Bfi4uPgFBfi4uPgCSSAvICAvIP57ARAaEcURGhEVEtoRGhABAAAAAAMAS//LA7UDNQALADAAOQAABT4BNy4BJw4BBx4BEyI9ATQ2Nz4BNTQmJwYHDgEjIiYnNDc+AhYXDgEHDgEdARQGByImNDYyFg4BAgC4+AUF+Li59wUF+LAkHxkeHCQfLRUKERILEwEECUl2UgIBKSEXGBIQExwcJxwBHDUF+Li4+AUF+Li4+AFTIwYhKRETIBYaHgECJg0REA8LCyAtATs4JzEVDxwTBQ4SgRopGRkpGgAAAAMAZAEuA50B0wAJABMAHQAAAQ4BFBYyNjQmJyEOARQWMjY0JichDgEUFjI2NCYnAgAjLy9GLy8j/rYkLi5HLy8jApUjLy9HLi4kAdMBL0YvL0YvAQEvRi8vRi8BAS9GLy9GLwEAAAAABgBQABMDsALsABgAIQA5AEIAWwBkAAABMjY3MzI2NCYrAS4BIgYHISIOARYzIR4BNy4BNDYyFhQGBSIGFBYXMx4BMjY3IT4CJichLgEiBgcXIiY0Nh4BFAYBPgE3MzI2NCYnIy4BIgYHIQ4BHgEzIR4BNyImNDYyHgEGApohNAyUDRMTDZQMM0Q0C/46DxMBFQ4Bxgs0IhYcHSocHP3CDRMTDZkLNEQ0CwHBDxMBFQ7+Pws0RDMMYRUdHSscHAEZIjMLlQ0TEw2VCzRDNAv+Og4VARMPAcYLNCIVHRwrHAEeAh8lHxQdFB4mJh4UHRQfJTQBHCsdHCwcshMeEwEeJiUfARMdFAEeJSUeVR0qHQEcKxz+xQElHxMeEwEfJCQfARQdEx8lNB0rHBwrHQAAAAYAUQBHA7ACuQAIABQAHQApADIAPgAAEz4BNCYOARQWNyEyNjQmJyEOARQWAzI2NCYiBhQWNyE+AS4BJyEOARQWAz4BNCYOARQWNyEyNjQmJyEOARQWhhYgIC0eHtUCSQ8TEw/9tw8TE68WICAtHh7VAkkOFQETD/23DxMTrxcfIC0eHtUCSQ8TEw/9tw8TEwJNAR8sIAEeLh4TEx4TAQETHhP+6SAsIB8uHhIBFB0TAQETHhP+6QEeLSABHi4eExMeEwEBEx4TAAAAAAMAkgClA20CWwAMABkAJgAAEz4BMyEyFhQGByEiJhU+ATchHgEUBgchLgEVPgE3IR4BFAYjISImkgEUEAKSEBQUEP1uDxYBFBACkhAUFBD9bg8WARQQApIQFBQQ/W4PFgI3DxUVHxQBFqgQFAEBFCAUAQEVqBAUAQEUHxUVAAAAAgAE/88D/AMYAB0AOwAAASMuAScOAQcGHgE2Nz4BNx4BFyMiBh8BFjI/ATYmBTMeARc+ATc2LgEGBw4BBy4BJzM+AS8BLgEPAQYWA9o4FeilX6M7CwIZGgsyiU2HwRM9FgsMXAoaCl0MC/w1OBXopV+jOwsCGBsKMIlQiMATPRYLDFwKGgpdDAsBn6HUBAFORA0dEQQMOT4BA6qGGRGEDg6DEhlYodMEAU5DDh0RBAw4PwECqoYBGBKDDgEPgxEZAAAAAAEAav+3A50DUAAzAAAJAQYuAjcBPgEXFgYHAQYuAjcBPgEmBgcBDgEXFjY3ATY0Jy4BBwEGFhceATcBNi4BBgMm/sU/kG0DPAGuJl4lIgYl/lwQIhcDDwElCgETGAr+2SABHiBTIgGmPDU1jD/+UE4ESEvDUwE9CgETGgFw/sU9BG2PQAGtJgcjJV4m/lwQBBchEQElChgTAQr+2iJVHiACIQGmPos2NAE8/lBTw0tIBE4BPQocEwEAAAAAAwAAAC8EAAKyAAsAFwAgAAAlNiQ3JiQnBgQHFgQ3LgEnPgE3HgEXDgEnMjY0JiIGFBYCAOcBFQQE/urm5f7pBAQBGORadwICd1padwICd1ogLCtBLCwvDe5HRu4NDe5GR+5iA3dZWnYCAnZaWXeELEArK0AsAAAAAQCMAK8DdAJRABAAADcGFBYyNwkBFjI2NCcBJiIHlwsWIgsBMQExCyIWC/60DCIM8QojFQsBOP7ICxUjCgFUDAwAAAABAIwArgN0AlIAEQAAJTY3ATY0JgYHCQEuAQYUFwEWAgARDAFMCxcgDP7P/s8MIBcLAUwMrgEMAVQLIBgBC/7IATgLARggDP6tDAAAAQEvAAwC0QL0ABAAACUWMjY0JwkBNjQmIgcBBhQXAo8LIhUL/sgBOAsVIgv+rAwMFwsWIQwBMQExDCEWC/60DCIMAAABAS4ADALRAvQAEQAAJTI3ATY0JwEmIgYWFwkBBhQWAVYQDAFTDAz+rQwgGAELATj+yAsWDAsBTA0hDAFLDBcgDP7P/s8LIhYAAAAAAQC7/+sDRQMVABwAAAUyNjURJx8BFjI2NCcBJiIHAQYUFjI/AgcRFBYCABEVA4BiCyAVDP7kDSAM/uMMFSALYoADFRUVEQI0XI1gChUfDQEdDQ3+4w0fFQpgjVz9zBEVAAAAAAEAu//rA0UDFQAcAAABIgYVERcvASYiBhQXARYyNwE2NCYiDwI3ETQmAgARFQOAYgsgFQwBHA0gDAEdDBUgC2KAAxUDFRUR/cxcjWAKFR8N/uMNDQEdDR8VCmCNXAI0ERUAAAABAHIAOwOOAsYAHAAAExQXARYyNjQvAhchMjY0JiMhBz8BNi4CBwEGcg0BHQ0fFQpgkWgCHhEVFRH94meQYAsBFR8O/uQNAYAQDf7kDBUgC2KDBhUiFQaDYgsgFQEO/uUNAAAAAQByADsDjgLGABwAAAE0JwEmDgEUHwInISIGFBYzITcPAQYUFjI3ATYDjg3+5A4fFQpgkWj94hEVFRECHmiRYAoVHw0BHQ0BgBANARsOARUgC2KDBhUiFQaDYgsgFQwBHA0AAAEBHgAHAtoC3wAGAAAlEyMRIxEjAfzekZuQBwEoAbD+UAAAAAQADf/3A/MDCQAZAC4ARQBbAAAFMjY1ETQmIyIGDwEGKwEmHQEUNzMyHwEeASUWNjc+ATQmJy4BDgEXHgEUBgcGFgUiLwEuASsBBj0BNDsBMjY/ATYyFREUNxY2Nz4BNCYnLgEHDgEXHgEUBgcGFgH2FhwcFw8aEckEB39bW38HBMkQGwGCDRsKKi8uKwobGQMJJCgoJAkD/oEDBL4IDgiPGRmPCA4IvgMK2gwaChocHRkKGgwOAwoTFRYSCgMJHBYCqxceDxCyBAFgq2ABBLQODlcIBg07l6aXPA0FERsPNIGQgjMOHAYEqwcFARq1GQQIrAMG/bAGcAgFDSJdZl0jDAUHCh0OGkdORxoOHAAABgA5/98D0gMiACQATABQAGIAZgByAAABNDEmLwEuAQchJgYPAgYVHgEXMzI2Nx4BNzY3HgEzMRY3PgEHBisBIiYvAQcGBwYHIiYvAQcOASsBLgE9ATQ/AjY3ITIWHwIWBgcmJwcXIwYHFSE1JicRFBYzITI2NRElJicHASEiJjQ2NyEeARQGA74BAkwLNCH95CAyC1MBCQFiSwcoRxozjjsMChpHKC4pOi+MFxkEGCoPODgGCB0mFyoPOTgQKhcGLDoFAlIFDgInBwwDTAIMHNoCAgPxAh8j/ZYnIh8XApAXH/3/AgEDAWv+PBAWFhABxBAWFgIUAQUEwR8kAQEiH8gFHB5NZwMiIDsMMAsMICEBFiF5WgwUE0RECAYYARQTREUSFQI9LgESEQXHDgEKB8MGKElrAQECCg8G4OEHEv70FxsbFwEKBwEBAgEAFR8UAQEUHxUAAAAFAED/4APAAyAACwAfADMASABdAAABISImNDYzITIWFAYDIyImNDY7ATI2PQE0NjIWHQEOAQUjLgEnNTQ2MhYdARQWOwEyFhQGAyImPQE+ATczMhYUBisBIgYdARQGISImPQE0JisBIiY0NjsBHgEXFRQGA6D8wA4SEg4DQA4SEm7ADhISDsAOEhIcEgE2/fegKTYBEhwSEg6gDhIS7g4SATYpoA4SEg6gDhISAvIOEhIOwA4SEg7AKTYBEgFgEhwSEhwS/oASHBISDqAOEhIOoCk2AQE2KaAOEhIOoA4SEhwSAiASDqApNgESHBISDqAOEhIOoA4SEhwSATYpoA4SAAAAAAEAMf/2A88DCQAgAAAFMjY9ATM2FhceATcyNjc2AicjNTQmIyIGBwEGFBcBHgEB1RYcDXunNwwbDhIZAQHV5g0cFw8aEf6uFxcBUhAbCRwWpAFQZxQNAR0c8AEQA6IWHg8Q/sQYLBj+wQ4OAAEAMf/2A88DCQAgAAAFMjY3ATY0JwEuASMiBh0BIwYCFx4BMxY2Nz4BFzMVFBYCKw8cEAFSFxf+rhIZDxccDebVAQEZEg4bCzinew0cCQ4OAT8YLBgBPBAPHheiAv7w8BwdAQ0TaFABpBYcAAQACP/nA/gDGQAbACcANQBEAAAXITY3ESYrASImLwEuASsBIgYPAQ4BKwEiBxEWJS4BJz4BNx4BFw4BEyImNTQ+ATIeARUOAQcBMj4CNC4CIw4BBx4BjwLihgEBhmQYGg0jDychqyAoDyMNGhhhhgEBAfdkgwMDg2RkgwMDg9AXHg4ZHBkOAR4W/swiPTAaGjA9IkhfAgJfGQGEAcGEDRAmEhMTEiYQDYT+P4SIA4RkZIQCAoRkZIQBUR4WDxgODhgPFh4B/u8ZMD5EPjAZAl9ISGAAAwAR/9sD7wMlACUALgA3AAATHgE7ARMeATMhMjY0JiMhLgEvASEyNj8BNjcuASMhJy4BKwEiBgEeATI2NCYiBgUUFjI2NCYiBhEBEg2RRQYyLwH0DRISDf4TEhYDBwIgLzIHIgEBARUR/UQIAxkglw0SATgBJzopKTonAZAoOygoOygDBQ0T/ikuNRIcEgEXFC01LuMKBhATNxgZE/0OHicoOignHh4nJzwnJwAAAAAEABL/2wPvAyUAJAArADQAPQAAJSEyNjQmIyEuAS8BITI2PwE2Ny4BIyEnLgErASIGFBY7ARMeAQEHDgEjIScTMjY0JiIGFBYhMjY0JiIGFBYBbgH0DRISDf4TEhYDBwIgLzIHIgEBARUR/UQIAxkglw0SEg2RRQYyAmcfAhYT/d4lexwpKTonJwGuHigoOygoqxIcEgEXFC01LuMKBhATNxgZExoT/ikuNQHRzRQX+P1fKDooJzwnJzwnJzwnAAADAEn/yQO3AzcAFAAgACwAAAEWFA8BBiIvASY0NjIfARYyPwE2MgM+ATcuAScOAQceARcuASc+ATceARcOAQLFCQn0ChkJaAkTGQo7CRkKyAoZvJvPBATPm5vPBATPm7r4BQX4urr4BQX4AhQKGQr0CQlnChkTCjoKCsgJ/fUEz5ubzwQEz5ubz00F+Lq6+AUF+Lq6+AAAAAEAS//LA7UDNQALAAAFPgE3LgEnDgEHHgECALj4BQX4uLn3BQX4NQX4uLj4BQX4uLj4AAAFAAAAFgQAAr4ACwAcAC0ANgA8AAAlFjI+AScBJg4CFwE+ATcmJCcGBxc2Mx4BFxQPATY3JwYjLgEnNDcnDgEHFgQBLgMjIgcXJx4BFzMnAyQJFxABCf2RCBgQAQkCklhgAQP+6+hfUmImKVl1AhG/aFZiKzFZdQIWgl1mAQQBFgFdAREiKxgHB4TtAkMzD4YfCREXCQJvCAEQGAj9+zt7I0bqDQEcYRECdForJO0BH2MWAnZXMyqDPH8lReoBNxgrIhEBgw8yQwGGAAAFAAAAGAQAArsACwAdAC8ANwA/AAAlFj4BNCcBJg4CFyUGBxc2Mx4BFxQGBxc+ATcmJAM2NycGBy4BJz4BNycOAQcWBCU2NS4BJwYHEzY3AQYVHgEDHwoWEQj9lgkXEAEIAUtgUDA9Q8D7BFlOLlhhAQP+7OlnVjBCS8D7BAFeUi5dZgEEARYBpBECdVgsJVExKv7rFQJ0IQkBEBcJAmoIARAXCRQBHTATDMktGWMxLjx8I0bq/ZQBHjEVAQvFMhZoMy48fyRF698mK1l0AgEQ/nMBFQEVKjJXdQAABAAAAC8EAAKxAAsAFwAjACwAACU2JDcmJCcGBAcWBDcuASc+ATceARcOASc+ATcuAScOAQceATcuATQ2MhYUBgIA5wEVBAT+6+fk/ugEBAEY5L78BAT8vr39BAT9vVp2AgJ2Wlp3AQJ2Wh4oKDwnJy8M7kdG7g0N7kZH7i8LyDMtzA0NzC0zyCkCeFhadQICdVpYeIoBJzsoKDsnAAAAAAEAg//bA30DJQAhAAAXPgE3NT4BNx4BFzI+AjcRLgEjDgEHLgEnIg4CBxEeAaQOEgEIOjBzuG0xNS0aAQEZEw9AN263dDE1LRoBARIlARIO7gQPAQVEBQsVJB0BtBETARABBUQFCxUkHf04DhIAAAACAFX/wwOrAzwAMgBAAAATDgEHFhcWBw4BFRQXFgcOARUUHgEOARUUFjsBHgEVDgEHFBYzMjY3PgE3PgE3NCYnIyIBLgEnIx4BBw4BBzM+AdwaKAEBCgQHFB0PBwsPEgkTFgsqIZkdIwRABCIaFh0MMXQzKikBrpk8VQKrAWhSTTo3AQMxHj9KYAMzBiIfGQ0JAwkkGh4TCgcIIhYPHRARHRIgLAEbGC+HPB8hHRlem0I2bkt6mwT+62OGAyt8SlF1IwKFAAAAAAMAPP+dA8QDYwAwAGkAdwAAASMiBgcOAQcWFw4BFBcOARUUFwYVHgEXMzYXDgEHHgEXMjY3PgE3Mz4BNy4BJyMuAQczHgEXFgYHDgEHDgEnIic+ATcuASsBLgE1JjY3NjQnLgE1NDc2NTQnLgE1Jjc2NTQnLgE1NDc+AQUeARcOAQcjPgE1NCYnAZ47KUIYLDMBAQQWGAoPEQ4TAT8xohEBBUAEATUsHy8UJmZMUVJrAgJ1WI0rZXY8iaICASUrMnYyDBIKIQEFQAQBMyeZFRsBCw0GBAsJHQ0DCQgBLgoCCAQvEzoBuDtSAQFJNCcYFionA2MFBgs5KBAPEC81Fw8qFyEZGygxQAIBDiWJRC04ASMoSpRbA5dwb5YDFxlBA4dvRGk5QJ5fGRABJTeGNSUpARsWDxcMBg0FDxcNHhYJCwUEERQLIhcFCgMFEhAHIQwFBTADcVRVcgItYTg8ZygAAAAAAgBV/8QDqwM9ADIAQAAABT4BNyYnJjc+ATc0JyY3PgE1NC4BPgE1NCYnIyImJz4BNzQmIyIGBw4BBw4BFRQWFzMyAR4BFzMuATc+ATcjDgEDIxsoAQEKBQgUHAEPCAwPEgoSFgsqIZkeIgEFQAQiGhYdDDF0Myoqrpk8VP1WAWhSTTo3AQMxHj9KYDMGIh8YDgkDCSQaHhMKBwgiFg8dEBEdEiArARwYL4c8HiIdGV6cQTZuTHmbBAEVY4YDK3tLUXUjAoUAAAABAFb/9wOqAwkAFwAABTI2NzYSNy4BJyIGBy4BIw4BBxYSFx4BAgAHEQe40QIDhmo9XR0dXjxqhgMC0LkHEQkHBHQBB4pzjQJANzdAAo1ziv73cgQHAAAAAwA8/50DxANjADEAagB4AAAFMzI2Nz4BNyYnPgE0Jz4BNTQmJzY1LgEnIyInPgE3LgEnIgYHDgEHIw4BBx4BFzMeATcnLgEnJjY3PgE3PgEXMhcOAQceATsBHgEVFgYHBhQXHgEVFAcGFQYXHgEVFgcGFRQXHgEVFAcOASUuASc+ATczDgEVFBYXAmI7KUIYLDMBAQQWGAoPEQcHEwE/MaIRAQVABAE1LB8vFCZmTFFSawICdViNK2V2PImiAgElKzJ2MgwSCiEBBUAEATMnmRUbAQsNBgQLCR0MAQMJCAEuCgIIBC8TOv5IO1IBAUk0JxgWKidjBQYLOSgQDxAvNhYPKhgPHgwbKDFAAg0liUQtOAEjKEqUWwOWcW+WAxcZQQECh29EaTlAnl8ZEAElNoc1JSkBGxYPFwwGDQUPFwwfFgkLBAURFAsiFwUKAwUSEAchDAUFMANxVFVyAi1hODxnKAACAFb/9wOqAwkAFgAwAAATFhIXHgEyNjc2EjcuASciBgcuASMOARc+ATceARceATI2Nz4BNx4BFw4BBwYiJy4BVgLStwcRDhEHt9ICA4ZqPV0dHV48aoZCAl9NO0oVCA4ODQkVSjtNXwIFzIsHBQaLzAIHiv76dQQHBwR1AQaKc40CMywsMwKNc1ZmAQE6IgwKCgwiOgEBZlZ67VwFBVztAAAAAAQAKP/DA9gDPQAYACEAKgAzAAAFMjY/ASEyNjURNCYnIQ4BFREUFjsBFRQWEw4BIiY0NjIWFw4BIiY0NjIWFw4BIiY0NjIWASYNFg+bASFgZGRg/dhgZGRgFBRZASU1JCM2JdcBJTQlJDUl1wEkNSQkNSQ9Dg6NZV8BSF9lAQFlX/64X2V8FRcB/xskJDUlJRobJCQ1JSUaGyQkNSUlAAACACb/mwPaA2UAIgAsAAAXAScmNwE+ATIWFwEWFA8BATY1ETYmJwEuASIGBwEOARcRFBchMjcBJiIHARYxARToDQ4BbhAYGRYRAW8HB+YBEgoBERf+pxgqLioX/qYXEQF6ArI/Gf6LGzQb/okVHwER4RALARwNDQ0N/uQFDwfh/vASLAGyIioTAQsTFhYT/vUTKiL+Ti1YFwFxGxv+jRUABQAm/5UD2gNrABMAIwApADAAOgAAFyEyNRE2JicBLgEiBgcBDgEXERQBLgEiBg8BLQE+ATIWFw0CETcXByYBERQHJzcWASIjATYyFwEiI60CpoYBGB7+tRcrLioX/rUeGQECMxYtLSwWHP7/AUIPFxsWDwFD/wD98gH28QYDMAXw9AH9EwQFASsbMhsBKgUFa4UBqi02FwEEExYWE/78FzYt/laFAZsWFBQWG/37DA0NDPz8+wG2DPTsDAHI/koRDe3xBP4BASYcHP7aAAAAAAIA1v/OAyoDMgAUABwAAAEiBgcVBhURFBYzITI2NRE0JzUuAQc+ATIWFxUhAgBdhQNFKyoBqiorRQOF/QJaiFoC/sADMoGDZwdS/rkuKysuAUhSB2aDgftaX19abwAAAAMAQf/UA74DLAAHABQAIAAABREnJicRFxYlMj8BEQYPAQYXERQWBTY/ATY1ESYnIg8BAnHUCw3YCv4MDxW0DAzLJwEaAlAGB+AlATAPFL4sAs2BBwP9KXkFCgthAtcFB3UVKv2uGBkMAQV/FSoCUzABC2kAAgFf/7oCoQNGABMAHAAABTI2NxE+ATcuAScOAQceARcRHgEDLgE0NjIWFAYCAA4ZATZCAQJaRUVaAgFDNQEZIBcfHy4fH0ZkYAGKD1U4RVsCAltFOVUO/nZgYwLgASAuHx8uIAAAAAADAGf/ywOZAzUAFQAeADgAACUyNjc1PgE3NC4CIw4BBx4BFxUeAQMiJjQ2MhYUBhM+ATcuAScVHgEXDgEHLgEnPgE3NQ4BBx4BAgAOGQE2QgEYLjsgRVoCAUM1ARkgFx8fLh8fF8TUAQjFYUSJBgKnlZWnAgaJRGHFCAHUamRfyg9VOSA7LhgCW0Q6VA/KX2QCISAuICAuIP1AA2xLV2EBQwE7MDRGAgFHNDA7AUMBYVdLbAACAEv/ywO1AzUACwAXAAAFPgE3LgEnDgEHHgETLgEnPgE3HgEXDgECALj4BQX4uLn3BQX4uDdMAQFMNzhLAQFLNQX4uLj4BQX4uLj4ASwBSzg3SwEBSzc4SwAAAAEAP/+/A8EDQQAfAAAFMjY3ATY0JiIHAQ4BFRQWHwEWNjcBNhYHAQ4BHwEeAQJXFyIMARkMGCse/R8cJCgf6BQbDgHWCQ4H/koMBAdDCRxBJR8C3R4rGAz+5QohFx0cCUYGAw0BtwcOCf4oDBwV4iEpAAAAAwAG//UD+gMLAAwAGAAsAAAXITI3ESYnISIHERYzEy4BJz4BNx4BFw4BAy4BPQE3NjMyHwE3NjIfARUUBgeNAuaGAQGG/RqGAQGGuy08AQE8LSw8AQE85h8jgx0eIB1SzSBJIMUjHwqEAgyEAYX99IUBgQE7LS08AQE8LS07/sMBIx8bchobSbYbHLZDHyIBAAAAAAQAAP/ABAADAgAOABoAIwA6AAATNDYzITU0IyEiFREUOwEXITI1ETQjISIXEQYBLgE0NjIWFAYDIiY9ATc+ATIWHwE3PgEyFh8BFQ4BI41VUwIJef21enoTrgJLenr9tXoBAQEPJzIyTDMzvhscQxokKCcaJX8fMDIxH2MBHBoB2VNUCnh4/mh3u3gBnHd3/mR4AUoBM0wzM0wz/vMdGiA+FxwcGCByHSMiHl5RGh0ABAAA/8AEAAMCABMAIQAzADwAADczFQYzITI1ETQrATU0IyEiFREUNyInETY3IRYXFSEiFxETNjMhMhcRJy4BDwEnJiMiDwE3PgE0JiIGFBZ6SAF6Akt6ekh5/bV6ezsCAjsCSTsB/jt6AT4BOwJJOwKOGkAbrkUZHBkZZdImNDRNMzN7Q3h4AZx3P3h4/mh3Pj0BkTwBATw8d/7lARc9Pf69hhcBGJo/FhZYqQE0TTQ0TTQAAgBL/8sDtQM1AAsAIAAABT4BNy4BJw4BBx4BNyImNDcTNjIXExYUBiIvASYiDwEGAgC4+AUF+Li59wUF+A4KDAOfCikJnwQMFQePBQoFjwc1Bfi4uPgFBfi4uPjVDBMIAZUZGf5rCBMMBo8GBo8GAAUAeP/EA4cDPAAIABQANQBBAEgAAAERLgEnDgEHFQEWMjY0JwEmIgYUFxMOARQWMyEyNjQmJyM1NjcnBgcuASc1NCYiBh0BHgEXFQE0JiIGBxUUBxc2NQcnFR4BFzICagFGOzlHAQHoChsTCv00ChsUCp4NExMNAZANExMNp1I7LjVLZnwCER0RAop3AUMRHBEBBTUP570BRjojAawBBj1MAQFKOgf9cgoUGgsCzAoUGwr9FwETGhMTGhMBXgcqLiMBAnxkZA8REQ9kd5oMXgHfDxERD2QZGDQvNnq9QzxNAQAAAAMAAP/4BAADBAAZAC4ARAAABTI2NRE0JiciBg8BBisBIgcVFhczMh8BHgElFjY3PgE0JicuAQ4BFx4BFAYHBhYnFjY3PgE0JicuAQcOARceARQGBwYWAdsXGxwWEBkRuwUGf1sBAVt/BgW7DxwBqwwbCiouLioKGxkDCiMnJyQJBJ4LGwoZHB0YChoMDgQLEhUVEwkDCBwWAqYWHQEPELEEYKVgAQSzDg1XCQYNO5allTwMBhEcDjOBjoEzDhxqBwUMIlxmXCINBQgKHA8ZRk1HGg4cAAAAAAIAhP+xA30DTgALAC4AAAE+ATIWFzU0JiIGFRcRBz8BPgEWFA8BBiIvASY0NjIfAScRIyYVERQ3ITInETYjAd4BExwTARQcFEUCG0EJHRILkA0aDZALEhwKXQPThoYB7IcBAYcCWA0TEw3VDhMTDrr+8T4dRQoBEhsKjAwMjAobEgtiPgEPAYX+R4UBhAG5hAAAAAADAJIApQNuAlsAAAAMAB4AABMzITIVERQjISI1ETQFNz4BHgEVERQOASYvASY9ATSSSQFuSUn+kkkCM20JFBQLCxQUCW0OAltJ/txJSQEkSYdYBgMJEgv+4gsSCQIHWAsRcBEAAgCE/5wDfQNkABoALgAAAT4BPQEnFxYyNjQvASYiDwEOARYyPwEHFRQWAyE2JxE2KwERDgEiJjURIyIVERQCAA4UAl0KGxIKkQwaDJEJAREcCl4DFOgB7IcBAYfKARkkGcuGAh4BEg6HP2MKERoJjAwMjAkaEQpkQIcOEv19AYQBmoX+zRIYGBIBM4X+ZoUAAwBF/+QDuwMcABwAKgA4AAA3MzI9AT4BNx4BFxUUOwEyNj0BLgEnIw4BBxUUFhczMjY9ATQmJyMGBxUWITMyPQE0JyMOAR0BFBZlFwsCzaqrzAILFw4SA+u+Hr7rAxKJKScrKycpKwEBAkMoLS0oKCoqjgvxm7MBAbOb8QsQDe+u0QMD0a7vDRCqKCW5JicBASv8LCz8KwEBJya5JSgAAAUAhP+vA3wDUQAfACkANgBDAE8AABsBHgEzITI2NxMzMjY0JicjNS4BKwEiBgcVIw4BFBYzNzQ2OwEyFh0BIxMuATUTPgEyFhUDDgEFLgE1AzQ2MhYVExQGNw4BIiYnET4BMhYV1RsCLSgBcigtAhwxDRISDbABMyudKjMBrw4SEg7pGBSOFBjm/gwQEgEQGBATAQ/+3gwPFBEYEBIPnAERGBABARAYEgJ0/Y4pKiopAnISHBIBPSwzMyw9ARIcEn4SFxcSPf1RARIOAfENEhIN/g4OEQEBEQ4B8g0SEg3+Dw4SIA4SEg4B8Q0SEg0AAAIAHP+5BAkDOwBBAFwAACU1MzI+AjcuAS8BNzY1LgEnIgYPAScmDgIfAQcOAQcUHgI7ARUjLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHBRY/ATY0JiIPATcRNCYiBhURFycmDgEUHwEWAonOFigfEAEBLiY6BgEDeFs2Xh4cMRYqIxMBATcpMwESIysZwsJRagIBUUABID5LJSd6S3ifAwE8TAECZEz+ug0MkQoSGwpdAhQcFANeChwQCpANp0UQICgWJzoJDjsKClt4AjMuKg4GCBsnFjkMC0ArGCwiEkUCa1BFZBAnRDAOCzpFAQOfeA0ND15ATGUC7QEMjAkbEApjQAFKDhMTDv62QGMLARAbCYwMAAIAHAADBAoDOwAgADwAACUVDgEmJzUhLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHASYPAQYUFjI/AgcVHgEyNjc1JxcWMjY0LwEmAjYBJCMB/uxQawIBUUABIT5KJiZ7S3ifAwI9SwICZUz+ugwNkAoRHAlBHQMBEx0TAQNeChsRCpEMp3sUFRUUewJrUEVkECdEMA4LOkUBA594DQ0PXkBMZQIBagEMjAkbEQtEH0C2DhMTDrZAYwsRGwmMDAAAAAIAHAAIBAoDOwA/AFoAACU1Mz4BNy4BLwE3NjUuASciBg8BJyYOAh8BBw4BFRQeAjsBFSMuASc+ATcmPgIXPgE3HgEXFAceARcOAQcBNh8BFhQGIi8BFxEOASImJxE3BwYiJjQ/ATYCis0vPgEBLiU6BQECeVo3Xh4cMRUrIxMBAjcqMxIiLBjDw1BrAgFRQAEhPkomJntLeJ8DAj1LAgJlTP66DQyRChEbCl4DARMdEwEDXgkcEQqQDadFAT4vJzoJDjsKClt4AjMuKg4GCBsnFjkMC0ArGCwiEkUCa1BFZBAnRDAOCzpFAQOfeA0ND15ATGUCAWoBDIwJGxELY0D+tg4TEw4BSkBjCxEbCYwMAAAAAAIAHP+5BAkDOwAjAD4AACU1NC4BIg4BHQEhLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHBRY/ATY0JiIPATc1NCYiBh0BFycmDgEUHwEWAj0MFBgUDP70UWoCAVFAASA+SyUnekt4nwMBPEwBAmRM/roNDJEKEhsKXQIUHBQDXgocEAqQDafxDBQMDBQM8QJrUEVkECdEMA4LOkUBA594DQ0PXkBMZQLtAQyMCRsQCmNATw4TEw5PQGMLARAbCYwMAAAAEgDeAAEAAAAAAAAAEwAoAAEAAAAAAAEACABOAAEAAAAAAAIABwBnAAEAAAAAAAMAFQCbAAEAAAAAAAQACADDAAEAAAAAAAUAOwFEAAEAAAAAAAYACAGSAAEAAAAAAAoAKwHzAAEAAAAAAAsAEwJHAAMAAQQJAAAAJgAAAAMAAQQJAAEAEAA8AAMAAQQJAAIADgBXAAMAAQQJAAMAKgBvAAMAAQQJAAQAEACxAAMAAQQJAAUAdgDMAAMAAQQJAAYAEAGAAAMAAQQJAAoAVgGbAAMAAQQJAAsAJgIfAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQAAENyZWF0ZWQgYnkgaWNvbmZvbnQAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAHUAbgBpAGkAYwBvAG4AcwA6AFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwAAB1bmlpY29uczpWZXJzaW9uIDEuMDAAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADsASgBhAG4AdQBhAHIAeQAgADMALAAgADIAMAAyADAAOwBGAG8AbgB0AEMAcgBlAGEAdABvAHIAIAAxADIALgAwAC4AMAAuADIANQAzADUAIAA2ADQALQBiAGkAdAAAVmVyc2lvbiAxLjAwO0phbnVhcnkgMywgMjAyMDtGb250Q3JlYXRvciAxMi4wLjAuMjUzNSA2NC1iaXQAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AAEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC4AAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAGh0dHA6Ly9mb250ZWxsby5jb20AAAAAAAIAAAAAAAAACQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAhgAAAQIAAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnAA4A7wEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMHdW5pMDAwMAdjb250YWN0BnBlcnNvbglwZXJzb25hZGQNY29udGFjdGZpbGxlZAxwZXJzb25maWxsZWQPcGVyc29uYWRkZmlsbGVkBXBob25lBWVtYWlsCmNoYXRidWJibGUJY2hhdGJveGVzC3Bob25lZmlsbGVkC2VtYWlsZmlsbGVkEGNoYXRidWJibGVmaWxsZWQPY2hhdGJveGVzZmlsbGVkBXdlaWJvBndlaXhpbgtwZW5neW91cXVhbgRjaGF0AnFxCHZpZGVvY2FtBmNhbWVyYQNtaWMIbG9jYXRpb24JbWljZmlsbGVkDmxvY2F0aW9uZmlsbGVkBm1pY29mZgVpbWFnZQNtYXAHY29tcG9zZQV0cmFzaAZ1cGxvYWQIZG93bmxvYWQFY2xvc2UEcmVkbwR1bmRvB3JlZnJlc2gEc3Rhcgt3aGl0ZWNpcmNsZQVjbGVhcg1yZWZyZXNoZmlsbGVkCnN0YXJmaWxsZWQKcGx1c2ZpbGxlZAttaW51c2ZpbGxlZAxjaXJjbGVmaWxsZWQOY2hlY2tib3hmaWxsZWQKY2xvc2VlbXB0eQxyZWZyZXNoZW1wdHkGcmVsb2FkCHN0YXJoYWxmDHNwaW5uZXJjeWNsZQZzZWFyY2gJcGx1c2VtcHR5B2ZvcndhcmQEYmFjaw5jaGVja21hcmtlbXB0eQRob21lCG5hdmlnYXRlBGdlYXIKcGFwZXJwbGFuZQRpbmZvBGhlbHAGbG9ja2VkBG1vcmUEZmxhZwpob21lZmlsbGVkCmdlYXJmaWxsZWQKaW5mb2ZpbGxlZApoZWxwZmlsbGVkCm1vcmVmaWxsZWQIc2V0dGluZ3MEbGlzdARiYXJzBGxvb3AJcGFwZXJjbGlwCWV5ZWZpbGxlZAx1cHdhcmRzYXJyb3cOZG93bndhcmRzYXJyb3cObGVmdHdhcmRzYXJyb3cPcmlnaHR3YXJkc2Fycm93C2Fycm93dGhpbnVwDWFycm93dGhpbmRvd24NYXJyb3d0aGlubGVmdA5hcnJvd3RoaW5yaWdodAhwdWxsZG93bgVzb3VuZARzaG9wBHNjYW4KdW5kb2ZpbGxlZApyZWRvZmlsbGVkDGNhbWVyYWZpbGxlZApjYXJ0ZmlsbGVkBGNhcnQIY2hlY2tib3gRc21hbGxjaXJjbGVmaWxsZWQOZXllc2xhc2hmaWxsZWQIZXllc2xhc2gDZXllCmZsYWdmaWxsZWQVaGFuZHRodW1ic2Rvd25fZmlsbGVkDmhhbmR0aHVtYnNkb3duEmhhbmR0aHVtYnN1cGZpbGxlZAtoZWFydGZpbGxlZAxoYW5kdGh1bWJzdXAOYmxhY2toZWFydHN1aXQKY2hhdGZpbGxlZA5tYWlsb3BlbmZpbGxlZAhtYWlsb3Blbgxsb2NrZWRmaWxsZWQJbWFwZmlsbGVkBm1hcHBpbg1tYXBwaW5lbGxpcHNlC3NtYWxsY2lyY2xlEHBhcGVycGxhbmVmaWxsZWQLaW1hZ2VmaWxsZWQMaW1hZ2VzZmlsbGVkBmltYWdlcw5uYXZpZ2F0ZWZpbGxlZA5taWNzbGFzaGZpbGxlZAtzb3VuZGZpbGxlZA5kb3dubG9hZGZpbGxlZA52aWRlb2NhbWZpbGxlZAx1cGxvYWRmaWxsZWQKaGVhZHBob25lcwt0cmFzaGZpbGxlZA1jbG91ZGRvd25sb2FkEWNsb3VkdXBsb2FkZmlsbGVkC2Nsb3VkdXBsb2FkE2Nsb3VkZG93bmxvYWRmaWxsZWQHdW5pMDAwOQAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAQCFAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANoxE3MAAAAA2jSpUA==')"
+ });
+ // #endif
+
+ /**
+ * Icons 鍥炬爣
+ * @description 鐢ㄤ簬灞曠ず icons 鍥炬爣
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=28
+ * @property {Number} size 鍥炬爣澶у皬
+ * @property {String} type 鍥炬爣鍥炬锛屽弬鑰冪ず渚�
+ * @property {String} color 鍥炬爣棰滆壊
+ * @event {Function} click 鐐瑰嚮 Icon 瑙﹀彂浜嬩欢
+ */
+ export default {
+ name: 'UniIcons',
+ props: {
+ type: {
+ type: String,
+ default: ''
+ },
+ color: {
+ type: String,
+ default: '#333333'
+ },
+ size: {
+ type: [Number, String],
+ default: 16
+ }
+ },
+ data() {
+ return {
+ icons: icons
+ }
+ },
+ methods: {
+ _onClick() {
+ this.$emit('click')
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ /* #ifndef APP-NVUE */
+ @font-face {
+ font-family: uniicons;
+ src: url('data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYoJ48wAAGf4AAAAHEdERUYAJwCMAABn2AAAAB5PUy8yWXpc3QAAAVgAAABgY21hcB9SCa8AAAPQAAADImdhc3D//wADAABn0AAAAAhnbHlmWWfecQAACAQAAFYcaGVhZBehAMAAAADcAAAANmhoZWEH+gSHAAABFAAAACRobXR4D3IujAAAAbgAAAIYbG9jYa77miAAAAb0AAABDm1heHABnACoAAABOAAAACBuYW1lj4vbUwAAXiAAAAM5cG9zdH/g11YAAGFcAAAGcwABAAAAAQAAGbvTeF8PPPUACwQAAAAAANoxE3MAAAAA2jSpUAAA/5UEHANrAAAACAACAAAAAAAAAAEAAAOA/4AAXASAAAAAAAQcAAEAAAAAAAAAAAAAAAAAAACGAAEAAACGAJwADAAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAwQBAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUGZFZABAAB3o6QOA/4AAXAOAAIAAAAABAAAAAAIAAs0AAAAgAAEEAAAAAAAAAAFVAAAEAABLBAAAiQQAACEEAABLBAAAlwQAACkEAABdBAAAJwQAACgEAAAABAAAcwQAACcEAAAoBAAAAAQAACAEgABVBAAAegQAACgEAACcBAAAkgQAAAgEAADNBAAAyQQAAN0EAADJBAAAeAQAAAYEAABCBAAAVgQAAGoEAACEBAAAhAQAAEsEAAAxBAAAMQQAAEsEAAAcBAAASwQAAEsEAABLBAAASwQAAEsEAAAcBAAASwQAAEsEAABLBAAASQQAAOMEAAEABAAASwQAABwEAAAdBAAAbQQAAJ8EAAFABAABQAQAALgEAAALBAAASwQAAFYEAAA/BAAASwQAAEsEAADRBAAAZAQAAIMEAAALBAAAVgQAAEsEAABLBAAAZAQAAFAEAABRBAAAkgQAAAQEAABqBAAAAAQAAIwEAACMBAABLwQAAS4EAAC7BAAAuwQAAHIEAAByBAABHgQAAA0EAAA5BAAAQAQAADEEAAAxBAAACAQAABEEAAASBAAASQQAAEsEAAAABAAAAAQAAAAEAACDBAAAVQQAADwEAABVBAAAVgQAADwEAABWBAAAKAQAACYEAAAmBAAA1gQAAEEEAAFfBAAAZwQAAEsEAAA/BAAABgQAAAAEAAAABAAASwQAAHgEAAAABAAAhAQAAJIEAACEBAAARQQAAIQEEgAcBBIAHAQSABwEEgAcAVUAAAAAAAMAAAADAAAAHAABAAAAAAIcAAMAAQAAABwABAIAAAAAfABAAAUAPAAAAB3hAuEy4gPiM+Jk4wPjM+Ng42TkCeQR5DTkOeRC5GPkZuRo5HLlCOUw5TLlNeU35WDlY+Vl5WjliOWQ5gnmEufW59nn7+f15/roAegl6EDoR+hO6FboXOhe6GToaOhu6Hfoe+iE6JLooeik6K/osei/6Nzo5ujp//8AAAAAAB3hAOEw4gDiMOJg4wDjMuNg42PkAOQQ5DTkN+RA5GDkZeRo5HDlAOUw5TLlNOU35WDlYuVl5WflgOWQ5gnmEufW59nn7+f05/roAegi6DvoR+hN6FboXOhe6GToaOhu6HfoeuiE6JLooeik6K/osei/6Nzo5Ojp//8AAf/kHwMe1h4JHd0dsR0WHOgcvBy6HB8cGRv3G/Ub7xvSG9Eb0BvJGzwbFRsUGxMbEhrqGuka6BrnGtAayRpRGkkYhhiEGG8YaxhnGGEYQRgsGCYYIRgaGBUYFBgPGAwYBxf/F/0X9RfoF9oX2BfOF80XwBekF50XmwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEoAmgEgAWIBkAH4AnACwgMUA5YD3AQkBE4EoAU0Ba4GPgauBvQHVgfsCFAIigjgCRIJmgnkCkAKigsUC2oLvgwUDHQM1A1ADaYN+A42DmQOqA8CDzIPcA+aD9oQEhBAEGoQsBEAEfoSNhJmEnoSjhK6ExwTaBQuFIAU2hVIFYwV6BY+FpwXChdSF6wX4Bh4GN4ZHhmAGd4aGho8GmIahBqqGtwbDhtAG3IbhBwMHLgdOh1wHaYeEB5oHsgfFB8uH5QgAiBSIIog7iGgIgQiMCLiIzQjhCPUJDwkbCSmJNolNCViJZwl5iY+Jpgm0CdCJ64n+CgqKHIowik6KcQqJCquKw4rDgAAAAMAS//LA7UDNQALAB0AKQAABT4BNy4BJw4BBx4BEw4BBy4BJz4BNx4BFxQGBy4BJz4BNy4BJw4BBx4BAgC4+AUF+Li59wUF+LhijCIrMAEEzJybzQQxKyKMYj9TAQJSPz9TAQJSNQX4uLj4BQX4uLj4AR4BOScwfEebzQQEzZtHfDEoOUoBWkZDWgICWkNGWQAAAAAEAIn/8gN3Aw0ACwAXACIALQAAAT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BASEWJy4BJw4BBwY3Bjc0NjceARUWJwIAT2gCAmhPTmkCAmlOMEMBAUIxMkEBAUL+wgIaagEBxbCwxQEBVhEBnZSUnQEQAYACclVUbgICb1RVcT4CTDo5SgEBSTk6Tf4xAUZbsQYGsVtGQgENO4kGBok7DQEABQAh/6wD4ANUAAsAFwAsADgAVQAAAT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BByIGBxYXNjceARcWJyEGByEWJy4BAT4BNy4BJw4BBx4BNyImPQEjLgE0NjsBNTQ2MhYdATMyFhQGByMVFAYCaU5pAgJoT05pAgJpTjFCAQFCMTFCAQFCMTplKRsVP1mUnAEBEf6FAQoBcmoBAsT94lt8AgJ7XFx7AwN7XAsRUgsPDwtSERcQUgsPDwtSEAHHAnJVVW0CAm9TVXI/AUw7OUkBAUk5Ok13GRYWHB8BBok7DQEhIAFGW7H+IQJ8XFx7AgJ7XF17Sg4NWAEPFg9ZDA4ODFkPFg8BWA0OAAAAAAMAS//LA7UDNQALABcAJAAABT4BNy4BJw4BBx4BEx4BFw4BBy4BJz4BARcOASImJzc+ATceAQIAuPgFBfi4ufcFBfi4P1ICAVM/P1MBAVMBRAEziJaJMgEchmNjhTUF+Li4+AUF+Li4+AKnAlpDRloBAllGQ1r+DQU1Ojo1BSlBAgJBAAIAl///A2kDAQALABgAAAE+ATcuAScOAQceAQMhMjY1LgEnDgEHFBYCAEdjAgJjR0diAgJixgIaMioCv6iovwIqAYwBalJRZgEBZ1FRav5yHB1ZqAYGqFkdHAAABAAp/7ID2ANOAAsAGgAmAEMAAAE+ATcuAScOAQceARciBgceARUUByEyNicuAQE+ATcuAScOAQceATciJic1IyImNDY7ATU+ATIWFxUzMhYUBisBFQ4BAm9HYgICYkdHYgICYkc3XycvNggBbTIqAQG//etcewMCfFxcewICe10MEAFRDA8PDFEBEBcQAVEMDg4MUQEQAdkCaVJRZgEBZ1FRaU8YFCZuQSAfHRxZqP4sAnxbXHwCAnxcXHtKDgxZDxcPWQwODgxZDxcPWQwOAAIAXf/cA6QDJAAnAE4AAAUWNj8BNic2LwEmIg8BBicuAycmPwE+AS8BJiMmDwEOARUUHgI3Ii4CJzY3Njc+AR8BFhQPAQYUFx4DFxYyPwE2Mh8BFgYPAQYCzDdQIQknAQE5fR0/GyEODxI6MiwNCg4hGgEVVycuKSsMJCBu0NRdU8CrbwEBMgQFEycMUwcKJhYQEzc0QhoWMhYmChUKfRMBEgYuIwEhJQosKC8oVhQaIQ4KDDIyMxUODiEbPx19OAEnCSBQN13V0G5Ca6vEVEgtAwQQAhN9ChUKJhcxFho+NDoUEBYmCgZUDCcUCDEAAAUAJwAPA9kC8QANABcAHQAhAC4AADchMjY1ETQjISIGFREUCQE2MyEyFwEGIgURNRcHJgERJzcBIiclFxY3Fj8BBQYjrQKyOz+G/U46QAGm/rwOFAKqFA/+vRsy/oD39gEDMPX1/RMSDQEAHCwtLC0cAQAOEw9CQwHZhEJC/ieFAVsBQAYH/sEbuwHZBPLzBAHc/iLx8f3gBv0bKwEBKxv9BgAAAgAo/74D2AM5ABkAMAAAJTYXFjM+ATcuAScOAQcUFh8BMiMXHgEXNzYBNiQ3FgQXBgQHIicxJgYHBj4BLwEuAQFlKSsjJK/kBATkr6/kBEQ/EgECBxkZARoM/ssFAQrJyQEKBQX+9skrKCtZaC1EIx0XSlVkDgkFBLyJibwEBLyJRnwvDQQTLxsNBgFMqOAEBOCoqd8FBghFHwxHVhkQN5kAAAADAAD/tQQAAuUAJwBAAFkAABcyNj8BFhczFx4BMz4BPQEzPgE3NS4BJyM1LgEnIQ4BBxEeARczFRQ3LgErASImJxE+ATMhMhYXFSMOAQcVFBcHBScuASsBIiYnNT4BMyEyFhcVDgErASIGB/ENGRB4J0t7dxAWDRIUD0RQAQFQRDgBUEn+AkdTAQFTRy82AQ8MRjA0AQE0MAH3MDQB6UdNAQeDAiZyChIOdi0xAQExLQFULTEBATEtJgwPASMMD2srAWYNDwEXFVUBTEfSR0wBG0lPAQFPSf63SU8BYSqjEA4zMgFFMjMzMhkBTEfSHRh5J2cJBzAv0C8wMC/QLzAODwAAAAEAc//xA40DDwAsAAAlHgEXFjc+ATU0Ji8BJiMGDwEGIicuAycmND8BNjc0LwEmByIGBw4BFR4BAUxf0V5TOxITDQ+EHRccHB8HFAcUPUEzCwUGHh4BFVwYJBUqEx8dAnjNXnsCAT8TKxYQHgtdFQEeHgYEDDNBPRQIEgcgHBwXHoEfARMSHkkpXs8ABAAnAA8D2QLxAAoAEQAYACQAAAEWNwEmIyEiBwEWBQkBBhURFAU2NRE0JwkBITI3AQcGIi8BARYCARobAXQYP/1ONxUBdxv+SwEv/tAKA6gKCf7R/gwCsjYV/swdKlwqHf7MGAFPARwBcRYV/o4c+gErASwSLP4nLhITLQHZKxL+1f6QFAEyHCoqHP7PFQAAAQAo/74D2AM5ABYAABM2JDcWBBcGBAciJzEmBgcGPgEvAS4BKAUBCsnJAQoFBf72ySsoK1loLUQjHRdKVQGtqOAEBOCoqd8FBghFHwxHVhkQN5kAAgAA/7IEAALtABwANQAAFzI2PwEuASc1PgE7AScuASchDgEHER4BFzMVFBYFPgE9ATM+ATc1LgEnIQ4BHQEUFhczFx4B5gsSDWoQFQEBXlT+AQRHPv4PP0oBAUo/PBECWQ8RJj9KAQFKP/6aQkhIQnODDRIbCwxiCy4s8FRdDjhCAQFGQf6cQksBaREUMwEUEGoBS0HdQUYBAUZB3UFLAXcMDAAHACAAGgP6AzYACwAgACwAOABEAE0AVgAAATYmBwYmNzYWBwYmAS4BJzQ2Nz4BBwY2NzYWBwYWFxYCAy4BBw4BFx4BNz4BAwYWNzYWBwYWNzYmAQ4BJy4BNz4BFx4BIyYOAR4BPgEmNyYOAR4BPgEmAxsJLCMgCx5JWRMNNf6enPEGS0SU0yEEGANzhCIECQu3zhoLrXp6mAULrXp6mBkjDiVqgxwGPQ8nuP7XGnU9OioYG2w7PDG5EygXCSUqGAsqBw8IAw8QCAQCEyMxBgM2CwxlRh0R/iYBh3g/ikSNBIYRBQEvMF8NCQNN/ssBAVBaCg56UVBbCg96AkIMPwMRkGkkFCGTzP2hODESFV80MzAOEV0IDiUkEQ4mJCEDBg4NBwYPDQAAAAYAVf/2BBwDCgAWAB8AKAA5AEMATQAAATIXLgEnDgEHFBYXBzceATMyNyY1PgEnMhYUBiImNDYHIiY0NjIWFAYBLgEnDgEHHgEXMjY3Fyc+ASUiJjQ2Nx4BFAYzIiY0NjceARQGAuMREBm/gZHBBEhBIncgOR8QEAoCozsUFxcoHh7bFB8fJxcXAs0EqHd9owMDo30ZNBpeGjRD/oAOFBQOExcXqQ4UFQ0TFxcCGwJqhQIDo31GdC1nPAcKASImc5hgFycXFycXVRcnFxcnF/7uaYwDA4xpaowDCwc0VidkZRUaFAEBFBsUFRoUAQEUGxQAAAAJAHr/+gOGAwYABwAQABgAIAAoAEAASABQAFgAACUOAR8BPgE3JRUWFzI3JyYGEyIHFxY3NSYFBgcUFzc2JzcOAQchMjYnBxUUHwEWOwEyPwE2PQE0LwEmKwEiDwEGJQcGFzM2NzQDERQWPwEuAQEeARcRLgEHAfUCAgKQPGMj/hRNWigl7QIFpycl7gUBTf5FJQEI7gMGETxjIwFRAgICtgJeAgOFAwJeAgJeAgOFAwJeAgIm7QQGzCUBrQUCkBZN/YQVTjUBBAKoAQQCkBVNNUXNJQEI7QICAhcH7gMFzSXdTVsoJe4FAsgWTTUFAp2EAwJeAgJeAgOEBAJdAwNdAwftBQJNWycBHf6wAgICkDxj/lw8YyMBUQICAgAAAAAFACj/xQPYAzsAGAAxADoAQwBMAAAFMjY/ASE+ATURNCYjISIGFREUFhczFRQWNzU0JisBIiY1ETQ2MyEyFhURFAYjISIGBwMuASIGFBYyNjcuASIGFBYyNjc0JiIGFBYyNgEvEBsTlAETYGRkYP3YYGRkYBUYKA8RNUE+PkECKEE+PkH+6hEXDFEBIDAgIDAgxAEgMCAgMCDEITAgIDAhOxERgwFlXwFIX2VlX/64X2UBbxkdTnwSD0A/AUg/QEA//rg/QAgNAScYICAwISEYGCAgMCEhGBggIDAhIQAAAAEAnP/ZA2QDJgApAAAlLgEnFAYHHgEHBiYnDgEnJjY3LgE1DgEHIiY3Nj8BJjY3HgEHFxYXFgYDWhE2AykrGDsIE8A0NMATCDsYKykDNhEIAhoMECYFgI2MgAQmEAwaAnEETQYoWiYHHhQOAgYGAg4UHgcmWigGTQROVigoX5TKBATIll8oKFZOAAAABACSAKUDbgJbAA8AHwAtAD8AABMVHgEzITI2PQE0JiMhIgYnITIWFREUBiMhIiYnET4BBRUUHwEWNjc1LgEPAQYnNz4BHgEVERQOASYvASY9ATTbARQQASUPFRUP/tsQFAEBbh4rKx7+kh4qAQEqAjEHJAkUAQEUCSQHKW0JFBQLCxQUCW0OAe7cDxUVD9wPFRVeKx7+3B4rKx4BJB4rtUwJBR4GCguGCwoGHgUlWAYDCRIL/uILEgkCB1gLEXARAAAAAAUACP/nA/gDGQAbADsARwBVAGQAABchNjcRJisBIiYvAS4BKwEiBg8BDgErASIHERY3IiY1ETQ2OwEyNj8BPgE7ATIWHwEeATsBMhYVERQGIyU+ATcuAScOAQceAQEyNjc0LgEiDgEVFBYXAS4BJz4BNzIeAhQOAo8C4oYBAYZkGBoNIw8nIasgKA8jDRoYYYYBAYcgIyMgcR0kECIRHhx/HB4RIhAkHXQgIyMg/pBkgwMDg2RkgwMDgwGYFh4BDhkcGQ4eF/7MSF8CAl9IIj0wGhowPRkBhAHBhA0QJhITExImEA2E/j+ERCIiAbkiIQ4SJRQPDxQlEg4hIv5HIiJEA4RkZIQCAoRkZIQBUR4WDxgODhgPFh4B/u8BYEhIXwIZMD5EPjAZAAAAAAMAzf+1AzMDSwANABkAQgAAAREuAScOAQcRHgEXPgEnFAYiJjURNDYyFhcBIgYUFjMhMjY0JisBNT4BNzU0JiIGHQEOAQcuASc1NCYiBgcVHgEXFQKcAVVGRlUBAVVGRlVAMVMyMlMxAf7lDhISDgF/DRMTDaB9lAITGxMBgXBvggETGhMBApR9AZUBDktbAgJbS/7yS1wBAVxLMDg4MAEOMDc3MP1TExsTExsTZAyggFcNExMNVW+CAgKCb1UNExMNV4CgDGQAAgDJ/8QDNwM3ABAAHwAAAS4BJw4BBx4BHwEWMj8BPgElPgE3HgEXBgIHBiInJgIC7gKCamqCAgJsWQoLJAsKWWz93QOwhISwAwm4SRQzE0m4AduBkQEBkYFL0nUODQ0OddNKprUBAbWmg/7YVhYWVQEpAAACAN3/xAMjAzwADQA2AAABES4BJw4BBxEeARc+AQEOARQWMyEyNjQmJyM1PgE3NTQmIgYHFQ4BBy4BJzUuASIGHQEeARcVAoIBRzo6RwEBRzo6R/63DRMTDQGQDRMTDah3iwESGhIBAX1mZn0BARIaEgGLdgGAATI9TAEBTD3+zjxNAQFN/sEBExoTExoTAV4MmndlDRISDWVkfAICfGRlDRISDWV3mgxeAAAAAgDJ/8QDNwM3AA4AGgAAEz4BNx4BFwYCBwYiJyYCJT4BNy4BJw4BBx4ByQOwhISwAwm4SRQzE0m4AS4vPgEBPi8vPgEBPgHbprUBAbWmg/7YVhYWVQEpOgE+Ly8+AQE+Ly8+AAUAeP/AA4cDQAARAB0APgBKAFkAAAEeAR0BFxEuAScOAQ8BFzU+AQEWMjY0JwEmIgYUFxMiBhQWMyEyNjQmKwE1NjcnBgcuASc1NCYiBh0BHgEXFQE0JiIGBxUUBxc2NQUyNjcnBiMiJic1JxUeAQHoJSxCAk9COkwJAT8BLAGLChsTCv00ChsUCp4NExMNAZANExMNp1I7LjVLZnwCEhsSAop3AUMSGhIBBTUP/tUZJA41Bg8iJgFCAU0DAgEzJ85CAQ5EVgEBQzYNPiwnM/0dChMbCgLNChQbCv0WExoTExoTXggqLiQBAn1kZQ0SEg1ld5sMXgHhDRISDWUZGTMuN5MJCTQHKSIaQ1RKSQAAAwAG//UD+gMLAAwAHwArAAAXITI3ESYnISIHERYzAS4BDwEnJiciDwERNjMhMhYVESU+ATcuAScOAQceAY0C5oYBAYb9GoYBAYYCQR1HHcFQGx4dGoABQQLkICL9kio5AQE5Kis5AQE5CoQCDIQBhf30hQGMGgEbrUgYARhzAdhDISL+J9MBOiorOQICOSsqOQAAAAQAQv/RA74DLwAbACUALAA4AAAFMj8BNjURJiciDwEnJiIPAQYVERQWMzI/ARcWJSI1ETQ/AREHBgUmLwERHwETETc2NxYXERQPAQYCjRgT4SUBMA8U5OkTMBTeJhoXDxXZ7Rj+GAYOwMIDAdYJCboNv0XCBAIFAQ6sCi8LfxUrAlIwAQt+jgwMfxUq/a4YGgx1hQxpBwITDwlv/cxrAQ4FBWkCMgh0/c8CNWkCAQEG/e0QCGQGAAADAFb/zQOmAzAACQARACkAAAE3NjQvASYGDwEBNwEnAQcGFgMhMjY3EQcRDgEjISInETYzITchIgcRFgN8HwsLCgobCx/+TVMBezv+hicCCasB9zo/AUUBHhf+C0ECAkEBc0X+R4YBAQLKHwwbCwsKAgof/gckAXo6/oZQBgr+w0NCAd1F/mshIkMB50NFhP4ShQAABgBq/6EDlgNfAB8AKQAzAEAATQBZAAAlEzMyNjQmJyM1NCYnIw4BBxUjDgEUFjsBEx4BFyE+AQE0NjsBMhYdASMDLgEnAyEDDgEHJzI2NxM0JiIGBwMUFiMyNjUDNCYiBhUTHgE3ETQmIgYHER4BMjYDLh4rDRISDbw5MqEyOAG6DRMTDSsdAzgvAYkuOP5eGBSWFBjuRxMYAR4CDxwBGBQ/Cw4BDA4VDgENDvMLDg0PFQ4NAQ2kDxUPAQEPFQ8GAnMSGxMBQC42AQE2LkABEhwS/Y0vNQEBNQMfEhcXEjz9JwEYEwJs/ZQTGAFMDw0BxA0PDwz+OwwQEAwBxQwPDw3+PA0PHAHFDA8PDP47DBAQAAAAAgCE/5wDfQNkABoAOAAAJTI2NREnFxYyNjQvASYiDwEOARYyPwEHERQWAyE2JxE2JyMVMzIWFREUBiMhJicRNjczNSMiFREUAgAOFAJdChsSCpEMGgyRCQERHApeAxToAeyHAQGHd3YgIiIg/hdCAQFCdniG7BMOAbhAYwoQGwmMDAyMCRoRCmRB/kgOE/6wAYQBp4QBRSIi/mEiIgFDAZ9DAUWF/lmFAAAAAAIAhP+xA30DTgAaADgAACUyPwE2NCYiDwE3ETQmIgYVERcnJiIGFh8BFgMhMicRNicjFTMyFhURFAYjISInETY3MzUjBhURFAIADQyRChIbCl0CFBwUA14KHBEBCpAM6QHshwEBh3x7ICIiIP4XQgEBQnp8hssMiwobEApkQAHEDhMTDv48QGQKEBsKiw3+6IQBu4QBRSMh/k0iIUMBs0MBRQGE/kWFAAMAS//LA7UDNQALABcANAAABT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BJTI/ARcWMjY0LwE3NjQmIg8BJyYiBhQfAQcGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPO/tIPCnp5Ch4TCnp7ChQcCnt7ChwUCnp6ChQ1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMyyC3p6ChMeCXp7ChwUCnt6ChMdCnp6CR4TAAACADH/9gPPAwkAIAA+AAAFMjY3ATY0JwEuASMiBh0BIwYCFx4BMxY2Nz4BFzMVFBY3Ij0BNAcjDgEHBiI1PgE3MxY9ATQ2MhcBFhQHAQYCKw8cEAFSFxf+rhIZDxccDebVAQEZEg4bCzinew0cLwYOOpnCJQIFAqzZOg4DBwMBMQUF/s8ECQ4OAT8YLBgBPBAPHheiAv7w8BwdAQ0TaFABpBYcXAamDwEBX1IEBZ7xBwEPqgMDA/7bBAgE/t8EAAACADH/9gPPAwkAIAA+AAAFMjY9ATM2FhceATcyNjc2AicjNTQmIyIGBwEGFBcBHgEnIicBJjQ3ATYyFh0BFDczHgEXFCInLgEnIyYdARQB1RYcDXunNwwbDhIZAQHV5g0cFw8aEf6uFxcBUhAbCQME/s8FBQExAwcDDjrZrAIGASXCmToOCRwWpAFQZxQNAR0c8AEQA6IWHg8Q/sQYLBj+wQ4OXAQBIQQIBAElAwMDqg8BB/GfBARSXwEBD6YGAAADAEv/ywO1AzUACwAXAEMAAAU+ATcuAScOAQceATcuASc+ATceARcOAQEeARc+ATc0JiIGFQ4BBy4BJz4BNzIXBwYeATI/ATY0LwEmIgYUHwEmIw4BAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzv6lAmxSUWsCERgRAko4OUoCAko5CAcqCAEOFwhTCAhSCBgOBx4GBkpqNQX4uLj4BQX4uLj4RATMnJvNBATNm5zMAVRSbQICbVEMEBAMOUoCAko5OEoCASkIGA8IUwgXCVQIEBcIHwECaQACABz/sQPkA0kAGQA9AAAXFj8BFxY2JwM3NiYjBQMmIgcDJSIGHwEDBjciPwE2LwEmNjMFFj8BNjIfARY3JTIWDwEGHwEWBi8BJg8BBtsaKOPjKDUQWeUoFDL+51UPQRBV/ucxFSnlWhBZAQFVCRbVAwEEAQMaCEoCAwFKCBoBBAMBA9UWClUBAgPOFhXPAjwTHqamHicuAQukHD8CAQwvL/70Aj8cpP71LkEE9RkPkwIDBQEa+AQE+BoBBQMCkw8Z9QQCA50QEJ4CAAADAEv/ywO1AzUACwAXADQAAAU+ATcuAScOAQceATcuASc+ATceARcOASc+ATc1MzI2NCYnIzUuASIGHQEjDgEUFjsBFRQWAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzpwREwGGEhYVE4YBEyIShhMWFxKGEjUF+Li4+AUF+Li4+EQEzJybzQQEzZuczJwBFRN/EiMSAYYTFhYThgESIxJ/EhYAAAMAS//LA7UDNQALABcAIwAABT4BNy4BJw4BBx4BNy4BJz4BNx4BFw4BASEyNjQmIyEiBhQWAgC4+AUF+Li59wUF+LibzQQEzJybzQQDzv64AVkSFhUT/qcTFhc1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMwBRBIiExMiEgACAEv/ywO1AzUACwAXAAAFPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgECALj4BQX4uLn3BQX4uJvNBATMnJvNBAPONQX4uLj4BQX4uLj4RATMnJvNBATNm5zMAAAAAAIAS//LA7UDNQALACgAAAU+ATcuAScOAQceATciJjQ/AScmNDYyHwE3Nh4CDwEXFhQGIi8BBwYCALj4BQX4uLn3BQX4Hg8VC4CACxUeCoGBCx0UAQuAgAoVHgqAgAs1Bfi4uPgFBfi4uPjyFR4KgYAKHhQKgIAMARQeCoGACh8VCoGBCgAAAAACAEv/ywO1AzUACwA3AAAFPgE3LgEnDgEHHgEDPgE3MhcnJjQ2Mh8BHgEPAQYiJjQ/ASYHDgEHHgEXPgE3NDYyFhUOAQcuAQIAuPgFBfi4ufcFBfgLA2tMBgYfBw8YCFQHAQhUCRcPCCoHCDpMAQFMOjlLAhEZEQJtUlNuNQX4uLj4BQX4uLj4AZ5SawIBHwgYEAhWCBgIVAgPGAgqAQEBSzk6SwICSzoMEREMU24CAm8AAAABABz/sQPkA0kAGQAAFxY/ARcWNicDNzYmIwUDJiIHAyUiBh8BAwbbGijj4yg1EFnlKBQy/udVD0EQVf7nMRUp5VoQPBMepqYeJy4BC6QcPwIBDC8v/vQCPxyk/vUuAAACAEv/ywO1AzUACwAoAAAFPgE3LgEnDgEHHgE3IiY9ASMiJjQ2OwE1NDYyFh0BMzIWDgErARUUBgIAuPgFBfi4ufcFBfi3EhONExcWFI0TJBSNFBcBFhSNFDUF+Li4+AUF+Li4+NsXE4UTJROOExcWFI4TJROFFBYAAAAAAgBL/8sDtQM1AAsAFwAABT4BNy4BJw4BBx4BEyImNDYzITIWFAYjAgC4+AUF+Li59wUF+AMUFxcUAWoUFhcTNQX4uLj4BQX4uLj4AYoTJRMTJRMAAwBL/8sDtQM1AAsAFwAjAAAFPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgEnPgE3LgEnDgEHHgECALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOm3SeAwOedHadAwOeNQX4uLj4BQX4uLj4RATMnJvNBATNm5zMUgOedXWeAwOedXWeAAACAEn/yQO3AzcACwAgAAAFLgEnPgE3HgEXDgETJiIPAQYiLwEmIgYUHwEWMj8BNjQCALr4BQX4urr4BQX4CwkaCcgKGQk7ChkTCWgJGQr0CTcF+Lq6+AUF+Lq6+AJGCQnICgo6ChMZCmcJCfQKGQAAAQDjAGMDHQKdABsAADcGFBYyPwEXFjI2NC8BNzY0JiIPAScmIgYUHwHuCxYfDNzcCx8XC9zcCxcfC9zcDB8WC9ukCx8XC9zcCxcfC9zcCx8XC9zcCxcfC9wAAAABAQAAgAMAAtgAFgAAJS4BJz4BNzUXBzUOAQceARc+ATczDgECAG2QAwOQbcDAXHoCAnpcXHoCKAOQgAOQbW2QA1iAb28CelxcegICelxtkQAAAAABAEv/nQO1A14AKQAABT4BNy4BJyYOARYXHgEXDgEHLgEnPgE3FR4BPwE2NC8BJgYHFQ4BBx4BAgC4+AUBYlQPHREHDUVRAQPOm5vNBAOafAEZEooODokSGgGZxgMF+GMF+LhtuD0LBRwbCjKYXZvNBATNm4XAHj4WDA1gChsLYAwLFz0g66K4+AAAAAIAHP+xA+QDSQAZAC0AABcWPwEXFjYnAzc2JiMFAyYiBwMlIgYfAQMGJRE2HwEWNyUyFg8BBh8BFgYvASbbGijj4yg1EFnlKBQy/udVD0EQVf7nMRUp5VoQAUACAUoIGgEEAwED1RYKVQECA84KPBMepqYeJy4BC6QcPwIBDC8v/vQCPxyk/vUu5wIiAQT4GgEFAwKTDxn1BAIDnQgAAAAMAB3/nQPjA2MADAAZACYAMwBAAE0AWgBnAHQAgQCOAJsAAAEiBgcVHgEyNjc1LgEHDgEfAR4BPgEvAS4BBSYGDwEGHgE2PwE2JgUGFh8BFj4BJi8BJgYFLgEPAQ4BHgE/AT4BFzQmJyMOARQWFzM+ASUUFhczPgE0JicjDgEFNiYvASYOARYfARY2JR4BPwE+AS4BDwEOAQU+AS8BLgEOAR8BHgElFjY/ATYuAQYPAQYWFzI2NzUuASIGBxUeAQIADREBAREaEQEBEf4MBgZMBxgWBwdMBxcB2AwXCEwGBxYYB0wGBv1gBgcLhAsYDQYMhAsYAz8HGAuFCwYNFwyECwc6EQ6YDRERDZgOEfw6EQ2ZDRERDZkNEQOGBgcLhAwXDQYLhAwY/MEHGAuFCwYNGAuECwcCmgwGBkwHGBcGBkwIF/4pCxcISwcGGBcHTAYG/Q0RAQERGhEBAREDYxEOmA0REQ2YDhFABxgLhQsGDRgLhAsHBgYHC4QLGQwGC4ULGKoMFwhMBgYXGAdMBgYMDAYGTAcYFwYGTAgX5g0RAQERGhEBARENDREBAREaEQEBEf4LFwhMBgYXGAdMBgYMDAYGTAcYFwYGTAgXvQcYC4ULBg0XDIQLBwYGBwuEDBcNBgyECxhHEQ6YDRERDZgOEQAAAAIAbf/pA5QDFwAVACEAACUyNjcXFjI+AS8BPgE3LgEnDgEHHgE3LgEnPgE3HgEXDgEBtjRhK8sOKhoBDsogIwEEuoyMugMDuoxtkwICk21tkwMDk4QgHssOGykPyiplOYu7AwO7i4y6QwOTbW2SAwOSbW2TAAAAAAEAnwAXA2EC6AAcAAAlPgE1ESE+ATQmIyERNCYiBhURISIGFBYXIREUFgIAEBYBFRAWFhD+6xYgFv7rEBYWEAEVFhcBFQ8BHQEWIBYBHg8VFQ/+4hYgFgH+4w8VAAAAAAEBQABAAsACwAAFAAABNwkBJwEBQEEBP/7BQQD/An9B/sD+wEEA/wABAUAAQALAAsAABQAAAScJATcDAsBB/sEBP0H/An9B/sD+wEEA/wAAAQC4AIUDWgJ/ABcAAAEXFhQHAQYiLwEmND8BNjIfARYyNwE2MgNDDQoK/lwLHQy1CwsNCx0LdQwdCwFjCx0CdA0LHQv+XAsLtgsdDAwLC3UKCgFjCwAAAAIAC/+9A/UDQwAnAD0AABchPgE1ERcWFzI2NyYvATU0JicjDgEdAScmIgcBBgceATM2PwERFBYBNCYrASIGFREjJicRAT4BFwERBgcj5wIzLjI3DRIQFAEBDJURDjgOEaoXOBf+SwwBARQQEg03MwHCEQ+2DxKPKQEBJgcQBwEmASmQQwExLQGHMg4BEg8TCof9DhABARAOkZoVFf5yCRMPEgEOMv55LjABYQ8REQ/+4wEqAbUBDAYBB/70/ksqAQAAAAADAEv/ywO1AzUACwAXACwAAAU+ATcuAScOAQceATcuASc+ATceARcOASUyPwE2Mh8BFjI2JicDJiIHAwYUFgIAuPgFBfi4ufcFBfi4m80EBMycm80EA87+tQsGlAYKBpMIFQ0BA6QLKgqlAww1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMyIB5QFBZQHDRMJAaMaGv5dCBQNAAQAVv/TA6wDKgAtAGYAcgB+AAAlNjc+ATc2NyY2NyYnBiY3NSYnBwYiLwEHFRYGJyMHFxYUDwEWFzM2FgcWFz4BByYnNzYmDwEmJzc2NC8BNjcXFjYvATY3FxYyPwEWFwcGFj8BFhcHBhQfAQYHJyYGHwEGBycmIg8BEz4BNy4BJw4BBx4BFy4BJz4BNx4BFw4BAoYPDwJlTQcGNwI4BAZSaQILDAI6lzoGEwJrUwoHBj09AwUFBFJrAQ4OOJGsQzsCATovMSMRJyEhKQ8gOC86AQM4PiUgUyAiQDcCATsuLCMOHiIiHBElJS86AQI8RBkgUyAcXy8+AQE+Ly8+AQE+L0ZdAgJdRkZdAgJdGwYHTWUCDw85kTgODgFrUgQFBQM9PQcIClNrAhMGOpc5AwwLAmlSBgQ4An4OIywvOgECN0AiIFMgJT44AwE6LzggDykhIScRIzEvOgECO0McIFMgGUQ8AgE7LiUlERwiIh8BPwE+Ly8+AQE+Ly8+OAJdRkZdAgJdRkZdAAAAAAMAP/+/A8EDQQAUACAALQAABTI2NwE2NCYiBwEOARUUFhcFEx4BAyUmNDclNj8BBwYHAyInAwE+ATcHBgcDBgJXFyIMARkMGCse/R8cJCgfATVaCRxr/tgKCQJEGRkxLhcSmAQDWgEmEigRFwwK2wRBJR8C3R4rGAz+5QohFx0cCVr+ziEpAb1aAwgE2woMFyUTEv15CgEoAScSMBYxGRr9vAkABABL/8sDtQM1AAsAFwAgADkAAAU+ATcuAScOAQceATcuASc+ATceARcOAQMyNjQmIgYUFgMzPgE0JisBNTQmKwEiBhQWOwEVIyIGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOnxgfHzAfIDCuDhERDjUREFENEhINLjUOERE1Bfi4uPgFBfi4uPhEBMycm80EBM2bnMwCASAvICAvIP57ARAaEdoSFREaEcURGhAAAAAABABL/8sDtQM1AAsAFwA8AEUAAAU+ATcuAScOAQceATcuASc+ATceARcOAQM+AT0BNDY3PgE3LgEOAQcGFRQWMzI2NzY3HgEVFAYHDgEdARQXPgE0JiIGFBYCALj4BQX4uLn3BQX4uJvNBATMnJvNBAPOpBATFRYgJwECTnBFCQQSCxIPCRUrHSMbHBgeIRMbGicbGzUF+Li4+AUF+Li4+EQEzJybzQQEzZuczAEPARENBREbDxMvJTY4ASseCwsODxEMJQEBHRkVHhIQJx8GIoABGSYZGSYZAAAAAAMA0f/LAy8DNQAUABwAKwAAASIGBxUGFREUFjMhMjY1ETQnNS4BBz4BMhYXFSEFMhYVERQGIyEGNRE0NjMCAF2FA0owMAGeMDBKA4X9AlqIWgL+wAFtDw4OD/5mHQ4PAzWBg2IJW/7FNDExNAE7Wwlig4H7Wl9fWmlBDhL+vBIPASIBRBIOAAAGAGQBLgOdAdMACAASABsAJQAuADgAAAEeARQGIiY0NjcOARQWMjY0JicFHgEUBiImNDY3DgEUFjI2NCYnBR4BFAYiJjQ2Nw4BFBYyNjQmJwIAFBoaKBoaFCMvL0YvLyP+thMbGycaGhQkLi5HLy8jApUUGhonGxsTIy8vRy4uJAGvARooGhooGiUBL0YvL0YvASQBGigaGigaJQEvRi8vRi8BJAEaKBoaKBolAS9GLy9GLwEAAAAAAgCD/9sDfQMlACEANAAAFz4BNzU+ATceARcyPgI3ES4BIw4BBy4BJyIOAgcRHgEBLgEnIgYHET4BMx4BFzY3EQ4BpA4SAQg6MHO4bTE1LRoBARkTD0A3brd0MTUtGgEBEgI5Z7l4JDwSBDYybrhzRiwFNSUBEg7uBA8BBUQFCxUkHQG0ERMBEAEFRAULFSQd/TgOEgEVBUQFCAgBkwsWBEQFAQ3+bwsWAAAAAAIAC/+9A/UDQwAhADkAABMeATM2NwE2MhcBFhcyNjcmLwE1NCYnIw4BHQEnJiIHAQYTFBYXMxE0NjczHgEVETM+ATURASYiBwELARQQEg0BogcQBwGiDRIQFAEBDJUQDjkOEaoXOBf+Swx6My2uEg+XDxKtLjL+lAcPB/6VAYMPEgEOAX0HB/6DDgESDxMKh/0OEAEBEA6SmxUV/nMK/oYtMQEBMQ8RAQERD/7PATEtATkBSAcH/rYAAAAAAgBW/9MDrAMqADgARAAABSYnNzYmDwEmJzc2NC8BNjcXFjYvATY3FxYyPwEWFwcGFj8BFhcHBhQfAQYHJyYGHwEGBycmIg8BNz4BNy4BJw4BBx4BAaFDOwIBOi8xIxEnISEpDyA4LzoBAzg+JSBTICJANwIBOy4sIw4eIiIcESUlLzoBAjxEGSBTIBxfTmcCAmdOTmcCAmcsDiMsLzoBAjdAIiBTICU+OAMBOi84IA8pISEnESMxLzoBAjtDHCBTIBlEPAIBOy4lJREcIiIf9gJnTk5nAgJnTk5nAAMAS//LA7UDNQALABQALQAABT4BNy4BJw4BBx4BEyImNDYyHgEGAy4BNDY7ATUjIiY0NjsBMhYdATMyFhQGBwIAuPgFBfi4ufcFBfi0FyAfMB8BIV4OEREONS4NEhINURARNQ4REQ41Bfi4uPgFBfi4uPgCSSAvICAvIP57ARAaEcURGhEVEtoRGhABAAAAAAMAS//LA7UDNQALADAAOQAABT4BNy4BJw4BBx4BEyI9ATQ2Nz4BNTQmJwYHDgEjIiYnNDc+AhYXDgEHDgEdARQGByImNDYyFg4BAgC4+AUF+Li59wUF+LAkHxkeHCQfLRUKERILEwEECUl2UgIBKSEXGBIQExwcJxwBHDUF+Li4+AUF+Li4+AFTIwYhKRETIBYaHgECJg0REA8LCyAtATs4JzEVDxwTBQ4SgRopGRkpGgAAAAMAZAEuA50B0wAJABMAHQAAAQ4BFBYyNjQmJyEOARQWMjY0JichDgEUFjI2NCYnAgAjLy9GLy8j/rYkLi5HLy8jApUjLy9HLi4kAdMBL0YvL0YvAQEvRi8vRi8BAS9GLy9GLwEAAAAABgBQABMDsALsABgAIQA5AEIAWwBkAAABMjY3MzI2NCYrAS4BIgYHISIOARYzIR4BNy4BNDYyFhQGBSIGFBYXMx4BMjY3IT4CJichLgEiBgcXIiY0Nh4BFAYBPgE3MzI2NCYnIy4BIgYHIQ4BHgEzIR4BNyImNDYyHgEGApohNAyUDRMTDZQMM0Q0C/46DxMBFQ4Bxgs0IhYcHSocHP3CDRMTDZkLNEQ0CwHBDxMBFQ7+Pws0RDMMYRUdHSscHAEZIjMLlQ0TEw2VCzRDNAv+Og4VARMPAcYLNCIVHRwrHAEeAh8lHxQdFB4mJh4UHRQfJTQBHCsdHCwcshMeEwEeJiUfARMdFAEeJSUeVR0qHQEcKxz+xQElHxMeEwEfJCQfARQdEx8lNB0rHBwrHQAAAAYAUQBHA7ACuQAIABQAHQApADIAPgAAEz4BNCYOARQWNyEyNjQmJyEOARQWAzI2NCYiBhQWNyE+AS4BJyEOARQWAz4BNCYOARQWNyEyNjQmJyEOARQWhhYgIC0eHtUCSQ8TEw/9tw8TE68WICAtHh7VAkkOFQETD/23DxMTrxcfIC0eHtUCSQ8TEw/9tw8TEwJNAR8sIAEeLh4TEx4TAQETHhP+6SAsIB8uHhIBFB0TAQETHhP+6QEeLSABHi4eExMeEwEBEx4TAAAAAAMAkgClA20CWwAMABkAJgAAEz4BMyEyFhQGByEiJhU+ATchHgEUBgchLgEVPgE3IR4BFAYjISImkgEUEAKSEBQUEP1uDxYBFBACkhAUFBD9bg8WARQQApIQFBQQ/W4PFgI3DxUVHxQBFqgQFAEBFCAUAQEVqBAUAQEUHxUVAAAAAgAE/88D/AMYAB0AOwAAASMuAScOAQcGHgE2Nz4BNx4BFyMiBh8BFjI/ATYmBTMeARc+ATc2LgEGBw4BBy4BJzM+AS8BLgEPAQYWA9o4FeilX6M7CwIZGgsyiU2HwRM9FgsMXAoaCl0MC/w1OBXopV+jOwsCGBsKMIlQiMATPRYLDFwKGgpdDAsBn6HUBAFORA0dEQQMOT4BA6qGGRGEDg6DEhlYodMEAU5DDh0RBAw4PwECqoYBGBKDDgEPgxEZAAAAAAEAav+3A50DUAAzAAAJAQYuAjcBPgEXFgYHAQYuAjcBPgEmBgcBDgEXFjY3ATY0Jy4BBwEGFhceATcBNi4BBgMm/sU/kG0DPAGuJl4lIgYl/lwQIhcDDwElCgETGAr+2SABHiBTIgGmPDU1jD/+UE4ESEvDUwE9CgETGgFw/sU9BG2PQAGtJgcjJV4m/lwQBBchEQElChgTAQr+2iJVHiACIQGmPos2NAE8/lBTw0tIBE4BPQocEwEAAAAAAwAAAC8EAAKyAAsAFwAgAAAlNiQ3JiQnBgQHFgQ3LgEnPgE3HgEXDgEnMjY0JiIGFBYCAOcBFQQE/urm5f7pBAQBGORadwICd1padwICd1ogLCtBLCwvDe5HRu4NDe5GR+5iA3dZWnYCAnZaWXeELEArK0AsAAAAAQCMAK8DdAJRABAAADcGFBYyNwkBFjI2NCcBJiIHlwsWIgsBMQExCyIWC/60DCIM8QojFQsBOP7ICxUjCgFUDAwAAAABAIwArgN0AlIAEQAAJTY3ATY0JgYHCQEuAQYUFwEWAgARDAFMCxcgDP7P/s8MIBcLAUwMrgEMAVQLIBgBC/7IATgLARggDP6tDAAAAQEvAAwC0QL0ABAAACUWMjY0JwkBNjQmIgcBBhQXAo8LIhUL/sgBOAsVIgv+rAwMFwsWIQwBMQExDCEWC/60DCIMAAABAS4ADALRAvQAEQAAJTI3ATY0JwEmIgYWFwkBBhQWAVYQDAFTDAz+rQwgGAELATj+yAsWDAsBTA0hDAFLDBcgDP7P/s8LIhYAAAAAAQC7/+sDRQMVABwAAAUyNjURJx8BFjI2NCcBJiIHAQYUFjI/AgcRFBYCABEVA4BiCyAVDP7kDSAM/uMMFSALYoADFRUVEQI0XI1gChUfDQEdDQ3+4w0fFQpgjVz9zBEVAAAAAAEAu//rA0UDFQAcAAABIgYVERcvASYiBhQXARYyNwE2NCYiDwI3ETQmAgARFQOAYgsgFQwBHA0gDAEdDBUgC2KAAxUDFRUR/cxcjWAKFR8N/uMNDQEdDR8VCmCNXAI0ERUAAAABAHIAOwOOAsYAHAAAExQXARYyNjQvAhchMjY0JiMhBz8BNi4CBwEGcg0BHQ0fFQpgkWgCHhEVFRH94meQYAsBFR8O/uQNAYAQDf7kDBUgC2KDBhUiFQaDYgsgFQEO/uUNAAAAAQByADsDjgLGABwAAAE0JwEmDgEUHwInISIGFBYzITcPAQYUFjI3ATYDjg3+5A4fFQpgkWj94hEVFRECHmiRYAoVHw0BHQ0BgBANARsOARUgC2KDBhUiFQaDYgsgFQwBHA0AAAEBHgAHAtoC3wAGAAAlEyMRIxEjAfzekZuQBwEoAbD+UAAAAAQADf/3A/MDCQAZAC4ARQBbAAAFMjY1ETQmIyIGDwEGKwEmHQEUNzMyHwEeASUWNjc+ATQmJy4BDgEXHgEUBgcGFgUiLwEuASsBBj0BNDsBMjY/ATYyFREUNxY2Nz4BNCYnLgEHDgEXHgEUBgcGFgH2FhwcFw8aEckEB39bW38HBMkQGwGCDRsKKi8uKwobGQMJJCgoJAkD/oEDBL4IDgiPGRmPCA4IvgMK2gwaChocHRkKGgwOAwoTFRYSCgMJHBYCqxceDxCyBAFgq2ABBLQODlcIBg07l6aXPA0FERsPNIGQgjMOHAYEqwcFARq1GQQIrAMG/bAGcAgFDSJdZl0jDAUHCh0OGkdORxoOHAAABgA5/98D0gMiACQATABQAGIAZgByAAABNDEmLwEuAQchJgYPAgYVHgEXMzI2Nx4BNzY3HgEzMRY3PgEHBisBIiYvAQcGBwYHIiYvAQcOASsBLgE9ATQ/AjY3ITIWHwIWBgcmJwcXIwYHFSE1JicRFBYzITI2NRElJicHASEiJjQ2NyEeARQGA74BAkwLNCH95CAyC1MBCQFiSwcoRxozjjsMChpHKC4pOi+MFxkEGCoPODgGCB0mFyoPOTgQKhcGLDoFAlIFDgInBwwDTAIMHNoCAgPxAh8j/ZYnIh8XApAXH/3/AgEDAWv+PBAWFhABxBAWFgIUAQUEwR8kAQEiH8gFHB5NZwMiIDsMMAsMICEBFiF5WgwUE0RECAYYARQTREUSFQI9LgESEQXHDgEKB8MGKElrAQECCg8G4OEHEv70FxsbFwEKBwEBAgEAFR8UAQEUHxUAAAAFAED/4APAAyAACwAfADMASABdAAABISImNDYzITIWFAYDIyImNDY7ATI2PQE0NjIWHQEOAQUjLgEnNTQ2MhYdARQWOwEyFhQGAyImPQE+ATczMhYUBisBIgYdARQGISImPQE0JisBIiY0NjsBHgEXFRQGA6D8wA4SEg4DQA4SEm7ADhISDsAOEhIcEgE2/fegKTYBEhwSEg6gDhIS7g4SATYpoA4SEg6gDhISAvIOEhIOwA4SEg7AKTYBEgFgEhwSEhwS/oASHBISDqAOEhIOoCk2AQE2KaAOEhIOoA4SEhwSAiASDqApNgESHBISDqAOEhIOoA4SEhwSATYpoA4SAAAAAAEAMf/2A88DCQAgAAAFMjY9ATM2FhceATcyNjc2AicjNTQmIyIGBwEGFBcBHgEB1RYcDXunNwwbDhIZAQHV5g0cFw8aEf6uFxcBUhAbCRwWpAFQZxQNAR0c8AEQA6IWHg8Q/sQYLBj+wQ4OAAEAMf/2A88DCQAgAAAFMjY3ATY0JwEuASMiBh0BIwYCFx4BMxY2Nz4BFzMVFBYCKw8cEAFSFxf+rhIZDxccDebVAQEZEg4bCzinew0cCQ4OAT8YLBgBPBAPHheiAv7w8BwdAQ0TaFABpBYcAAQACP/nA/gDGQAbACcANQBEAAAXITY3ESYrASImLwEuASsBIgYPAQ4BKwEiBxEWJS4BJz4BNx4BFw4BEyImNTQ+ATIeARUOAQcBMj4CNC4CIw4BBx4BjwLihgEBhmQYGg0jDychqyAoDyMNGhhhhgEBAfdkgwMDg2RkgwMDg9AXHg4ZHBkOAR4W/swiPTAaGjA9IkhfAgJfGQGEAcGEDRAmEhMTEiYQDYT+P4SIA4RkZIQCAoRkZIQBUR4WDxgODhgPFh4B/u8ZMD5EPjAZAl9ISGAAAwAR/9sD7wMlACUALgA3AAATHgE7ARMeATMhMjY0JiMhLgEvASEyNj8BNjcuASMhJy4BKwEiBgEeATI2NCYiBgUUFjI2NCYiBhEBEg2RRQYyLwH0DRISDf4TEhYDBwIgLzIHIgEBARUR/UQIAxkglw0SATgBJzopKTonAZAoOygoOygDBQ0T/ikuNRIcEgEXFC01LuMKBhATNxgZE/0OHicoOignHh4nJzwnJwAAAAAEABL/2wPvAyUAJAArADQAPQAAJSEyNjQmIyEuAS8BITI2PwE2Ny4BIyEnLgErASIGFBY7ARMeAQEHDgEjIScTMjY0JiIGFBYhMjY0JiIGFBYBbgH0DRISDf4TEhYDBwIgLzIHIgEBARUR/UQIAxkglw0SEg2RRQYyAmcfAhYT/d4lexwpKTonJwGuHigoOygoqxIcEgEXFC01LuMKBhATNxgZExoT/ikuNQHRzRQX+P1fKDooJzwnJzwnJzwnAAADAEn/yQO3AzcAFAAgACwAAAEWFA8BBiIvASY0NjIfARYyPwE2MgM+ATcuAScOAQceARcuASc+ATceARcOAQLFCQn0ChkJaAkTGQo7CRkKyAoZvJvPBATPm5vPBATPm7r4BQX4urr4BQX4AhQKGQr0CQlnChkTCjoKCsgJ/fUEz5ubzwQEz5ubz00F+Lq6+AUF+Lq6+AAAAAEAS//LA7UDNQALAAAFPgE3LgEnDgEHHgECALj4BQX4uLn3BQX4NQX4uLj4BQX4uLj4AAAFAAAAFgQAAr4ACwAcAC0ANgA8AAAlFjI+AScBJg4CFwE+ATcmJCcGBxc2Mx4BFxQPATY3JwYjLgEnNDcnDgEHFgQBLgMjIgcXJx4BFzMnAyQJFxABCf2RCBgQAQkCklhgAQP+6+hfUmImKVl1AhG/aFZiKzFZdQIWgl1mAQQBFgFdAREiKxgHB4TtAkMzD4YfCREXCQJvCAEQGAj9+zt7I0bqDQEcYRECdForJO0BH2MWAnZXMyqDPH8lReoBNxgrIhEBgw8yQwGGAAAFAAAAGAQAArsACwAdAC8ANwA/AAAlFj4BNCcBJg4CFyUGBxc2Mx4BFxQGBxc+ATcmJAM2NycGBy4BJz4BNycOAQcWBCU2NS4BJwYHEzY3AQYVHgEDHwoWEQj9lgkXEAEIAUtgUDA9Q8D7BFlOLlhhAQP+7OlnVjBCS8D7BAFeUi5dZgEEARYBpBECdVgsJVExKv7rFQJ0IQkBEBcJAmoIARAXCRQBHTATDMktGWMxLjx8I0bq/ZQBHjEVAQvFMhZoMy48fyRF698mK1l0AgEQ/nMBFQEVKjJXdQAABAAAAC8EAAKxAAsAFwAjACwAACU2JDcmJCcGBAcWBDcuASc+ATceARcOASc+ATcuAScOAQceATcuATQ2MhYUBgIA5wEVBAT+6+fk/ugEBAEY5L78BAT8vr39BAT9vVp2AgJ2Wlp3AQJ2Wh4oKDwnJy8M7kdG7g0N7kZH7i8LyDMtzA0NzC0zyCkCeFhadQICdVpYeIoBJzsoKDsnAAAAAAEAg//bA30DJQAhAAAXPgE3NT4BNx4BFzI+AjcRLgEjDgEHLgEnIg4CBxEeAaQOEgEIOjBzuG0xNS0aAQEZEw9AN263dDE1LRoBARIlARIO7gQPAQVEBQsVJB0BtBETARABBUQFCxUkHf04DhIAAAACAFX/wwOrAzwAMgBAAAATDgEHFhcWBw4BFRQXFgcOARUUHgEOARUUFjsBHgEVDgEHFBYzMjY3PgE3PgE3NCYnIyIBLgEnIx4BBw4BBzM+AdwaKAEBCgQHFB0PBwsPEgkTFgsqIZkdIwRABCIaFh0MMXQzKikBrpk8VQKrAWhSTTo3AQMxHj9KYAMzBiIfGQ0JAwkkGh4TCgcIIhYPHRARHRIgLAEbGC+HPB8hHRlem0I2bkt6mwT+62OGAyt8SlF1IwKFAAAAAAMAPP+dA8QDYwAwAGkAdwAAASMiBgcOAQcWFw4BFBcOARUUFwYVHgEXMzYXDgEHHgEXMjY3PgE3Mz4BNy4BJyMuAQczHgEXFgYHDgEHDgEnIic+ATcuASsBLgE1JjY3NjQnLgE1NDc2NTQnLgE1Jjc2NTQnLgE1NDc+AQUeARcOAQcjPgE1NCYnAZ47KUIYLDMBAQQWGAoPEQ4TAT8xohEBBUAEATUsHy8UJmZMUVJrAgJ1WI0rZXY8iaICASUrMnYyDBIKIQEFQAQBMyeZFRsBCw0GBAsJHQ0DCQgBLgoCCAQvEzoBuDtSAQFJNCcYFionA2MFBgs5KBAPEC81Fw8qFyEZGygxQAIBDiWJRC04ASMoSpRbA5dwb5YDFxlBA4dvRGk5QJ5fGRABJTeGNSUpARsWDxcMBg0FDxcNHhYJCwUEERQLIhcFCgMFEhAHIQwFBTADcVRVcgItYTg8ZygAAAAAAgBV/8QDqwM9ADIAQAAABT4BNyYnJjc+ATc0JyY3PgE1NC4BPgE1NCYnIyImJz4BNzQmIyIGBw4BBw4BFRQWFzMyAR4BFzMuATc+ATcjDgEDIxsoAQEKBQgUHAEPCAwPEgoSFgsqIZkeIgEFQAQiGhYdDDF0Myoqrpk8VP1WAWhSTTo3AQMxHj9KYDMGIh8YDgkDCSQaHhMKBwgiFg8dEBEdEiArARwYL4c8HiIdGV6cQTZuTHmbBAEVY4YDK3tLUXUjAoUAAAABAFb/9wOqAwkAFwAABTI2NzYSNy4BJyIGBy4BIw4BBxYSFx4BAgAHEQe40QIDhmo9XR0dXjxqhgMC0LkHEQkHBHQBB4pzjQJANzdAAo1ziv73cgQHAAAAAwA8/50DxANjADEAagB4AAAFMzI2Nz4BNyYnPgE0Jz4BNTQmJzY1LgEnIyInPgE3LgEnIgYHDgEHIw4BBx4BFzMeATcnLgEnJjY3PgE3PgEXMhcOAQceATsBHgEVFgYHBhQXHgEVFAcGFQYXHgEVFgcGFRQXHgEVFAcOASUuASc+ATczDgEVFBYXAmI7KUIYLDMBAQQWGAoPEQcHEwE/MaIRAQVABAE1LB8vFCZmTFFSawICdViNK2V2PImiAgElKzJ2MgwSCiEBBUAEATMnmRUbAQsNBgQLCR0MAQMJCAEuCgIIBC8TOv5IO1IBAUk0JxgWKidjBQYLOSgQDxAvNhYPKhgPHgwbKDFAAg0liUQtOAEjKEqUWwOWcW+WAxcZQQECh29EaTlAnl8ZEAElNoc1JSkBGxYPFwwGDQUPFwwfFgkLBAURFAsiFwUKAwUSEAchDAUFMANxVFVyAi1hODxnKAACAFb/9wOqAwkAFgAwAAATFhIXHgEyNjc2EjcuASciBgcuASMOARc+ATceARceATI2Nz4BNx4BFw4BBwYiJy4BVgLStwcRDhEHt9ICA4ZqPV0dHV48aoZCAl9NO0oVCA4ODQkVSjtNXwIFzIsHBQaLzAIHiv76dQQHBwR1AQaKc40CMywsMwKNc1ZmAQE6IgwKCgwiOgEBZlZ67VwFBVztAAAAAAQAKP/DA9gDPQAYACEAKgAzAAAFMjY/ASEyNjURNCYnIQ4BFREUFjsBFRQWEw4BIiY0NjIWFw4BIiY0NjIWFw4BIiY0NjIWASYNFg+bASFgZGRg/dhgZGRgFBRZASU1JCM2JdcBJTQlJDUl1wEkNSQkNSQ9Dg6NZV8BSF9lAQFlX/64X2V8FRcB/xskJDUlJRobJCQ1JSUaGyQkNSUlAAACACb/mwPaA2UAIgAsAAAXAScmNwE+ATIWFwEWFA8BATY1ETYmJwEuASIGBwEOARcRFBchMjcBJiIHARYxARToDQ4BbhAYGRYRAW8HB+YBEgoBERf+pxgqLioX/qYXEQF6ArI/Gf6LGzQb/okVHwER4RALARwNDQ0N/uQFDwfh/vASLAGyIioTAQsTFhYT/vUTKiL+Ti1YFwFxGxv+jRUABQAm/5UD2gNrABMAIwApADAAOgAAFyEyNRE2JicBLgEiBgcBDgEXERQBLgEiBg8BLQE+ATIWFw0CETcXByYBERQHJzcWASIjATYyFwEiI60CpoYBGB7+tRcrLioX/rUeGQECMxYtLSwWHP7/AUIPFxsWDwFD/wD98gH28QYDMAXw9AH9EwQFASsbMhsBKgUFa4UBqi02FwEEExYWE/78FzYt/laFAZsWFBQWG/37DA0NDPz8+wG2DPTsDAHI/koRDe3xBP4BASYcHP7aAAAAAAIA1v/OAyoDMgAUABwAAAEiBgcVBhURFBYzITI2NRE0JzUuAQc+ATIWFxUhAgBdhQNFKyoBqiorRQOF/QJaiFoC/sADMoGDZwdS/rkuKysuAUhSB2aDgftaX19abwAAAAMAQf/UA74DLAAHABQAIAAABREnJicRFxYlMj8BEQYPAQYXERQWBTY/ATY1ESYnIg8BAnHUCw3YCv4MDxW0DAzLJwEaAlAGB+AlATAPFL4sAs2BBwP9KXkFCgthAtcFB3UVKv2uGBkMAQV/FSoCUzABC2kAAgFf/7oCoQNGABMAHAAABTI2NxE+ATcuAScOAQceARcRHgEDLgE0NjIWFAYCAA4ZATZCAQJaRUVaAgFDNQEZIBcfHy4fH0ZkYAGKD1U4RVsCAltFOVUO/nZgYwLgASAuHx8uIAAAAAADAGf/ywOZAzUAFQAeADgAACUyNjc1PgE3NC4CIw4BBx4BFxUeAQMiJjQ2MhYUBhM+ATcuAScVHgEXDgEHLgEnPgE3NQ4BBx4BAgAOGQE2QgEYLjsgRVoCAUM1ARkgFx8fLh8fF8TUAQjFYUSJBgKnlZWnAgaJRGHFCAHUamRfyg9VOSA7LhgCW0Q6VA/KX2QCISAuICAuIP1AA2xLV2EBQwE7MDRGAgFHNDA7AUMBYVdLbAACAEv/ywO1AzUACwAXAAAFPgE3LgEnDgEHHgETLgEnPgE3HgEXDgECALj4BQX4uLn3BQX4uDdMAQFMNzhLAQFLNQX4uLj4BQX4uLj4ASwBSzg3SwEBSzc4SwAAAAEAP/+/A8EDQQAfAAAFMjY3ATY0JiIHAQ4BFRQWHwEWNjcBNhYHAQ4BHwEeAQJXFyIMARkMGCse/R8cJCgf6BQbDgHWCQ4H/koMBAdDCRxBJR8C3R4rGAz+5QohFx0cCUYGAw0BtwcOCf4oDBwV4iEpAAAAAwAG//UD+gMLAAwAGAAsAAAXITI3ESYnISIHERYzEy4BJz4BNx4BFw4BAy4BPQE3NjMyHwE3NjIfARUUBgeNAuaGAQGG/RqGAQGGuy08AQE8LSw8AQE85h8jgx0eIB1SzSBJIMUjHwqEAgyEAYX99IUBgQE7LS08AQE8LS07/sMBIx8bchobSbYbHLZDHyIBAAAAAAQAAP/ABAADAgAOABoAIwA6AAATNDYzITU0IyEiFREUOwEXITI1ETQjISIXEQYBLgE0NjIWFAYDIiY9ATc+ATIWHwE3PgEyFh8BFQ4BI41VUwIJef21enoTrgJLenr9tXoBAQEPJzIyTDMzvhscQxokKCcaJX8fMDIxH2MBHBoB2VNUCnh4/mh3u3gBnHd3/mR4AUoBM0wzM0wz/vMdGiA+FxwcGCByHSMiHl5RGh0ABAAA/8AEAAMCABMAIQAzADwAADczFQYzITI1ETQrATU0IyEiFREUNyInETY3IRYXFSEiFxETNjMhMhcRJy4BDwEnJiMiDwE3PgE0JiIGFBZ6SAF6Akt6ekh5/bV6ezsCAjsCSTsB/jt6AT4BOwJJOwKOGkAbrkUZHBkZZdImNDRNMzN7Q3h4AZx3P3h4/mh3Pj0BkTwBATw8d/7lARc9Pf69hhcBGJo/FhZYqQE0TTQ0TTQAAgBL/8sDtQM1AAsAIAAABT4BNy4BJw4BBx4BNyImNDcTNjIXExYUBiIvASYiDwEGAgC4+AUF+Li59wUF+A4KDAOfCikJnwQMFQePBQoFjwc1Bfi4uPgFBfi4uPjVDBMIAZUZGf5rCBMMBo8GBo8GAAUAeP/EA4cDPAAIABQANQBBAEgAAAERLgEnDgEHFQEWMjY0JwEmIgYUFxMOARQWMyEyNjQmJyM1NjcnBgcuASc1NCYiBh0BHgEXFQE0JiIGBxUUBxc2NQcnFR4BFzICagFGOzlHAQHoChsTCv00ChsUCp4NExMNAZANExMNp1I7LjVLZnwCER0RAop3AUMRHBEBBTUP570BRjojAawBBj1MAQFKOgf9cgoUGgsCzAoUGwr9FwETGhMTGhMBXgcqLiMBAnxkZA8REQ9kd5oMXgHfDxERD2QZGDQvNnq9QzxNAQAAAAMAAP/4BAADBAAZAC4ARAAABTI2NRE0JiciBg8BBisBIgcVFhczMh8BHgElFjY3PgE0JicuAQ4BFx4BFAYHBhYnFjY3PgE0JicuAQcOARceARQGBwYWAdsXGxwWEBkRuwUGf1sBAVt/BgW7DxwBqwwbCiouLioKGxkDCiMnJyQJBJ4LGwoZHB0YChoMDgQLEhUVEwkDCBwWAqYWHQEPELEEYKVgAQSzDg1XCQYNO5allTwMBhEcDjOBjoEzDhxqBwUMIlxmXCINBQgKHA8ZRk1HGg4cAAAAAAIAhP+xA30DTgALAC4AAAE+ATIWFzU0JiIGFRcRBz8BPgEWFA8BBiIvASY0NjIfAScRIyYVERQ3ITInETYjAd4BExwTARQcFEUCG0EJHRILkA0aDZALEhwKXQPThoYB7IcBAYcCWA0TEw3VDhMTDrr+8T4dRQoBEhsKjAwMjAobEgtiPgEPAYX+R4UBhAG5hAAAAAADAJIApQNuAlsAAAAMAB4AABMzITIVERQjISI1ETQFNz4BHgEVERQOASYvASY9ATSSSQFuSUn+kkkCM20JFBQLCxQUCW0OAltJ/txJSQEkSYdYBgMJEgv+4gsSCQIHWAsRcBEAAgCE/5wDfQNkABoALgAAAT4BPQEnFxYyNjQvASYiDwEOARYyPwEHFRQWAyE2JxE2KwERDgEiJjURIyIVERQCAA4UAl0KGxIKkQwaDJEJAREcCl4DFOgB7IcBAYfKARkkGcuGAh4BEg6HP2MKERoJjAwMjAkaEQpkQIcOEv19AYQBmoX+zRIYGBIBM4X+ZoUAAwBF/+QDuwMcABwAKgA4AAA3MzI9AT4BNx4BFxUUOwEyNj0BLgEnIw4BBxUUFhczMjY9ATQmJyMGBxUWITMyPQE0JyMOAR0BFBZlFwsCzaqrzAILFw4SA+u+Hr7rAxKJKScrKycpKwEBAkMoLS0oKCoqjgvxm7MBAbOb8QsQDe+u0QMD0a7vDRCqKCW5JicBASv8LCz8KwEBJya5JSgAAAUAhP+vA3wDUQAfACkANgBDAE8AABsBHgEzITI2NxMzMjY0JicjNS4BKwEiBgcVIw4BFBYzNzQ2OwEyFh0BIxMuATUTPgEyFhUDDgEFLgE1AzQ2MhYVExQGNw4BIiYnET4BMhYV1RsCLSgBcigtAhwxDRISDbABMyudKjMBrw4SEg7pGBSOFBjm/gwQEgEQGBATAQ/+3gwPFBEYEBIPnAERGBABARAYEgJ0/Y4pKiopAnISHBIBPSwzMyw9ARIcEn4SFxcSPf1RARIOAfENEhIN/g4OEQEBEQ4B8g0SEg3+Dw4SIA4SEg4B8Q0SEg0AAAIAHP+5BAkDOwBBAFwAACU1MzI+AjcuAS8BNzY1LgEnIgYPAScmDgIfAQcOAQcUHgI7ARUjLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHBRY/ATY0JiIPATcRNCYiBhURFycmDgEUHwEWAonOFigfEAEBLiY6BgEDeFs2Xh4cMRYqIxMBATcpMwESIysZwsJRagIBUUABID5LJSd6S3ifAwE8TAECZEz+ug0MkQoSGwpdAhQcFANeChwQCpANp0UQICgWJzoJDjsKClt4AjMuKg4GCBsnFjkMC0ArGCwiEkUCa1BFZBAnRDAOCzpFAQOfeA0ND15ATGUC7QEMjAkbEApjQAFKDhMTDv62QGMLARAbCYwMAAIAHAADBAoDOwAgADwAACUVDgEmJzUhLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHASYPAQYUFjI/AgcVHgEyNjc1JxcWMjY0LwEmAjYBJCMB/uxQawIBUUABIT5KJiZ7S3ifAwI9SwICZUz+ugwNkAoRHAlBHQMBEx0TAQNeChsRCpEMp3sUFRUUewJrUEVkECdEMA4LOkUBA594DQ0PXkBMZQIBagEMjAkbEQtEH0C2DhMTDrZAYwsRGwmMDAAAAAIAHAAIBAoDOwA/AFoAACU1Mz4BNy4BLwE3NjUuASciBg8BJyYOAh8BBw4BFRQeAjsBFSMuASc+ATcmPgIXPgE3HgEXFAceARcOAQcBNh8BFhQGIi8BFxEOASImJxE3BwYiJjQ/ATYCis0vPgEBLiU6BQECeVo3Xh4cMRUrIxMBAjcqMxIiLBjDw1BrAgFRQAEhPkomJntLeJ8DAj1LAgJlTP66DQyRChEbCl4DARMdEwEDXgkcEQqQDadFAT4vJzoJDjsKClt4AjMuKg4GCBsnFjkMC0ArGCwiEkUCa1BFZBAnRDAOCzpFAQOfeA0ND15ATGUCAWoBDIwJGxELY0D+tg4TEw4BSkBjCxEbCYwMAAAAAAIAHP+5BAkDOwAjAD4AACU1NC4BIg4BHQEhLgEnPgE3Jj4CFz4BNx4BFxQHHgEXDgEHBRY/ATY0JiIPATc1NCYiBh0BFycmDgEUHwEWAj0MFBgUDP70UWoCAVFAASA+SyUnekt4nwMBPEwBAmRM/roNDJEKEhsKXQIUHBQDXgocEAqQDafxDBQMDBQM8QJrUEVkECdEMA4LOkUBA594DQ0PXkBMZQLtAQyMCRsQCmNATw4TEw5PQGMLARAbCYwMAAAAEgDeAAEAAAAAAAAAEwAoAAEAAAAAAAEACABOAAEAAAAAAAIABwBnAAEAAAAAAAMAFQCbAAEAAAAAAAQACADDAAEAAAAAAAUAOwFEAAEAAAAAAAYACAGSAAEAAAAAAAoAKwHzAAEAAAAAAAsAEwJHAAMAAQQJAAAAJgAAAAMAAQQJAAEAEAA8AAMAAQQJAAIADgBXAAMAAQQJAAMAKgBvAAMAAQQJAAQAEACxAAMAAQQJAAUAdgDMAAMAAQQJAAYAEAGAAAMAAQQJAAoAVgGbAAMAAQQJAAsAJgIfAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQAAENyZWF0ZWQgYnkgaWNvbmZvbnQAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAHUAbgBpAGkAYwBvAG4AcwA6AFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwAAB1bmlpY29uczpWZXJzaW9uIDEuMDAAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADsASgBhAG4AdQBhAHIAeQAgADMALAAgADIAMAAyADAAOwBGAG8AbgB0AEMAcgBlAGEAdABvAHIAIAAxADIALgAwAC4AMAAuADIANQAzADUAIAA2ADQALQBiAGkAdAAAVmVyc2lvbiAxLjAwO0phbnVhcnkgMywgMjAyMDtGb250Q3JlYXRvciAxMi4wLjAuMjUzNSA2NC1iaXQAAHUAbgBpAGkAYwBvAG4AcwAAdW5paWNvbnMAAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AAEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC4AAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAGh0dHA6Ly9mb250ZWxsby5jb20AAAAAAAIAAAAAAAAACQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAhgAAAQIAAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnAA4A7wEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMHdW5pMDAwMAdjb250YWN0BnBlcnNvbglwZXJzb25hZGQNY29udGFjdGZpbGxlZAxwZXJzb25maWxsZWQPcGVyc29uYWRkZmlsbGVkBXBob25lBWVtYWlsCmNoYXRidWJibGUJY2hhdGJveGVzC3Bob25lZmlsbGVkC2VtYWlsZmlsbGVkEGNoYXRidWJibGVmaWxsZWQPY2hhdGJveGVzZmlsbGVkBXdlaWJvBndlaXhpbgtwZW5neW91cXVhbgRjaGF0AnFxCHZpZGVvY2FtBmNhbWVyYQNtaWMIbG9jYXRpb24JbWljZmlsbGVkDmxvY2F0aW9uZmlsbGVkBm1pY29mZgVpbWFnZQNtYXAHY29tcG9zZQV0cmFzaAZ1cGxvYWQIZG93bmxvYWQFY2xvc2UEcmVkbwR1bmRvB3JlZnJlc2gEc3Rhcgt3aGl0ZWNpcmNsZQVjbGVhcg1yZWZyZXNoZmlsbGVkCnN0YXJmaWxsZWQKcGx1c2ZpbGxlZAttaW51c2ZpbGxlZAxjaXJjbGVmaWxsZWQOY2hlY2tib3hmaWxsZWQKY2xvc2VlbXB0eQxyZWZyZXNoZW1wdHkGcmVsb2FkCHN0YXJoYWxmDHNwaW5uZXJjeWNsZQZzZWFyY2gJcGx1c2VtcHR5B2ZvcndhcmQEYmFjaw5jaGVja21hcmtlbXB0eQRob21lCG5hdmlnYXRlBGdlYXIKcGFwZXJwbGFuZQRpbmZvBGhlbHAGbG9ja2VkBG1vcmUEZmxhZwpob21lZmlsbGVkCmdlYXJmaWxsZWQKaW5mb2ZpbGxlZApoZWxwZmlsbGVkCm1vcmVmaWxsZWQIc2V0dGluZ3MEbGlzdARiYXJzBGxvb3AJcGFwZXJjbGlwCWV5ZWZpbGxlZAx1cHdhcmRzYXJyb3cOZG93bndhcmRzYXJyb3cObGVmdHdhcmRzYXJyb3cPcmlnaHR3YXJkc2Fycm93C2Fycm93dGhpbnVwDWFycm93dGhpbmRvd24NYXJyb3d0aGlubGVmdA5hcnJvd3RoaW5yaWdodAhwdWxsZG93bgVzb3VuZARzaG9wBHNjYW4KdW5kb2ZpbGxlZApyZWRvZmlsbGVkDGNhbWVyYWZpbGxlZApjYXJ0ZmlsbGVkBGNhcnQIY2hlY2tib3gRc21hbGxjaXJjbGVmaWxsZWQOZXllc2xhc2hmaWxsZWQIZXllc2xhc2gDZXllCmZsYWdmaWxsZWQVaGFuZHRodW1ic2Rvd25fZmlsbGVkDmhhbmR0aHVtYnNkb3duEmhhbmR0aHVtYnN1cGZpbGxlZAtoZWFydGZpbGxlZAxoYW5kdGh1bWJzdXAOYmxhY2toZWFydHN1aXQKY2hhdGZpbGxlZA5tYWlsb3BlbmZpbGxlZAhtYWlsb3Blbgxsb2NrZWRmaWxsZWQJbWFwZmlsbGVkBm1hcHBpbg1tYXBwaW5lbGxpcHNlC3NtYWxsY2lyY2xlEHBhcGVycGxhbmVmaWxsZWQLaW1hZ2VmaWxsZWQMaW1hZ2VzZmlsbGVkBmltYWdlcw5uYXZpZ2F0ZWZpbGxlZA5taWNzbGFzaGZpbGxlZAtzb3VuZGZpbGxlZA5kb3dubG9hZGZpbGxlZA52aWRlb2NhbWZpbGxlZAx1cGxvYWRmaWxsZWQKaGVhZHBob25lcwt0cmFzaGZpbGxlZA1jbG91ZGRvd25sb2FkEWNsb3VkdXBsb2FkZmlsbGVkC2Nsb3VkdXBsb2FkE2Nsb3VkZG93bmxvYWRmaWxsZWQHdW5pMDAwOQAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAQCFAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANoxE3MAAAAA2jSpUA==') format('truetype');
+ }
+
+ /* #endif */
+
+ .uni-icons {
+ font-family: uniicons;
+ text-decoration: none;
+ text-align: center;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list-item.vue"
new file mode 100644
index 0000000..b328e4a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list-item.vue"
@@ -0,0 +1,142 @@
+<template>
+ <view>
+ <view v-if="loaded || list.itemIndex < 15" class="uni-indexed-list__title-wrapper">
+ <text v-if="list.items && list.items.length > 0" class="uni-indexed-list__title">{{ list.key }}</text>
+ </view>
+ <view v-if="(loaded || list.itemIndex < 15) && list.items && list.items.length > 0" class="uni-indexed-list__list">
+ <view v-for="(item, index) in list.items" :key="index" class="uni-indexed-list__item" hover-class="uni-indexed-list__item--hover">
+ <view class="uni-indexed-list__item-container" @click="onClick(idx, index)">
+ <view class="uni-indexed-list__item-border" :class="{'uni-indexed-list__item-border--last':index===list.items.length-1}">
+ <view v-if="showSelect" style="margin-right: 20rpx;">
+ <uni-icons :type="item.checked ? 'checkbox-filled' : 'circle'" :color="item.checked ? '#007aff' : '#aaa'" size="24" />
+ </view>
+ <text class="uni-indexed-list__item-content">{{ item.name }}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ export default {
+ name: 'UniIndexedList',
+ components: {
+ uniIcons
+ },
+ props: {
+ loaded: {
+ type: Boolean,
+ default: false
+ },
+ idx: {
+ type: Number,
+ default: 0
+ },
+ list: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ showSelect: {
+ type: Boolean,
+ default: false
+ }
+ },
+ methods: {
+ onClick(idx, index) {
+ this.$emit("itemClick", {
+ idx,
+ index
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-indexed-list__list {
+ background-color: #ffffff;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ border-top-style: solid;
+ border-top-width: 1px;
+ border-top-color: #e5e5e5;
+ }
+
+ .uni-indexed-list__item {
+ font-size: 16;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .uni-indexed-list__item-container {
+ padding-left: 15px;
+ flex: 1;
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .uni-indexed-list__item-border {
+ flex: 1;
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ height: 50px;
+ padding: 15px;
+ padding-left: 0;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ border-bottom-color: #e5e5e5;
+ }
+
+ .uni-indexed-list__item-border--last {
+ border-bottom-width: 0px;
+ }
+
+ .uni-indexed-list__item-content {
+ flex: 1;
+ font-size: 14px;
+ }
+
+ .uni-indexed-list {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-indexed-list__title-wrapper {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ /* #endif */
+ background-color: #f7f7f7;
+ }
+
+ .uni-indexed-list__title {
+ padding: 6px 12px;
+ line-height: 24px;
+ font-size: 12px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list.vue"
new file mode 100644
index 0000000..49c4060
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-indexed-list/uni-indexed-list.vue"
@@ -0,0 +1,317 @@
+<template>
+ <view class="uni-indexed-list" ref="list" id="list">
+ <!-- #ifdef APP-NVUE -->
+ <list class="uni-indexed-list__scroll" scrollable="true" show-scrollbar="false">
+ <cell v-for="(list, idx) in lists" :key="idx" :ref="'uni-indexed-list-' + idx">
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE -->
+ <scroll-view :scroll-into-view="scrollViewId" class="uni-indexed-list__scroll" scroll-y>
+ <view v-for="(list, idx) in lists" :key="idx" :id="'uni-indexed-list-' + idx">
+ <!-- #endif -->
+ <uni-indexed-list-item :list="list" :loaded="loaded" :idx="idx" :showSelect="showSelect" @itemClick="onClick"></uni-indexed-list-item>
+ <!-- #ifndef APP-NVUE -->
+ </view>
+ </scroll-view>
+ <!-- #endif -->
+ <!-- #ifdef APP-NVUE -->
+ </cell>
+ </list>
+ <!-- #endif -->
+ <view :class="touchmove ? 'uni-indexed-list__menu--active' : ''" @touchstart="touchStart" @touchmove.stop.prevent="touchMove" @touchend="touchEnd" class="uni-indexed-list__menu">
+ <view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item">
+ <text class="uni-indexed-list__menu-text" :class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">{{ list.key }}</text>
+ </view>
+ </view>
+ <view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
+ <text class="uni-indexed-list__alert">{{ lists[touchmoveIndex].key }}</text>
+ </view>
+ </view>
+</template>
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ import uniIndexedListItem from './uni-indexed-list-item.vue'
+ // #ifdef APP-NVUE
+ const dom = weex.requireModule('dom');
+ // #endif
+ // #ifdef APP-PLUS
+ function throttle(func, delay) {
+ var prev = Date.now();
+ return function() {
+ var context = this;
+ var args = arguments;
+ var now = Date.now();
+ if (now - prev >= delay) {
+ func.apply(context, args);
+ prev = Date.now();
+ }
+ }
+ }
+
+ function touchMove(e) {
+ let pageY = e.touches[0].pageY
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
+ if (this.touchmoveIndex === index) {
+ return false
+ }
+ let item = this.lists[index]
+ if (item) {
+ // #ifndef APP-NVUE
+ this.scrollViewId = 'uni-indexed-list-' + index
+ this.touchmoveIndex = index
+ // #endif
+ // #ifdef APP-NVUE
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
+ animated: false
+ })
+ this.touchmoveIndex = index
+ // #endif
+ }
+ }
+ const throttleTouchMove = throttle(touchMove, 40)
+ // #endif
+
+ /**
+ * IndexedList 绱㈠紩鍒楄〃
+ * @description 鐢ㄤ簬灞曠ず绱㈠紩鍒楄〃
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=375
+ * @property {Boolean} showSelect = [true|false] 灞曠ず妯″紡
+ * @value true 灞曠ず妯″紡
+ * @value false 閫夋嫨妯″紡
+ * @property {Object} options 绱㈠紩鍒楄〃闇�瑕佺殑鏁版嵁瀵硅薄
+ * @event {Function} click 鐐瑰嚮鍒楄〃浜嬩欢 锛岃繑鍥炲綋鍓嶉�夋嫨椤圭殑浜嬩欢瀵硅薄
+ * @example <uni-indexed-list options="" showSelect="false" @click=""></uni-indexed-list>
+ */
+ export default {
+ name: 'UniIndexedList',
+ components: {
+ uniIcons,
+ uniIndexedListItem
+ },
+ props: {
+ options: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ showSelect: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ lists: [],
+ winHeight: 0,
+ itemHeight: 0,
+ winOffsetY: 0,
+ touchmove: false,
+ touchmoveIndex: -1,
+ scrollViewId: '',
+ touchmoveTimeout: '',
+ loaded: false
+ }
+ },
+ watch: {
+ options: {
+ handler: function() {
+ this.setList()
+ },
+ deep: true
+ }
+ },
+ mounted() {
+ setTimeout(() => {
+ this.setList()
+ }, 50)
+ setTimeout(() => {
+ this.loaded = true
+ }, 300);
+ },
+ methods: {
+ setList() {
+ let index = 0;
+ this.lists = []
+ this.options.forEach((value, index) => {
+ if (value.data.length === 0) {
+ return
+ }
+ let indexBefore = index
+ let items = value.data.map(item => {
+ let obj = {}
+ obj['key'] = value.letter
+ obj['name'] = item
+ obj['itemIndex'] = index
+ index++
+ obj.checked = item.checked ? item.checked : false
+ return obj
+ })
+ this.lists.push({
+ title: value.letter,
+ key: value.letter,
+ items: items,
+ itemIndex: indexBefore
+ })
+ })
+ // #ifndef APP-NVUE
+ uni.createSelectorQuery()
+ .in(this)
+ .select('#list')
+ .boundingClientRect()
+ .exec(ret => {
+ this.winOffsetY = ret[0].top
+ this.winHeight = ret[0].height
+ this.itemHeight = this.winHeight / this.lists.length
+ })
+ // #endif
+ // #ifdef APP-NVUE
+ dom.getComponentRect(this.$refs['list'], (res) => {
+ this.winOffsetY = res.size.top
+ this.winHeight = res.size.height
+ this.itemHeight = this.winHeight / this.lists.length
+ })
+ // #endif
+ },
+ touchStart(e) {
+ this.touchmove = true
+ let pageY = e.touches[0].pageY
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
+ let item = this.lists[index]
+ if (item) {
+ this.scrollViewId = 'uni-indexed-list-' + index
+ this.touchmoveIndex = index
+ // #ifdef APP-NVUE
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
+ animated: false
+ })
+ // #endif
+ }
+ },
+ touchMove(e) {
+ // #ifndef APP-PLUS
+ let pageY = e.touches[0].pageY
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
+ if (this.touchmoveIndex === index) {
+ return false
+ }
+ let item = this.lists[index]
+ if (item) {
+ this.scrollViewId = 'uni-indexed-list-' + index
+ this.touchmoveIndex = index
+ }
+ // #endif
+ // #ifdef APP-PLUS
+ throttleTouchMove.call(this, e)
+ // #endif
+ },
+ touchEnd() {
+ this.touchmove = false
+ this.touchmoveIndex = -1
+ },
+ onClick(e) {
+ let {
+ idx,
+ index
+ } = e
+ let obj = {}
+ for (let key in this.lists[idx].items[index]) {
+ obj[key] = this.lists[idx].items[index][key]
+ }
+ let select = []
+ if (this.showSelect) {
+ this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked
+ this.lists.forEach((value, idx) => {
+ value.items.forEach((item, index) => {
+ if (item.checked) {
+ let obj = {}
+ for (let key in this.lists[idx].items[index]) {
+ obj[key] = this.lists[idx].items[index][key]
+ }
+ select.push(obj)
+ }
+ })
+ })
+ }
+ this.$emit('click', {
+ item: obj,
+ select: select
+ })
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-indexed-list {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-indexed-list__scroll {
+ flex: 1;
+ }
+
+ .uni-indexed-list__menu {
+ width: 24px;
+ background-color: lightgrey;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-indexed-list__menu-item {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-indexed-list__menu-text {
+ line-height: 20px;
+ font-size: 12px;
+ text-align: center;
+ color: #aaa;
+ }
+
+ .uni-indexed-list__menu--active {
+ background-color: rgb(200, 200, 200);
+ }
+
+ .uni-indexed-list__menu-text--active {
+ color: #007aff;
+ }
+
+ .uni-indexed-list__alert-wrapper {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-indexed-list__alert {
+ width: 80px;
+ height: 80px;
+ border-radius: 80px;
+ text-align: center;
+ line-height: 80px;
+ font-size: 35px;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.5);
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-link/uni-link.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-link/uni-link.vue"
new file mode 100644
index 0000000..804b7e5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-link/uni-link.vue"
@@ -0,0 +1,72 @@
+<template>
+ <text class="uni-link" :class="{'uni-link--withline':showUnderLine===true||showUnderLine==='true'}" :style="{color,fontSize:fontSize+'px'}" @click="openURL">{{text}}</text>
+</template>
+
+<script>
+ /**
+ * Link 澶栭儴缃戦〉瓒呴摼鎺ョ粍浠�
+ * @description uni-link鏄竴涓閮ㄧ綉椤佃秴閾炬帴缁勪欢锛屽湪灏忕▼搴忓唴澶嶅埗url锛屽湪app鍐呮墦寮�澶栭儴娴忚鍣紝鍦╤5绔墦寮�鏂扮綉椤�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=1182
+ * @property {String} href 鐐瑰嚮鍚庢墦寮�鐨勫閮ㄧ綉椤祏rl
+ * @property {String} text 鏄剧ず鐨勬枃瀛�
+ * @property {Boolean} showUnderLine 鏄惁鏄剧ず涓嬪垝绾�
+ * @property {String} copyTips 鍦ㄥ皬绋嬪簭绔鍒堕摼鎺ユ椂鏄剧ず鐨勬彁绀鸿
+ * @property {String} color 閾炬帴鏂囧瓧棰滆壊
+ * @property {String} fontSize 閾炬帴鏂囧瓧澶у皬
+ * @example * <uni-link href="https://ext.dcloud.net.cn" text="https://ext.dcloud.net.cn"></uni-link>
+ */
+ export default {
+ name: 'uniLink',
+ props: {
+ href: {
+ type: String,
+ default: ''
+ },
+ text: {
+ type: String,
+ default: ''
+ },
+ showUnderLine: {
+ type: [Boolean, String],
+ default: true
+ },
+ copyTips: {
+ type: String,
+ default: '宸茶嚜鍔ㄥ鍒剁綉鍧�锛岃鍦ㄦ墜鏈烘祻瑙堝櫒閲岀矘璐磋缃戝潃'
+ },
+ color: {
+ type: String,
+ default: '#999999'
+ },
+ fontSize: {
+ type: [Number, String],
+ default: 14
+ }
+ },
+ methods: {
+ openURL() {
+ // #ifdef APP-PLUS
+ plus.runtime.openURL(this.href)
+ // #endif
+ // #ifdef H5
+ window.open(this.href)
+ // #endif
+ // #ifdef MP
+ uni.setClipboardData({
+ data: this.href
+ });
+ uni.showModal({
+ content: this.copyTips,
+ showCancel: false
+ });
+ // #endif
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-link--withline {
+ text-decoration: underline;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list-item/uni-list-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list-item/uni-list-item.vue"
new file mode 100644
index 0000000..300d808
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list-item/uni-list-item.vue"
@@ -0,0 +1,270 @@
+<template>
+ <!-- #ifdef APP-NVUE -->
+ <cell>
+ <!-- #endif -->
+ <view :class="disabled ? 'uni-list-item--disabled' : ''" :hover-class="disabled || showSwitch ? '' : 'uni-list-item--hover'" class="uni-list-item" @click="onClick">
+ <view class="uni-list-item__container" :class="{'uni-list-item--first':isFirstChild}">
+ <view v-if="thumb" class="uni-list-item__icon">
+ <image :src="thumb" class="uni-list-item__icon-img" />
+ </view>
+ <view v-else-if="showExtraIcon" class="uni-list-item__icon">
+ <uni-icons :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type" class="uni-icon-wrapper" />
+ </view>
+ <view class="uni-list-item__content">
+ <slot />
+ <text class="uni-list-item__content-title">{{ title }}</text>
+ <text v-if="note" class="uni-list-item__content-note">{{ note }}</text>
+ </view>
+ <view class="uni-list-item__extra">
+ <text v-if="rightText" class="uni-list-item__extra-text">{{rightText}}</text>
+ <uni-badge v-if="showBadge" :type="badgeType" :text="badgeText" />
+ <switch v-if="showSwitch" :disabled="disabled" :checked="switchChecked" @change="onSwitchChange" />
+ <slot name="right"></slot>
+ <uni-icons v-if="showArrow" :size="20" class="uni-icon-wrapper" color="#bbb" type="arrowright" />
+ </view>
+ </view>
+ </view>
+ <!-- #ifdef APP-NVUE -->
+ </cell>
+ <!-- #endif -->
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ import uniBadge from '../uni-badge/uni-badge.vue'
+
+ /**
+ * ListItem 鍒楄〃瀛愮粍浠�
+ * @description 鍒楄〃瀛愮粍浠�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=24
+ * @property {String} title 鏍囬
+ * @property {String} note 鎻忚堪
+ * @property {String} thumb 宸︿晶缂╃暐鍥撅紝鑻humb鏈夊�硷紝鍒欎笉浼氭樉绀烘墿灞曞浘鏍�
+ * @property {String} badgeText 鏁板瓧瑙掓爣鍐呭
+ * @property {String} badgeType 鏁板瓧瑙掓爣绫诲瀷锛屽弬鑰僛uni-icons](https://ext.dcloud.net.cn/plugin?id=21)
+ * @property {String} rightText 鍙充晶鏂囧瓧鍐呭
+ * @property {Boolean} disabled = [true|false]鏄惁绂佺敤
+ * @property {Boolean} showArrow = [true|false] 鏄惁鏄剧ず绠ご鍥炬爣
+ * @property {Boolean} showBadge = [true|false] 鏄惁鏄剧ず鏁板瓧瑙掓爣
+ * @property {Boolean} showSwitch = [true|false] 鏄惁鏄剧ずSwitch
+ * @property {Boolean} switchChecked = [true|false] Switch鏄惁琚�変腑
+ * @property {Boolean} showExtraIcon = [true|false] 宸︿晶鏄惁鏄剧ず鎵╁睍鍥炬爣
+ * @property {Boolean} scrollY = [true|false] 鍏佽绾靛悜婊氬姩锛岄渶瑕佹樉寮忕殑璁剧疆鍏跺楂�
+ * @property {Object} extraIcon 鎵╁睍鍥炬爣鍙傛暟锛屾牸寮忎负 {color: '#4cd964',size: '22',type: 'spinner'}
+ * @event {Function} click 鐐瑰嚮 uniListItem 瑙﹀彂浜嬩欢
+ * @event {Function} switchChange 鐐瑰嚮鍒囨崲 Switch 鏃惰Е鍙�
+ */
+ export default {
+ name: 'UniListItem',
+ components: {
+ uniIcons,
+ uniBadge
+ },
+ props: {
+ title: {
+ type: String,
+ default: ''
+ }, // 鍒楄〃鏍囬
+ note: {
+ type: String,
+ default: ''
+ }, // 鍒楄〃鎻忚堪
+ disabled: {
+ // 鏄惁绂佺敤
+ type: [Boolean, String],
+ default: false
+ },
+ showArrow: {
+ // 鏄惁鏄剧ず绠ご
+ type: [Boolean, String],
+ default: true
+ },
+ showBadge: {
+ // 鏄惁鏄剧ず鏁板瓧瑙掓爣
+ type: [Boolean, String],
+ default: false
+ },
+ showSwitch: {
+ // 鏄惁鏄剧ずSwitch
+ type: [Boolean, String],
+ default: false
+ },
+ switchChecked: {
+ // Switch鏄惁琚�変腑
+ type: [Boolean, String],
+ default: false
+ },
+ badgeText: {
+ // badge鍐呭
+ type: String,
+ default: ''
+ },
+ badgeType: {
+ // badge绫诲瀷
+ type: String,
+ default: 'success'
+ },
+ rightText: {
+ // 鍙充晶鏂囧瓧鍐呭
+ type: String,
+ default: ''
+ },
+ thumb: {
+ // 缂╃暐鍥�
+ type: String,
+ default: ''
+ },
+ showExtraIcon: {
+ // 鏄惁鏄剧ず鎵╁睍鍥炬爣
+ type: [Boolean, String],
+ default: false
+ },
+ extraIcon: {
+ type: Object,
+ default () {
+ return {
+ type: 'contact',
+ color: '#000000',
+ size: 20
+ }
+ }
+ }
+ },
+ inject: ['list'],
+ data() {
+ return {
+ isFirstChild: false
+ }
+ },
+ mounted() {
+ if (!this.list.firstChildAppend) {
+ this.list.firstChildAppend = true
+ this.isFirstChild = true
+ }
+ },
+ methods: {
+ onClick() {
+ this.$emit('click')
+ },
+ onSwitchChange(e) {
+ this.$emit('switchChange', e.detail)
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-list-item {
+ font-size: 16;
+ position: relative;
+ flex-direction: column;
+ justify-content: space-between;
+ padding-left: 15px;
+ }
+
+ .uni-list-item--disabled {
+ opacity: 0.3;
+ }
+
+ .uni-list-item--hover {
+ background-color: #f1f1f1;
+ }
+
+ .uni-list-item__container {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ padding: 12px 15px;
+ padding-left: 0;
+ flex: 1;
+ position: relative;
+ justify-content: space-between;
+ align-items: center;
+ /* #ifdef APP-PLUS */
+ border-top-color: #e5e5e5;
+ border-top-style: solid;
+ border-top-width: 0.5px;
+ /* #endif */
+ }
+
+ .uni-list-item--first {
+ border-top-width: 0px;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-list-item__container:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #e5e5e5;
+ }
+
+ .uni-list-item--first:after {
+ height: 0px;
+ }
+
+ /* #endif */
+
+
+
+
+
+ .uni-list-item__content {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ overflow: hidden;
+ flex-direction: column;
+ color: #3b4144;
+
+ }
+
+ .uni-list-item__content-title {
+ font-size: 14px;
+ color: #3b4144;
+ overflow: hidden;
+ }
+
+ .uni-list-item__content-note {
+ margin-top: 6rpx;
+ color: #999;
+ font-size: 12px;
+ overflow: hidden;
+ }
+
+ .uni-list-item__extra {
+ /* width: 25%;
+ */
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+
+ .uni-list-item__icon {
+ margin-right: 18rpx;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-list-item__icon-img {
+ height: 26px;
+ width: 26px;
+ }
+
+ .uni-list-item__extra-text {
+ color: #999;
+ font-size: 12px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-list.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-list.vue"
new file mode 100644
index 0000000..4f7b030
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-list.vue"
@@ -0,0 +1,78 @@
+<template>
+ <!-- #ifndef APP-NVUE -->
+ <view class="uni-list">
+ <slot />
+ </view>
+ <!-- #endif -->
+ <!-- #ifdef APP-NVUE -->
+ <list class="uni-list" :enableBackToTop="enableBackToTop" loadmoreoffset="15" :scroll-y="scrollY" @loadmore="loadMore">
+ <slot />
+ </list>
+ <!-- #endif -->
+</template>
+
+<script>
+ /**
+ * List 鍒楄〃
+ * @description 鍒楄〃缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=24
+ */
+ export default {
+ name: 'UniList',
+ 'mp-weixin': {
+ options: {
+ multipleSlots: false
+ }
+ },
+ props: {
+ enableBackToTop: {
+ type: [Boolean, String],
+ default: false
+ },
+ scrollY: {
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ provide() {
+ return {
+ list: this
+ }
+ },
+ created() {
+ this.firstChildAppend = false
+ },
+ methods: {
+ loadMore(e) {
+ this.$emit("scrolltolower");
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-list {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ background-color: #ffffff;
+ position: relative;
+ flex-direction: column;
+ /* border-bottom-color: $uni-border-color;
+ */
+ /* border-bottom-style: solid;
+ */
+ /* border-bottom-width: 1px;
+ */
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-list:before {
+ height: 0;
+ }
+
+ .uni-list:after {
+ height: 0;
+ }
+
+ /* #endif */
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.vue"
new file mode 100644
index 0000000..8563709
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.vue"
@@ -0,0 +1,65 @@
+<template>
+ <!-- #ifdef APP-NVUE -->
+ <refresh :display="display" @refresh="onrefresh" @pullingdown="onpullingdown">
+ <slot />
+ </refresh>
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE -->
+ <view ref="uni-refresh" class="uni-refresh" v-show="isShow">
+ <slot />
+ </view>
+ <!-- #endif -->
+</template>
+
+<script>
+ export default {
+ name: 'UniRefresh',
+ props: {
+ display: {
+ type: [String],
+ default: "hide"
+ }
+ },
+ data() {
+ return {
+ pulling: false
+ }
+ },
+ computed: {
+ isShow() {
+ if (this.display === "show" || this.pulling === true) {
+ return true;
+ }
+ return false;
+ }
+ },
+ created() {},
+ methods: {
+ onchange(value) {
+ this.pulling = value;
+ },
+ onrefresh(e) {
+ this.$emit("refresh", e);
+ },
+ onpullingdown(e) {
+ // #ifdef APP-NVUE
+ this.$emit("pullingdown", e);
+ // #endif
+ // #ifndef APP-NVUE
+ var detail = {
+ viewHeight: 90,
+ pullingDistance: e.height
+ }
+ this.$emit("pullingdown", detail);
+ // #endif
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-refresh {
+ height: 0;
+ overflow: hidden;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.wxs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.wxs"
new file mode 100644
index 0000000..818a6b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-list/uni-refresh.wxs"
@@ -0,0 +1,87 @@
+var pullDown = {
+ threshold: 95,
+ maxHeight: 200,
+ callRefresh: 'onrefresh',
+ callPullingDown: 'onpullingdown',
+ refreshSelector: '.uni-refresh'
+};
+
+function ready(newValue, oldValue, ownerInstance, instance) {
+ var state = instance.getState()
+ state.canPullDown = newValue;
+ // console.log(newValue);
+}
+
+function touchStart(e, instance) {
+ var state = instance.getState();
+ state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
+ state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
+ if (!state.canPullDown) {
+ return
+ }
+
+ // console.log("touchStart");
+
+ state.height = 0;
+ state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
+ state.refreshInstance.setStyle({
+ 'height': 0
+ });
+ state.refreshInstance.callMethod("onchange", true);
+}
+
+function touchMove(e, ownerInstance) {
+ var instance = e.instance;
+ var state = instance.getState();
+ if (!state.canPullDown) {
+ return
+ }
+
+ var oldHeight = state.height;
+ var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
+ var height = endY - state.touchStartY;
+ if (height > pullDown.maxHeight) {
+ return;
+ }
+
+ var refreshInstance = state.refreshInstance;
+ refreshInstance.setStyle({
+ 'height': height + 'px'
+ });
+
+ height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
+ state.height = height;
+ refreshInstance.callMethod(pullDown.callPullingDown, {
+ height: height
+ });
+}
+
+function touchEnd(e, ownerInstance) {
+ var state = e.instance.getState();
+ if (!state.canPullDown) {
+ return
+ }
+
+ state.refreshInstance.callMethod("onchange", false);
+
+ var refreshInstance = state.refreshInstance;
+ if (state.height > pullDown.threshold) {
+ refreshInstance.callMethod(pullDown.callRefresh);
+ return;
+ }
+
+ refreshInstance.setStyle({
+ 'height': 0
+ });
+}
+
+function propObserver(newValue, oldValue, instance) {
+ pullDown = newValue;
+}
+
+module.exports = {
+ touchmove: touchMove,
+ touchstart: touchStart,
+ touchend: touchEnd,
+ propObserver: propObserver
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-load-more/uni-load-more.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-load-more/uni-load-more.vue"
new file mode 100644
index 0000000..ac35e5b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-load-more/uni-load-more.vue"
@@ -0,0 +1,364 @@
+<template>
+ <view class="uni-load-more" @click="onClick">
+ <!-- #ifdef APP-NVUE -->
+ <loading-indicator v-if="!webviewHide && status === 'loading' && showIcon" :style="{color: color,width:iconSize+'px',height:iconSize+'px'}" :animating="true" class="uni-load-more__img uni-load-more__img--nvue"></loading-indicator>
+ <!-- #endif -->
+ <!-- #ifdef H5 -->
+ <svg width="24" height="24" viewBox="25 25 50 50" v-if="!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon" :style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--android-H5">
+ <circle cx="50" cy="50" r="20" fill="none" :style="{color:color}" :stroke-width="3"></circle>
+ </svg>
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE || H5 -->
+ <view v-if="!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon" :style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--android-MP">
+ <view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
+ <view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
+ <view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE -->
+ <view v-else-if="!webviewHide && status === 'loading' && showIcon" :style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--ios-H5">
+ <image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzlBMzU3OTlEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzlBMzU3OUFEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDOUEzNTc5N0Q5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDOUEzNTc5OEQ5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt+ALSwAAA6CSURBVHja1FsLkFZVHb98LM+F5bHL8khA1iSeiyQBCRM+YGqKUnnJTDLGI0BGZlKDIU2MMglUiDApEZvSsZnQtBRJtKwQNKQMFYeRDR10WOLd8ljYXdh+v8v5fR3Od+797t1dnOnO/Ofce77z+J//+b/P+ZqtXbs2sJ9MJhNUV1cHJ06cCJo3bx7EPc2aNcvpy7pWrVoF+/fvDyoqKoI2bdoE9fX1F7TjN8a+EXBn/fkfvw942Tf+wYMHg9mzZwfjxo0LDhw4EPa1x2MbFw/fOGfPng1qa2tzcCkILsLDydq2bRsunpOTMM7TD/W/tZDZhPdeKD+yGxHhdu3aBV27dg3OnDlzMVANMheLAO3btw8KCwuDmpoaX5OxbgUIMEq7K8IcPnw4KCsrC/r37x8cP378/4cAXAB3vqSkJMuiDhTkw+XcuXNhOWbMmKBly5YhUT8xArhyFvP0BfwRsAuwxJZJsm/nzp2DTp06he/OU+cZ64K6o0ePBkOHDg2GDx8e6gEbJ5Q/NHNuAJQ1hgBeHUDlR7nVTkY8rQAvAi4z34vR/mPs1FoRsaCgIJThI0eOBC1atEiFGGV+5MiRoS45efJkqFjJFXV1dQuA012m2WcwTw98fy6CqBdsaiIO4CScrGPHjvk4odhavPquRtFWXEC25VgkREKOCh/qDSq+vn37htzD/mZTOmOc5U7zKzBPEedygWshcDyWvs30igAbU+6oyMgJBCFhwQE0fccxN60Ay9iebbjoDh06hMowjQxT4fXq1SskArmHZpkArvixp/kWzHdMeArExSJEaiXIjjRjRJ4DaAGWpibLzXN3Fm1vA5teBgh3j1Rv3bp1YgKwPdmf2p9zcyNYYgPKMfY0T5f5nNYdw158nJ8QawW4CLKwiOBSEgO/hok2eBydR+3dYH+PLxA5J8Vv0KBBwenTp0P2JWAx6+yFEBfs8lMY+y0SWMBNI9E4ThKi58VKTg3FQZS1RQF1cz27eC0QHMu+3E0SkUowjhVt5VdaWhp07949ZHv2Qd1EjDXM2cla1M0nl3GxAs3J9yREzyTdFVKVFOaE9qRA8GM0WebRuo9JGZKA7Mv2SeS/Z8+eoQ9BArMfFrLGo6jvxbhHbJZnKX2Rzz1O7QhJJ9Cs2ZMaWIyq/zhdeqPNfIoHd58clIQD+JSXl4dKlyIAuBdVXZwFVWKspSSoxE++h8x4k3uCnEhE4I5KwRiFWGOU0QWKiCYLbdoRMRKAu2kQ9vkfLU6dOhX06NEjlH+yMRZSinnuyWnYosVcji8CEA/6Cg2JF+IIUBqnGKUTCNwtwBN4f89RiK1R96DEgO2o0NDmtEdvVFdVVYV+P3UAPUEs6GFwV3PHmXkD4vh74iDFJysVI/MlaQhwKeBNTLYX5VuA8T4/gZxA4MRGFxDB6R7OmYPfyykGRJbyie+XnGYnQIC/coH9+vULiYrxrkL9ZA9+0ykaHIfEpM7ge8TiJ2CsHYwyMfafAF1yCGBHYIbCVDjDjKt7BeB51D+LgQa6OkG7IDYEEtvQ7lnXLKLtLdLuJBpE4gPUXcW2+PkZwOex+4cGDhwYDBkyRL7/HFcEwUGPo/8uWRUpYnfxGHco8HkewLHLyYmAawAPuIFZxhOpDfJQ8gbUv41yORAptMWBNr6oqMhWird5+u+iHmBb2nhjDV7HWBNQTgK8y11l5NetWzc5ULscAtSj7nbNI0skhWeUZCc0W4nyH/jO4Vz0u1IeYhbk4AiwM6tjxIWByHsoZ9qcIBPJd/y+DwPfBESOmCa/QF3WiZHucLlEDpNxcNhmheEOPgdQNx6/VZFQzFZ5TN08AHXQt2Ii3EdyFuUsPtTcGPhW5iMiCNELvz+Gdn9huG4HUJaW/w3g0wxV0XaG7arG2WeKiUWYM4Y7GO5ezshTARbbWGw/DvXkpp/ivVvE0JVoMxN4rpGzJMhE5Pl+xlATsDIqikP9F9D2z3h9nOksEUFhK+qO4rcPkoalMQ/HqJLIyb3F3JdjrCcw1yZ8joyJLR5gCo54etlag7qIoeNh1N1BRYj3DTFJ0elotxPlVzkGuYAmL0VSJVGAJA41c4Z6A3BzTLfn0HYwYKEI6CUAMzZEWvLsIcQOo1AmmyyM72nHJCfYsogflGV6jEk9vyQZXSuq6w4c16NsGcGZbwOPr+H1RkOk2LEzjNepxQkihHSCQ4ynAYNRx2zMKV92CQMWqj8J0BRE8EShxRFN6YrfCRhC0x3r/Zm4IbQCcmJoV0kMamllccR6FjHqUC5F2R/wS2dcymOlfAKOS4KmzQb5cpNC2MC7JhVn5wjXoJ44rYhLh8n0eXOCorJxa7POjbSlCGVczr34/RsAmrcvo9s+wGp3tzVhntxiXiJ4nvEYb4FJkf0O8HocAePmLvCxnL0AORraVekJk6TYjDabRVXfRE2lCN1h6ZQRN1+InUbsCpKwoBZHh0dODN9JBCUffItXxEavTQkUtnfTVAplCWL3JISz29h4NjotnuSsQKJCk8dF+kJR6RARjrqFVmfPnj3ZbK8cIJ0msd6jgHPGtfVTQ8VLmlvh4mct9sobRmPic0DyDQQnx/NlfYUgyz59+oScsH379pAwXABD32nTpoUHIToESeI5mnbE/UqDdyLcafEBf2MCqgC7NwxIbMREJQ0g4D4sfJwnD+AmRrII05cfMWJE+L1169bQr+fip06dGp4oJ83lmYd5wj/EmMa4TaHivo4EeCguYZBnkB5g2aWA69OIEnUHOaGysjIYMGBAMGnSpODYsWPZwCpFmm4lNq+4gSLQA7jcX8DwtjEyRC8wjabnXEx9kfWnTJkSJkAo90xpJVV+FmcVNeYAF5zWngS4C4O91MBxmAv8blLEpbjI5sz9MTdAhcgkCT1RO8mZkAjfiYpTEvStAS53Uw1vAiUGgZ3GpuQEYvoiBqlIan7kSDHnTwJQFNiPu0+5VxCVYhcZIjNrdXUDdp+Eq5AZ3Gkg8QAyVZRZIk4Tl4QAbF9cXJxNYZMAtAokgs4BrNxEpCtteXg7DDTMDKYNSuQdKsnJBek7HxewvxaosWxLYXtw+cJp18217wql4aKCfBNoEu0O5VU+PhctJ0YeXD4C6JQpyrlpSLTojpGGGN5YwNziChdIZLk4lvLcFJ9jMX3QdiImY9bmGQU+TRUL5CHITTRlgF8D9ouD1MfmLoEPl5xokIumZ2cfgMpHt47IW9N64Hsh7wQYYjyIugWuF5fCqYncXRd5vPMWyizzvhi/32+nvG0dZc9vR6fZOu0md5e+uC408FvKSIOZwXlGvxPv95izA2Vtvg1xKFWARI+vMX66HUhpQQb643uW1bSjuTWyw2SBvDrBvjFic1eGGlz5esq3ko9uSIlBRqPuFcCv8F4WIcN12nVaBd0SaYwI6PDDImR11JkqgHcPmQssjxIn6bUshygDFJUTxPMpHk+jfjPgupgdnYV2R/g7xSjtpah8RJBewhwf0gGK6XI92u4wXFEU40afJ4DN4h5LcAd+40HI3JgJecuT0c062W0i2hQJUTcxan3/CMW1PF2K6bbA+Daz4xRs1D3Br1Cm0OihKCqizW78/nXAF/G5TXrEcVzaNMH6CyMswqsAHqDyDLEyou8lwOXnKF8DjI6KjV3KzMBiXkDH8ij/H214J5A596ekrZ3F0zXlWeL7+P5eUrNo3/QwC15uxthuzidy7DzKRwEDaAViiDgKbTbz7CJnzo0bN7pIfIiid8SuPwn25o3QCmpnyjlZkyxPP8EomCJzrGb7GJMx7tNsq4MT2xMUYaiErZOluTzKsnz3gwCeCZyVRZJfYplNEokEjwrPtxlxjeYAk+F1F74VAzPxQRNYYdtpOUvWs8J1sGhBJMNsb7igN8plJs1eSmLIhLKE4rvaCX27gOhLpLOsIzJ7qn/i+wZzcvSOZ23/du8TZjwV8zHIXoP4R3ifBxiFz1dcVpa3aPntPE+c6TmIWE9EtcMmAcPdWAhYhAXxcLOQi9L1WhD1Sc8p1d2oL7XGiRKp8F4A2i8K/nfI+y/gsTDJ/YC/8+AD5Uh04KHiGl+cIFPnBDDrPMjwRGkLXyxO4VGbfQWnDH2v0bVWE3C9QOXlepbgjEfIJQI6XDG3z5ahD9cw2pS78ipB85wyScNTvsVzlzzhL8/jRrnmVjfFJK/m3m4nj9vbgQTguT8XZTjsm672R5uJKEaQmBI/c58gyus8ZDagLpEVSJBIyHp4jn++xqPV71OgQgJYEWOtZ/haxRtKmWOBu8xdBLftWltsY84zE6WIEy/eIOWL+BaayMx+KHtL7EAkqdNDLiEXmEMUHniedtJqg9HmZtfvt26vNi0BdG3Ft3g8ZOf7PAu59TxtzivLNIekyi+wD1i8CuUiD9FXAa8C+/xS3JPmZnomyc7H+fb4/Se0bk41Fel621r4cgVxbq91V4jVqwB7HTe2M7jgB+QWHavZkDRPmZcASoZEmBx6i75bGjPcMdL4/VKGFAGWZkGzPG0XAbdL9A81G5LOmUnC9hHKJeO7dcUMjblSl12867ElFTtaGl20xvvLGPdVz/8TVuU7y0x1PG7vtNg24oz9Uo/Z412++VFWI7Fcog9tu9Lm6gvRmIPv9x1xmQAu6RDkXtbOtlGEmpgD5Nvnyc0dcv0EE6cfdi1HmhMf9wDF3k3gtRvEedhxjpgfqPb9PU9iEJHnyOUA7bQUXh6kq/D7l2iTjWv7XOD530BDr8jIrus+srXjt4MzumJMHuTsBa63YKE1+RR5lBjEikCCnWKWiHdzOgKO+nRIBAF88za/IFmJ3eMZov4CYxGBabcpGL8EYx+SeMXJeRwHNsV/h+vdxeuhEpN3ZyNY78Gm2fknJxVGhyjixPiQvVkNzT1elD9Py/aTAL64Hb9vcYmC9zfdXdT/C1LeGbg4rnBaAihDFJH12W5ulfNCNe/xTsP3bp8ikzJs5BF+5PNfAQYAPaseTdsEcaYAAAAASUVORK5CYII=" mode="widthFix"></image>
+ </view>
+ <!-- #endif -->
+ <text class="uni-load-more__text" :style="{color: color}">{{ status === 'more' ? contentText.contentdown : status === 'loading' ? contentText.contentrefresh : contentText.contentnomore }}</text>
+ </view>
+</template>
+
+<script>
+ const platform = uni.getSystemInfoSync().platform
+
+ /**
+ * LoadMore 鍔犺浇鏇村
+ * @description 鐢ㄤ簬鍒楄〃涓紝鍋氭粴鍔ㄥ姞杞戒娇鐢紝灞曠ず loading 鐨勫悇绉嶇姸鎬�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=29
+ * @property {String} status = [more|loading|noMore] loading 鐨勭姸鎬�
+ * @value more loading鍓�
+ * @value loading loading涓�
+ * @value noMore 娌℃湁鏇村浜�
+ * @property {Number} iconSize 鎸囧畾鍥炬爣澶у皬
+ * @property {Boolean} iconSize = [true|false] 鏄惁鏄剧ず loading 鍥炬爣
+ * @property {String} iconType = [snow|circle|auto] 鎸囧畾鍥炬爣鏍峰紡
+ * @value snow ios闆姳鍔犺浇鏍峰紡
+ * @value circle 瀹夊崜鍞ら啋鍔犺浇鏍峰紡
+ * @value auto 鏍规嵁骞冲彴鑷姩閫夋嫨鍔犺浇鏍峰紡
+ * @property {String} color 鍥炬爣鍜屾枃瀛楅鑹�
+ * @property {Object} contentText 鍚勭姸鎬佹枃瀛楄鏄庯紝鍊间负锛歿contentdown: "涓婃媺鏄剧ず鏇村",contentrefresh: "姝e湪鍔犺浇...",contentnomore: "娌℃湁鏇村鏁版嵁浜�"}
+ * @event {Function} clickLoadMore 鐐瑰嚮鍔犺浇鏇村鏃惰Е鍙�
+ */
+ export default {
+ name: 'UniLoadMore',
+ props: {
+ status: {
+ // 涓婃媺鐨勭姸鎬侊細more-loading鍓嶏紱loading-loading涓紱noMore-娌℃湁鏇村浜�
+ type: String,
+ default: 'more'
+ },
+ showIcon: {
+ type: Boolean,
+ default: true
+ },
+ iconType: {
+ type: String,
+ default: 'auto'
+ },
+ iconSize: {
+ type: Number,
+ default: 24
+ },
+ color: {
+ type: String,
+ default: '#777777'
+ },
+ contentText: {
+ type: Object,
+ default () {
+ return {
+ contentdown: '涓婃媺鏄剧ず鏇村',
+ contentrefresh: '姝e湪鍔犺浇...',
+ contentnomore: '娌℃湁鏇村鏁版嵁浜�'
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ webviewHide: false,
+ platform: platform
+ }
+ },
+ // #ifndef APP-NVUE
+ computed: {
+ iconSnowWidth() {
+ return (Math.floor(this.iconSize / 24) || 1) * 2
+ }
+ },
+ // #endif
+ mounted() {
+ // #ifdef APP-PLUS
+ var pages = getCurrentPages();
+ var page = pages[pages.length - 1];
+ var currentWebview = page.$getAppWebview();
+ currentWebview.addEventListener('hide', () => {
+ this.webviewHide = true
+ })
+ currentWebview.addEventListener('show', () => {
+ this.webviewHide = false
+ })
+ // #endif
+ },
+ methods: {
+ onClick() {
+ this.$emit('clickLoadMore', {
+ detail: {
+ status: this.status,
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-load-more {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ height: 40px;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-load-more__text {
+ font-size: 15px;
+ }
+
+ .uni-load-more__img {
+ width: 24px;
+ height: 24px;
+ margin-right: 8px;
+ }
+
+ .uni-load-more__img--nvue {
+ color: #666666;
+ }
+
+ .uni-load-more__img--android,
+ .uni-load-more__img--ios {
+ width: 24px;
+ height: 24px;
+ transform: rotate(0deg);
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-load-more__img--android {
+ animation: loading-ios 1s 0s linear infinite;
+ }
+
+ @keyframes loading-android {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ .uni-load-more__img--ios-H5 {
+ position: relative;
+ animation: loading-ios-H5 1s 0s step-end infinite;
+ }
+
+ .uni-load-more__img--ios-H5>image {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ }
+
+ @keyframes loading-ios-H5 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 8% {
+ transform: rotate(30deg);
+ }
+
+ 16% {
+ transform: rotate(60deg);
+ }
+
+ 24% {
+ transform: rotate(90deg);
+ }
+
+ 32% {
+ transform: rotate(120deg);
+ }
+
+ 40% {
+ transform: rotate(150deg);
+ }
+
+ 48% {
+ transform: rotate(180deg);
+ }
+
+ 56% {
+ transform: rotate(210deg);
+ }
+
+ 64% {
+ transform: rotate(240deg);
+ }
+
+ 73% {
+ transform: rotate(270deg);
+ }
+
+ 82% {
+ transform: rotate(300deg);
+ }
+
+ 91% {
+ transform: rotate(330deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ /* #endif */
+
+ /* #ifdef H5 */
+ .uni-load-more__img--android-H5 {
+ animation: loading-android-H5-rotate 2s linear infinite;
+ transform-origin: center center;
+ }
+
+ .uni-load-more__img--android-H5>circle {
+ display: inline-block;
+ animation: loading-android-H5-dash 1.5s ease-in-out infinite;
+ stroke: currentColor;
+ stroke-linecap: round;
+ }
+
+ @keyframes loading-android-H5-rotate {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loading-android-H5-dash {
+ 0% {
+ stroke-dasharray: 1, 200;
+ stroke-dashoffset: 0;
+ }
+
+ 50% {
+ stroke-dasharray: 90, 150;
+ stroke-dashoffset: -40;
+ }
+
+ 100% {
+ stroke-dasharray: 90, 150;
+ stroke-dashoffset: -120;
+ }
+ }
+
+ /* #endif */
+
+ /* #ifndef APP-NVUE || H5 */
+ .uni-load-more__img--android-MP {
+ position: relative;
+ width: 24px;
+ height: 24px;
+ transform: rotate(0deg);
+ animation: loading-ios 1s 0s ease infinite;
+ }
+
+ .uni-load-more__img--android-MP>view {
+ position: absolute;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ border: solid 2px transparent;
+ border-top: solid 2px #777777;
+ transform-origin: center;
+ }
+
+ .uni-load-more__img--android-MP>view:nth-child(1) {
+ animation: loading-android-MP-1 1s 0s linear infinite;
+ }
+
+ .uni-load-more__img--android-MP>view:nth-child(2) {
+ animation: loading-android-MP-2 1s 0s linear infinite;
+ }
+
+ .uni-load-more__img--android-MP>view:nth-child(3) {
+ animation: loading-android-MP-3 1s 0s linear infinite;
+ }
+
+ @keyframes loading-android {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loading-android-MP-1 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 50% {
+ transform: rotate(90deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loading-android-MP-2 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 50% {
+ transform: rotate(180deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loading-android-MP-3 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 50% {
+ transform: rotate(270deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ /* #endif */
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-nav-bar/uni-nav-bar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-nav-bar/uni-nav-bar.vue"
new file mode 100644
index 0000000..0d70727
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-nav-bar/uni-nav-bar.vue"
@@ -0,0 +1,235 @@
+<template>
+ <view class="uni-navbar">
+ <view :class="{ 'uni-navbar--fixed': fixed, 'uni-navbar--shadow': shadow, 'uni-navbar--border': border }" :style="{ 'background-color': backgroundColor }" class="uni-navbar__content">
+ <uni-status-bar v-if="statusBar" />
+ <view :style="{ color: color,backgroundColor: backgroundColor }" class="uni-navbar__header uni-navbar__content_view">
+ <view @tap="onClickLeft" class="uni-navbar__header-btns uni-navbar__header-btns-left uni-navbar__content_view">
+ <view class="uni-navbar__content_view" v-if="leftIcon.length">
+ <uni-icons :color="color" :type="leftIcon" size="24" />
+ </view>
+ <view :class="{ 'uni-navbar-btn-icon-left': !leftIcon.length }" class="uni-navbar-btn-text uni-navbar__content_view" v-if="leftText.length">
+ <text :style="{ color: color, fontSize: '14px' }">{{ leftText }}</text>
+ </view>
+ <slot name="left" />
+ </view>
+ <view class="uni-navbar__header-container uni-navbar__content_view">
+ <view class="uni-navbar__header-container-inner uni-navbar__content_view" v-if="title.length">
+ <text class="uni-nav-bar-text" :style="{color: color }">{{ title }}</text>
+ </view>
+ <!-- 鏍囬鎻掓Ы -->
+ <slot />
+ </view>
+ <view :class="title.length ? 'uni-navbar__header-btns-right' : ''" @tap="onClickRight" class="uni-navbar__header-btns uni-navbar__content_view">
+ <view class="uni-navbar__content_view" v-if="rightIcon.length">
+ <uni-icons :color="color" :type="rightIcon" size="24" />
+ </view>
+ <!-- 浼樺厛鏄剧ず鍥炬爣 -->
+ <view class="uni-navbar-btn-text uni-navbar__content_view" v-if="rightText.length && !rightIcon.length">
+ <text class="uni-nav-bar-right-text">{{ rightText }}</text>
+ </view>
+ <slot name="right" />
+ </view>
+ </view>
+ </view>
+ <view class="uni-navbar__placeholder" v-if="fixed">
+ <uni-status-bar v-if="statusBar" />
+ <view class="uni-navbar__placeholder-view" />
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniStatusBar from "../uni-status-bar/uni-status-bar.vue";
+ import uniIcons from "../uni-icons/uni-icons.vue";
+
+ /**
+ * NavBar 鑷畾涔夊鑸爮
+ * @description 瀵艰埅鏍忕粍浠讹紝涓昏鐢ㄤ簬澶撮儴瀵艰埅
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=52
+ * @property {String} title 鏍囬鏂囧瓧
+ * @property {String} leftText 宸︿晶鎸夐挳鏂囨湰
+ * @property {String} rightText 鍙充晶鎸夐挳鏂囨湰
+ * @property {String} leftIcon 宸︿晶鎸夐挳鍥炬爣锛堝浘鏍囩被鍨嬪弬鑰� [Icon 鍥炬爣](http://ext.dcloud.net.cn/plugin?id=28) type 灞炴�э級
+ * @property {String} rightIcon 鍙充晶鎸夐挳鍥炬爣锛堝浘鏍囩被鍨嬪弬鑰� [Icon 鍥炬爣](http://ext.dcloud.net.cn/plugin?id=28) type 灞炴�э級
+ * @property {String} color 鍥炬爣鍜屾枃瀛楅鑹�
+ * @property {String} backgroundColor 瀵艰埅鏍忚儗鏅鑹�
+ * @property {Boolean} fixed = [true|false] 鏄惁鍥哄畾椤堕儴
+ * @property {Boolean} statusBar = [true|false] 鏄惁鍖呭惈鐘舵�佹爮
+ * @property {Boolean} shadow = [true|false] 瀵艰埅鏍忎笅鏄惁鏈夐槾褰�
+ * @event {Function} clickLeft 宸︿晶鎸夐挳鐐瑰嚮鏃惰Е鍙�
+ * @event {Function} clickRight 鍙充晶鎸夐挳鐐瑰嚮鏃惰Е鍙�
+ */
+ export default {
+ name: "UniNavBar",
+ components: {
+ uniStatusBar,
+ uniIcons
+ },
+ props: {
+ title: {
+ type: String,
+ default: ""
+ },
+ leftText: {
+ type: String,
+ default: ""
+ },
+ rightText: {
+ type: String,
+ default: ""
+ },
+ leftIcon: {
+ type: String,
+ default: ""
+ },
+ rightIcon: {
+ type: String,
+ default: ""
+ },
+ fixed: {
+ type: [Boolean, String],
+ default: false
+ },
+ color: {
+ type: String,
+ default: "#000000"
+ },
+ backgroundColor: {
+ type: String,
+ default: "#FFFFFF"
+ },
+ statusBar: {
+ type: [Boolean, String],
+ default: false
+ },
+ shadow: {
+ type: [Boolean, String],
+ default: false
+ },
+ border: {
+ type: [Boolean, String],
+ default: true
+ }
+ },
+ mounted() {
+ if (uni.report && this.title !== '') {
+ uni.report('title', this.title)
+ }
+ },
+ methods: {
+ onClickLeft() {
+ this.$emit("clickLeft");
+ },
+ onClickRight() {
+ this.$emit("clickRight");
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-nav-bar-text {
+ /* #ifdef APP-PLUS */
+ font-size: 34rpx;
+ /* #endif */
+ /* #ifndef APP-PLUS */
+ font-size: 16;
+ /* #endif */
+ }
+
+ .uni-nav-bar-right-text {
+ font-size: 14px;
+ }
+
+ .uni-navbar__content {
+ position: relative;
+ background-color: #ffffff;
+ overflow: hidden;
+ }
+
+ .uni-navbar__content_view {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ align-items: center;
+ flex-direction: row;
+ /* background-color: #FFFFFF;
+ */
+ }
+
+ .uni-navbar__header {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ height: 44px;
+ line-height: 44px;
+ font-size: 16px;
+ /* background-color: #ffffff;
+ */
+ }
+
+ .uni-navbar__header-btns {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-wrap: nowrap;
+ width: 120rpx;
+ padding: 0 6px;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-navbar__header-btns-left {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ width: 150rpx;
+ justify-content: flex-start;
+ }
+
+ .uni-navbar__header-btns-right {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ width: 150rpx;
+ padding-right: 30rpx;
+ justify-content: flex-end;
+ }
+
+ .uni-navbar__header-container {
+ flex: 1;
+ }
+
+ .uni-navbar__header-container-inner {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+ }
+
+
+ .uni-navbar__placeholder-view {
+ height: 44px;
+ }
+
+ .uni-navbar--fixed {
+ position: fixed;
+ z-index: 998;
+ }
+
+ .uni-navbar--shadow {
+ /* #ifndef APP-NVUE */
+ box-shadow: 0 1px 6px #ccc;
+ /* #endif */
+ }
+
+ .uni-navbar--border {
+ border-bottom-width: 1rpx;
+ border-bottom-style: solid;
+ border-bottom-color: #e5e5e5;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-notice-bar/uni-notice-bar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-notice-bar/uni-notice-bar.vue"
new file mode 100644
index 0000000..76d06d9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-notice-bar/uni-notice-bar.vue"
@@ -0,0 +1,392 @@
+<template>
+ <view v-if="show" class="uni-noticebar" :style="{ backgroundColor: backgroundColor }" @click="onClick">
+ <!-- #ifdef MP-ALIPAY -->
+ <view v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" @click="close">
+ <uni-icons type="closeempty" :color="color" size="12" />
+ </view>
+ <view v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon">
+ <uni-icons type="sound" :color="color" size="14" />
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef MP-ALIPAY -->
+ <uni-icons v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" type="closeempty" :color="color" size="12" @click="close" />
+ <uni-icons v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon" type="sound" :color="color" size="14" />
+ <!-- #endif -->
+ <view ref="textBox" class="uni-noticebar__content-wrapper" :class="{'uni-noticebar__content-wrapper--scrollable':scrollable, 'uni-noticebar__content-wrapper--single':!scrollable && (single || moreText)}">
+ <view :id="elIdBox" class="uni-noticebar__content" :class="{'uni-noticebar__content--scrollable':scrollable, 'uni-noticebar__content--single':!scrollable && (single || moreText)}">
+ <text :id="elId" ref="animationEle" class="uni-noticebar__content-text" :class="{'uni-noticebar__content-text--scrollable':scrollable,'uni-noticebar__content-text--single':!scrollable && (single || moreText)}" :style="{color:color, width:wrapWidth+'px', 'animationDuration': animationDuration, '-webkit-animationDuration': animationDuration ,animationPlayState: webviewHide?'paused':animationPlayState,'-webkit-animationPlayState':webviewHide?'paused':animationPlayState, animationDelay: animationDelay, '-webkit-animationDelay':animationDelay}">{{text}}</text>
+ </view>
+ </view>
+ <view v-if="showGetMore === true || showGetMore === 'true'" class="uni-noticebar__more" @click="clickMore">
+ <text v-if="moreText" :style="{ color: moreColor }" class="uni-noticebar__more-text">{{ moreText }}</text>
+ <uni-icons type="arrowright" :color="moreColor" size="14" />
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+ // #ifdef APP-NVUE
+ const dom = weex.requireModule('dom');
+ const animation = weex.requireModule('animation');
+ // #endif
+
+ /**
+ * NoticeBar 鑷畾涔夊鑸爮
+ * @description 閫氬憡鏍忕粍浠�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=30
+ * @property {Number} speed 鏂囧瓧婊氬姩鐨勯�熷害锛岄粯璁�100px/绉�
+ * @property {String} text 鏄剧ず鏂囧瓧
+ * @property {String} backgroundColor 鑳屾櫙棰滆壊
+ * @property {String} color 鏂囧瓧棰滆壊
+ * @property {String} moreColor 鏌ョ湅鏇村鏂囧瓧鐨勯鑹�
+ * @property {String} moreText 璁剧疆鈥滄煡鐪嬫洿澶氣�濈殑鏂囨湰
+ * @property {Boolean} single = [true|false] 鏄惁鍗曡
+ * @property {Boolean} scrollable = [true|false] 鏄惁婊氬姩锛屼负true鏃讹紝NoticeBar涓哄崟琛�
+ * @property {Boolean} showIcon = [true|false] 鏄惁鏄剧ず宸︿晶鍠囧彮鍥炬爣
+ * @property {Boolean} showClose = [true|false] 鏄惁鏄剧ず宸︿晶鍏抽棴鎸夐挳
+ * @property {Boolean} showGetMore = [true|false] 鏄惁鏄剧ず鍙充晶鏌ョ湅鏇村鍥炬爣锛屼负true鏃讹紝NoticeBar涓哄崟琛�
+ * @event {Function} click 鐐瑰嚮 NoticeBar 瑙﹀彂浜嬩欢
+ * @event {Function} close 鍏抽棴 NoticeBar 瑙﹀彂浜嬩欢
+ * @event {Function} getmore 鐐瑰嚮鈥濇煡鐪嬫洿澶氣�滄椂瑙﹀彂浜嬩欢
+ */
+
+ export default {
+ name: 'UniNoticeBar',
+ components: {
+ uniIcons
+ },
+ props: {
+ text: {
+ type: String,
+ default: ''
+ },
+ moreText: {
+ type: String,
+ default: ''
+ },
+ backgroundColor: {
+ type: String,
+ default: '#fffbe8'
+ },
+ speed: {
+ // 榛樿1s婊氬姩100px
+ type: Number,
+ default: 100
+ },
+ color: {
+ type: String,
+ default: '#de8c17'
+ },
+ moreColor: {
+ type: String,
+ default: '#999999'
+ },
+ single: {
+ // 鏄惁鍗曡
+ type: [Boolean, String],
+ default: false
+ },
+ scrollable: {
+ // 鏄惁婊氬姩锛屾坊鍔犲悗鎺у埗鍗曡鏁堟灉鍙栨秷
+ type: [Boolean, String],
+ default: false
+ },
+ showIcon: {
+ // 鏄惁鏄剧ず宸︿晶icon
+ type: [Boolean, String],
+ default: false
+ },
+ showGetMore: {
+ // 鏄惁鏄剧ず鍙充晶鏌ョ湅鏇村
+ type: [Boolean, String],
+ default: false
+ },
+ showClose: {
+ // 鏄惁鏄剧ず宸︿晶鍏抽棴鎸夐挳
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ data() {
+ const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+ const elIdBox = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+ return {
+ textWidth: 0,
+ boxWidth: 0,
+ wrapWidth: '',
+ webviewHide: false,
+ // #ifdef APP-NVUE
+ stopAnimation: false,
+ // #endif
+ elId: elId,
+ elIdBox: elIdBox,
+ show: true,
+ animationDuration: 'none',
+ animationPlayState: 'paused',
+ animationDelay: '0s'
+ }
+ },
+ mounted() {
+ // #ifdef APP-PLUS
+ var pages = getCurrentPages();
+ var page = pages[pages.length - 1];
+ var currentWebview = page.$getAppWebview();
+ currentWebview.addEventListener('hide', () => {
+ this.webviewHide = true
+ })
+ currentWebview.addEventListener('show', () => {
+ this.webviewHide = false
+ })
+ // #endif
+ this.$nextTick(() => {
+ this.initSize()
+ })
+ },
+ // #ifdef APP-NVUE
+ beforeDestroy() {
+ this.stopAnimation = true
+ },
+ // #endif
+ methods: {
+ initSize() {
+ if (this.scrollable) {
+ // #ifndef APP-NVUE
+ let query = [],
+ boxWidth = 0,
+ textWidth = 0;
+ let textQuery = new Promise((resolve, reject) => {
+ uni.createSelectorQuery()
+ // #ifndef MP-ALIPAY
+ .in(this)
+ // #endif
+ .select(`#${this.elId}`)
+ .boundingClientRect()
+ .exec(ret => {
+ this.textWidth = ret[0].width
+ resolve()
+ })
+ })
+ let boxQuery = new Promise((resolve, reject) => {
+ uni.createSelectorQuery()
+ // #ifndef MP-ALIPAY
+ .in(this)
+ // #endif
+ .select(`#${this.elIdBox}`)
+ .boundingClientRect()
+ .exec(ret => {
+ this.boxWidth = ret[0].width
+ resolve()
+ })
+ })
+ query.push(textQuery)
+ query.push(boxQuery)
+ Promise.all(query).then(() => {
+ this.animationDuration = `${this.textWidth / this.speed}s`
+ this.animationDelay = `-${this.boxWidth / this.speed}s`
+ setTimeout(() => {
+ this.animationPlayState = 'running'
+ }, 1000)
+ })
+ // #endif
+ // #ifdef APP-NVUE
+ dom.getComponentRect(this.$refs['animationEle'], (res) => {
+ let winWidth = uni.getSystemInfoSync().windowWidth
+ this.textWidth = res.size.width
+ animation.transition(this.$refs['animationEle'], {
+ styles: {
+ transform: `translateX(-${winWidth}px)`
+ },
+ duration: 0,
+ timingFunction: 'linear',
+ delay: 0
+ }, () => {
+ if (!this.stopAnimation) {
+ animation.transition(this.$refs['animationEle'], {
+ styles: {
+ transform: `translateX(-${this.textWidth}px)`
+ },
+ timingFunction: 'linear',
+ duration: (this.textWidth - winWidth) / this.speed * 1000,
+ delay: 1000
+ }, () => {
+ if (!this.stopAnimation) {
+ this.loopAnimation()
+ }
+ });
+ }
+ });
+ })
+ // #endif
+ }
+ // #ifdef APP-NVUE
+ if (!this.scrollable && (this.single || this.moreText)) {
+ dom.getComponentRect(this.$refs['textBox'], (res) => {
+ this.wrapWidth = res.size.width
+ })
+ }
+ // #endif
+ },
+ loopAnimation() {
+ // #ifdef APP-NVUE
+ animation.transition(this.$refs['animationEle'], {
+ styles: {
+ transform: `translateX(0px)`
+ },
+ duration: 0
+ }, () => {
+ if (!this.stopAnimation) {
+ animation.transition(this.$refs['animationEle'], {
+ styles: {
+ transform: `translateX(-${this.textWidth}px)`
+ },
+ duration: this.textWidth / this.speed * 1000,
+ timingFunction: 'linear',
+ delay: 0
+ }, () => {
+ if (!this.stopAnimation) {
+ this.loopAnimation()
+ }
+ });
+ }
+ });
+ // #endif
+ },
+ clickMore() {
+ this.$emit('getmore')
+ },
+ close() {
+ this.show = false;
+ this.$emit('close')
+ },
+ onClick() {
+ this.$emit('click')
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-noticebar {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ padding: 6px 12px;
+ margin-bottom: 10px;
+ }
+
+ .uni-noticebar-close {
+ margin-right: 5px;
+ }
+
+ .uni-noticebar-icon {
+ margin-right: 5px;
+ }
+
+ .uni-noticebar__content-wrapper {
+ flex: 1;
+ flex-direction: column;
+ overflow: hidden;
+ }
+
+ .uni-noticebar__content-wrapper--single {
+ /* #ifndef APP-NVUE */
+ line-height: 18px;
+ /* #endif */
+ }
+
+ .uni-noticebar__content-wrapper--single,
+ .uni-noticebar__content-wrapper--scrollable {
+ flex-direction: row;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-noticebar__content-wrapper--scrollable {
+ position: relative;
+ height: 18px;
+ }
+
+ /* #endif */
+
+ .uni-noticebar__content--scrollable {
+ /* #ifdef APP-NVUE */
+ flex: 0;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ flex: 1;
+ display: block;
+ overflow: hidden;
+ /* #endif */
+ }
+
+ .uni-noticebar__content--single {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex: none;
+ width: 100%;
+ justify-content: center;
+ /* #endif */
+ }
+
+ .uni-noticebar__content-text {
+ font-size: 14px;
+ line-height: 18px;
+ /* #ifndef APP-NVUE */
+ word-break: break-all;
+ /* #endif */
+ }
+
+ .uni-noticebar__content-text--single {
+ /* #ifdef APP-NVUE */
+ lines: 1;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ display: block;
+ width: 100%;
+ white-space: nowrap;
+ /* #endif */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .uni-noticebar__content-text--scrollable {
+ /* #ifdef APP-NVUE */
+ lines: 1;
+ padding-left: 750rpx;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ position: absolute;
+ display: block;
+ height: 18px;
+ line-height: 18px;
+ white-space: nowrap;
+ padding-left: 100%;
+ animation: notice 10s 0s linear infinite both;
+ animation-play-state: paused;
+ /* #endif */
+ }
+
+ .uni-noticebar__more {
+ /* #ifndef APP-NVUE */
+ display: inline-flex;
+ /* #endif */
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-items: center;
+ padding-left: 5px;
+ }
+
+ .uni-noticebar__more-text {
+ font-size: 14px;
+ }
+
+ @keyframes notice {
+ 100% {
+ transform: translate3d(-100%, 0, 0);
+ }
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-number-box/uni-number-box.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-number-box/uni-number-box.vue"
new file mode 100644
index 0000000..3f3e866
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-number-box/uni-number-box.vue"
@@ -0,0 +1,197 @@
+<template>
+ <view class="uni-numbox">
+ <view @click="_calcValue('minus')" class="uni-numbox__minus">
+ <text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue <= min || disabled }">-</text>
+ </view>
+ <input :disabled="disabled" @blur="_onBlur" class="uni-numbox__value" type="number" v-model="inputValue" />
+ <view @click="_calcValue('plus')" class="uni-numbox__plus">
+ <text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue >= max || disabled }">+</text>
+ </view>
+ </view>
+</template>
+<script>
+ /**
+ * NumberBox 鏁板瓧杈撳叆妗�
+ * @description 甯﹀姞鍑忔寜閽殑鏁板瓧杈撳叆妗�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=31
+ * @property {Number} value 杈撳叆妗嗗綋鍓嶅��
+ * @property {Number} min 鏈�灏忓��
+ * @property {Number} max 鏈�澶у��
+ * @property {Number} step 姣忔鐐瑰嚮鏀瑰彉鐨勯棿闅斿ぇ灏�
+ * @property {Boolean} disabled = [true|false] 鏄惁涓虹鐢ㄧ姸鎬�
+ * @event {Function} change 杈撳叆妗嗗�兼敼鍙樻椂瑙﹀彂鐨勪簨浠讹紝鍙傛暟涓鸿緭鍏ユ褰撳墠鐨� value
+ */
+
+ export default {
+ name: "UniNumberBox",
+ props: {
+ value: {
+ type: [Number, String],
+ default: 1
+ },
+ min: {
+ type: Number,
+ default: 0
+ },
+ max: {
+ type: Number,
+ default: 100
+ },
+ step: {
+ type: Number,
+ default: 1
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ inputValue: 0
+ };
+ },
+ watch: {
+ value(val) {
+ this.inputValue = +val;
+ },
+ inputValue(newVal, oldVal) {
+ if (+newVal !== +oldVal) {
+ this.$emit("change", newVal);
+ }
+ }
+ },
+ created() {
+ this.inputValue = +this.value;
+ },
+ methods: {
+ _calcValue(type) {
+ if (this.disabled) {
+ return;
+ }
+ const scale = this._getDecimalScale();
+ let value = this.inputValue * scale;
+ let step = this.step * scale;
+ if (type === "minus") {
+ value -= step;
+ if (value < (this.min * scale)) {
+ return;
+ }
+ if (value > (this.max * scale)) {
+ value = this.max * scale
+ }
+ } else if (type === "plus") {
+ value += step;
+ if (value > (this.max * scale)) {
+ return;
+ }
+ if (value < (this.min * scale)) {
+ value = this.min * scale
+ }
+ }
+
+ this.inputValue = String(value / scale);
+ },
+ _getDecimalScale() {
+ let scale = 1;
+ // 娴偣鍨�
+ if (~~this.step !== this.step) {
+ scale = Math.pow(10, (this.step + "").split(".")[1].length);
+ }
+ return scale;
+ },
+ _onBlur(event) {
+ let value = event.detail.value;
+ if (!value) {
+ // this.inputValue = 0;
+ return;
+ }
+ value = +value;
+ if (value > this.max) {
+ value = this.max;
+ } else if (value < this.min) {
+ value = this.min;
+ }
+ this.inputValue = value;
+ }
+ }
+ };
+</script>
+<style scoped>
+ /* #ifdef APP-NVUE */
+ /* #endif */
+
+ .uni-numbox {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ height: 35px;
+ line-height: 35px;
+ width: 120px;
+ }
+
+ .uni-numbox__value {
+ background-color: #ffffff;
+ width: 40px;
+ height: 35px;
+ text-align: center;
+ font-size: 16;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #e5e5e5;
+ border-left-width: 0;
+ border-right-width: 0;
+ }
+
+ .uni-numbox__minus {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 35px;
+ height: 35px;
+ /* line-height: $box-line-height;
+ */
+ /* text-align: center;
+ */
+ font-size: 20px;
+ color: #333;
+ background-color: #f8f8f8;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #e5e5e5;
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-right-width: 0;
+ }
+
+ .uni-numbox__plus {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 35px;
+ height: 35px;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #e5e5e5;
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ background-color: #f8f8f8;
+ border-left-width: 0;
+ }
+
+ .uni-numbox--text {
+ font-size: 40rpx;
+ color: #333;
+ }
+
+ .uni-numbox--disabled {
+ color: #c0c0c0;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-pagination/uni-pagination.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-pagination/uni-pagination.vue"
new file mode 100644
index 0000000..e1f2a76
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-pagination/uni-pagination.vue"
@@ -0,0 +1,200 @@
+<template>
+ <view class="uni-pagination">
+ <view class="uni-pagination__btn" :class="currentIndex === 1 ? 'uni-pagination--disabled' : 'uni-pagination--enabled'" :hover-class="currentIndex === 1 ? '' : 'uni-pagination--hover'" :hover-start-time="20" :hover-stay-time="70" @click="clickLeft">
+ <template v-if="showIcon===true || showIcon === 'true'">
+ <uni-icons color="#000" size="20" type="arrowleft" />
+ </template>
+ <template v-else><text class="uni-pagination__child-btn">{{ prevText }}</text></template>
+ </view>
+ <view class="uni-pagination__num">
+ <view class="uni-pagination__num-current">
+ <text class="uni-pagination__num-current-text" style="color:#007aff">{{ currentIndex }}</text><text class="uni-pagination__num-current-text">/{{ maxPage || 0 }}</text>
+ </view>
+ </view>
+ <view class="uni-pagination__btn" :class="currentIndex === maxPage ? 'uni-pagination--disabled' : 'uni-pagination--enabled'" :hover-class="currentIndex === maxPage ? '' : 'uni-pagination--hover'" :hover-start-time="20" :hover-stay-time="70" @click="clickRight">
+ <template v-if="showIcon===true || showIcon === 'true'">
+ <uni-icons color="#000" size="20" type="arrowright" />
+ </template>
+ <template v-else><text class="uni-pagination__child-btn">{{ nextText }}</text></template>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+
+ /**
+ * Pagination 鍒嗛〉鍣�
+ * @description 鍒嗛〉鍣ㄧ粍浠讹紝鐢ㄤ簬灞曠ず椤电爜銆佽姹傛暟鎹瓑
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=32
+ * @property {String} prevText 宸︿晶鎸夐挳鏂囧瓧
+ * @property {String} nextText 鍙充晶鎸夐挳鏂囧瓧
+ * @property {Number} current 褰撳墠椤�
+ * @property {Number} total 鏁版嵁鎬婚噺
+ * @property {Number} pageSize 姣忛〉鏁版嵁閲�
+ * @property {Number} showIcon = [true|false] 鏄惁浠� icon 褰㈠紡灞曠ず鎸夐挳
+ * @event {Function} change 鐐瑰嚮椤电爜鎸夐挳鏃惰Е鍙� ,e={type,current} current涓哄綋鍓嶉〉锛宼ype鍊间负锛歯ext/prev锛岃〃绀虹偣鍑荤殑鏄笂涓�椤佃繕鏄笅涓�涓�
+ */
+
+ export default {
+ name: 'UniPagination',
+ components: {
+ uniIcons
+ },
+ props: {
+ prevText: {
+ type: String,
+ default: '涓婁竴椤�'
+ },
+ nextText: {
+ type: String,
+ default: '涓嬩竴椤�'
+ },
+ current: {
+ type: [Number, String],
+ default: 1
+ },
+ total: { // 鏁版嵁鎬婚噺
+ type: [Number, String],
+ default: 0
+ },
+ pageSize: { // 姣忛〉鏁版嵁閲�
+ type: [Number, String],
+ default: 10
+ },
+ showIcon: { // 鏄惁浠� icon 褰㈠紡灞曠ず鎸夐挳
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ data() {
+ return {
+ currentIndex: 1
+ }
+ },
+ computed: {
+ maxPage() {
+ let maxPage = 1
+ let total = Number(this.total)
+ let pageSize = Number(this.pageSize)
+ if (total && pageSize) {
+ maxPage = Math.ceil(total / pageSize)
+ }
+ return maxPage
+ }
+ },
+ watch: {
+ current(val) {
+ this.currentIndex = +val
+ }
+ },
+ created() {
+ this.currentIndex = +this.current
+ },
+ methods: {
+ clickLeft() {
+ if (Number(this.currentIndex) === 1) {
+ return
+ }
+ this.currentIndex -= 1
+ this.change('prev')
+ },
+ clickRight() {
+ if (Number(this.currentIndex) === this.maxPage) {
+ return
+ }
+ this.currentIndex += 1
+ this.change('next')
+ },
+ change(e) {
+ this.$emit('change', {
+ type: e,
+ current: this.currentIndex
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-pagination {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ position: relative;
+ overflow: hidden;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-pagination__btn {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ width: 60px;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px;
+ position: relative;
+ background-color: #f8f8f8;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #e5e5e5;
+ }
+
+ .uni-pagination__child-btn {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ font-size: 14px;
+ position: relative;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ }
+
+ .uni-pagination__num {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px;
+ color: #333;
+ }
+
+ .uni-pagination__num-current {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-pagination__num-current-text {
+ font-size: 15px;
+ }
+
+ .uni-pagination--enabled {
+ color: #333333;
+ opacity: 1;
+ }
+
+ .uni-pagination--disabled {
+ opacity: 0.3;
+ }
+
+ .uni-pagination--hover {
+ color: rgba(0, 0, 0, .6);
+ background-color: #f1f1f1;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-dialog.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-dialog.vue"
new file mode 100644
index 0000000..cfca261
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-dialog.vue"
@@ -0,0 +1,243 @@
+<template>
+ <view class="uni-popup-dialog">
+ <view class="uni-dialog-title">
+ <text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
+ </view>
+ <view class="uni-dialog-content">
+ <text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
+ <input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" placeholder="璇疯緭鍏ュ唴瀹�">
+ </view>
+ <view class="uni-dialog-button-group">
+ <view class="uni-dialog-button" @click="close">
+ <text class="uni-dialog-button-text">鍙栨秷</text>
+ </view>
+ <view class="uni-dialog-button uni-border-left" @click="onOk">
+ <text class="uni-dialog-button-text uni-button-color">纭畾</text>
+ </view>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ /**
+ * PopUp 寮瑰嚭灞�-瀵硅瘽妗嗘牱寮�
+ * @description 寮瑰嚭灞�-瀵硅瘽妗嗘牱寮�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+ * @property {String} value input 妯″紡涓嬬殑榛樿鍊�
+ * @property {String} placeholder input 妯″紡涓嬭緭鍏ユ彁绀�
+ * @property {String} type = [success|warning|info|error] 涓婚鏍峰紡
+ * @value success 鎴愬姛
+ * @value warning 鎻愮ず
+ * @value info 娑堟伅
+ * @value error 閿欒
+ * @property {String} mode = [base|input] 妯″紡銆�
+ * @value base 鍩虹瀵硅瘽妗�
+ * @value input 鍙緭鍏ュ璇濇
+ * @property {String} content 瀵硅瘽妗嗗唴瀹�
+ * @property {Boolean} beforeClose 鏄惁鎷︽埅鍙栨秷浜嬩欢
+ * @event {Function} confirm 鐐瑰嚮纭鎸夐挳瑙﹀彂
+ * @event {Function} close 鐐瑰嚮鍙栨秷鎸夐挳瑙﹀彂
+ */
+
+ export default {
+ name: "uniPopupDialog",
+ props: {
+ value: {
+ type: [String, Number],
+ default: ''
+ },
+ placeholder: {
+ type: [String, Number],
+ default: '璇疯緭鍏ュ唴瀹�'
+ },
+ /**
+ * 瀵硅瘽妗嗕富棰� success/warning/info/error 榛樿 success
+ */
+ type: {
+ type: String,
+ default: 'error'
+ },
+ /**
+ * 瀵硅瘽妗嗘ā寮� base/input
+ */
+ mode: {
+ type: String,
+ default: 'base'
+ },
+ /**
+ * 瀵硅瘽妗嗘爣棰�
+ */
+ title: {
+ type: String,
+ default: '鎻愮ず'
+ },
+ /**
+ * 瀵硅瘽妗嗗唴瀹�
+ */
+ content: {
+ type: String,
+ default: ''
+ },
+ /**
+ * 鎷︽埅鍙栨秷浜嬩欢 锛屽鏋滄嫤鎴彇娑堜簨浠讹紝蹇呴』鐩戝惉close浜嬩欢锛屾墽琛� done()
+ */
+ beforeClose: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ dialogType: 'error',
+ focus: false,
+ val: ""
+ }
+ },
+ inject: ['popup'],
+ watch: {
+ type(val) {
+ this.dialogType = val
+ },
+ mode(val) {
+ if (val === 'input') {
+ this.dialogType = 'info'
+ }
+ },
+ value(val) {
+ this.val = val
+ }
+ },
+ created() {
+ // 瀵硅瘽妗嗛伄缃╀笉鍙偣鍑�
+ this.popup.mkclick = false
+ if (this.mode === 'input') {
+ this.dialogType = 'info'
+ this.val = this.value
+ } else {
+ this.dialogType = this.type
+ }
+ },
+ mounted() {
+ this.focus = true
+ },
+ methods: {
+ /**
+ * 鐐瑰嚮纭鎸夐挳
+ */
+ onOk() {
+ this.$emit('confirm', () => {
+ this.popup.close()
+ if (this.mode === 'input') this.val = this.value
+ }, this.mode === 'input' ? this.val : '')
+ },
+ /**
+ * 鐐瑰嚮鍙栨秷鎸夐挳
+ */
+ close() {
+ if (this.beforeClose) {
+ this.$emit('close', () => {
+ this.popup.close()
+ })
+ return
+ }
+ this.popup.close()
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-popup-dialog {
+ width: 300px;
+ border-radius: 15px;
+ background-color: #fff;
+ }
+
+ .uni-dialog-title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ padding-top: 15px;
+ padding-bottom: 5px;
+ }
+
+ .uni-dialog-title-text {
+ font-size: 16px;
+ font-weight: 500;
+ }
+
+ .uni-dialog-content {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 5px 15px 15px 15px;
+ }
+
+ .uni-dialog-content-text {
+ font-size: 14px;
+ color: #6e6e6e;
+ }
+
+ .uni-dialog-button-group {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ border-top-color: #f5f5f5;
+ border-top-style: solid;
+ border-top-width: 1px;
+ }
+
+ .uni-dialog-button {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+
+ flex: 1;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ height: 45px;
+ }
+
+ .uni-border-left {
+ border-left-color: #f0f0f0;
+ border-left-style: solid;
+ border-left-width: 1px;
+ }
+
+ .uni-dialog-button-text {
+ font-size: 14px;
+ }
+
+ .uni-button-color {
+ color: #007aff;
+ }
+
+ .uni-dialog-input {
+ flex: 1;
+ font-size: 14px;
+ }
+
+ .uni-popup__success {
+ color: #4cd964;
+ }
+
+ .uni-popup__warn {
+ color: #f0ad4e;
+ }
+
+ .uni-popup__error {
+ color: #dd524d;
+ }
+
+ .uni-popup__info {
+ color: #909399;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-message.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-message.vue"
new file mode 100644
index 0000000..7f0f7c5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-message.vue"
@@ -0,0 +1,116 @@
+<template>
+ <view class="uni-popup-message" :class="'uni-popup__'+[type]">
+ <text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * PopUp 寮瑰嚭灞�-娑堟伅鎻愮ず
+ * @description 寮瑰嚭灞�-娑堟伅鎻愮ず
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+ * @property {String} type = [success|warning|info|error] 涓婚鏍峰紡
+ * @value success 鎴愬姛
+ * @value warning 鎻愮ず
+ * @value info 娑堟伅
+ * @value error 閿欒
+ * @property {String} message 娑堟伅鎻愮ず鏂囧瓧
+ * @property {String} duration 鏄剧ず鏃堕棿锛岃缃负 0 鍒欎笉浼氳嚜鍔ㄥ叧闂�
+ */
+
+ export default {
+ name: 'UniPopupMessage',
+ props: {
+ /**
+ * 涓婚 success/warning/info/error 榛樿 success
+ */
+ type: {
+ type: String,
+ default: 'success'
+ },
+ /**
+ * 娑堟伅鏂囧瓧
+ */
+ message: {
+ type: String,
+ default: ''
+ },
+ /**
+ * 鏄剧ず鏃堕棿锛岃缃负 0 鍒欎笉浼氳嚜鍔ㄥ叧闂�
+ */
+ duration: {
+ type: Number,
+ default: 3000
+ }
+ },
+ inject: ['popup'],
+ data() {
+ return {}
+ },
+ created() {
+ this.popup.childrenMsg = this
+ },
+ methods: {
+ open() {
+ if (this.duration === 0) return
+ clearTimeout(this.popuptimer)
+ this.popuptimer = setTimeout(() => {
+ this.popup.close()
+ }, this.duration)
+ },
+ close() {
+ clearTimeout(this.popuptimer)
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-popup-message {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ background-color: #e1f3d8;
+ padding: 10px 15px;
+ border-color: #eee;
+ border-style: solid;
+ border-width: 1px;
+ }
+
+ .uni-popup-message-text {
+ font-size: 14px;
+ padding: 0;
+ }
+
+ .uni-popup__success {
+ background-color: #e1f3d8;
+ }
+
+ .uni-popup__success-text {
+ color: #67C23A;
+ }
+
+ .uni-popup__warn {
+ background-color: #faecd8;
+ }
+
+ .uni-popup__warn-text {
+ color: #E6A23C;
+ }
+
+ .uni-popup__error {
+ background-color: #fde2e2;
+ }
+
+ .uni-popup__error-text {
+ color: #F56C6C;
+ }
+
+ .uni-popup__info {
+ background-color: #F2F6FC;
+ }
+
+ .uni-popup__info-text {
+ color: #909399;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-share.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-share.vue"
new file mode 100644
index 0000000..dce13d5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup-share.vue"
@@ -0,0 +1,168 @@
+<template>
+ <view class="uni-popup-share">
+ <view class="uni-share-title"><text class="uni-share-title-text">{{title}}</text></view>
+ <view class="uni-share-content">
+ <view class="uni-share-content-box">
+ <view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
+ <image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
+ <text class="uni-share-text">{{item.text}}</text>
+ </view>
+
+ </view>
+ </view>
+ <view class="uni-share-button-box">
+ <button class="uni-share-button" @click="close">鍙栨秷</button>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name: 'UniPopupShare',
+ props: {
+ title: {
+ type: String,
+ default: '鍒嗕韩鍒�'
+ }
+ },
+ inject: ['popup'],
+ data() {
+ return {
+ bottomData: [{
+ text: '寰俊',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-2.png',
+ name: 'wx'
+ },
+ {
+ text: '鏀粯瀹�',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-8.png',
+ name: 'wx'
+ },
+ {
+ text: 'QQ',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/gird-3.png',
+ name: 'qq'
+ },
+ {
+ text: '鏂版氮',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-1.png',
+ name: 'sina'
+ },
+ {
+ text: '鐧惧害',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-7.png',
+ name: 'copy'
+ },
+ {
+ text: '鍏朵粬',
+ icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-5.png',
+ name: 'more'
+ }
+ ]
+ }
+ },
+ created() {},
+ methods: {
+ /**
+ * 閫夋嫨鍐呭
+ */
+ select(item, index) {
+ this.$emit('select', {
+ item,
+ index
+ }, () => {
+ this.popup.close()
+ })
+ },
+ /**
+ * 鍏抽棴绐楀彛
+ */
+ close() {
+ this.popup.close()
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-popup-share {
+ background-color: #fff;
+ }
+
+ .uni-share-title {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ height: 40px;
+ }
+
+ .uni-share-title-text {
+ font-size: 14px;
+ color: #666;
+ }
+
+ .uni-share-content {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ padding-top: 10px;
+ }
+
+ .uni-share-content-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ flex-wrap: wrap;
+ width: 360px;
+ }
+
+ .uni-share-content-item {
+ width: 90px;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ justify-content: center;
+ padding: 10px 0;
+ align-items: center;
+ }
+
+ .uni-share-content-item:active {
+ background-color: #f5f5f5;
+ }
+
+ .uni-share-image {
+ width: 30px;
+ height: 30px;
+ }
+
+ .uni-share-text {
+ margin-top: 10px;
+ font-size: 14px;
+ color: #3B4144;
+ }
+
+ .uni-share-button-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ padding: 10px 15px;
+ }
+
+ .uni-share-button {
+ flex: 1;
+ border-radius: 50px;
+ color: #666;
+ font-size: 16px;
+ }
+
+ .uni-share-button::after {
+ border-radius: 50px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup.vue"
new file mode 100644
index 0000000..91c98fc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-popup/uni-popup.vue"
@@ -0,0 +1,293 @@
+<template>
+ <view v-if="showPopup" class="uni-popup" :class="[popupstyle]" @touchmove.stop.prevent="clear">
+ <uni-transition v-if="maskShow" :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans" @click="onTap" />
+ <uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+ <view class="uni-popup__wrapper-box" @click.stop="clear">
+ <slot />
+ </view>
+ </uni-transition>
+ </view>
+</template>
+
+<script>
+ import uniTransition from '../uni-transition/uni-transition.vue'
+ import popup from './popup.js'
+ /**
+ * PopUp 寮瑰嚭灞�
+ * @description 寮瑰嚭灞傜粍浠讹紝涓轰簡瑙e喅閬僵寮瑰眰鐨勯棶棰�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+ * @property {String} type = [top|center|bottom] 寮瑰嚭鏂瑰紡
+ * @value top 椤堕儴寮瑰嚭
+ * @value center 涓棿寮瑰嚭
+ * @value bottom 搴曢儴寮瑰嚭
+ * @value message 娑堟伅鎻愮ず
+ * @value dialog 瀵硅瘽妗�
+ * @value share 搴曢儴鍒嗕韩绀轰緥
+ * @property {Boolean} animation = [ture|false] 鏄惁寮�鍚姩鐢�
+ * @property {Boolean} maskClick = [ture|false] 钂欑増鐐瑰嚮鏄惁鍏抽棴寮圭獥
+ * @event {Function} change 鎵撳紑鍏抽棴寮圭獥瑙﹀彂锛宔={show: false}
+ */
+
+ export default {
+ name: 'UniPopup',
+ components: {
+ uniTransition
+ },
+ props: {
+ // 寮�鍚姩鐢�
+ animation: {
+ type: Boolean,
+ default: true
+ },
+ // 寮瑰嚭灞傜被鍨嬶紝鍙�夊�硷紝top: 椤堕儴寮瑰嚭灞傦紱bottom锛氬簳閮ㄥ脊鍑哄眰锛沜enter锛氬叏灞忓脊鍑哄眰
+ // message: 娑堟伅鎻愮ず ; dialog : 瀵硅瘽妗�
+ type: {
+ type: String,
+ default: 'center'
+ },
+ // maskClick
+ maskClick: {
+ type: Boolean,
+ default: true
+ }
+ },
+ provide() {
+ return {
+ popup: this
+ }
+ },
+ mixins: [popup],
+ watch: {
+ /**
+ * 鐩戝惉type绫诲瀷
+ */
+ type: {
+ handler: function(newVal) {
+ this[this.config[newVal]]()
+ },
+ immediate: true
+ },
+ /**
+ * 鐩戝惉閬僵鏄惁鍙偣鍑�
+ * @param {Object} val
+ */
+ maskClick(val) {
+ this.mkclick = val
+ }
+ },
+ data() {
+ return {
+ duration: 300,
+ ani: [],
+ showPopup: false,
+ showTrans: false,
+ maskClass: {
+ 'position': 'fixed',
+ 'bottom': 0,
+ 'top': 0,
+ 'left': 0,
+ 'right': 0,
+ 'backgroundColor': 'rgba(0, 0, 0, 0.4)'
+ },
+ transClass: {
+ 'position': 'fixed',
+ 'left': 0,
+ 'right': 0,
+ },
+ maskShow: true,
+ mkclick: true,
+ popupstyle: 'top'
+ }
+ },
+ created() {
+ if (this.animation) {
+ this.duration = 300
+ } else {
+ this.duration = 0
+ }
+ },
+ methods: {
+ clear(e) {
+ // TODO nvue 鍙栨秷鍐掓场
+ e.stopPropagation()
+ },
+ open() {
+ this.showPopup = true
+ this.$nextTick(() => {
+ new Promise(resolve => {
+ clearTimeout(this.timer)
+ this.timer = setTimeout(() => {
+ this.showTrans = true
+ // fixed by mehaotian 鍏煎 app 绔�
+ this.$nextTick(() => {
+ resolve();
+ })
+ }, 50);
+ }).then(res => {
+ // 鑷畾涔夋墦寮�浜嬩欢
+ clearTimeout(this.msgtimer)
+ this.msgtimer = setTimeout(() => {
+ this.customOpen && this.customOpen()
+ }, 100)
+ this.$emit('change', {
+ show: true,
+ type: this.type
+ })
+ })
+ })
+ },
+ close(type) {
+ this.showTrans = false
+ this.$nextTick(() => {
+ this.$emit('change', {
+ show: false,
+ type: this.type
+ })
+ clearTimeout(this.timer)
+ // 鑷畾涔夊叧闂簨浠�
+ this.customOpen && this.customClose()
+ this.timer = setTimeout(() => {
+ this.showPopup = false
+ }, 300)
+ })
+ },
+ onTap() {
+ if (!this.mkclick) return
+ this.close()
+ },
+ /**
+ * 椤堕儴寮瑰嚭鏍峰紡澶勭悊
+ */
+ top() {
+ this.popupstyle = 'top'
+ this.ani = ['slide-top']
+ this.transClass = {
+ 'position': 'fixed',
+ 'left': 0,
+ 'right': 0,
+ }
+ },
+ /**
+ * 搴曢儴寮瑰嚭鏍峰紡澶勭悊
+ */
+ bottom() {
+ this.popupstyle = 'bottom'
+ this.ani = ['slide-bottom']
+ this.transClass = {
+ 'position': 'fixed',
+ 'left': 0,
+ 'right': 0,
+ 'bottom': 0
+ }
+ },
+ /**
+ * 涓棿寮瑰嚭鏍峰紡澶勭悊
+ */
+ center() {
+ this.popupstyle = 'center'
+ this.ani = ['zoom-out', 'fade']
+ this.transClass = {
+ 'position': 'fixed',
+ /* #ifndef APP-NVUE */
+ 'display': 'flex',
+ 'flexDirection': 'column',
+ /* #endif */
+ 'bottom': 0,
+ 'left': 0,
+ 'right': 0,
+ 'top': 0,
+ 'justifyContent': 'center',
+ 'alignItems': 'center'
+ }
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-popup {
+ position: fixed;
+ /* #ifndef APP-NVUE */
+ z-index: 99;
+ /* #endif */
+ }
+
+ .uni-popup__mask {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background-color: rgba(0, 0, 0, 0.4);
+ opacity: 0;
+ }
+
+ .mask-ani {
+ transition-property: opacity;
+ transition-duration: 0.2s;
+ }
+
+ .uni-top-mask {
+ opacity: 1;
+ }
+
+ .uni-bottom-mask {
+ opacity: 1;
+ }
+
+ .uni-center-mask {
+ opacity: 1;
+ }
+
+ .uni-popup__wrapper {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: absolute;
+ }
+
+ .top {
+ /* #ifdef H5 */
+ top: var(--window-top);
+ /* #endif */
+ /* #ifndef H5 */
+ top: 0;
+ /* #endif */
+ }
+
+ .bottom {
+ bottom: 0;
+ }
+
+ .uni-popup__wrapper-box {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: relative;
+ /* iphonex 绛夊畨鍏ㄥ尯璁剧疆锛屽簳閮ㄥ畨鍏ㄥ尯閫傞厤 */
+ /* #ifndef APP-NVUE */
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ /* #endif */
+ }
+
+ .content-ani {
+ /* transition: transform 0.3s;
+ */
+ transition-property: transform, opacity;
+ transition-duration: 0.2s;
+ }
+
+
+ .uni-top-content {
+ transform: translateY(0);
+ }
+
+ .uni-bottom-content {
+ transform: translateY(0);
+ }
+
+ .uni-center-content {
+ transform: scale(1);
+ opacity: 1;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-rate/uni-rate.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-rate/uni-rate.vue"
new file mode 100644
index 0000000..a9ddd68
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-rate/uni-rate.vue"
@@ -0,0 +1,157 @@
+<template>
+ <view class="uni-rate">
+ <view :key="index" :style="{ marginLeft: margin + 'px' }" @click="_onClick(index)" class="uni-rate__icon" v-for="(star, index) in stars">
+ <uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
+ <!-- #ifdef APP-NVUE -->
+ <view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
+ <uni-icons style="text-align: left;" :color="activeColor" :size="size" type="star-filled" />
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef APP-NVUE -->
+ <view :style="{ width: star.activeWitch,top:-size/2+'px' }" class="uni-rate__icon-on">
+ <uni-icons :color="activeColor" :size="size" type="star-filled" />
+ </view>
+ <!-- #endif -->
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from "../uni-icons/uni-icons.vue";
+
+ /**
+ * Rate 璇勫垎
+ * @description 璇勫垎缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=33
+ * @property {Number} value 褰撳墠璇勫垎
+ * @property {Number} max 鏈�澶х殑璇勫垎
+ * @property {Number} size 鏄熸槦鐨勫ぇ灏�
+ * @property {Number} margin 鏄熸槦鐨勯棿璺�
+ * @property {String} color 鏄熸槦鐨勯鑹�
+ * @property {String} activeColor 閫変腑鐘舵�佺殑鏄熸槦鐨勯鑹�
+ * @property {Boolean} isFill = [true|false] 鏄熸槦鐨勭被鍨嬶紝鏄惁涓哄疄蹇冪被鍨�
+ * @property {Boolean} disabled = [true|false] 鏄惁涓轰笉鍙偣鍑荤姸鎬�
+ * @event {Function} change uniRate 鐨� value 鏀瑰彉鏃惰Е鍙戜簨浠讹紝e={value:Number}
+ */
+
+ export default {
+ name: "UniRate",
+ components: {
+ uniIcons
+ },
+ props: {
+ isFill: {
+ // 鏄熸槦鐨勭被鍨嬶紝鏄惁闀傜┖
+ type: [Boolean, String],
+ default: true
+ },
+ color: {
+ // 鏄熸槦鐨勯鑹�
+ type: String,
+ default: "#ececec"
+ },
+ activeColor: {
+ // 鏄熸槦閫変腑鐘舵�侀鑹�
+ type: String,
+ default: "#ffca3e"
+ },
+ size: {
+ // 鏄熸槦鐨勫ぇ灏�
+ type: [Number, String],
+ default: 24
+ },
+ value: {
+ // 褰撳墠璇勫垎
+ type: [Number, String],
+ default: 0
+ },
+ max: {
+ // 鏈�澶ц瘎鍒�
+ type: [Number, String],
+ default: 5
+ },
+ margin: {
+ // 鏄熸槦鐨勯棿璺�
+ type: [Number, String],
+ default: 0
+ },
+ disabled: {
+ // 鏄惁鍙偣鍑�
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ data() {
+ return {
+ valueSync: ""
+ };
+ },
+ computed: {
+ stars() {
+ const value = this.valueSync ? this.valueSync : 0;
+ const starList = [];
+ const floorValue = Math.floor(value);
+ const ceilValue = Math.ceil(value);
+ // console.log("ceilValue: " + ceilValue);
+ // console.log("floorValue: " + floorValue);
+ for (let i = 0; i < this.max; i++) {
+ if (floorValue > i) {
+ starList.push({
+ activeWitch: "100%"
+ });
+ } else if (ceilValue - 1 === i) {
+ starList.push({
+ activeWitch: (value - floorValue) * 100 + "%"
+ });
+ } else {
+ starList.push({
+ activeWitch: "0"
+ });
+ }
+ }
+ // console.log("starList[4]: " + starList[4].activeWitch);
+ return starList;
+ }
+ },
+ created() {
+ this.valueSync = Number(this.value);
+ },
+ methods: {
+ _onClick(index) {
+ if (this.disabled) {
+ return;
+ }
+ this.valueSync = index + 1;
+ this.$emit("change", {
+ value: this.valueSync
+ });
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-rate {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ line-height: 0;
+ font-size: 0;
+ flex-direction: row;
+ }
+
+ .uni-rate__icon {
+ position: relative;
+ line-height: 0;
+ font-size: 0;
+ }
+
+ .uni-rate__icon-on {
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ left: 0;
+ line-height: 1;
+ text-align: left;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-search-bar/uni-search-bar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-search-bar/uni-search-bar.vue"
new file mode 100644
index 0000000..2a9bff8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-search-bar/uni-search-bar.vue"
@@ -0,0 +1,203 @@
+<template>
+ <view class="uni-searchbar">
+ <view :style="{borderRadius:radius+'px',backgroundColor: bgColor}" class="uni-searchbar__box" @click="searchClick">
+ <!-- #ifdef MP-ALIPAY -->
+ <view class="uni-searchbar__box-icon-search">
+ <uni-icons color="#999999" size="18" type="search" />
+ </view>
+ <!-- #endif -->
+ <!-- #ifndef MP-ALIPAY -->
+ <uni-icons color="#999999" class="uni-searchbar__box-icon-search" size="18" type="search" />
+ <!-- #endif -->
+ <input v-if="show" :focus="showSync" :placeholder="placeholder" :maxlength="maxlength" @confirm="confirm" class="uni-searchbar__box-search-input" confirm-type="search" type="text" v-model="searchVal" />
+ <text v-else class="uni-searchbar__text-placeholder">{{ placeholder }}</text>
+ <view v-if="show && (clearButton==='always'||clearButton==='auto'&&searchVal!=='')" class="uni-searchbar__box-icon-clear" @click="clear">
+ <uni-icons color="#999999" class="" size="24" type="clear" />
+ </view>
+ </view>
+ <text @click="cancel" class="uni-searchbar__cancel" v-if="cancelButton ==='always' || show && cancelButton ==='auto'">{{cancelText}}</text>
+ </view>
+</template>
+
+<script>
+ import uniIcons from "../uni-icons/uni-icons.vue";
+
+ /**
+ * SearchBar 鎼滅储鏍�
+ * @description 璇勫垎缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=866
+ * @property {Number} radius 鎼滅储鏍忓渾瑙�
+ * @property {Number} maxlength 杈撳叆鏈�澶ч暱搴�
+ * @property {String} placeholder 鎼滅储鏍廝laceholder
+ * @property {String} clearButton = [always|auto|none] 鏄惁鏄剧ず娓呴櫎鎸夐挳
+ * @value always 涓�鐩存樉绀�
+ * @value auto 杈撳叆妗嗕笉涓虹┖鏃舵樉绀�
+ * @value none 涓�鐩翠笉鏄剧ず
+ * @property {String} cancelButton = [always|auto|none] 鏄惁鏄剧ず鍙栨秷鎸夐挳
+ * @value always 涓�鐩存樉绀�
+ * @value auto 杈撳叆妗嗕笉涓虹┖鏃舵樉绀�
+ * @value none 涓�鐩翠笉鏄剧ず
+ * @property {String} cancelText 鍙栨秷鎸夐挳鐨勬枃瀛�
+ * @property {String} bgColor 杈撳叆妗嗚儗鏅鑹�
+ * @event {Function} confirm uniSearchBar 鐨勮緭鍏ユ confirm 浜嬩欢锛岃繑鍥炲弬鏁颁负uniSearchBar鐨剉alue锛宔={value:Number}
+ * @event {Function} input uniSearchBar 鐨� value 鏀瑰彉鏃惰Е鍙戜簨浠讹紝杩斿洖鍙傛暟涓簎niSearchBar鐨剉alue锛宔={value:Number}
+ * @event {Function} cancel 鐐瑰嚮鍙栨秷鎸夐挳鏃惰Е鍙戜簨浠讹紝杩斿洖鍙傛暟涓簎niSearchBar鐨剉alue锛宔={value:Number}
+ */
+
+ export default {
+ name: "UniSearchBar",
+ components: {
+ uniIcons
+ },
+ props: {
+ placeholder: {
+ type: String,
+ default: "璇疯緭鍏ユ悳绱㈠唴瀹�"
+ },
+ radius: {
+ type: [Number, String],
+ default: 5
+ },
+ clearButton: {
+ type: String,
+ default: "auto"
+ },
+ cancelButton: {
+ type: String,
+ default: "auto"
+ },
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ },
+ bgColor: {
+ type: String,
+ default: "#F8F8F8"
+ },
+ maxlength: {
+ type: [Number, String],
+ default: 100
+ }
+ },
+ data() {
+ return {
+ show: false,
+ showSync: false,
+ searchVal: ""
+ }
+ },
+ watch: {
+ searchVal() {
+ this.$emit("input", {
+ value: this.searchVal
+ })
+ }
+ },
+ methods: {
+ searchClick() {
+ if (this.show) {
+ return
+ }
+ this.searchVal = ""
+ this.show = true;
+ this.$nextTick(() => {
+ this.showSync = true;
+ })
+ },
+ clear() {
+ this.searchVal = ""
+ },
+ cancel() {
+ this.$emit("cancel", {
+ value: this.searchVal
+ });
+ this.searchVal = ""
+ this.show = false
+ this.showSync = false
+ // #ifndef APP-PLUS
+ uni.hideKeyboard()
+ // #endif
+ // #ifdef APP-PLUS
+ plus.key.hideSoftKeybord()
+ // #endif
+ },
+ confirm() {
+ // #ifndef APP-PLUS
+ uni.hideKeyboard();
+ // #endif
+ // #ifdef APP-PLUS
+ plus.key.hideSoftKeybord()
+ // #endif
+ this.$emit("confirm", {
+ value: this.searchVal
+ })
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-searchbar {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ position: relative;
+ padding: 8px;
+ background-color: #ffffff;
+ }
+
+ .uni-searchbar__box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ box-sizing: border-box;
+ /* #endif */
+ overflow: hidden;
+ position: relative;
+ flex: 1;
+ justify-content: center;
+ flex-direction: row;
+ align-items: center;
+ height: 36px;
+ padding: 5px 8px 5px 0px;
+ border-width: 0.5px;
+ border-style: solid;
+ border-color: #e5e5e5;
+ }
+
+ .uni-searchbar__box-icon-search {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ width: 32px;
+ justify-content: center;
+ align-items: center;
+ color: #808080;
+ }
+
+ .uni-searchbar__box-search-input {
+ flex: 1;
+ font-size: 14px;
+ color: #333;
+ }
+
+ .uni-searchbar__box-icon-clear {
+ align-items: center;
+ line-height: 24px;
+ padding-left: 5px;
+ }
+
+ .uni-searchbar__text-placeholder {
+ font-size: 14px;
+ color: #808080;
+ margin-left: 5px;
+ }
+
+ .uni-searchbar__cancel {
+ padding-left: 10px;
+ line-height: 36px;
+ font-size: 14px;
+ color: #333;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-section/uni-section.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-section/uni-section.vue"
new file mode 100644
index 0000000..1ba75cc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-section/uni-section.vue"
@@ -0,0 +1,137 @@
+<template>
+ <view class="uni-section" nvue>
+ <view v-if="type" class="uni-section__head">
+ <view :class="type" class="uni-section__head-tag" />
+ </view>
+ <view class="uni-section__content">
+ <text :class="{'distraction':!subTitle}" class="uni-section__content-title">{{ title }}</text>
+ <text v-if="subTitle" class="uni-section__content-sub">{{ subTitle }}</text>
+ </view>
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * Section 鏍囬鏍�
+ * @description 鏍囬鏍�
+ * @property {String} type = [line|circle] 鏍囬瑁呴グ绫诲瀷
+ * @value line 绔栫嚎
+ * @value circle 鍦嗗舰
+ * @property {String} title 涓绘爣棰�
+ * @property {String} subTitle 鍓爣棰�
+ */
+
+ export default {
+ name: 'UniTitle',
+ props: {
+ type: {
+ type: String,
+ default: ''
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ subTitle: {
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {}
+ },
+ watch: {
+ title(newVal) {
+ if (uni.report && newVal !== '') {
+ uni.report('title', newVal)
+ }
+ }
+ },
+ methods: {
+ onClick() {
+ this.$emit('click')
+ }
+ }
+ }
+</script>
+<style scoped>
+ .uni-section {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ margin-top: 10px;
+ flex-direction: row;
+ align-items: center;
+ padding: 0 10px;
+ height: 50px;
+ background-color: #f8f8f8;
+ /* #ifdef APP-NVUE */
+ border-bottom-color: #e5e5e5;
+ border-bottom-style: solid;
+ border-bottom-width: 0.5px;
+ /* #endif */
+ font-weight: normal;
+ }
+
+ /* #ifndef APP-NVUE */
+ .uni-section:after {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #e5e5e5;
+ }
+
+ /* #endif */
+
+ .uni-section__head {
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ margin-right: 10px;
+ }
+
+ .line {
+ height: 15px;
+ background-color: #c0c0c0;
+ border-radius: 5px;
+ width: 3px;
+ }
+
+ .circle {
+ width: 8px;
+ height: 8px;
+ border-top-right-radius: 50px;
+ border-top-left-radius: 50px;
+ border-bottom-left-radius: 50px;
+ border-bottom-right-radius: 50px;
+ background-color: #c0c0c0;
+ }
+
+ .uni-section__content {
+ flex-direction: column;
+ flex: 1;
+ color: #333;
+ }
+
+ .uni-section__content-title {
+ font-size: 14px;
+ color: #333;
+ }
+
+ .distraction {
+ flex-direction: row;
+ align-items: center;
+ }
+
+ .uni-section__content-sub {
+ font-size: 12px;
+ color: #999;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-segmented-control/uni-segmented-control.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-segmented-control/uni-segmented-control.vue"
new file mode 100644
index 0000000..a10f069
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-segmented-control/uni-segmented-control.vue"
@@ -0,0 +1,133 @@
+<template>
+ <view :class="[styleType === 'text'?'segmented-control--text' : 'segmented-control--button' ]" :style="{ borderColor: styleType === 'text' ? '' : activeColor }" class="segmented-control">
+ <view v-for="(item, index) in values" :class="[ styleType === 'text'?'segmented-control__item--text': 'segmented-control__item--button' , index === currentIndex&&styleType === 'button'?'segmented-control__item--button--active': '' , index === 0&&styleType === 'button'?'segmented-control__item--button--first': '',index === values.length - 1&&styleType === 'button'?'segmented-control__item--button--last': '' ]" :key="index" :style="{
+ backgroundColor: index === currentIndex && styleType === 'button' ? activeColor : '',borderColor: index === currentIndex&&styleType === 'text'||styleType === 'button'?activeColor:'transparent'
+ }" class="segmented-control__item" @click="_onClick(index)">
+ <text :style="{color:
+ index === currentIndex
+ ? styleType === 'text'
+ ? activeColor
+ : '#fff'
+ : styleType === 'text'
+ ? '#000'
+ : activeColor}" class="segmented-control__text">{{ item }}</text>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * SegmentedControl 鍒嗘鍣�
+ * @description 鐢ㄤ綔涓嶅悓瑙嗗浘鐨勬樉绀�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=54
+ * @property {Number} current 褰撳墠閫変腑鐨則ab绱㈠紩鍊硷紝浠�0璁℃暟
+ * @property {String} styleType = [button|text] 鍒嗘鍣ㄦ牱寮忕被鍨�
+ * @value button 鎸夐挳绫诲瀷
+ * @value text 鏂囧瓧绫诲瀷
+ * @property {String} activeColor 閫変腑鐨勬爣绛捐儗鏅壊涓庤竟妗嗛鑹�
+ * @property {Array} values 閫夐」鏁扮粍
+ * @event {Function} clickItem 缁勪欢瑙﹀彂鐐瑰嚮浜嬩欢鏃惰Е鍙戯紝e={currentIndex}
+ */
+
+ export default {
+ name: 'UniSegmentedControl',
+ props: {
+ current: {
+ type: Number,
+ default: 0
+ },
+ values: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ activeColor: {
+ type: String,
+ default: '#007aff'
+ },
+ styleType: {
+ type: String,
+ default: 'button'
+ }
+ },
+ data() {
+ return {
+ currentIndex: 0
+ }
+ },
+ watch: {
+ current(val) {
+ if (val !== this.currentIndex) {
+ this.currentIndex = val
+ }
+ }
+ },
+ created() {
+ this.currentIndex = this.current
+ },
+ methods: {
+ _onClick(index) {
+ if (this.currentIndex !== index) {
+ this.currentIndex = index
+ this.$emit('clickItem', {
+ currentIndex: index
+ })
+ }
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .segmented-control {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ box-sizing: border-box;
+ /* #endif */
+ flex-direction: row;
+ height: 36px;
+ overflow: hidden;
+ }
+
+ .segmented-control__item {
+ /* #ifndef APP-NVUE */
+ display: inline-flex;
+ box-sizing: border-box;
+ /* #endif */
+ position: relative;
+ flex: 1;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .segmented-control__item--button {
+ border-style: solid;
+ border-top-width: 1px;
+ border-bottom-width: 1px;
+ border-right-width: 1px;
+ border-left-width: 0;
+ }
+
+ .segmented-control__item--button--first {
+ border-left-width: 1px;
+ border-top-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ }
+
+ .segmented-control__item--button--last {
+ border-top-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ }
+
+ .segmented-control__item--text {
+ border-bottom-style: solid;
+ border-bottom-width: 3px;
+ }
+
+ .segmented-control__text {
+ font-size: 16px;
+ line-height: 20px;
+ text-align: center;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-status-bar/uni-status-bar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-status-bar/uni-status-bar.vue"
new file mode 100644
index 0000000..693faa4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-status-bar/uni-status-bar.vue"
@@ -0,0 +1,26 @@
+<template>
+ <view :style="{ height: statusBarHeight }" class="uni-status-bar">
+ <slot />
+ </view>
+</template>
+
+<script>
+ var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px'
+ export default {
+ name: 'UniStatusBar',
+ data() {
+ return {
+ statusBarHeight: statusBarHeight
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-status-bar {
+ width: 750rpx;
+ height: 20px;
+ /* height: var(--status-bar-height);
+ */
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-steps/uni-steps.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-steps/uni-steps.vue"
new file mode 100644
index 0000000..1978e95
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-steps/uni-steps.vue"
@@ -0,0 +1,253 @@
+<template>
+ <view class="uni-steps">
+ <view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
+ <view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
+ <view v-for="(item,index) in options" :key="index" :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
+ <text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.title}}</text>
+ <text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.desc}}</text>
+ </view>
+ </view>
+ <view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
+ <view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" v-for="(item,index) in options" :key="index">
+ <view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']" :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"></view>
+ <view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" v-if="index === active">
+ <uni-icons :color="activeColor" type="checkbox-filled" size="14"></uni-icons>
+ </view>
+ <view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" v-else :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
+ <view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']" :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"></view>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniIcons from '../uni-icons/uni-icons.vue'
+
+ /**
+ * Steps 姝ラ鏉�
+ * @description 璇勫垎缁勪欢
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=34
+ * @property {Number} active 褰撳墠姝ラ
+ * @property {String} direction = [row|column] 褰撳墠姝ラ
+ * @value row 妯悜
+ * @value column 绾靛悜
+ * @property {String} activeColor 閫変腑鐘舵�佺殑棰滆壊
+ * @property {Array} options 鏁版嵁婧愶紝鏍煎紡涓猴細[{title:'xxx',desc:'xxx'},{title:'xxx',desc:'xxx'}]
+ */
+
+ export default {
+ name: 'UniSteps',
+ components: {
+ uniIcons
+ },
+ props: {
+ direction: {
+ // 鎺掑垪鏂瑰悜 row column
+ type: String,
+ default: 'row'
+ },
+ activeColor: {
+ // 婵�娲荤姸鎬侀鑹�
+ type: String,
+ default: '#1aad19'
+ },
+ deactiveColor: {
+ // 鏈縺娲荤姸鎬侀鑹�
+ type: String,
+ default: '#999999'
+ },
+ active: {
+ // 褰撳墠姝ラ
+ type: Number,
+ default: 0
+ },
+ options: {
+ type: Array,
+ default () {
+ return []
+ }
+ } // 鏁版嵁
+ },
+ data() {
+ return {}
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-steps {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ width: 100%;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ flex: 1;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-steps__row {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-steps__column {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row-reverse;
+ }
+
+ .uni-steps__row-text-container {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-steps__column-text-container {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ flex: 1;
+ }
+
+ .uni-steps__row-text {
+ /* #ifndef APP-NVUE */
+ display: inline-flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: column;
+ }
+
+ .uni-steps__column-text {
+ padding: 6px 0px;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ border-bottom-color: #e5e5e5;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ }
+
+ .uni-steps__row-title {
+ font-size: 14px;
+ line-height: 16px;
+ text-align: center;
+ }
+
+ .uni-steps__column-title {
+ font-size: 14px;
+ text-align: left;
+ line-height: 18px;
+ }
+
+ .uni-steps__row-desc {
+ font-size: 12px;
+ line-height: 14px;
+ text-align: center;
+ }
+
+ .uni-steps__column-desc {
+ font-size: 12px;
+ text-align: left;
+ line-height: 18px;
+ }
+
+ .uni-steps__row-container {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-steps__column-container {
+ /* #ifndef APP-NVUE */
+ display: inline-flex;
+ /* #endif */
+ width: 30px;
+ flex-direction: column;
+ }
+
+ .uni-steps__row-line-item {
+ /* #ifndef APP-NVUE */
+ display: inline-flex;
+ /* #endif */
+ flex-direction: row;
+ flex: 1;
+ height: 14px;
+ line-height: 14px;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-steps__column-line-item {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .uni-steps__row-line {
+ flex: 1;
+ height: 1px;
+ background-color: #999;
+ }
+
+ .uni-steps__column-line {
+ width: 1px;
+ background-color: #999;
+ }
+
+ .uni-steps__row-line--after {
+ transform: translateX(1px);
+ }
+
+ .uni-steps__column-line--after {
+ flex: 1;
+ transform: translate(0px, 1px);
+ }
+
+ .uni-steps__row-line--before {
+ transform: translateX(-1px);
+ }
+
+ .uni-steps__column-line--before {
+ height: 6px;
+ transform: translate(0px, -1px);
+ }
+
+ .uni-steps__row-circle {
+ width: 5px;
+ height: 5px;
+ border-radius: 100px;
+ background-color: #999;
+ margin: 0px 3px;
+ }
+
+ .uni-steps__column-circle {
+ width: 5px;
+ height: 5px;
+ border-radius: 100px;
+ background-color: #999;
+ margin: 4px 0px 5px 0px;
+ }
+
+ .uni-steps__row-check {
+ margin: 0px 6px;
+ }
+
+ .uni-steps__column-check {
+ height: 14px;
+ line-height: 14px;
+ margin: 2px 0px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/index.wxs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/index.wxs"
new file mode 100644
index 0000000..24c94bb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/index.wxs"
@@ -0,0 +1,204 @@
+/**
+ * 鐩戝惉椤甸潰鍐呭�肩殑鍙樺寲,涓昏鐢ㄤ簬鍔ㄦ�佸紑鍏硈wipe-action
+ * @param {Object} newValue
+ * @param {Object} oldValue
+ * @param {Object} ownerInstance
+ * @param {Object} instance
+ */
+function sizeReady(newValue, oldValue, ownerInstance, instance) {
+ var state = instance.getState()
+ state.position = JSON.parse(newValue)
+ if (!state.position || state.position.length === 0) return
+ var show = state.position[0].show
+ state.left = state.left || state.position[0].left;
+ // 閫氳繃鐢ㄦ埛鍙橀噺,寮�鍚垨鍏抽棴
+ if (show) {
+ openState(true, instance, ownerInstance)
+ } else {
+ openState(false, instance, ownerInstance)
+ }
+}
+
+/**
+ * 寮�濮嬭Е鎽告搷浣�
+ * @param {Object} e
+ * @param {Object} ins
+ */
+function touchstart(e, ins) {
+ var instance = e.instance;
+ var state = instance.getState();
+ var pageX = e.touches[0].pageX;
+ // 寮�濮嬭Е鎽告椂绉婚櫎鍔ㄧ敾绫�
+ instance.removeClass('ani');
+ var owner = ins.selectAllComponents('.button-hock')
+ for (var i = 0; i < owner.length; i++) {
+ owner[i].removeClass('ani');
+ }
+ // state.position = JSON.parse(instance.getDataset().position);
+ state.left = state.left || state.position[0].left;
+ // 鑾峰彇鏈�缁堟寜閽粍鐨勫搴�
+ state.width = pageX - state.left;
+ ins.callMethod('closeSwipe')
+}
+
+/**
+ * 寮�濮嬫粦鍔ㄦ搷浣�
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+function touchmove(e, ownerInstance) {
+ var instance = e.instance;
+ var disabled = instance.getDataset().disabled
+ var state = instance.getState()
+ // fix by mehaotian, TODO 鍏煎 app-vue 鑾峰彇dataset涓哄瓧绗︿覆 , h5 鑾峰彇 涓� undefined 鐨勯棶棰�,寰呮鏋朵慨澶�
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
+
+ if (disabled) return
+ var pageX = e.touches[0].pageX;
+ move(pageX - state.width, instance, ownerInstance)
+}
+
+/**
+ * 缁撴潫瑙︽懜鎿嶄綔
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+function touchend(e, ownerInstance) {
+ var instance = e.instance;
+ var disabled = instance.getDataset().disabled
+ var state = instance.getState()
+
+ // fix by mehaotian, TODO 鍏煎 app-vue 鑾峰彇dataset涓哄瓧绗︿覆 , h5 鑾峰彇 涓� undefined 鐨勯棶棰�,寰呮鏋朵慨澶�
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
+
+ if (disabled) return
+ // 婊戝姩杩囩▼涓Е鎽哥粨鏉�,閫氳繃闃欏�煎垽鏂槸寮�鍚繕鏄叧闂�
+ // fixed by mehaotian 瀹氭椂鍣ㄨВ鍐崇偣鍑绘寜閽紝touchend 瑙﹀彂姣� click 浜嬩欢鏃舵満鏃╃殑闂 锛屼富瑕佹槸 ios13
+ moveDirection(state.left, -40, instance, ownerInstance)
+}
+
+/**
+ * 璁剧疆绉诲姩璺濈
+ * @param {Object} value
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+function move(value, instance, ownerInstance) {
+ var state = instance.getState()
+ // 鑾峰彇鍙粦鍔ㄨ寖鍥�
+ var x = Math.max(-state.position[1].width, Math.min((value), 0));
+ state.left = x;
+ instance.setStyle({
+ transform: 'translateX(' + x + 'px)',
+ '-webkit-transform': 'translateX(' + x + 'px)'
+ })
+ // 鎶樺彔鎸夐挳鍔ㄧ敾
+ buttonFold(x, instance, ownerInstance)
+}
+
+/**
+ * 绉诲姩鏂瑰悜鍒ゆ柇
+ * @param {Object} left
+ * @param {Object} value
+ * @param {Object} ownerInstance
+ * @param {Object} ins
+ */
+function moveDirection(left, value, ins, ownerInstance) {
+ var state = ins.getState()
+ var position = state.position
+ var isopen = state.isopen
+ if (!position[1].width) {
+ openState(false, ins, ownerInstance)
+ return
+ }
+ // 濡傛灉宸茬粡鏄墦寮�鐘舵��,杩涜鍒ゆ柇鏄惁鍏抽棴,杩樻槸淇濈暀鎵撳紑鐘舵��
+ if (isopen) {
+ if (-left <= position[1].width) {
+ openState(false, ins, ownerInstance)
+ } else {
+ openState(true, ins, ownerInstance)
+ }
+ return
+ }
+ // 濡傛灉鏄叧闂姸鎬�,杩涜鍒ゆ柇鏄惁鎵撳紑,杩樻槸淇濈暀鍏抽棴鐘舵��
+ if (left <= value) {
+ openState(true, ins, ownerInstance)
+ } else {
+ openState(false, ins, ownerInstance)
+ }
+}
+
+/**
+ * 璁剧疆鎸夐挳绉诲姩璺濈
+ * @param {Object} value
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+function buttonFold(value, instance, ownerInstance) {
+ var ins = ownerInstance.selectAllComponents('.button-hock');
+ var state = instance.getState();
+ var position = state.position;
+ var arr = [];
+ var w = 0;
+ for (var i = 0; i < ins.length; i++) {
+ if (!ins[i].getDataset().button) return
+ var btnData = JSON.parse(ins[i].getDataset().button)
+
+ // fix by mehaotian TODO 鍦� app-vue 涓�,瀛楃涓茶浆瀵硅薄,闇�瑕佽浆涓ゆ,杩欓噷鍏堣繖涔堝吋瀹�
+ if (typeof(btnData) === 'string') {
+ btnData = JSON.parse(btnData)
+ }
+
+ var button = btnData[i] && btnData[i].width || 0
+ w += button
+ arr.push(-w)
+ // 鍔ㄦ�佽绠楁寜閽粍姣忎釜鎸夐挳鐨勬姌鍙犲姩鐢荤Щ鍔ㄨ窛绂�
+ var distance = arr[i - 1] + value * (arr[i - 1] / position[1].width)
+ if (i != 0) {
+ ins[i].setStyle({
+ transform: 'translateX(' + distance + 'px)',
+ })
+ }
+ }
+}
+
+/**
+ * 寮�鍚姸鎬�
+ * @param {Boolean} type
+ * @param {Object} ins
+ * @param {Object} ownerInstance
+ */
+function openState(type, ins, ownerInstance) {
+ var state = ins.getState()
+ var position = state.position
+ if (state.isopen === undefined) {
+ state.isopen = false
+ }
+ // 鍙湁鐘舵�佹湁鏀瑰彉鎵嶄細閫氱煡椤甸潰鏀瑰彉鐘舵��
+ if (state.isopen !== type) {
+ // 閫氱煡椤甸潰,宸茬粡鎵撳紑
+ ownerInstance.callMethod('change', {
+ open: type
+ })
+ }
+ // 璁剧疆鎵撳紑鍜岀Щ鍔ㄧ姸鎬�
+ state.isopen = type
+
+
+ // 娣诲姞鍔ㄧ敾绫�
+ ins.addClass('ani');
+ var owner = ownerInstance.selectAllComponents('.button-hock')
+ for (var i = 0; i < owner.length; i++) {
+ owner[i].addClass('ani');
+ }
+ // 璁剧疆鏈�缁堢Щ鍔ㄤ綅缃�
+ move(type ? -position[1].width : 0, ins, ownerInstance)
+
+}
+
+module.exports = {
+ sizeReady: sizeReady,
+ touchstart: touchstart,
+ touchmove: touchmove,
+ touchend: touchend
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/uni-swipe-action-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/uni-swipe-action-item.vue"
new file mode 100644
index 0000000..bda7581
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action-item/uni-swipe-action-item.vue"
@@ -0,0 +1,265 @@
+<template>
+ <view class="uni-swipe">
+ <!-- 鍦ㄥ井淇″皬绋嬪簭 app vue绔� h5 浣跨敤wxs 瀹炵幇-->
+ <!-- #ifdef APP-VUE || MP-WEIXIN || H5 -->
+ <view class="uni-swipe_content">
+ <view :data-disabled="disabled" :data-position="pos" :change:prop="swipe.sizeReady" :prop="pos" class="uni-swipe_move-box selector-query-hock move-hock" @touchstart="swipe.touchstart" @touchmove="swipe.touchmove" @touchend="swipe.touchend" @change="change">
+ <view class="uni-swipe_box">
+ <slot />
+ </view>
+ <view ref="selector-button-hock" class="uni-swipe_button-group selector-query-hock move-hock">
+ <!-- 浣跨敤 touchend 瑙e喅 ios 13 涓嶈Е鍙戞寜閽簨浠剁殑闂-->
+ <view v-for="(item,index) in options" :data-button="btn" :key="index" :style="{
+ backgroundColor: item.style && item.style.backgroundColor ? item.style.backgroundColor : '#C7C6CD',
+ fontSize: item.style && item.style.fontSize ? item.style.fontSize : '16px'
+ }" class="uni-swipe_button button-hock" @touchstart="appTouchStart" @touchend="appTouchEnd($event,index,item)"><text class="uni-swipe_button-text" :style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',}">{{ item.text }}</text></view>
+ </view>
+ </view>
+ </view>
+ <!-- #endif -->
+
+ <!-- app nvue绔� 浣跨敤 bindingx -->
+ <!-- #ifdef APP-NVUE -->
+ <view ref="selector-box-hock" class="uni-swipe_content" @horizontalpan="touchstart" @touchend="touchend">
+ <view ref="selector-button-hock" class="uni-swipe_button-group selector-query-hock move-hock" :style="{width:right+'px'}">
+ <view ref="button-hock" v-for="(item,index) in options" :key="index" :style="{
+ backgroundColor: item.style && item.style.backgroundColor ? item.style.backgroundColor : '#C7C6CD',left: right+'px'}" class="uni-swipe_button " @click.stop="onClick(index,item)"><text class="uni-swipe_button-text" :style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',fontSize: item.style && item.style.fontSize ? item.style.fontSize : '16px'}">{{ item.text }}</text></view>
+ </view>
+ <view ref='selector-content-hock' class="uni-swipe_move-box selector-query-hock">
+ <view class="uni-swipe_box">
+ <slot />
+ </view>
+ </view>
+ </view>
+ <!-- #endif -->
+
+ <!-- 鍦ㄩ潪 app 绔�侀潪寰俊灏忕▼搴忋�佹敮浠樺疂灏忕▼搴忋�乭5绔娇鐢� js -->
+ <!-- #ifndef APP-PLUS || MP-WEIXIN || MP-ALIPAY || H5 -->
+ <view class="uni-swipe_content">
+ <view ref="selector-button-hock" class="uni-swipe_button-group selector-query-hock move-hock">
+ <view v-for="(item,index) in options" :data-button="btn" :key="index" :style="{
+ backgroundColor: item.style && item.style.backgroundColor ? item.style.backgroundColor : '#C7C6CD',
+ fontSize: item.style && item.style.fontSize ? item.style.fontSize : '16px'
+ }" class="uni-swipe_button button-hock" @click.stop="onClick(index,item)"><text class="uni-swipe_button-text" :style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',}">{{ item.text }}</text></view>
+ </view>
+ <view ref='selector-content-hock' class="selector-query-hock" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend" :class="{'ani':uniShow}" :style="{transform:moveLeft}">
+ <view class="uni-swipe_move-box">
+ <view class="uni-swipe_box">
+ <slot />
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- #endif -->
+ <!-- #ifdef MP-ALIPAY -->
+ <view class="uni-swipe-box" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend">
+ <view class="viewWidth-hook">
+ <movable-area v-if="viewWidth !== 0" class="movable-area" :style="{width:(viewWidth-buttonWidth)+'px'}">
+ <movable-view class="movable-view" direction="horizontal" :animation="!transition" :style="{width:viewWidth+'px'}" :class="[transition?'transition':'']" :x="x" :disabled="disabledView" @change="onChange">
+ <view class="movable-view-box">
+ <slot></slot>
+ </view>
+ </movable-view>
+ </movable-area>
+ </view>
+ <view ref="selector-button-hock" class="uni-swipe_button-group viewWidth-hook">
+ <view v-for="(item,index) in options" :data-button="btn" :key="index" :style="{
+ backgroundColor: item.style && item.style.backgroundColor ? item.style.backgroundColor : '#C7C6CD',
+ fontSize: item.style && item.style.fontSize ? item.style.fontSize : '16px'
+ }" class="uni-swipe_button button-hock" @click.stop="onClick(index,item)"><text class="uni-swipe_button-text" :style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',}">{{ item.text }}</text></view>
+ </view>
+ </view>
+ <!-- #endif -->
+ </view>
+</template>
+<script src="./index.wxs" module="swipe" lang="wxs"></script>
+<script>
+ // #ifdef APP-VUE|| MP-WEIXIN || H5
+ import mpwxs from './mpwxs'
+ // #endif
+
+ // #ifdef APP-NVUE
+ import bindingx from './bindingx.js'
+ // #endif
+
+ // #ifndef APP-PLUS|| MP-WEIXIN || MP-ALIPAY || H5
+ import mixins from './mpother'
+ // #endif
+
+ // #ifdef MP-ALIPAY
+ import mpalipay from './mpalipay'
+ // #endif
+
+ /**
+ * SwipeActionItem 婊戝姩鎿嶄綔瀛愮粍浠�
+ * @description 閫氳繃婊戝姩瑙﹀彂閫夐」鐨勫鍣�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=181
+ * @property {Boolean} show = [true|false] 寮�鍚叧闂粍浠讹紝auto-close = false 鏃剁敓鏁�
+ * @property {Boolean} disabled = [true|false] 鏄惁绂佹婊戝姩
+ * @property {Boolean} autoClose = [true|false] 鍏朵粬缁勪欢寮�鍚殑鏃跺�欙紝褰撳墠缁勪欢鏄惁鑷姩鍏抽棴
+ * @property {Array} options 缁勪欢閫夐」鍐呭鍙婃牱寮�
+ * @event {Function} click 鐐瑰嚮閫夐」鎸夐挳鏃惰Е鍙戜簨浠讹紝e = {content,index} 锛宑ontent锛堢偣鍑诲唴瀹癸級銆乮ndex锛堜笅鏍�)
+ * @event {Function} change 缁勪欢鎵撳紑鎴栧叧闂椂瑙﹀彂锛宼rue锛氬紑鍚姸鎬侊紱false锛氬叧闂姸鎬�
+ */
+
+ export default {
+ // #ifdef APP-VUE|| MP-WEIXIN||H5
+ mixins: [mpwxs],
+ // #endif
+
+ // #ifdef APP-NVUE
+ mixins: [bindingx],
+ // #endif
+
+ // #ifndef APP-PLUS|| MP-WEIXIN || MP-ALIPAY || H5
+ mixins: [mixins],
+ // #endif
+
+ // #ifdef MP-ALIPAY
+ mixins: [mpalipay],
+ // #endif
+
+ props: {
+ /**
+ * 鎸夐挳鍐呭
+ */
+ options: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ /**
+ * 绂佺敤
+ */
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ /**
+ * 鍙橀噺鎺у埗寮�鍏�
+ */
+ show: {
+ type: Boolean,
+ default: false
+ },
+ /**
+ * 鏄惁鑷姩鍏抽棴
+ */
+ autoClose: {
+ type: Boolean,
+ default: true
+ }
+ },
+ inject: ['swipeaction']
+
+
+ }
+</script>
+<style scoped>
+ .uni-swipe {
+ overflow: hidden;
+ }
+
+ .uni-swipe-box {
+ position: relative;
+ width: 100%;
+ }
+
+ .uni-swipe_content {
+ flex: 1;
+ position: relative;
+ }
+
+ .uni-swipe_move-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ position: relative;
+ flex-direction: row;
+ }
+
+ .uni-swipe_box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ flex-shrink: 0;
+ /* #endif */
+ /* #ifdef APP-NVUE */
+ flex: 1;
+ /* #endif */
+ font-size: 14px;
+ background-color: #fff;
+ }
+
+ .uni-swipe_button-group {
+ /* #ifndef APP-VUE|| MP-WEIXIN||H5 */
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 0;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex-shrink: 0;
+ /* #endif */
+ flex-direction: row;
+ }
+
+ .uni-swipe_button {
+ /* #ifdef APP-NVUE */
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 0 20px;
+ }
+
+ .uni-swipe_button-text {
+ /* #ifndef APP-NVUE */
+ flex-shrink: 0;
+ /* #endif */
+ font-size: 14px;
+ }
+
+ .ani {
+ transition-property: transform;
+ transition-duration: 0.3s;
+ transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
+ }
+
+ /* #ifdef MP-ALIPAY */
+ .movable-area {
+ width: 300px;
+ height: 100%;
+ height: 45px;
+ }
+
+ .movable-view {
+ position: relative;
+ width: 160%;
+ height: 45px;
+ z-index: 2;
+ }
+
+ .transition {
+ transition: all 0.3s;
+ }
+
+ .movable-view-box {
+ width: 100%;
+ height: 100%;
+ background-color: #fff;
+ }
+
+ /* #endif */
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action/uni-swipe-action.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action/uni-swipe-action.vue"
new file mode 100644
index 0000000..a2f09cb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swipe-action/uni-swipe-action.vue"
@@ -0,0 +1,58 @@
+<template>
+ <view>
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ /**
+ * SwipeAction 婊戝姩鎿嶄綔
+ * @description 閫氳繃婊戝姩瑙﹀彂閫夐」鐨勫鍣�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=181
+ */
+ export default {
+ data() {
+ return {};
+ },
+ provide() {
+ return {
+ swipeaction: this
+ }
+ },
+ created() {
+ this.children = []
+ },
+ methods: {
+ closeOther(vm) {
+ let children = this.children
+ children.forEach((item, index) => {
+ if (vm === item) return
+ // 鏀粯瀹濇墽琛屼互涓嬫搷浣�
+ // #ifdef MP-ALIPAY
+ if (item.isopen) {
+ item.close()
+ }
+ // #endif
+
+ // app vue 绔�乭5 銆佸井淇°�佹敮浠樺疂 鎵ц浠ヤ笅鎿嶄綔
+ // #ifdef APP-VUE || H5 || MP-WEIXIN
+ let position = item.position[0]
+ let show = position.show
+ if (show) {
+ position.show = false
+ }
+ // #endif
+
+ // nvue 鎵ц浠ヤ笅鎿嶄綔
+ // #ifdef APP-NVUE || MP-BAIDU || MP-QQ || MP-TOUTIAO
+ item.close()
+ // #endif
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swiper-dot/uni-swiper-dot.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swiper-dot/uni-swiper-dot.vue"
new file mode 100644
index 0000000..60f27e3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-swiper-dot/uni-swiper-dot.vue"
@@ -0,0 +1,198 @@
+<template>
+ <view class="uni-swiper__warp">
+ <slot />
+ <view v-if="mode === 'default'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
+ <view v-for="(item,index) in info" :style="{
+ 'width': (index === current? dots.width*2:dots.width ) + 'px','height':dots.width/3 +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border-radius':'0px'}" :key="index" class="uni-swiper__dots-item uni-swiper__dots-bar" />
+ </view>
+ <view v-if="mode === 'dot'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='dot'>
+ <view v-for="(item,index) in info" :style="{
+ 'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index" class="uni-swiper__dots-item" />
+ </view>
+ <view v-if="mode === 'round'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='round'>
+ <view v-for="(item,index) in info" :class="[index === current&&'uni-swiper__dots-long']" :style="{
+ 'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index" class="uni-swiper__dots-item " />
+ </view>
+ <view v-if="mode === 'nav'" key='nav' :style="{'background-color':dotsStyles.backgroundColor,'bottom':'0'}" class="uni-swiper__dots-box uni-swiper__dots-nav">
+ <text :style="{'color':dotsStyles.color}" class="uni-swiper__dots-nav-item">{{ (current+1)+"/"+info.length +' ' +info[current][field] }}</text>
+ </view>
+ <view v-if="mode === 'indexes'" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
+ <view v-for="(item,index) in info" :style="{
+ 'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text">{{ index+1 }}</text></view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * SwiperDod 杞挱鍥炬寚绀虹偣
+ * @description 鑷畾涔夎疆鎾浘鎸囩ず鐐�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=284
+ * @property {Number} current 褰撳墠鎸囩ず鐐圭储寮曪紝蹇呴』鏄�氳繃 `swiper` 鐨� `change` 浜嬩欢鑾峰彇鍒扮殑 `e.detail.current`
+ * @property {String} mode = [default|round|nav|indexes] 鎸囩ず鐐圭殑绫诲瀷
+ * @value defualt 榛樿鎸囩ず鐐�
+ * @value round 鍦嗗舰鎸囩ず鐐�
+ * @value nav 鏉″舰鎸囩ず鐐�
+ * @value indexes 绱㈠紩鎸囩ず鐐�
+ * @property {String} field mode 涓� nav 鏃讹紝鏄剧ず鐨勫唴瀹瑰瓧娈碉紙mode = nav 鏃跺繀濉級
+ * @property {String} info 杞挱鍥剧殑鏁版嵁锛岄�氳繃鏁扮粍闀垮害鍐冲畾鎸囩ず鐐逛釜鏁�
+ * @property {Object} dotsStyles 鎸囩ず鐐规牱寮�
+ * @event {Function} clickItem 缁勪欢瑙﹀彂鐐瑰嚮浜嬩欢鏃惰Е鍙戯紝e={currentIndex}
+ */
+
+ export default {
+ name: 'UniSwiperDot',
+ props: {
+ info: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ current: {
+ type: Number,
+ default: 0
+ },
+ dotsStyles: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 绫诲瀷 锛歞efault(榛樿) indexes long nav
+ mode: {
+ type: String,
+ default: 'default'
+ },
+ // 鍙湪 nav 妯″紡涓嬬敓鏁堬紝鍙橀噺鍚嶇О
+ field: {
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ dots: {
+ width: 8,
+ height: 8,
+ bottom: 10,
+ color: '#fff',
+ backgroundColor: 'rgba(0, 0, 0, .3)',
+ border: '1px rgba(0, 0, 0, .3) solid',
+ selectedBackgroundColor: '#333',
+ selectedBorder: '1px rgba(0, 0, 0, .9) solid'
+ }
+ }
+ },
+ watch: {
+ dotsStyles(newVal) {
+ this.dots = Object.assign(this.dots, this.dotsStyles)
+ },
+ mode(newVal) {
+ if (newVal === 'indexes') {
+ this.dots.width = 20
+ this.dots.height = 20
+ } else {
+ this.dots.width = 8
+ this.dots.height = 8
+ }
+ }
+
+ },
+ created() {
+ if (this.mode === 'indexes') {
+ this.dots.width = 20
+ this.dots.height = 20
+ }
+ this.dots = Object.assign(this.dots, this.dotsStyles)
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-swiper__warp {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: column;
+ position: relative;
+ overflow: hidden;
+ }
+
+ .uni-swiper__dots-box {
+ position: absolute;
+ bottom: 10px;
+ left: 0;
+ right: 0;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-swiper__dots-item {
+ width: 8px;
+ border-radius: 100px;
+ margin-left: 6px;
+ background-color: rgba(0, 0, 0, 0.4);
+ /* transition: width 0.2s linear; 涓嶈鍙栨秷娉ㄩ噴锛屼笉鐒朵細涓嶈兘鍙樿壊
+ */
+ }
+
+ .uni-swiper__dots-item:first-child {
+ margin: 0;
+ }
+
+ .uni-swiper__dots-default {
+ border-radius: 100px;
+ }
+
+ .uni-swiper__dots-long {
+ border-radius: 50px;
+ }
+
+ .uni-swiper__dots-bar {
+ border-radius: 50px;
+ }
+
+ .uni-swiper__dots-nav {
+ bottom: 0px;
+ height: 40px;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex: 1;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ background-color: rgba(0, 0, 0, 0.2);
+ }
+
+ .uni-swiper__dots-nav-item {
+ /* overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap; */
+ font-size: 14px;
+ color: #fff;
+ margin: 0 15px;
+ }
+
+ .uni-swiper__dots-indexes {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ /* flex: 1;
+ */
+ justify-content: center;
+ align-items: center;
+ }
+
+ .uni-swiper__dots-indexes-text {
+ color: #fff;
+ font-size: 12px;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-tag/uni-tag.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-tag/uni-tag.vue"
new file mode 100644
index 0000000..64a3473
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-tag/uni-tag.vue"
@@ -0,0 +1,226 @@
+<template>
+ <view :class="[
+ 'uni-tag--' + type,
+ disabled === true || disabled === 'true' ? 'uni-tag--disabled' : '',
+ inverted === true || inverted === 'true' ? type + '-uni-tag--inverted' : '',
+ circle === true || circle === 'true' ? 'uni-tag--circle' : '',
+ mark === true || mark === 'true' ? 'uni-tag--mark' : '',
+ 'uni-tag--' + size
+ ]" @click="onClick()" class="uni-tag" v-if="text">
+ <text :class="[type === 'default' ? 'uni-tag--default':'uni-tag-text',inverted === true || inverted === 'true' ? 'uni-tag-text--'+type : '',size === 'small' ? 'uni-tag-text--small':'' ]">{{ text }}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * Tag 鏍囩
+ * @description 鐢ㄤ簬灞曠ず1涓垨澶氫釜鏂囧瓧鏍囩锛屽彲鐐瑰嚮鍒囨崲閫変腑銆佷笉閫変腑鐨勭姸鎬�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=35
+ * @property {String} text 鏍囩鍐呭
+ * @property {String} size = [normal|small] 澶у皬灏哄
+ * @value normal 姝e父
+ * @value small 灏忓昂瀵�
+ * @property {String} type = [default|primary|success锝渨arning锝渆rror锝渞oyal] 棰滆壊绫诲瀷
+ * @value default 鐏拌壊
+ * @value primary 钃濊壊
+ * @value success 缁胯壊
+ * @value warning 榛勮壊
+ * @value error 绾㈣壊
+ * @value royal 绱壊
+ * @property {Boolean} disabled = [true|false] 鏄惁涓虹鐢ㄧ姸鎬�
+ * @property {Boolean} inverted = [true|false] 鏄惁鏃犻渶鑳屾櫙棰滆壊锛堢┖蹇冩爣绛撅級
+ * @property {Boolean} circle = [true|false] 鏄惁涓哄渾瑙�
+ * @event {Function} click 鐐瑰嚮 Tag 瑙﹀彂浜嬩欢
+ */
+
+ export default {
+ name: "UniTag",
+ props: {
+ type: {
+ // 鏍囩绫诲瀷default銆乸rimary銆乻uccess銆亀arning銆乪rror銆乺oyal
+ type: String,
+ default: "default"
+ },
+ size: {
+ // 鏍囩澶у皬 normal, small
+ type: String,
+ default: "normal"
+ },
+ // 鏍囩鍐呭
+ text: {
+ type: String,
+ default: ""
+ },
+ disabled: {
+ // 鏄惁涓虹鐢ㄧ姸鎬�
+ type: [Boolean, String],
+ default: false
+ },
+ inverted: {
+ // 鏄惁涓虹┖蹇�
+ type: [Boolean, String],
+ default: false
+ },
+ circle: {
+ // 鏄惁涓哄渾瑙掓牱寮�
+ type: [Boolean, String],
+ default: false
+ },
+ mark: {
+ // 鏄惁涓烘爣璁版牱寮�
+ type: [Boolean, String],
+ default: false
+ }
+ },
+ methods: {
+ onClick() {
+ if (this.disabled === true || this.disabled === "true") {
+ return;
+ }
+ this.$emit("click");
+ }
+ }
+ };
+</script>
+
+<style scoped>
+ .uni-tag {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ padding: 0px 16px;
+ height: 30px;
+ line-height: 30px;
+ justify-content: center;
+ color: #333;
+ border-radius: 3px;
+ background-color: #f8f8f8;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #f8f8f8;
+ }
+
+ .uni-tag--circle {
+ border-radius: 15px;
+ }
+
+ .uni-tag--mark {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 15px;
+ border-bottom-right-radius: 15px;
+ }
+
+ .uni-tag--disabled {
+ opacity: 0.5;
+ }
+
+ .uni-tag--small {
+ height: 20px;
+ padding: 0px 8px;
+ line-height: 20px;
+ font-size: 12px;
+ }
+
+ .uni-tag--default {
+ color: #333;
+ font-size: 14px;
+ }
+
+ .uni-tag-text--small {
+ font-size: 12px !important;
+ }
+
+ .uni-tag-text {
+ color: #fff;
+ font-size: 14px;
+ }
+
+ .uni-tag-text--primary {
+ color: #007aff !important;
+ }
+
+ .uni-tag-text--success {
+ color: #4cd964 !important;
+ }
+
+ .uni-tag-text--warning {
+ color: #f0ad4e !important;
+ }
+
+ .uni-tag-text--error {
+ color: #dd524d !important;
+ }
+
+ .uni-tag--primary {
+ color: #fff;
+ background-color: #007aff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #007aff;
+ }
+
+ .primary-uni-tag--inverted {
+ color: #007aff;
+ background-color: #ffffff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #007aff;
+ }
+
+ .uni-tag--success {
+ color: #fff;
+ background-color: #4cd964;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #4cd964;
+ }
+
+ .success-uni-tag--inverted {
+ color: #4cd964;
+ background-color: #ffffff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #4cd964;
+ }
+
+ .uni-tag--warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #f0ad4e;
+ }
+
+ .warning-uni-tag--inverted {
+ color: #f0ad4e;
+ background-color: #ffffff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #f0ad4e;
+ }
+
+ .uni-tag--error {
+ color: #fff;
+ background-color: #dd524d;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #dd524d;
+ }
+
+ .error-uni-tag--inverted {
+ color: #dd524d;
+ background-color: #ffffff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #dd524d;
+ }
+
+ .uni-tag--inverted {
+ color: #333;
+ background-color: #ffffff;
+ border-width: 1rpx;
+ border-style: solid;
+ border-color: #f8f8f8;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-title/uni-title.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-title/uni-title.vue"
new file mode 100644
index 0000000..eba2aa5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-title/uni-title.vue"
@@ -0,0 +1,170 @@
+<template>
+ <view class="uni-title__box" :style="{'align-items':textAlign}">
+ <text class="uni-title__base" :class="['uni-'+type]" :style="{'color':color}">{{title}}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * Title 绔犺妭鏍囬
+ * @description 绔犺妭鏍囬锛岄�氬父鐢ㄤ簬璁板綍椤甸潰鏍囬锛屼娇鐢ㄥ綋鍓嶇粍浠讹紝uni-app 濡傛灉寮�鍚粺璁★紝灏嗕細鑷姩缁熻椤甸潰鏍囬
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=1066
+ * @property {String} type = [h1|h2|h3|h4|h5] 鏍囬绫诲瀷
+ * @value h1 涓�绾ф爣棰�
+ * @value h2 浜岀骇鏍囬
+ * @value h3 涓夌骇鏍囬
+ * @value h4 鍥涚骇鏍囬
+ * @value h5 浜旂骇鏍囬
+ * @property {String} title 绔犺妭鏍囬鍐呭
+ * @property {String} align = [left|center|right] 瀵归綈鏂瑰紡
+ * @value left 鍋氬榻�
+ * @value center 灞呬腑瀵归綈
+ * @value right 鍙冲榻�
+ * @property {String} color 瀛椾綋棰滆壊
+ * @property {Boolean} stat = [true|false] 鏄惁寮�鍚粺璁″姛鑳藉憿锛屽涓嶅~鍐檛ype鍊硷紝榛樿涓哄紑鍚紝濉啓 type 灞炴�э紝榛樿涓哄叧闂�
+ */
+ export default {
+ props: {
+ type: {
+ type: String,
+ default: ''
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ align: {
+ type: String,
+ default: 'left'
+ },
+ color: {
+ type: String,
+ default: '#333333'
+ },
+ stat: {
+ type: [Boolean, String],
+ default: ''
+ }
+ },
+ data() {
+ return {
+
+ };
+ },
+ computed: {
+ textAlign() {
+ let align = 'center';
+ switch (this.align) {
+ case 'left':
+ align = 'flex-start'
+ break;
+ case 'center':
+ align = 'center'
+ break;
+ case 'right':
+ align = 'flex-end'
+ break;
+ }
+ return align
+ }
+ },
+ watch: {
+ title(newVal) {
+ if (this.isOpenStat()) {
+ // 涓婃姤鏁版嵁
+ if (uni.report) {
+ uni.report('title', this.title)
+ }
+ }
+ }
+ },
+ mounted() {
+ if (this.isOpenStat()) {
+ // 涓婃姤鏁版嵁
+ if (uni.report) {
+ uni.report('title', this.title)
+ }
+ }
+ },
+ methods: {
+ isOpenStat() {
+ if (this.stat === '') {
+ this.isStat = false
+ }
+ let stat_type = (typeof(this.stat) === 'boolean' && this.stat) || (typeof(this.stat) === 'string' && this.stat !==
+ '')
+ if (this.type === "") {
+ this.isStat = true
+ if (this.stat.toString() === 'false') {
+ this.isStat = false
+ }
+ }
+
+ if (this.type !== '') {
+ this.isStat = true
+ if (stat_type) {
+ this.isStat = true
+ } else {
+ this.isStat = false
+ }
+ }
+ return this.isStat
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ /* .uni-title {
+
+ } */
+ .uni-title__box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+ padding: 8px 0;
+ flex: 1;
+ }
+
+ .uni-title__base {
+ font-size: 15px;
+ color: #333;
+ font-weight: 500;
+ }
+
+ .uni-h1 {
+ font-size: 20px;
+ color: #333;
+ font-weight: bold;
+ }
+
+ .uni-h2 {
+ font-size: 18px;
+ color: #333;
+ font-weight: bold;
+ }
+
+ .uni-h3 {
+ font-size: 16px;
+ color: #333;
+ font-weight: bold;
+ /* font-weight: 400; */
+ }
+
+ .uni-h4 {
+ font-size: 14px;
+ color: #333;
+ font-weight: bold;
+ /* font-weight: 300; */
+ }
+
+ .uni-h5 {
+ font-size: 12px;
+ color: #333;
+ font-weight: bold;
+ /* font-weight: 200; */
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-transition/uni-transition.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-transition/uni-transition.vue"
new file mode 100644
index 0000000..ad1cb55
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/uni-transition/uni-transition.vue"
@@ -0,0 +1,279 @@
+<template>
+ <view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject" @click="change">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ // #ifdef APP-NVUE
+ const animation = uni.requireNativePlugin('animation');
+ // #endif
+ /**
+ * Transition 杩囨浮鍔ㄧ敾
+ * @description 绠�鍗曡繃娓″姩鐢荤粍浠�
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=985
+ * @property {Boolean} show = [false|true] 鎺у埗缁勪欢鏄剧ず鎴栭殣钘�
+ * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 杩囨浮鍔ㄧ敾绫诲瀷
+ * @value fade 娓愰殣娓愬嚭杩囨浮
+ * @value slide-top 鐢变笂鑷充笅杩囨浮
+ * @value slide-right 鐢卞彸鑷冲乏杩囨浮
+ * @value slide-bottom 鐢变笅鑷充笂杩囨浮
+ * @value slide-left 鐢卞乏鑷冲彸杩囨浮
+ * @value zoom-in 鐢卞皬鍒板ぇ杩囨浮
+ * @value zoom-out 鐢卞ぇ鍒板皬杩囨浮
+ * @property {Number} duration 杩囨浮鍔ㄧ敾鎸佺画鏃堕棿
+ * @property {Object} styles 缁勪欢鏍峰紡锛屽悓 css 鏍峰紡锛屾敞鎰忓甫鈥�-鈥樿繛鎺ョ鐨勫睘鎬ч渶瑕佷娇鐢ㄥ皬椹煎嘲鍐欐硶濡傦細`backgroundColor:red`
+ */
+ export default {
+ name: 'uniTransition',
+ props: {
+ show: {
+ type: Boolean,
+ default: false
+ },
+ modeClass: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ duration: {
+ type: Number,
+ default: 300
+ },
+ styles: {
+ type: Object,
+ default () {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ isShow: false,
+ transform: '',
+ ani: {
+ in: '',
+ active: ''
+ }
+ };
+ },
+ watch: {
+ show: {
+ handler(newVal) {
+ if (newVal) {
+ this.open()
+ } else {
+ this.close()
+ }
+ },
+ immediate: true
+ }
+ },
+ computed: {
+ stylesObject() {
+ let styles = {
+ ...this.styles,
+ 'transition-duration': this.duration / 1000 + 's'
+ }
+ let transfrom = ''
+ for (let i in styles) {
+ let line = this.toLine(i)
+ transfrom += line + ':' + styles[i] + ';'
+ }
+ return transfrom
+ }
+ },
+ created() {
+ // this.timer = null
+ // this.nextTick = (time = 50) => new Promise(resolve => {
+ // clearTimeout(this.timer)
+ // this.timer = setTimeout(resolve, time)
+ // return this.timer
+ // });
+ },
+ methods: {
+ change() {
+ this.$emit('click', {
+ detail: this.isShow
+ })
+ },
+ open() {
+ clearTimeout(this.timer)
+ this.isShow = true
+ this.transform = ''
+ this.ani.in = ''
+ for (let i in this.getTranfrom(false)) {
+ if (i === 'opacity') {
+ this.ani.in = 'fade-in'
+ } else {
+ this.transform += `${this.getTranfrom(false)[i]} `
+ }
+ }
+ this.$nextTick(() => {
+ setTimeout(() => {
+ this._animation(true)
+ }, 50)
+ })
+
+ },
+ close(type) {
+ clearTimeout(this.timer)
+ this._animation(false)
+ },
+ _animation(type) {
+ let styles = this.getTranfrom(type)
+ // #ifdef APP-NVUE
+ if (!this.$refs['ani']) return
+ animation.transition(this.$refs['ani'].ref, {
+ styles,
+ duration: this.duration, //ms
+ timingFunction: 'ease',
+ needLayout: false,
+ delay: 0 //ms
+ }, () => {
+ if (!type) {
+ this.isShow = false
+ }
+ this.$emit('change', {
+ detail: this.isShow
+ })
+ })
+ // #endif
+ // #ifndef APP-NVUE
+ this.transform = ''
+ for (let i in styles) {
+ if (i === 'opacity') {
+ this.ani.in = `fade-${type?'out':'in'}`
+ } else {
+ this.transform += `${styles[i]} `
+ }
+ }
+ this.timer = setTimeout(() => {
+ if (!type) {
+ this.isShow = false
+ }
+ this.$emit('change', {
+ detail: this.isShow
+ })
+
+ }, this.duration)
+ // #endif
+
+ },
+ getTranfrom(type) {
+ let styles = {
+ transform: ''
+ }
+ this.modeClass.forEach((mode) => {
+ switch (mode) {
+ case 'fade':
+ styles.opacity = type ? 1 : 0
+ break;
+ case 'slide-top':
+ styles.transform += `translateY(${type?'0':'-100%'}) `
+ break;
+ case 'slide-right':
+ styles.transform += `translateX(${type?'0':'100%'}) `
+ break;
+ case 'slide-bottom':
+ styles.transform += `translateY(${type?'0':'100%'}) `
+ break;
+ case 'slide-left':
+ styles.transform += `translateX(${type?'0':'-100%'}) `
+ break;
+ case 'zoom-in':
+ styles.transform += `scale(${type?1:0.8}) `
+ break;
+ case 'zoom-out':
+ styles.transform += `scale(${type?1:1.2}) `
+ break;
+ }
+ })
+ return styles
+ },
+ _modeClassArr(type) {
+ let mode = this.modeClass
+ if (typeof(mode) !== "string") {
+ let modestr = ''
+ mode.forEach((item) => {
+ modestr += (item + '-' + type + ',')
+ })
+ return modestr.substr(0, modestr.length - 1)
+ } else {
+ return mode + '-' + type
+ }
+ },
+ // getEl(el) {
+ // console.log(el || el.ref || null);
+ // return el || el.ref || null
+ // },
+ toLine(name) {
+ return name.replace(/([A-Z])/g, "-$1").toLowerCase();
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .uni-transition {
+ transition-timing-function: ease;
+ transition-duration: 0.3s;
+ transition-property: transform, opacity;
+ }
+
+ .fade-in {
+ opacity: 0;
+ }
+
+ .fade-active {
+ opacity: 1;
+ }
+
+ .slide-top-in {
+ /* transition-property: transform, opacity; */
+ transform: translateY(-100%);
+ }
+
+ .slide-top-active {
+ transform: translateY(0);
+ /* opacity: 1; */
+ }
+
+ .slide-right-in {
+ transform: translateX(100%);
+ }
+
+ .slide-right-active {
+ transform: translateX(0);
+ }
+
+ .slide-bottom-in {
+ transform: translateY(100%);
+ }
+
+ .slide-bottom-active {
+ transform: translateY(0);
+ }
+
+ .slide-left-in {
+ transform: translateX(-100%);
+ }
+
+ .slide-left-active {
+ transform: translateX(0);
+ opacity: 1;
+ }
+
+ .zoom-in-in {
+ transform: scale(0.8);
+ }
+
+ .zoom-out-active {
+ transform: scale(1);
+ }
+
+ .zoom-out-in {
+ transform: scale(1.2);
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-button.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-button.vue"
new file mode 100644
index 0000000..4d8e272
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-button.vue"
@@ -0,0 +1,124 @@
+<template>
+ <view>
+ <!-- 鎸夐挳 -->
+ <button
+ :class="['buttonBorder',!_rotate?'dlbutton':'dlbutton_loading']"
+ :style="{'background':bgColor, 'color': fontColor}"
+
+ @click="$emit('click', $event)"
+ @contact="$emit('contact', $event)"
+ @error="$emit('error', $event)"
+ @getphonenumber="$emit('getphonenumber', $event)"
+ @getuserinfo="$emit('getuserinfo', $event)"
+ @launchapp="$emit('launchapp', $event)"
+ @longtap="$emit('longtap', $event)"
+ @opensetting="$emit('opensetting', $event)"
+ @touchcancel="$emit('touchcancel', $event)"
+ @touchend="$emit('touchend', $event)"
+ @touchmove="$emit('touchmove', $event)"
+ @touchstart="$emit('touchstart', $event)"
+ >
+ <view :class="_rotate?'rotate_loop':''">
+ <text v-if="_rotate" class="cuIcon cuIcon-loading1 "></text>
+ <view v-if="!_rotate"><slot name="text">{{ text }}</slot></view>
+ </view>
+ </button>
+ </view>
+</template>
+
+<script>
+ export default{
+ props:{
+ text: String, //鏄剧ず鏂囨湰
+ rotate:{
+ //鏄惁鍚姩鍔犺浇
+ type: [Boolean,String],
+ default: false,
+ },
+ bgColor:{
+ //鎸夐挳鑳屾櫙棰滆壊
+ type: String,
+ default: "linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6))",
+ },
+ fontColor:{
+ //鎸夐挳瀛椾綋棰滆壊
+ type: String,
+ default: "#FFFFFF",
+ },
+ },
+ computed:{
+ _rotate() {
+ //澶勭悊鍊�
+ return String(this.rotate) !== 'false'
+ },
+ }
+ }
+</script>
+
+<style>
+ @import url("./css/icon.css");
+
+ .dlbutton {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: #FFFFFF;
+ font-size: 30rpx;
+ white-space:nowrap;
+ overflow: hidden;
+ width:601rpx;
+ height:100rpx;
+ background:linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6));
+ box-shadow:0rpx 0rpx 13rpx 0rpx rgba(164,217,228,0.4);
+ border-radius:2.5rem;
+ margin-top: 0rpx;
+ }
+ .dlbutton_loading {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: #FFFFFF;
+ font-size: 30rpx;
+ width:100rpx;
+ height:100rpx;
+ background:linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6));
+ box-shadow:0rpx 0rpx 13rpx 0rpx rgba(164,217,228,0.4);
+ border-radius:2.5rem;
+ margin-top: 0rpx;
+ }
+ .buttonBorder{
+ border: none ;
+ border-radius: 2.5rem ;
+ -webkit-box-shadow: 0 0 60rpx 0 rgba(0,0,0,.2) ;
+ box-shadow: 0 0 60rpx 0 rgba(0,0,0,.2) ;
+ -webkit-transition: all 0.4s cubic-bezier(.57,.19,.51,.95);
+ -moz-transition: all 0.4s cubic-bezier(.57,.19,.51,.95);
+ -ms-transition: all 0.4s cubic-bezier(.57,.19,.51,.95);
+ -o-transition: all 0.4s cubic-bezier(.57,.19,.51,.95);
+ transition: all 0.4s cubic-bezier(.57,.19,.51,.95);
+ }
+
+ /* 鏃嬭浆鍔ㄧ敾 */
+ .rotate_loop{
+ -webkit-transition-property: -webkit-transform;
+ -webkit-transition-duration: 1s;
+ -moz-transition-property: -moz-transform;
+ -moz-transition-duration: 1s;
+ -webkit-animation: rotate 1s linear infinite;
+ -moz-animation: rotate 1s linear infinite;
+ -o-animation: rotate 1s linear infinite;
+ animation: rotate 1s linear infinite;
+ }
+ @-webkit-keyframes rotate{from{-webkit-transform: rotate(0deg)}
+ to{-webkit-transform: rotate(360deg)}
+ }
+ @-moz-keyframes rotate{from{-moz-transform: rotate(0deg)}
+ to{-moz-transform: rotate(359deg)}
+ }
+ @-o-keyframes rotate{from{-o-transform: rotate(0deg)}
+ to{-o-transform: rotate(359deg)}
+ }
+ @keyframes rotate{from{transform: rotate(0deg)}
+ to{transform: rotate(359deg)}
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-input.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-input.vue"
new file mode 100644
index 0000000..fa86c8f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/watch-login/watch-input.vue"
@@ -0,0 +1,208 @@
+<template>
+ <view class="main-list oBorder">
+ <!-- 鏂囨湰妗� -->
+ <input
+ class="main-input"
+ :value="value"
+ :type="_type"
+ :maxlength="maxlength"
+ :placeholder="placeholder"
+ :password="type==='password'&&!showPassword"
+
+ @input="$emit('input', $event.target.value)"
+ @blur="$emit('blur', $event)"
+ @focus="$emit('focus', $event)"
+ @longpress="$emit('longpress', $event)"
+ @confirm="$emit('confirm', $event)"
+ @click="$emit('click', $event)"
+ @longtap="$emit('longtap', $event)"
+ @touchcancel="$emit('touchcancel', $event)"
+ @touchend="$emit('touchend', $event)"
+ @touchmove="$emit('touchmove', $event)"
+ @touchstart="$emit('touchstart', $event)"
+ />
+ <!-- 鏄惁鍙瀵嗙爜 -->
+ <image
+ v-if="_isShowPass&&type==='password'&&!_isShowCode"
+ class="img cuIcon"
+ :class="showPassword?'cuIcon-attention':'cuIcon-attentionforbid'"
+ @tap="showPass"
+ ></image>
+ <!-- 鍊掕鏃� -->
+ <view
+ v-if="_isShowCode&&!_isShowPass"
+ :class="['vercode',{'vercode-run': second>0}]"
+ @click="setCode"
+ >{{ getVerCodeSecond }}</view>
+
+ </view>
+</template>
+
+<script>
+ var _this, countDown;
+ export default{
+ data(){
+ return{
+ showPassword: false, //鏄惁鏄剧ず鏄庢枃
+ second: 0, //鍊掕鏃�
+ isRunCode: false, //鏄惁寮�濮嬪�掕鏃�
+ }
+ },
+ props:{
+ type: String, //绫诲瀷
+ value: String, //鍊�
+ placeholder: String, //妗嗗唴鎻愮ず
+ maxlength: {
+ //鏈�澶ч暱搴�
+ type: [Number,String],
+ default: 20,
+ },
+ isShowPass:{
+ //鏄惁鏄剧ず瀵嗙爜鍥炬爣锛堜簩閫変竴锛�
+ type: [Boolean,String],
+ default: false,
+ },
+ isShowCode:{
+ //鏄惁鏄剧ず鑾峰彇楠岃瘉鐮侊紙浜岄�変竴锛�
+ type: [Boolean,String],
+ default: false,
+ },
+ codeText:{
+ type: String,
+ default: "鑾峰彇楠岃瘉鐮�",
+ },
+ setTime:{
+ //鍊掕鏃舵椂闂磋缃�
+ type: [Number,String],
+ default: 60,
+ }
+ },
+ model: {
+ prop: 'value',
+ event: 'input'
+ },
+ mounted() {
+ _this=this
+ //鍑嗗瑙﹀彂
+ this.$on('runCode',(val)=>{
+ this.runCode(val);
+ });
+ clearInterval(countDown);//鍏堟竻鐞嗕竴娆″惊鐜紝閬垮厤缂撳瓨
+ },
+ methods:{
+ showPass(){
+ //鏄惁鏄剧ず瀵嗙爜
+ this.showPassword = !this.showPassword
+ },
+ setCode(){
+ //璁剧疆鑾峰彇楠岃瘉鐮佺殑浜嬩欢
+ if(this.isRunCode){
+ //鍒ゆ柇鏄惁寮�濮嬪�掕鏃讹紝閬垮厤閲嶅鐐瑰嚮
+ return false;
+ }
+ this.$emit('setCode')
+ },
+ runCode(val){
+ //寮�濮嬪�掕鏃�
+ if(String(val)=="0"){
+
+ //鍒ゆ柇鏄惁闇�瑕佺粓姝㈠惊鐜�
+ this.second = 0; //鍒濆鍊掕鏃�
+ clearInterval(countDown);//娓呯悊寰幆
+ this.isRunCode= false; //鍏抽棴寰幆鐘舵��
+ return false;
+ }
+ if(this.isRunCode){
+ //鍒ゆ柇鏄惁寮�濮嬪�掕鏃讹紝閬垮厤閲嶅鐐瑰嚮
+ return false;
+ }
+ this.isRunCode= true
+ this.second = this._setTime //鍊掓暟绉掓暟
+
+ let _this=this;
+ countDown = setInterval(function(){
+ _this.second--
+ if(_this.second==0){
+ _this.isRunCode= false
+ clearInterval(countDown)
+ }
+ },1000)
+ }
+ },
+ computed:{
+ _type(){
+ //澶勭悊鍊�
+ const type = this.type
+ return type == 'password' ? 'text' : type
+ },
+ _isShowPass() {
+ //澶勭悊鍊�
+ return String(this.isShowPass) !== 'false'
+ },
+ _isShowCode() {
+ //澶勭悊鍊�
+ return String(this.isShowCode) !== 'false'
+ },
+ _setTime() {
+ //澶勭悊鍊�
+ const setTime = Number(this.setTime)
+ return setTime>0 ? setTime : 60
+ },
+ getVerCodeSecond(){
+ //楠岃瘉鐮佸�掕鏃惰绠�
+ if(this.second<=0){
+ return this.codeText;
+ }else{
+ if(this.second<10){
+ return '0'+this.second;
+ }else{
+ return this.second;
+ }
+ }
+
+ }
+ }
+ }
+</script>
+
+<style>
+ @import url("./css/icon.css");
+
+ .main-list{
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ /* height: 36rpx; */ /* Input 楂樺害 */
+ color: #333333;
+ padding: 40rpx 32rpx;
+ margin:32rpx 0;
+ }
+ .img{
+ width: 32rpx;
+ height: 32rpx;
+ font-size: 32rpx;
+ }
+ .main-input{
+ flex: 1;
+ text-align: left;
+ font-size: 28rpx;
+ /* line-height: 100rpx; */
+ padding-right: 10rpx;
+ margin-left: 20rpx;
+ }
+ .vercode {
+ color: rgba(0,0,0,0.7);
+ font-size: 24rpx;
+ /* line-height: 100rpx; */
+ }
+ .vercode-run {
+ color: rgba(0,0,0,0.4) !important;
+ }
+ .oBorder{
+ border: none;
+ border-radius: 2.5rem ;
+ -webkit-box-shadow: 0 0 60rpx 0 rgba(43,86,112,.1) ;
+ box-shadow: 0 0 60rpx 0 rgba(43,86,112,.1) ;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/wyb-popup/wyb-popup.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/wyb-popup/wyb-popup.vue"
new file mode 100644
index 0000000..2ca14fa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/wyb-popup/wyb-popup.vue"
@@ -0,0 +1,420 @@
+<template>
+ <view v-if="isShow">
+ <view
+ @tap.stop.prevent
+ @touchmove.stop.prevent
+ class="wyb-popup-box"
+ :style="{
+ transitionDuration: duration + 'ms',
+ opacity: contentOpacity || (type === 'center' ? 0 : 1),
+ transform: contentTransform || autoTransform,
+ zIndex: zIndex,
+ borderTopRightRadius: type === 'center' || type === 'bottom' || type === 'left' ? radius + 'px' : 0,
+ borderTopLeftRadius: type === 'center' || type === 'bottom' || type === 'right' ? radius + 'px' : 0,
+ borderBottomRightRadius: type === 'center' || type === 'top' || type === 'left' ? radius + 'px' : 0,
+ borderBottomLeftRadius: type === 'center' || type === 'top' || type === 'right' ? radius + 'px' : 0,
+ width: autoWidth,
+ height: autoHeight,
+ minWidth: width + 'rpx',
+ minHeight: height + 'rpx',
+ top: sizeChange && type === 'center' ? winReTop : autoTop,
+ bottom: autoBottom,
+ left: autoLeft,
+ right: autoRight,
+ backgroundColor: bgColor}">
+ <view
+ class="wyb-popup-close"
+ v-if="showCloseIcon"
+ :style="{
+ width: closeIcon ? closeIconSize + 'rpx' : 'auto',
+ height: closeIcon ? closeIconSize + 'rpx' : 'auto',
+ top: closeIconPos === 'top-right' || closeIconPos === 'top-left' ? vertOffset + 'rpx' : 'auto',
+ bottom: closeIconPos === 'bottom-right' || closeIconPos === 'bottom-left' ? vertOffset + 'rpx' : 'auto',
+ left: closeIconPos === 'bottom-left' || closeIconPos === 'top-left' ? horiOffset + 'rpx' : 'auto',
+ right: closeIconPos === 'bottom-right' || closeIconPos === 'top-right' ? horiOffset + 'rpx' : 'auto'}">
+ <image class="wyb-popup-custom-close" v-if="showCloseIcon&&closeIcon" :src="closeIcon" @tap="hide" :style="{
+ width: closeIconSize + 'rpx',
+ height: closeIconSize + 'rpx'}" />
+ <view v-if="showCloseIcon&&!closeIcon" class="iconfont icon-close" @tap="hide" />
+ </view>
+
+ <scroll-view
+ class="wyb-popup-container"
+ :style="{
+ width: autoWidth,
+ height: autoHeight}"
+ :enable-flex="true"
+ :scroll-y="scrollY"
+ :scroll-x="scrollX">
+ <view class="wyb-popup-slot"><slot></slot></view>
+ </scroll-view>
+ </view>
+ <view
+ class="wyb-popup-mask"
+ @tap.stop="close"
+ @touchmove.stop.prevent
+ :style="{
+ opacity: maskOpacity,
+ transitionDuration: duration + 'ms',
+ backgroundColor: 'rgba(0, 0, 0, ' + maskAlpha + ')',
+ zIndex: zIndex - 1}" />
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ w: uni.getSystemInfoSync().screenWidth,
+ h: uni.getSystemInfoSync().screenHeight,
+ isShow: false,
+ winReBottom: '',
+ winReTop: '',
+ sizeChange: false,
+ contentOpacity: null,
+ contentTransform: null,
+ maskOpacity: 0
+ }
+ },
+ computed: {
+ autoCenterTop() {
+ let statusBarHeight = uni.getSystemInfoSync().statusBarHeight
+ let windowHeight = uni.getSystemInfoSync().windowHeight
+ let popupHeight = this.rpxToPx(this.height)
+ let navHeight = 44
+ let result = `${(windowHeight - popupHeight) / 2 - this.negativeTop}px`
+ return result
+ },
+ autoTransform() {
+ let result = ''
+ switch(this.type) {
+ case 'center':
+ if (this.centerAnim === 'zoom-lessen') {
+ result = `scale(${this.zoomLessenMulti})`
+ } else if (this.centerAnim === 'slide-up') {
+ result = `translateY(${100 * this.slideMulti}%)`
+ } else if (this.centerAnim === 'slide-down') {
+ result = `translateY(${-100 * this.slideMulti}%)`
+ } else if (this.centerAnim === 'fade') {
+ result = 'auto'
+ }
+ break
+ case 'bottom':
+ result = 'translateY(100%)'
+ break
+ case 'top':
+ result = 'translateY(-100%)'
+ break
+ case 'left':
+ result = 'translateX(-100%)'
+ break
+ case 'right':
+ result = 'translateX(100%)'
+ break
+ }
+ return result
+ },
+ autoWidth() {
+ if (this.type === 'center') {
+ return `${this.width}rpx`
+ } else {
+ if (this.mode === 'size-fixed') {
+ if (this.type === 'top' || this.type === 'bottom') {
+ return '100%'
+ } else {
+ return `${this.width}rpx`
+ }
+ } else {
+ if (this.type === 'top' || this.type === 'bottom') {
+ return '100%'
+ } else {
+ return 'auto'
+ }
+ }
+ }
+ },
+ autoHeight() {
+ if (this.type === 'center') {
+ return `${this.height}rpx`
+ } else {
+ if (this.mode === 'size-fixed') {
+ if (this.type === 'left' || this.type === 'right') {
+ return '100%'
+ } else {
+ return `${this.height}rpx`
+ }
+ } else {
+ if (this.type === 'left' || this.type === 'right') {
+ return '100%'
+ } else {
+ return 'auto'
+ }
+ }
+ }
+ },
+ autoTop() {
+ if (this.type === 'center') {
+ return this.autoCenterTop
+ } else if (this.type === 'bottom') {
+ return 'auto'
+ } else {
+ return 0
+ }
+ },
+ autoBottom() {
+ if (this.type === 'center' || this.type === 'top') {
+ return 'auto'
+ } else {
+ return 0
+ }
+ },
+ autoLeft() {
+ if (this.type === 'center') {
+ return `${(this.w - this.rpxToPx(this.width)) / 2}px`
+ } else if (this.type === 'right') {
+ return 'auto'
+ } else {
+ return 0
+ }
+ },
+ autoRight() {
+ if (this.type === 'center' || this.type === 'left') {
+ return 'auto'
+ } else {
+ return 0
+ }
+ }
+ },
+ props: {
+ type: {
+ type: String,
+ default: 'bottom'
+ },
+ mode: {
+ type: String,
+ default: 'size-auto'
+ },
+ height: {
+ type: [String, Number],
+ default: 400
+ },
+ width: {
+ type: [String, Number],
+ default: 500
+ },
+ radius: {
+ type: [String, Number],
+ default: 0
+ },
+ zIndex: {
+ type: [String, Number],
+ default: 10076
+ },
+ maskClickClose: {
+ type: Boolean,
+ default: true
+ },
+ maskAlpha: {
+ type: Number,
+ default: 0.5
+ },
+ duration: {
+ type: Number,
+ default: 400
+ },
+ showCloseIcon: {
+ type: Boolean,
+ default: false
+ },
+ scrollY: {
+ type: Boolean,
+ default: false
+ },
+ scrollX: {
+ type: Boolean,
+ default: false
+ },
+ closeIconPos: {
+ type: String,
+ default: 'top-right'
+ },
+ closeIcon: {
+ type: String,
+ default: ''
+ },
+ closeIconSize: {
+ type: [String, Number],
+ default: '20'
+ },
+ vertOffset: {
+ type: [String, Number],
+ default: '22'
+ },
+ horiOffset: {
+ type: [String, Number],
+ default: '22'
+ },
+ centerAnim: {
+ type: String,
+ default: 'zoom-lessen'
+ },
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ zoomLessenMulti: {
+ type: Number,
+ default: 1.15
+ },
+ slideMulti: {
+ type: Number,
+ default: 1
+ },
+ negativeTop: {
+ type: Number,
+ default: 0
+ }
+ },
+ mounted() {
+ // #ifdef H5
+ let winHeight = uni.getSystemInfoSync().windowHeight
+ uni.onWindowResize(res => {
+ this.sizeChange = true
+ if (this.type === 'bottom') {
+ this.winReBottom = winHeight - res.size.windowHeight + 'px'
+ } else if (this.type === 'center') {
+ this.winReTop = ((res.size.windowHeight - this.rpxToPx(this.height)) / 2 - this.negativeTop) + 'px'
+ }
+ })
+ // #endif
+ },
+ methods: {
+ close() {
+ this.maskClickClose && this.hide()
+ },
+ show() {
+ this.isShow = true
+ // #ifndef H5
+ this.$nextTick(() => {
+ this.maskIn()
+ this.contentIn()
+ this.wait(this.duration + 1).then(() => {
+ this.$emit('show', {
+ pageScroll: false,
+ overflow: 'hidden'
+ })
+ })
+ })
+ // #endif
+ // #ifdef H5
+ this.wait(10).then(() => {
+ this.maskIn()
+ this.contentIn()
+ this.wait(this.duration + 1).then(() => {
+ this.$emit('show', {
+ pageScroll: false,
+ overflow: 'hidden'
+ })
+ })
+ })
+ // #endif
+ },
+ hide() {
+ this.contentOut()
+ this.maskOut()
+ this.wait(this.duration + 1).then(() => {
+ this.isShow = false
+ this.$emit('hide', {
+ pageScroll: true,
+ overflow: 'scroll'
+ })
+ })
+ },
+ contentIn() {
+ switch (this.type) {
+ case 'center':
+ if (this.centerAnim === 'zoom-lessen') {
+ this.contentOpacity = 1
+ this.contentTransform = 'scale(1)'
+ } else if (this.centerAnim === 'slide-up' || this.centerAnim === 'slide-down') {
+ this.contentOpacity = 1
+ this.contentTransform = 'translateY(0)'
+ } else if (this.centerAnim === 'fade') {
+ this.contentOpacity = 1
+ }
+ break
+ case 'bottom':
+ case 'top':
+ this.contentTransform = 'translateY(0)'
+ break
+ case 'left':
+ case 'right':
+ this.contentTransform = 'translateX(0)'
+ break
+ }
+ },
+ contentOut() {
+ this.contentOpacity = null
+ this.contentTransform = null
+ },
+ maskIn() {
+ this.maskOpacity = 1
+ },
+ maskOut() {
+ this.maskOpacity = 0
+ },
+ rpxToPx(rpx) {
+ return rpx / 750 * this.w
+ },
+ wait(time) {
+ return new Promise(resolve => {
+ setTimeout(() => {
+ resolve()
+ }, time)
+ })
+ }
+ }
+ }
+</script>
+
+<style>
+ @import "./iconfont.css";
+ .wyb-popup-box{
+ position: fixed;
+ transition-timing-function: ease-out;
+ transition-property: opacity, transform;
+ }
+
+ .wyb-popup-container {
+ position: relative;
+ box-sizing: border-box;
+ }
+
+ .wyb-popup-slot {
+ width: 100%;
+ height: 100%;
+ }
+
+ .wyb-popup-mask {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ transition-timing-function: ease;
+ transition-property: opacity, transform;
+ }
+
+ .wyb-popup-close {
+ position: absolute;
+ fontSize: 40rpx;
+ color: #808080;
+ z-index: 20000;
+ }
+
+ .wyb-popup-custom-close {
+ left: 0;
+ top: 0;
+ position: absolute;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/xfl-select/xfl-select.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/xfl-select/xfl-select.vue"
new file mode 100644
index 0000000..6172da1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/components/xfl-select/xfl-select.vue"
@@ -0,0 +1,967 @@
+<template>
+ <div class="show-box" :class="{disabled: disabled, active: isShowList}" :style="style_Container">
+ <!-- 杈撳叆妗嗭紝浠呭湪鍙緭鍏ユā寮忎笅浣跨敤 -->
+ <input v-if="showInput" class="input" placeholder-style="color: #bbb;" type="text" v-model="selectText" :placeholder="placeholder"
+ @focus="onFocus" @blur="onBlur" @input="onInput" @confirm="$emit('confirm', $event)">
+ <!-- 鏄剧ず妗� -->
+ <div v-else class="input" :class="{placeholder: selectText === placeholder}" @click="onUpperClick">{{selectText}}</div>
+
+ <!-- 鍙充晶鐨勫皬涓夎鍥炬爣 -->
+ <span @click="onUpperClick" class="iconfont iconarrowBottom-fill right-arrow" :class="{isRotate: isRotate}"></span>
+
+ <!-- 娓呴櫎鎸夐挳鍥炬爣 -->
+ <span v-if="clearable && selectText && selectText != placeholder" class="right-arrow" @click="onClear">
+ <span class="iconfont iconshanchu1 clear"></span>
+ </span>
+
+
+ <!-- 鍒楄〃妗� -->
+ <div class="list-container" @click.stop="onListClick" :style="'top:' + listTop__ + 'px;'" v-show="isShowList">
+ <span class="popper__arrow"></span> <!-- 鍒楄〃妗嗗乏涓婅鐨勭┖蹇冨皬涓夎 -->
+ <scroll-view class="list" style="background-color: #fff;" :style="'max-height: ' + listBoxHeight__ +'em;'" scroll-y=true
+ scroll-x=true>
+ <div class="item" @click="onClickItem(index, item.value)" v-for="(item, index) in innerList" :key="index" :class="{active: activeIndex == index, disabled: item.disabled}">
+ <div>{{item.value}}</div>
+ </div>
+ <div v-show="innerList.length==0" class="data-state item">鏃犳暟鎹�</div>
+ <!-- <slot></slot> -->
+ </scroll-view>
+ </div>
+
+ </div>
+</template>
+
+<script>
+ /**
+ * v1.1.1
+ * 鏈�鍚庝慨鏀�: 2019.7.29
+ * 鍒涘缓: 2019.6.27
+ */
+ import Vue from 'vue';
+ Vue.__xfl_select = Vue.__xfl_select || new Vue(); // 杩欎釜瀹炰緥涓撻棬鐢ㄦ潵鍋歺fl-select澶氫釜瀹炰緥涔嬮棿鐨勯�氫俊涓棿绔�
+ export default {
+ name: 'xfl-select',
+ props: {
+ list: { // 鍘熷鏁版嵁
+ type: Array,
+ default: function() {
+ return [];
+ }
+ },
+ focusShowList: null, // 褰搃nput鑾峰彇鐒︾偣鏃讹紝鏄惁鑷姩寮瑰嚭鍒楄〃妗�
+ initValue: null, // 閫夋嫨妗嗙殑鍒濆鍊�
+ isCanInput: { // 閫夋嫨妗嗘槸鍚﹀彲浠ヨ緭鍏ュ��
+ type: Boolean,
+ default: false,
+ },
+ selectHideType: { // 鏈�夋嫨妗嗕笌鍏跺畠閫夋嫨妗嗕箣闂寸殑鍏崇郴
+ type: String,
+ default: 'hideAll', // 'independent' - 鏄嫭绔嬬殑锛屼笌鍏跺畠閫夋嫨妗嗕簰涓嶅奖鍝� 'hideAll' - 浠讳綍涓�涓�夋嫨妗嗗睍寮�鏃讹紝闅愯棌鎵�鏈夊叾瀹冮�夋嫨妗�
+ // 'hideOthers'- 褰撴湰閫夋嫨妗嗗睍寮�鏃讹紝闅愯棌鍏跺畠鐨勯�夋嫨妗嗐�� 褰撳叾瀹冮�夋嫨妗嗗睍寮�鏃讹紝涓嶉殣钘忔湰閫夋嫨妗嗐��
+ // 'hideSelf' - 褰撴湰閫夋嫨妗嗗睍寮�鏃讹紝涓嶉殣钘忓叾瀹冪殑閫夋嫨妗嗐�傚綋鍏跺畠閫夋嫨妗嗗睍寮�鏃讹紝闅愯棌鏈�夋嫨妗嗐��
+ },
+ placeholder: { // 閫夋嫨妗嗙殑placeholder
+ type: String,
+ default: '璇烽�夋嫨',
+ },
+ style_Container: { // 鏈�澶栧眰鐨勬牱寮�
+ type: String,
+ default: ''
+ },
+ disabled: { // 鏄惁绂佺敤鏁翠釜閫夋嫨妗�
+ type: Boolean,
+ default: false,
+ },
+ showItemNum: { // 鏄剧ず鍒楄〃妗嗙殑绐楀彛楂樺害锛屾暟瀛楄〃绀鸿兘鏄剧ず鍑犱釜鍒楄〃椤�
+ type: Number,
+ default: 5
+ },
+ listShow: { // 鏄惁鏄剧ず鍒楄〃妗�
+ type: Boolean,
+ default: false
+ },
+ clearable: { // 鏄惁鏄剧ず鍙充晶鐨勬竻闄ゆ寜閽�
+ type: Boolean,
+ default: true
+ },
+ },
+ data() {
+ return {
+ isShowList: false, // 鏄惁鏄剧ず鍒楄〃妗�
+ selectText: '', // 宸茬粡閫夋嫨鐨勫唴瀹�
+ activeIndex: -1, // 鍒楄〃涓綋鍓嶆椿鍔ㄧ殑绱㈠紩鍙�
+ isRotate: false, // 鍙充晶鐨勫皬涓夎鏄惁鏃嬭浆
+ listTop__: 50, // 鍒楄〃妗嗙殑top浣嶇疆锛屽湪鍒濆鏃讹紝鏍规嵁input鑺傜偣鐨勯珮搴︽潵璋冩暣
+ };
+ },
+ // 杩涜鐩戝惉鐨勮瘽锛屽湪缁勪欢澶栨敼鍙樿繖涓�硷紝缁勪欢鍐呭氨鑳藉搷搴斿彉鍖�
+ watch: { // 鐩戝惉鍙樺寲 锛屾敞鎰忥紝鍒濆鐨勫�兼槸涓嶄細琚洃鍚埌鐨勶紝鍙湁鍦╩ounted鍥炶皟涓墜鍔ㄨ祴鍊�
+ listShow(newVal, oldVal) {
+ this.onDataChange_listShow(newVal, oldVal);
+ },
+ },
+ computed: {
+ focusShowList__() { // 鏄惁鍦ㄨ緭鍏ユ鑾峰緱鐒︾偣鏃讹紝鑷姩寮瑰嚭鍒楄〃妗�
+ if (this.focusShowList == null) {
+ // 搴旇鏄垽鏂湪 pc绔繕鏄Щ鍔ㄧ
+ // #ifdef H5
+ return isPC();
+ // #endif
+ // #ifndef H5
+ return false;
+ // #endif
+ } else {
+ return this.focusShowList;
+ }
+ },
+ listBoxHeight__() { // 鍒楄〃妗嗙殑鎬婚珮搴�
+ const itemHeight = 2; // 姣忎釜鍒楄〃椤圭殑楂樺害(em), 榛樿涓�2涓枃瀛楅珮
+ return this.showItemNum * itemHeight;
+ },
+ showInput() { // 鏄惁鏄剧ず杈撳叆妗�
+ return this.isCanInput && !this.disabled;
+ },
+ innerList() { // 杞崲鍒楄〃鐨勬暟鎹牸寮�
+ const arr = [],
+ orginArr = this.list;
+ orginArr.forEach((val, index) => {
+ let value = typeof val === 'object' && 'value' in val ? val.value : val;
+ let isDisabled = typeof val === 'object' && val.disabled == true;
+ arr.push({
+ isActive: false,
+ value: value,
+ disabled: isDisabled,
+ });
+ });
+ return arr;
+ },
+ },
+ mounted() {
+ Vue.__xfl_select.$on('open', this.onOtherXflSelectOpen);
+ this.switchMgr = new Switch(this.onListShow, this.onListHide); // 鍒涘缓寮�鍏冲璞�
+ this.onDataChange_listShow(this.listShow, null); // 鐢变簬 watch 涓嶅埌鍒濆鍊硷紝鎵�浠ラ渶瑕佸湪杩欓噷鎵嬪姩璋冪敤涓�娆�
+ this.init(); //杩涜鍒濆鍖�
+ },
+ beforeDestroy() {
+ Vue.__xfl_select.$off('open', this.onOtherXflSelectOpen);
+ },
+ methods: {
+ onOtherXflSelectOpen(component) { //褰撴湰缁勪欢鐨勫叾瀹冨疄渚嬪睍寮�鏃剁殑鍥炶皟
+ if (this.selectHideType === 'independent' || this.selectHideType === 'hideOthers') {
+ return;
+ }
+ component !== this && this.switchMgr.close(100);
+ },
+ /************************** 鍒濆鍖栧嚱鏁� ****************************/
+ //杩涜鍒濆鍖�
+ init() {
+ this.clearInput(); // 娓呯┖杈撳叆妗嗕腑鐨勬樉绀猴紝涓昏鏄缃畃laceholder
+ this.setInput(this.initValue); // 鍦ㄨ緭鍏ユ涓樉绀哄垵濮嬪��
+ this.changeActiveIndex(this.initValue); // 鏍规嵁鍒濆鍊艰缃垪琛ㄦ涓殑娲诲姩椤�
+ this.getInputBoxHeight(); // 鍒濆鍖栧垪琛ㄦ鐨則op鍊�
+ },
+
+ // 鑾峰彇杈撳叆妗嗙殑鎬婚珮搴� px
+ getInputBoxHeight() {
+ let component = this;
+ // #ifdef H5
+ component = undefined; // 鍦╤5涓紶鍏ヤ簡component鍙嶈�屾嬁涓嶅埌鏁版嵁
+ // #endif
+ getNodeInfo('.show-box', component, (data) => {
+ if (data) {
+ const trangleHeight = 6; //鍒楄〃妗嗗乏涓婅鐨勫皬鐨勭┖蹇冧笁瑙掑舰鐨勯珮搴�(px)
+ this.listTop__ = data[0].height + trangleHeight;
+ }
+ })
+ },
+ /************************** 鍒濆鍖栧嚱鏁� ****************************/
+
+ /************************** 鏁版嵁 ****************************/
+ getIndex(value) { // 灏嗗�艰浆鎹负绱㈠紩
+ let activeIndex = searchIndex(
+ this.innerList, value, 'value')
+ return activeIndex; // 杞崲澶辫触锛屽垯杩斿洖-1
+ },
+ itemIsDisabled(index) { // 鏌愪釜鍒楄〃椤规槸鍚﹀凡缁忚绂佺敤浜�
+ return this.innerList[index].disabled;
+ },
+
+ itemIsActive(index) { // 鏌愪釜鍒楄〃椤规槸鍚︽槸琚�変腑鐨�(娲诲姩鐨�)
+ return index === this.activeIndex;
+ },
+
+ // listShow 杩欎釜瀛楁鐨勫�煎彉鍖栨椂鐨勫洖璋�
+ onDataChange_listShow(newVal = false, oldVal) {
+ newVal ? this.switchMgr.open() : this.switchMgr.close(100);
+ },
+ /************************** 鏁版嵁 ****************************/
+
+
+ /************************** 鈥滆緭鍏ユ鈥濈殑鎿嶄綔 ****************************/
+ // 杈撳叆妗嗚幏寰楃劍鐐规椂
+ onFocus(event) {
+ this.focusShowList__ && this.switchMgr.open();
+ this.$emit('focus', event);
+ },
+
+ // 杈撳叆妗嗗け鍘荤劍鐐规椂
+ onBlur(event) {
+ // 澶卞幓鐒︾偣鏃堕殣钘忥紝鍦ㄧ數鑴戜笂寰堝ソ锛屼絾鍦ㄧЩ鍔ㄧ浣撻獙涓嶅ソ锛屽洜涓轰細寮瑰嚭鏁板瓧閿洏锛岀劧鍚庨殣钘忛敭鐩樻椂浼氬け鍘荤劍鐐�
+ this.focusShowList__ && this.switchMgr.close(100);
+ this.$emit('blur', event);
+ },
+
+ //褰撴樉绀虹殑涓嶆槸杈撳叆妗嗘椂锛屼笂闈㈢殑鐐瑰嚮浜嬩欢
+ onUpperClick() {
+ if (this.disabled) {
+ return;
+ }
+ this.switchMgr.toggle('auto', -1, 100);
+ this.$emit('input-click');
+ },
+
+ //娓呯┖宸茬粡閫夋嫨鐨勫唴瀹�
+ onClear() {
+ this.clearItemActive(); // 娓呯┖鍒楄〃妗嗕腑鐨勬墍鏈夋椿鍔ㄩ」
+ this.clearInput(); // 娓呯┖杈撳叆妗嗕腑鐨勬樉绀�
+ this.$emit('clear');
+ },
+
+ // 杈撳叆妗嗙殑鍊煎彉鍖栨椂
+ onInput(event) {
+ const inputVal = event.detail.value;
+ this.changeActiveIndex(inputVal);
+ this.$emit('input', event);
+ },
+
+ // 娓呯┖input涓樉绀虹殑鍐呭
+ clearInput(placeholder = null) {
+ this.placeholder = placeholder == null ? this.placeholder : placeholder;
+ this.selectText = this.showInput ? '' : this.placeholder;
+ },
+ // 璁剧疆input涓樉绀虹殑鍐呭
+ setInput(text = null) {
+ if (text == null) {
+ return;
+ }
+ this.selectText = text;
+ },
+ /************************** 鈥滆緭鍏ユ鈥濈殑鎿嶄綔 ****************************/
+
+
+ /************************** 鍒楄〃鐨勬搷浣�(鏄剧ず/闅愯棌/鐐瑰嚮) ****************************/
+
+ /**
+ * 浼犲叆鏁板瓧琛ㄧず绱㈠紩锛屽叾瀹冨�艰〃绀簐alue, 浼氳嚜鍔ㄥ幓鎼滅储瀵瑰簲鐨勭储寮�
+ * 娉ㄦ剰锛�
+ * 1. 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭储寮曪紝鍒欎粈涔堜篃涓嶄細鍋�
+ * 2. 濡傛灉鎵惧埌浜嗭紝鍙細鎶婂搴旈」璁剧疆涓烘椿鍔ㄧ殑锛屽苟涓嶄細娓呴櫎鍏跺畠鐨勬椿鍔ㄩ」
+ */
+ changeActiveIndex(value_index) { //鏀瑰彉鍒楄〃涓殑娲诲姩椤�
+ if (value_index == null) {
+ return;
+ }
+ let activeIndex = value_index,
+ value = value_index;
+ if (typeof value_index !== 'number') { //璁や负鏄�硷紝鍚﹀垯灏辨槸绱㈠紩
+ activeIndex = this.getIndex(value); // 鎼滅储瀵瑰簲鐨勫�兼墍鍦ㄧ殑绱㈠紩
+ } else {
+ value = this.innerList[activeIndex].value;
+ }
+ if (activeIndex > -1) {
+ !this.itemIsActive(activeIndex) && this.setItemActive(activeIndex, value);
+ } else {
+ this.clearItemActive();
+ }
+ this.setInput(value); // 鏇存敼杈撳叆妗嗙殑鍊�
+ },
+
+ clearItemActive(index = -1) { // 璁剧疆涓轰笉閫変腑
+ if (index < 0) { // 娓呯┖鍏ㄩ儴
+ this.activeIndex = -1;
+ }
+ },
+ setItemActive(index, value) { //閫変腑鏌愪竴椤癸紝蹇呴』浼犲叆绱㈠紩鍜屽搴旂殑鍊�
+ if (this.itemIsDisabled(index)) {
+ return;
+ }
+ this.activeIndex = index;
+ },
+
+ // 鏁翠釜鍒楄〃妗嗕笂鐨勭偣鍑讳簨浠�
+ onListClick() {
+
+ },
+ onClickItem(index, value) { // 鍒楄〃椤逛笂鐨勭偣鍑讳簨浠�
+ if (this.itemIsDisabled(index)) {
+ this.switchMgr.open(); // 鐐瑰湪绂佺敤椤逛笂锛屽氨涓嶉殣钘�
+ return;
+ }
+ this.switchMgr.close(100); // 寮�濮嬮殣钘忥紝鍥犱负浼氬欢杩熼殣钘忥紝鎵�浠ュ彲浠ュ啓鍦ㄨ繖閲�
+ if (this.disabled) { //濡傛灉鏈」琚鐢� 鎴� 鏁翠釜鍒楄〃妗嗚绂佺敤
+ return;
+ }
+ if (!this.itemIsActive(index)) { //濡傛灉鐐瑰湪闈為�変腑椤逛笂
+ this.clearItemActive(); // 娓呯┖鍏跺畠鐨勯�変腑鐨勫垪琛ㄩ」
+ this.setItemActive(index, value); // 灏嗚繖涓�椤硅缃负閫変腑椤�
+ this.$emit('change', {
+ newVal: value,
+ oldVal: this.selectText,
+ index: index,
+ orignItem: this.list[index]
+ });
+
+ this.setInput(value); // 鏇存敼杈撳叆妗嗙殑鍊�
+ }
+ },
+ onListHide() { //鍒楄〃闅愯棌鏃剁殑鍥炶皟
+ this.isRotate = false;
+ this.isShowList = false;
+ this.$emit('visible-change', false);
+ },
+ onListShow() { //鍒楄〃鏄剧ず鏃剁殑鍥炶皟
+ this.isShowList = true;
+ this.isRotate = true;
+ this.$emit('visible-change', true);
+
+ if (this.selectHideType === 'independent' || this.selectHideType === 'hideSelf') {
+ return;
+ }
+ Vue.__xfl_select.$emit('open', this);
+ }
+ /************************** 鍒楄〃鐨勬搷浣�(鏄剧ず/闅愯棌/鐐瑰嚮) ****************************/
+ }
+ }
+
+ /************************** uniapp libs ****************************/
+
+ /**
+ * 鏄惁鏄痺eb鐨勭Щ鍔ㄧ
+ * @public
+ * @returns {boolean} true琛ㄧず褰撳墠鐜鏄痺eb锛屽苟涓旀槸绉诲姩绔紝false琛ㄧず闈瀢eb鎴栨槸pc绔�
+ */
+ function isMobile() {
+ try { // 鍙兘涓嶅瓨鍦╳indow瀵硅薄
+ let reg =
+ /iPhone|iPad|iPod|iOS|Android|SymbianOS|Windows Phone|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince/i;
+ return reg.test(navigator.userAgent);
+ } catch (e) {
+ return false;
+ }
+ }
+ /**
+ * 鏄惁鏄痺eb鐨刾c绔�
+ * @public
+ * @returns {boolean} true琛ㄧず褰撳墠鐜鏄痺eb锛屽苟涓旀槸pc绔紝false琛ㄧず闈瀢eb鎴栨槸绉诲姩绔�
+ */
+ function isPC() {
+ try { // 鍙兘涓嶅瓨鍦╳indow瀵硅薄
+ let reg =
+ /iPhone|iPad|iPod|iOS|Android|SymbianOS|Windows Phone|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince/i;
+ return !reg.test(navigator.userAgent);
+ } catch (e) {
+ return false;
+ }
+ }
+ /**
+ * 鑾峰彇鎸囧畾鍏冪礌鐨勬牱寮�
+ * 娉ㄦ剰:
+ * 1. 蹇呴』鍦ㄤ娇鐢ㄨ繖涓嚱鏁扮殑鏂囦欢涓� 瀵煎叆 import Vue from 'vue'
+ * 2. 鑷畾涔夌粍浠剁紪璇戞ā寮忥紙榛樿妯″紡锛夋椂, 蹇呴』浼犲叆component鍙傛暟銆�(h5涓祴璇曟椂涓嶇浼犱笉浼犻兘鑳芥甯歌幏鍙栵紝浣唚x涓繀椤讳紶鍏ユ墠琛�)
+ * @public
+ * @param {Object|string} options - 閰嶇疆瀵硅薄锛屽鏋滀紶鍏ヤ竴涓瓧绗︿覆锛屽垯璇嗗埆涓簊elector
+ * selector - dom鍏冪礌鐨勯�夋嫨鍣紝浠呮敮鎸佷互涓嬮�夋嫨鍣�:
+ * 1. ID閫夋嫨鍣細'#the-id'
+ 2. class閫夋嫨鍣紙鍙互杩炵画鎸囧畾澶氫釜锛夛細'.a-class.another-class'
+ 3. 瀛愬厓绱犻�夋嫨鍣細'.the-parent > .the-child'
+ 4. 鍚庝唬閫夋嫨鍣細'.the-ancestor .the-descendant'
+ 5. 璺ㄨ嚜瀹氫箟缁勪欢鐨勫悗浠i�夋嫨鍣細'.the-ancestor >>> .the-descendant'
+ 6. 澶氶�夋嫨鍣ㄧ殑骞堕泦锛�'#a-node, .some-other-nodes'
+ 7. 浼犲叆 'viewport' 琛ㄧず鑾峰彇瑙嗗彛瀵硅薄锛屾湁鐐圭被浼间簬閫変腑window銆�
+ * @param {function|component} [callback=null] - 濡傛灉浼犲叆涓�涓嚱鏁帮紝鍒欒瘑鍒负鑾峰彇鍒版牱寮忓悗鐨勫洖璋冿紝涔熷彲浠ヤ紶鍏ヤ竴涓粍浠�,
+ 鍥炶皟鐨勭涓�涓弬鏁板涓�:
+ // 鑾峰彇淇℃伅鎴愬姛鏃讹紝鏄璞℃暟缁�,
+ // 瀵硅薄鏍规嵁options鐨勯厤缃�屾湁涓嶅悓鐨勫瓧娈�
+ {
+ id: '', // String 鑺傜偣鐨� ID, 缁忔祴璇曪紝杩欎釜id骞朵笉涓�瀹氭纭�(鐗瑰埆鏄�変腑澶氫釜鑺傜偣鏃�)
+ dataset: null, // Object 鑺傜偣鐨� dataset
+ left: 0, // Number 鑺傜偣鐨勫寘鍥寸洅鐨勫乏杈圭晫鍧愭爣(px)(page鍏冪礌鐨勫乏涓婅涓哄潗鏍囧師鐐�)
+ right: 0, // Number 鑺傜偣鐨勫寘鍥寸洅鐨勫彸杈圭晫鍧愭爣(px)
+ top: 0, // Number 鑺傜偣鐨勫寘鍥寸洅鐨勪笂杈圭晫鍧愭爣(px)
+ bottom: 0, // Number 鑺傜偣鐨勫寘鍥寸洅鐨勪笅杈圭晫鍧愭爣(px)
+ width: 0, // Number 鑺傜偣鐨勫搴�(px)
+ height: 0, // Number 鑺傜偣鐨勯珮搴�(px)
+ scrollLeft: 0, // Number 鑺傜偣鐨勬按骞虫粴鍔ㄤ綅缃�(px)
+ scrollTop: 0, // Number 鑺傜偣鐨勭珫鐩存粴鍔ㄤ綅缃�(px)
+ context: {} || null, // Object鑺傜偣瀵瑰簲鐨凜ontext瀵硅薄(濡俈ideoContext銆丆anvasContext銆佸拰MapContext)
+ ... // properties 鏁扮粍涓寚瀹氱殑灞炴�у�煎拰computedStyle鏁扮粍涓寚瀹氱殑鏍峰紡鍊�
+ }
+ // 褰撹幏鍙栦俊鎭け璐ワ紝鍒欎负null
+ * @param {any} [thisObj=null] 鍥炶皟涓殑this, 鍙兘浣嶄簬绗笁涓弬鏁版垨绗洓涓弬鏁般��
+ * @return {undefined|promise} 褰撴病鏈塩allback鏃讹紝鍒欒繑鍥瀙romise锛屽惁鍒欒繑鍥瀠ndefined
+ * @example
+ * 1. 浼犲叆閫夋嫨鍣紝杩斿洖promise
+ * getNodeInfo('#aa').then((data)=>{ console.log(data);});
+ *
+ * 2. 浼犲叆閫夋嫨鍣ㄥ拰component, 杩斿洖promise
+ * getNodeInfo('#aa', this).then((data)=>{ console.log(data);});
+ *
+ * 3. 浼犲叆閫夋嫨鍣ㄥ拰callback, 杩斿洖undefined
+ * getNodeInfo('#aa', (data)=>{ console.log(data);});
+ *
+ * 4. 浼犲叆閰嶇疆瀵硅薄鍜宑allback, 杩斿洖undefined
+ * getNodeInfo({selector: '#aa', component: this}, (data)=>{ console.log(data);});
+ */
+ function getNodeInfo({
+ selector = 'selector', // 閫夋嫨鍣�
+ component = null, // 閫夋嫨鍣ㄦ墍鍦ㄧ殑缁勪欢锛屼笉浼犲叆鐨勮瘽锛岀浉褰撲簬鏄湪鏁翠釜褰撳墠椤甸潰涓�夋嫨
+ attemptSpaceTime = 16, // 灏濊瘯鑾峰彇鑺傜偣淇℃伅鐨勬椂闂撮棿闅�(ms): 16 24 36 54 81 122 183 275 413
+ attemptSpaceRate = 1.5, // 鏃堕棿闂撮殧鐨勫闀跨郴鏁�
+ totalAttemptNum = 8, // 濡傛灉鑾峰彇淇℃伅澶辫触锛屽啀娆¤繘琛屽皾璇曡幏鐨勬渶澶ф鏁�
+ // 浠ヤ笅涓鸿幏鍙栧埌鐨勭粨鏋滃瓧娈电殑閰嶇疆
+ id = true, // Boolean 鏄惁杩斿洖鑺傜偣 id
+ dataset = true, // Boolean 鏄惁杩斿洖鑺傜偣 dataset
+ rect = true, // Boolean 鏄惁杩斿洖鑺傜偣甯冨眬浣嶇疆锛坙eft right top bottom锛�
+ size = true, // Boolean 鏄惁杩斿洖鑺傜偣灏哄锛坵idth height锛�
+ scrollOffset = true, //Boolean 鏄惁杩斿洖鑺傜偣鐨� scrollLeft scrollTop
+ // 浠ヤ笅涓変釜 浠� App 鍜屽井淇″皬绋嬪簭鏀寔
+ properties = [], // Array锛渟tring锛� 鎸囧畾灞炴�у悕鍒楄〃锛岃繑鍥炶妭鐐瑰搴斿睘鎬у悕鐨勫綋鍓嶅睘鎬у��
+ // 鍙兘鑾峰緱缁勪欢鏂囨。涓爣娉ㄧ殑甯歌灞炴�у�硷紝
+ // id class style 鍜屼簨浠剁粦瀹氱殑灞炴�у�间笉鍙幏鍙�
+ computedStyle = [], //Array锛渟tring锛炴寚瀹氭牱寮忓悕鍒楄〃锛岃繑鍥炶妭鐐瑰搴旀牱寮忓悕鐨勫綋鍓嶅��
+ context = true, // Boolean 鏄惁杩斿洖鑺傜偣瀵瑰簲鐨� Context 瀵硅薄
+ } = {}, callback = null, thisObj = null) {
+ // arguments 濮嬬粓浼氳褰曟渶鍘熷鐨勪紶杩涙潵鐨勫弬鏁帮紝鑰屼笉绠¤繖浜涢粯璁ゅ�间細鎬庝箞杞崲
+ // 鍥犱负浼犲叆涓�涓璞℃垨闈炲瓧绗︿覆浼氭姤閿欙紝寮哄埗杞崲涓哄瓧绗︿覆
+ const args = arguments;
+ selector = typeof args[0] === 'string' ? args[0] : String(selector);
+ if (typeof args[1] !== 'function') {
+ component = args[1];
+ callback = args[2];
+ thisObj = args[3];
+ }!component instanceof Vue && (component = null); //浼犲叆闈炵粍浠跺璞★紝浼氭姤閿�
+
+ // 涓嶈兘鎶� component 瀛楃娣诲姞鍒拌繖涓璞′笂锛屽惁鍒欏湪wx涓細鎶ュ惊鐜紩鐢ㄧ殑閿欒
+ const options = {
+ selector,
+ attemptSpaceTime,
+ totalAttemptNum,
+ attemptSpaceRate,
+ id,
+ dataset,
+ rect,
+ size,
+ scrollOffset,
+ properties,
+ computedStyle,
+ context
+ };
+
+ const selectorQuery = uni.createSelectorQuery();
+ component && selectorQuery.in(component);
+ const nodesRef = selector === 'viewport' ? selectorQuery.selectViewport() : selectorQuery.selectAll(selector);
+ nodesRef.fields(options); // 娉ㄦ剰锛屽彧娉ㄥ唽浜嗚繖涓�涓懡浠�
+
+ let result; // 蹇呴』鎶婂垱寤簆romise鐨勪唬鐮佹斁鍦ㄥ墠闈紝鍚﹀垯鍦╤5绔細鍑虹幇exec鍏堟墽琛屽畬鎴愮殑鎯呭喌
+ if (typeof callback !== 'function') {
+ result = new Promise(resolve => callback = resolve);
+ }
+ stepRunFunc((next, currNum) => {
+ selectorQuery.exec(([data]) => { // 寮�濮嬫煡璇㈤〉闈腑鐨勮妭鐐�
+ data && data.length === 0 && (data = null);
+ data || totalAttemptNum <= currNum ? typeof callback === 'function' && callback.call(thisObj, data) : next(
+ attemptSpaceTime);
+ attemptSpaceTime = Math.round(attemptSpaceTime * attemptSpaceRate);
+ });
+ })(); // 绔嬪嵆鎵ц涓�娆�
+
+ return result;
+ }
+ /************************** uniapp libs ****************************/
+
+ /************************** js libs ****************************/
+ /**
+ * 寮�鍏崇被锛岀鐞嗕袱涓姸鎬佺殑鍒囨崲
+ * 鐗圭偣鏄�: 鐘舵�佺殑鍒囨崲鍙兘鏄欢杩熻繘琛岀殑銆�
+ * @class
+ */
+ class Switch {
+ constructor(onopen = null, onclose = null) {
+ this.onopen = onopen; // 鎵撳紑鍚庣殑鍥炶皟
+ this.onclose = onclose; // 鍏抽棴鍚庣殑鍥炶皟
+ this.isOpen = false; // 鍒濆鏃剁姸鎬佹槸鍏抽棴鐨�
+ }
+ toggle(toState = 'auto', ...args) { //鍒囨崲寮�鍏崇殑鐘舵��
+ if (!(toState === 'close' || toState === 'open')) {
+ toState = this.isOpen ? 'close' : 'open';
+ }
+ let delayTime_open, delayTime_close, cancelType_open, cancelType_close;
+ for (let i = 0, arg; i < args.length; i++) {
+ arg = args[i];
+ switch (typeof arg) {
+ case 'number':
+ delayTime_open == null ? (delayTime_open = arg) : (delayTime_close = arg);
+ break;
+ case 'string':
+ cancelType_open == null ? (cancelType_open = arg) : (cancelType_close = arg);
+ break;
+ }
+ }
+ const delayTime = toState === 'open' ? delayTime_open : delayTime_close;
+ const cancelType = toState === 'open' ? cancelType_open : cancelType_close;
+ this.change(toState, delayTime == null ? -1 : delayTime, cancelType == null ? 'both' : cancelType);
+ }
+ open(delayTime = -1, cancelType = 'both') { // 鎵撳紑
+ this.change('open', delayTime, cancelType);
+ }
+ close(delayTime = -1, cancelType = 'both') { // 鍏抽棴
+ this.change('close', delayTime, cancelType);
+ }
+ cancel(type = 'both') { // 鍙栨秷瀹氭椂鍣�
+ if (type === 'open') {
+ clearTimeout(this.openTimer);
+ this.openTimer = null;
+ } else if (type === 'close') {
+ clearTimeout(this.closeTimer);
+ this.closeTimer = null;
+ } else if (type === 'both') {
+ clearTimeout(this.closeTimer);
+ this.closeTimer = null;
+ clearTimeout(this.openTimer);
+ this.openTimer = null;
+ }
+ }
+ change(toState, delayTime = -1, cancelType = 'both') { // 鏀瑰彉鍒版寚瀹氱殑鐘舵��
+ this.cancel(cancelType); // 鍙栨秷瀹氭椂鍣�
+ if (this.isOpen && toState === 'open' || !this.isOpen && toState === 'close') {
+ return;
+ }
+ const funcName = 'on' + toState;
+ if (delayTime < 0) {
+ this.isOpen = toState === 'open';
+ typeof this[funcName] === 'function' && this[funcName]();
+ } else {
+ this[toState + 'Timer'] = setTimeout(() => {
+ this.isOpen = toState === 'open';
+ typeof this[funcName] === 'function' && this[funcName]();
+ }, delayTime)
+ }
+ }
+ }
+
+
+ /**
+ * 浠庝竴涓暟缁勪腑杩涜鎼滅储锛岃繑鍥炰竴涓储寮�, 涓昏鐗圭偣鏄彲浠ユ繁灞傛悳绱�
+ * 渚濊禆: forEach props 杩欎袱涓嚱鏁�
+ * @public
+ * @param {Array} arr - 瑕佹悳绱㈢殑鏁扮粍鎴栫被鏁扮粍鎴栨櫘閫氬璞�
+ * @param {any} searchVal - 瑕佹悳绱㈢殑鍊�
+ * @param {string|Array} [propPath=''] - 瑕佹悳绱㈢殑鍊肩殑璺緞锛� 濡� 'aa.bb.cc' 鎴� ['aa', 'bb', 'cc']
+ * @param {function} [compareFunc=null] - 姣旇緝鍑芥暟 compareFunc(val, searchVal, arrElem, index, orignArr)
+ * 鐪佺暐鏃讹紝琛ㄧず杩涜鍏ㄧ瓑姣旇緝銆�
+ * @example
+ * 1. 绠�鍗曠殑浣跨敤
+ * searchIndex([1, 2, 3], 2); // => 1
+ *
+ * 2. 浣跨敤鑷畾涔夌殑姣旇緝鍑芥暟
+ * searchIndex([1, 2, 3], '2', '', (val, searchVal)=>val==searchVal); // => 1
+ *
+ * 3. 鎸囧畾鐢ㄥ�肩殑璺緞
+ * searchIndex([1, {aa: 3}, {aa: {bb: 3}}, {aa: {bb: 4}], 3, 'aa.bb'); // => 1
+ */
+ function searchIndex(arr, searchVal, propPath = '', compareFunc = null) {
+ let result_index = -1;
+ if (propPath) {
+ if (typeof propPath === 'string') {
+ propPath = propPath.split(/\s*[\,\.]\s*/);
+ } else if (!Array.isArray(propPath)) {
+ propPath = '';
+ }
+ }
+ forEach(arr, (val, index, orignArr) => {
+ if (propPath) {
+ val = props(val, propPath);
+ }
+ if (
+ typeof compareFunc === 'function' ?
+ compareFunc(val, searchVal, arrElem, index, orignArr) :
+ val === searchVal
+ ) {
+ result_index = index;
+ return false;
+ }
+ });
+ return result_index;
+ }
+
+ /**
+ * 閬嶅巻鏁扮粍鎴栫被鏁扮粍鎴栨櫘閫氬璞�
+ * 璺熷師鐢熺殑forEach鐨勫樊鍒槸: 鍙互閬嶅巻鏅�氬璞★紝涔熷彲浠ヤ腑閫斿彲浠ラ��鍑恒��
+ * 娉ㄦ剰锛岀被鏁扮粍鍙細閬嶅巻鍏朵腑鐨勬暟瀛楀睘鎬с��
+ * @public
+ * @param {object|Array} obj - 瑕侀亶鍘嗙殑瀵硅薄
+ * @param {function} func - 鍥炶皟 func.call(thisObj, value, prop, obj);
+ * @param {any} [thisObj=null] - 鍥炶皟涓殑this
+ * @example
+ * 1. forEach({a: 3, b: 4}, (val, prop, obj)=>{ // 閬嶅巻鏅�氬璞�
+ * return false; //杩斿洖false 琛ㄧず閫�鍑哄惊鐜�
+ * });
+ *
+ * 2. forEach([3, 4], (val, index, obj)=>{ // 閬嶅巻鏁扮粍
+ * return false; //杩斿洖false 琛ㄧず閫�鍑哄惊鐜�
+ * });
+ *
+ * 3. forEach({1: 3, 5: 10, a: 'aa', length: 20}, (val, index, obj)=>{ // 閬嶅巻绫绘暟缁�
+ * return false; //杩斿洖false 琛ㄧず閫�鍑哄惊鐜�
+ * });
+ */
+ function forEach(obj, func, thisObj = null) {
+ if (obj == null || typeof obj === 'function' || typeof func !== 'function') {
+ return obj;
+ }
+
+ //瀵硅薄鑷韩鐨勶紙涓嶅惈缁ф壙鐨勶級鎵�鏈夊彲閬嶅巻锛坋numerable锛夊睘鎬�
+ let keys = Object.keys(obj);
+
+ const length = obj.length;
+ const isArrayLike = typeof length == 'number' && length > -1 && length % 1 == 0 && length <= 9007199254740991;
+
+ //濡傛灉鏄被鏁扮粍鎴栨暟缁勶紝鍙亶鍘嗗叾涓殑鏁板瓧灞炴��
+ if (isArrayLike) {
+ const reg = /^(?:0|[1-9]\d*)$/,
+ maxNum = 9007199254740991,
+ numPropArr = [];
+ for (let i = 0, val; i < keys.length; i++) {
+ val = keys[i];
+ if (reg.test(val) && +val <= maxNum) {
+ numPropArr.push(val);
+ }
+ }
+ keys = numPropArr;
+ }
+
+ // 寮�濮嬮亶鍘嗘墍鏈夌殑鏁板瓧灞炴��
+ for (let i = 0; i < keys.length; i++) {
+ if (func.call(thisObj, obj[keys[i]], keys[i], obj) === false) {
+ break;
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 浠庝竴涓璞′笂鍙栨寚瀹氱殑灞炴�� 鎴� 璁剧疆灞炴�х殑鍊�
+ * @public
+ * @param {Object} obj - 瀵硅薄, 褰撹缃椂锛屼細鏇存敼杩欎釜瀵硅薄
+ * @param {Array} propArr - 灞炴�у悕绉扮殑鏁扮粍锛屾寚鍑鸿鎿嶄綔鐨勫睘鎬х殑璺緞
+ * @param {any} [val=undefined] - 瑕佽缃殑鍊� 鐪佺暐鏃惰〃绀鸿幏鍙栵紝鍚﹀垯灏辨槸璁剧疆
+ * @param {Boolean} [fource=false] - 鍦ㄨ缃椂锛屽鏋滀笉瀛樺湪瀵瑰簲鐨勫睘鎬э紝鏄惁鍒涘缓
+ * @returns {any|undefined} 璁剧疆鏃朵竴瀹氳繑鍥瀠ndefined, 鑾峰彇鏃讹紝杩斿洖瀵瑰簲鐨勫�硷紝濡傛灉涓嶅瓨鍦ㄥ垯杩斿洖undefined
+ * @example
+ * 1. props({}, ['aa', 'bb', 'cc'], 5); // => undefined 浠�涔堜篃娌″仛
+ * 2. props({}, ['aa', 'bb', 'cc'], 5, true); // => undefined 鍦ㄧ┖瀵硅薄涓婂垱寤轰簡澶氬眰灞炴�� {aa: {bb: {cc: 5} }}
+ * 3. props({}, ['aa', 'bb', 'cc']); // => undefined
+ * 4. props({aa: {bb: 77}}, ['aa', 'bb']); // => 77
+ * 5. props({aa: 3}, ['aa', 'bb', 'cc'], 5); // => undefined 浠�涔堜篃娌″仛
+ * 6. props({aa: 3}, ['aa'], 5); // => undefined 璁剧疆浜� aa 鐨勫�间负5
+ * 7. props({aa: 3}, [], 5); // => undefined 浠�涔堜篃娌″仛
+ */
+ function props(obj, propArr, val = undefined, fource = false) {
+ for (let i = 0, subObj = obj, len = propArr.length, propName; i < len; i++) {
+ if (!subObj || typeof subObj !== 'object') {
+ return;
+ }
+ propName = propArr[i];
+ if (i === len - 1) {
+ if (val === undefined) {
+ return subObj[propName];
+ } else {
+ subObj[propName] = val;
+ }
+ } else {
+ if (!(subObj[propName] && typeof subObj[propName] === 'object')) {
+ if (fource && val !== undefined) {
+ subObj[propName] = {};
+ } else {
+ return;
+ }
+ }
+ subObj = subObj[propName];
+ }
+ }
+ }
+
+
+ /**
+ * 鍒嗘鎵ц鏌愪釜鍑芥暟
+ * 浣跨敤鍦烘櫙: 寮傛鎵ц鏌愪釜鎿嶄綔锛岃繖涓搷浣滃彲鑳戒細澶辫触锛屾墍浠ュ綋澶辫触鏃讹紝闇�瑕佸啀灏濊瘯鍑犳锛岀洿鍒版垚鍔熸垨灏濊瘯娆℃暟鐢ㄥ畬
+ * @public
+ * @param {function} callback - 瑕佹墽琛岀殑鍑芥暟 callback.call(thisObj, next, currCount, timers)
+ * @param {any} [thisObj=null] - callback涓殑this
+ * @returns {function} 杩斿洖next鍑芥暟锛宯ext鍑芥暟鍙互浼犲叆浠ヤ笅涓や釜鍙傛暟
+ * {any} [delayTime=-1] - 寤惰繜澶氫箙(ms)鍐嶆墽琛屼笅涓�娆allback鍥炶皟
+ * 璐熸暟銆丯aN銆両nfinite琛ㄧず绔嬪嵆鍚屾璋冪敤锛屽叾瀹冨�艰〃绀哄欢杩熸墽琛�
+ * {string} [type='both'] - 褰撹皟鐢╪ext鏃讹紝濡傛灉鍏跺畠鍦版柟涔熻皟鐢ㄤ簡next骞朵笖杩樻病鏈夊畬鎴愶紝姝ゆ椂璇ヤ繚鐣欏摢娆¤皟鐢�
+ * 'new' - 淇濈暀鏈鐨勶紝娓呴櫎鎵�鏈夊師鏉ョ殑
+ * 'old' - 淇濈暀鎵�鏈夊師鏉ョ殑锛岃垗寮冩湰娆$殑
+ * 'both' - 涓や釜閮戒繚鐣�
+ * @example
+ * 1. 鏈�绠�鍗曠殑浣跨敤
+ * stepRunFunc((next, currCount, timers)=>{
+ * console.log('鎵ц绗�' + currCount + '娆�');
+ * currCount <= 2 && next(2000);
+ * })();
+ * // => 浼氱珛鍗虫墽琛岀涓�娆★紝鐒跺悗2s鍚庡啀鎵ц绗簩娆�
+ *
+ * 2. next()鍑芥暟鐨勭浜屼釜鍙傛暟锛屾槸鑰冭檻鍒帮紝鐢ㄦ埛鍙兘浼氬湪鐭椂闂村唴杩炵画璋冪敤澶氭锛屾鏃跺簲璇ユ�庝箞澶勭悊杩欎簺next璋冪敤涔嬮棿鐨勫叧绯�
+ * stepRunFunc((next, currCount, timers)=>{
+ * console.log('鎵ц绗�' + currCount + '娆�');
+ * if(currCount <= 2 ){
+ * next(3000);
+ * setTimeout(()=>{next(1000, 'old')}, 1000); // 杩欎竴娆ext璋冪敤灏嗕笉璧蜂綔鐢�
+ * }
+ * })();
+ * // => 浼氱珛鍗虫墽琛岀涓�娆★紝鐒跺悗3s鍚庡啀鎵ц绗簩娆�
+ */
+ function stepRunFunc(callback, thisObj = null) {
+ const getDelayTime = (delayTime) => { // 杞崲delayTime鐨勬牸寮�
+ delayTime = parseInt(delayTime);
+ if (isNaN(delayTime) || !isFinite(delayTime)) {
+ delayTime = -1;
+ }
+ return delayTime;
+ }
+ const timers = []; // 璁板綍鎵�鏈夋鍦ㄦ墽琛岀殑璁℃椂鍣�
+ const clearTimer = (oneTimer) => { // 娓呴櫎瀹氭椂鍣�
+ if (oneTimer == null) {
+ for (let i = 0; i < timers.length; i++) {
+ clearTimeout(timers[i]);
+ }
+ timers.length = 0;
+ } else {
+ const index = timers.indexOf(oneTimer);
+ if (index > -1) {
+ clearTimeout(timers[index]);
+ timers.splice(index, 1);
+ }
+ }
+ }
+ let currCount = 0; // 璁板綍callback褰撳墠宸茬粡鎵ц浜嗙殑娆℃暟
+ const next = function(delayTime = -1, type = 'both') {
+ if (type === 'new') { // 濡傛灉鍙繚鐣欐渶鏂扮殑next鍥炶皟
+ clearTimer();
+ } else if (type === 'old' && timers.length > 0) { // 淇濈暀浠ュ墠鐨刵ext鍥炶皟锛屽拷鐣ユ湰娆ext鍥炶皟
+ return;
+ }
+ delayTime = getDelayTime(delayTime);
+ if (delayTime < 0) {
+ callback.call(thisObj, next, ++currCount, timers);
+ } else {
+ const oneTimer = setTimeout(() => {
+ clearTimer(oneTimer);
+ callback.call(thisObj, next, ++currCount, timers);
+ }, delayTime);
+ timers.push(oneTimer);
+ }
+ }
+ return next;
+ }
+ /************************** js libs ****************************/
+</script>
+
+<style scoped lang="less">
+ @normal-color: #606266; //姝e父鎯呭喌涓嬬殑瀛椾綋棰滆壊
+ @hover-color: #c0c4cc; //杈规鐨勯鑹�
+ @active-color: #409eff; //娲诲姩鐨勯鑹�
+ @mouse-move-color: #f5f7fa; //鍦ㄥ垪琛ㄩ」涓婃寜涓嬫椂鐨勫垪琛ㄩ」鐨勮儗鏅壊
+ @padding-left: 5%; //涓や晶鐨勮竟璺�
+ @arrowWidth: 12%; //鍙宠竟鐨勫皬涓夎鎸夐挳鍖哄煙鐨勫搴�
+
+ .placeholder11 {
+ color: red;
+ top: 10px;
+ }
+
+ .show-box {
+ &.active {
+ border-color: @active-color;
+ }
+
+ // &:hover{
+ // border-color: @normal-color;
+ // &.active{
+ // border-color: @active-color;
+ // }
+ // }
+ &.disabled {
+ background-color: #f0f0f0;
+ }
+
+ text-align: left;
+ -webkit-appearance: none;
+ background-color: #fff;
+ background-image: none;
+ border-radius: 4px;
+ border: 1px solid @hover-color;
+ box-sizing: border-box;
+ color: @normal-color;
+ display: inline-block;
+ font-size: inherit;
+ height: 3em;
+ line-height: inherit;
+ outline: none;
+ padding: 0 @arrowWidth 0 @padding-left;
+ transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+ width: 100%;
+ position: relative;
+
+ .input {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ }
+
+ .placeholder {
+ color: #bbb;
+ }
+
+ //*************************** 鍙充晶鐨勫皬绠ご ***************************
+ .right-arrow {
+ &.isRotate {
+ transform: rotate(180deg);
+ }
+
+ transition: transform .2s cubic-bezier(.645, .045, .355, 1);
+ position: absolute;
+ font-size: 1em;
+ right: 0px;
+ display: flex;
+ top: 0;
+ align-items: center;
+ color: @hover-color;
+ height: 100%;
+ font-weight: 100;
+ width: @arrowWidth;
+ justify-content: center;
+ }
+
+ .clear {
+ color: #fff;
+ line-height: 1;
+ background-color: @hover-color;
+ border-radius: 50%;
+ padding: 2px;
+ }
+
+ /****** 鍒楄〃妗嗛儴鍒嗘牱寮� *****/
+ .list-container {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ top: 50px;
+ box-sizing: border-box;
+ z-index: 100;
+
+ //*************************** 寮瑰嚭妗嗕笂闈㈢殑灏忎笁瑙� ***************************
+ .popper__arrow {
+ transform: translateX(-400%);
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 6px;
+ filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03));
+ left: 30%;
+ margin-right: 3px;
+ border-top-width: 0;
+ border-bottom-color: #dcdfe6;
+ top: -5px;
+
+ &:after {
+ content: " ";
+ border-width: 6px;
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ top: 1px;
+ margin-left: -6px;
+ border-top-width: 0;
+ border-bottom-color: #fff;
+ }
+ }
+
+ .list {
+ border-radius: 4px;
+ border: 1px solid #dcdfe6;
+ width: 100%;
+ max-height: 10em;
+ background-color: #fff;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+ padding: 5px 0;
+
+ //*************************** 寮瑰嚭妗嗕腑姣忎竴椤规牱寮� ***************************
+ .item {
+ &:hover {
+ background-color: @mouse-move-color;
+
+ &.disabled {
+ background-color: transparent;
+ }
+ }
+
+ &.active {
+ color: @active-color;
+ font-weight: 500;
+ background-color: @mouse-move-color;
+ }
+
+ &.disabled {
+ color: @hover-color;
+ }
+
+ padding: 0 @padding-left;
+ line-height: 2;
+ }
+
+ .data-state {
+ color: @hover-color;
+ }
+ }
+ }
+ }
+
+ //************************************** 浠ヤ笅涓哄瓧浣� ****************************************
+ @font-face {
+ font-family: "iconfont";
+ src:
+ url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAM8AAsAAAAAB1gAAALvAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDHAqCEIFsATYCJAMQCwoABCAFhG0HSxthBhEVlKdkPwvsmHgLNqmwEc2pDxvYjI1gkX0f4uFrv9dz3+772RAqQJV8FbKANj5RiB1f1q0ioyorK1THs2Qj0gAJVYn///3mxT27TKyJJ63gD/KkYhr/9woe4ghtLxKJk5AWd7icc+CiJuQLU5SVQ48+ST+l0H2/pM2sm89zOb2VZYHMb1luYy3a0496AWYLKLA9sQ0UaAEFxC2yi7gTF3GaQJtRTbFxcfcIRYYmBeKyjDJQCiFZNrJFaDSszOI11Ep1IQZeRd+P/zAXcip1gmbuHJ/nYeWX9redqtuqPU6AYj4vjHUkNJGJ08bUviQMXtL2m2wJRVHxS/sz/N1+2CZOdizDemP/eBXRgCo7wIKcTvzSUnlmGMoSgt/tChX8EEOBlNvCLsQdpgv8HuNG8wuia9YA1Tfni5TZR1QthTxh8ZM2VCAHtiBtzfWtz1RtObA8IXowr5rzRK4/sRYpfjm1FBA9nrPl/qNAJRZLKJNsUumMKdb3dkIlkqjEtt8VrbNjZgnB48fG1XqNHax98/uI4xs768DFXVceFql2do6594N/t9vl/tw+ZlhKP6ngFjorHQq/AOmpcAlI98L7Pz/KG7P0OqU7+SuqQ7d8OXhYRvZsnLHcTCD4zwpgXfZVyJGzq6byIJiNgyZUaNOGv5ujz885jIPgWkIxOCLYYiRDUkyTmdNErd0CGopltJm1vb5dv3tJ5DDjpYTQ4wMqXT4h6fGZzJwfqA2R/SGlDxGUnsO0o4onyuKUUDLWoDbodPCGuFjE1U9sJispr4r4X6Sxi0IRiZWzD/RIc8wZ56ZkNmAoOLhL56G1ASKFHjWnLXOssmix6UWpDm4nnCJIYqgGlA3oaIFneHMmKp9/Qo2JJVEHqyf9hcio6x0UUjmAfOg9iHUvl4xmjRJjBjBI4IC7NAxZVgBi87Ae0liqHZGIKhluZKD6dH2j+8Jd0AY9MUcVKXLU5I9a6XU7FUcUppMkCss5MAeXmM7a3Q4A') format('woff2'),
+ url('data:application/x-font-woff;charset=utf-8;base64,d09GMgABAAAAAAM8AAsAAAAAB1gAAALvAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDHAqCEIFsATYCJAMQCwoABCAFhG0HSxthBhEVlKdkPwvsmHgLNqmwEc2pDxvYjI1gkX0f4uFrv9dz3+772RAqQJV8FbKANj5RiB1f1q0ioyorK1THs2Qj0gAJVYn///3mxT27TKyJJ63gD/KkYhr/9woe4ghtLxKJk5AWd7icc+CiJuQLU5SVQ48+ST+l0H2/pM2sm89zOb2VZYHMb1luYy3a0496AWYLKLA9sQ0UaAEFxC2yi7gTF3GaQJtRTbFxcfcIRYYmBeKyjDJQCiFZNrJFaDSszOI11Ep1IQZeRd+P/zAXcip1gmbuHJ/nYeWX9redqtuqPU6AYj4vjHUkNJGJ08bUviQMXtL2m2wJRVHxS/sz/N1+2CZOdizDemP/eBXRgCo7wIKcTvzSUnlmGMoSgt/tChX8EEOBlNvCLsQdpgv8HuNG8wuia9YA1Tfni5TZR1QthTxh8ZM2VCAHtiBtzfWtz1RtObA8IXowr5rzRK4/sRYpfjm1FBA9nrPl/qNAJRZLKJNsUumMKdb3dkIlkqjEtt8VrbNjZgnB48fG1XqNHax98/uI4xs768DFXVceFql2do6594N/t9vl/tw+ZlhKP6ngFjorHQq/AOmpcAlI98L7Pz/KG7P0OqU7+SuqQ7d8OXhYRvZsnLHcTCD4zwpgXfZVyJGzq6byIJiNgyZUaNOGv5ujz885jIPgWkIxOCLYYiRDUkyTmdNErd0CGopltJm1vb5dv3tJ5DDjpYTQ4wMqXT4h6fGZzJwfqA2R/SGlDxGUnsO0o4onyuKUUDLWoDbodPCGuFjE1U9sJispr4r4X6Sxi0IRiZWzD/RIc8wZ56ZkNmAoOLhL56G1ASKFHjWnLXOssmix6UWpDm4nnCJIYqgGlA3oaIFneHMmKp9/Qo2JJVEHqyf9hcio6x0UUjmAfOg9iHUvl4xmjRJjBjBI4IC7NAxZVgBi87Ae0liqHZGIKhluZKD6dH2j+8Jd0AY9MUcVKXLU5I9a6XU7FUcUppMkCss5MAeXmM7a3Q4A') format('woff')
+ }
+
+ .iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ .iconshanchu1:before {
+ content: "\e68c";
+ }
+
+ .icongou:before {
+ content: "\e786";
+ }
+
+ .iconarrowBottom-fill:before {
+ content: "\e60e";
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Check/Check.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Check/Check.vue"
new file mode 100644
index 0000000..bc00a89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Check/Check.vue"
@@ -0,0 +1,280 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">杞存壙缂栧彿</u-td>
+ <u-td>
+ <u-input v-model="materielNumber" :focus="qrcodeFocus" :border="true" placeholder="璇锋壂鎻忚酱鎵跨紪鍙�"
+ @input="barcodeChange" />
+ </u-td>
+ </u-tr>
+
+ <u-tr>
+ <u-td width="30%">杞存壙鍨嬪彿</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.containerdtl_type" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">閲嶉噺(鍏�)</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.containerdtl_goodsWeight" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鎵樼洏鍙�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.containerhead_barcode" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">閫夐厤鏍囧噯</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.containerdtl_standard" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹀瀷</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.materiel_id" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍘傚</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.containerdtl_madeUnit" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%" height="50px;">杞存壙鍐呭緞骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.csize_in_value" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">娌规。骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.csize_three_3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">澶栧緞骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.csize_out_value" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍚庢。骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.csize_four_3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鎶芥缁撴灉:</u-td>
+ <u-td>
+ <xfl-select :list="checkResultList" :initValue="'璇烽�夋嫨'" :clearable="false"
+ @change="checkResultChange">
+ </xfl-select>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ recordInfo: {
+ containerdtl_id: '',
+ containerdtl_type: '',
+ materiel_id: '',
+ containerdtl_goodsWeight: '',
+ containerhead_barcode: '',
+ containerdtl_standard: '',
+ containerdtl_madeUnit: '',
+ csize_in_value: '',
+ csize_out_value: '',
+ csize_three_3: '',
+ csize_four_3: '',
+ },
+ checkResultList: [{
+ label: '鍚堟牸',
+ value: '鍚堟牸'
+ }, {
+ label: '涓嶅悎鏍�',
+ value: '涓嶅悎鏍�'
+ }, ],
+ checkResult: '',
+ materielNumber: '',
+ qrcodeFocus: false,
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+
+ },
+ checkResultChange(value) {
+ this.checkResult = value.orignItem.label;
+ },
+ barcodeChange() {
+ if (_this.materielNumber == '' || _this.materielNumber == null) {
+ _this.initAVG();
+ return;
+ }
+ let where =
+ "[" +
+ "{'name':'containerdtl_number','value':'" + _this.materielNumber + "'}]";
+ let data = {
+ page: 1,
+ rows: 1,
+ sort: 'containerhead_createtime',
+ order: 'sort',
+ wheres: where
+ }
+ //console.log(data);
+ _this.$AjaxRequest.Params('post', 'VV_ContainerInfo/getPageData',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ //debugger
+ if (result.data.status == 0) {
+ _this.recordInfo = result.data.rows[0];
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ _this.initAVG();
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ _this.initAVG();
+ });
+ },
+ initAVG() {
+ Object.keys(_this.recordInfo).map(key => _this.recordInfo[key] = '');
+ },
+ SaveInfomation() {
+ if (_this.materielNumber == '' || _this.recordInfo.containerdtl_id == '') {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋壂鎻忚酱鎵跨紪鍙疯幏鍙栦俊鎭�.",
+ duration: 2000
+ });
+ return;
+ }
+ if (_this.checkResult == '') {
+ uni.showToast({
+ icon: 'none',
+ title: "璇烽�夋嫨鎶芥缁撴灉.",
+ duration: 2000
+ });
+ return;
+ }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '纭澶嶆牳?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ containerdtl_id: _this.recordInfo.containerdtl_id,
+ checkResult: _this.checkResult
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToAPP/MeasureCheckAction',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "娴嬮噺澶嶆牳纭鎴愬姛!",
+ duration: 2000
+ });
+ _this.initAVG();
+ _this.qrcodeFocus = true;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ _this.qrcodeFocus = true;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundBoxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundBoxing.vue"
new file mode 100644
index 0000000..0ba5ca7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundBoxing.vue"
@@ -0,0 +1,460 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">杞﹁疆鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="value_cltm" :border="true" :focus="qrcodeFocus" @input="barcodeChange"
+ placeholder="杞﹁疆鏉$爜" />
+ </u-td>
+ </u-tr>
+ <!-- <u-tr>
+ <u-td width="30%">搴忓垪鍙�</u-td>
+ <u-td>
+ <u-input v-model="xlh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr> -->
+ <u-tr>
+ <u-td width="30%">杞﹁疆鍙�</u-td>
+ <u-td>
+ <u-input v-model="clh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="ldtm" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍔ㄦ嫋灞炴��(鍔�/鎷�)</u-td>
+ <u-td>
+ <u-input v-model="mttype" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞鍙�</u-td>
+ <u-td>
+ <u-input v-model="ldh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹀瀷</u-td>
+ <u-td>
+ <u-input v-model="chexing" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞瀷</u-td>
+ <u-td>
+ <u-input v-model="ldxh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鏂�/鏃�</u-td>
+ <u-td>
+ <u-input v-model="neworold" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟绛夌骇</u-td>
+ <u-td>
+ <u-input v-model="gkdj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟a鐣岄潰鍧囧��</u-td>
+ <u-td>
+ <u-input v-model="gkzja" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟b鐣岄潰鍧囧��</u-td>
+ <u-td>
+ <u-input v-model="gkzjb" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟c鐣岄潰鍧囧��</u-td>
+ <u-td>
+ <u-input v-model="gkzjc" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鍧囧��</u-td>
+ <u-td>
+ <u-input v-model="gkcc" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞緞鍊�</u-td>
+ <u-td>
+ <u-input v-model="ljz" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">棰勪及杞緞鍊�</u-td>
+ <u-td>
+ <u-input v-model="yglj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">灞炴��</u-td>
+ <u-td>
+ <u-input v-model="clsx" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍏ュ簱鏃ユ湡</u-td>
+ <u-td>
+ <u-input v-model="rksj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">閰嶅睘灞�</u-td>
+ <u-td>
+ <u-input v-model="psj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞︾粍鍙�</u-td>
+ <u-td>
+ <u-input v-model="lcch" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞紭</u-td>
+ <u-td>
+ <u-input v-model="lyh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+
+ //杞﹁疆鐮�
+ value_cltm: '',
+
+ //搴忓垪鍙�
+ //xlh: '',
+ //杞﹁疆鍙�
+ clh: '',
+ //杞︾被鍒�
+ mttype: '',
+ //杞鏉$爜
+ ldtm: '',
+ //杞被鍨�
+ ldh: '',
+ //杞﹀瀷
+ chexing: '',
+ //杞瀷
+ ldxh: '',
+ //灞炴��
+ clsx: '',
+ //杞︾粍鍙�
+ lcch: '',
+ //杞紭
+ lyh:'',
+ //绛夌骇
+ gkdj: '',
+ //姣傚瓟鐩村緞鍧囧��
+ ljz: '',
+ //棰勪及杞緞鍊�
+ yglj: '',
+ //姣傚瓟a鐣岄潰鍧囧��
+ gkzja: '',
+ //姣傚瓟b鐣岄潰鍧囧��
+ gkzjb: '',
+ //姣傚瓟c鐣岄潰鍧囧��
+ gkzjc: '',
+ //鍏ュ簱鏃ユ湡
+ rksj: '',
+ //閰嶅睘灞�
+ psj: '',
+ //鏂�/鏃�
+ neworold: '',
+ //姣傚瓟鍧囧��
+ gkcc:'',
+ qrcodeFocus: true,
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+
+ },
+ barcodeChange() {
+ if (_this.value_cltm == '') {
+ _this.initInfo();
+ return;
+ }
+ let data = {
+ MainData: {
+ cltm: _this.value_cltm
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToZY/ZY_GetCLInfo', data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ console.log(result);
+ if (result.data.status) {
+ let obj = JSON.parse(JSON.stringify(result.data.data));
+ //搴忓垪鍙�
+ //_this.xlh = obj.xlh;
+ //杞﹁疆鍙�
+ _this.clh = obj.clh;
+ //杞鏉$爜
+ _this.ldtm = obj.ldtm;
+ //杞︾被鍒�
+ _this.mttype = obj.mttype;
+ //杞被鍨�
+ _this.ldh = obj.ldh;
+ //杞﹀瀷
+ _this.chexing = obj.chexing;
+ //杞瀷
+ _this.ldxh = obj.ldxh;
+ //鏂�/鏃�
+ _this.neworold = obj.newold;
+ //棰勪及杞緞鍊�
+ _this.yglj = obj.yglj;
+ //姣傚瓟a鐣岄潰鍧囧��
+ _this.gkzja = obj.gkzja;
+ //姣傚瓟b鐣岄潰鍧囧��
+ _this.gkzjb = obj.gkzjb;
+ //姣傚瓟c鐣岄潰鍧囧��
+ _this.gkzjc = obj.gkzjc;
+ //杞緞鍊�
+ _this.ljz = obj.ljz;
+ //灞炴��
+ _this.clsx = obj.clsx;
+ //鍏ュ簱鏃ユ湡
+ _this.rksj = obj.rksj;
+ //閰嶅睘灞�
+ _this.psj = obj.psj;
+ //杞︾粍鍙�
+ _this.lcch = obj.lcch;
+ //杞紭
+ _this.lyh=obj.lyh;
+ //绛夌骇
+ _this.gkdj = obj.gkdj;
+ //姣傚瓟鍧囧��
+ _this.gkcc=obj.gkcc;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ _this.initInfo();
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ _this.initInfo();
+ });
+ },
+ initInfo() {
+ //搴忓垪鍙�
+ //_this.xlh = '';
+ //杞﹁疆鍙�
+ _this.clh = '';
+ _this.ldtm = '';
+ //杞︾被鍒�
+ _this.mttype = '';
+ //杞被鍨�
+ _this.ldh = '';
+ //杞﹀瀷
+ _this.chexing = '';
+ //杞瀷
+ _this.ldxh = '';
+ //鏂�/鏃�
+ _this.neworold = '';
+ //棰勪及杞緞鍊�
+ _this.yglj = '';
+ //姣傚瓟a鐣岄潰鍧囧��
+ _this.gkzja = '';
+ //姣傚瓟b鐣岄潰鍧囧��
+ _this.gkzjb = '';
+ //姣傚瓟c鐣岄潰鍧囧��
+ _this.gkzjc = '';
+ //杞緞鍊�
+ _this.ljz = '';
+ //灞炴��
+ _this.clsx = '';
+ //鍏ュ簱鏃ユ湡
+ _this.rksj = '';
+ //閰嶅睘灞�
+ _this.psj = '';
+ //杞︾粍鍙�
+ _this.lcch = '';
+ _this.lyh='';
+ //绛夌骇
+ _this.gkdj = '';
+
+ _this.gkcc='';
+
+ },
+ SaveInfomation() {
+ //_this.LotNumber == '' || _this.value_rfid.length == 0 ||
+
+ if (_this.value_cltm.length == 0 ) {
+
+ uni.showToast({
+ title: "杞﹁疆淇℃伅涓嶈兘涓虹┖",
+ duration: 2000,
+ icon: 'none',
+ });
+ return;
+ }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '鏄惁纭缁勭洏?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ code: _this.value_cltm,
+ //xlh: _this.xlh,
+ clh: _this.clh,
+ ldtm: _this.ldtm,
+ mttype: _this.mttype,
+ ldh: _this.ldh,
+ chexing: _this.chexing,
+ ldxh: _this.ldxh,
+ neworold: _this.neworold,
+ yglj: _this.yglj,
+ gkzja: _this.gkzja,
+ gkzjb: _this.gkzjb,
+ gkzjc: _this.gkzjc,
+ clsx: _this.clsx,
+ rksj: _this.rksj,
+ psj: _this.psj,
+ lcch: _this.lcch,
+ lyh:_this.lyh,
+ gkdj: _this.gkdj,
+ ljz:_this.ljz,
+ gkcc:_this.gkcc,
+ user: _this.$UserTool.UserInfo.userName
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToAPP/SaveCLinfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "淇濆瓨鎴愬姛!",
+ duration: 2000
+ });
+ _this.value_cltm = "";
+ _this.initInfo();
+ _this.qrcodeFocus = true;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅:" + err.errMsg,
+ duration: 2000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ _this.rfidFocus = true;
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundEmpty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundEmpty.vue"
new file mode 100644
index 0000000..513fbe3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundEmpty.vue"
@@ -0,0 +1,172 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">鎵樼洏RFID鐮�</u-td>
+ <u-td>
+ <u-input v-model="value_rfid" :border="true" placeholder="鎵樼洏鐮�" id="value_rfid"
+ :focus="value_rfidfocus" />
+ </u-td>
+ </u-tr>
+
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ value_rfid: '',
+ value_qrcode: '',
+ value_rfidfocus: false
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+
+ },
+ SaveInfomation() {
+ if (_this.value_rfid.length == 0) {
+ uni.showToast({
+ title: "鎵樼洏鐮佷笉鑳戒负绌�",
+ duration: 2000
+ });
+ return;
+ }
+ if (_this.value_rfid.length > 6) {
+ uni.showToast({
+ title: "鎵樼洏闀垮害涓嶈兘澶т簬6浣嶆暟銆�",
+ duration: 2000,
+ icon: 'none',
+ });
+ return;
+ }
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '璇锋牳瀵规墭鐩樼爜鏄惁姝g‘?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ barcode: _this.value_rfid
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'Dt_boxing_head/CreateEmptyPalletTask',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "鍒涘缓绌烘墭鍏ュ簱鎴愬姛!",
+ duration: 2000
+ });
+ _this.value_rfid = "";
+ _this.value_qrcode = "";
+ _this.value_rfidfocus = true;
+ } else {
+ //console.log(result.data.message);
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ } else if (res.cancel) {
+ this.value_rfidfocus = true;
+ }
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ this.value_rfidfocus = true;
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundInfo.vue"
new file mode 100644
index 0000000..dd5a642
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundInfo.vue"
@@ -0,0 +1,192 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">鎿嶄綔鏂瑰紡</u-td>
+ <u-td>
+ <xfl-select :list="OperationList" :initValue="'璇烽�夋嫨'" :clearable="false" @change="OperationChange">
+ </xfl-select>
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹁酱鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="cztm" :border="true" placeholder="杞﹁酱鏉$爜" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍘嬭鏈哄彿</u-td>
+ <u-td>
+ <xfl-select :list="MachineArray" :initValue="'璇烽�夋嫨'" :clearable="false" @change="MachineChange">
+ </xfl-select>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ cztm: '',
+ machine: '',
+ operateType:'',
+ OperationList: [{
+ label: '1',
+ value: '缁戝畾'
+ }, {
+ label: '2',
+ value: '瑙g粦'
+ }, ],
+
+ MachineArray: [{
+ label: '1000',
+ value: '1鍙峰帇瑁呬綅'
+ }, {
+ label: '2000',
+ value: '2鍙峰帇瑁呬綅'
+ }, ],
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+ },
+ MachineChange(value) {
+ this.machine = value.orignItem.label;
+ },
+ OperationChange(value) {
+ this.operateType = value.orignItem.label;
+ },
+ SaveInfomation() {
+ if (_this.cztm.length == 0) {
+ uni.showToast({
+ title: "璇锋壂鎻忚溅杞存潯鐮�!",
+ duration: 5000
+ });
+ return;
+ }
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '鏄惁纭淇濆瓨?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ operateType:_this.operateType,
+ cztm: _this.cztm,
+ machine: _this.machine,
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'Dt_CacheInfo/AddCacheInfoByAPP',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "鎿嶄綔鎴愬姛!",
+ duration: 5000
+ });
+ _this.cztm = "";
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 5000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 5000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundOrderBoxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundOrderBoxing.vue"
new file mode 100644
index 0000000..9f119de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/InboundOrderBoxing.vue"
@@ -0,0 +1,181 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">鎵樼洏RFID鐮�</u-td>
+ <u-td>
+ <u-input v-model="value_rfid" :border="true" placeholder="RFID" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞存壙鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="value_qrcode" :border="true" placeholder="杞存壙鏉$爜" />
+ </u-td>
+ </u-tr>
+
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">缁勭洏</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ value_rfid:'',
+ value_qrcode:'',
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+
+ // //鑾峰彇RFID鍊�
+ // _this.$AjaxRequestWcs.Params('post', 'ToVueMonitor/GetBoxingRfidValue',
+ // null, null);
+ // _this.$AjaxRequestWcs.Request().then(function(result) {
+ // if (result.data.status) {
+
+ // _this.value_rfid = result.data.data;
+ // } else {
+
+ // }
+ // }).catch(function(err) {
+
+ // });
+
+ }, 1000)
+ }
+
+ },
+ SaveInfomation() {
+ if (_this.value_rfid.length == 0 ||
+ _this.value_qrcode.length == 0) {
+
+ uni.showToast({
+ title: "缁勭洏淇℃伅涓嶈兘涓虹┖",
+ duration: 2000
+ });
+ return;
+ }
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '鏄惁纭缁勭洏?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ rfid:_this.value_rfid,
+ qrcode:_this.value_qrcode
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'Dt_boxing_head/CreateBoxingInfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "缁勭洏鎴愬姛!",
+ duration: 2000
+ });
+ _this.value_rfid = "";
+ _this.value_qrcode = "";
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/ZDPInbound.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/ZDPInbound.vue"
new file mode 100644
index 0000000..c443f4f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Inbound/ZDPInbound.vue"
@@ -0,0 +1,445 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">鍒跺姩鐩樻潯鐮�</u-td>
+ <u-td>
+ <u-input v-model="value_ZPH" :border="true" :focus="qrcodeFocus" @input="barcodeChange"
+ placeholder="鍒跺姩鐩樻潯鐮�" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍒跺姩鐩樺彿</u-td>
+ <u-td>
+ <u-input v-model="ZPH" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹀瀷</u-td>
+ <u-td>
+ <u-input v-model="chexing" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鏂�/鏃�</u-td>
+ <u-td>
+ <u-input v-model="neworold" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">浣嶇疆(渚�/涓�)</u-td>
+ <u-td>
+ <u-input v-model="POS" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">铻烘爴鍨嬪彿</u-td>
+ <u-td>
+ <u-input v-model="LSXH" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鏉愯川(閾搁挗)</u-td>
+ <u-td>
+ <u-input v-model="MAT" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+
+ <u-tr>
+ <u-td width="30%">浜у湴(杩涘彛/鍥戒骇)</u-td>
+ <u-td>
+ <u-input v-model="SITE" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞A1</u-td>
+ <u-td>
+ <u-input v-model="GKA1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞A2</u-td>
+ <u-td>
+ <u-input v-model="GKA2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞A3</u-td>
+ <u-td>
+ <u-input v-model="GKA3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞A</u-td>
+ <u-td>
+ <u-input v-model="GKA" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞B1</u-td>
+ <u-td>
+ <u-input v-model="GKB1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞B2</u-td>
+ <u-td>
+ <u-input v-model="GKB2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞B3</u-td>
+ <u-td>
+ <u-input v-model="GKB3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞B</u-td>
+ <u-td>
+ <u-input v-model="GKB" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞C1</u-td>
+ <u-td>
+ <u-input v-model="GKC1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞C2</u-td>
+ <u-td>
+ <u-input v-model="GKC2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞C3</u-td>
+ <u-td>
+ <u-input v-model="GKC3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞C</u-td>
+ <u-td>
+ <u-input v-model="GKC" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">姣傚瓟鐩村緞</u-td>
+ <u-td>
+ <u-input v-model="GKJZ" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">铻烘爴渚у墿浣欑(鑰�</u-td>
+ <u-td>
+ <u-input v-model="LSCSYMH" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">铻烘瘝渚у墿浣欑(鑰�</u-td>
+ <u-td>
+ <u-input v-model="LMCSYMH" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍏ュ簱鏃ユ湡</u-td>
+ <u-td>
+ <u-input v-model="rksj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+
+ //鍒跺姩鐩樼爜
+ value_ZPH: '',
+ ZPH: '',
+ LSXH: '',
+ POS: '',
+ MAT: '',
+ //杞﹀瀷
+ chexing: '',
+ SITE: '',
+ LMCSYMH: '',
+ GKA1: '',
+ GKA3: '',
+ GKA2: '',
+ GKA: '',
+ GKB1: '',
+ GKB3: '',
+ GKB2: '',
+ GKB: '',
+ GKC1: '',
+ GKC3: '',
+ GKC2: '',
+ GKC: '',
+ GKJZ: '',
+ //鍏ュ簱鏃ユ湡
+ rksj: '',
+ //鏂�/鏃�
+ neworold: '',
+ LSCSYMH:'',
+ qrcodeFocus: true,
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+
+ },
+ barcodeChange() {
+ if (_this.value_ZPH == '') {
+ _this.initInfo();
+ return;
+ }
+ let data = {
+ MainData: {
+ ZPH: _this.value_ZPH
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToZY/getZDPInfo', data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ console.log(result);
+ if (result.data.status) {
+ let obj = JSON.parse(JSON.stringify(result.data.data));
+ //杞﹁疆鍙�
+ _this.ZPH = obj.ZPH;
+ _this.POS = obj.POS;
+ _this.LSXH = obj.LSXH;
+ _this.MAT = obj.MAT;
+ _this.chexing = obj.chexing;
+ _this.SITE = obj.SITE;
+ //鏂�/鏃�
+ _this.neworold = obj.newold;
+ _this.GKA1 = obj.GKA1;
+ _this.GKA2 = obj.GKA2;
+ _this.GKA3 = obj.GKA3;
+ _this.GKA = obj.GKA;
+ _this.GKB1 = obj.GKB1;
+ _this.GKB2 = obj.GKB2;
+ _this.GKB3 = obj.GKB3;
+ _this.GKB = obj.GKB;
+ _this.GKC1 = obj.GKC1;
+ _this.GKC2 = obj.GKC2;
+ _this.GKC3 = obj.GKC3;
+ _this.GKC = obj.GKC;
+ _this.GKJZ = obj.GKJZ;
+ _this.LMCSYMH = obj.LMCSYMH;
+ //鍏ュ簱鏃ユ湡
+ _this.rksj = obj.rksj;
+ _this.LSCSYMH=obj.LSCSYMH;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 5000
+ });
+ _this.initInfo();
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 5000
+ });
+ _this.initInfo();
+ });
+ },
+ initInfo() {
+ //鍒跺姩鐩樺彿
+ _this.ZPH = '';
+ _this.POS = '';
+ //杞︾被鍒�
+ _this.LSXH = '';
+ //杞被鍨�
+ _this.MAT = '';
+ //杞﹀瀷
+ _this.chexing = '';
+ //杞瀷
+ _this.SITE = '';
+ //鏂�/鏃�
+ _this.neworold = '';
+ _this.GKA1 = '';
+ _this.GKA2 = '';
+ _this.GKA3 = '';
+ _this.GKA = '';
+ _this.GKB1 = '';
+ _this.GKB2 = '';
+ _this.GKB3 = '';
+ _this.GKB = '';
+ _this.GKC1 = '';
+ _this.GKC2 = '';
+ _this.GKC3 = '';
+ _this.GKC = '';
+ _this.GKJZ = '';
+ _this.LMCSYMH = '';
+ _this.rksj = '';
+
+ _this.LSCSYMH='';
+
+ },
+ SaveInfomation() {
+ //_this.LotNumber == '' || _this.value_rfid.length == 0 ||
+
+ if (_this.value_ZPH.length == 0 ) {
+
+ uni.showToast({
+ title: "鍒跺姩鐩樹俊鎭笉鑳戒负绌�",
+ duration: 5000,
+ icon: 'none',
+ });
+ return;
+ }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '鏄惁纭缁勭洏?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ code: _this.value_ZPH,
+ ZPH: _this.ZPH,
+ POS: _this.POS,
+ LSXH: _this.LSXH,
+ MAT: _this.MAT,
+ chexing: _this.chexing,
+ SITE: _this.SITE,
+ neworold: _this.neworold,
+ GKA1: _this.GKA1,
+ GKA2: _this.GKA2,
+ GKA3: _this.GKA3,
+ GKA: _this.GKA,
+ GKB1: _this.GKB1,
+ GKB2: _this.GKB2,
+ GKB3: _this.GKB3,
+ GKB: _this.GKB,
+ GKC1: _this.GKC1,
+ GKC2: _this.GKC2,
+ GKC3: _this.GKC3,
+ GKC: _this.GKC,
+ GKJZ: _this.GKJZ,
+ clsx: _this.clsx,
+ rksj: _this.rksj,
+ LMCSYMH:_this.LMCSYMH,
+ LSCSYMH:_this.LSCSYMH,
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToAPP/SaveCLinfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "淇濆瓨鎴愬姛!",
+ duration: 5000
+ });
+ _this.value_ZPH = "";
+ _this.initInfo();
+ _this.qrcodeFocus = true;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 5000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅:" + err.errMsg,
+ duration: 5000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ _this.rfidFocus = true;
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCall.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCall.vue"
new file mode 100644
index 0000000..2896aa8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCall.vue"
@@ -0,0 +1,688 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 0rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">杞﹁酱鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="cztm" :focus="qrcodeFocus" :border="true" placeholder="璇锋壂鎻忚溅杞存潯鐮�"
+ @input="cztmChange" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹁酱鍙�</u-td>
+ <u-td>
+ <u-input v-model="czh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="ldtm" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹀瀷</u-td>
+ <u-td>
+ <u-input v-model="chexing" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍔ㄦ嫋灞炴��</u-td>
+ <u-td>
+ <u-input v-model="mttype" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹁酱鍨嬪彿</u-td>
+ <u-td>
+ <u-input v-model="czxh" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">閫夐厤杞瀷(*)</u-td>
+ <u-td>
+ <u-input v-model="clxh" :border="false" :focus="clxhFocus" placeholder="璇疯緭鍏ラ�夐厤杞瀷" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х瓑绾�</u-td>
+ <u-td>
+ <u-input v-model="zlzdj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鍙宠疆搴х瓑绾�</u-td>
+ <u-td>
+ <u-input v-model="ylzdj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">缁翠慨浠诲姟</u-td>
+ <u-td>
+ <u-input v-model="wxrw" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰�</u-td>
+ <u-td>
+ <u-input v-model="zlzzj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰�</u-td>
+ <u-td>
+ <u-input v-model="ylzzj" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凙1</u-td>
+ <u-td>
+ <u-input v-model="zlzA1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凙1</u-td>
+ <u-td>
+ <u-input v-model="ylzA1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凙2</u-td>
+ <u-td>
+ <u-input v-model="zlzA2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凙2</u-td>
+ <u-td>
+ <u-input v-model="ylzA2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凙3</u-td>
+ <u-td>
+ <u-input v-model="zlzA3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凙3</u-td>
+ <u-td>
+ <u-input v-model="ylzA3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凙</u-td>
+ <u-td>
+ <u-input v-model="zlza" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凙</u-td>
+ <u-td>
+ <u-input v-model="ylza" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凚1</u-td>
+ <u-td>
+ <u-input v-model="zlzB1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凚1</u-td>
+ <u-td>
+ <u-input v-model="ylzB1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凚2</u-td>
+ <u-td>
+ <u-input v-model="zlzB2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凚2</u-td>
+ <u-td>
+ <u-input v-model="ylzB2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凚3</u-td>
+ <u-td>
+ <u-input v-model="zlzB3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凚3</u-td>
+ <u-td>
+ <u-input v-model="ylzB3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凚</u-td>
+ <u-td>
+ <u-input v-model="zlzb" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凚</u-td>
+ <u-td>
+ <u-input v-model="ylzb" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凜1</u-td>
+ <u-td>
+ <u-input v-model="zlzC1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凜1</u-td>
+ <u-td>
+ <u-input v-model="ylzC1" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凜2</u-td>
+ <u-td>
+ <u-input v-model="zlzC2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凜2</u-td>
+ <u-td>
+ <u-input v-model="ylzC2" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凜3</u-td>
+ <u-td>
+ <u-input v-model="zlzC3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凜3</u-td>
+ <u-td>
+ <u-input v-model="ylzC3" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸﹁疆搴х洿寰凜</u-td>
+ <u-td>
+ <u-input v-model="zlzc" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">鍙宠疆搴х洿寰凜</u-td>
+ <u-td>
+ <u-input v-model="ylzc" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹁疆鏂瑰悜:</u-td>
+ <u-td>
+ <xfl-select :list="wheelsPositionArray" :initValue="'璇烽�夋嫨'" :clearable="false"
+ @change="wheelsPositionChange">
+ </xfl-select>
+ </u-td>
+ </u-tr>
+ <!-- <u-tr>
+ <u-td width="30%">杞﹁疆杞瀷</u-td>
+ <u-td>
+ <u-input v-model="x" :border="true" placeholder="璇疯緭鍏ヨ溅杞疆鍨�" />
+ </u-td>
+ </u-tr> -->
+ <u-tr>
+ <u-td width="30%">鏂版棫绫诲埆:</u-td>
+ <u-td>
+ <xfl-select :list="NOdirectionArray" :initValue="'璇烽�夋嫨'" :clearable="false"
+ @change="NOdirectionChange">
+ </xfl-select>
+ </u-td>
+ </u-tr>
+ <!-- <u-tr>
+ <u-td width="30%">杞存壙绫诲埆:</u-td>
+ <u-td>
+ <xfl-select :list="StateArray" :initValue="'璇烽�夋嫨'" :clearable="false" @change="StateChange"
+ ref="StateSelect">
+ </xfl-select>
+ </u-td>
+ </u-tr> -->
+ <!-- <u-tr>
+ <u-td width="30%">鍘傚:</u-td>
+ <u-td>
+ <xfl-select :list="ManufacturerArray" :initValue="'璇烽�夋嫨'" :clearable="false"
+ @change="ManufacturerChange" ref="ManufacturerSelect">
+ </xfl-select>
+ </u-td>
+ </u-tr> -->
+ <!-- <u-tr>
+ <u-td width="30%">宸ヤ綅:</u-td>
+ <u-td>
+ <xfl-select :list="StationArray" :initValue="'璇烽�夋嫨'" :clearable="false" @change="StationChange">
+ </xfl-select>
+ </u-td>
+ </u-tr> -->
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭涓婃灦</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ cztm: '',
+ czh: '',
+ chexing: '',
+ czxh: '',
+ clxh: '',
+ zlzdj: '',
+ ylzdj: '',
+ wxrw:'',
+ ldtm: '',
+ mttype: '',
+ zlzzj: '',
+ ylzzj: '',
+ zlzA1: '',
+ ylzA1: '',
+ zlzA2: '',
+ ylzA2: '',
+ zlzA3: '',
+ ylzA3: '',
+ zlzB1: '',
+ ylzB1: '',
+ zlzB2: '',
+ ylzB2: '',
+ zlzB3: '',
+ ylzB3: '',
+ zlzC1: '',
+ ylzC1: '',
+ zlzC2: '',
+ ylzC2: '',
+ zlzC3: '',
+ ylzC3: '',
+ zlza: '',
+ ylza: '',
+ zlzb: '',
+ ylzb: '',
+ zlzc: '',
+ ylzc: '',
+ // zzjAVG: '',
+ // yzjAVG: '',
+ // zfcbAVG: '',
+ // yfcbAVG: '',
+ // zydAVG: '',
+ // yydAVG: '',
+ //StateArray: [],
+ //ManufacturerArray: [],
+ StationArray: [{
+ label: '宸︿晶鍘嬭浣�',
+ value: '1宸︿晶鍘嬭浣�'
+ },
+ {
+ label: '鍙充晶鍘嬭浣�',
+ value: '2鍙充晶鍘嬭浣�'
+ }
+ ],
+ wheelsPositionArray: [{
+ label: 'all',
+ value: '涓や晶'
+ }, {
+ label: 'left',
+ value: '宸︿晶'
+ },
+ {
+ label: 'right',
+ value: '鍙充晶'
+ }
+ ],
+ NOdirectionArray: [{
+ label: '0',
+ value: '鏂伴��'
+ }, {
+ label: '1',
+ value: '妫�淇�'
+ }, ],
+ //zcState: '',
+ //Manufacturer: '',
+ //targetStation: '',
+
+ //杞存壙鏂瑰悜
+ wheelsPosition: '',
+ //杞存壙鍙�
+ //ldCode: '',
+ //ortherData: '',
+ qrcodeFocus: false,
+ clxhFocus: false
+ }
+ },
+ methods: {
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+ },
+ // ManufacturerChange(value) {
+ // this.Manufacturer = value.orignItem.label;
+ // },
+ // StateChange(value) {
+ // this.zcState = value.orignItem.label;
+ // },
+ // StationChange(value) {
+ // this.targetStation = value.orignItem.label;
+ // },
+ wheelsPositionChange(value) {
+ this.wheelsPosition = value.orignItem.label;
+ },
+ NOdirectionChange(value) {
+ this.NOdirection = value.orignItem.label;
+ },
+ cztmChange() {
+ if (_this.cztm == '' || _this.cztm == null) {
+ return;
+ }
+ let data = {
+ MainData: {
+ cztm: _this.cztm
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToZY/getCZInfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ //console.log(result);
+ if (result.data.status) {
+ let obj = JSON.parse(JSON.stringify(result.data.data));
+ // _this.yfcbAVG = obj.yfcbAVG;
+ // _this.zfcbAVG = obj.zfcbAVG;
+ // _this.zydAVG = obj.zydAVG;
+ // _this.yydAVG = obj.yydAVG;
+ // _this.zzjAVG = obj.zzjAVG;
+ // _this.yzjAVG = obj.yzjAVG;
+ _this.chexing = obj.chexing;
+ _this.czh = obj.czh;
+ _this.czxh = obj.czxh;
+ _this.clxhFocus = true;
+ _this.zlzdj = obj.zlzdj;
+ _this.ylzdj = obj.ylzdj;
+ _this.wxrw=obj.wxrw;
+ _this.ldtm = obj.ldtm;
+ _this.zlzzj = obj.zlzzj;
+ _this.ylzzj = obj.ylzzj;
+ _this.zlzA1 = obj.zlzA1;
+ _this.ylzA1 = obj.ylzA1;
+ _this.zlzA2 = obj.zlzA2;
+ _this.ylzA2 = obj.ylzA2;
+ _this.zlzA3 = obj.zlzA3;
+ _this.ylzA3 = obj.ylzA3;
+ _this.zlzB1 = obj.zlzB1;
+ _this.ylzB1 = obj.ylzB1;
+ _this.zlzB2 = obj.zlzB2;
+ _this.ylzB2 = obj.ylzB2;
+ _this.zlzB3 = obj.zlzB3;
+ _this.ylzB3 = obj.ylzB3;
+ _this.zlzC1 = obj.zlzC1;
+ _this.ylzC1 = obj.ylzC1;
+ _this.zlzC2 = obj.zlzC2;
+ _this.ylzC2 = obj.ylzC2;
+ _this.zlzC3 = obj.zlzC3;
+ _this.ylzC3 = obj.ylzC3;
+ _this.zlza = obj.zlza;
+ _this.ylza = obj.ylza;
+ _this.zlzb = obj.zlzb;
+ _this.ylzb = obj.ylzb;
+ _this.zlzc = obj.zlzc;
+ _this.ylzc = obj.ylzc;
+ _this.mttype = obj.mttype;
+ //_this.ldCode = obj.ldCode;
+ //_this.ortherData = obj.ortherData;
+ // if (null != obj.manufacturerArray)
+ // obj.manufacturerArray.forEach(function(item, index, arr) {
+ // _this.ManufacturerArray.push({
+ // label: item,
+ // value: item
+ // })
+ // });
+ // if (null != obj.neworold)
+ // obj.neworold.forEach(function(item, index, arr) {
+ // let name = '妫�淇�';
+ // if (item.indexOf('0') > -1) {
+ // name = '鏂板搧';
+ // }
+
+ // if (null == _this.StateArray.find(r => r.value == name)) {
+ // _this.StateArray.push({
+ // label: item,
+ // value: name
+ // })
+ // }
+ // });
+ //console.log(obj);
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 5000
+ });
+ _this.initInfo();
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 5000
+ });
+ _this.initInfo();
+ });
+ },
+ initInfo() {
+ // _this.yfcbAVG = '';
+ // _this.zfcbAVG = '';
+ // _this.zydAVG = '';
+ // _this.yydAVG = '';
+ // _this.zzjAVG = '';
+ // _this.yzjAVG = '';
+ _this.cztm = '';
+ _this.czh = '';
+ _this.chexing = '';
+ _this.czxh = '';
+ _this.clxh = '';
+ _this.zlzdj = '';
+ _this.ylzdj = '';
+ _this.wxrw='';
+ _this.ldtm = '';
+ _this.zlzzj = '';
+ _this.ylzzj = '';
+ _this.zlzA1 = '';
+ _this.ylzA1 = '';
+ _this.zlzA2 = '';
+ _this.ylzA2 = '';
+ _this.zlzA3 = '';
+ _this.ylzA3 = '';
+ _this.zlzB1 = '';
+ _this.ylzB1 = '';
+ _this.zlzB2 = '';
+ _this.ylzB2 = '';
+ _this.zlzB3 = '';
+ _this.ylzB3 = '';
+ _this.zlzC1 = '';
+ _this.ylzC1 = '';
+ _this.zlzC2 = '';
+ _this.ylzC2 = '';
+ _this.zlzC3 = '';
+ _this.ylzC3 = '';
+ _this.zlza = '';
+ _this.ylza = '';
+ _this.zlzb = '';
+ _this.ylzb = '';
+ _this.zlzc = '';
+ _this.ylzc = '';
+ _this.mttype = '';
+ //_this.wheelsPosition = '';
+ //_this.NOdirection = ''
+ //_this.Manufacturer = '';
+ //_this.zcState = '';
+ //_this.StateArray = [];
+ //_this.ldCode = '';
+ //_this.ortherData = '';
+ //_this.ManufacturerArray = [];
+ //_this.$refs.StateSelect.setInput("璇烽�夋嫨");
+ //_this.$refs.StateSelect.clearItemActive();
+ //_this.$refs.ManufacturerSelect.setInput("璇烽�夋嫨");
+ //_this.$refs.ManufacturerSelect.clearItemActive();
+ },
+ SaveInfomation() {
+ if (_this.cztm == '') {
+ uni.showToast({
+ title: "璇锋壂鎻忚溅杞翠俊鎭�.",
+ duration: 5000
+ });
+ return;
+ }
+ if (_this.clxh == '') {
+ uni.showToast({
+ title: "璇疯緭鍏ラ�夐厤杞瀷.",
+ duration: 5000
+ });
+ return;
+ }
+ // if (_this.yfcbAVG == '' && _this.zfcbAVG == '' &&
+ // _this.zydAVG == '' && _this.yydAVG == '' && _this.zzjAVG == '' &&
+ // _this.yzjAVG == '') {
+ // uni.showToast({
+ // title: "璇烽噸鏂拌幏鍙栬疆瀵归�夐厤淇℃伅.",
+ // duration: 5000
+ // });
+ // return;
+ // }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '璇锋牳瀵硅溅杞存潯鐮佹槸鍚︽纭�?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ czh: _this.czh,
+ chexing: _this.chexing,
+ cztm: _this.cztm,
+ czxh: _this.czxh,
+ clxh: _this.clxh,
+ zlzdj: _this.zlzdj,
+ ylzdj: _this.ylzdj,
+ wxrw:_this.wxrw,
+ ldtm: _this.ldtm,
+ zlzzj: _this.zlzzj,
+ ylzzj: _this.ylzzj,
+ zlzA1: _this.zlzA1,
+ ylzA1: _this.ylzA1,
+ zlzA2: _this.zlzA2,
+ ylzA2: _this.ylzA2,
+ zlzA3: _this.zlzA3,
+ ylzA3: _this.ylzA3,
+ zlzB1: _this.zlzB1,
+ ylzB1: _this.ylzB1,
+ zlzB2: _this.zlzB2,
+ ylzB2: _this.ylzB2,
+ zlzB3: _this.zlzB3,
+ ylzB3: _this.ylzB3,
+ zlzC1: _this.zlzC1,
+ ylzC1: _this.ylzC1,
+ zlzC2: _this.zlzC2,
+ ylzC2: _this.ylzC2,
+ zlzC3: _this.zlzC3,
+ ylzC3: _this.ylzC3,
+ zlza: _this.zlza,
+ ylza: _this.ylza,
+ zlzb: _this.zlzb,
+ ylzb: _this.ylzb,
+ zlzc: _this.zlzc,
+ ylzc: _this.ylzc,
+ mttype: _this.mttype,
+ //targetStation: _this.targetStation,
+ wheelsPosition: _this.wheelsPosition,
+ NOdirection: _this.NOdirection,
+ //ldCode: _this.ldCode,
+ //ortherData: _this.ortherData
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToAPP/SaveCZInfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "杞﹁酱涓婃灦鎴愬姛!",
+ duration: 5000
+ });
+ _this.initInfo();
+ _this.qrcodeFocus = true;
+ _this.clxhFocus = false;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 5000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 5000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ _this.qrcodeFocus = true;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+
+ .loopView {
+ height: 160px;
+ background-color: #f0f0f0;
+ margin-top: 10px;
+ }
+
+ .loopItem {
+ margin-top: 5px;
+ margin-left: 15px;
+
+ }
+
+ .deleteBtn {
+ margin-top: 25px;
+ margin-left: 10px;
+ width: 120px;
+ background-color: orangered;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCheck.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCheck.vue"
new file mode 100644
index 0000000..02fb33e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCheck.vue"
@@ -0,0 +1,300 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false"
+ :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{date}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="30%">杞存壙缂栧彿</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_materielNumber" :border="true" placeholder="璇锋壂鎻忚酱鎵跨紪鍙�"
+ @input="barcodeChange" :focus="qrcodeFocus" />
+ </u-td>
+ </u-tr>
+
+ <u-tr>
+ <u-td width="30%">杞鏉$爜</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_ldNumber" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%" height="10px;">杞鍙�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_ldCode" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞存壙鍨嬪彿</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_materielType" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">閲嶉噺(鍏�)</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_weight" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鎵樼洏鍙�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_barcode" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ <u-td width="30%">杞存壙绫诲埆</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_standa" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">杞﹀瀷</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_materielId" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">鍘傚</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_madeUnit" :border="false" :disabled="true" placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">宸ヤ綅</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_outstation" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">鏂瑰悜</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_direction" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%" height="50px;">杞撮骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_zjAVG_mes" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">杞撮杩囩泩閲�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_zjAVG_diff" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">闃插皹鏉垮骇骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_fcbAVG_mes" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">杞存壙鍐呭緞骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_zjAVG_wms" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ <u-tr>
+ <u-td width="30%">鎸℃补鐜钩鍧囧��</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_ydAVG_wms" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ <u-td width="30%">鍚庢尅骞冲潎鍊�</u-td>
+ <u-td>
+ <u-input v-model="recordInfo.record_fcbAVG_wms" :border="false" :disabled="true"
+ placeholder="" />
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+
+ <view style="padding: 0rpx 0rpx;">
+ <u-table>
+ <u-tr>
+ <u-td>
+ <u-button style="width:100px" type="primary" @click="SaveInfomation">纭</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ date: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ recordInfo: {
+ record_id: '',
+ record_ldCode: '',
+ record_ldNumber: '',
+ record_materielId: '',
+ record_materielType: '',
+ record_materielNumber: '',
+ record_weight: '',
+ record_standa: '',
+ record_zjAVG_mes: '',
+ record_ydAVG_mes: '',
+ record_fcbAVG_mes: '',
+ record_zjAVG_wms: '',
+ record_ydAVG_wms: '',
+ record_fcbAVG_wms: '',
+ record_zjAVG_diff: '',
+ record_ydAVG_diff: '',
+ record_fcbAVG_diff: '',
+ record_barcode: '',
+ record_userName: '',
+ record_createTime: '',
+ record_locationId: '',
+ record_madeUnit: '',
+ record_checkUser: '',
+ record_checkTime: '',
+ record_direction: '',
+ record_outstation: '',
+ // record_hdAVG_wms: '',
+ // record_hdAVG_mes: ''
+ },
+ qrcodeFocus: false
+ }
+ },
+ methods: {
+ UserChange(value) {
+
+ },
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.date = this.$DateTool.getDate();
+ }, 1000)
+ }
+
+ },
+ barcodeChange() {
+ if (_this.recordInfo.record_materielNumber == '' || _this.recordInfo.record_materielNumber == null) {
+ _this.initAVG();
+ return;
+ }
+
+ let data = {
+ MainData: {
+ record_materielNumber: _this.recordInfo.record_materielNumber
+ },
+ };
+ //console.log(data);
+ _this.$AjaxRequest.Params('post', 'ToAPP/QuerySelecttionInfo',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ _this.recordInfo = result.data.data;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ _this.initAVG();
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ _this.initAVG();
+ });
+ },
+ initAVG() {
+ Object.keys(_this.recordInfo).map(key => _this.recordInfo[key] = '');
+ },
+ SaveInfomation() {
+ if (_this.recordInfo.record_materielNumber == '' || _this.recordInfo.record_record_id == '') {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋壂鎻忚酱鎵跨紪鍙疯幏鍙栦俊鎭�.",
+ duration: 2000
+ });
+ return;
+ }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '纭閫夐厤鍑哄簱?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ MainData: {
+ record_id: _this.recordInfo.record_id
+ },
+ };
+ _this.$AjaxRequest.Params('post', 'ToAPP/OutboundCheckAction',
+ data, _user.token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "閫夐厤纭鎴愬姛!",
+ duration: 2000
+ });
+ _this.initAVG();
+ _this.qrcodeFocus = true;
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ } else if (res.cancel) {}
+ }
+ });
+ },
+ },
+ created: function() {
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+ _this.qrcodeFocus = true;
+ //_this.queryOrder();
+ },
+
+
+ }
+</script>
+
+<style scoped lang="scss">
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCompleted.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCompleted.vue"
new file mode 100644
index 0000000..7934bb5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/Outbound/OutboundCompleted.vue"
@@ -0,0 +1,233 @@
+<template>
+ <view>
+ <view>
+ <u-table font-size="25">
+ <u-tr>
+ <u-td>
+ <xfl-select :list="UserArray" :initValue="this.$UserTool.UserInfo.userName" :clearable="false" :disabled="true">
+ </xfl-select>
+ </u-td>
+ <u-td width="25%">鐜板湪鏃堕棿:</u-td>
+ <u-td width="25%">{{DateTime}}</u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 20rpx 0rpx">
+ <u-table>
+ <u-tr>
+ <u-td width="25%">鍛煎彨鏁伴噺</u-td>
+ <u-td width="50%" >
+ <u-input type="number" v-model="EmptyTrayNum" :border="true" placeholder="璇疯緭鍏ュ懠鍙暟閲�,榛樿1"></u-input>
+ </u-td>
+ <u-td width="25%">
+ <u-button type="primary" @click="Save">鍛煎彨</u-button>
+ </u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <view style="padding: 0rpx 0rpx">
+ <!-- <text class="u-text-left">鍑哄簱浠诲姟鍒楄〃锛氭瘡椤祘{pageSize}}鏉�,鍏眥{total}}鏉�</text> -->
+ <u-table font-size="22">
+ <u-tr style="height: 50px;">
+ <u-th class="tdth" width="10%">搴忓垪</u-th>
+ <u-th class="tdth" width="25%">鎵樼洏鍙�</u-th>
+ <u-th class="tdth" width="25%">璐т綅鍙�</u-th>
+ <u-th class="tdth" width="20%">鎵ц鐘舵��</u-th>
+ <u-th class="tdth" width="20%">鎿嶄綔</u-th>
+ </u-tr>
+ <u-tr style="height: 50px;" v-for="(item,index) in TaskArray" @click.native="TableItemCheck(item)">
+ <!-- @dblclick.native="TableItemCheck(item)" -->
+ <u-td width="10%">{{index+1}}</u-td><!-- {{(current-1)*pageSize+(index+1)}} -->
+ <u-td width="25%">{{item.barcode}}</u-td>
+ <u-td width="25%">{{item.locationId}}</u-td>
+ <u-td width="20%">{{item.state}}</u-td>
+ <u-td width="20%"><u-button style="height: 25px;width: 55px;" class="deleteBtn" type="primary" @click="CancelTask(index)">鍙栨秷</u-button></u-td>
+ </u-tr>
+ </u-table>
+ </view>
+ <uni-pagination @change="handlePage" :total="total" :pageSize="pageSize" :current="current">
+ </uni-pagination>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ var _user;
+ export default {
+ data() {
+ return {
+ DateTime: '',
+ CurrentUser: '', //褰撳墠鐢ㄦ埛
+ EmptyTrayNum: '', //绌烘墭鐩樻暟
+ total: 0,
+ pageSize: 10,
+ current: 1,
+ TaskArray: []
+ }
+ },
+ methods: {
+
+ //鍙栨秷鏌愪竴涓┖鎵樼洏鍑哄簱
+ CancelTask(index){
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '纭瑕佸彇娑堣鏉″懠鍙褰曞悧?',
+ success: function(res) {
+ if (res.confirm) {
+ var task = _this.TaskArray[index];
+ let data = {
+ mainData:
+ {
+ "barcode": task.barcode
+ }
+ };
+ _this.$AjaxRequest.Params('post', 'Dt_taskinfo/CancelATask', data, _user
+ .token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+
+ uni.showToast({
+ title: "鍙栨秷鎴愬姛!",
+ duration: 2000
+ });
+
+ _this.$AjaxRequest.Params('post', 'Dt_taskinfo/GetEmptyPalletTaskList', data, _user
+ .token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ _this.TaskArray = result.data.data;
+ } else {
+
+ }
+ }).catch(function(err) {
+
+ });
+
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ }else if (res.cancel) {}
+ }
+ });
+ },
+
+ setTimer() {
+ if (this.timer == null) {
+ this.timer = setInterval(() => {
+ this.DateTime = this.$DateTool.getDate();
+ }, 1000)
+ }
+ },
+ Save() {
+ if ('' == _this.EmptyTrayNum) {
+ // uni.showToast({
+ // icon: 'none',
+ // title: "璇疯緭鍏ュ懠鍙暟閲�",
+ // duration: 2000
+ // });
+ // return;
+ _this.EmptyTrayNum = 1;
+ }
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '纭瑕佸懠鍙鏁伴噺鐨勭┖鎵樼洏鍚�?',
+ success: function(res) {
+ if (res.confirm) {
+ let data = {
+ mainData:
+ {
+ "callNumber": _this.EmptyTrayNum
+ }
+ };
+ _this.$AjaxRequest.Params('post', 'VV_ContainerInfo_EmptyPallet/CallEmptyPallet', data, _user
+ .token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ uni.showToast({
+ title: "鍛煎彨鎴愬姛!",
+ duration: 2000
+ });
+
+ _this.$AjaxRequest.Params('post', 'Dt_taskinfo/GetEmptyPalletTaskList', data, _user
+ .token);
+ _this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ _this.TaskArray = result.data.data;
+ } else {
+
+ }
+ }).catch(function(err) {
+
+ });
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰閿欒:" + result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ }else if (res.cancel) {}
+ }
+ });
+ }
+ },
+ created: function() {
+ //this.date = this.$DateTool.getDate();
+ // 姣忔杩涘叆鐣岄潰鏃讹紝鍏堟竻闄や箣鍓嶇殑鎵�鏈夊畾鏃跺櫒锛岀劧鍚庡惎鍔ㄦ柊鐨勫畾鏃跺櫒
+ clearInterval(this.timer)
+ this.timer = null;
+ this.setTimer();
+ _user = this.$UserTool.UserInfo;
+ this.CurrentUser = _user.userName;
+ this.UserArray = [this.$UserTool.AllUserInfo];
+
+ this.$AjaxRequest.Params('post', 'Dt_taskinfo/GetEmptyPalletTaskList', null, _user
+ .token);
+ this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+ _this.TaskArray = result.data.data;
+ } else {
+
+ }
+ }).catch(function(err) {
+
+ });
+ },
+ destroyed: function() {
+ // 姣忔绂诲紑褰撳墠鐣岄潰鏃讹紝娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ mounted() {
+ _this = this;
+
+
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .tdHeight {
+ height: 80rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/index.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/index.vue"
new file mode 100644
index 0000000..a017974
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/index.vue"
@@ -0,0 +1,142 @@
+<template>
+ <view class="login">
+ <view class="content">
+ <view class="header">
+ <image :src="require('static/image/login.png')"></image>
+ </view>
+ <view class="main">
+ <wInput v-model="phoneData" type="text" maxlength="15" placeholder="鐢ㄦ埛鍚�">
+ </wInput>
+ <wInput v-model="passData" type="password" maxlength="15" placeholder="瀵嗙爜">
+ </wInput>
+ <checkbox :checked="RememberThePassword" @click="Check">璁颁綇瀵嗙爜</checkbox>
+ </view>
+ <wButton class="wbutton" text="鐧� 褰�" :rotate="isRotate" @click="startLogin"></wButton>
+ </view>
+ </view>
+</template>
+
+<script>
+ var _this;
+ import wInput from '../../components/watch-login/watch-input.vue'
+ import wButton from '../../components/watch-login/watch-button.vue'
+ export default {
+ data() {
+ return {
+ phoneData: '', //鐢ㄦ埛/鐢佃瘽//admin
+ passData: '',//123456
+ isRotate: false,
+ RememberThePassword: false
+ }
+ },
+ components: {
+ wInput,
+ wButton,
+ },
+ mounted() {
+ _this = this;
+
+ const HCRtp = uni.getStorageSync('HCRtp');
+ if (HCRtp)
+ _this.RememberThePassword = true;
+ else
+ _this.RememberThePassword = false;
+ if (HCRtp) {
+ //缂撳瓨鐨勮处鍙�
+ const HCuname = uni.getStorageSync('HCuname');
+ //缂撳瓨鐨勫瘑鐮�
+ const HCpassw = uni.getStorageSync('HCpassw');
+ //鏈夌紦瀛樺氨璧嬪�肩粰鏂囨湰娌℃湁灏辨竻绌�
+ if (HCuname && HCpassw) {
+ _this.phoneData = HCuname;
+ _this.passData = HCpassw;
+ } else {
+ _this.phoneData = '';
+ _this.passData = '';
+ }
+ }
+ },
+ methods: {
+ startLogin(e) {
+ if (e.isRotate) //鍒ゆ柇鏄惁鍔犺浇涓紝閬垮厤閲嶅鐐瑰嚮璇锋眰
+ return false;
+
+ let userName = this.phoneData;
+ if ('' == userName || null == userName) {
+ uni.showToast({
+ icon: 'none',
+ position: 'bottom',
+ title: '鐢ㄦ埛鍚嶄笉鑳戒负绌�'
+ })
+ return;
+ }
+ let pwd = this.passData;
+ if ('' == pwd || null == pwd || pwd.length < 5) {
+ uni.showToast({
+ icon: 'none',
+ position: 'bottom',
+ title: '瀵嗙爜涓嶈兘灏忎簬浜斾綅鏁�'
+ })
+ return;
+ }
+ _this.isRotate = true;
+ let data = {
+ 'userName': userName,
+ 'password': pwd,
+ 'VerificationCode': 'App',
+ 'UUID': 'App'
+ }
+ // uni.navigateTo({
+ // url: "../AssemblyArea/ProgressProducts/CallMaterial/index"
+ // })
+ // return;
+ this.$AjaxRequest.Params('post', 'Sys_User/login', data, null);
+ this.$AjaxRequest.Request().then(function(result) {
+ if (result.data.status) {
+
+ if (_this.RememberThePassword) {
+ uni.setStorageSync('HCuname', _this.phoneData);
+ uni.setStorageSync('HCpassw', _this.passData);
+ } else {
+ uni.removeStorageSync('HCuname');
+ uni.removeStorageSync('HCpassw');
+ }
+ uni.setStorageSync('HCRtp', _this.RememberThePassword);
+ uni.navigateTo({
+ url: "./main"
+ });
+ _this.$UserTool.setUserInfo(result.data.data);
+ _this.$UserTool.setAllUserInfo({
+ label: result.data.data.userName,
+ value: result.data.data.userName,
+ });
+ //console.log(_this.$UserTool);
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: result.data.message,
+ duration: 2000
+ });
+ }
+ }).catch(function(err) {
+ //console.log(err);
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ //console.log(err);
+ });
+ _this.isRotate = false;
+ },
+ Check(e) {
+ _this.RememberThePassword = !_this.RememberThePassword;
+ }
+ }
+ }
+</script>
+
+<style>
+ @import url("../../components/watch-login/css/icon.css");
+ @import url("./css/main.css");
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/main.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/main.vue"
new file mode 100644
index 0000000..9218b2d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/pages/index/main.vue"
@@ -0,0 +1,159 @@
+<!--涓荤晫闈� -->
+<template>
+ <view class="u-demo">
+ <view class="u-demo-wrap">
+ <view class="u-demo-title">
+ <!-- <image src="/static/image/logo.png" style="height: 70rpx; width: 80%;"></image> -->
+ </view><!-- 娆㈣繋浣跨敤AISIN-PDA -->
+ <view class="u-demo-area">
+ <swiper class="swiper" @change="change">
+ <swiper-item v-for="(item,index) in pages">
+ <u-grid :col="3" v-if="index==0" :border="border">
+ <u-grid-item v-for="(temp,d) in item.pages" @click="itemClick(temp.url,temp.menu)">
+ <image :src="temp.image" class="thisImage"></image>
+ <view class="grid-text">{{temp.name}}</view>
+ </u-grid-item>
+ </u-grid>
+ <u-grid :col="2" v-else :border="border">
+ <u-grid-item v-for="(temp,d) in item.pages" @click="itemClick(temp.url,temp.menu)">
+ <image :src="temp.image" class="thisImage"></image>
+ <view class="grid-text">{{temp.name}}</view>
+ </u-grid-item>
+ </u-grid>
+ </swiper-item>
+
+ </swiper>
+ </view>
+ </view>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ var _this;
+ export default {
+ data() {
+ return {
+ list: ['integral', 'kefu-ermai', 'coupon', 'gift', 'scan', 'pause-circle', 'wifi', 'email', 'list'],
+ isSwiper: true, //鏄惁鍙粦鍔�
+ current: 0, //褰撳墠涓嬫爣
+ border: true, //鏄剧ず铏氱嚎
+ pages: [],
+ };
+ },
+ methods: {
+ click(index) {},
+ change(e) {
+ this.current = e.detail.current;
+ },
+ //閽堝鍗曚釜grid-item鐨勪簨浠�
+ itemClick(reqUrl, menu) {
+ // uni.navigateTo({
+ // url: reqUrl
+ // });
+ this.$u.route({
+ url: reqUrl + "?Menu=" + JSON.stringify(menu)
+ })
+ }
+ },
+ mounted() {
+ _this = this;
+ this.pages = [];
+ this.$AjaxRequest.Params('post', 'menu/getTreeMenu', {
+
+ }, this.$UserTool.UserInfo.token);
+ this.$AjaxRequest.Request().then(function(result) {
+ let data = result.data;
+ //console.log(data);
+
+ if (null != data && data.length > 0) {
+ let currentTreeMenu = data.filter(r => r.parentId === 1179);
+ // console.log(JSON.stringify(currentTreeMenu));
+ if (null != currentTreeMenu && currentTreeMenu.length > 0) {
+ // currentTreeMenu.sort(function(a, b) {
+ // return a.id - b.id
+ // });
+ let obj = {}; //瀵艰埅瀵硅薄
+ let page = 0; //椤垫暟
+ for (var i = 0; i < currentTreeMenu.length; i++) {
+ if (i < 9)
+ page = 0;
+ else if (i >= 9 && i < 15)
+ page = 1;
+ else
+ page = 2;
+ obj = _this.pages.find(r => r.index == page);
+ if (null == obj)
+ _this.pages.push({
+ index: page,
+ pages: [{
+ name: currentTreeMenu[i].name,
+ url: currentTreeMenu[i].url,
+ image: currentTreeMenu[i].icon,
+ menu: currentTreeMenu[i].permission
+ }]
+ });
+ else
+ obj.pages.push({
+ name: currentTreeMenu[i].name,
+ url: currentTreeMenu[i].url,
+ image: currentTreeMenu[i].icon,
+ menu: currentTreeMenu[i].permission
+ });
+ }
+ }
+ }
+
+ }).catch(function(err) {
+ uni.showToast({
+ icon: 'none',
+ title: "璇锋眰鍚庡彴寮傚父,閿欒淇℃伅." + err.errMsg,
+ duration: 2000
+ });
+ });
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ .grid-text {
+ font-size: 28rpx;
+ margin-top: 4rpx;
+ color: $u-type-info;
+ }
+
+ .badge-icon {
+ position: absolute;
+ width: 40rpx;
+ height: 40rpx;
+ }
+
+ .swiper {
+ height: 710rpx;
+ }
+
+ .indicator-dots {
+ margin-top: 40rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .indicator-dots-item {
+ background-color: $u-tips-color;
+ height: 6px;
+ width: 6px;
+ border-radius: 10px;
+ margin: 0 3px;
+ }
+
+ .indicator-dots-active {
+ background-color: $u-type-primary;
+ }
+
+ .thisImage {
+ width: 150rpx;
+ height: 150rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsA.png"
new file mode 100644
index 0000000..6aefe64
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsB.png"
new file mode 100644
index 0000000..4b5c38d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsC.png"
new file mode 100644
index 0000000..606bf51
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsD.png"
new file mode 100644
index 0000000..7174745
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsE.png"
new file mode 100644
index 0000000..dea1f79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ReceivingGoodsE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/Test.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/Test.png"
new file mode 100644
index 0000000..4b5f1af
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/Test.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/appoint.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/appoint.png"
new file mode 100644
index 0000000..448e802
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/appoint.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/binding.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/binding.png"
new file mode 100644
index 0000000..b1841db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/binding.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing1.png"
new file mode 100644
index 0000000..7143295
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing2.png"
new file mode 100644
index 0000000..b9510ce
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/boxing2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callA.png"
new file mode 100644
index 0000000..73ed380
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callB.png"
new file mode 100644
index 0000000..96f861f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callC.png"
new file mode 100644
index 0000000..45a5ebb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callD.png"
new file mode 100644
index 0000000..f39b1b5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callE.png"
new file mode 100644
index 0000000..63f20b9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/callE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/cancel.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/cancel.png"
new file mode 100644
index 0000000..9161b42
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/cancel.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox.png"
new file mode 100644
index 0000000..47530b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox1.png"
new file mode 100644
index 0000000..e328a33
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/changebox1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check1.png"
new file mode 100644
index 0000000..7f5ea86
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check2.png"
new file mode 100644
index 0000000..b699579
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/check2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/exp.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/exp.png"
new file mode 100644
index 0000000..d99077e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/exp.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forklift.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forklift.png"
new file mode 100644
index 0000000..3c92dfa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forklift.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forkliftB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forkliftB.png"
new file mode 100644
index 0000000..057cb17
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/forkliftB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/in1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/in1.png"
new file mode 100644
index 0000000..ae22843
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/in1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/inorder.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/inorder.png"
new file mode 100644
index 0000000..9c138e6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/inorder.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/lend.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/lend.png"
new file mode 100644
index 0000000..d07e51e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/lend.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/login.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/login.png"
new file mode 100644
index 0000000..f4249f0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/login.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/logo.png"
new file mode 100644
index 0000000..4907a4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ortherbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ortherbox.png"
new file mode 100644
index 0000000..0e22c04
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/ortherbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out1.png"
new file mode 100644
index 0000000..db68b71
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out2.png"
new file mode 100644
index 0000000..f3b0e4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out3.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out3.png"
new file mode 100644
index 0000000..c4e71c3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out3.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out4.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out4.png"
new file mode 100644
index 0000000..fed0f4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out4.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out5.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out5.png"
new file mode 100644
index 0000000..6523746
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/out5.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityIn.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityIn.png"
new file mode 100644
index 0000000..2958cdd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityIn.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityOut.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityOut.png"
new file mode 100644
index 0000000..d34c790
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/qualityOut.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/return.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/return.png"
new file mode 100644
index 0000000..9cb3ae0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/return.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/returnbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/returnbox.png"
new file mode 100644
index 0000000..e960507
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/returnbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zj.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zj.png"
new file mode 100644
index 0000000..128164b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zj.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zjjg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zjjg.png"
new file mode 100644
index 0000000..88dd84c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/image/zjjg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/uni.ttf" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/uni.ttf"
new file mode 100644
index 0000000..60a1968
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/static/uni.ttf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uni.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uni.scss"
new file mode 100644
index 0000000..8c223a7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uni.scss"
@@ -0,0 +1,7 @@
+/**
+ * 涓嬫柟寮曞叆鐨勪负uView UI鐨勯泦鎴愭牱寮忔枃浠讹紝涓簊css棰勫鐞嗗櫒锛屽叾涓寘鍚簡涓�浜�"u-"寮�澶寸殑鑷畾涔夊彉閲�
+ * 浣跨敤鐨勬椂鍊欙紝璇峰皢涓嬮潰鐨勪竴琛屽鍒跺埌鎮ㄧ殑uniapp椤圭洰鏍圭洰褰曠殑uni.scss涓嵆鍙�
+ * uView鑷畾涔夌殑css绫诲悕鍜宻css鍙橀噺锛屽潎浠�"u-"寮�澶达紝涓嶄細閫犳垚鍐茬獊锛岃鏀惧績浣跨敤
+ */
+@import 'uview-ui/theme.scss';
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__6F62323_cm.apk" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__6F62323_cm.apk"
new file mode 100644
index 0000000..6ce0a6f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__6F62323_cm.apk"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__C94AE9A_cm.apk" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__C94AE9A_cm.apk"
new file mode 100644
index 0000000..0ad98de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/__UNI__C94AE9A_cm.apk"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/apkurl" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/apkurl"
new file mode 100644
index 0000000..36383e7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/apk/apkurl"
@@ -0,0 +1 @@
+https://app.liuyingyong.cn/build/download/93f86260-0ea2-11f0-bea9-6ba8b4d2509a
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/certdata" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/certdata"
new file mode 100644
index 0000000..6c48c10
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/certdata"
@@ -0,0 +1,3 @@
+andrCertfile=F:/HBuilderX/HBuilderX/plugins/app-safe-pack/Test.keystore
+andrCertAlias=android
+andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/certini" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/certini"
new file mode 100644
index 0000000..813a2c4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/certini"
@@ -0,0 +1,4 @@
+[General]
+andrCertfile=package.keystore
+andrCertAlias=__UNI__C94AE9A
+andrCertPass="gEW/mAVVlXjviUCu0ifeKQ=="
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/package.keystore" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/package.keystore"
new file mode 100644
index 0000000..273b453
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/cloudcertificate/package.keystore"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniapperror.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniapperror.png"
new file mode 100644
index 0000000..4743b25
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniapperror.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniappsuccess.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniappsuccess.png"
new file mode 100644
index 0000000..c1f5bd7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/__uniappsuccess.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsA.png"
new file mode 100644
index 0000000..6aefe64
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsB.png"
new file mode 100644
index 0000000..4b5c38d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsC.png"
new file mode 100644
index 0000000..606bf51
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsD.png"
new file mode 100644
index 0000000..7174745
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsE.png"
new file mode 100644
index 0000000..dea1f79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ReceivingGoodsE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/Test.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/Test.png"
new file mode 100644
index 0000000..4b5f1af
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/Test.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/appoint.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/appoint.png"
new file mode 100644
index 0000000..448e802
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/appoint.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/binding.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/binding.png"
new file mode 100644
index 0000000..b1841db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/binding.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing1.png"
new file mode 100644
index 0000000..7143295
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing2.png"
new file mode 100644
index 0000000..b9510ce
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/boxing2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callA.png"
new file mode 100644
index 0000000..73ed380
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callB.png"
new file mode 100644
index 0000000..96f861f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callC.png"
new file mode 100644
index 0000000..45a5ebb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callD.png"
new file mode 100644
index 0000000..f39b1b5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callE.png"
new file mode 100644
index 0000000..63f20b9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/callE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/cancel.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/cancel.png"
new file mode 100644
index 0000000..9161b42
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/cancel.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox.png"
new file mode 100644
index 0000000..47530b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox1.png"
new file mode 100644
index 0000000..e328a33
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/changebox1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check1.png"
new file mode 100644
index 0000000..7f5ea86
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check2.png"
new file mode 100644
index 0000000..b699579
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/check2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/exp.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/exp.png"
new file mode 100644
index 0000000..d99077e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/exp.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forklift.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forklift.png"
new file mode 100644
index 0000000..3c92dfa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forklift.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forkliftB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forkliftB.png"
new file mode 100644
index 0000000..057cb17
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/forkliftB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/in1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/in1.png"
new file mode 100644
index 0000000..ae22843
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/in1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/inorder.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/inorder.png"
new file mode 100644
index 0000000..9c138e6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/inorder.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/lend.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/lend.png"
new file mode 100644
index 0000000..d07e51e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/lend.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/login.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/login.png"
new file mode 100644
index 0000000..f4249f0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/login.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/logo.png"
new file mode 100644
index 0000000..4907a4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ortherbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ortherbox.png"
new file mode 100644
index 0000000..0e22c04
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/ortherbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out1.png"
new file mode 100644
index 0000000..db68b71
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out2.png"
new file mode 100644
index 0000000..f3b0e4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out3.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out3.png"
new file mode 100644
index 0000000..c4e71c3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out3.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out4.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out4.png"
new file mode 100644
index 0000000..fed0f4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out4.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out5.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out5.png"
new file mode 100644
index 0000000..6523746
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/out5.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityIn.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityIn.png"
new file mode 100644
index 0000000..2958cdd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityIn.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityOut.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityOut.png"
new file mode 100644
index 0000000..d34c790
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/qualityOut.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/return.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/return.png"
new file mode 100644
index 0000000..9cb3ae0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/return.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/returnbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/returnbox.png"
new file mode 100644
index 0000000..e960507
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/returnbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zj.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zj.png"
new file mode 100644
index 0000000..128164b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zj.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zjjg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zjjg.png"
new file mode 100644
index 0000000..88dd84c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/image/zjjg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/uni.ttf" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/uni.ttf"
new file mode 100644
index 0000000..60a1968
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/cache/wgt/__UNI__C94AE9A/static/uni.ttf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniapperror.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniapperror.png"
new file mode 100644
index 0000000..4743b25
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniapperror.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniappsuccess.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniappsuccess.png"
new file mode 100644
index 0000000..c1f5bd7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/__uniappsuccess.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsA.png"
new file mode 100644
index 0000000..6aefe64
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsB.png"
new file mode 100644
index 0000000..4b5c38d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsC.png"
new file mode 100644
index 0000000..606bf51
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsD.png"
new file mode 100644
index 0000000..7174745
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsE.png"
new file mode 100644
index 0000000..dea1f79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ReceivingGoodsE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/Test.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/Test.png"
new file mode 100644
index 0000000..4b5f1af
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/Test.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/appoint.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/appoint.png"
new file mode 100644
index 0000000..448e802
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/appoint.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/binding.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/binding.png"
new file mode 100644
index 0000000..b1841db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/binding.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing1.png"
new file mode 100644
index 0000000..7143295
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing2.png"
new file mode 100644
index 0000000..b9510ce
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/boxing2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callA.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callA.png"
new file mode 100644
index 0000000..73ed380
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callA.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callB.png"
new file mode 100644
index 0000000..96f861f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callC.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callC.png"
new file mode 100644
index 0000000..45a5ebb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callC.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callD.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callD.png"
new file mode 100644
index 0000000..f39b1b5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callD.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callE.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callE.png"
new file mode 100644
index 0000000..63f20b9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/callE.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/cancel.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/cancel.png"
new file mode 100644
index 0000000..9161b42
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/cancel.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox.png"
new file mode 100644
index 0000000..47530b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox1.png"
new file mode 100644
index 0000000..e328a33
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/changebox1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check1.png"
new file mode 100644
index 0000000..7f5ea86
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check2.png"
new file mode 100644
index 0000000..b699579
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/check2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/exp.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/exp.png"
new file mode 100644
index 0000000..d99077e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/exp.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forklift.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forklift.png"
new file mode 100644
index 0000000..3c92dfa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forklift.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forkliftB.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forkliftB.png"
new file mode 100644
index 0000000..057cb17
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/forkliftB.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/in1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/in1.png"
new file mode 100644
index 0000000..ae22843
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/in1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/inorder.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/inorder.png"
new file mode 100644
index 0000000..9c138e6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/inorder.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/lend.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/lend.png"
new file mode 100644
index 0000000..d07e51e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/lend.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/login.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/login.png"
new file mode 100644
index 0000000..f4249f0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/login.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/logo.png"
new file mode 100644
index 0000000..4907a4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ortherbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ortherbox.png"
new file mode 100644
index 0000000..0e22c04
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/ortherbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out1.png"
new file mode 100644
index 0000000..db68b71
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out2.png"
new file mode 100644
index 0000000..f3b0e4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out3.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out3.png"
new file mode 100644
index 0000000..c4e71c3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out3.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out4.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out4.png"
new file mode 100644
index 0000000..fed0f4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out4.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out5.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out5.png"
new file mode 100644
index 0000000..6523746
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/out5.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityIn.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityIn.png"
new file mode 100644
index 0000000..2958cdd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityIn.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityOut.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityOut.png"
new file mode 100644
index 0000000..d34c790
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/qualityOut.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/return.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/return.png"
new file mode 100644
index 0000000..9cb3ae0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/return.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/returnbox.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/returnbox.png"
new file mode 100644
index 0000000..e960507
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/returnbox.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zj.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zj.png"
new file mode 100644
index 0000000..128164b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zj.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zjjg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zjjg.png"
new file mode 100644
index 0000000..88dd84c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/image/zjjg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/uni.ttf" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/uni.ttf"
new file mode 100644
index 0000000..60a1968
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/dist/build/app-plus/static/uni.ttf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/release/__UNI__6F62323.wgt" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/release/__UNI__6F62323.wgt"
new file mode 100644
index 0000000..f9397f9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/unpackage/release/__UNI__6F62323.wgt"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/LICENSE" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/LICENSE"
new file mode 100644
index 0000000..8e39ead
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/LICENSE"
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 www.uviewui.com
+
+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/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/README.md" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/README.md"
new file mode 100644
index 0000000..98df915
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/README.md"
@@ -0,0 +1,102 @@
+<p align="center">
+ <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
+</p>
+<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
+<h3 align="center">澶氬钩鍙板揩閫熷紑鍙戠殑UI妗嗘灦</h3>
+
+
+## 璇存槑
+
+uView UI锛屾槸[uni-app](https://uniapp.dcloud.io/)鐢熸�佷紭绉�鐨刄I妗嗘灦锛屽叏闈㈢殑缁勪欢鍜屼究鎹风殑宸ュ叿浼氳鎮ㄤ俊鎵嬫媹鏉ワ紝濡傞奔寰楁按
+
+## 鐗规��
+
+- 鍏煎瀹夊崜锛宨OS锛屽井淇″皬绋嬪簭锛孒5锛孮Q灏忕▼搴忥紝鐧惧害灏忕▼搴忥紝鏀粯瀹濆皬绋嬪簭锛屽ご鏉″皬绋嬪簭
+- 60+绮鹃�夌粍浠讹紝鍔熻兘涓板瘜锛屽绔吋瀹癸紝璁╂偍蹇�熼泦鎴愶紝寮�绠卞嵆鐢�
+- 浼楀璐村績鐨凧S鍒╁櫒锛岃鎮ㄩ闀栧湪鎵嬶紝鍙箣鍗虫潵锛岀櫨姝ョ┛鏉�
+- 浼楀鐨勫父鐢ㄩ〉闈㈠拰甯冨眬锛岃鎮ㄤ笓娉ㄩ�昏緫锛屼簨鍗婂姛鍊�
+- 璇﹀敖鐨勬枃妗f敮鎸侊紝鐜颁唬鍖栫殑婕旂ず鏁堟灉
+- 鎸夐渶寮曞叆锛岀簿绠�鎵撳寘浣撶Н
+
+
+## 瀹夎
+
+```bash
+# npm鏂瑰紡瀹夎
+npm i uview-ui
+```
+
+## 蹇�熶笂鎵�
+
+1. `main.js`寮曞叆uView搴�
+```js
+// main.js
+import uView from 'uview-ui';
+Vue.use(uView);
+```
+
+2. `App.vue`寮曞叆鍩虹鏍峰紡(娉ㄦ剰style鏍囩闇�澹版槑scss灞炴�ф敮鎸�)
+```css
+/* App.vue */
+<style lang="scss">
+@import "uview-ui/index.scss";
+</style>
+```
+
+3. `uni.scss`寮曞叆鍏ㄥ眬scss鍙橀噺鏂囦欢
+```css
+/* uni.scss */
+@import "uview-ui/theme.scss";
+```
+
+4. `pages.json`閰嶇疆easycom瑙勫垯(鎸夐渶寮曞叆)
+
+```js
+// pages.json
+{
+ "easycom": {
+ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+ },
+ // 姝や负鏈韩宸叉湁鐨勫唴瀹�
+ "pages": [
+ // ......
+ ]
+}
+```
+
+璇烽�氳繃[蹇�熶笂鎵媇(https://uviewui.com/components/quickstart.html)浜嗚В鏇磋缁嗙殑鍐呭
+
+## 浣跨敤鏂规硶
+閰嶇疆easycom瑙勫垯鍚庯紝鑷姩鎸夐渶寮曞叆锛屾棤闇�`import`缁勪欢锛岀洿鎺ュ紩鐢ㄥ嵆鍙��
+
+```html
+<template>
+ <u-button>鎸夐挳</u-button>
+</template>
+```
+
+璇烽�氳繃[蹇�熶笂鎵媇(https://uviewui.com/components/quickstart.html)浜嗚В鏇磋缁嗙殑鍐呭
+
+## 閾炬帴
+
+- [瀹樻柟鏂囨。](https://uviewui.com/)
+- [鏇存柊鏃ュ織](https://uviewui.com/components/changelog.html)
+- [鍗囩骇鎸囧崡](https://uviewui.com/components/changelog.html)
+- [鍏充簬鎴戜滑](https://uviewui.com/cooperation/about.html)
+
+## 棰勮
+
+鎮ㄥ彲浠ラ�氳繃**寰俊**鎵爜锛屾煡鐪嬫渶浣崇殑婕旂ず鏁堟灉銆�
+<br>
+<br>
+<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
+
+<!-- ## 鎹愯禒uView鐨勭爺鍙�
+
+uView鏂囨。鍜屾簮鐮佸叏閮ㄥ紑婧愬厤璐癸紝濡傛灉鎮ㄨ涓簎View甯埌浜嗘偍鐨勫紑鍙戝伐浣滐紝鎮ㄥ彲浠ユ崘璧爑View鐨勭爺鍙戝伐浣滐紝鎹愯禒鏃犻棬妲涳紝鍝�曟槸涓�鏉彲涔愪篃濂�(鐩镐俊杩欐瘮鎵撹祻涓绘挱鏇存湁鎰忎箟)銆�
+
+<img src="https://uviewui.com/common/wechat.png" width="220" >
+<img style="margin-left: 100px;" src="https://uviewui.com/common/alipay.png" width="220" >
+ -->
+## 鐗堟潈淇℃伅
+uView閬靛惊[MIT](https://en.wikipedia.org/wiki/MIT_License)寮�婧愬崗璁紝鎰忓懗鐫�鎮ㄦ棤闇�鏀粯浠讳綍璐圭敤锛屼篃鏃犻渶鎺堟潈锛屽嵆鍙皢uView搴旂敤鍒版偍鐨勪骇鍝佷腑銆�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue"
new file mode 100644
index 0000000..17ef7df
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue"
@@ -0,0 +1,182 @@
+<template>
+ <u-popup mode="bottom" :border-radius="borderRadius" :popup="false" v-model="value" :maskCloseAble="maskCloseAble"
+ length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="popupClose" :z-index="uZIndex">
+ <view class="u-tips u-border-bottom" v-if="tips.text" :style="[tipsStyle]">
+ {{tips.text}}
+ </view>
+ <block v-for="(item, index) in list" :key="index">
+ <view
+ @touchmove.stop.prevent
+ @tap="itemClick(index)"
+ :style="[itemStyle(index)]"
+ class="u-action-sheet-item"
+ :class="[index < list.length - 1 ? 'u-border-bottom' : '']"
+ :hover-stay-time="150"
+ >
+ {{item.text}}
+ </view>
+ </block>
+ <view class="u-gab" v-if="cancelBtn">
+ </view>
+ <view @touchmove.stop.prevent class="u-actionsheet-cancel u-action-sheet-item" hover-class="u-hover-class"
+ :hover-stay-time="150" v-if="cancelBtn" @tap="close">{{cancelText}}</view>
+ </u-popup>
+</template>
+
+<script>
+ /**
+ * actionSheet 鎿嶄綔鑿滃崟
+ * @description 鏈粍浠剁敤浜庝粠搴曢儴寮瑰嚭涓�涓搷浣滆彍鍗曪紝渚涚敤鎴烽�夋嫨骞惰繑鍥炵粨鏋溿�傛湰缁勪欢鍔熻兘绫讳技浜巙ni鐨剈ni.showActionSheetAPI锛岄厤缃洿鍔犵伒娲伙紝鎵�鏈夊钩鍙伴兘琛ㄧ幇涓�鑷淬��
+ * @tutorial https://www.uviewui.com/components/actionSheet.html
+ * @property {Array<Object>} list 鎸夐挳鐨勬枃瀛楁暟缁勶紝瑙佸畼鏂规枃妗gず渚�
+ * @property {Object} tips 椤堕儴鐨勬彁绀烘枃瀛楋紝瑙佸畼鏂规枃妗gず渚�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬彁绀烘枃瀛�
+ * @property {Boolean} cancel-btn 鏄惁鏄剧ず搴曢儴鐨勫彇娑堟寜閽紙榛樿true锛�
+ * @property {Number String} border-radius 寮瑰嚭閮ㄥ垎椤堕儴宸﹀彸鐨勫渾瑙掑�硷紝鍗曚綅rpx锛堥粯璁�0锛�
+ * @property {Boolean} mask-close-able 鐐瑰嚮閬僵鏄惁鍙互鍏抽棴锛堥粯璁rue锛�
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛堥粯璁alse锛�
+ * @property {Number String} z-index z-index鍊硷紙榛樿1075锛�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬彁绀烘枃瀛�
+ * @event {Function} click 鐐瑰嚮ActionSheet鍒楄〃椤规椂瑙﹀彂
+ * @event {Function} close 鐐瑰嚮鍙栨秷鎸夐挳鏃惰Е鍙�
+ * @example <u-action-sheet :list="list" @click="click" v-model="show"></u-action-sheet>
+ */
+ export default {
+ name: "u-action-sheet",
+ props: {
+ // 鐐瑰嚮閬僵鏄惁鍙互鍏抽棴actionsheet
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 鎸夐挳鐨勬枃瀛楁暟缁勶紝鍙互鑷畾涔夐鑹插拰瀛椾綋澶у皬锛屽瓧浣撳崟浣嶄负rpx
+ list: {
+ type: Array,
+ default () {
+ // 濡備笅
+ // return [{
+ // text: '纭畾',
+ // color: '',
+ // fontSize: ''
+ // }]
+ return [];
+ }
+ },
+ // 椤堕儴鐨勬彁绀烘枃瀛�
+ tips: {
+ type: Object,
+ default () {
+ return {
+ text: '',
+ color: '',
+ fontSize: '26'
+ }
+ }
+ },
+ // 搴曢儴鐨勫彇娑堟寜閽�
+ cancelBtn: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛屽紑鍚殑璇濓紝浼氬湪iPhoneX鏈哄瀷搴曢儴娣诲姞涓�瀹氱殑鍐呰竟璺�
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 閫氳繃鍙屽悜缁戝畾鎺у埗缁勪欢鐨勫脊鍑轰笌鏀惰捣
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 寮瑰嚭鐨勯《閮ㄥ渾瑙掑��
+ borderRadius: {
+ type: [String, Number],
+ default: 0
+ },
+ // 寮瑰嚭鐨剒-index鍊�
+ zIndex: {
+ type: [String, Number],
+ default: 0
+ },
+ // 鍙栨秷鎸夐挳鐨勬枃瀛楁彁绀�
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ }
+ },
+ computed: {
+ // 椤堕儴鎻愮ず鐨勬牱寮�
+ tipsStyle() {
+ let style = {};
+ if (this.tips.color) style.color = this.tips.color;
+ if (this.tips.fontSize) style.fontSize = this.tips.fontSize + 'rpx';
+ return style;
+ },
+ // 鎿嶄綔椤圭洰鐨勬牱寮�
+ itemStyle() {
+ return (index) => {
+ let style = {};
+ if (this.list[index].color) style.color = this.list[index].color;
+ if (this.list[index].fontSize) style.fontSize = this.list[index].fontSize + 'rpx';
+ // 閫夐」琚鐢ㄧ殑鏍峰紡
+ if (this.list[index].disabled) style.color = '#c0c4cc';
+ return style;
+ }
+ },
+ uZIndex() {
+ // 濡傛灉鐢ㄦ埛鏈変紶閫抸-index鍊硷紝浼樺厛浣跨敤
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ methods: {
+ // 鐐瑰嚮鍙栨秷鎸夐挳
+ close() {
+ // 鍙戦�乮nput浜嬩欢锛屽苟涓嶄細浣滅敤浜庣埗缁勪欢锛岃�屾槸瑕佽缃粍浠跺唴閮ㄩ�氳繃props浼犻�掔殑value鍙傛暟
+ // 杩欐槸涓�涓獀ue鍙戦�佷簨浠剁殑鐗规畩鐢ㄦ硶
+ this.popupClose();
+ this.$emit('close');
+ },
+ // 寮圭獥鍏抽棴
+ popupClose() {
+ this.$emit('input', false);
+ },
+ // 鐐瑰嚮鏌愪竴涓猧tem
+ itemClick(index) {
+ // disabled鐨勯」绂佹鐐瑰嚮
+ if(this.list[index].disabled) return;
+ this.$emit('click', index);
+ this.$emit('input', false);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-tips {
+ font-size: 26rpx;
+ text-align: center;
+ padding: 34rpx 0;
+ line-height: 1;
+ color: $u-tips-color;
+ }
+
+ .u-action-sheet-item {
+ display: flex;
+ line-height: 1;
+ justify-content: center;
+ align-items: center;
+ font-size: 34rpx;
+ padding: 34rpx 0;
+ }
+
+ .u-gab {
+ height: 12rpx;
+ background-color: rgb(234, 234, 236);
+ }
+
+ .u-actionsheet-cancel {
+ color: $u-main-color;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue"
new file mode 100644
index 0000000..a968d70
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue"
@@ -0,0 +1,256 @@
+<template>
+ <view class="u-alert-tips" v-if="show" :class="[
+ !show ? 'u-close-alert-tips': '',
+ type ? 'u-alert-tips--bg--' + type + '-light' : '',
+ type ? 'u-alert-tips--border--' + type + '-disabled' : '',
+ ]" :style="{
+ backgroundColor: bgColor,
+ borderColor: borderColor
+ }">
+ <view class="u-icon-wrap">
+ <u-icon v-if="showIcon" :name="uIcon" :size="description ? 40 : 32" class="u-icon" :color="uIconType" :custom-style="iconStyle"></u-icon>
+ </view>
+ <view class="u-alert-content" @tap.stop="click">
+ <view class="u-alert-title" :style="[uTitleStyle]">
+ {{title}}
+ </view>
+ <view v-if="description" class="u-alert-desc" :style="[descStyle]">
+ {{description}}
+ </view>
+ </view>
+ <view class="u-icon-wrap">
+ <u-icon @click="close" v-if="closeAble && !closeText" hoverClass="u-type-error-hover-color" name="close" color="#c0c4cc"
+ :size="22" class="u-close-icon" :style="{
+ top: description ? '18rpx' : '24rpx'
+ }"></u-icon>
+ </view>
+ <text v-if="closeAble && closeText" class="u-close-text" :style="{
+ top: description ? '18rpx' : '24rpx'
+ }">{{closeText}}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * alertTips 璀﹀憡鎻愮ず
+ * @description 璀﹀憡鎻愮ず锛屽睍鐜伴渶瑕佸叧娉ㄧ殑淇℃伅
+ * @tutorial https://uviewui.com/components/alertTips.html
+ * @property {String} title 鏄剧ず鐨勬爣棰樻枃瀛�
+ * @property {String} description 杈呭姪鎬ф枃瀛楋紝棰滆壊姣攖itle娴呬竴鐐癸紝瀛楀彿涔熷皬涓�鐐癸紝鍙��
+ * @property {String} type 鍏抽棴鎸夐挳(榛樿涓哄弶鍙穒con鍥炬爣)
+ * @property {String} icon 鍥炬爣鍚嶇О
+ * @property {Object} icon-style 鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} title-style 鏍囬鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} desc-style 鎻忚堪鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} close-able 鐢ㄦ枃瀛楁浛浠e叧闂浘鏍囷紝close-able涓簍rue鏃舵湁鏁�
+ * @property {Boolean} show-icon 鏄惁鏄剧ず宸﹁竟鐨勮緟鍔╁浘鏍�
+ * @property {Boolean} show 鏄剧ず鎴栭殣钘忕粍浠�
+ * @event {Function} click 鐐瑰嚮缁勪欢鏃惰Е鍙�
+ * @event {Function} close 鐐瑰嚮鍏抽棴鎸夐挳鏃惰Е鍙�
+ */
+ export default {
+ name: 'u-alert-tips',
+ props: {
+ // 鏄剧ず鏂囧瓧
+ title: {
+ type: String,
+ default: ''
+ },
+ // 涓婚锛宻uccess/warning/info/error
+ type: {
+ type: String,
+ default: 'warning'
+ },
+ // 杈呭姪鎬ф枃瀛�
+ description: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鍙叧闂�
+ closeAble: {
+ type: Boolean,
+ default: false
+ },
+ // 鍏抽棴鎸夐挳鑷畾涔夋枃鏈�
+ closeText: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず鍥炬爣
+ showIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏂囧瓧棰滆壊锛屽鏋滃畾涔変簡color鍊硷紝icon浼氬け鏁�
+ color: {
+ type: String,
+ default: ''
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 杈规棰滆壊
+ borderColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 宸﹁竟鏄剧ず鐨刬con
+ icon: {
+ type: String,
+ default: ''
+ },
+ // icon鐨勬牱寮�
+ iconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏍囬鐨勬牱寮�
+ titleStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鎻忚堪鏂囧瓧鐨勬牱寮�
+ descStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ },
+ data() {
+ return {
+ }
+ },
+ computed: {
+ uTitleStyle() {
+ let style = {};
+ // 濡傛灉鏈夋弿杩版枃瀛楃殑璇濓紝鏍囬杩涜鍔犵矖
+ style.fontWeight = this.description ? 500 : 'normal';
+ // 灏嗙敤鎴蜂紶鍏ユ牱寮忓璞″拰style鍚堝苟锛屼紶鍏ョ殑浼樺厛绾ф瘮style楂橈紝鍚屽睘鎬т細琚鐩�
+ return this.$u.deepMerge(style, this.titleStyle);
+ },
+ uIcon() {
+ // 濡傛灉鏈夎缃甶con鍚嶇О灏变娇鐢紝鍚﹀垯鏍规嵁type涓婚锛屾帹瀹氫竴涓粯璁ょ殑鍥炬爣
+ return this.icon ? this.icon : this.$u.type2icon(this.type);
+ },
+ uIconType() {
+ // 濡傛灉鏈夎缃浘鏍囩殑鏍峰紡锛屼紭鍏堜娇鐢紝娌℃湁鐨勮瘽锛屽垯鐢╰ype鐨勬牱寮�
+ return Object.keys(this.iconStyle).length ? '' : this.type;
+ }
+ },
+ methods: {
+ // 鐐瑰嚮鍐呭
+ click() {
+ this.$emit('click');
+ },
+ // 鐐瑰嚮鍏抽棴鎸夐挳
+ close() {
+ this.$emit('close');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-alert-tips {
+ display: flex;
+ align-items: center;
+ padding: 16rpx 30rpx;
+ border-radius: 8rpx;
+ position: relative;
+ transition: all 0.3s linear;
+ border: 1px solid #fff;
+
+ &--bg--primary-light {
+ background-color: $u-type-primary-light;
+ }
+
+ &--bg--info-light {
+ background-color: $u-type-info-light;
+ }
+
+ &--bg--success-light {
+ background-color: $u-type-success-light;
+ }
+
+ &--bg--warning-light {
+ background-color: $u-type-warning-light;
+ }
+
+ &--bg--error-light {
+ background-color: $u-type-error-light;
+ }
+
+ &--border--primary-disabled {
+ border-color: $u-type-primary-disabled;
+ }
+
+ &--border--success-disabled {
+ border-color: $u-type-success-disabled;
+ }
+
+ &--border--error-disabled {
+ border-color: $u-type-error-disabled;
+ }
+
+ &--border--warning-disabled {
+ border-color: $u-type-warning-disabled;
+ }
+
+ &--border--info-disabled {
+ border-color: $u-type-info-disabled;
+ }
+ }
+
+ .u-close-alert-tips {
+ opacity: 0;
+ visibility: hidden;
+ }
+
+ .u-icon {
+ margin-right: 16rpx;
+ }
+
+ .u-alert-title {
+ font-size: 28rpx;
+ color: $u-main-color;
+ }
+
+ .u-alert-desc {
+ font-size: 26rpx;
+ text-align: left;
+ color: $u-content-color;
+ }
+
+ .u-close-icon {
+ position: absolute;
+ top: 20rpx;
+ right: 20rpx;
+ }
+
+ .u-close-hover {
+ color: red;
+ }
+
+ .u-close-text {
+ font-size: 24rpx;
+ color: $u-tips-color;
+ position: absolute;
+ top: 20rpx;
+ right: 20rpx;
+ line-height: 1;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue"
new file mode 100644
index 0000000..2e765ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue"
@@ -0,0 +1,290 @@
+<template>
+ <view class="content">
+ <view class="cropper-wrapper" :style="{ height: cropperOpt.height + 'px' }">
+ <canvas
+ class="cropper"
+ :disable-scroll="true"
+ @touchstart="touchStart"
+ @touchmove="touchMove"
+ @touchend="touchEnd"
+ :style="{ width: cropperOpt.width, height: cropperOpt.height, backgroundColor: 'rgba(0, 0, 0, 0.8)' }"
+ canvas-id="cropper"
+ id="cropper"
+ ></canvas>
+ <canvas
+ class="cropper"
+ :disable-scroll="true"
+ :style="{
+ position: 'fixed',
+ top: `-${cropperOpt.width * cropperOpt.pixelRatio}px`,
+ left: `-${cropperOpt.height * cropperOpt.pixelRatio}px`,
+ width: `${cropperOpt.width * cropperOpt.pixelRatio}px`,
+ height: `${cropperOpt.height * cropperOpt.pixelRatio}`
+ }"
+ canvas-id="targetId"
+ id="targetId"
+ ></canvas>
+ </view>
+ <view class="cropper-buttons safe-area-padding" :style="{ height: bottomNavHeight + 'px' }">
+ <!-- #ifdef H5 -->
+ <view class="upload" @tap="uploadTap">閫夋嫨鍥剧墖</view>
+ <!-- #endif -->
+ <!-- #ifndef H5 -->
+ <view class="upload" @tap="uploadTap">閲嶆柊閫夋嫨</view>
+ <!-- #endif -->
+ <view class="getCropperImage" @tap="getCropperImage(false)">纭畾</view>
+ </view>
+ </view>
+</template>
+
+<script>
+import WeCropper from './weCropper.js';
+export default {
+ props: {
+ // 瑁佸壀鐭╁舰妗嗙殑鏍峰紡锛屽叾涓彲鍖呭惈鐨勫睘鎬т负lineWidth-杈规瀹藉害(鍗曚綅rpx)锛宑olor: 杈规棰滆壊锛�
+ // mask-閬僵棰滆壊锛屼竴鑸缃负涓�涓猺gba鐨勯�忔槑搴︼紝濡�"rgba(0, 0, 0, 0.35)"
+ boundStyle: {
+ type: Object,
+ default() {
+ return {
+ lineWidth: 4,
+ borderColor: 'rgb(245, 245, 245)',
+ mask: 'rgba(0, 0, 0, 0.35)'
+ };
+ }
+ }
+ // // 瑁佸壀妗嗗搴︼紝鍗曚綅rpx
+ // rectWidth: {
+ // type: [String, Number],
+ // default: 400
+ // },
+ // // 瑁佸壀妗嗛珮搴︼紝鍗曚綅rpx
+ // rectHeight: {
+ // type: [String, Number],
+ // default: 400
+ // },
+ // // 杈撳嚭鍥剧墖瀹藉害锛屽崟浣峳px
+ // destWidth: {
+ // type: [String, Number],
+ // default: 400
+ // },
+ // // 杈撳嚭鍥剧墖楂樺害锛屽崟浣峳px
+ // destHeight: {
+ // type: [String, Number],
+ // default: 400
+ // },
+ // // 杈撳嚭鐨勫浘鐗囩被鍨嬶紝濡傛灉鍙戠幇瑁佸壀鐨勫浘鐗囧緢澶э紝鍙兘鏄洜涓鸿缃负浜�"png"锛屾敼鎴�"jpg"鍗冲彲
+ // fileType: {
+ // type: String,
+ // default: 'jpg',
+ // },
+ // // 鐢熸垚鐨勫浘鐗囪川閲�
+ // // H5涓婃棤鏁堬紝鐩墠涓嶈�冭檻浣跨敤姝ゅ弬鏁�
+ // quality: {
+ // type: [Number, String],
+ // default: 1
+ // }
+ },
+ data() {
+ return {
+ // 搴曢儴瀵艰埅鐨勯珮搴�
+ bottomNavHeight: 50,
+ originWidth: 200,
+ width: 0,
+ height: 0,
+ cropperOpt: {
+ id: 'cropper',
+ targetId: 'targetCropper',
+ pixelRatio: 1,
+ width: 0,
+ height: 0,
+ scale: 2.5,
+ zoom: 8,
+ cut: {
+ x: (this.width - this.originWidth) / 2,
+ y: (this.height - this.originWidth) / 2,
+ width: this.originWidth,
+ height: this.originWidth
+ },
+ boundStyle: {
+ lineWidth: uni.upx2px(this.boundStyle.lineWidth),
+ mask: this.boundStyle.mask,
+ color: this.boundStyle.borderColor
+ }
+ },
+ // 瑁佸壀妗嗗拰杈撳嚭鍥剧墖鐨勫昂瀵革紝楂樺害榛樿绛変簬瀹藉害
+ // 杈撳嚭鍥剧墖瀹藉害锛屽崟浣峱x
+ destWidth: 200,
+ // 瑁佸壀妗嗗搴︼紝鍗曚綅px
+ rectWidth: 200,
+ // 杈撳嚭鐨勫浘鐗囩被鍨嬶紝濡傛灉'png'绫诲瀷鍙戠幇瑁佸壀鐨勫浘鐗囧お澶э紝鏀规垚"jpg"鍗冲彲
+ fileType: 'jpg',
+ src: '', // 閫夋嫨鐨勫浘鐗囪矾寰勶紝鐢ㄤ簬鍦ㄧ偣鍑荤‘瀹氭椂锛屽垽鏂槸鍚﹂�夋嫨浜嗗浘鐗�
+ };
+ },
+ onLoad(option) {
+ let rectInfo = uni.getSystemInfoSync();
+ this.width = rectInfo.windowWidth;
+ this.height = rectInfo.windowHeight - this.bottomNavHeight;
+ this.cropperOpt.width = this.width;
+ this.cropperOpt.height = this.height;
+ this.cropperOpt.pixelRatio = rectInfo.pixelRatio;
+
+ if (option.destWidth) this.destWidth = option.destWidth;
+ if (option.rectWidth) {
+ let rectWidth = Number(option.rectWidth);
+ this.cropperOpt.cut = {
+ x: (this.width - rectWidth) / 2,
+ y: (this.height - rectWidth) / 2,
+ width: rectWidth,
+ height: rectWidth
+ };
+ }
+ this.rectWidth = option.rectWidth;
+ if (option.fileType) this.fileType = option.fileType;
+ // 鍒濆鍖�
+ this.cropper = new WeCropper(this.cropperOpt)
+ .on('ready', ctx => {
+ // wecropper is ready for work!
+ })
+ .on('beforeImageLoad', ctx => {
+ // before picture loaded, i can do something
+ })
+ .on('imageLoad', ctx => {
+ // picture loaded
+ })
+ .on('beforeDraw', (ctx, instance) => {
+ // before canvas draw,i can do something
+ });
+ // 璁剧疆瀵艰埅鏍忔牱寮忥紝浠ュ厤鐢ㄦ埛鍦╬age.json涓病鏈夎缃负榛戣壊鑳屾櫙
+ uni.setNavigationBarColor({
+ frontColor: '#ffffff',
+ backgroundColor: '#000000'
+ });
+ uni.chooseImage({
+ count: 1, // 榛樿9
+ sizeType: ['compressed'], // 鍙互鎸囧畾鏄師鍥捐繕鏄帇缂╁浘锛岄粯璁や簩鑰呴兘鏈�
+ sourceType: ['album', 'camera'], // 鍙互鎸囧畾鏉ユ簮鏄浉鍐岃繕鏄浉鏈猴紝榛樿浜岃�呴兘鏈�
+ success: res => {
+ this.src = res.tempFilePaths[0];
+ // 鑾峰彇瑁佸壀鍥剧墖璧勬簮鍚庯紝缁檇ata娣诲姞src灞炴�у強鍏跺��
+ this.cropper.pushOrign(this.src);
+ }
+ });
+ },
+ methods: {
+ touchStart(e) {
+ this.cropper.touchStart(e);
+ },
+ touchMove(e) {
+ this.cropper.touchMove(e);
+ },
+ touchEnd(e) {
+ this.cropper.touchEnd(e);
+ },
+ getCropperImage(isPre = false) {
+ if(!this.src) return this.$u.toast('璇峰厛閫夋嫨鍥剧墖鍐嶈鍓�');
+
+ let cropper_opt = {
+ destHeight: Number(this.destWidth), // uni.canvasToTempFilePath瑕佹眰杩欎簺鍙傛暟涓烘暟鍊�
+ destWidth: Number(this.destWidth),
+ fileType: this.fileType
+ };
+ this.cropper.getCropperImage(cropper_opt, (path, err) => {
+ if (err) {
+ uni.showModal({
+ title: '娓╅Θ鎻愮ず',
+ content: err.message
+ });
+ } else {
+ if (isPre) {
+ uni.previewImage({
+ current: '', // 褰撳墠鏄剧ず鍥剧墖鐨� http 閾炬帴
+ urls: [path] // 闇�瑕侀瑙堢殑鍥剧墖 http 閾炬帴鍒楄〃
+ });
+ } else {
+ uni.$emit('uAvatarCropper', path);
+ this.$u.route({
+ type: 'back'
+ });
+ }
+ }
+ });
+ },
+ uploadTap() {
+ const self = this;
+ uni.chooseImage({
+ count: 1, // 榛樿9
+ sizeType: ['original', 'compressed'], // 鍙互鎸囧畾鏄師鍥捐繕鏄帇缂╁浘锛岄粯璁や簩鑰呴兘鏈�
+ sourceType: ['album', 'camera'], // 鍙互鎸囧畾鏉ユ簮鏄浉鍐岃繕鏄浉鏈猴紝榛樿浜岃�呴兘鏈�
+ success: (res) => {
+ self.src = res.tempFilePaths[0];
+ // 鑾峰彇瑁佸壀鍥剧墖璧勬簮鍚庯紝缁檇ata娣诲姞src灞炴�у強鍏跺��
+
+ self.cropper.pushOrign(this.src);
+ }
+ });
+ }
+ }
+};
+</script>
+
+<style scoped>
+@import '../../libs/css/style.components.scss';
+
+.content {
+ background: rgba(255, 255, 255, 1);
+}
+
+.cropper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 11;
+}
+
+.cropper-buttons {
+ background-color: #000000;
+ color: #eee;
+}
+
+.cropper-wrapper {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ background-color: #000;
+}
+
+.cropper-buttons {
+ width: 100vw;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ font-size: 28rpx;
+}
+
+.cropper-buttons .upload,
+.cropper-buttons .getCropperImage {
+ width: 50%;
+ text-align: center;
+}
+
+.cropper-buttons .upload {
+ text-align: left;
+ padding-left: 50rpx;
+}
+
+.cropper-buttons .getCropperImage {
+ text-align: right;
+ padding-right: 50rpx;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar/u-avatar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar/u-avatar.vue"
new file mode 100644
index 0000000..a3e5ad0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-avatar/u-avatar.vue"
@@ -0,0 +1,241 @@
+<template>
+ <view class="u-avatar" :style="[wrapStyle]" @tap="click">
+ <image
+ @error="loadError"
+ :style="[imgStyle]"
+ class="u-avatar__img"
+ v-if="!uText && avatar"
+ :src="avatar"
+ :mode="imgMode"
+ ></image>
+ <text class="u-line-1" v-else-if="uText" :style="{
+ fontSize: '38rpx'
+ }">{{uText}}</text>
+ <slot v-else></slot>
+ <view class="u-avatar__sex" v-if="showSex" :class="['u-avatar__sex--' + sexIcon]" :style="[uSexStyle]">
+ <u-icon :name="sexIcon" size="20"></u-icon>
+ </view>
+ <view class="u-avatar__level" v-if="showLevel" :style="[uLevelStyle]">
+ <u-icon :name="levelIcon" size="20"></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+ let base64Avatar = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAeO0lEQVR4Xu1dCbQcVZn+/+q3kOSFJYRAlpek69aLGcjoROOGIIogBxdwAxUZBycMLkedGUGRgApHIgzojKM448Iw45kjKG4YDEcZBWUZRg3qUUBeuqreewkJELKQBcLLS9c/52u64lu6X1dVV3fXcv9zKv3y3q27fPd+/d/lv//PpEUjoBGoiwBrbNqHwNatW2eOjo4e7nne4UR0eKFQmC0ih+PB/6ufQkR7mHkPPsvlcuWzt7d39+joaOXngYGB0fbVOt8laYLE3P8bN240u7q6FDOrcrls4ZOILCLC54w4imPmnSLiEJHNzI7neQ4z26Ojo87xxx//eBxl6DyeR0ATpImR4LruC4noFBE5lYhOqJLAaCLLpl9l5meq5HmQme9m5nuLxeJw0xnnNANNkBAd7zjOKhF5BRGdxMyvJaJ5IV7vZNKNRHSXiDzAzP+nlML/tQRAQBNkGpBGRkbMsbGxN1YJ8Uoi6g+AaRqS/FFEfgUNs2fPnjtWrlz5dBoq3Yk6aoJMQr1UKi1i5jcahvEGEQE5Cp3omDaWuU1E7jAMY313d/f6/v7+/W0sO/FFaYJgpWvb8wqFwhs8zwMh8MSymE5870+t4GNEtN7zvDssy1rPzOUUtiHWKueaII7jvI2I3s7M0BZHxopsyjMTERdaRURuVUrdl/LmRK5+7ggCbcHM5xERnpdGRi5fL64nopuVUjfnq9k52ubFDlSVFCDGsXnr6Jja+0cQpUqWTTHlmehsMq9BhoeHzyyXy6sxlUp0T6SrcrtBEmb+qmmaf0hX1cPVNrMEsW37RGb+MBG9OxwkOnUIBJ5j5huI6AbTNEdCvJeapJkjyMjIyPEHDx78CBF9IDW9kP6KPikiNzDzl5VS0C6ZkcwQZHBwcGFXVxc0Bp6+zPRQihrCzINVbQKtkgnJBEFc171QRK4goiWZ6JX0N+Iez/PWDgwM3Jn2pqSaIDAW9DzvCmY+J+0dkcX6M/PnReTqNE+7UksQ27YvYWZojSOyOLgy1KY/MPPVpml+N41tSh1BXNd9NRFdLiKvTyPgea2ziNxoGAaIkqrdrlQRpFQqrTEMY21eB1kG2j0kImssy/p2WtqSCoKUSqUTmPlzzHxWWoDV9ZwWgS/u2rXr8lWrVj2bdJwSTxDHcf6WmdeKyHFJB1PXLzgCzPyA53mXW5Z1d/C32p8ysQQZHByc293dDWJc1H5YdIltQsDDelIpdW2bygtdTCIJsnHjxlcXCoUvEdGLQrdIv5BGBH7Q09Pzd/39/TuTVvnEEcS27b/BaSwz69PwpI2WFtZHRH7X3d19/pIlSx5pYTGhs04UQUql0pWGYXwmdCv0C1lBAHfj36GU+nlSGpQYgjiO81Uien9SgNH16CgC5yulvtXRGlQLTwRBXNe9TUTOTgIgug7JQICZLzFN8wudrk3HCeK67t0i8ppOA6HLTx4CnuddNTAwcGUna9ZRgmhydLLr01F2p0nSMYJocqRjgCahlp0kSUcIosmRhGGXujpcqZS6qt21bjtBNDna3cXZKa8TmqStBHEc56dEpM3UszNm294SEbnEsqy27W61jSCO43yOiC5rO6K6wMwh4HneawcGBn7Rjoa1hSClUul8wzD+ux0N0mXkA4Fyubxy2bJlv291a1tOEMdx3kREt7e6IVnJ3zAM6urqqjTn4MGD5HkweNVSA4G9hmG8sNXBgVpKEMdxTiKie3X3TkVgxowZFSJ0d3dP+CwUJkZbKJfLFaKMjY1N+Ny/X0cpYOZfMPNbi8Viy+KbtIwgtm2vYOYfVuPzaY4QUW9vL82aNYv6+voOaYmowIA0+/bto2eeeYZGR3Md0/M2pdRbo+LY6L2WEcRxnB9XY200qkOm/w5SzJw5s0KMnp6elrT1wIEDFaI8++yzuSSLiFxvWdYnWgFuSwjiOM6niajthzqtAChqntASRxxxREVrtFOgTXbv3l3RLjmT85RSt8Td5tgJUiqVzjAM4ydxVzQt+YEQIAYI0kkBQUCUvEy/ROSxQqFwerFYfDRO3GMlyNDQ0JGe5/2MiF4SZyXTkBcz05FHHll58HMSRETo6aefrjz4OQdyu1IqVs83sfak4zhfIaIP5aAjJjSxU9OpoDjnadolIp+1LAtT/FgkNoK4rvteEflmLLVKUSZz5sypaI00CDTJzp2J84sQO3SGYbylWCz+KI6MYyHI0NDQceVy+V5mtuKoVFrymDt3Lh1++OFpqW6lnnv27KHt27enqs4RKrth165dp8ThmC4Wgti2/SVmRtCaXAjWGMccc0zHF+JRwcYC/qmnnsr0ugSeOE3TvDwqRv57TRPEtu0zmfmOZiuSlvdx0g1y4GwjzYIzE5AEJ/VZlTiMGpsmiOM49xDRyVkFeXy7YBYCchx22GGZaO5zzz1XIQnMWDIqP1NKnd5M25oiiOM4MF+HGXvmBZpj/vz5LTsN7xSAOIXfunVrZo0iReRSy7Kui4pvZIKUSqWVzHxPXjwgQnPMnj07Ks6Jfi/jC/c9hmGcUiwWI5nGRyaI4zg3EdH7Et3zMVUOO1XYscqybNu2LbPmKcz8ddM0IzkljEQQ27ZPZebEuIds5cCF6QimVrinkWWBdTCmWvjMoojIKsuyHgzbtkgEcRznB0TUMhPjsI1oZXqQA3c38iDY/oUmyaJE1SKhCWLb9luZGQTJvKTplDyuzsAhItYkWZQoWiQ0QRzHwdTq1CwCOL5NOOc47rj8BbXCFV9MtbC7lTWJokVCEcRxHCzKsTjPvBx77LGVS055lCzvaoXVImEJ8hsiWpX1QYM1B9YeeZYtW7Zk9S7JV5VSHwzat4EJYtv2O5k5NeF7gwJQK928efNSa2fVTLvHv5thLfKcYRgrg16sCkyQvNwxhxnJggUL4hpnqc4nw1rkWqVUICeGgQhSKpVeYxhGosP1xjUSs3xiHhajDGuRJ6pa5IlGmAQiiOu6N4rI6kaZpf3vOBRcuHBh2psRa/0zrEUuCxJ+uiFBNm7c+BeFQgF2LK3xWRNrdzaXmdYeU/HLsBZ5tKpFnptu1DQkiOu6a0VkTXNDL/lv4xLU4sWLabJnw+TXvLU1xH2RTZs2ZfVy1QeVUggeW1emJchDDz3UM3PmzD+JiNnabuh87nk9GAyC/BNPPFFxSpc1YeY7TdM8IzJBSqXSuYZhfCdrwNRqTx7NSoL2a5adPTDzi0zT/EM9LKbVII7jIFb1eUGBTHM6LM7b7QUxLXjBbRAW61kUEfmUZVlXhyaI4ziLiehPRJTuy9cBehVe1rH+0FIfAaxDMmoK/2ul1MtDE8S27Y8y87/mYdDgpiB2sLTURwB31/fu3ZtJiJj5FNM04VthitSdYuXFaheIaNOSxuM+43dFPm+a5scDE8R13ZeJyK8aw5aNFEuXLs38jcFmewpm8MPDw81mk8j3mXnQNM3lgQniOM4/EtE/J7I1MVcKV2lBEC2NEQBBshoSTkROsizr/sko1Jxi2bZ9KzOf0xiy9KeAr6v+/v70N6QNLdi8eXNmfWiJyCcsy7o+KEE2M/OiNmDe8SK09W7wLsBNQziby6KIyI8sy3pLQ4K4rvsiEYnkQyiNwOHWIG4PammMwJNPPlkJ9ZZReUopNa8hQRzHQXwPxPnIheTB51VcHZllhw5VjF6mlMKt2UMyZQ3iOM7NRPTuuEBNej5HHXUU4dHSGIFdu3YRngzLxUqpCZtTtQgyQkS5OVZOY4yPTg3QDJu+VyCttQ6ZQJBNmzYtGBsby6bRTZ1RlWfvJWGJhvUH1iEZlieUUhO8dUwgyNDQ0Nme592WYQCmNC1PnhOb7VfsYGEnK8siIosty9rst3ECQWzbvpqZm47KkyYA4Rwu7cFw2oU37oTgbkiWRUTeZlnWD2sSxHGcnxLR67MMwOS2aTus4L2dgykWwLhGKXXoBu0EDeK67g4RmRMcsvSn1PfQg/chrHlh1ZtxmRCV6hBBSqWSMgzDznjjpzTv6KOPpiOOOCJvzY7U3qzvYlVB2a2UOhTX+xBBbNt+FzPfEgm5FL+kr9oG77wsX72dhMIypVQJvztEEMdxEGswkLe54JAmP6U+SQ/eRzt27KDdu3cHfyG9Kd+slPrxZIL8JxFdkN42Rau5NlYMjtvjjz9O+/fvD/5CSlOKyPsty/r6ZILkbgcLAOj7IMFH8cjISKbjqvtIeJ531cDAwJWTCQLXJ38ZHK7spMR9ENwL0VIfATiQA0HyIOMD7YxfpG9n5qPzAMDkNmpzk8a9jqkVplh5EGa+3TTNsw5pEBHpcV13NA+Nr9VGbdHbuOexOMciPSfyoFKqEiiqokGGhoaWep43lJPGT2lmT08PLVqUiwuUkbs4Lwv0CimYt5qmWXHzXyHI8PDwK8vl8v9GRi8DL4IgIIqWqQjkaf3ht14pVeFG5R/XdV8vItjFyq3oaVb9rs/JCfoEALq6uuYsWbJkV4UgpVLpbMMwcmXmPnk46POQ+gTJ+F30mg0vl8tq2bJlrr8GeafnebkI0DmditTbvbWnV3D3k1V/WPXGgx8uukIQ27YvYGacpOdatF3W1O7P4/SqisLpSqmfVQjiOM4HiOjfc80OosphIRbriDal5XkEMhyjcNouZuZzTdP8rk+Q3LgabTTwtROHPyOUY+0BBw4VeyyfILDihTVv7kUv1v88BPKqPaoIfFIp9U/+Nu8VIvLZ3LOjCoA2PSHKs/aoDoM1SqlrfA3yD0T0L5ogzyMwY8YMgreTvAp2rOC95MCBA3mFAOvQj5imeYOvQVaLyI25RaNGw/O8o7Vz507C7cE8i4i8z7Ks//IJcq6I5CKabdBOxz2RBQsW5M78JA++rwKOgXcopb7v22KdWS6X7wj4Ym6S9fX1VcKz5UnyZJQ4Xb8y8xmmad5ZIcjg4ODJXV1dNYMY5mlw1GprntwC5cykfdqhXSgUTly6dOkDFYJs3LjxrwqFwu/yToZa7cehIRbs2P7NsmBqBe0hIlluZpi2vVAp9UffWDGXPrGColUoFGjhwoWEeOpZFJizY9dqbGwsi82L1CbDMIrFYnHYt8Wax8yZdtsdCaVxL2U5lqFed0wdHb29vXMXLVq0o0KQDRs2zDzqqKMyG1urWXL47/f29lY0SZYErkThUlTLRARM0+xl5gPjHceBIDM1UNMjkCVTlBxEjIo6nLcrpY7By+O9mvyWmVdGzTFP72WBJAhjgHAGWmoicL9S6qTJBLmFmd+lAQuGQJrNUfSao2Ef36SUWj2BIKVS6UrDMD7T8FWd4BACCLyDADxpEexSbdu2jUZHc+vhKVBXicillmVdN1mD5NK7eyDEpkkETQKHD0k/J8F0CjZWeTZADNrXzHy2aZrrJmuQlYZh/DZoJjrdnxHAYSJIcuSRh8JKJAYeHPxhMZ5348MwHcLMy03THJxAEL3VGwbC2mkx5QJRsB2cBIG7UJADp+RagiPg+8SaQBD8x7btTczcHzwrnXIyArACRsQqxB3BCXwnBCfjuPAEcmgJjcCgUmq5/9YE7wSO49xJRKeHzlK/MAUBkAMkaSdRfGKAHPhZS3gERGSdZVln1ySI67pfFpEPh89Wv1EPARBl1qxZlVuKWMi3QqtgCoXplCZGLOPwOqXUpTUJMjQ0dIHnebn2jwX/vLgH4i9uY4G8mgmmXyAJyIJ1StSdr4MHD1a2akEK7E7h/3EK7M5ybLh4KPzalDVIXiPd4hseDxbZGMS+tPp+BMryiYKfxz8gKO6G+w9IgC1aPK30cujHjYdWgo0WYqO3srw4iR1HXvv375+9YsWKfTU1CH7pOM5mIsp0LABsy/qEmEyKySDnJDZ4hZw49Kyl1Xyi5MA05R6l1Cnjx8AUF4KO43yLiM6Lg41JywP3OTB9whMm1AG+RbEjlNVDNmCBm5ONtqfRfpAEeGTxNJ6ZP2Wa5tXTEqRUKn3IMIyvJG1wN1MfDIDZs2dXiBF1kYxpBkiStTDI2JLG2c34qWUQrPft21eZgmUp6q3nea8dGBj4RSMN8lIi+nUQkJKeBothnxhx1RXfnjiVTvs3KL40QAxMNZsR4AGy4DPlsmf//v3HrFixYoIzsJpemh3H2UZEFXv4NArm0fhmbLbz67UdC2iQBE/a7nD7B5nAJ6zWmG4sQJNAo4AsKZUfKqXeNrnuNQli2/ZtMNhKW0OxPemfYrej7tAimHKlZVD42LQy5HXaMPHHiYh83LKszwciiOu6l4vIhMVKOwZc1DJa9a0YtD749vTn5EHfaVc6rLn8jYlGi/A465S2qaiIvMqyrClxOmtqkDTFLIQpB74ZW/mtGHTgYJcHRMET9+Fd0Dr46fwDT6zBom5MhC1zcnpMP6FhMRVN+FnKBPur8e2oGynGtu0HmfnFzYLUqvexZQv/ufh2TJpgYOAb1N8Sbdc6BZrUP99p1forCtb44gBRkuocgpmvN03zE7XaVpcgpVJpjWEYa6MA0up3cLgHcoQ5y2h1nerlD02CKRjm5jidjvssBV8UmDphxw64JNl3F740cGkrgWYsJyul7gtFkEcfffQF3d3dDxNRZ2y264w4XEoCOdIqsLIFWfAJ8vgP/j/evGSy1sE0CYPff/DlAGKk4UtifF+hvTt27EjMtjAzP2Ca5on1xtO0wfhs2/4OYrUlYTBijQFiJGnqkARc0loHrEugTRIglymlro1EENd1ExEWAd+UMKJLwkI8AR2amSpgjQb3Q50Uz/NOGBgYeCQSQUSkMDQ09LCIvKBTjcChH4zo4jzU6lRbdLlTEcDUcmRkpFPQrFdKvWm6whvGO3Zdd62IrOlEC9Lse6oTeKW1TGwBDw8Pt736fiTbpggyPDz84nK5/GC7a4+1BoJpaskHAtjZ2rwZNy3aJrsNw1heLBanneM11CCoruM4txPRtKoozmbBiA6PlnwhgO1weH1sh4jINyzLuqhRWYEIUiqVzjEM49ZGmcXxd6054kAxvXngrOTJJ1sfiYOZX26aZkOr9UAEqWqR+4mo7n5xHF2CPf1FizJ9mTEOmDKfR6tJIiLftCzrgiBABiaI67oXicjXgmQaNU1/f7/eyo0KXsbea3Eo6ron55NhDEyQUqnUaxjG74nokFOtOPsEC3J9CBgnounOC5YECAvXgotptyilAl8pD0yQ6jTrk0R0TdzQ60V53IhmI79WTLVE5HWWZd0VFKFQBBkeHp5fLpehRWILHo51x4IFC/RBYNAey1m67du3VxzixSHM/D3TNM8Jk1cogiBj27avY+aPhylkurR5ikMeF2Z5ygfGjdj6jcMCWETOtCzrJ2HwC02QUql0AjP/npmbjomsT8rDdFV+00KDQJM0I8y8zjTN0NfIQxOkqkW+xMwfaabCeHf+/PmVewxaNALTIYAF+5YtW5q9S3OaUurnYZGORJChoaHjyuXyvcxshS3QT4+roJheadEIBEGgGTewIvIFy7IuCVLO5DSRCIJMHMd5HxHdFKVQvAMLXdyA06IRCIIADBqhRSKsRR7u6el5dX9/f6TLJ5EJUp1q3crMoXYF8B7udeBQUItGIAwCES9Zna+UgjvdSNIUQUql0kpmvoeZQ3lOgBeSo48+OlKF9Uv5RQB3R6BFQniM+ZZS6vxmEGuKINWp1mVE9LkwlcC5R9TYGGHK0Wmzh8BTTz0V1DvKzq6urpOXLFlS97ZgEHSaJkiVJPcQ0clBCtTTqyAo6TT1EAi65cvMl5im+YVmkYyFILZtn8nMdwSpjDYrCYKSTlMPAdhmYZrVQH6ulDqtUaIgf4+FICjIdd3r4N80SKF+FKMgaXUajcBkBFzXnQ6UA8x8mmma98aBXGwEqU611hPRG4JUDPc+0ubTKUi7dJrWI/DYY4/VPTSMa2rltyJWggwNDS33PA+2LkuCwFQsFgnh0LRoBMIgUG+hLiLftSwrVj9usY9Ox3HeTkTfC9JgeAtcsiQQl4Jkp9PkAAFs8cKXVg0Xrpt6enpe19/fb8cJQ+wEqU61Pk1EVwWpqDZYDIKSTuMjAMveOmHfmjoQrIdwSwiCwsK4LUUIg7lz5+pRoBGYFgE4c6gV6k1EvmxZ1kdbAV/LCFIqlRYZhoH1yAlBKo6TdZywa9EI1EKg3rqDmX/V19d32rx581oS+61lBEEjS6XSGVWSBOp1bf4eCKbcJWrgwCGSGXtQEFtKkOpU6yJmDuwNRVv5Bu26fKRDtK5t2xBTtqasVkpFtigPgmDLCVLVJFcahvGZIBVCGn0NNyhS2U6HnSqcedQSXPs2TXNK0M24EWkLQVBp13W/JiINXT36DdRrkri7On35TXNifq1SCkayLZe2EaRKknUi8uagrdJ2W0GRylY6nHVs2rSpnub4hmmagb9om0WmrQRBZR3H2UBELwlacU2SoEhlIx3iOMJhXB35vlLqHe1sadsJUtUkW0RkQdCGapIERSrd6RosyO9QSr2x3S3sCEGqmkTCNFaTJAxa6UvbwCnD3UqpUzvRqo4RpEoSTDQDX05Pe4TbTnRwGspE1FsQpI7cpJRa3al2dJQgVZKECqsATyjY4dIBPTs1ZOIrF3fM4RCulvkIShGRSy3Lui6+EsPn1HGCVNck3xaRdwatPmKFgyTaG3xQxJKXDotxaI5pvLe/Ryl1c6drngiCVDXJF4no78MAotclYdBKTlq479m1axc0RM1KeZ539sDAwLok1DgxBKlqksDXdn3woEWgTaBVtCQbAZyMgxj1plREtL1QKJy7dOnSu5PSkkQRBKDYtn01M18eBiCsR0AS7akxDGrtTQtvJCAH1h115FEieq9S6jftrdn0pSWOINXp1seIaC0RHRYGrDlz5hB2urQkBwGcioMYe/furVspEVnX09PzscWLFzvJqfnzNUkkQaqa5FXMDId0rw4DGm4ogiTaa3wY1FqTFlMpmKo38Kd7jVJqTWtq0HyuiSUImrZhw4buOXPmrA3qTmg8HLilCKLotUnzgyRsDlhrYErVIDIUYj1f3Izf3LD1ipI+0QTxG1R1BAFtsixMI+EUAiTRNxXDoBY9LaZTOPADMertUFVzv6tcLl+8bNkyhPNLtKSCINUpV79hGNAmfx0WUfgBBlH0Ij4scsHSY+Hta4xpFuGVzHB//Omnn7541apVY8Fy72yq1BDEh8m27Q8zMzymzAkLHYL2gCj6FD4scrXTQ0v4GiOAx/XtInKFZVmBb5fGU8vmckkdQdDckZGR4w8ePIiF3XvCNh/TLhClr69Pe3YMC9649L7GqOGfakquInIjM1+vlNrYRJEdeTWVBBm3NgFBcLMskOeUyQj7RNE7XsHGHrQETNLxBCTGL6vEgEvaVEqqCQLEN2/ePGd0dHQNM18ctQdAEGgUPNoV6lQUYTflEwOh0BqJiGytEgPmQ6mW1BNknDZ5XVWb4DOSYG3iaxW9PUwVkxAQYxrTkFo4/5thGNcXi8XhSJ2QsJcyQxAfV9d1L/Y872PMHPjG4uQ+MQyjok2w6wXtkietgl0oX1tMY2k7ZRgjDjkR3WCa5v8kbIw3VZ3MEQRouK57LBFdKCIXEtHSZhACWXyigCxZ1CwgAvzdYiqFJ8g0yseUmb/ned5/WJYFL5qZk0wSxO+lhx9+eM6MGTNWV4kS6pCxXk/39vZWCIMHP6dRQAAQ4tlnn60QIkJoZTT7FuxOWZZ1VxoxCFrnTBPEB+Ghhx7qmzVr1mrP86BRVgQFp1E6X7vgIBLBgLCGwTZy0gTnFdh1Gk+KqHUUkW8y841Kqfui5pGm93JBkHFE6ent7b3QMAzccX5xKzoKBPHJgs92EwfaAGQY/0TUEOPh2S0itxqGcaNpmr9uBW5JzTNXBBnfCa7rniUiZxERnmNa3UE+caB1/Ae/m+5nTIXw7Y/P6X7G+YRPiAY2UGGbuR6m6IVCYV2xWHwi7MtZSJ9bgvidVz1HOYuZfbIkb47UxpHGzA+AFJ7nrRsYGGgqxngbq92yonJPkPHI2rZtgSjQLMx8SstQT17Gg9imBTHysrYI2gWaIHWQcl33ZSJyIhG9nIhe0ex2cdAOaUc6EdnHzAiTfC8z3xdXyOR21L3dZWiCBETctm3sfr3KMIwTRQSEiWXbOGDxTSdDJCYR+aWI3I1nYGBgtOlMc5CBJkjETn7kkUfm9/b2QsNA0yxn5hcQEZ4kyKCIYNr0KDPff+DAgbuXL19e/1J4Emqc0DpogsTcMa7rVojied540uB3cUcp3U5Eg3hABsMw4BVk0DRN/E5LTAhogsQEZKNsRKRny5Yts8fGxmZ7nje7UCj04VNEKo9hGH34RD7MvNfzPKwT9uIxDGNvuVzeh8/u7u69CxcuxO8PNCpT/715BDRBmsdQ55BhBP4fPW32bt00iqMAAAAASUVORK5CYII=";
+ /**
+ * avatar 澶村儚
+ * @description 鏈粍浠朵竴鑸敤浜庡睍绀哄ご鍍忕殑鍦版柟锛屽涓汉涓績锛屾垨鑰呰瘎璁哄垪琛ㄩ〉鐨勭敤鎴峰ご鍍忓睍绀虹瓑鍦烘墍銆�
+ * @tutorial https://www.uviewui.com/components/avatar.html
+ * @property {String} bg-color 鑳屾櫙棰滆壊锛屼竴鑸樉绀烘枃瀛楁椂鐢紙榛樿#ffffff锛�
+ * @property {String} src 澶村儚璺緞锛屽鍔犺浇澶辫触锛屽皢浼氭樉绀洪粯璁ゅご鍍�
+ * @property {String Number} size 澶村儚灏哄锛屽彲浠ヤ负鎸囧畾瀛楃涓�(large, default, mini)锛屾垨鑰呮暟鍊硷紝鍗曚綅rpx锛堥粯璁efault锛�
+ * @property {String} mode 鏄剧ず绫诲瀷锛岃涓婃柟璇存槑锛堥粯璁ircle锛�
+ * @property {String} sex-icon 鎬у埆鍥炬爣锛宮an-鐢凤紝woman-濂筹紙榛樿man锛�
+ * @property {String} level-icon 绛夌骇鍥炬爣锛堥粯璁evel锛�
+ * @property {String} sex-bg-color 鎬у埆鍥炬爣鑳屾櫙棰滆壊
+ * @property {String} level-bg-color 绛夌骇鍥炬爣鑳屾櫙棰滆壊
+ * @property {String} show-sex 鏄惁鏄剧ず鎬у埆鍥炬爣锛堥粯璁alse锛�
+ * @property {String} show-level 鏄惁鏄剧ず绛夌骇鍥炬爣锛堥粯璁alse锛�
+ * @property {String} img-mode 澶村儚鍥剧墖鐨勮鍓被鍨嬶紝涓巙ni鐨刬mage缁勪欢鐨刴ode鍙傛暟涓�鑷达紝濡傛晥鏋滆揪涓嶅埌闇�姹傦紝鍙皾璇曚紶widthFix鍊硷紙榛樿aspectFill锛�
+ * @property {String} index 鐢ㄦ埛浼犻�掔殑鏍囪瘑绗﹀�硷紝濡傛灉鏄垪琛ㄥ惊鐜紝鍙┛v-for鐨刬ndex鍊�
+ * @event {Function} click 澶村儚琚偣鍑�
+ * @example <u-avatar :src="src"></u-avatar>
+ */
+ export default {
+ name: 'u-avatar',
+ props: {
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: 'transparent'
+ },
+ // 澶村儚璺緞
+ src: {
+ type: String,
+ default: ''
+ },
+ // 灏哄锛宭arge-澶э紝default-涓瓑锛宮ini-灏忥紝濡傛灉涓烘暟鍊硷紝鍒欏崟浣嶄负rpx
+ // 瀹藉害绛変簬楂樺害
+ size: {
+ type: [String, Number],
+ default: 'default'
+ },
+ // 澶村儚妯″瀷锛宻quare-甯﹀渾瑙掓柟褰紝circle-鍦嗗舰
+ mode: {
+ type: String,
+ default: 'circle'
+ },
+ // 鏂囧瓧鍐呭
+ text: {
+ type: String,
+ default: ''
+ },
+ // 鍥剧墖鐨勮鍓ā鍨�
+ imgMode: {
+ type: String,
+ default: 'aspectFill'
+ },
+ // 鏍囪瘑绗�
+ index: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鍙充笂瑙掓�у埆瑙掓爣锛宮an-鐢凤紝woman-濂�
+ sexIcon: {
+ type: String,
+ default: 'man'
+ },
+ // 鍙充笅瑙掔殑绛夌骇鍥炬爣
+ levelIcon: {
+ type: String,
+ default: 'level'
+ },
+ // 鍙充笅瑙掔瓑绾у浘鏍囪儗鏅鑹�
+ levelBgColor: {
+ type: String,
+ default: ''
+ },
+ // 鍙充笂瑙掓�у埆鍥炬爣鐨勮儗鏅鑹�
+ sexBgColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず鎬у埆鍥炬爣
+ showSex: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず绛夌骇鍥炬爣
+ showLevel: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ error: false,
+ // 澶村儚鐨勫湴鍧�锛屽洜涓哄鏋滃姞杞介敊璇紝闇�瑕佽祴鍊间负榛樿鍥剧墖锛宲rops鍊兼棤娉曚慨鏀癸紝鎵�浠ラ渶瑕佷竴涓腑闂村��
+ avatar: this.src ? this.src : base64Avatar,
+ }
+ },
+ watch: {
+ src(n) {
+ // 鐢ㄦ埛鍙兘浼氬湪澶村儚鍔犺浇澶辫触鏃讹紝鍐嶆淇敼澶村儚鍊硷紝鎵�浠ラ渶瑕侀噸鏂拌祴鍊�
+ if(!n) {
+ // 濡傛灉浼犲叆null鎴栬��''锛屾垨鑰卽ndefined锛屾樉绀洪粯璁ゅご鍍�
+ this.error = true;
+ } else {
+ this.avatar = n;
+ this.error = false;
+ }
+ }
+ },
+ computed: {
+ wrapStyle() {
+ let style = {};
+ style.height = this.size == 'large' ? '120rpx' : this.size == 'default' ?
+ '90rpx' : this.size == 'mini' ? '70rpx' : this.size + 'rpx';
+ style.width = style.height;
+ style.flex = `0 0 ${style.height}`;
+ style.backgroundColor = this.bgColor;
+ style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
+ if(this.text) style.padding = `0 6rpx`;
+ return style;
+ },
+ imgStyle() {
+ let style = {};
+ style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
+ return style;
+ },
+ // 鍙栧瓧绗︿覆鐨勭涓�涓瓧绗�
+ uText() {
+ return String(this.text)[0];
+ },
+ // 鎬у埆鍥炬爣鐨勮嚜瀹氫箟鏍峰紡
+ uSexStyle() {
+ let style = {};
+ if(this.sexBgColor) style.backgroundColor = this.sexBgColor;
+ return style;
+ },
+ // 绛夌骇鍥炬爣鐨勮嚜瀹氫箟鏍峰紡
+ uLevelStyle() {
+ let style = {};
+ if(this.levelBgColor) style.backgroundColor = this.levelBgColor;
+ return style;
+ }
+ },
+ methods: {
+ // 鍥剧墖鍔犺浇閿欒鏃讹紝鏄剧ず榛樿澶村儚
+ loadError() {
+ this.error = true;
+ this.avatar = base64Avatar;
+ },
+ click() {
+ this.$emit('click', this.index);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-avatar {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 28rpx;
+ color: $u-content-color;
+ border-radius: 10px;
+ position: relative;
+
+ &__img {
+ width: 100%;
+ height: 100%;
+ }
+
+ &__sex {
+ position: absolute;
+ width: 32rpx;
+ color: #ffffff;
+ height: 32rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 100rpx;
+ top: 5%;
+ z-index: 1;
+ right: -7%;
+ border: 1px #ffffff solid;
+
+ &--man {
+ background-color: $u-type-primary;
+ }
+
+ &--woman {
+ background-color: $u-type-error;
+ }
+
+ &--none {
+ background-color: $u-type-warning;
+ }
+ }
+
+ &__level {
+ position: absolute;
+ width: 32rpx;
+ color: #ffffff;
+ height: 32rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 100rpx;
+ bottom: 5%;
+ z-index: 1;
+ right: -7%;
+ border: 1px #ffffff solid;
+ background-color: $u-type-warning;
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-back-top/u-back-top.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-back-top/u-back-top.vue"
new file mode 100644
index 0000000..537179e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-back-top/u-back-top.vue"
@@ -0,0 +1,153 @@
+<template>
+ <view @tap="backToTop" class="u-back-top" :class="['u-back-top--mode--' + mode]" :style="[{
+ bottom: bottom + 'rpx',
+ right: right + 'rpx',
+ borderRadius: mode == 'circle' ? '10000rpx' : '8rpx',
+ zIndex: uZIndex,
+ opacity: opacity
+ }, customStyle]">
+ <view class="u-back-top__content" v-if="!$slots.default">
+ <u-icon @click="backToTop" :name="icon" :custom-style="iconStyle"></u-icon>
+ <view class="u-back-top__content__tips">
+ {{tips}}
+ </view>
+ </view>
+ <slot v-else />
+ </view>
+</template>
+
+<script>
+ export default {
+ name: 'u-back-top',
+ props: {
+ // 杩斿洖椤堕儴鐨勫舰鐘讹紝circle-鍦嗗舰锛宻quare-鏂瑰舰
+ mode: {
+ type: String,
+ default: 'circle'
+ },
+ // 鑷畾涔夊浘鏍�
+ icon: {
+ type: String,
+ default: 'arrow-upward'
+ },
+ // 鎻愮ず鏂囧瓧
+ tips: {
+ type: String,
+ default: ''
+ },
+ // 杩斿洖椤堕儴婊氬姩鏃堕棿
+ duration: {
+ type: [Number, String],
+ default: 100
+ },
+ // 婊氬姩璺濈
+ scrollTop: {
+ type: [Number, String],
+ default: 0
+ },
+ // 璺濈椤堕儴澶氬皯璺濈鏄剧ず锛屽崟浣峳px
+ top: {
+ type: [Number, String],
+ default: 400
+ },
+ // 杩斿洖椤堕儴鎸夐挳鍒板簳閮ㄧ殑璺濈锛屽崟浣峳px
+ bottom: {
+ type: [Number, String],
+ default: 200
+ },
+ // 杩斿洖椤堕儴鎸夐挳鍒板彸杈圭殑璺濈锛屽崟浣峳px
+ right: {
+ type: [Number, String],
+ default: 40
+ },
+ // 灞傜骇
+ zIndex: {
+ type: [Number, String],
+ default: '9'
+ },
+ // 鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ iconStyle: {
+ type: Object,
+ default() {
+ return {
+ color: '#909399',
+ fontSize: '38rpx'
+ }
+ }
+ },
+ // 鏁翠釜缁勪欢鐨勬牱寮�
+ customStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ watch: {
+ showBackTop(nVal, oVal) {
+ // 褰撶粍浠剁殑鏄剧ず涓庨殣钘忕姸鎬佸彂鐢熻烦鍙樻椂锛屼慨鏀圭粍浠剁殑灞傜骇鍜屼笉閫忔槑搴�
+ // 璁╃粍浠舵湁鏄剧ず鍜屾秷澶辩殑鍔ㄧ敾鏁堟灉锛屽鏋滅敤v-if鎺у埗缁勪欢鐘舵�侊紝灏嗘棤璁剧疆鍔ㄧ敾鏁堟灉
+ if(nVal) {
+ this.uZIndex = this.zIndex;
+ this.opacity = 1;
+ } else {
+ this.uZIndex = -1;
+ this.opacity = 0;
+ }
+ }
+ },
+ computed: {
+ showBackTop() {
+ // 鐢变簬scrollTop涓洪〉闈㈢殑婊氬姩璺濈锛岄粯璁や负px鍗曚綅锛岃繖閲屽皢鐢ㄤ簬浼犲叆鐨則op(rpx)鍊�
+ // 杞负px鐢ㄤ簬姣旇緝锛屽鏋滄粴鍔ㄦ潯鍒伴《鐨勮窛绂诲ぇ浜庤瀹氱殑璺濈锛屽氨鏄剧ず杩斿洖椤堕儴鐨勬寜閽�
+ return this.scrollTop > uni.upx2px(this.top);
+ },
+ },
+ data() {
+ return {
+ // 涓嶉�忔槑搴︼紝涓轰簡璁╃粍浠舵湁涓�涓樉绀哄拰闅愯棌鐨勮繃娓″姩鐢�
+ opacity: 0,
+ // 缁勪欢鐨剒-index鍊硷紝闅愯棌鏃惰缃负-1锛屽氨浼氱湅涓嶅埌
+ uZIndex: -1
+ }
+ },
+ methods: {
+ backToTop() {
+ uni.pageScrollTo({
+ scrollTop: 0,
+ duration: this.duration
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-back-top {
+ width: 80rpx;
+ height: 80rpx;
+ position: fixed;
+ z-index: 9;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ background-color: #E1E1E1;
+ color: $u-content-color;
+ align-items: center;
+ transition: opacity 0.4s;
+
+ &__content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ &__tips {
+ font-size: 24rpx;
+ transform: scale(0.8);
+ line-height: 1;
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-badge/u-badge.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-badge/u-badge.vue"
new file mode 100644
index 0000000..9ce8e71
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-badge/u-badge.vue"
@@ -0,0 +1,213 @@
+<template>
+ <view v-if="show" class="u-badge" :class="[
+ isDot ? 'u-badge-dot' : '',
+ size == 'mini' ? 'u-badge-mini' : '',
+ type ? 'u-badge--bg--' + type : ''
+ ]" :style="[{
+ top: offset[0] + 'rpx',
+ right: offset[1] + 'rpx',
+ fontSize: fontSize + 'rpx',
+ position: absolute ? 'absolute' : 'static',
+ color: color,
+ backgroundColor: bgColor
+ }, boxStyle]"
+ >
+ {{showText}}
+ </view>
+</template>
+
+<script>
+ /**
+ * badge 瑙掓爣
+ * @description 鏈粍浠朵竴鑸敤浜庡睍绀哄ご鍍忕殑鍦版柟锛屽涓汉涓績锛屾垨鑰呰瘎璁哄垪琛ㄩ〉鐨勭敤鎴峰ご鍍忓睍绀虹瓑鍦烘墍銆�
+ * @tutorial https://www.uviewui.com/components/badge.html
+ * @property {String Number} count 灞曠ず鐨勬暟瀛楋紝澶т簬 overflowCount 鏃舵樉绀轰负 ${overflowCount}+锛屼负0涓攕how-zero涓篺alse鏃堕殣钘�
+ * @property {Boolean} is-dot 涓嶅睍绀烘暟瀛楋紝鍙湁涓�涓皬鐐癸紙榛樿false锛�
+ * @property {Boolean} absolute 缁勪欢鏄惁缁濆瀹氫綅锛屼负true鏃讹紝offset鍙傛暟鎵嶆湁鏁堬紙榛樿true锛�
+ * @property {String Number} overflow-count 灞曠ず灏侀《鐨勬暟瀛楀�硷紙榛樿99锛�
+ * @property {String} type 浣跨敤棰勮鐨勮儗鏅鑹诧紙榛樿error锛�
+ * @property {Boolean} show-zero 褰撴暟鍊间负 0 鏃讹紝鏄惁灞曠ず Badge锛堥粯璁alse锛�
+ * @property {String} size Badge鐨勫昂瀵革紝璁句负mini浼氬緱鍒板皬涓�鍙风殑Badge锛堥粯璁efault锛�
+ * @property {Array} offset 璁剧疆badge鐨勪綅缃亸绉伙紝鏍煎紡涓� [x, y]锛屼篃鍗宠缃殑涓簍op鍜宺ight鐨勫�硷紝鍗曚綅rpx銆俛bsolute涓簍rue鏃舵湁鏁堬紙榛樿[20, 20]锛�
+ * @property {String} color 瀛椾綋棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {String} bgColor 鑳屾櫙棰滆壊锛屼紭鍏堢骇姣攖ype楂橈紝濡傝缃紝type鍙傛暟浼氬け鏁�
+ * @property {Boolean} is-center 缁勪欢涓績鐐规槸鍚﹀拰鐖剁粍浠跺彸涓婅閲嶅悎锛屼紭鍏堢骇姣攐ffset楂橈紝濡傝缃紝offset鍙傛暟浼氬け鏁堬紙榛樿false锛�
+ * @example <u-badge type="error" count="7"></u-badge>
+ */
+ export default {
+ name: 'u-badge',
+ props: {
+ // primary,warning,success,error,info
+ type: {
+ type: String,
+ default: 'error'
+ },
+ // default, mini
+ size: {
+ type: String,
+ default: 'default'
+ },
+ //鏄惁鏄渾鐐�
+ isDot: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄剧ず鐨勬暟鍊煎唴瀹�
+ count: {
+ type: [Number, String],
+ },
+ // 灞曠ず灏侀《鐨勬暟瀛楀��
+ overflowCount: {
+ type: Number,
+ default: 99
+ },
+ // 褰撴暟鍊间负 0 鏃讹紝鏄惁灞曠ず Badge
+ showZero: {
+ type: Boolean,
+ default: false
+ },
+ // 浣嶇疆鍋忕Щ
+ offset: {
+ type: Array,
+ default: () => {
+ return [20, 20]
+ }
+ },
+ // 鏄惁寮�鍚粷瀵瑰畾浣嶏紝寮�鍚簡offset鎵嶄細璧蜂綔鐢�
+ absolute: {
+ type: Boolean,
+ default: true
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: [String, Number],
+ default: '24'
+ },
+ // 瀛椾綋婕旂ず
+ color: {
+ type: String,
+ default: '#ffffff'
+ },
+ // badge鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁璁゜adge缁勪欢鐨勪腑蹇冪偣鍜岀埗缁勪欢鍙充笂瑙掗噸鍚堬紝閰嶇疆鐨勮瘽锛宱ffset灏嗕細澶辨晥
+ isCenter: {
+ type: Boolean,
+ default: false
+ }
+ },
+ computed: {
+ // 鏄惁灏哹adge涓績涓庣埗缁勪欢鍙充笂瑙掗噸鍚�
+ boxStyle() {
+ let style = {};
+ if(this.isCenter) {
+ style.top = 0;
+ style.right = 0;
+ // Y杞�-50%锛屾剰鍛崇潃badge鍚戜笂绉诲姩浜哹adge鑷韩楂樺害涓�鍗婏紝X杞�50%锛屾剰鍛崇潃鍚戝彸绉诲姩浜嗚嚜韬搴︿竴鍗�
+ style.transform = "translateY(-50%) translateX(50%)";
+ } else {
+ style.top = this.offset[0] + 'rpx';
+ style.right = this.offset[1] + 'rpx';
+ style.transform = "translateY(0) translateX(0)";
+ }
+ // 濡傛灉灏哄涓簃ini锛屽悗鎺ヤ笂scal()
+ if(this.size == 'mini') {
+ style.transform = style.transform + " scale(0.8)";
+ }
+ return style;
+ },
+ // isDot绫诲瀷鏃讹紝涓嶆樉绀烘枃瀛�
+ showText() {
+ if(this.isDot) return '';
+ else {
+ if(this.count > this.overflowCount) return `${this.overflowCount}+`;
+ else return this.count;
+ }
+ },
+ // 鏄惁鏄剧ず缁勪欢
+ show() {
+ // 濡傛灉count鐨勫�间负0锛屽苟涓攕howZero璁剧疆涓篺alse锛屼笉鏄剧ず缁勪欢
+ if(this.count == 0 && this.showZero == false) return false;
+ else return true;
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-badge {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ line-height: 24rpx;
+ padding: 4rpx 8rpx;
+ border-radius: 100rpx;
+
+ &--bg--primary {
+ background-color: $u-type-primary;
+ }
+
+ &--bg--error {
+ background-color: $u-type-error;
+ }
+
+ &--bg--success {
+ background-color: $u-type-success;
+ }
+
+ &--bg--info {
+ background-color: $u-type-info;
+ }
+
+ &--bg--warning {
+ background-color: $u-type-warning;
+ }
+ }
+
+ .u-badge-dot {
+ height: 16rpx;
+ width: 16rpx;
+ border-radius: 100rpx;
+ line-height: 1;
+ }
+
+ .u-badge-mini {
+ transform: scale(0.8);
+ transform-origin: center center;
+ }
+
+ // .u-primary {
+ // background: $u-type-primary;
+ // color: #fff;
+ // }
+
+ // .u-error {
+ // background: $u-type-error;
+ // color: #fff;
+ // }
+
+ // .u-warning {
+ // background: $u-type-warning;
+ // color: #fff;
+ // }
+
+ // .u-success {
+ // background: $u-type-success;
+ // color: #fff;
+ // }
+
+ // .u-black {
+ // background: #585858;
+ // color: #fff;
+ // }
+
+ .u-info {
+ background: $u-type-info;
+ color: #fff;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-button/u-button.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-button/u-button.vue"
new file mode 100644
index 0000000..e7a6ae1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-button/u-button.vue"
@@ -0,0 +1,578 @@
+<template>
+ <button
+ id="u-wave-btn"
+ class="u-btn u-line-1 u-fix-ios-appearance"
+ :class="[
+ 'u-size-' + size,
+ plain ? 'u-btn--' + type + '--plain' : '',
+ loading ? 'u-loading' : '',
+ shape == 'circle' ? 'u-round-circle' : '',
+ hairLine ? showHairLineBorder : 'u-btn--bold-border',
+ 'u-btn--' + type,
+ disabled ? `u-btn--${type}--disabled` : '',
+ ]"
+ :disabled="disabled"
+ :form-type="formType"
+ :open-type="openType"
+ :app-parameter="appParameter"
+ :hover-stop-propagation="hoverStopPropagation"
+ :send-message-title="sendMessageTitle"
+ send-message-path="sendMessagePath"
+ :lang="lang"
+ :data-name="dataName"
+ :session-from="sessionFrom"
+ :send-message-img="sendMessageImg"
+ :show-message-card="showMessageCard"
+ @getphonenumber="getphonenumber"
+ @getuserinfo="getuserinfo"
+ @error="error"
+ @opensetting="opensetting"
+ @launchapp="launchapp"
+ :style="[customStyle, {
+ overflow: ripple ? 'hidden' : 'visible'
+ }]"
+ @tap.stop="click($event)"
+ :hover-class="getHoverClass"
+ :loading="loading"
+ >
+ <slot></slot>
+ <view
+ v-if="ripple"
+ class="u-wave-ripple"
+ :class="[waveActive ? 'u-wave-active' : '']"
+ :style="{
+ top: rippleTop + 'px',
+ left: rippleLeft + 'px',
+ width: fields.targetWidth + 'px',
+ height: fields.targetWidth + 'px',
+ 'background-color': rippleBgColor || 'rgba(0, 0, 0, 0.15)'
+ }"
+ ></view>
+ </button>
+</template>
+
+<script>
+/**
+ * button 鎸夐挳
+ * @description Button 鎸夐挳
+ * @tutorial https://www.uviewui.com/components/button.html
+ * @property {String} size 鎸夐挳鐨勫ぇ灏�
+ * @property {Boolean} ripple 鏄惁寮�鍚偣鍑绘按娉㈢汗鏁堟灉
+ * @property {String} ripple-bg-color 姘存尝绾圭殑鑳屾櫙鑹诧紝ripple涓簍rue鏃舵湁鏁�
+ * @property {String} type 鎸夐挳鐨勬牱寮忕被鍨�
+ * @property {Boolean} plain 鎸夐挳鏄惁闀傜┖锛岃儗鏅壊閫忔槑
+ * @property {Boolean} disabled 鏄惁绂佺敤
+ * @property {Boolean} hair-line 鏄惁鏄剧ず鎸夐挳鐨勭粏杈规(榛樿true)
+ * @property {Boolean} shape 鎸夐挳澶栬褰㈢姸锛岃鏂囨。璇存槑
+ * @property {Boolean} loading 鎸夐挳鍚嶇О鍓嶆槸鍚﹀甫 loading 鍥炬爣(App-nvue 骞冲彴锛屽湪 ios 涓婁负闆姳锛孉ndroid涓婁负鍦嗗湀)
+ * @property {String} form-type 鐢ㄤ簬 <form> 缁勪欢锛岀偣鍑诲垎鍒細瑙﹀彂 <form> 缁勪欢鐨� submit/reset 浜嬩欢
+ * @property {String} open-type 寮�鏀捐兘鍔�
+ * @property {String} data-name 棰濆浼犲弬鍙傛暟锛岀敤浜庡皬绋嬪簭鐨刣ata-xxx灞炴�э紝閫氳繃target.dataset.name鑾峰彇
+ * @property {String} hover-class 鎸囧畾鎸夐挳鎸変笅鍘荤殑鏍峰紡绫汇�傚綋 hover-class="none" 鏃讹紝娌℃湁鐐瑰嚮鎬佹晥鏋�(App-nvue 骞冲彴鏆備笉鏀寔)
+ * @property {Number} hover-start-time 鎸変綇鍚庡涔呭嚭鐜扮偣鍑绘�侊紝鍗曚綅姣
+ * @property {Number} hover-stay-time 鎵嬫寚鏉惧紑鍚庣偣鍑绘�佷繚鐣欐椂闂达紝鍗曚綅姣
+ * @property {Object} custom-style 瀵规寜閽殑鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡锛岃鏂囨。璇存槑
+ * @event {Function} click 鎸夐挳鐐瑰嚮
+ * @event {Function} getphonenumber open-type="getPhoneNumber"鏃舵湁鏁�
+ * @event {Function} getuserinfo 鐢ㄦ埛鐐瑰嚮璇ユ寜閽椂锛屼細杩斿洖鑾峰彇鍒扮殑鐢ㄦ埛淇℃伅锛屼粠杩斿洖鍙傛暟鐨刣etail涓幏鍙栧埌鐨勫�煎悓uni.getUserInfo
+ * @event {Function} error 褰撲娇鐢ㄥ紑鏀捐兘鍔涙椂锛屽彂鐢熼敊璇殑鍥炶皟
+ * @event {Function} opensetting 鍦ㄦ墦寮�鎺堟潈璁剧疆椤靛苟鍏抽棴鍚庡洖璋�
+ * @event {Function} launchapp 鎵撳紑 APP 鎴愬姛鐨勫洖璋�
+ * @example <u-button>鏈堣惤</u-button>
+ */
+export default {
+ name: 'u-button',
+ props: {
+ // 鏄惁缁嗚竟妗�
+ hairLine: {
+ type: Boolean,
+ default: true
+ },
+ // 鎸夐挳鐨勯缃牱寮忥紝default锛宲rimary锛宔rror锛寃arning锛宻uccess
+ type: {
+ type: String,
+ default: 'default'
+ },
+ // 鎸夐挳灏哄锛宒efault锛宮edium锛宮ini
+ size: {
+ type: String,
+ default: 'default'
+ },
+ // 鎸夐挳褰㈢姸锛宑ircle锛堜袱杈逛负鍗婂渾锛夛紝square锛堝甫鍦嗚锛�
+ shape: {
+ type: String,
+ default: 'square'
+ },
+ // 鎸夐挳鏄惁闀傜┖
+ plain: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁绂佹鐘舵��
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍔犺浇涓�
+ loading: {
+ type: Boolean,
+ default: false
+ },
+ // 寮�鏀捐兘鍔涳紝鍏蜂綋璇风湅uniapp绋冲畾鍏充簬button缁勪欢閮ㄥ垎璇存槑
+ // https://uniapp.dcloud.io/component/button
+ openType: {
+ type: String,
+ default: ''
+ },
+ // 鐢ㄤ簬 <form> 缁勪欢锛岀偣鍑诲垎鍒細瑙﹀彂 <form> 缁勪欢鐨� submit/reset 浜嬩欢
+ // 鍙栧�间负submit锛堟彁浜よ〃鍗曪級锛宺eset锛堥噸缃〃鍗曪級
+ formType: {
+ type: String,
+ default: ''
+ },
+ // 鎵撳紑 APP 鏃讹紝鍚� APP 浼犻�掔殑鍙傛暟锛宱pen-type=launchApp鏃舵湁鏁�
+ // 鍙井淇″皬绋嬪簭銆丵Q灏忕▼搴忔湁鏁�
+ appParameter: {
+ type: String,
+ default: ''
+ },
+ // 鎸囧畾鏄惁闃绘鏈妭鐐圭殑绁栧厛鑺傜偣鍑虹幇鐐瑰嚮鎬侊紝寰俊灏忕▼搴忔湁鏁�
+ hoverStopPropagation: {
+ type: Boolean,
+ default: false
+ },
+ // 鎸囧畾杩斿洖鐢ㄦ埛淇℃伅鐨勮瑷�锛寊h_CN 绠�浣撲腑鏂囷紝zh_TW 绻佷綋涓枃锛宔n 鑻辨枃銆傚彧寰俊灏忕▼搴忔湁鏁�
+ lang: {
+ type: String,
+ default: 'en'
+ },
+ // 浼氳瘽鏉ユ簮锛宱pen-type="contact"鏃舵湁鏁堛�傚彧寰俊灏忕▼搴忔湁鏁�
+ sessionFrom: {
+ type: String,
+ default: ''
+ },
+ // 浼氳瘽鍐呮秷鎭崱鐗囨爣棰橈紝open-type="contact"鏃舵湁鏁�
+ // 榛樿褰撳墠鏍囬锛屽彧寰俊灏忕▼搴忔湁鏁�
+ sendMessageTitle: {
+ type: String,
+ default: ''
+ },
+ // 浼氳瘽鍐呮秷鎭崱鐗囩偣鍑昏烦杞皬绋嬪簭璺緞锛宱pen-type="contact"鏃舵湁鏁�
+ // 榛樿褰撳墠鍒嗕韩璺緞锛屽彧寰俊灏忕▼搴忔湁鏁�
+ sendMessagePath: {
+ type: String,
+ default: ''
+ },
+ // 浼氳瘽鍐呮秷鎭崱鐗囧浘鐗囷紝open-type="contact"鏃舵湁鏁�
+ // 榛樿褰撳墠椤甸潰鎴浘锛屽彧寰俊灏忕▼搴忔湁鏁�
+ sendMessageImg: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず浼氳瘽鍐呮秷鎭崱鐗囷紝璁剧疆姝ゅ弬鏁颁负 true锛岀敤鎴疯繘鍏ュ鏈嶄細璇濅細鍦ㄥ彸涓嬭鏄剧ず"鍙兘瑕佸彂閫佺殑灏忕▼搴�"鎻愮ず锛�
+ // 鐢ㄦ埛鐐瑰嚮鍚庡彲浠ュ揩閫熷彂閫佸皬绋嬪簭娑堟伅锛宱pen-type="contact"鏃舵湁鏁�
+ showMessageCard: {
+ type: Boolean,
+ default: false
+ },
+ // 鎵嬫寚鎸夛紙瑙︽懜锛夋寜閽椂鎸夐挳鏃剁殑鑳屾櫙棰滆壊
+ hoverBgColor: {
+ type: String,
+ default: ''
+ },
+ // 姘存尝绾圭殑鑳屾櫙棰滆壊
+ rippleBgColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁寮�鍚按娉㈢汗鏁堟灉
+ ripple: {
+ type: Boolean,
+ default: false
+ },
+ // 鎸変笅鐨勭被鍚�
+ hoverClass: {
+ type: String,
+ default: ''
+ },
+ // 鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ customStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 棰濆浼犲弬鍙傛暟锛岀敤浜庡皬绋嬪簭鐨刣ata-xxx灞炴�э紝閫氳繃target.dataset.name鑾峰彇
+ dataName: {
+ type: String,
+ default: ''
+ },
+ // 鑺傛祦锛屼竴瀹氭椂闂村唴鍙兘瑙﹀彂涓�娆�
+ throttleTime: {
+ type: [String, Number],
+ default: 1000
+ }
+ },
+ computed: {
+ // 褰撴病鏈変紶bgColor鍙橀噺鏃讹紝鎸夐挳鎸変笅鍘荤殑棰滆壊绫诲悕
+ getHoverClass() {
+ // 濡傛灉寮�鍚按娉㈢汗鏁堟灉锛屽垯涓嶅惎鐢╤over-class鏁堟灉
+ if (this.loading || this.disabled || this.ripple || this.hoverClass) return '';
+ let hoverClass = '';
+ hoverClass = this.plain ? 'u-' + this.type + '-plain-hover' : 'u-' + this.type + '-hover';
+ return hoverClass;
+ },
+ // 鍦�'primary', 'success', 'error', 'warning'绫诲瀷涓嬶紝涓嶆樉绀鸿竟妗嗭紝鍚﹀垯浼氶�犳垚鍥涜鏈夋瘺鍒虹幇璞�
+ showHairLineBorder() {
+ if (['primary', 'success', 'error', 'warning'].indexOf(this.type) >= 0 && !this.plain) {
+ return '';
+ } else {
+ return 'u-hairline-border';
+ }
+ }
+ },
+ data() {
+ return {
+ rippleTop: 0, // 姘存尝绾圭殑璧风偣Y鍧愭爣鍒版寜閽笂杈圭晫鐨勮窛绂�
+ rippleLeft: 0, // 姘存尝绾硅捣鐐筙鍧愭爣鍒版寜閽乏杈圭晫鐨勮窛绂�
+ fields: {}, // 娉㈢汗鎸夐挳鑺傜偣淇℃伅
+ waveActive: false // 婵�娲绘按娉㈢汗
+ };
+ },
+ methods: {
+ // 鎸夐挳鐐瑰嚮
+ click(e) {
+ // 杩涜鑺傛祦鎺у埗锛屾瘡this.throttle姣鍐咃紝鍙湪寮�濮嬪鎵ц
+ this.$u.throttle(() => {
+ // 濡傛灉鎸夐挳鏃禿isabled鍜宭oading鐘舵�侊紝涓嶈Е鍙戞按娉㈢汗鏁堟灉
+ if (this.loading === true || this.disabled === true) return;
+ // 鏄惁寮�鍚按娉㈢汗鏁堟灉
+ if (this.ripple) {
+ // 姣忔鐐瑰嚮鏃讹紝绉婚櫎涓婁竴娆$殑绫伙紝鍐嶆娣诲姞锛屾墠鑳借Е鍙戝姩鐢绘晥鏋�
+ this.waveActive = false;
+ this.$nextTick(function() {
+ this.getWaveQuery(e);
+ });
+ }
+ this.$emit('click', e);
+ }, this.throttleTime);
+ },
+ // 鏌ヨ鎸夐挳鐨勮妭鐐逛俊鎭�
+ getWaveQuery(e) {
+ this.getElQuery().then(res => {
+ // 鏌ヨ杩斿洖鐨勬槸涓�涓暟缁勮妭鐐�
+ let data = res[0];
+ // 鏌ヨ涓嶅埌鑺傜偣淇℃伅锛屼笉鎿嶄綔
+ if (!data.width || !data.width) return;
+ // 姘存尝绾圭殑鏈�缁堝舰鎬佹槸涓�涓鏂瑰舰(閫氳繃border-radius璁╁叾鍙樹负涓�涓渾褰�)锛岃繖閲岃淇濊瘉姝f柟褰㈢殑杈归暱绛変簬鎸夐挳鐨勬渶闀胯竟
+ // 鏈�缁堢殑鏂瑰舰锛堝彉鎹㈠悗鐨勫渾褰級鎵嶈兘瑕嗙洊鏁翠釜鎸夐挳
+ data.targetWidth = data.height > data.width ? data.height : data.width;
+ if (!data.targetWidth) return;
+ this.fields = data;
+ let touchesX = '',
+ touchesY = '';
+ // #ifdef MP-BAIDU
+ touchesX = e.changedTouches[0].clientX;
+ touchesY = e.changedTouches[0].clientY;
+ // #endif
+ // #ifdef MP-ALIPAY
+ touchesX = e.detail.clientX;
+ touchesY = e.detail.clientY;
+ // #endif
+ // #ifndef MP-BAIDU || MP-ALIPAY
+ touchesX = e.touches[0].clientX;
+ touchesY = e.touches[0].clientY;
+ // #endif
+ // 鑾峰彇瑙︽懜鐐圭浉瀵逛簬鎸夐挳涓婅竟鍜屽乏杈圭殑x鍜寉鍧愭爣锛屽師鐞嗘槸閫氳繃灞忓箷鐨勮Е鎽哥偣锛坱ouchesY锛夛紝鍑忓幓鎸夐挳鐨勪笂杈圭晫data.top
+ // 浣嗘槸鐢变簬`transform-origin`榛樿鏄痗enter锛屾墍浠ヨ繖閲屽啀鍑忓幓鍗婂緞鎵嶆槸姘存尝绾箆iew搴旇鐨勪綅缃�
+ // 鎬荤殑鏉ヨ锛屽氨鏄妸姘存尝绾圭殑鐭╁舰锛堝彉鎹㈠悗鐨勫渾褰級鐨勪腑蹇冪偣锛岀Щ鍔ㄥ埌鎴戜滑鐨勮Е鎽哥偣浣嶇疆
+ this.rippleTop = touchesY - data.top - data.targetWidth / 2;
+ this.rippleLeft = touchesX - data.left - data.targetWidth / 2;
+ this.$nextTick(() => {
+ this.waveActive = true;
+ });
+ });
+ },
+ // 鑾峰彇鑺傜偣淇℃伅
+ getElQuery() {
+ return new Promise(resolve => {
+ let queryInfo = '';
+ // 鑾峰彇鍏冪礌鑺傜偣淇℃伅锛岃鏌ョ湅uniapp鐩稿叧鏂囨。
+ // https://uniapp.dcloud.io/api/ui/nodes-info?id=nodesrefboundingclientrect
+ queryInfo = uni.createSelectorQuery().in(this);
+ //#ifdef MP-ALIPAY
+ queryInfo = uni.createSelectorQuery();
+ //#endif
+ queryInfo.select('.u-btn').boundingClientRect();
+ queryInfo.exec(data => {
+ resolve(data);
+ });
+ });
+ },
+ // 涓嬮潰涓哄鎺niapp瀹樻柟鎸夐挳寮�鏀捐兘鍔涗簨浠跺洖璋冪殑瀵规帴
+ getphonenumber(res) {
+ this.$emit('getphonenumber', res);
+ },
+ getuserinfo(res) {
+ this.$emit('getuserinfo', res);
+ },
+ error(res) {
+ this.$emit('error', res);
+ },
+ opensetting(res) {
+ this.$emit('opensetting', res);
+ },
+ launchapp(res) {
+ this.$emit('launchapp', res);
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import '../../libs/css/style.components.scss';
+.u-btn::after {
+ border: none;
+}
+
+.u-btn {
+ position: relative;
+ border: 0;
+ //border-radius: 10rpx;
+ display: inline-block;
+ // 閬垮厤杈规鏌愪簺鍦烘櫙鍙兘琚�滆鍓�濓紝涓嶈兘璁剧疆涓篽idden
+ overflow: visible;
+ line-height: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ padding: 0 40rpx;
+ z-index: 1;
+ box-sizing: border-box;
+ transition: all 0.15s;
+
+ &--bold-border {
+ border: 1px solid #ffffff;
+ }
+
+ &--default {
+ color: $u-content-color;
+ border-color: #c0c4cc;
+ background-color: #ffffff;
+ }
+
+ &--primary {
+ color: #ffffff;
+ border-color: $u-type-primary;
+ background-color: $u-type-primary;
+ }
+
+ &--success {
+ color: #ffffff;
+ border-color: $u-type-success;
+ background-color: $u-type-success;
+ }
+
+ &--error {
+ color: #ffffff;
+ border-color: $u-type-error;
+ background-color: $u-type-error;
+ }
+
+ &--warning {
+ color: #ffffff;
+ border-color: $u-type-warning;
+ background-color: $u-type-warning;
+ }
+
+ &--default--disabled {
+ color: #ffffff;
+ border-color: #e4e7ed;
+ background-color: #ffffff;
+ }
+
+ &--primary--disabled {
+ color: #ffffff!important;
+ border-color: $u-type-primary-disabled!important;
+ background-color: $u-type-primary-disabled!important;
+ }
+
+ &--success--disabled {
+ color: #ffffff!important;
+ border-color: $u-type-success-disabled!important;
+ background-color: $u-type-success-disabled!important;
+ }
+
+ &--error--disabled {
+ color: #ffffff!important;
+ border-color: $u-type-error-disabled!important;
+ background-color: $u-type-error-disabled!important;
+ }
+
+ &--warning--disabled {
+ color: #ffffff!important;
+ border-color: $u-type-warning-disabled!important;
+ background-color: $u-type-warning-disabled!important;
+ }
+
+ &--primary--plain {
+ color: $u-type-primary!important;
+ border-color: $u-type-primary-disabled!important;
+ background-color: $u-type-primary-light!important;
+ }
+
+ &--success--plain {
+ color: $u-type-success!important;
+ border-color: $u-type-success-disabled!important;
+ background-color: $u-type-success-light!important;
+ }
+
+ &--error--plain {
+ color: $u-type-error!important;
+ border-color: $u-type-error-disabled!important;
+ background-color: $u-type-error-light!important;
+ }
+
+ &--warning--plain {
+ color: $u-type-warning!important;
+ border-color: $u-type-warning-disabled!important;
+ background-color: $u-type-warning-light!important;
+ }
+}
+
+.u-hairline-border:after {
+ content: ' ';
+ position: absolute;
+ pointer-events: none;
+ // 璁剧疆涓篵order-box锛屾剰鍛崇潃涓嬮潰鐨剆cale缂╁皬涓�0.5锛屽疄闄呬笂缂╁皬鐨勬槸浼厓绱犵殑鍐呭锛坆order-box鎰忓懗鐫�鍐呭涓嶅惈border锛�
+ box-sizing: border-box;
+ // 涓績鐐逛綔涓哄彉褰�(scale())鐨勫師鐐�
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ left: 0;
+ top: 0;
+ width: 199.8%;
+ height: 199.7%;
+ -webkit-transform: scale(0.5, 0.5);
+ transform: scale(0.5, 0.5);
+ border: 1px solid currentColor;
+ z-index: 1;
+}
+
+.u-wave-ripple {
+ z-index: 0;
+ position: absolute;
+ border-radius: 100%;
+ background-clip: padding-box;
+ pointer-events: none;
+ user-select: none;
+ transform: scale(0);
+ opacity: 1;
+ transform-origin: center;
+}
+
+.u-wave-ripple.u-wave-active {
+ opacity: 0;
+ transform: scale(2);
+ transition: opacity 1s linear, transform 0.4s linear;
+}
+
+.u-round-circle {
+ border-radius: 100rpx;
+}
+
+.u-round-circle::after {
+ border-radius: 100rpx;
+}
+
+.u-loading::after {
+ background-color: hsla(0, 0%, 100%, 0.35);
+}
+
+.u-size-default {
+ font-size: 30rpx;
+ height: 80rpx;
+ line-height: 80rpx;
+}
+
+.u-size-medium {
+ display: inline-flex;
+ width: auto;
+ font-size: 26rpx;
+ height: 70rpx;
+ line-height: 70rpx;
+ padding: 0 80rpx;
+}
+
+.u-size-mini {
+ display: inline-flex;
+ width: auto;
+ font-size: 22rpx;
+ padding-top: 1px;
+ height: 50rpx;
+ line-height: 50rpx;
+ padding: 0 20rpx;
+}
+
+.u-primary-plain-hover {
+ color: #ffffff !important;
+ background: $u-type-primary-dark !important;
+}
+
+.u-default-plain-hover {
+ color: $u-type-primary-dark !important;
+ background: $u-type-primary-light !important;
+}
+
+.u-success-plain-hover {
+ color: #ffffff !important;
+ background: $u-type-success-dark !important;
+}
+
+.u-warning-plain-hover {
+ color: #ffffff !important;
+ background: $u-type-warning-dark !important;
+}
+
+.u-error-plain-hover {
+ color: #ffffff !important;
+ background: $u-type-error-dark !important;
+}
+
+.u-info-plain-hover {
+ color: #ffffff !important;
+ background: $u-type-info-dark !important;
+}
+
+.u-default-hover {
+ color: $u-type-primary-dark !important;
+ border-color: $u-type-primary-dark !important;
+ background-color: $u-type-primary-light !important;
+}
+
+.u-primary-hover {
+ background: $u-type-primary-dark !important;
+ color: #fff;
+}
+
+.u-success-hover {
+ background: $u-type-success-dark !important;
+ color: #fff;
+}
+
+.u-info-hover {
+ background: $u-type-info-dark !important;
+ color: #fff;
+}
+
+.u-warning-hover {
+ background: $u-type-warning-dark !important;
+ color: #fff;
+}
+
+.u-error-hover {
+ background: $u-type-error-dark !important;
+ color: #fff;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-calendar/u-calendar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-calendar/u-calendar.vue"
new file mode 100644
index 0000000..8d9e75d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-calendar/u-calendar.vue"
@@ -0,0 +1,644 @@
+<template>
+ <u-popup closeable :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
+ :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex" :border-radius="borderRadius" :closeable="closeable">
+ <view class="u-calendar">
+ <view class="u-calendar__header">
+ <view class="u-calendar__header__text" v-if="!$slots['tooltip']" style="display: none;">
+ {{toolTip}}
+ </view>
+ <slot v-else name="tooltip" />
+ </view>
+ <view class="u-calendar__action u-flex u-row-center">
+ <view class="u-calendar__action__icon">
+ <u-icon v-if="changeYear" name="arrow-left-double" :color="yearArrowColor" @click="changeYearHandler(0)"></u-icon>
+ </view>
+ <view class="u-calendar__action__icon">
+ <u-icon v-if="changeMonth" name="arrow-left" :color="monthArrowColor" @click="changeMonthHandler(0)"></u-icon>
+ </view>
+ <view class="u-calendar__action__text">{{ showTitle }}</view>
+ <view class="u-calendar__action__icon">
+ <u-icon v-if="changeMonth" name="arrow-right" :color="monthArrowColor" @click="changeMonthHandler(1)"></u-icon>
+ </view>
+ <view class="u-calendar__action__icon">
+ <u-icon v-if="changeYear" name="arrow-right-double" :color="yearArrowColor" @click="changeYearHandler(1)"></u-icon>
+ </view>
+ </view>
+ <view class="u-calendar__week-day">
+ <view class="u-calendar__week-day__text" v-for="(item, index) in weekDayZh" :key="index">{{item}}</view>
+ </view>
+ <view class="u-calendar__content">
+ <!-- 鍓嶇疆绌虹櫧閮ㄥ垎 -->
+ <block v-for="(item, index) in weekdayArr" :key="index">
+ <view class="u-calendar__content__item"></view>
+ </block>
+ <view class="u-calendar__content__item" :class="{
+ 'u-hover-class':openDisAbled(year,month,index+1),
+ 'u-calendar__content--start-date': (mode == 'range' && startDate==`${year}-${month}-${index+1}`) || mode== 'date',
+ 'u-calendar__content--end-date':(mode== 'range' && endDate==`${year}-${month}-${index+1}`) || mode == 'date'
+ }" :style="{backgroundColor: getColor(index,1)}" v-for="(item, index) in daysArr" :key="index"
+ @tap="dateClick(index)">
+ <view class="u-calendar__content__item__inner" :style="{color: getColor(index,2)}">
+ <view>{{ index + 1 }}</view>
+ </view>
+ <view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && startDate==`${year}-${month}-${index+1}` && startDate!=endDate">{{startText}}</view>
+ <view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && endDate==`${year}-${month}-${index+1}`">{{endText}}</view>
+ </view>
+ <view class="u-calendar__content__bg-month">{{month}}</view>
+ </view>
+ <view class="u-calendar__bottom">
+ <view class="u-calendar__bottom__choose" style="display: none;">
+ <text>{{mode == 'date' ? activeDate : startDate}}</text>
+ <text v-if="endDate">鑷硔{endDate}}</text>
+ </view>
+ <view class="u-calendar__bottom__btn">
+ <u-button :type="btnType" shape="circle" size="default" @click="btnFix(false)">纭畾</u-button>
+ </view>
+ </view>
+ </view>
+ </u-popup>
+</template>
+<script>
+ /**
+ * calendar 鏃ュ巻
+ * @description 姝ょ粍浠剁敤浜庡崟涓�夋嫨鏃ユ湡锛岃寖鍥撮�夋嫨鏃ユ湡绛夛紝鏃ュ巻琚寘瑁瑰湪搴曢儴寮硅捣鐨勫鍣ㄤ腑銆�
+ * @tutorial http://uviewui.com/components/calendar.html
+ * @property {String} mode 閫夋嫨鏃ユ湡鐨勬ā寮忥紝date-涓哄崟涓棩鏈燂紝range-涓洪�夋嫨鏃ユ湡鑼冨洿
+ * @property {Boolean} v-model 甯冨皵鍊煎彉閲忥紝鐢ㄤ簬鎺у埗鏃ュ巻鐨勫脊鍑轰笌鏀惰捣
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤(榛樿false)
+ * @property {Boolean} change-year 鏄惁鏄剧ず椤堕儴鐨勫垏鎹㈠勾浠芥柟鍚戠殑鎸夐挳(榛樿true)
+ * @property {Boolean} change-month 鏄惁鏄剧ず椤堕儴鐨勫垏鎹㈡湀浠芥柟鍚戠殑鎸夐挳(榛樿true)
+ * @property {String Number} max-year 鍙垏鎹㈢殑鏈�澶у勾浠�(榛樿2050)
+ * @property {String Number} min-year 鏈�灏忓彲閫夋棩鏈�(榛樿1950)
+ * @property {String Number} min-date 鍙垏鎹㈢殑鏈�灏忓勾浠�(榛樿1950-01-01)
+ * @property {String Number} max-date 鏈�澶у彲閫夋棩鏈�(榛樿褰撳墠鏃ユ湡)
+ * @property {String Number} 寮圭獥椤堕儴宸﹀彸涓よ竟鐨勫渾瑙掑�硷紝鍗曚綅rpx(榛樿20)
+ * @property {Boolean} mask-close-able 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴鏃ュ巻(榛樿true)
+ * @property {String} month-arrow-color 鏈堜唤鍒囨崲鎸夐挳绠ご棰滆壊(榛樿#606266)
+ * @property {String} year-arrow-color 骞翠唤鍒囨崲鎸夐挳绠ご棰滆壊(榛樿#909399)
+ * @property {String} color 鏃ユ湡瀛椾綋鐨勯粯璁ら鑹�(榛樿#303133)
+ * @property {String} active-bg-color 璧峰/缁撴潫鏃ユ湡鎸夐挳鐨勮儗鏅壊(榛樿#2979ff)
+ * @property {String Number} z-index 寮瑰嚭鏃剁殑z-index鍊�(榛樿10075)
+ * @property {String} active-color 璧峰/缁撴潫鏃ユ湡鎸夐挳鐨勫瓧浣撻鑹�(榛樿#ffffff)
+ * @property {String} range-bg-color 璧峰/缁撴潫鏃ユ湡涔嬮棿鐨勫尯鍩熺殑鑳屾櫙棰滆壊(榛樿rgba(41,121,255,0.13))
+ * @property {String} range-color 閫夋嫨鑼冨洿鍐呭瓧浣撻鑹�(榛樿#2979ff)
+ * @property {String} start-text 璧峰鏃ユ湡搴曢儴鐨勬彁绀烘枃瀛�(榛樿 '寮�濮�')
+ * @property {String} end-text 缁撴潫鏃ユ湡搴曢儴鐨勬彁绀烘枃瀛�(榛樿 '缁撴潫')
+ * @property {String} btn-type 搴曢儴纭畾鎸夐挳鐨勪富棰�(榛樿 'primary')
+ * @property {String} toolTip 椤堕儴鎻愮ず鏂囧瓧锛屽璁剧疆鍚嶄负tooltip鐨剆lot锛屾鍙傛暟灏嗗け鏁�(榛樿 '閫夋嫨鏃ユ湡')
+ * @property {Boolean} closeable 鏄惁鏄剧ず鍙充笂瑙掔殑鍏抽棴鍥炬爣(榛樿true)
+ * @example <u-calendar v-model="show" :mode="mode"></u-calendar>
+ */
+
+ export default {
+ name: 'u-calendar',
+ props: {
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴Picker
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氳繃鍙屽悜缁戝畾鎺у埗缁勪欢鐨勫脊鍑轰笌鏀惰捣
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 寮瑰嚭鐨剒-index鍊�
+ zIndex: {
+ type: [String, Number],
+ default: 0
+ },
+ // 鏄惁鍏佽鍒囨崲骞翠唤
+ changeYear: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鍏佽鍒囨崲鏈堜唤
+ changeMonth: {
+ type: Boolean,
+ default: true
+ },
+ // date-鍗曚釜鏃ユ湡閫夋嫨锛宺ange-寮�濮嬫棩鏈�+缁撴潫鏃ユ湡閫夋嫨
+ mode: {
+ type: String,
+ default: 'date'
+ },
+ // 鍙垏鎹㈢殑鏈�澶у勾浠�
+ maxYear: {
+ type: [Number, String],
+ default: 2050
+ },
+ // 鍙垏鎹㈢殑鏈�灏忓勾浠�
+ minYear: {
+ type: [Number, String],
+ default: 1950
+ },
+ // 鏈�灏忓彲閫夋棩鏈�(涓嶅湪鑼冨洿鍐呮棩鏈熺鐢ㄤ笉鍙��)
+ minDate: {
+ type: [Number, String],
+ default: '1950-01-01'
+ },
+ /**
+ * 鏈�澶у彲閫夋棩鏈�
+ * 榛樿鏈�澶у�间负浠婂ぉ锛屼箣鍚庣殑鏃ユ湡涓嶅彲閫�
+ * 2030-12-31
+ * */
+ maxDate: {
+ type: [Number, String],
+ default: ''
+ },
+ // 寮圭獥椤堕儴宸﹀彸涓よ竟鐨勫渾瑙掑��
+ borderRadius: {
+ type: [String, Number],
+ default: 20
+ },
+ // 鏈堜唤鍒囨崲鎸夐挳绠ご棰滆壊
+ monthArrowColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 骞翠唤鍒囨崲鎸夐挳绠ご棰滆壊
+ yearArrowColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 榛樿鏃ユ湡瀛椾綋棰滆壊
+ color: {
+ type: String,
+ default: '#303133'
+ },
+ // 閫変腑|璧峰缁撴潫鏃ユ湡鑳屾櫙鑹�
+ activeBgColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 閫変腑|璧峰缁撴潫鏃ユ湡瀛椾綋棰滆壊
+ activeColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鑼冨洿鍐呮棩鏈熻儗鏅壊
+ rangeBgColor: {
+ type: String,
+ default: 'rgba(41,121,255,0.13)'
+ },
+ // 鑼冨洿鍐呮棩鏈熷瓧浣撻鑹�
+ rangeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // mode=range鏃剁敓鏁堬紝璧峰鏃ユ湡鑷畾涔夋枃妗�
+ startText: {
+ type: String,
+ default: '寮�濮�'
+ },
+ // mode=range鏃剁敓鏁堬紝缁撴潫鏃ユ湡鑷畾涔夋枃妗�
+ endText: {
+ type: String,
+ default: '缁撴潫'
+ },
+ //鎸夐挳鏍峰紡绫诲瀷
+ btnType: {
+ type: String,
+ default: 'primary'
+ },
+ // 褰撳墠閫変腑鏃ユ湡甯﹂�変腑鏁堟灉
+ isActiveCurrent: {
+ type: Boolean,
+ default: true
+ },
+ // 鍒囨崲骞存湀鏄惁瑙﹀彂浜嬩欢 mode=date鏃剁敓鏁�
+ isChange: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず鍙充笂瑙掔殑鍏抽棴鍥炬爣
+ closeable: {
+ type: Boolean,
+ default: true
+ },
+ // 椤堕儴鐨勬彁绀烘枃瀛�
+ toolTip: {
+ type: String,
+ default: '閫夋嫨鏃ユ湡'
+ }
+ },
+ data() {
+ return {
+ // 鏄熸湡鍑�,鍊间负1-7
+ weekday: 1,
+ weekdayArr:[],
+ // 褰撳墠鏈堟湁澶氬皯澶�
+ days: 0,
+ daysArr:[],
+ showTitle: '',
+ year: 2020,
+ month: 0,
+ day: 0,
+ startYear: 0,
+ startMonth: 0,
+ startDay: 0,
+ endYear: 0,
+ endMonth: 0,
+ endDay: 0,
+ today: '',
+ activeDate: '',
+ startDate: '',
+ endDate: '',
+ isStart: true,
+ min: null,
+ max: null,
+ weekDayZh: ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�']
+ };
+ },
+ computed: {
+ dataChange() {
+ return `${this.mode}-${this.minDate}-${this.maxDate}`;
+ },
+ uZIndex() {
+ // 濡傛灉鐢ㄦ埛鏈変紶閫抸-index鍊硷紝浼樺厛浣跨敤
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ watch: {
+ dataChange(val) {
+ this.init()
+ }
+ },
+ created() {
+ this.init()
+ },
+ methods: {
+ getColor(index, type) {
+ let color = type == 1 ? '' : this.color;
+ let day = index + 1
+ let date = `${this.year}-${this.month}-${day}`
+ let timestamp = new Date(date.replace(/\-/g, '/')).getTime();
+ let start = this.startDate.replace(/\-/g, '/')
+ let end = this.endDate.replace(/\-/g, '/')
+ if ((this.isActiveCurrent && this.activeDate == date) || this.startDate == date || this.endDate == date) {
+ color = type == 1 ? this.activeBgColor : this.activeColor;
+ } else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) {
+ color = type == 1 ? this.rangeBgColor : this.rangeColor;
+ }
+ return color;
+ },
+ init() {
+ let now = new Date();
+ this.year = now.getFullYear();
+ this.month = now.getMonth() + 1;
+ this.day = now.getDate();
+ this.today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
+ this.activeDate = this.today;
+ this.min = this.initDate(this.minDate);
+ this.max = this.initDate(this.maxDate || this.today);
+ this.startDate = "";
+ this.startYear = 0;
+ this.startMonth = 0;
+ this.startDay = 0;
+ this.endYear = 0;
+ this.endMonth = 0;
+ this.endDay = 0;
+ this.endDate = "";
+ this.isStart = true;
+ this.changeData();
+ },
+ //鏃ユ湡澶勭悊
+ initDate(date) {
+ let fdate = date.split('-');
+ return {
+ year: Number(fdate[0] || 1920),
+ month: Number(fdate[1] || 1),
+ day: Number(fdate[2] || 1)
+ }
+ },
+ openDisAbled: function(year, month, day) {
+ let bool = true;
+ let date = `${year}/${month}/${day}`;
+ // let today = this.today.replace(/\-/g, '/');
+ let min = `${this.min.year}/${this.min.month}/${this.min.day}`;
+ let max = `${this.max.year}/${this.max.month}/${this.max.day}`;
+ let timestamp = new Date(date).getTime();
+ if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) {
+ bool = false;
+ }
+ return bool;
+ },
+ generateArray: function(start, end) {
+ return Array.from(new Array(end + 1).keys()).slice(start);
+ },
+ formatNum: function(num) {
+ return num < 10 ? '0' + num : num + '';
+ },
+ //涓�涓湀鏈夊灏戝ぉ
+ getMonthDay(year, month) {
+ let days = new Date(year, month, 0).getDate();
+ return days;
+ },
+ getWeekday(year, month) {
+ let date = new Date(`${year}/${month}/01 00:00:00`);
+ return date.getDay();
+ },
+ checkRange(year) {
+ let overstep = false;
+ if (year < this.minYear || year > this.maxYear) {
+ uni.showToast({
+ title: "鏃ユ湡瓒呭嚭鑼冨洿鍟",
+ icon: 'none'
+ })
+ overstep = true;
+ }
+ return overstep;
+ },
+ changeMonthHandler(isAdd) {
+ if (isAdd) {
+ let month = this.month + 1;
+ let year = month > 12 ? this.year + 1 : this.year;
+ if (!this.checkRange(year)) {
+ this.month = month > 12 ? 1 : month;
+ this.year = year;
+ this.changeData();
+ }
+
+ } else {
+ let month = this.month - 1;
+ let year = month < 1 ? this.year - 1 : this.year;
+ if (!this.checkRange(year)) {
+ this.month = month < 1 ? 12 : month;
+ this.year = year;
+ this.changeData();
+ }
+ }
+ },
+ changeYearHandler(isAdd) {
+ let year = isAdd ? this.year + 1 : this.year - 1;
+ if (!this.checkRange(year)) {
+ this.year = year;
+ this.changeData();
+ }
+ },
+ changeData() {
+ this.days = this.getMonthDay(this.year, this.month);
+ this.daysArr=this.generateArray(1,this.days)
+ this.weekday = this.getWeekday(this.year, this.month);
+ this.weekdayArr=this.generateArray(1,this.weekday)
+ this.showTitle = `${this.year}骞�${this.month}鏈坄;
+ if (this.isChange && this.mode == 'date') {
+ this.btnFix(true);
+ }
+ },
+ dateClick: function(day) {
+ day += 1;
+ if (!this.openDisAbled(this.year, this.month, day)) {
+ this.day = day;
+ let date = `${this.year}-${this.month}-${day}`;
+ if (this.mode == 'date') {
+ this.activeDate = date;
+ } else {
+ let compare = new Date(date.replace(/\-/g, '/')).getTime() < new Date(this.startDate.replace(/\-/g, '/')).getTime()
+ if (this.isStart || compare) {
+ this.startDate = date;
+ this.startYear = this.year;
+ this.startMonth = this.month;
+ this.startDay = this.day;
+ this.endYear = 0;
+ this.endMonth = 0;
+ this.endDay = 0;
+ this.endDate = "";
+ this.activeDate = "";
+ this.isStart = false;
+ } else {
+ this.endDate = date;
+ this.endYear = this.year;
+ this.endMonth = this.month;
+ this.endDay = this.day;
+ this.isStart = true;
+ }
+ }
+ }
+ },
+ close() {
+ // 淇敼閫氳繃v-model缁戝畾鐨勭埗缁勪欢鍙橀噺鐨勫�间负false锛屼粠鑰岄殣钘忔棩鍘嗗脊绐�
+ this.$emit('input', false);
+ },
+ getWeekText(date) {
+ date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`);
+ let week = date.getDay();
+ return '鏄熸湡' + ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][week];
+ },
+ btnFix(show) {
+ if (!show) {
+ this.close();
+ }
+ if (this.mode == 'date') {
+ let arr = this.activeDate.split('-')
+ let year = this.isChange ? this.year : Number(arr[0]);
+ let month = this.isChange ? this.month : Number(arr[1]);
+ let day = this.isChange ? this.day : Number(arr[2]);
+ //褰撳墠鏈堟湁澶氬皯澶�
+ let days = this.getMonthDay(year, month);
+ let result = `${year}-${this.formatNum(month)}-${this.formatNum(day)}`;
+ let weekText = this.getWeekText(result);
+ let isToday = false;
+ if (`${year}-${month}-${day}` == this.today) {
+ //浠婂ぉ
+ isToday = true;
+ }
+ this.$emit('change', {
+ year: year,
+ month: month,
+ day: day,
+ days: days,
+ result: result,
+ week: weekText,
+ isToday: isToday,
+ // switch: show //鏄惁鏄垏鎹㈠勾鏈堟搷浣�
+ });
+ } else {
+ if (!this.startDate || !this.endDate) return;
+ let startMonth = this.formatNum(this.startMonth);
+ let startDay = this.formatNum(this.startDay);
+ let startDate = `${this.startYear}-${startMonth}-${startDay}`;
+ let startWeek = this.getWeekText(startDate)
+
+ let endMonth = this.formatNum(this.endMonth);
+ let endDay = this.formatNum(this.endDay);
+ let endDate = `${this.endYear}-${endMonth}-${endDay}`;
+ let endWeek = this.getWeekText(endDate);
+ this.$emit('change', {
+ startYear: this.startYear,
+ startMonth: this.startMonth,
+ startDay: this.startDay,
+ startDate: startDate,
+ startWeek: startWeek,
+ endYear: this.endYear,
+ endMonth: this.endMonth,
+ endDay: this.endDay,
+ endDate: endDate,
+ endWeek: endWeek
+ });
+ }
+ }
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-calendar {
+ color: $u-content-color;
+
+ &__header {
+ width: 100%;
+ box-sizing: border-box;
+ font-size: 30rpx;
+ background-color: #fff;
+ color: $u-main-color;
+
+ &__text {
+ margin-top: 30rpx;
+ padding: 0 60rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+
+ &__action {
+ //padding: 40rpx 0 40rpx 0;
+ padding: 5rpx 0 0rpx 0;
+ &__icon {
+ margin: 0 16rpx;
+ }
+
+ &__text {
+ padding: 0 16rpx;
+ color: $u-main-color;
+ // font-size: 32rpx;
+ // line-height: 32rpx;
+ font-size: 20rpx;
+ line-height: 20rpx;
+ font-weight: bold;
+ }
+ }
+
+ &__week-day {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 6px 0;
+ overflow: hidden;
+
+ &__text {
+ flex: 1;
+ text-align: center;
+ }
+ }
+
+ &__content {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ padding: 6px 0;
+ box-sizing: border-box;
+ background-color: #fff;
+ position: relative;
+
+ &--end-date {
+ border-top-right-radius: 8rpx;
+ border-bottom-right-radius: 8rpx;
+ }
+
+ &--start-date {
+ border-top-left-radius: 8rpx;
+ border-bottom-left-radius: 8rpx;
+ }
+
+ &__item {
+ width: 14.2857%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 6px 0;
+ overflow: hidden;
+ position: relative;
+ z-index: 2;
+
+ &__inner {
+ //height: 84rpx;
+ height: 45rpx;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ font-size: 32rpx;
+ position: relative;
+ border-radius: 50%;
+
+ &__desc {
+ width: 100%;
+ font-size: 24rpx;
+ line-height: 24rpx;
+ transform: scale(0.75);
+ transform-origin: center center;
+ position: absolute;
+ left: 0;
+ text-align: center;
+ bottom: 2rpx;
+ }
+ }
+
+ &__tips {
+ width: 100%;
+ font-size: 24rpx;
+ line-height: 24rpx;
+ position: absolute;
+ left: 0;
+ transform: scale(0.8);
+ transform-origin: center center;
+ text-align: center;
+ bottom: 8rpx;
+ z-index: 2;
+ }
+ }
+
+ &__bg-month {
+ position: absolute;
+ font-size: 130px;
+ line-height: 130px;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ color: #e4e7ed;
+ z-index: 1;
+ }
+ }
+
+ &__bottom {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ background-color: #fff;
+ padding: 0 40rpx 30rpx;
+ box-sizing: border-box;
+ font-size: 24rpx;
+ color: $u-tips-color;
+
+ &__choose {
+ height: 50rpx;
+ }
+
+ &__btn {
+ width: 100%;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue"
new file mode 100644
index 0000000..c81dd68
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue"
@@ -0,0 +1,254 @@
+<template>
+ <view class="u-keyboard" @touchmove.stop.prevent>
+ <view class="u-keyboard-grids">
+ <block>
+ <view class="u-keyboard-grids-item" v-for="(group, i) in abc ? EngKeyBoardList : areaList" :key="i">
+ <view :hover-stay-time="100" @tap="carInputClick(i, j)" hover-class="u-carinput-hover" class="u-keyboard-grids-btn"
+ v-for="(item, j) in group" :key="j">
+ {{ item }}
+ </view>
+ </view>
+ <view @touchstart="backspaceClick" @touchend="clearTimer" :hover-stay-time="100" class="u-keyboard-back"
+ hover-class="u-hover-class">
+ <u-icon :size="38" name="backspace" :bold="true"></u-icon>
+ </view>
+ <view :hover-stay-time="100" class="u-keyboard-change" hover-class="u-carinput-hover" @tap="changeCarInputMode">
+ <text class="zh" :class="[!abc ? 'active' : 'inactive']">涓�</text>
+ /
+ <text class="en" :class="[abc ? 'active' : 'inactive']">鑻�</text>
+ </view>
+ </block>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name: "u-keyboard",
+ props: {
+ // 鏄惁鎵撲贡閿洏鎸夐敭鐨勯『搴�
+ random: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ // 杞︾墝杈撳叆鏃讹紝abc=true涓鸿緭鍏ヨ溅鐗屽彿鐮侊紝bac=false涓鸿緭鍏ョ渷浠戒腑鏂囩畝绉�
+ abc: false
+ };
+ },
+ computed: {
+ areaList() {
+ let data = [
+ '浜�',
+ '娌�',
+ '绮�',
+ '娲�',
+ '鍐�',
+ '璞�',
+ '浜�',
+ '杈�',
+ '榛�',
+ '婀�',
+ '鐨�',
+ '椴�',
+ '鑻�',
+ '娴�',
+ '璧�',
+ '閯�',
+ '妗�',
+ '鐢�',
+ '鏅�',
+ '闄�',
+ '钂�',
+ '鍚�',
+ '闂�',
+ '璐�',
+ '娓�',
+ '宸�',
+ '闈�',
+ '鐞�',
+ '瀹�',
+ '鎸�',
+ '钘�',
+ '娓�',
+ '婢�',
+ '鏂�',
+ '浣�',
+ '瀛�'
+ ];
+ let tmp = [];
+ // 鎵撲贡椤哄簭
+ if (this.random) data = this.$u.randomArray(data);
+ // 鍒囧壊鎴愪簩缁存暟缁�
+ tmp[0] = data.slice(0, 10);
+ tmp[1] = data.slice(10, 20);
+ tmp[2] = data.slice(20, 30);
+ tmp[3] = data.slice(30, 36);
+ return tmp;
+ },
+ EngKeyBoardList() {
+ let data = [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 0,
+ 'Q',
+ 'W',
+ 'E',
+ 'R',
+ 'T',
+ 'Y',
+ 'U',
+ 'I',
+ 'O',
+ 'P',
+ 'A',
+ 'S',
+ 'D',
+ 'F',
+ 'G',
+ 'H',
+ 'J',
+ 'K',
+ 'L',
+ 'Z',
+ 'X',
+ 'C',
+ 'V',
+ 'B',
+ 'N',
+ 'M'
+ ];
+ let tmp = [];
+ if (this.random) data = this.$u.randomArray(data);
+ tmp[0] = data.slice(0, 10);
+ tmp[1] = data.slice(10, 20);
+ tmp[2] = data.slice(20, 30);
+ tmp[3] = data.slice(30, 36);
+ return tmp;
+ }
+ },
+ methods: {
+ // 鐐瑰嚮閿洏鎸夐挳
+ carInputClick(i, j) {
+ let value = '';
+ // 涓嶅悓妯″紡锛岃幏鍙栦笉鍚屾暟缁勭殑鍊�
+ if (this.abc) value = this.EngKeyBoardList[i][j];
+ else value = this.areaList[i][j];
+ this.$emit('change', value);
+ },
+ // 淇敼姹借溅鐗岄敭鐩樼殑杈撳叆妯″紡锛屼腑鏂噟鑻辨枃
+ changeCarInputMode() {
+ this.abc = !this.abc;
+ },
+ // 鐐瑰嚮閫�鏍奸敭
+ backspaceClick() {
+ this.$emit('backspace');
+ clearInterval(this.timer); //鍐嶆娓呯┖瀹氭椂鍣紝闃叉閲嶅娉ㄥ唽瀹氭椂鍣�
+ this.timer = null;
+ this.timer = setInterval(() => {
+ this.$emit('backspace');
+ }, 250);
+ },
+ clearTimer() {
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-keyboard-grids {
+ background: rgb(215, 215, 217);
+ padding: 24rpx 0;
+ position: relative;
+ }
+
+ .u-keyboard-grids-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .u-keyboard-grids-btn {
+ text-decoration: none;
+ width: 62rpx;
+ flex: 0 0 64rpx;
+ height: 80rpx;
+ display: inline-block;
+ font-size: 36rpx;
+ text-align: center;
+ line-height: 80rpx;
+ background-color: #fff;
+ margin: 8rpx 5rpx;
+ border-radius: 8rpx;
+ box-shadow: 0 2rpx 0rpx #888992;
+ font-weight: 500;
+ }
+
+ .u-carinput-hover {
+ background-color: rgb(185, 188, 195) !important;
+ }
+
+ .u-keyboard-back {
+ position: absolute;
+ width: 96rpx;
+ right: 22rpx;
+ bottom: 32rpx;
+ height: 80rpx;
+ background-color: rgb(185, 188, 195);
+ display: flex;
+ align-items: center;
+ border-radius: 8rpx;
+ justify-content: center;
+ box-shadow: 0 2rpx 0rpx #888992;
+ }
+
+ .u-keyboard-change {
+ font-size: 24rpx;
+ box-shadow: 0 2rpx 0rpx #888992;
+ position: absolute;
+ width: 96rpx;
+ left: 22rpx;
+ line-height: 1;
+ bottom: 32rpx;
+ height: 80rpx;
+ background-color: #ffffff;
+ display: flex;
+ align-items: center;
+ border-radius: 8rpx;
+ justify-content: center;
+ }
+
+ .u-keyboard-change .inactive.zh {
+ transform: scale(0.85) translateY(-10rpx);
+ }
+
+ .u-keyboard-change .inactive.en {
+ transform: scale(0.85) translateY(10rpx);
+ }
+
+ .u-keyboard-change .active {
+ color: rgb(237, 112, 64);
+ font-size: 30rpx;
+ }
+
+ .u-keyboard-change .zh {
+ transform: translateY(-10rpx);
+ }
+
+ .u-keyboard-change .en {
+ transform: translateY(10rpx);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-card/u-card.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-card/u-card.vue"
new file mode 100644
index 0000000..06715ab
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-card/u-card.vue"
@@ -0,0 +1,298 @@
+<template>
+ <view
+ class="u-card"
+ @tap.stop="click"
+ :class="{ 'u-border': border, 'u-card-full': full, 'u-card--border': borderRadius > 0 }"
+ :style="{
+ borderRadius: borderRadius + 'rpx',
+ margin: margin,
+ boxShadow: boxShadow
+ }"
+ >
+ <view
+ v-if="showHead"
+ class="u-card__head"
+ :style="[{padding: padding + 'rpx'}, headStyle]"
+ :class="{
+ 'u-border-bottom': headBorderBottom
+ }"
+ @tap="headClick"
+ >
+ <view v-if="!$slots.head" class="u-flex u-row-between">
+ <view class="u-card__head--left u-flex u-line-1" v-if="title">
+ <image
+ :src="thumb"
+ class="u-card__head--left__thumb"
+ mode="aspectfull"
+ v-if="thumb"
+ :style="{
+ height: thumbWidth + 'rpx',
+ width: thumbWidth + 'rpx',
+ borderRadius: thumbCircle ? '100rpx' : '6rpx'
+ }"
+ ></image>
+ <text
+ class="u-card__head--left__title u-line-1"
+ :style="{
+ fontSize: titleSize + 'rpx',
+ color: titleColor
+ }"
+ >
+ {{ title }}
+ </text>
+ </view>
+ <view class="u-card__head--right u-line-1" v-if="subTitle">
+ <text
+ class="u-card__head__title__text"
+ :style="{
+ fontSize: subTitleSize + 'rpx',
+ color: subTitleColor
+ }"
+ >
+ {{ subTitle }}
+ </text>
+ </view>
+ </view>
+ <slot name="head" v-else />
+ </view>
+ <view @tap="bodyClick" class="u-card__body" :style="[{padding: padding + 'rpx'}, bodyStyle]"><slot name="body" /></view>
+ <view
+ v-if="showFoot"
+ class="u-card__foot"
+ @tap="footClick"
+ :style="[{padding: $slots.foot ? padding + 'rpx' : 0}, footStyle]"
+ :class="{
+ 'u-border-top': footBorderTop
+ }"
+ >
+ <slot name="foot" />
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * card 鍗$墖
+ * @description 鍗$墖缁勪欢涓�鑸敤浜庡涓垪琛ㄦ潯鐩紝涓旈鏍肩粺涓�鐨勫満鏅�
+ * @tutorial https://www.uviewui.com/components/line.html
+ * @property {Boolean} full 鍗$墖涓庡睆骞曚袱渚ф槸鍚︾暀绌洪殭锛堥粯璁alse锛�
+ * @property {String} title 澶撮儴宸﹁竟鐨勬爣棰�
+ * @property {String} title-color 鏍囬棰滆壊锛堥粯璁�#303133锛�
+ * @property {String | Number} title-size 鏍囬瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�30锛�
+ * @property {String} sub-title 澶撮儴鍙宠竟鐨勫壇鏍囬
+ * @property {String} sub-title-color 鍓爣棰橀鑹诧紙榛樿#909399锛�
+ * @property {String | Number} sub-title-size 鍓爣棰樺瓧浣撳ぇ灏忥紙榛樿26锛�
+ * @property {Boolean} border 鏄惁鏄剧ず杈规锛堥粯璁rue锛�
+ * @property {String | Number} index 鐢ㄤ簬鏍囪瘑鐐瑰嚮浜嗙鍑犱釜鍗$墖
+ * @property {String} box-shadow 鍗$墖澶栧洿闃村奖锛屽瓧绗︿覆褰㈠紡锛堥粯璁one锛�
+ * @property {String} margin 鍗$墖涓庡睆骞曚袱杈瑰拰涓婁笅鍏冪礌鐨勯棿璺濓紝闇�甯﹀崟浣嶏紝濡�"30rpx 20rpx"锛堥粯璁�30rpx锛�
+ * @property {String | Number} border-radius 鍗$墖鏁翠綋鐨勫渾瑙掑�硷紝鍗曚綅rpx锛堥粯璁�16锛�
+ * @property {Object} head-style 澶撮儴鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} body-style 涓儴鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} foot-style 搴曢儴鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} head-border-bottom 鏄惁鏄剧ず澶撮儴鐨勪笅杈规锛堥粯璁rue锛�
+ * @property {Boolean} foot-border-top 鏄惁鏄剧ず搴曢儴鐨勪笂杈规锛堥粯璁rue锛�
+ * @property {Boolean} show-head 鏄惁鏄剧ず澶撮儴锛堥粯璁rue锛�
+ * @property {Boolean} show-head 鏄惁鏄剧ず灏鹃儴锛堥粯璁rue锛�
+ * @property {String} thumb 缂╃暐鍥捐矾寰勶紝濡傝缃皢鏄剧ず鍦ㄦ爣棰樼殑宸﹁竟锛屼笉寤鸿浣跨敤鐩稿璺緞
+ * @property {String | Number} thumb-width 缂╃暐鍥剧殑瀹藉害锛岄珮绛変簬瀹斤紝鍗曚綅rpx锛堥粯璁�60锛�
+ * @property {Boolean} thumb-circle 缂╃暐鍥炬槸鍚︿负鍦嗗舰锛堥粯璁alse锛�
+ * @event {Function} click 鏁翠釜鍗$墖浠绘剰浣嶇疆琚偣鍑绘椂瑙﹀彂
+ * @event {Function} head-click 鍗$墖澶撮儴琚偣鍑绘椂瑙﹀彂
+ * @event {Function} body-click 鍗$墖涓讳綋閮ㄥ垎琚偣鍑绘椂瑙﹀彂
+ * @event {Function} foot-click 鍗$墖搴曢儴閮ㄥ垎琚偣鍑绘椂瑙﹀彂
+ * @example <u-card padding="30" title="card"></u-card>
+ */
+export default {
+ name: 'u-card',
+ props: {
+ // 涓庡睆骞曚袱渚ф槸鍚︾暀绌洪殭
+ full: {
+ type: Boolean,
+ default: false
+ },
+ // 鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鏍囬棰滆壊
+ titleColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鏍囬瀛椾綋澶у皬锛屽崟浣峳px
+ titleSize: {
+ type: [Number, String],
+ default: '30'
+ },
+ // 鍓爣棰�
+ subTitle: {
+ type: String,
+ default: ''
+ },
+ // 鍓爣棰橀鑹�
+ subTitleColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 鍓爣棰樺瓧浣撳ぇ灏忥紝鍗曚綅rpx
+ subTitleSize: {
+ type: [Number, String],
+ default: '26'
+ },
+ // 鏄惁鏄剧ず澶栭儴杈规锛屽彧瀵筬ull=false鏃舵湁鏁�(鍗$墖涓庤竟妗嗘湁绌洪殭鏃�)
+ border: {
+ type: Boolean,
+ default: true
+ },
+ // 鐢ㄤ簬鏍囪瘑鐐瑰嚮浜嗙鍑犱釜
+ index: {
+ type: [Number, String, Object],
+ default: ''
+ },
+ // 鐢ㄤ簬闅斿紑涓婁笅宸﹀彸鐨勮竟璺濓紝甯﹀崟浣嶇殑鍐欐硶锛屽锛�"30rpx 30rpx"锛�"20rpx 20rpx 30rpx 30rpx"
+ margin: {
+ type: String,
+ default: '30rpx'
+ },
+ // card鍗$墖鐨勫渾瑙�
+ borderRadius: {
+ type: [Number, String],
+ default: '16'
+ },
+ // 澶撮儴鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ headStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 涓讳綋鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ bodyStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 搴曢儴鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ footStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 澶撮儴鏄惁涓嬭竟妗�
+ headBorderBottom: {
+ type: Boolean,
+ default: true
+ },
+ // 搴曢儴鏄惁鏈変笂杈规
+ footBorderTop: {
+ type: Boolean,
+ default: true
+ },
+ // 鏍囬宸﹁竟鐨勭缉鐣ュ浘
+ thumb: {
+ type: String,
+ default: ''
+ },
+ // 缂╃暐鍥惧楂橈紝鍗曚綅rpx
+ thumbWidth: {
+ type: [String, Number],
+ default: '60'
+ },
+ // 缂╃暐鍥炬槸鍚︿负鍦嗗舰
+ thumbCircle: {
+ type: Boolean,
+ default: false
+ },
+ // 缁檋ead锛宐ody锛宖oot鐨勫唴杈硅窛
+ padding: {
+ type: [String, Number],
+ default: '30'
+ },
+ // 鏄惁鏄剧ず澶撮儴
+ showHead: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず灏鹃儴
+ showFoot: {
+ type: Boolean,
+ default: true
+ },
+ // 鍗$墖澶栧洿闃村奖锛屽瓧绗︿覆褰㈠紡
+ boxShadow: {
+ type: String,
+ default: 'none'
+ }
+ },
+ data() {
+ return {};
+ },
+ methods: {
+ click() {
+ this.$emit('click', this.index);
+ },
+ headClick() {
+ this.$emit('head-click', this.index);
+ },
+ bodyClick() {
+ this.$emit('body-click', this.index);
+ },
+ footClick() {
+ this.$emit('foot-click', this.index);
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-card {
+ position: relative;
+ overflow: hidden;
+ font-size: 28rpx;
+ background-color: #ffffff;
+ box-sizing: border-box;
+
+ &-full {
+ // 濡傛灉鏄笌灞忓箷涔嬮棿涓嶇暀绌洪殭锛屽簲璇ヨ缃乏鍙宠竟璺濅负0
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+
+ &--border:after {
+ border-radius: 16rpx;
+ }
+
+ &__head {
+ &--left {
+ color: $u-main-color;
+
+ &__thumb {
+ margin-right: 16rpx;
+ }
+
+ &__title {
+ max-width: 400rpx;
+ }
+ }
+
+ &--right {
+ color: $u-tips-color;
+ margin-left: 6rpx;
+ }
+ }
+
+ &__body {
+ color: $u-content-color;
+ }
+
+ &__foot {
+ color: $u-tips-color;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-group/u-cell-group.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-group/u-cell-group.vue"
new file mode 100644
index 0000000..f437a61
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-group/u-cell-group.vue"
@@ -0,0 +1,69 @@
+<template>
+ <view class="u-cell-box">
+ <view class="u-cell-title" v-if="title" :style="[titleStyle]">
+ {{title}}
+ </view>
+ <view class="u-cell-item-box" :class="{'u-border-bottom u-border-top': border}">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * cellGroup 鍗曞厓鏍肩埗缁勪欢Group
+ * @description cell鍗曞厓鏍间竴鑸敤浜庝竴缁勫垪琛ㄧ殑鎯呭喌锛屾瘮濡備釜浜轰腑蹇冮〉锛岃缃〉绛夈�傛惌閰島-cell-item
+ * @tutorial https://www.uviewui.com/components/cell.html
+ * @property {String} title 鍒嗙粍鏍囬
+ * @property {Boolean} border 鏄惁鏄剧ず澶栬竟妗嗭紙榛樿true锛�
+ * @property {Object} title-style 鍒嗙粍鏍囬鐨勭殑鏍峰紡锛屽璞″舰寮忥紝濡倇'font-size': '24rpx'} 鎴� {'fontSize': '24rpx'}
+ * @example <u-cell-group title="璁剧疆鍠滃ソ">
+ */
+ export default {
+ name: "u-cell-group",
+ props: {
+ // 鍒嗙粍鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず鍒嗙粍list涓婁笅杈规
+ border: {
+ type: Boolean,
+ default: true
+ },
+ // 鍒嗙粍鏍囬鐨勬牱寮忥紝瀵硅薄褰㈠紡锛屾敞鎰忛┘宄板睘鎬у啓娉�
+ // 绫讳技 {'font-size': '24rpx'} 鍜� {'fontSize': '24rpx'}
+ titleStyle: {
+ type: Object,
+ default () {
+ return {};
+ }
+ }
+ },
+ data() {
+ return {
+ index: 0,
+ }
+ },
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-cell-box {
+ width: 100%;
+ }
+
+ .u-cell-title {
+ padding: 30rpx 32rpx 10rpx 32rpx;
+ font-size: 30rpx;
+ text-align: left;
+ color: $u-tips-color;
+ }
+
+ .u-cell-item-box {
+ background-color: #FFFFFF;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-item/u-cell-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-item/u-cell-item.vue"
new file mode 100644
index 0000000..0b5875d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-cell-item/u-cell-item.vue"
@@ -0,0 +1,300 @@
+<template>
+ <view
+ @tap="click"
+ class="u-cell"
+ :class="{ 'u-border-bottom': borderBottom, 'u-border-top': borderTop, 'u-col-center': center, 'u-cell--required': required }"
+ hover-stay-time="150"
+ :hover-class="hoverClass"
+ :style="{
+ backgroundColor: bgColor
+ }"
+ >
+ <u-icon :size="iconSize" :name="icon" v-if="icon" :custom-style="iconStyle" class="u-cell__left-icon-wrap"></u-icon>
+ <view class="u-flex" v-else>
+ <slot name="icon"></slot>
+ </view>
+ <view
+ class="u-cell_title"
+ :style="[
+ {
+ width: titleWidth ? titleWidth + 'rpx' : 'auto'
+ },
+ titleStyle
+ ]"
+ >
+ <block v-if="title">{{ title }}</block>
+ <slot name="title" v-else></slot>
+
+ <view class="u-cell__label" v-if="label || $slots.label" :style="[labelStyle]">
+ <block v-if="label">{{ label }}</block>
+ <slot name="label" v-else></slot>
+ </view>
+ </view>
+
+ <view class="u-cell__value" :style="[valueStyle]">
+ <block class="u-cell__value" v-if="value">{{ value }}</block>
+ <slot v-else></slot>
+ </view>
+ <view class="u-flex" v-if="$slots['right-icon']">
+ <slot name="right-icon"></slot>
+ </view>
+ <u-icon v-if="arrow" name="arrow-right" :style="[arrowStyle]" class="u-icon-wrap u-cell__right-icon-wrap"></u-icon>
+ </view>
+</template>
+
+<script>
+/**
+ * cellItem 鍗曞厓鏍糏tem
+ * @description cell鍗曞厓鏍间竴鑸敤浜庝竴缁勫垪琛ㄧ殑鎯呭喌锛屾瘮濡備釜浜轰腑蹇冮〉锛岃缃〉绛夈�傛惌閰島-cell-group浣跨敤
+ * @tutorial https://www.uviewui.com/components/cell.html
+ * @property {String} title 宸︿晶鏍囬
+ * @property {String} icon 宸︿晶鍥炬爣鍚嶏紝鍙敮鎸乽View鍐呯疆鍥炬爣锛岃Icon 鍥炬爣
+ * @property {Object} icon-style 宸﹁竟鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} value 鍙充晶鍐呭
+ * @property {String} label 鏍囬涓嬫柟鐨勬弿杩颁俊鎭�
+ * @property {Boolean} border-bottom 鏄惁鏄剧ずcell鐨勪笅杈规锛堥粯璁rue锛�
+ * @property {Boolean} border-top 鏄惁鏄剧ずcell鐨勪笂杈规锛堥粯璁alse锛�
+ * @property {Boolean} center 鏄惁浣垮唴瀹瑰瀭鐩村眳涓紙榛樿false锛�
+ * @property {String} hover-class 鏄惁寮�鍚偣鍑诲弽棣堬紝none涓烘棤鏁堟灉锛堥粯璁rue锛�
+ * // @property {Boolean} border-gap border-bottom涓簍rue鏃讹紝Cell鍒楄〃涓棿鐨勬潯鐩殑涓嬭竟妗嗘槸鍚︿笌宸﹁竟鏈変竴涓棿闅旓紙榛樿true锛�
+ * @property {Boolean} arrow 鏄惁鏄剧ず鍙充晶绠ご锛堥粯璁rue锛�
+ * @property {Boolean} required 绠ご鏂瑰悜锛屽彲閫夊�硷紙榛樿right锛�
+ * @property {Boolean} arrow-direction 鏄惁鏄剧ず宸﹁竟琛ㄧず蹇呭~鐨勬槦鍙凤紙榛樿false锛�
+ * @property {Object} title-style 鏍囬鏍峰紡锛屽璞″舰寮�
+ * @property {Object} value-style 鍙充晶鍐呭鏍峰紡锛屽璞″舰寮�
+ * @property {Object} label-style 鏍囬涓嬫柟鎻忚堪淇℃伅鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} bg-color 鑳屾櫙棰滆壊锛堥粯璁ransparent锛�
+ * @property {String Number} index 鐢ㄤ簬鍦╟lick浜嬩欢鍥炶皟涓繑鍥烇紝鏍囪瘑褰撳墠鏄鍑犱釜Item
+ * @property {String Number} title-width 鏍囬鐨勫搴︼紝鍗曚綅rpx
+ * @example <u-cell-item icon="integral-fill" title="浼氬憳绛夌骇" value="鏂扮増鏈�"></u-cell-item>
+ */
+export default {
+ name: 'u-cell-item',
+ props: {
+ // 宸︿晶鍥炬爣鍚嶇О(鍙兘uView鍐呯疆鍥炬爣)锛屾垨鑰呭浘鏍噑rc
+ icon: {
+ type: String,
+ default: ''
+ },
+ // 宸︿晶鏍囬
+ title: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鍙充晶鍐呭
+ value: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鏍囬涓嬫柟鐨勬弿杩颁俊鎭�
+ label: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鏄惁鏄剧ず涓嬭竟妗�
+ borderBottom: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず涓婅竟妗�
+ borderTop: {
+ type: Boolean,
+ default: false
+ },
+ // 澶氫釜cell涓紝涓棿鐨刢ell鏄剧ず涓嬪垝绾挎椂锛屼笅鍒掔嚎鏄惁缁欎竴涓埌宸﹁竟鐨勮窛绂�
+ // 1.4.0鐗堟湰搴熼櫎姝ゅ弬鏁帮紝榛樿杈规鐢眀order-top鍜宐order-bottom鎻愪緵锛屾鍙傛暟浼氶�犳垚骞叉壈
+ // borderGap: {
+ // type: Boolean,
+ // default: true
+ // },
+ // 鏄惁寮�鍚偣鍑诲弽棣堬紝鍗崇偣鍑绘椂cell鑳屾櫙涓虹伆鑹诧紝none涓烘棤鏁堟灉
+ hoverClass: {
+ type: String,
+ default: 'u-cell-hover'
+ },
+ // 鏄惁鏄剧ず鍙充晶绠ご
+ arrow: {
+ type: Boolean,
+ default: true
+ },
+ // 鍐呭鏄惁鍨傜洿灞呬腑
+ center: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず宸﹁竟琛ㄧず蹇呭~鐨勬槦鍙�
+ required: {
+ type: Boolean,
+ default: false
+ },
+ // 鏍囬鐨勫搴︼紝鍗曚綅rpx
+ titleWidth: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鍙充晶绠ご鏂瑰悜锛屽彲閫夊�硷細right|up|down锛岄粯璁や负right
+ arrowDirection: {
+ type: String,
+ default: 'right'
+ },
+ // 鎺у埗鏍囬鐨勬牱寮�
+ titleStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 鍙充晶鏄剧ず鍐呭鐨勬牱寮�
+ valueStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 鎻忚堪淇℃伅鐨勬牱寮�
+ labelStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: 'transparent'
+ },
+ // 鐢ㄤ簬璇嗗埆琚偣鍑荤殑鏄鍑犱釜cell
+ index: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鏄惁浣跨敤lable鎻掓Ы
+ useLabelSlot: {
+ type: Boolean,
+ default: false
+ },
+ // 宸﹁竟鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx锛屽彧瀵逛紶鍏con瀛楁鏃舵湁鏁�
+ iconSize: {
+ type: [Number, String],
+ default: 34
+ },
+ // 宸﹁竟鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ iconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ },
+ data() {
+ return {
+
+ };
+ },
+ computed: {
+ arrowStyle() {
+ let style = {};
+ if (this.arrowDirection == 'up') style.transform = 'rotate(-90deg)';
+ else if (this.arrowDirection == 'down') style.transform = 'rotate(90deg)';
+ else style.transform = 'rotate(0deg)';
+ return style;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click', this.index);
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+.u-cell {
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ padding: 26rpx 32rpx;
+ font-size: 28rpx;
+ line-height: 54rpx;
+ color: $u-content-color;
+ background-color: #fff;
+ text-align: left;
+}
+
+.u-cell_title {
+ font-size: 28rpx;
+}
+
+.u-cell__left-icon-wrap {
+ margin-right: 10rpx;
+ font-size: 32rpx;
+}
+
+.u-cell__right-icon-wrap {
+ margin-left: 10rpx;
+ color: #969799;
+ font-size: 28rpx;
+}
+
+.u-cell__left-icon-wrap,
+.u-cell__right-icon-wrap {
+ display: flex;
+ align-items: center;
+ height: 48rpx;
+}
+
+.u-cell-border:after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ top: 0;
+ border-bottom: 1px solid $u-border-color;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+}
+
+.u-cell-border {
+ position: relative;
+}
+
+.u-cell__label {
+ margin-top: 6rpx;
+ font-size: 26rpx;
+ line-height: 36rpx;
+ color: $u-tips-color;
+ word-wrap: break-word;
+}
+
+.u-cell__value {
+ overflow: hidden;
+ text-align: right;
+ vertical-align: middle;
+ color: $u-tips-color;
+ font-size: 26rpx;
+}
+
+.u-cell__title,
+.u-cell__value {
+ flex: 1;
+}
+
+.u-cell--required {
+ overflow: visible;
+ display: flex;
+ align-items: center;
+}
+
+.u-cell--required:before {
+ position: absolute;
+ content: '*';
+ left: 8px;
+ margin-top: 4rpx;
+ font-size: 14px;
+ color: $u-type-error;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue"
new file mode 100644
index 0000000..687dc75
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue"
@@ -0,0 +1,122 @@
+<template>
+ <view class="u-checkbox-group u-clearfix">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ import Emitter from '../../libs/util/emitter.js';
+ /**
+ * checkboxGroup 寮�鍏抽�夋嫨鍣ㄧ埗缁勪欢Group
+ * @description 澶嶉�夋缁勪欢涓�鑸敤浜庨渶瑕佸涓�夋嫨鐨勫満鏅紝璇ョ粍浠跺姛鑳藉畬鏁达紝浣跨敤鏂逛究
+ * @tutorial https://www.uviewui.com/components/checkbox.html
+ * @property {String Number} max 鏈�澶氳兘閫変腑澶氬皯涓猚heckbox锛堥粯璁�999锛�
+ * @property {String Number} size 缁勪欢鏁翠綋鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�40锛�
+ * @property {Boolean} disabled 鏄惁绂佺敤鎵�鏈塩heckbox锛堥粯璁alse锛�
+ * @property {String Number} icon-size 鍥炬爣澶у皬锛屽崟浣峳px锛堥粯璁�20锛�
+ * @property {Boolean} label-disabled 鏄惁绂佹鐐瑰嚮鏂囨湰鎿嶄綔checkbox(榛樿false)
+ * @property {String} width 瀹藉害锛岄渶甯﹀崟浣�
+ * @property {String} width 瀹藉害锛岄渶甯﹀崟浣�
+ * @property {String} shape 澶栬褰㈢姸锛宻hape-鏂瑰舰锛宑ircle-鍦嗗舰(榛樿circle)
+ * @property {Boolean} wrap 鏄惁姣忎釜checkbox閮芥崲琛岋紙榛樿false锛�
+ * @property {String} active-color 閫変腑鏃剁殑棰滆壊锛屽簲鐢ㄥ埌鎵�鏈夊瓙Checkbox缁勪欢锛堥粯璁�#2979ff锛�
+ * @event {Function} change 浠讳竴涓猚heckbox鐘舵�佸彂鐢熷彉鍖栨椂瑙﹀彂锛屽洖璋冧负涓�涓璞�
+ * @example <u-checkbox-group></u-checkbox-group>
+ */
+ export default {
+ name: 'u-checkbox-group',
+ mixins: [Emitter],
+ props: {
+ // 鏈�澶氳兘閫変腑澶氬皯涓猚heckbox
+ max: {
+ type: [Number, String],
+ default: 999
+ },
+ // 鎵�鏈夐�変腑椤圭殑 name
+ // value: {
+ // default: Array,
+ // default() {
+ // return []
+ // }
+ // },
+ // 鏄惁绂佺敤鎵�鏈夊閫夋
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 鍦ㄨ〃鍗曞唴鎻愪氦鏃剁殑鏍囪瘑绗�
+ name: {
+ type: [Boolean, String],
+ default: ''
+ },
+ // 鏄惁绂佹鐐瑰嚮鎻愮ず璇�変腑澶嶉�夋
+ labelDisabled: {
+ type: Boolean,
+ default: false
+ },
+ // 褰㈢姸锛宻quare涓烘柟褰紝circle涓哄師鍨�
+ shape: {
+ type: String,
+ default: 'square'
+ },
+ // 閫変腑鐘舵�佷笅鐨勯鑹�
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 缁勪欢鐨勬暣浣撳ぇ灏�
+ size: {
+ type: [String, Number],
+ default: 34
+ },
+ // 姣忎釜checkbox鍗爑-checkbox-group鐨勫搴�
+ width: {
+ type: String,
+ default: 'auto'
+ },
+ // 鏄惁姣忎釜checkbox閮芥崲琛�
+ wrap: {
+ type: Boolean,
+ default: false
+ },
+ // 鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ iconSize: {
+ type: [String, Number],
+ default: 20
+ },
+ },
+ data() {
+ return {
+ }
+ },
+ created() {
+ // 濡傛灉灏哻hildren瀹氫箟鍦╠ata涓紝鍦ㄥ井淇″皬绋嬪簭浼氶�犳垚寰幆寮曠敤鑰屾姤閿�
+ this.children = [];
+ },
+ methods: {
+ emitEvent() {
+ let values = [];
+ this.children.map(val => {
+ if(val.value) values.push(val.name);
+ })
+ this.$emit('change', values);
+ // 鍙戝嚭浜嬩欢锛岀敤浜庡湪琛ㄥ崟缁勪欢涓祵鍏heckbox鐨勬儏鍐碉紝杩涜楠岃瘉
+ this.$nextTick(() => {
+ // 灏嗗綋鍓嶇殑鍊煎彂閫佸埌 u-form-item 杩涜鏍¢獙
+ this.dispatch('u-form-item', 'on-form-change', values);
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-checkbox-group {
+ /* #ifndef MP */
+ display: inline-flex;
+ flex-wrap: wrap;
+ /* #endif */
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox/u-checkbox.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox/u-checkbox.vue"
new file mode 100644
index 0000000..ba087ab
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-checkbox/u-checkbox.vue"
@@ -0,0 +1,275 @@
+<template>
+ <view class="u-checkbox" :style="[checkboxStyle]">
+ <view class="u-checkbox__icon-wrap" @tap="toggle" :class="[iconClass]" :style="[iconStyle]">
+ <u-icon name="checkbox-mark" :size="checkboxIconSize" :color="iconColor"/>
+ </view>
+ <view class="u-checkbox__label" @tap="onClickLabel" :style="{
+ fontSize: $u.addUnit(labelSize)
+ }">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * checkbox 澶嶉�夋
+ * @description 璇ョ粍浠堕渶瑕佹惌閰峜heckboxGroup缁勪欢浣跨敤锛屼互渚跨敤鎴疯繘琛屾搷浣滄椂锛岃幏寰楀綋鍓嶅閫夋缁勭殑閫変腑鎯呭喌銆�
+ * @tutorial https://www.uviewui.com/components/checkbox.html
+ * @property {String Number} icon-size 鍥炬爣澶у皬锛屽崟浣峳px锛堥粯璁�20锛�
+ * @property {String Number} label-size label瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {String Number} name checkbox缁勪欢鐨勬爣绀虹
+ * @property {String} shape 褰㈢姸锛岃瀹樼綉璇存槑锛堥粯璁ircle锛�
+ * @property {Boolean} disabled 鏄惁绂佺敤
+ * @property {Boolean} label-disabled 鏄惁绂佹鐐瑰嚮鏂囨湰鎿嶄綔checkbox
+ * @property {String} active-color 閫変腑鏃剁殑棰滆壊锛屽璁剧疆CheckboxGroup鐨刟ctive-color灏嗗け鏁�
+ * @event {Function} change 鏌愪釜checkbox鐘舵�佸彂鐢熷彉鍖栨椂瑙﹀彂锛屽洖璋冧负涓�涓璞�
+ * @example <u-checkbox v-model="checked" :disabled="false">澶╂动</u-checkbox>
+ */
+ export default {
+ name: "u-checkbox",
+ props: {
+ // checkbox鐨勫悕绉�
+ name: {
+ type: [String, Number],
+ default: ''
+ },
+ // 褰㈢姸锛宻quare涓烘柟褰紝circle涓哄師鍨�
+ shape: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁涓洪�変腑鐘舵��
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁绂佺敤
+ disabled: {
+ type: [String, Boolean],
+ default: ''
+ },
+ // 鏄惁绂佹鐐瑰嚮鎻愮ず璇�変腑澶嶉�夋
+ labelDisabled: {
+ type: [String, Boolean],
+ default: ''
+ },
+ // 閫変腑鐘舵�佷笅鐨勯鑹诧紝濡傝缃鍊硷紝灏嗕細瑕嗙洊checkboxGroup鐨刟ctiveColor鍊�
+ activeColor: {
+ type: String,
+ default: ''
+ },
+ // 鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ iconSize: {
+ type: [String, Number],
+ default: ''
+ },
+ // label鐨勫瓧浣撳ぇ灏忥紝rpx鍗曚綅
+ labelSize: {
+ type: [String, Number],
+ default: ''
+ },
+ // 缁勪欢鐨勬暣浣撳ぇ灏�
+ size: {
+ type: [String, Number],
+ default: ''
+ },
+ },
+ data() {
+ return {
+ parentDisabled: false,
+ newParams: {},
+ };
+ },
+ created() {
+ // 鏀粯瀹濆皬绋嬪簭涓嶆敮鎸乸rovide/inject锛屾墍浠ヤ娇鐢ㄨ繖涓柟娉曡幏鍙栨暣涓埗缁勪欢锛屽湪created瀹氫箟锛岄伩鍏嶅惊鐜簲鐢�
+ this.parent = this.$u.$parent.call(this, 'u-checkbox-group');
+ // 濡傛灉瀛樺湪u-checkbox-group锛屽皢鏈粍浠剁殑this濉炶繘鐖剁粍浠剁殑children涓�
+ this.parent && this.parent.children.push(this);
+ },
+ computed: {
+ // 鏄惁绂佺敤锛屽鏋滅埗缁勪欢u-checkbox-group绂佺敤鐨勮瘽锛屽皢浼氬拷鐣ュ瓙缁勪欢鐨勯厤缃�
+ isDisabled() {
+ return this.disabled !== '' ? this.disabled : this.parent ? this.parent.disabled : false;
+ },
+ // 鏄惁绂佺敤label鐐瑰嚮
+ isLabelDisabled() {
+ return this.labelDisabled !== '' ? this.labelDisabled : this.parent ? this.parent.labelDisabled : false;
+ },
+ // 缁勪欢灏哄锛屽搴攕ize鐨勫�硷紝榛樿鍊间负34rpx
+ checkboxSize() {
+ return this.size ? this.size : (this.parent ? this.parent.size : 34);
+ },
+ // 缁勪欢鐨勫嬀閫夊浘鏍囩殑灏哄锛岄粯璁�20
+ checkboxIconSize() {
+ return this.iconSize ? this.iconSize : (this.parent ? this.parent.iconSize : 20);
+ },
+ // 缁勪欢閫変腑婵�娲绘椂鐨勯鑹�
+ elActiveColor() {
+ return this.activeColor ? this.activeColor : (this.parent ? this.parent.activeColor : 'primary');
+ },
+ // 缁勪欢鐨勫舰鐘�
+ elShape() {
+ return this.shape ? this.shape : (this.parent ? this.parent.shape : 'square');
+ },
+ iconStyle() {
+ let style = {};
+ // 鏃㈣鍒ゆ柇鏄惁鎵嬪姩绂佺敤锛岃繕瑕佸垽鏂敤鎴穠-model缁戝畾鐨勫�硷紝濡傛灉缁戝畾涓篺alse锛岄偅涔堜篃鏃犳硶閫変腑
+ if (this.elActiveColor && this.value && !this.isDisabled) {
+ style.borderColor = this.elActiveColor;
+ style.backgroundColor = this.elActiveColor;
+ }
+ style.width = this.$u.addUnit(this.checkboxSize);
+ style.height = this.$u.addUnit(this.checkboxSize);
+ return style;
+ },
+ // checkbox鍐呴儴鐨勫嬀閫夊浘鏍囷紝濡傛灉閫変腑鐘舵�侊紝涓虹櫧鑹诧紝鍚﹀垯涓洪�忔槑鑹插嵆鍙�
+ iconColor() {
+ return this.value ? '#ffffff' : 'transparent';
+ },
+ iconClass() {
+ let classes = [];
+ classes.push('u-checkbox__icon-wrap--' + this.elShape);
+ if (this.value == true) classes.push('u-checkbox__icon-wrap--checked');
+ if (this.isDisabled) classes.push('u-checkbox__icon-wrap--disabled');
+ if (this.value && this.isDisabled) classes.push('u-checkbox__icon-wrap--disabled--checked');
+ // 鏀粯瀹濆皬绋嬪簭鏃犳硶鍔ㄦ�佺粦瀹氫竴涓暟缁勭被鍚嶏紝鍚﹀垯瑙f瀽鍑烘潵鐨勭粨鏋滀細甯︽湁","锛岃�屽鑷村け鏁�
+ return classes.join(' ');
+ },
+ checkboxStyle() {
+ let style = {};
+ if(this.parent && this.parent.width) {
+ style.width = this.parent.width;
+ // #ifdef MP
+ // 鍚勫灏忕▼搴忓洜涓哄畠浠壒娈婄殑缂栬瘧缁撴瀯锛屼娇鐢╢loat甯冨眬
+ style.float = 'left';
+ // #endif
+ // #ifndef MP
+ // H5鍜孉PP浣跨敤flex甯冨眬
+ style.flex = `0 0 ${this.parent.width}`;
+ // #endif
+ }
+ if(this.parent && this.parent.wrap) {
+ style.width = '100%';
+ // #ifndef MP
+ // H5鍜孉PP浣跨敤flex甯冨眬锛屽皢瀹藉害璁剧疆100%锛屽嵆鍙嚜鍔ㄦ崲琛�
+ style.flex = '0 0 100%';
+ // #endif
+ }
+ return style;
+ }
+ },
+ methods: {
+ onClickLabel() {
+ if (!this.isLabelDisabled && !this.isDisabled) {
+ this.setValue();
+ }
+ },
+ toggle() {
+ if (!this.isDisabled) {
+ this.setValue();
+ }
+ },
+ emitEvent() {
+ this.$emit('change', {
+ value: this.value,
+ name: this.name
+ })
+ // 鎵ц鐖剁粍浠秛-checkbox-group鐨勪簨浠舵柟娉�
+ if(this.parent && this.parent.emitEvent) this.parent.emitEvent();
+ },
+ // 璁剧疆input鐨勫�硷紝杩欓噷閫氳繃input浜嬩欢锛岃缃�氳繃v-model缁戝畾鐨勭粍浠剁殑鍊�
+ setValue() {
+ // 鍒ゆ柇鏄惁瓒呰繃浜嗗彲閫夌殑鏈�澶ф暟閲�
+ let checkedNum = 0;
+ if(this.parent && this.parent.children) {
+ // 鍙鐖剁粍浠剁殑鏌愪竴涓瓙鍏冪礌鐨剉alue涓簍rue锛屽氨鍔�1(宸叉湁鐨勯�変腑鏁伴噺)
+ this.parent.children.map(val => {
+ if (val.value) checkedNum++;
+ })
+ }
+ // 濡傛灉鍘熸潵涓洪�変腑鐘舵�侊紝閭d箞鍙互鍙栨秷
+ if (this.value == true) {
+ this.$emit('input', !this.value);
+ // 绛夊緟涓嬩竴涓懆鏈熷啀鎵ц锛屽洜涓簍his.$emit('input')浣滅敤浜庣埗缁勪欢锛屽啀鍙嶉鍒板瓙缁勪欢鍐呴儴锛岄渶瑕佹椂闂�
+ this.$nextTick(function() {
+ this.emitEvent();
+ })
+ } else if ((this.parent && checkedNum < this.parent.max) || !this.parent) {
+ // 濡傛灉鍘熸潵涓烘湭閫変腑鐘舵�侊紝闇�瑕侀�変腑鐨勬暟閲忓皯浜庣埗缁勪欢涓缃殑max鍊硷紝鎵嶅彲浠ラ�変腑
+ this.$emit('input', !this.value);
+ // 绛夊緟涓嬩竴涓懆鏈熷啀鎵ц锛屽洜涓簍his.$emit('input')浣滅敤浜庣埗缁勪欢锛屽啀鍙嶉鍒板瓙缁勪欢鍐呴儴锛岄渶瑕佹椂闂�
+ this.$nextTick(function() {
+ this.emitEvent();
+ })
+ }
+
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-checkbox {
+ display: inline-flex;
+ align-items: center;
+ overflow: hidden;
+ user-select: none;
+ line-height: 1.8;
+
+ &__icon-wrap {
+ color: $u-content-color;
+ flex: none;
+ display: -webkit-flex;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ width: 42rpx;
+ height: 42rpx;
+ color: transparent;
+ text-align: center;
+ transition-property: color, border-color, background-color;
+ font-size: 20px;
+ border: 1px solid #c8c9cc;
+ transition-duration: 0.2s;
+
+ &--circle {
+ border-radius: 100%;
+ }
+
+ &--square {
+ border-radius: 6rpx;
+ }
+
+ &--checked {
+ color: #fff;
+ background-color: $u-type-primary;
+ border-color: $u-type-primary;
+ }
+
+ &--disabled {
+ background-color: #ebedf0;
+ border-color: #c8c9cc;
+ }
+
+ &--disabled--checked {
+ color: #c8c9cc !important;
+ }
+ }
+
+ &__label {
+ word-wrap: break-word;
+ margin-left: 10rpx;
+ margin-right: 24rpx;
+ color: $u-content-color;
+ font-size: 30rpx;
+
+ &--disabled {
+ color: #c8c9cc;
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue"
new file mode 100644
index 0000000..62b68d0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue"
@@ -0,0 +1,218 @@
+<template>
+ <view
+ class="u-circle-progress"
+ :style="{
+ width: widthPx + 'px',
+ height: widthPx + 'px',
+ backgroundColor: bgColor
+ }"
+ >
+ <!-- 鏀粯瀹濆皬绋嬪簭涓嶆敮鎸乧anvas-id灞炴�э紝蹇呴』鐢╥d灞炴�� -->
+ <canvas
+ class="u-canvas-bg"
+ :canvas-id="elBgId"
+ :id="elBgId"
+ :style="{
+ width: widthPx + 'px',
+ height: widthPx + 'px'
+ }"
+ ></canvas>
+ <canvas
+ class="u-canvas"
+ :canvas-id="elId"
+ :id="elId"
+ :style="{
+ width: widthPx + 'px',
+ height: widthPx + 'px'
+ }"
+ ></canvas>
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+/**
+ * circleProgress 鐜舰杩涘害鏉�
+ * @description 灞曠ず鎿嶄綔鎴栦换鍔$殑褰撳墠杩涘害锛屾瘮濡備笂浼犳枃浠讹紝鏄竴涓渾褰㈢殑杩涘害鏉°�傛敞鎰忥細姝ょ粍浠剁殑percent鍊煎彧鑳藉姩鎬佸鍔狅紝涓嶈兘鍔ㄦ�佸噺灏戙��
+ * @tutorial https://www.uviewui.com/components/circleProgress.html
+ * @property {String Number} percent 鍦嗙幆杩涘害鐧惧垎姣斿�硷紝涓烘暟鍊肩被鍨嬶紝0-100
+ * @property {String} inactive-color 鍦嗙幆鐨勫簳鑹诧紝榛樿涓虹伆鑹�(璇ュ�兼棤娉曞姩鎬佸彉鏇�)锛堥粯璁�#ececec锛�
+ * @property {String} active-color 鍦嗙幆婵�娲婚儴鍒嗙殑棰滆壊(璇ュ�兼棤娉曞姩鎬佸彉鏇�)锛堥粯璁�#19be6b锛�
+ * @property {String Number} width 鏁翠釜鍦嗙幆缁勪欢鐨勫搴︼紝楂樺害榛樿绛変簬瀹藉害鍊硷紝鍗曚綅rpx锛堥粯璁�200锛�
+ * @property {String Number} border-width 鍦嗙幆鐨勮竟妗嗗搴︼紝鍗曚綅rpx锛堥粯璁�14锛�
+ * @property {String Number} duration 鏁翠釜鍦嗙幆鎵ц涓�鍦堢殑鏃堕棿锛屽崟浣峬s锛堥粯璁ゅ憿1500锛�
+ * @property {String} type 濡傝缃紝active-color鍊煎皢浼氬け鏁�
+ * @property {String} bg-color 鏁翠釜缁勪欢鑳屾櫙棰滆壊锛岄粯璁や负鐧借壊
+ * @example <u-circle-progress active-color="#2979ff" :percent="80"></u-circle-progress>
+ */
+export default {
+ name: 'u-circle-progress',
+ props: {
+ // 鍦嗙幆杩涘害鐧惧垎姣斿��
+ percent: {
+ type: Number,
+ default: 0,
+ // 闄愬埗鍊煎湪0鍒�100涔嬮棿
+ validator: val => {
+ return val >= 0 && val <= 100;
+ }
+ },
+ // 搴曢儴鍦嗙幆鐨勯鑹诧紙鐏拌壊鐨勫渾鐜級
+ inactiveColor: {
+ type: String,
+ default: '#ececec'
+ },
+ // 鍦嗙幆婵�娲婚儴鍒嗙殑棰滆壊
+ activeColor: {
+ type: String,
+ default: '#19be6b'
+ },
+ // 鍦嗙幆绾挎潯鐨勫搴︼紝鍗曚綅rpx
+ borderWidth: {
+ type: [Number, String],
+ default: 14
+ },
+ // 鏁翠釜鍦嗗舰鐨勫搴︼紝鍗曚綅rpx
+ width: {
+ type: [Number, String],
+ default: 200
+ },
+ // 鏁翠釜鍦嗙幆鎵ц涓�鍦堢殑鏃堕棿锛屽崟浣峬s
+ duration: {
+ type: [Number, String],
+ default: 1500
+ },
+ // 涓婚绫诲瀷
+ type: {
+ type: String,
+ default: ''
+ },
+ // 鏁翠釜鍦嗙幆杩涘害鍖哄煙鐨勮儗鏅壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ }
+ },
+ data() {
+ return {
+ // #ifdef MP-WEIXIN
+ elBgId: 'uCircleProgressBgId', // 寰俊灏忕▼搴忎腑涓嶈兘浣跨敤this.$u.guid()褰㈠紡鍔ㄦ�佺敓鎴恑d鍊硷紝鍚﹀垯浼氭姤閿�
+ elId: 'uCircleProgressElId',
+ // #endif
+ // #ifndef MP-WEIXIN
+ elBgId: this.$u.guid(), // 闈炲井淇$鐨勬椂鍊欙紝闇�鐢ㄥ姩鎬佺殑id锛屽惁鍒欎竴涓〉闈㈠涓渾褰㈣繘搴︽潯缁勪欢鏁版嵁浼氭贩涔�
+ elId: this.$u.guid(),
+ // #endif
+ widthPx: uni.upx2px(this.width), // 杞垚px鍚庣殑鏁翠釜缁勪欢鐨勮儗鏅搴�
+ borderWidthPx: uni.upx2px(this.borderWidth), // 杞垚px鍚庣殑鍦嗙幆鐨勫搴�
+ startAngle: -Math.PI / 2, // canvas鐢诲渾鐨勮捣濮嬭搴︼紝榛樿涓�3鐐归挓鏂瑰悜锛屽畾浣嶅埌12鐐归挓鏂瑰悜
+ progressContext: null, // 娲诲姩鍦嗙殑canvas涓婁笅鏂�
+ newPercent: 0, // 褰撳姩鎬佷慨鏀硅繘搴﹀�肩殑鏃跺�欙紝淇濆瓨杩涘害鍊肩殑鍙樺寲鍓嶅悗鍊硷紝鐢ㄤ簬姣旇緝鐢�
+ oldPercent: 0 // 褰撳姩鎬佷慨鏀硅繘搴﹀�肩殑鏃跺�欙紝淇濆瓨杩涘害鍊肩殑鍙樺寲鍓嶅悗鍊硷紝鐢ㄤ簬姣旇緝鐢�
+ };
+ },
+ watch: {
+ percent(nVal, oVal = 0) {
+ if (nVal > 100) nVal = 100;
+ if (nVal < 0) oVal = 0;
+ // 姝ゅ�煎叾瀹炵瓑浜巘his.percent锛屽懡鍚嶄竴涓柊
+ this.newPercent = nVal;
+ this.oldPercent = oVal;
+ setTimeout(() => {
+ // 鏃犺鏄櫨鍒嗘瘮鍊煎鍔犺繕鏄噺灏戯紝闇�瑕佹搷浣滆繕鏄師鏉ョ殑鏃х殑鐧惧垎姣斿��
+ // 灏嗘鍊煎噺灏戞垨鑰呮柊澧炲埌鏂扮殑鐧惧垎姣斿��
+ this.drawCircleByProgress(oVal);
+ }, 50);
+ }
+ },
+ created() {
+ // 璧嬪�硷紝鐢ㄤ簬鍔犺浇鍚庣涓�涓敾鍦嗕娇鐢�
+ this.newPercent = this.percent;
+ this.oldPercent = 0;
+ },
+ computed: {
+ // 鏈塼ype涓婚鏃讹紝浼樺厛璧蜂綔鐢�
+ circleColor() {
+ if (['success', 'error', 'info', 'primary', 'warning'].indexOf(this.type) >= 0) return this.$u.color[this.type];
+ else return this.activeColor;
+ }
+ },
+ mounted() {
+ // 鍦╤5绔紝蹇呴』瑕佸仛涓�鐐瑰欢鏃舵墠璧蜂綔鐢紝this.$nextTick()鏃犳晥(HX2.4.7)
+ setTimeout(() => {
+ this.drawProgressBg();
+ this.drawCircleByProgress(this.oldPercent);
+ }, 50);
+ },
+ methods: {
+ drawProgressBg() {
+ let ctx = uni.createCanvasContext(this.elBgId, this);
+ ctx.setLineWidth(this.borderWidthPx); // 璁剧疆鍦嗙幆瀹藉害
+ ctx.setStrokeStyle(this.inactiveColor); // 绾挎潯棰滆壊
+ ctx.beginPath(); // 寮�濮嬫弿缁樿矾寰�
+ // 璁剧疆涓�涓師鐐�(110,110)锛屽崐寰勪负100鐨勫渾鐨勮矾寰勫埌褰撳墠璺緞
+ let radius = this.widthPx / 2;
+ ctx.arc(radius, radius, radius - this.borderWidthPx, 0, 2 * Math.PI, false);
+ ctx.stroke(); // 瀵硅矾寰勮繘琛屾弿缁�
+ ctx.draw();
+ },
+ drawCircleByProgress(progress) {
+ // 绗竴娆℃搷浣滆繘搴︾幆鏃跺皢涓婁笅鏂囦繚瀛樺埌浜唗his.data涓紝鐩存帴浣跨敤鍗冲彲
+ let ctx = this.progressContext;
+ if (!ctx) {
+ ctx = uni.createCanvasContext(this.elId, this);
+ this.progressContext = ctx;
+ }
+ // 琛ㄧず杩涘害鐨勪袱绔负鍦嗗舰
+ ctx.setLineCap('round');
+ // 璁剧疆绾挎潯鐨勫搴﹀拰棰滆壊
+ ctx.setLineWidth(this.borderWidthPx);
+ ctx.setStrokeStyle(this.circleColor);
+ // 灏嗘�昏繃娓℃椂闂撮櫎浠�100锛屽緱鍑烘瘡淇敼鐧惧垎涔嬩竴杩涘害鎵�闇�鐨勬椂闂�
+ let time = Math.floor(this.duration / 100);
+ // 缁撴潫瑙掔殑璁$畻渚濇嵁涓猴細灏�2蟺鍒嗕负100浠斤紝涔樹互褰撳墠鐨勮繘搴﹀�硷紝寰楀嚭缁堟鐐圭殑寮у害鍊硷紝鍔犺捣濮嬭锛屼负鏁翠釜鍦嗕粠榛樿鐨�
+ // 3鐐归挓鏂瑰悜寮�濮嬬敾鍥撅紝杞负鏇村ソ鐞嗚В鐨�12鐐归挓鏂瑰悜寮�濮嬩綔鍥撅紝杩欓渶瑕佽捣濮嬭鍜岀粓姝㈣鍚屾椂鍔犱笂this.startAngle鍊�
+ let endAngle = ((2 * Math.PI) / 100) * progress + this.startAngle;
+ ctx.beginPath();
+ // 鍗婂緞涓烘暣涓猚anvas瀹藉害鐨勪竴鍗�
+ let radius = this.widthPx / 2;
+ ctx.arc(radius, radius, radius - this.borderWidthPx, this.startAngle, endAngle, false);
+ ctx.stroke();
+ ctx.draw();
+ // 濡傛灉鍙樻洿鍚庢柊鍊煎ぇ浜庢棫鍊硷紝鎰忓懗鐫�澧炲ぇ浜嗙櫨鍒嗘瘮
+ if (this.newPercent > this.oldPercent) {
+ // 姣忔閫掑鐧惧垎涔嬩竴
+ progress++;
+ // 濡傛灉鏂板鍚庣殑鍊硷紝澶т簬闇�瑕佽缃殑鍊肩櫨鍒嗘瘮鍊硷紝鍋滄缁х画澧炲姞
+ if (progress > this.newPercent) return;
+ } else {
+ // 鍚岀悊浜庝笂闈�
+ progress--;
+ if (progress < this.newPercent) return;
+ }
+ setTimeout(() => {
+ // 瀹氭椂鍣紝姣忔鎿嶄綔闂撮殧涓簍ime鍊硷紝涓轰簡璁╄繘搴︽潯鏈夊姩鐢绘晥鏋�
+ this.drawCircleByProgress(progress);
+ }, time);
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+.u-circle-progress {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.u-canvas-bg {
+ position: absolute;
+}
+
+.u-canvas {
+ position: absolute;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-col/u-col.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-col/u-col.vue"
new file mode 100644
index 0000000..6bdf997
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-col/u-col.vue"
@@ -0,0 +1,135 @@
+<template>
+ <view class="u-col" :class="[
+ 'u-col-' + span
+ ]" :style="{
+ padding: `0 ${Number(gutter)/2 + 'rpx'}`,
+ marginLeft: 100 / 12 * offset + '%',
+ flex: `0 0 ${100 / 12 * span}%`,
+ alignItems: uAlignItem,
+ justifyContent: uJustify,
+ textAlign: textAlign
+ }" @tap.stop.prevent="click">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ /**
+ * col 甯冨眬鍗曞厓鏍�
+ * @description 閫氳繃鍩虹鐨� 12 鍒嗘爮锛岃繀閫熺畝渚垮湴鍒涘缓甯冨眬锛堟惌閰�<u-row>浣跨敤锛�
+ * @tutorial https://www.uviewui.com/components/layout.html
+ * @property {String Number} span 鏍呮牸鍗犳嵁鐨勫垪鏁帮紝鎬�12绛夊垎锛堥粯璁�0锛�
+ * @property {String} text-align 鏂囧瓧姘村钩瀵归綈鏂瑰紡锛堥粯璁eft锛�
+ * @property {String Number} offset 鍒嗘爮宸﹁竟鍋忕Щ锛岃绠楁柟寮忎笌span鐩稿悓锛堥粯璁�0锛�
+ * @example <u-col span="3"><view class="demo-layout bg-purple"></view></u-col>
+ */
+ export default {
+ name: "u-col",
+ props: {
+ // 鍗犵埗瀹瑰櫒瀹藉害鐨勫灏戠瓑鍒嗭紝鎬诲垎涓�12浠�
+ span: {
+ type: [Number, String],
+ default: 12
+ },
+ // 鎸囧畾鏍呮牸宸︿晶鐨勯棿闅旀暟(鎬�12鏍�)
+ offset: {
+ type: [Number, String],
+ default: 0
+ },
+ // 姘村钩鎺掑垪鏂瑰紡锛屽彲閫夊�间负`start`(鎴朻flex-start`)銆乣end`(鎴朻flex-end`)銆乣center`銆乣around`(鎴朻space-around`)銆乣between`(鎴朻space-between`)
+ justify: {
+ type: String,
+ default: 'start'
+ },
+ // 鍨傜洿瀵归綈鏂瑰紡锛屽彲閫夊�间负top銆乧enter銆乥ottom
+ align: {
+ type: String,
+ default: 'center'
+ },
+ // 鏂囧瓧瀵归綈鏂瑰紡
+ textAlign: {
+ type: String,
+ default: 'left'
+ }
+ },
+ inject: ['gutter'],
+ computed: {
+ uJustify() {
+ if (this.justify == 'end' || this.justify == 'start') return 'flex-' + this.justify;
+ else if (this.justify == 'around' || this.justify == 'between') return 'space-' + this.justify;
+ else return this.justify;
+ },
+ uAlignItem() {
+ if (this.align == 'top') return 'flex-start';
+ if (this.align == 'bottom') return 'flex-end';
+ else return this.align;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click');
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ @import "../../libs/css/style.components.scss";
+ .u-col {
+ /* #ifdef MP-WEIXIN || MP-QQ */
+ float: left;
+ /* #endif */
+ }
+
+ .u-col-0 {
+ width: 0;
+ }
+
+ .u-col-1 {
+ width: calc(100%/12);
+ }
+
+ .u-col-2 {
+ width: calc(100%/12 * 2);
+ }
+
+ .u-col-3 {
+ width: calc(100%/12 * 3);
+ }
+
+ .u-col-4 {
+ width: calc(100%/12 * 4);
+ }
+
+ .u-col-5 {
+ width: calc(100%/12 * 5);
+ }
+
+ .u-col-6 {
+ width: calc(100%/12 * 6);
+ }
+
+ .u-col-7 {
+ width: calc(100%/12 * 7);
+ }
+
+ .u-col-8 {
+ width: calc(100%/12 * 8);
+ }
+
+ .u-col-9 {
+ width: calc(100%/12 * 9);
+ }
+
+ .u-col-10 {
+ width: calc(100%/12 * 10);
+ }
+
+ .u-col-11 {
+ width: calc(100%/12 * 11);
+ }
+
+ .u-col-12 {
+ width: calc(100%/12 * 12);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue"
new file mode 100644
index 0000000..b47ea52
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue"
@@ -0,0 +1,206 @@
+<template>
+ <view class="u-collapse-item" :style="[itemStyle]">
+ <view :hover-stay-time="200" class="u-collapse-head" @tap.stop="headClick" :hover-class="hoverClass" :style="[headStyle]">
+ <block v-if="!$slots['title-all']">
+ <view v-if="!$slots['title']" class="u-collapse-title u-line-1" :style="[{ textAlign: align ? align : 'left' },
+ isShow && activeStyle && !arrow ? activeStyle : '']">
+ {{ title }}
+ </view>
+ <slot v-else name="title" />
+ <view class="u-icon-wrap">
+ <u-icon v-if="arrow" :color="arrowColor" :class="{ 'u-arrow-down-icon-active': isShow }"
+ class="u-arrow-down-icon" name="arrow-down"></u-icon>
+ </view>
+ </block>
+ <slot v-else name="title-all" />
+ </view>
+ <view class="u-collapse-body" :style="[{
+ height: isShow ? height + 'px' : '0'
+ }]">
+ <view class="u-collapse-content" :id="elId" :style="[bodyStyle]">
+ <slot></slot>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * collapseItem 鎵嬮鐞碔tem
+ * @description 閫氳繃鎶樺彔闈㈡澘鏀剁撼鍐呭鍖哄煙锛堟惌閰島-collapse浣跨敤锛�
+ * @tutorial https://www.uviewui.com/components/collapse.html
+ * @property {String} title 闈㈡澘鏍囬
+ * @property {String Number} index 涓昏鐢ㄤ簬浜嬩欢鐨勫洖璋冿紝鏍囪瘑閭d釜Item琚偣鍑�
+ * @property {Boolean} disabled 闈㈡澘鏄惁鍙互鎵撳紑鎴栨敹璧凤紙榛樿false锛�
+ * @property {Boolean} open 璁剧疆鏌愪釜闈㈡澘鐨勫垵濮嬬姸鎬佹槸鍚︽墦寮�锛堥粯璁alse锛�
+ * @property {String Number} name 鍞竴鏍囪瘑绗︼紝濡備笉璁剧疆锛岄粯璁ょ敤褰撳墠collapse-item鐨勭储寮曞��
+ * @property {String} align 鏍囬鐨勫榻愭柟寮忥紙榛樿left锛�
+ * @property {Object} active-style 涓嶆樉绀虹澶存椂锛屽彲浠ユ坊鍔犲綋鍓嶉�夋嫨鐨刢ollapse-item娲诲姩鏍峰紡锛屽璞″舰寮�
+ * @event {Function} change 鏌愪釜item琚墦寮�鎴栬�呮敹璧锋椂瑙﹀彂
+ * @example <u-collapse-item :title="item.head" v-for="(item, index) in itemList" :key="index">{{item.body}}</u-collapse-item>
+ */
+ export default {
+ name: "u-collapse-item",
+ props: {
+ // 鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鏍囬鐨勫榻愭柟寮�
+ align: {
+ type: String,
+ default: 'left'
+ },
+ // 鏄惁鍙互鐐瑰嚮鏀惰捣
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // collapse鏄剧ず涓庡惁
+ open: {
+ type: Boolean,
+ default: false
+ },
+ // 鍞竴鏍囪瘑绗�
+ name: {
+ type: [Number, String],
+ default: ''
+ },
+ //娲诲姩鏍峰紡
+ activeStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 鏍囪瘑褰撳墠涓虹鍑犱釜
+ index: {
+ type: [String, Number],
+ default: ''
+ }
+ },
+ inject: ['uCollapse'],
+ data() {
+ return {
+ isShow: false,
+ elId: this.$u.guid(),
+ height: 0, // body鍐呭鐨勯珮搴�
+ headStyle: {}, // 澶撮儴鏍峰紡锛屽璞″舰寮�
+ bodyStyle: {}, // 涓讳綋閮ㄥ垎鏍峰紡
+ //itemStyle: {}, // 姣忎釜item鐨勬暣浣撴牱寮�
+ arrowColor: '', // 绠ご鐨勯鑹�
+ hoverClass: '', // 澶撮儴鎸変笅鏃剁殑鏁堟灉鏍峰紡绫�
+ };
+ },
+ mounted() {
+ this.init();
+ },
+ watch: {
+ open(val) {
+ this.isShow = val;
+ }
+ },
+ computed: {
+ arrow() {
+ return this.uCollapse.arrow;
+ },
+ itemStyle() {
+ return this.uCollapse.itemStyle;
+ }
+ },
+ created() {
+ // 鑾峰彇u-collapse鐨勪俊鎭紝鏀惧湪u-collapse鏄负浜嗘柟渚匡紝涓嶇敤姣忎釜u-collapse-item鍐欎竴閬�
+ this.isShow = this.open;
+ this.nameSync = this.name ? this.name : this.uCollapse.childrens.length;
+ this.uCollapse.childrens.push(this);
+ //this.itemStyle = this.uCollapse.itemStyle;
+ this.headStyle = this.uCollapse.headStyle;
+ this.bodyStyle = this.uCollapse.bodyStyle;
+ this.arrowColor = this.uCollapse.arrowColor;
+ this.hoverClass = this.uCollapse.hoverClass;
+ },
+ methods: {
+ // 寮傛鑾峰彇鍐呭锛屾垨鑰呭姩鎬佷慨鏀逛簡鍐呭鏃讹紝闇�瑕侀噸鏂板垵濮嬪寲
+ init() {
+ this.$nextTick(() => {
+ this.queryRect();
+ });
+ },
+ // 鐐瑰嚮collapsehead澶撮儴
+ headClick() {
+ if (this.disabled) return;
+ if (this.uCollapse.accordion == true) {
+ this.uCollapse.childrens.map(val => {
+ // 鑷韩涓嶈缃负false锛屽洜涓哄悗闈㈡湁this.isShow = !this.isShow;澶勭悊浜�
+ if (this != val) {
+ val.isShow = false;
+ }
+ });
+ }
+
+ this.isShow = !this.isShow;
+ // 瑙﹀彂鏈粍浠剁殑浜嬩欢
+ this.$emit('change', {
+ index: this.index,
+ show: this.isShow
+ })
+ // 鍙湁鍦ㄦ墦寮�鏃舵墠鍙戝嚭浜嬩欢
+ if (this.isShow) this.uCollapse.onChange();
+ this.$forceUpdate();
+ },
+ // 鏌ヨ鍐呭楂樺害
+ queryRect() {
+ // $uGetRect涓簎View鑷甫鐨勮妭鐐规煡璇㈢畝鍖栨柟娉曪紝璇﹁鏂囨。浠嬬粛锛歨ttps://www.uviewui.com/js/getRect.html
+ // 缁勪欢鍐呴儴涓�鑸敤this.$uGetRect锛屽澶栫殑涓簍his.$u.getRect锛屼簩鑰呭姛鑳戒竴鑷达紝鍚嶇О涓嶅悓
+ this.$uGetRect('#' + this.elId).then(res => {
+ this.height = res.height;
+ })
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-collapse-head {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: $u-main-color;
+ font-size: 30rpx;
+ line-height: 1;
+ padding: 24rpx 0;
+ text-align: left;
+ }
+
+ .u-collapse-title {
+ flex: 1;
+ overflow: hidden;
+ }
+
+ .u-arrow-down-icon {
+ transition: all 0.3s;
+ margin-right: 20rpx;
+ margin-left: 14rpx;
+ }
+
+ .u-arrow-down-icon-active {
+ transform: rotate(180deg);
+ transform-origin: center center;
+ }
+
+ .u-collapse-body {
+ overflow: hidden;
+ transition: all 0.3s;
+ }
+
+ .u-collapse-content {
+ overflow: hidden;
+ font-size: 28rpx;
+ color: $u-tips-color;
+ text-align: left;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse/u-collapse.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse/u-collapse.vue"
new file mode 100644
index 0000000..f35d8fd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-collapse/u-collapse.vue"
@@ -0,0 +1,104 @@
+<template>
+ <view class="u-collapse">
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * collapse 鎵嬮鐞�
+ * @description 閫氳繃鎶樺彔闈㈡澘鏀剁撼鍐呭鍖哄煙
+ * @tutorial https://www.uviewui.com/components/collapse.html
+ * @property {Boolean} accordion 鏄惁鎵嬮鐞存ā寮忥紙榛樿true锛�
+ * @property {Boolean} arrow 鏄惁鏄剧ず鏍囬鍙充晶鐨勭澶达紙榛樿true锛�
+ * @property {String} arrow-color 鏍囬鍙充晶绠ご鐨勯鑹诧紙榛樿#909399锛�
+ * @property {Object} head-style 鏍囬鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} body-style 涓讳綋鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} hover-class 鏍峰紡绫诲悕锛屾寜涓嬫椂鏈夋晥锛堥粯璁-hover-class锛�
+ * @event {Function} change 褰撳墠婵�娲婚潰鏉垮睍寮�鏃惰Е鍙�(濡傛灉鏄墜椋庣惔妯″紡锛屽弬鏁癮ctiveNames绫诲瀷涓篠tring锛屽惁鍒欎负Array)
+ * @example <u-collapse></u-collapse>
+ */
+ export default {
+ name:"u-collapse",
+ props: {
+ // 鏄惁鎵嬮鐞存ā寮�
+ accordion: {
+ type: Boolean,
+ default: true
+ },
+ // 澶撮儴鐨勬牱寮�
+ headStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 涓讳綋鐨勬牱寮�
+ bodyStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 姣忎竴涓猧tem鐨勬牱寮�
+ itemStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勭澶�
+ arrow: {
+ type: Boolean,
+ default: true
+ },
+ // 绠ご鐨勯鑹�
+ arrowColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 鏍囬閮ㄥ垎鎸夊帇鏃剁殑鏍峰紡绫伙紝"none"涓烘棤鏁堟灉
+ hoverClass: {
+ type: String,
+ default: 'u-hover-class'
+ }
+ },
+ provide() {
+ return {
+ uCollapse: this
+ }
+ },
+ created() {
+ this.childrens = []
+ },
+ data() {
+ return {
+
+ }
+ },
+ methods: {
+ // 閲嶆柊鍒濆鍖栦竴娆″唴閮ㄧ殑鎵�鏈夊瓙鍏冪礌鐨勯珮搴﹁绠楋紝鐢ㄤ簬寮傛鑾峰彇鏁版嵁娓叉煋鐨勬儏鍐�
+ init() {
+ this.childrens.forEach((vm, index) => {
+ vm.init();
+ })
+ },
+ // collapse item琚偣鍑伙紝鐢眂ollapse item璋冪敤鐖剁粍浠舵柟娉�
+ onChange() {
+ let activeItem = [];
+ this.childrens.forEach((vm, index) => {
+ if (vm.isShow) {
+ activeItem.push(vm.nameSync);
+ }
+ })
+ // 濡傛灉鏄墜椋庣惔妯″紡锛屽彧鏈変竴涓尮閰嶇粨鏋滐紝涔熷嵆activeItem闀垮害涓�1锛屽皢鍏惰浆涓哄瓧绗︿覆
+ if (this.accordion) activeItem = activeItem.join('');
+ this.$emit('change', activeItem);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-column-notice/u-column-notice.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-column-notice/u-column-notice.vue"
new file mode 100644
index 0000000..3f1f6bb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-column-notice/u-column-notice.vue"
@@ -0,0 +1,233 @@
+<template>
+ <view
+ class="u-notice-bar"
+ :style="{
+ background: computeBgColor,
+ padding: padding
+ }"
+ :class="[
+ type ? `u-type-${type}-light-bg` : ''
+ ]"
+ >
+ <view class="u-icon-wrap">
+ <u-icon class="u-left-icon" v-if="volumeIcon" name="volume-fill" :size="volumeSize" :color="computeColor"></u-icon>
+ </view>
+ <swiper :disable-touch="disableTouch" @change="change" :autoplay="autoplay && playState == 'play'" :vertical="vertical" circular :interval="duration" class="u-swiper">
+ <swiper-item v-for="(item, index) in list" :key="index" class="u-swiper-item">
+ <view
+ class="u-news-item u-line-1"
+ :style="[textStyle]"
+ @tap="click(index)"
+ :class="['u-type-' + type]"
+ >
+ {{ item }}
+ </view>
+ </swiper-item>
+ </swiper>
+ <view class="u-icon-wrap">
+ <u-icon @click="getMore" class="u-right-icon" v-if="moreIcon" name="arrow-right" :size="26" :color="computeColor"></u-icon>
+ <u-icon @click="close" class="u-right-icon" v-if="closeIcon" name="close" :size="24" :color="computeColor"></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+export default {
+ props: {
+ // 鏄剧ず鐨勫唴瀹癸紝鏁扮粍
+ list: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 鏄剧ず鐨勪富棰橈紝success|error|primary|info|warning
+ type: {
+ type: String,
+ default: 'warning'
+ },
+ // 鏄惁鏄剧ず宸︿晶鐨勯煶閲忓浘鏍�
+ volumeIcon: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫彸绠ご鍥炬爣
+ moreIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫叧闂浘鏍�
+ closeIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鑷姩鎾斁
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 鏂囧瓧棰滆壊锛屽悇鍥炬爣涔熶細浣跨敤鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: ''
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 婊氬姩鏂瑰悜锛宺ow-姘村钩婊氬姩锛宑olumn-鍨傜洿婊氬姩
+ direction: {
+ type: String,
+ default: 'row'
+ },
+ // 鏄惁鏄剧ず
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 26
+ },
+ // 婊氬姩涓�涓懆鏈熺殑鏃堕棿闀匡紝鍗曚綅ms
+ duration: {
+ type: [Number, String],
+ default: 2000
+ },
+ // 闊抽噺鍠囧彮鐨勫ぇ灏�
+ volumeSize: {
+ type: [Number, String],
+ default: 34
+ },
+ // 姘村钩婊氬姩鏃剁殑婊氬姩閫熷害锛屽嵆姣忕婊氬姩澶氬皯rpx锛岃繖鏈夊埄浜庢帶鍒舵枃瀛楁棤璁哄灏戞椂锛岄兘鑳芥湁涓�涓亽瀹氱殑閫熷害
+ speed: {
+ type: Number,
+ default: 160
+ },
+ // 姘村钩婊氬姩鏃讹紝鏄惁閲囩敤琛旀帴褰㈠紡婊氬姩
+ isCircular: {
+ type: Boolean,
+ default: true
+ },
+ // 婊氬姩鏂瑰悜锛宧orizontal-姘村钩婊氬姩锛寁ertical-鍨傜洿婊氬姩
+ mode: {
+ type: String,
+ default: 'horizontal'
+ },
+ // 鎾斁鐘舵�侊紝play-鎾斁锛宲aused-鏆傚仠
+ playState: {
+ type: String,
+ default: 'play'
+ },
+ // 鏄惁绂佹鐢ㄦ墜婊戝姩鍒囨崲
+ // 鐩墠HX2.6.11锛屽彧鏀寔App 2.5.5+銆丠5 2.5.5+銆佹敮浠樺疂灏忕▼搴忋�佸瓧鑺傝烦鍔ㄥ皬绋嬪簭
+ disableTouch: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氱煡鐨勮竟璺�
+ padding: {
+ type: [Number, String],
+ default: '18rpx 24rpx'
+ }
+ },
+ computed: {
+ // 璁$畻瀛椾綋棰滆壊锛屽鏋滄病鏈夎嚜瀹氫箟鐨勶紝灏辩敤uview涓婚棰滆壊
+ computeColor() {
+ if (this.color) return this.color;
+ // 濡傛灉鏄棤涓婚锛屽氨榛樿浣跨敤content-color
+ else if(this.type == 'none') return '#606266';
+ else return this.type;
+ },
+ // 鏂囧瓧鍐呭鐨勬牱寮�
+ textStyle() {
+ let style = {};
+ if (this.color) style.color = this.color;
+ else if(this.type == 'none') style.color = '#606266';
+ style.fontSize = this.fontSize + 'rpx';
+ return style;
+ },
+ // 鍨傜洿鎴栬�呮按骞虫粴鍔�
+ vertical() {
+ if(this.mode == 'horizontal') return false;
+ else return true;
+ },
+ // 璁$畻鑳屾櫙棰滆壊
+ computeBgColor() {
+ if (this.bgColor) return this.bgColor;
+ else if(this.type == 'none') return 'transparent';
+ }
+ },
+ data() {
+ return {
+ // animation: false
+ };
+ },
+ methods: {
+ // 鐐瑰嚮閫氬憡鏍�
+ click(index) {
+ this.$emit('click', index);
+ },
+ // 鐐瑰嚮鍏抽棴鎸夐挳
+ close() {
+ this.$emit('close');
+ },
+ // 鐐瑰嚮鏇村绠ご鎸夐挳
+ getMore() {
+ this.$emit('getMore');
+ },
+ change(e) {
+ let index = e.detail.current;
+ if(index == this.list.length - 1) {
+ this.$emit('end');
+ }
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-notice-bar {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: nowrap;
+ padding: 18rpx 24rpx;
+ overflow: hidden;
+}
+
+.u-swiper {
+ font-size: 26rpx;
+ height: 32rpx;
+ display: flex;
+ align-items: center;
+ flex: 1;
+ margin-left: 12rpx;
+}
+
+.u-swiper-item {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+}
+
+.u-news-item {
+ overflow: hidden;
+}
+
+.u-right-icon {
+ margin-left: 12rpx;
+ display: inline-flex;
+ align-items: center;
+}
+
+.u-left-icon {
+ display: inline-flex;
+ align-items: center;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-down/u-count-down.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-down/u-count-down.vue"
new file mode 100644
index 0000000..75709ca
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-down/u-count-down.vue"
@@ -0,0 +1,315 @@
+<template>
+ <view class="u-countdown">
+ <view class="u-countdown-item" :style="[itemStyle]" v-if="showDays && (hideZeroDay || (!hideZeroDay && d != '0'))">
+ <view class="u-countdown-time" :style="[letterStyle]">
+ {{ d }}
+ </view>
+ </view>
+ <view
+ class="u-countdown-colon"
+ :style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
+ v-if="showDays && (hideZeroDay || (!hideZeroDay && d != '0'))"
+ >
+ {{ separator == 'colon' ? ':' : '澶�' }}
+ </view>
+ <view class="u-countdown-item" :style="[itemStyle]" v-if="showHours">
+ <view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
+ {{ h }}
+ </view>
+ </view>
+ <view
+ class="u-countdown-colon"
+ :style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
+ v-if="showHours"
+ >
+ {{ separator == 'colon' ? ':' : '鏃�' }}
+ </view>
+ <view class="u-countdown-item" :style="[itemStyle]" v-if="showMinutes">
+ <view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
+ {{ i }}
+ </view>
+ </view>
+ <view
+ class="u-countdown-colon"
+ :style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
+ v-if="showMinutes"
+ >
+ {{ separator == 'colon' ? ':' : '鍒�' }}
+ </view>
+ <view class="u-countdown-item" :style="[itemStyle]" v-if="showSeconds">
+ <view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
+ {{ s }}
+ </view>
+ </view>
+ <view
+ class="u-countdown-colon"
+ :style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
+ v-if="showSeconds && separator == 'zh'"
+ >
+ 绉�
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * countDown 鍊掕鏃�
+ * @description 璇ョ粍浠朵竴鑸娇鐢ㄤ簬鏌愪釜娲诲姩鐨勬埅姝㈡椂闂翠笂锛岄�氳繃鏁板瓧鐨勫彉鍖栵紝缁欑敤鎴锋槑纭殑鏃堕棿鎰熷彈锛屾彁绀虹敤鎴疯繘琛屾煇涓�涓涓烘搷浣溿��
+ * @tutorial https://www.uviewui.com/components/countDown.html
+ * @property {String Number} timestamp 鍊掕鏃讹紝鍗曚綅涓虹
+ * @property {Boolean} autoplay 鏄惁鑷姩寮�濮嬪�掕鏃讹紝濡傛灉涓篺alse锛岄渶鎵嬪姩璋冪敤寮�濮嬫柟娉曘�傝瀹樼綉璇存槑锛堥粯璁rue锛�
+ * @property {String} separator 鍒嗛殧绗︼紝colon涓鸿嫳鏂囧啋鍙凤紝zh涓轰腑鏂囷紙榛樿colon锛�
+ * @property {String Number} separator-size 鍒嗛殧绗︾殑瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�30锛�
+ * @property {String} separator-color 鍒嗛殧绗︾殑棰滆壊锛堥粯璁�#303133锛�
+ * @property {String Number} font-size 鍊掕鏃跺瓧浣撳ぇ灏忥紝鍗曚綅rpx锛堥粯璁�30锛�
+ * @property {Boolean} show-border 鏄惁鏄剧ず鍊掕鏃舵暟瀛楃殑杈规锛堥粯璁alse锛�
+ * @property {Boolean} hide-zero-day 褰�"澶�"鐨勯儴鍒嗕负0鏃讹紝闅愯棌璇ュ瓧娈� 锛堥粯璁rue锛�
+ * @property {String} border-color 鏁板瓧杈规鐨勯鑹诧紙榛樿#303133锛�
+ * @property {String} bg-color 鍊掕鏃舵暟瀛楃殑鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {String} color 鍊掕鏃舵暟瀛楃殑棰滆壊锛堥粯璁�#303133锛�
+ * @property {String} height 鏁板瓧楂樺害鍊�(瀹藉害绛夊悓姝ゅ��)锛岃缃竟妗嗘椂鐪嬫儏鍐垫槸鍚﹂渶瑕佽缃鍊硷紝鍗曚綅rpx锛堥粯璁uto锛�
+ * @property {Boolean} show-days 鏄惁鏄剧ず鍊掕鏃剁殑"澶�"閮ㄥ垎锛堥粯璁rue锛�
+ * @property {Boolean} show-hours 鏄惁鏄剧ず鍊掕鏃剁殑"鏃�"閮ㄥ垎锛堥粯璁rue锛�
+ * @property {Boolean} show-minutes 鏄惁鏄剧ず鍊掕鏃剁殑"鍒�"閮ㄥ垎锛堥粯璁rue锛�
+ * @property {Boolean} show-seconds 鏄惁鏄剧ず鍊掕鏃剁殑"绉�"閮ㄥ垎锛堥粯璁rue锛�
+ * @event {Function} end 鍊掕鏃剁粨鏉�
+ * @event {Function} change 姣忕瑙﹀彂涓�娆★紝鍥炶皟涓哄綋鍓嶅墿浣欑殑鍊掕绉掓暟
+ * @example <u-count-down ref="uCountDown" :timestamp="86400" :autoplay="false"></u-count-down>
+ */
+export default {
+ name: 'u-count-down',
+ props: {
+ // 鍊掕鏃剁殑鏃堕棿锛岀涓哄崟浣�
+ timestamp: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏄惁鑷姩寮�濮嬪�掕鏃�
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 鐢ㄨ嫳鏂囧啋鍙�(colon)鎴栬�呬腑鏂�(zh)褰撳仛鍒嗛殧绗︼紝false鐨勬椂鍊欎负涓枃锛屽锛�"11:22"鎴�"11鏃�22绉�"
+ separator: {
+ type: String,
+ default: 'colon'
+ },
+ // 鍒嗛殧绗︾殑澶у皬锛屽崟浣峳px
+ separatorSize: {
+ type: [Number, String],
+ default: 30
+ },
+ // 鍒嗛殧绗﹂鑹�
+ separatorColor: {
+ type: String,
+ default: "#303133"
+ },
+ // 瀛椾綋棰滆壊
+ color: {
+ type: String,
+ default: '#303133'
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 30
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#fff'
+ },
+ // 鏁板瓧妗嗛珮搴︼紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 'auto'
+ },
+ // 鏄惁鏄剧ず鏁板瓧妗�
+ showBorder: {
+ type: Boolean,
+ default: false
+ },
+ // 杈规棰滆壊
+ borderColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鏄惁鏄剧ず绉�
+ showSeconds: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鍒嗛挓
+ showMinutes: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず灏忔椂
+ showHours: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鈥滃ぉ鈥�
+ showDays: {
+ type: Boolean,
+ default: true
+ },
+ // 褰�"澶�"鐨勯儴鍒嗕负0鏃讹紝涓嶆樉绀�
+ hideZeroDay: {
+ type: Boolean,
+ default: false
+ }
+ },
+ watch: {
+ // 鐩戝惉鏃堕棿鎴崇殑鍙樺寲
+ timestamp(newVal, oldVal) {
+ // 濡傛灉鍊掕鏃堕棿鍙戠敓鍙樺寲锛屾竻闄ゅ畾鏃跺櫒锛岄噸鏂板紑濮嬪�掕鏃�
+ this.clearTimer();
+ this.start();
+ }
+ },
+ data() {
+ return {
+ d: '00', // 澶╃殑榛樿鍊�
+ h: '00', // 灏忔椂鐨勯粯璁ゅ��
+ i: '00', // 鍒嗛挓鐨勯粯璁ゅ��
+ s: '00', // 绉掔殑榛樿鍊�
+ timer: null ,// 瀹氭椂鍣�
+ seconds: 0, // 璁板綍涓嶅仠鍊掕杩囩▼涓彉鍖栫殑绉掓暟
+ };
+ },
+ computed: {
+ // 鍊掕鏃秈tem鐨勬牱寮忥紝item涓哄垎鍒殑鏃跺垎绉掗儴鍒嗙殑鏁板瓧
+ itemStyle() {
+ let style = {};
+ if(this.height) {
+ style.height = this.height + 'rpx';
+ style.width = this.height + 'rpx';
+ }
+ if(this.showBorder) {
+ style.borderStyle = 'solid';
+ style.borderColor = this.borderColor;
+ style.borderWidth = '1px';
+ }
+ if(this.bgColor) {
+ style.backgroundColor = this.bgColor;
+ }
+ return style;
+ },
+ // 鍊掕鏃舵暟瀛楃殑鏍峰紡
+ letterStyle() {
+ let style = {};
+ if(this.fontSize) style.fontSize = this.fontSize + 'rpx';
+ if(this.color) style.color = this.color;
+ return style;
+ }
+ },
+ mounted() {
+ // 濡傛灉鑷姩鍊掕鏃�
+ this.autoplay && this.timestamp && this.start();
+ },
+ methods: {
+ // 鍊掕鏃�
+ start() {
+ // 閬垮厤鍙兘鍑虹幇鐨勫�掕鏃堕噸鍙犳儏鍐�
+ this.clearTimer();
+ if (this.timestamp <= 0) return;
+ this.seconds = Number(this.timestamp);
+ this.formatTime(this.seconds);
+ this.timer = setInterval(() => {
+ this.seconds--;
+ // 鍙戝嚭change浜嬩欢
+ this.$emit('change', this.seconds);
+ if (this.seconds < 0) {
+ return this.end();
+ }
+ this.formatTime(this.seconds);
+ }, 1000);
+ },
+ // 鏍煎紡鍖栨椂闂�
+ formatTime(seconds) {
+ // 灏忎簬绛変簬0鐨勮瘽锛岀粨鏉熷�掕鏃�
+ seconds <= 0 && this.end();
+ let [day, hour, minute, second] = [0, 0, 0, 0];
+ day = Math.floor(seconds / (60 * 60 * 24));
+ // 鍒ゆ柇鏄惁鏄剧ず鈥滃ぉ鈥濆弬鏁帮紝濡傛灉涓嶆樉绀猴紝灏嗗ぉ閮ㄥ垎鐨勫�硷紝鍔犲叆鍒板皬鏃朵腑
+ // hour涓虹粰鍚庨潰璁$畻绉掑拰鍒嗙瓑鐢ㄧ殑(鍩轰簬鏄剧ず澶╃殑鍓嶆彁涓嬭绠�)
+ hour = Math.floor(seconds / (60 * 60)) - day * 24;
+ // showHour涓洪渶瑕佹樉绀虹殑灏忔椂
+ let showHour = null;
+ if(this.showDays) {
+ showHour = hour;
+ } else {
+ // 濡傛灉涓嶆樉绀哄ぉ鏁帮紝灏嗏�滃ぉ鈥濋儴鍒嗙殑鏃堕棿鎶樼畻鍒板皬鏃朵腑鍘�
+ showHour = Math.floor(seconds / (60 * 60));
+ }
+ minute = Math.floor(seconds / 60) - hour * 60 - day * 24 * 60;
+ second = Math.floor(seconds) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60;
+ // 濡傛灉灏忎簬10锛屽湪鍓嶉潰琛ヤ笂涓�涓�"0"
+ showHour = showHour < 10 ? '0' + showHour : showHour;
+ minute = minute < 10 ? '0' + minute : minute;
+ second = second < 10 ? '0' + second : second;
+ this.d = day;
+ this.h = showHour;
+ this.i = minute;
+ this.s = second;
+ },
+ // 鍋滄鍊掕鏃�
+ end() {
+ this.clearTimer();
+ this.$emit('end', {});
+ },
+ // 娓呴櫎瀹氭椂鍣�
+ clearTimer() {
+ if(this.timer) {
+ // 娓呴櫎瀹氭椂鍣�
+ clearInterval(this.timer);
+ this.timer = null;
+ }
+ }
+ },
+ beforeDestroy() {
+ clearInterval(this.timer);
+ this.timer = null;
+ }
+};
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-countdown {
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .u-countdown-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 2rpx;
+ border-radius: 6rpx;
+ white-space: nowrap;
+ transform: translateZ(0);
+ }
+
+ .u-countdown-time {
+ margin: 0;
+ padding: 0;
+ line-height: 1;
+ }
+
+ .u-countdown-colon {
+ display: flex;
+ justify-content: center;
+ padding: 0 5rpx;
+ line-height: 1;
+ align-items: center;
+ padding-bottom: 4rpx;
+ }
+
+ .u-countdown-scale {
+ transform: scale(0.9);
+ transform-origin: center center;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-to/u-count-to.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-to/u-count-to.vue"
new file mode 100644
index 0000000..83e3639
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-count-to/u-count-to.vue"
@@ -0,0 +1,239 @@
+<template>
+ <view
+ class="u-count-num"
+ :style="{
+ fontSize: fontSize + 'rpx',
+ fontWeight: bold ? 'bold' : 'normal',
+ color: color
+ }"
+ >
+ {{ displayValue }}
+ </view>
+</template>
+
+<script>
+/**
+ * countTo 鏁板瓧婊氬姩
+ * @description 璇ョ粍浠朵竴鑸敤浜庨渶瑕佹粴鍔ㄦ暟瀛楀埌鏌愪竴涓�肩殑鍦烘櫙锛岀洰鏍囪姹傛槸涓�涓�掑鐨勫�笺��
+ * @tutorial https://www.uviewui.com/components/countTo.html
+ * @property {String Number} start-val 寮�濮嬪��
+ * @property {String Number} end-val 缁撴潫鍊�
+ * @property {String Number} duration 婊氬姩杩囩▼鎵�闇�鐨勬椂闂达紝鍗曚綅ms锛堥粯璁�2000锛�
+ * @property {Boolean} autoplay 鏄惁鑷姩寮�濮嬫粴鍔紙榛樿true锛�
+ * @property {String Number} decimals 瑕佹樉绀虹殑灏忔暟浣嶆暟锛岃瀹樼綉璇存槑锛堥粯璁�0锛�
+ * @property {Boolean} use-easing 婊氬姩缁撴潫鏃讹紝鏄惁缂撳姩缁撳熬锛岃瀹樼綉璇存槑锛堥粯璁rue锛�
+ * @property {String} separator 鍗冧綅鍒嗛殧绗︼紝瑙佸畼缃戣鏄�
+ * @property {String} color 瀛椾綋棰滆壊锛堥粯璁�#303133锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�50锛�
+ * @property {Boolean} bold 瀛椾綋鏄惁鍔犵矖锛堥粯璁alse锛�
+ * @event {Function} end 鏁板�兼粴鍔ㄥ埌鐩爣鍊兼椂瑙﹀彂
+ * @example <u-count-to ref="uCountTo" :end-val="endVal" :autoplay="autoplay"></u-count-to>
+ */
+export default {
+ name: 'u-count-to',
+ props: {
+ // 寮�濮嬬殑鏁板�硷紝榛樿浠�0澧為暱鍒版煇涓�涓暟
+ startVal: {
+ type: [Number, String],
+ default: 0
+ },
+ // 瑕佹粴鍔ㄧ殑鐩爣鏁板�硷紝蹇呴』
+ endVal: {
+ type: [Number, String],
+ default: 0,
+ required: true
+ },
+ // 婊氬姩鍒扮洰鏍囨暟鍊肩殑鍔ㄧ敾鎸佺画鏃堕棿锛屽崟浣嶄负姣锛坢s锛�
+ duration: {
+ type: [Number, String],
+ default: 2000
+ },
+ // 璁剧疆鏁板�煎悗鏄惁鑷姩寮�濮嬫粴鍔�
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 瑕佹樉绀虹殑灏忔暟浣嶆暟
+ decimals: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏄惁鍦ㄥ嵆灏嗗埌杈剧洰鏍囨暟鍊肩殑鏃跺�欙紝浣跨敤缂撴參婊氬姩鐨勬晥鏋�
+ useEasing: {
+ type: Boolean,
+ default: true
+ },
+ // 鍗佽繘鍒跺垎鍓�
+ decimal: {
+ type: [Number, String],
+ default: '.'
+ },
+ // 瀛椾綋棰滆壊
+ color: {
+ type: String,
+ default: '#303133'
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: [Number, String],
+ default: 50
+ },
+ // 鏄惁鍔犵矖瀛椾綋
+ bold: {
+ type: Boolean,
+ default: false
+ },
+ // 鍗冧綅鍒嗛殧绗︼紝绫讳技閲戦鐨勫垎鍓�(锟�23,321.05涓殑",")
+ separator: {
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ localStartVal: this.startVal,
+ displayValue: this.formatNumber(this.startVal),
+ printVal: null,
+ paused: false, // 鏄惁鏆傚仠
+ localDuration: Number(this.duration),
+ startTime: null, // 寮�濮嬬殑鏃堕棿
+ timestamp: null, // 鏃堕棿鎴�
+ remaining: null, // 鍋滅暀鐨勬椂闂�
+ rAF: null,
+ lastTime: 0 // 涓婁竴娆$殑鏃堕棿
+ };
+ },
+ computed: {
+ countDown() {
+ return this.startVal > this.endVal;
+ }
+ },
+ watch: {
+ startVal() {
+ this.autoplay && this.start();
+ },
+ endVal() {
+ this.autoplay && this.start();
+ }
+ },
+ mounted() {
+ this.autoplay && this.start();
+ },
+ methods: {
+ easingFn(t, b, c, d) {
+ return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;
+ },
+ requestAnimationFrame(callback) {
+ const currTime = new Date().getTime();
+ // 涓轰簡浣縮etTimteout鐨勫敖鍙兘鐨勬帴杩戞瘡绉�60甯х殑鏁堟灉
+ const timeToCall = Math.max(0, 16 - (currTime - this.lastTime));
+ const id = setTimeout(() => {
+ callback(currTime + timeToCall);
+ }, timeToCall);
+ this.lastTime = currTime + timeToCall;
+ return id;
+ },
+
+ cancelAnimationFrame(id) {
+ clearTimeout(id);
+ },
+ // 寮�濮嬫粴鍔ㄦ暟瀛�
+ start() {
+ this.localStartVal = this.startVal;
+ this.startTime = null;
+ this.localDuration = this.duration;
+ this.paused = false;
+ this.rAF = this.requestAnimationFrame(this.count);
+ },
+ // 鏆傚畾鐘舵�侊紝閲嶆柊鍐嶅紑濮嬫粴鍔紱鎴栬�呮粴鍔ㄧ姸鎬佷笅锛屾殏鍋�
+ reStart() {
+ if (this.paused) {
+ this.resume();
+ this.paused = false;
+ } else {
+ this.stop();
+ this.paused = true;
+ }
+ },
+ // 鏆傚仠
+ stop() {
+ this.cancelAnimationFrame(this.rAF);
+ },
+ // 閲嶆柊寮�濮�(鏆傚仠鐨勬儏鍐典笅)
+ resume() {
+ this.startTime = null;
+ this.localDuration = this.remaining;
+ this.localStartVal = this.printVal;
+ this.requestAnimationFrame(this.count);
+ },
+ // 閲嶇疆
+ reset() {
+ this.startTime = null;
+ this.cancelAnimationFrame(this.rAF);
+ this.displayValue = this.formatNumber(this.startVal);
+ },
+ count(timestamp) {
+ if (!this.startTime) this.startTime = timestamp;
+ this.timestamp = timestamp;
+ const progress = timestamp - this.startTime;
+ this.remaining = this.localDuration - progress;
+ if (this.useEasing) {
+ if (this.countDown) {
+ this.printVal = this.localStartVal - this.easingFn(progress, 0, this.localStartVal - this.endVal, this.localDuration);
+ } else {
+ this.printVal = this.easingFn(progress, this.localStartVal, this.endVal - this.localStartVal, this.localDuration);
+ }
+ } else {
+ if (this.countDown) {
+ this.printVal = this.localStartVal - (this.localStartVal - this.endVal) * (progress / this.localDuration);
+ } else {
+ this.printVal = this.localStartVal + (this.endVal - this.localStartVal) * (progress / this.localDuration);
+ }
+ }
+ if (this.countDown) {
+ this.printVal = this.printVal < this.endVal ? this.endVal : this.printVal;
+ } else {
+ this.printVal = this.printVal > this.endVal ? this.endVal : this.printVal;
+ }
+ this.displayValue = this.formatNumber(this.printVal);
+ if (progress < this.localDuration) {
+ this.rAF = this.requestAnimationFrame(this.count);
+ } else {
+ this.$emit('end');
+ }
+ },
+ // 鍒ゆ柇鏄惁鏁板瓧
+ isNumber(val) {
+ return !isNaN(parseFloat(val));
+ },
+ formatNumber(num) {
+ // 灏唍um杞负Number绫诲瀷锛屽洜涓哄叾鍊煎彲鑳戒负瀛楃涓叉暟鍊硷紝璋冪敤toFixed浼氭姤閿�
+ num = Number(num);
+ num = num.toFixed(Number(this.decimals));
+ num += '';
+ const x = num.split('.');
+ let x1 = x[0];
+ const x2 = x.length > 1 ? this.decimal + x[1] : '';
+ const rgx = /(\d+)(\d{3})/;
+ if (this.separator && !this.isNumber(this.separator)) {
+ while (rgx.test(x1)) {
+ x1 = x1.replace(rgx, '$1' + this.separator + '$2');
+ }
+ }
+ return x1 + x2;
+ },
+ destroyed() {
+ this.cancelAnimationFrame(this.rAF);
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-count-num {
+ display: inline-block;
+ text-align: center;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-divider/u-divider.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-divider/u-divider.vue"
new file mode 100644
index 0000000..b392a8a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-divider/u-divider.vue"
@@ -0,0 +1,151 @@
+<template>
+ <view class="u-divider" :style="{
+ height: height == 'auto' ? 'auto' : height + 'rpx',
+ backgroundColor: bgColor,
+ marginBottom: marginBottom + 'rpx',
+ marginTop: marginTop + 'rpx'
+ }" @tap="click">
+ <view class="u-divider-line" :class="[type ? 'u-divider-line--bordercolor--' + type : '']" :style="[lineStyle]"></view>
+ <view v-if="useSlot" class="u-divider-text" :style="{
+ color: color,
+ fontSize: fontSize + 'rpx'
+ }"><slot /></view>
+ <view class="u-divider-line" :class="[type ? 'u-divider-line--bordercolor--' + type : '']" :style="[lineStyle]"></view>
+ </view>
+</template>
+
+<script>
+/**
+ * divider 鍒嗗壊绾�
+ * @description 鍖洪殧鍐呭鐨勫垎鍓茬嚎锛屼竴鑸敤浜庨〉闈㈠簳閮�"娌℃湁鏇村"鐨勬彁绀恒��
+ * @tutorial https://www.uviewui.com/components/divider.html
+ * @property {String Number} half-width 鏂囧瓧宸︽垨鍙宠竟绾挎潯瀹藉害锛屾暟鍊兼垨鐧惧垎姣旓紝鏁板�兼椂鍗曚綅涓簉px
+ * @property {String} border-color 绾挎潯棰滆壊锛屼紭鍏堢骇楂樹簬type锛堥粯璁�#dcdfe6锛�
+ * @property {String} color 鏂囧瓧棰滆壊锛堥粯璁�#909399锛�
+ * @property {String Number} fontSize 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�26锛�
+ * @property {String} bg-color 鏁翠釜divider鐨勮儗鏅鑹诧紙榛樿鍛�#ffffff锛�
+ * @property {String Number} height 鏁翠釜divider鐨勯珮搴︼紝鍗曚綅rpx锛堥粯璁�40锛�
+ * @property {String} type 灏嗙嚎鏉¤缃富棰樿壊锛堥粯璁rimary锛�
+ * @property {Boolean} useSlot 鏄惁浣跨敤slot浼犲叆鍐呭锛屽鏋滀笉浼犲叆锛屼腑闂翠笉浼氭湁绌洪殭锛堥粯璁rue锛�
+ * @property {String Number} margin-top 涓庡墠涓�涓粍浠剁殑璺濈锛屽崟浣峳px锛堥粯璁�0锛�
+ * @property {String Number} margin-bottom 涓庡悗涓�涓粍浠剁殑璺濈锛屽崟浣峳px锛�0锛�
+ * @event {Function} click divider缁勪欢琚偣鍑绘椂瑙﹀彂
+ * @example <u-divider color="#fa3534">闀挎渤钀芥棩鍦�</u-divider>
+ */
+export default {
+ name: 'u-divider',
+ props: {
+ // 鍗曚竴杈筪ivider妯嚎鐨勫搴�(鏁板��)锛屽崟浣峳px銆傛垨鑰呯櫨鍒嗘瘮
+ halfWidth: {
+ type: [Number, String],
+ default: 150
+ },
+ // divider妯嚎鐨勯鑹诧紝濡傝缃紝
+ borderColor: {
+ type: String,
+ default: '#dcdfe6'
+ },
+ // 涓婚鑹诧紝鍙互鏄痯rimary|info|success|warning|error涔嬩竴鍊�
+ type: {
+ type: String,
+ default: 'primary'
+ },
+ // 鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: '#909399'
+ },
+ // 鏂囧瓧澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 26
+ },
+ // 鏁翠釜divider鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鏁翠釜divider鐨勯珮搴﹀崟浣峳px
+ height: {
+ type: [Number, String],
+ default: 'auto'
+ },
+ // 涓婅竟璺�
+ marginTop: {
+ type: [String, Number],
+ default: 0
+ },
+ // 涓嬭竟璺�
+ marginBottom: {
+ type: [String, Number],
+ default: 0
+ },
+ // 鏄惁浣跨敤slot浼犲叆鍐呭锛屽鏋滀笉鐢╯lot浼犲叆鍐呭锛屽厛鐨勪腑闂村氨涓嶄細鏈夌┖闅�
+ useSlot: {
+ type: Boolean,
+ default: true
+ }
+ },
+ computed: {
+ lineStyle() {
+ let style = {};
+ if(String(this.halfWidth).indexOf('%') != -1) style.width = this.halfWidth;
+ else style.width = this.halfWidth + 'rpx';
+ // borderColor浼樺厛绾ч珮浜巘ype鍊�
+ if(this.borderColor) style.borderColor = this.borderColor;
+ return style;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+.u-divider {
+ width: 100%;
+ position: relative;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ overflow: hidden;
+ flex-direction: row;
+}
+
+.u-divider-line {
+ border-bottom: 1px solid $u-border-color;
+ transform: scale(1, 0.5);
+ transform-origin: center;
+
+ &--bordercolor--primary {
+ border-color: $u-type-primary;
+ }
+
+ &--bordercolor--success {
+ border-color: $u-type-success;
+ }
+
+ &--bordercolor--error {
+ border-color: $u-type-primary;
+ }
+
+ &--bordercolor--info {
+ border-color: $u-type-info;
+ }
+
+ &--bordercolor--warning {
+ border-color: $u-type-warning;
+ }
+}
+
+.u-divider-text {
+ white-space: nowrap;
+ padding: 0 16rpx;
+ display: inline-flex;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue"
new file mode 100644
index 0000000..ab797f3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue"
@@ -0,0 +1,108 @@
+<template>
+ <view class="u-dropdown-item" v-if="active" @touchmove.stop.prevent @tap.stop.prevent>
+ <view class="u-dropdown-item__options" v-if="!$slots.default">
+ <u-cell-group>
+ <u-cell-item @click="cellClick(item.value)" :arrow="false" :title="item.label" v-for="(item, index) in options" :key="index" :title-style="{
+ color: value == item.value ? activeColor : inactiveColor
+ }">
+ <u-icon v-if="value == item.value" name="checkbox-mark" :color="activeColor" size="32"></u-icon>
+ </u-cell-item>
+ </u-cell-group>
+ </view>
+ <slot v-else />
+ </view>
+</template>
+
+<script>
+ export default {
+ name: 'u-dropdown-item',
+ props: {
+ // 褰撳墠閫変腑椤圭殑value鍊�
+ value: {
+ type: [Number, String, Array],
+ default: ''
+ },
+ // 鑿滃崟椤规爣棰�
+ title: {
+ type: [String, Number],
+ default: ''
+ },
+ // 閫夐」鏁版嵁锛屽鏋滀紶鍏ヤ簡榛樿slot锛屾鍙傛暟鏃犳晥
+ options: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ // 鏄惁绂佺敤姝よ彍鍗曢」
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ },
+ data() {
+ return {
+ active: false, // 褰撳墠椤规槸鍚﹀浜庡睍寮�鐘舵��
+ activeColor: '#2979ff', // 婵�娲绘椂宸﹁竟鏂囧瓧鍜屽彸杈瑰鍕惧浘鏍囩殑棰滆壊
+ inactiveColor: '#606266', // 鏈縺娲绘椂宸﹁竟鏂囧瓧鍜屽彸杈瑰鍕惧浘鏍囩殑棰滆壊
+ }
+ },
+ computed: {
+ // 鐩戝惉props鏄惁鍙戠敓浜嗗彉鍖栵紝鏈変簺鍊奸渶瑕佷紶閫掔粰鐖剁粍浠秛-dropdown锛屾棤娉曞弻鍚戠粦瀹�
+ propsChange() {
+ return `${this.title}-${this.disabled}`;
+ }
+ },
+ watch: {
+ propsChange(n) {
+ // 褰撳�煎彉鍖栨椂锛岄�氱煡鐖剁粍浠堕噸鏂板垵濮嬪寲锛岃鐖剁粍浠舵墽琛屾瘡涓瓙缁勪欢鐨刬nit()鏂规硶
+ // 灏嗘墍鏈夊瓙缁勪欢鏁版嵁閲嶆柊鏁寸悊涓�閬�
+ if(this.parent) this.parent.init();
+ }
+ },
+ created() {
+ // 鐖剁粍浠剁殑瀹炰緥
+ this.parent = false;
+ },
+ methods: {
+ init() {
+ // 鑾峰彇鐖剁粍浠秛-dropdown
+ let parent = this.$u.$parent.call(this, 'u-dropdown');
+ if(parent) {
+ this.parent = parent;
+ // 灏嗗瓙缁勪欢鐨勬縺娲婚鑹查厤缃负鐖剁粍浠惰缃殑婵�娲诲拰鏈縺娲绘椂鐨勯鑹�
+ this.activeColor = parent.activeColor;
+ this.inactiveColor = parent.inactiveColor;
+ // 灏嗘湰缁勪欢鐨則his锛屾斁鍏ュ埌鐖剁粍浠剁殑children鏁扮粍涓紝璁╃埗缁勪欢鍙互鎿嶄綔鏈�(瀛�)缁勪欢鐨勬柟娉曞拰灞炴��
+ // push杩涘幓鍓嶏紝鏄惧垽鏂槸鍚﹀凡缁忓瓨鍦ㄤ簡鏈疄渚嬶紝鍥犱负鍦ㄥ瓙缁勪欢鍐呴儴鏁版嵁鍙樺寲鏃讹紝浼氶�氳繃鐖剁粍浠堕噸鏂板垵濮嬪寲瀛愮粍浠�
+ let exist = parent.children.find(val => {
+ return this === val;
+ })
+ if(!exist) parent.children.push(this);
+ if(parent.children.length == 1) this.active = true;
+ // 鐖剁粍浠舵棤娉曠洃鍚琧hildren鐨勫彉鍖栵紝鏁呭皢瀛愮粍浠剁殑title锛屼紶鍏ョ埗缁勪欢鐨刴enuList鏁扮粍涓�
+ parent.menuList.push({
+ title: this.title,
+ disabled: this.disabled
+ });
+ }
+ },
+ // cell琚偣鍑�
+ cellClick(value) {
+ // 淇敼閫氳繃v-model缁戝畾鐨勫��
+ this.$emit('input', value);
+ // 閫氱煡鐖剁粍浠�(u-dropdown)鏀惰捣鑿滃崟
+ this.parent.close();
+ // 鍙戝嚭浜嬩欢锛屾姏鍑哄綋鍓嶅嬀閫夐」鐨剉alue
+ this.$emit('change', value);
+ }
+ },
+ mounted() {
+ this.init();
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown/u-dropdown.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown/u-dropdown.vue"
new file mode 100644
index 0000000..b56e9d4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-dropdown/u-dropdown.vue"
@@ -0,0 +1,231 @@
+<template>
+ <view class="u-dropdown">
+ <view class="u-dropdown__menu" :style="{
+ height: $u.addUnit(height)
+ }" :class="{
+ 'u-border-bottom': borderBottom
+ }">
+ <view class="u-dropdown__menu__item" v-for="(item, index) in menuList" :key="index" @tap.stop="menuClick(index)">
+ <view class="u-flex">
+ <text class="u-dropdown__menu__item__text" :style="{
+ color: item.disabled ? '#c0c4cc' : (index === current || highlightIndex == index) ? activeColor : inactiveColor,
+ fontSize: $u.addUnit(titleSize)
+ }">{{item.title}}</text>
+ <view class="u-dropdown__menu__item__arrow" :class="{
+ 'u-dropdown__menu__item__arrow--rotate': index === current
+ }">
+ <u-icon :custom-style="{display: 'flex'}" name="arrow-down" size="26" :color="index === current || highlightIndex == index ? activeColor : '#c0c4cc'"></u-icon>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="u-dropdown__content" :style="[contentStyle, {
+ transition: `opacity ${duration / 1000}s linear`
+ }]" @tap="maskClick" @touchmove.stop.prevent>
+ <view @tap.stop.prevent class="u-dropdown__content__popup" :style="[popupStyle]">
+ <slot></slot>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name: 'u-dropdown',
+ props: {
+ // 鑿滃崟鏍囬鍜岄�夐」鐨勬縺娲绘�侀鑹�
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鑿滃崟鏍囬鍜岄�夐」鐨勬湭婵�娲绘�侀鑹�
+ inactiveColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 鐐瑰嚮閬僵鏄惁鍏抽棴鑿滃崟
+ closeOnClickMask: {
+ type: Boolean,
+ default: true
+ },
+ // 鐐瑰嚮褰撳墠婵�娲婚」鏍囬鏄惁鍏抽棴鑿滃崟
+ closeOnClickSelf: {
+ type: Boolean,
+ default: true
+ },
+ // 杩囨浮鏃堕棿
+ duration: {
+ type: [Number, String],
+ default: 300
+ },
+ // 鏍囬鑿滃崟鐨勯珮搴︼紝鍗曚綅浠绘剰锛屾暟鍊奸粯璁や负rpx鍗曚綅
+ height: {
+ type: [Number, String],
+ default: 80
+ },
+ // 鏄惁鏄剧ず涓嬭竟妗�
+ borderBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏍囬鐨勫瓧浣撳ぇ灏�
+ titleSize: {
+ type: [Number, String],
+ default: 28
+ }
+ },
+ data() {
+ return {
+ showDropdown: true, // 鏄惁鎵撳紑涓嬫潵鑿滃崟,
+ menuList: [], // 鏄剧ず鐨勮彍鍗�
+ active: false, // 涓嬫媺鑿滃崟鐨勭姸鎬�
+ // 褰撳墠鏄鍑犱釜鑿滃崟澶勪簬婵�娲荤姸鎬侊紝灏忕▼搴忎腑姝ゅ涓嶈兘鍐欐垚false鎴栬��""锛屽惁鍒欏悗缁皢current璧嬪�间负0锛�
+ // 鏃犺兘鐨凾X娌℃湁浣跨敤===鑰屾槸浣跨敤==鍒ゆ柇锛屽鑷寸▼搴忚涓哄墠鍚庝簩鑰呮病鏈夊彉鍖栵紝浠庤�屼笉浼氳Е鍙戣鍥炬洿鏂�
+ current: 99999,
+ // 澶栧眰鍐呭鐨勬牱寮忥紝鍒濆鏃跺浜庡簳灞傦紝涓旈�忔槑
+ contentStyle: {
+ zIndex: -1,
+ opacity: 0
+ },
+ // 璁╂煇涓彍鍗曚繚鎸侀珮浜殑鐘舵��
+ highlightIndex: 99999
+ }
+ },
+ computed: {
+ // 涓嬫媺鍑烘潵閮ㄥ垎鐨勬牱寮�
+ popupStyle() {
+ let style = {};
+ // 杩涜Y杞翠綅绉伙紝灞曞紑鐘舵�佹椂锛屾仮澶嶅師浣嶃�傛敹榻愮姸鎬佹椂锛屽線涓婁綅绉�100%锛岃繘琛岄殣钘�
+ style.transform = `translateY(${this.active ? 0 : '-100%'})`
+ return style;
+ }
+ },
+ created() {
+ // 寮曠敤鎵�鏈夊瓙缁勪欢(u-dropdown-item)鐨則his锛屼笉鑳藉湪data涓0鏄庡彉閲忥紝鍚﹀垯鍦ㄥ井淇″皬绋嬪簭浼氶�犳垚寰幆寮曠敤鑰屾姤閿�
+ this.children = [];
+ },
+ methods: {
+ init() {
+ // 褰撴煇涓瓙缁勪欢鍐呭鍙樺寲鏃讹紝瑙﹀彂鐖剁粍浠剁殑init锛岀埗缁勪欢鍐嶈姣忎竴涓瓙缁勪欢閲嶆柊鍒濆鍖栦竴閬�
+ // 浠ヤ繚璇佹暟鎹殑姝g‘鎬�
+ this.menuList = [];
+ this.children.map(child => {
+ child.init();
+ })
+ },
+ // 鐐瑰嚮鑿滃崟
+ menuClick(index) {
+ // 鍒ゆ柇鏄惁琚鐢�
+ if(this.menuList[index].disabled) return ;
+ // 濡傛灉鐐瑰嚮鏃剁殑绱㈠紩鍜屽綋鍓嶆縺娲婚」绱㈠紩鐩稿悓锛屾剰鍛崇潃鐐瑰嚮浜嗘縺娲婚」锛岄渶瑕佹敹璧蜂笅鎷夎彍鍗�
+ if (index === this.current && this.closeOnClickSelf) {
+ this.close();
+ // 绛夊姩鐢荤粨鏉熷悗锛屽啀绉婚櫎涓嬫媺鑿滃崟涓殑鍐呭锛屽惁鍒欑洿鎺ョЩ闄わ紝涔熷氨娌℃湁涓嬫媺鑿滃崟鏀惰捣鐨勬晥鏋滀簡
+ setTimeout(() => {
+ this.children[index].active = false;
+ }, this.duration)
+ return;
+ }
+ this.open(index);
+ },
+ // 鎵撳紑涓嬫媺鑿滃崟
+ open(index) {
+ // 閲嶇疆楂樹寒绱㈠紩锛屽惁鍒欎細閫犳垚澶氫釜鑿滃崟鍚屾椂楂樹寒
+ // this.highlightIndex = 9999;
+ // 灞曞紑鏃讹紝璁剧疆涓嬫媺鍐呭鐨勬牱寮�
+ this.contentStyle = {
+ zIndex: 11,
+ opacity: 1
+ }
+ // 鏍囪灞曞紑鐘舵�佷互鍙婂綋鍓嶅睍寮�椤圭殑绱㈠紩
+ this.active = true;
+ this.current = index;
+ // 鍘嗛亶鎵�鏈夌殑瀛愬厓绱狅紝灏嗙储寮曞尮閰嶇殑椤规爣璁颁负婵�娲荤姸鎬侊紝鍥犱负瀛愬厓绱犳槸閫氳繃v-if鎺у埗鍒囨崲鐨�
+ // 涔嬫墍浠ヤ笉鏄洜display: none锛屾槸鍥犱负nvue娌℃湁display杩欎釜灞炴��
+ this.children.map((val, idx) => {
+ val.active = index == idx ? true : false;
+ })
+ this.$emit('open', this.current);
+ },
+ // 璁剧疆涓嬫媺鑿滃崟澶勪簬鏀惰捣鐘舵��
+ close() {
+ this.$emit('close', this.current);
+ // 璁剧疆涓烘敹璧风姸鎬侊紝鍚屾椂current褰掍綅锛岃缃负绌哄瓧绗︿覆
+ this.active = false;
+ this.current = 99999;
+ // 涓嬫媺鍐呭鐨勬牱寮忚繘琛岃皟鏁达紝涓嶉�忔槑搴﹁缃负0
+ this.contentStyle = {
+ zIndex: -1,
+ opacity: 0
+ }
+ },
+ // 鐐瑰嚮閬僵
+ maskClick() {
+ // 濡傛灉涓嶅厑璁哥偣鍑婚伄缃╋紝鐩存帴杩斿洖
+ if(!this.closeOnClickMask) return;
+ this.close();
+ },
+ // 澶栭儴鎵嬪姩璁剧疆鏌愪釜鑿滃崟楂樹寒
+ highlight(index = undefined) {
+ this.highlightIndex = index !== undefined ? index : 99999;
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-dropdown {
+ flex: 1;
+ width: 100%;
+
+ &__menu {
+ display: flex;
+ position: relative;
+ z-index: 11;
+ height: 80rpx;
+
+ &__item {
+ flex: 1;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ &__text {
+ font-size: 28rpx;
+ color: $u-content-color;
+ }
+
+ &__arrow {
+ margin-left: 6rpx;
+ transition: transform .3s;
+ align-items: center;
+ display: flex;
+
+ &--rotate {
+ transform: rotate(180deg);
+ }
+ }
+ }
+ }
+
+ &__content {
+ position: absolute;
+ z-index: 11;
+ height: 100%;
+ width: 100%;
+ left: 0px;
+ overflow: hidden;
+ background: rgba(0, 0, 0, .3);
+ opacity: 0;
+
+ &__popup {
+ z-index: 11;
+ transition: all 0.3s;
+ transform: translate3D(0, -100%, 0);
+ }
+ }
+
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-empty/u-empty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-empty/u-empty.vue"
new file mode 100644
index 0000000..5b074f2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-empty/u-empty.vue"
@@ -0,0 +1,193 @@
+<template>
+ <view class="u-empty" v-if="show" :style="{
+ marginTop: marginTop + 'rpx'
+ }">
+ <u-icon
+ :name="src ? src : 'empty-' + mode"
+ :custom-style="iconStyle"
+ :label="text ? text : icons[mode]"
+ label-pos="bottom"
+ :label-color="color"
+ :label-size="fontSize"
+ :size="iconSize"
+ :color="iconColor"
+ margin-top="14"
+ ></u-icon>
+ <view class="u-slot-wrap">
+ <slot name="bottom"></slot>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * empty 鍐呭涓虹┖
+ * @description 璇ョ粍浠剁敤浜庨渶瑕佸姞杞藉唴瀹癸紝浣嗘槸鍔犺浇鐨勭涓�椤垫暟鎹氨涓虹┖锛屾彁绀轰竴涓�"娌℃湁鍐呭"鐨勫満鏅紝 鎴戜滑绮惧績鎸戦�変簡鍗佸嚑涓満鏅殑鍥炬爣锛屾柟渚挎偍浣跨敤銆�
+ * @tutorial https://www.uviewui.com/components/empty.html
+ * @property {String} color 鏂囧瓧棰滆壊锛堥粯璁�#c0c4cc锛�
+ * @property {String} text 鏂囧瓧鎻愮ず锛堥粯璁も�滄棤鍐呭鈥濓級
+ * @property {String} src 鑷畾涔夊浘鏍囪矾寰勶紝濡傚畾涔夛紝mode鍙傛暟浼氬け鏁�
+ * @property {String Number} font-size 鎻愮ず鏂囧瓧鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�28锛�
+ * @property {String} mode 鍐呯疆鐨勫浘鏍囷紝瑙佸畼缃戣鏄庯紙榛樿data锛�
+ * @property {String Number} img-width 鍥炬爣鐨勫搴︼紝鍗曚綅rpx锛堥粯璁�240锛�
+ * @property {String} img-height 鍥炬爣鐨勯珮搴︼紝鍗曚綅rpx锛堥粯璁uto锛�
+ * @property {String Number} margin-top 缁勪欢璺濈涓婁竴涓厓绱犱箣闂寸殑璺濈锛堥粯璁�0锛�
+ * @property {Boolean} show 鏄惁鏄剧ず缁勪欢锛堥粯璁rue锛�
+ * @event {Function} click 鐐瑰嚮缁勪欢鏃惰Е鍙�
+ * @event {Function} close 鐐瑰嚮鍏抽棴鎸夐挳鏃惰Е鍙�
+ * @example <u-empty text="鎵�璋撲紛浜猴紝鍦ㄦ按涓�鏂�" mode="list"></u-empty>
+ */
+ export default {
+ name: "u-empty",
+ props: {
+ // 鍥炬爣璺緞
+ src: {
+ type: String,
+ default: ''
+ },
+ // 鎻愮ず鏂囧瓧
+ text: {
+ type: String,
+ default: ''
+ },
+ // 鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: '#c0c4cc'
+ },
+ // 鍥炬爣鐨勯鑹�
+ iconColor: {
+ type: String,
+ default: '#c0c4cc'
+ },
+ // 鍥炬爣鐨勫ぇ灏�
+ iconSize: {
+ type: [String, Number],
+ default: 120
+ },
+ // 鏂囧瓧澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [String, Number],
+ default: 26
+ },
+ // 閫夋嫨棰勭疆鐨勫浘鏍囩被鍨�
+ mode: {
+ type: String,
+ default: 'data'
+ },
+ // 鍥炬爣瀹藉害锛屽崟浣峳px
+ imgWidth: {
+ type: [String, Number],
+ default: 120
+ },
+ // 鍥炬爣楂樺害锛屽崟浣峳px
+ imgHeight: {
+ type: [String, Number],
+ default: 'auto'
+ },
+ // 鏄惁鏄剧ず缁勪欢
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 缁勪欢璺濈涓婁竴涓厓绱犱箣闂寸殑璺濈
+ marginTop: {
+ type: [String, Number],
+ default: 0
+ },
+ iconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ icons: {
+ car: '璐墿杞︿负绌�',
+ page: '椤甸潰涓嶅瓨鍦�',
+ search: '娌℃湁鎼滅储缁撴灉',
+ address: '娌℃湁鏀惰揣鍦板潃',
+ wifi: '娌℃湁WiFi',
+ order: '璁㈠崟涓虹┖',
+ coupon: '娌℃湁浼樻儬鍒�',
+ favor: '鏆傛棤鏀惰棌',
+ permission: '鏃犳潈闄�',
+ history: '鏃犲巻鍙茶褰�',
+ news: '鏃犳柊闂诲垪琛�',
+ message: '娑堟伅鍒楄〃涓虹┖',
+ list: '鍒楄〃涓虹┖',
+ data: '鏁版嵁涓虹┖'
+ },
+ // icons: [{
+ // icon: 'car',
+ // text: '璐墿杞︿负绌�'
+ // },{
+ // icon: 'page',
+ // text: '椤甸潰涓嶅瓨鍦�'
+ // },{
+ // icon: 'search',
+ // text: '娌℃湁鎼滅储缁撴灉'
+ // },{
+ // icon: 'address',
+ // text: '娌℃湁鏀惰揣鍦板潃'
+ // },{
+ // icon: 'wifi',
+ // text: '娌℃湁WiFi'
+ // },{
+ // icon: 'order',
+ // text: '璁㈠崟涓虹┖'
+ // },{
+ // icon: 'coupon',
+ // text: '娌℃湁浼樻儬鍒�'
+ // },{
+ // icon: 'favor',
+ // text: '鏆傛棤鏀惰棌'
+ // },{
+ // icon: 'permission',
+ // text: '鏃犳潈闄�'
+ // },{
+ // icon: 'history',
+ // text: '鏃犲巻鍙茶褰�'
+ // },{
+ // icon: 'news',
+ // text: '鏃犳柊闂诲垪琛�'
+ // },{
+ // icon: 'message',
+ // text: '娑堟伅鍒楄〃涓虹┖'
+ // },{
+ // icon: 'list',
+ // text: '鍒楄〃涓虹┖'
+ // },{
+ // icon: 'data',
+ // text: '鏁版嵁涓虹┖'
+ // }],
+
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-empty {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+ }
+
+ .u-image {
+ margin-bottom: 20rpx;
+ }
+
+ .u-slot-wrap {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-top: 20rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-field/u-field.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-field/u-field.vue"
new file mode 100644
index 0000000..eb2fb70
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-field/u-field.vue"
@@ -0,0 +1,382 @@
+<template>
+ <view class="u-field" :class="{'u-border-top': borderTop, 'u-border-bottom': borderBottom }">
+ <view class="u-field-inner" :class="[type == 'textarea' ? 'u-textarea-inner' : '', 'u-label-postion-' + labelPosition]">
+ <view class="u-label" :class="[required ? 'u-required' : '']" :style="{
+ justifyContent: justifyContent,
+ flex: labelPosition == 'left' ? `0 0 ${labelWidth}rpx` : '1'
+ }">
+ <view class="u-icon-wrap" v-if="icon">
+ <u-icon size="32" :custom-style="iconStyle" :name="icon" :color="iconColor" class="u-icon"></u-icon>
+ </view>
+ <slot name="icon"></slot>
+ <text class="u-label-text" :class="[this.$slots.icon || icon ? 'u-label-left-gap' : '']">{{ label }}</text>
+ </view>
+ <view class="fild-body">
+ <view class="u-flex-1 u-flex" :style="[inputWrapStyle]">
+ <textarea v-if="type == 'textarea'" class="u-flex-1 u-textarea-class" :style="[fieldStyle]" :value="value"
+ :placeholder="placeholder" :placeholderStyle="placeholderStyle" :disabled="disabled" :maxlength="inputMaxlength"
+ :focus="focus" :autoHeight="autoHeight" :fixed="fixed" @input="onInput" @blur="onBlur" @focus="onFocus" @confirm="onConfirm"
+ @tap="fieldClick" />
+ <input
+ v-else
+ :style="[fieldStyle]"
+ :type="type"
+ class="u-flex-1 u-field__input-wrap"
+ :value="value"
+ :password="password || this.type === 'password'"
+ :placeholder="placeholder"
+ :placeholderStyle="placeholderStyle"
+ :disabled="disabled"
+ :maxlength="inputMaxlength"
+ :focus="focus"
+ :confirmType="confirmType"
+ @focus="onFocus"
+ @blur="onBlur"
+ @input="onInput"
+ @confirm="onConfirm"
+ @tap="fieldClick"
+ />
+ </view>
+ <u-icon :size="clearSize" v-if="clearable && value != '' && focused" name="close-circle-fill" color="#c0c4cc" class="u-clear-icon" @click="onClear"/>
+ <view class="u-button-wrap"><slot name="right" /></view>
+ <u-icon v-if="rightIcon" @click="rightIconClick" :name="rightIcon" color="#c0c4cc" :style="[rightIconStyle]" size="26" class="u-arror-right" />
+ </view>
+ </view>
+ <view v-if="errorMessage !== false && errorMessage != ''" class="u-error-message" :style="{
+ paddingLeft: labelWidth + 'rpx'
+ }">{{ errorMessage }}</view>
+ </view>
+</template>
+
+<script>
+/**
+ * field 杈撳叆妗�
+ * @description 鍊熷姪姝ょ粍浠讹紝鍙互瀹炵幇琛ㄥ崟鐨勮緭鍏ワ紝 鏈�"text"鍜�"textarea"绫诲瀷鐨勶紝姝ゅ锛屽�熷姪uView鐨刾icker鍜宎ctionSheet缁勪欢鍙互蹇�熷疄鐜颁笂鎷夎彍鍗曪紝鏃堕棿锛屽湴鍖洪�夋嫨绛夛紝 涓鸿〃鍗曡В鍐虫柟妗堢殑鍒╁櫒銆�
+ * @tutorial https://www.uviewui.com/components/field.html
+ * @property {String} type 杈撳叆妗嗙殑绫诲瀷锛堥粯璁ext锛�
+ * @property {String} icon label宸﹁竟鐨勫浘鏍囷紝闄恥View鐨勫浘鏍囧悕绉�
+ * @property {Object} icon-style 宸﹁竟鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} right-icon 杈撳叆妗嗗彸杈圭殑鍥炬爣鍚嶇О锛岄檺uView鐨勫浘鏍囧悕绉帮紙榛樿false锛�
+ * @property {Boolean} required 鏄惁蹇呭~锛屽乏杈规偍鏄剧ず绾㈣壊"*"鍙凤紙榛樿false锛�
+ * @property {String} label 杈撳叆妗嗗乏杈圭殑鏂囧瓧鎻愮ず
+ * @property {Boolean} password 鏄惁瀵嗙爜杈撳叆鏂瑰紡(鐢ㄧ偣鏇挎崲鏂囧瓧)锛宼ype涓簍ext鏃舵湁鏁堬紙榛樿false锛�
+ * @property {Boolean} clearable 鏄惁鏄剧ず鍙充晶娓呯┖鍐呭鐨勫浘鏍囨帶浠�(杈撳叆妗嗘湁鍐呭锛屼笖鑾峰緱鐒︾偣鏃舵墠鏄剧ず)锛岀偣鍑诲彲娓呯┖杈撳叆妗嗗唴瀹癸紙榛樿true锛�
+ * @property {Number String} label-width label鐨勫搴︼紝鍗曚綅rpx锛堥粯璁�130锛�
+ * @property {String} label-align label鐨勬枃瀛楀榻愭柟寮忥紙榛樿left锛�
+ * @property {Object} field-style 鑷畾涔夎緭鍏ユ鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Number | String} clear-size 娓呴櫎鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�30锛�
+ * @property {String} input-align 杈撳叆妗嗗唴瀹瑰榻愭柟寮忥紙榛樿left锛�
+ * @property {Boolean} border-bottom 鏄惁鏄剧ずfield鐨勪笅杈规锛堥粯璁rue锛�
+ * @property {Boolean} border-top 鏄惁鏄剧ずfield鐨勪笂杈规锛堥粯璁alse锛�
+ * @property {String} icon-color 宸﹁竟閫氳繃icon閰嶇疆鐨勫浘鏍囩殑棰滆壊锛堥粯璁�#606266锛�
+ * @property {Boolean} auto-height 鏄惁鑷姩澧為珮杈撳叆鍖哄煙锛宼ype涓簍extarea鏃舵湁鏁堬紙榛樿true锛�
+ * @property {String Boolean} error-message 鏄剧ず鐨勯敊璇彁绀哄唴瀹癸紝濡傛灉涓虹┖瀛楃涓叉垨鑰協alse锛屽垯涓嶆樉绀洪敊璇俊鎭�
+ * @property {String} placeholder 杈撳叆妗嗙殑鎻愮ず鏂囧瓧
+ * @property {String} placeholder-style placeholder鐨勬牱寮�(鍐呰仈鏍峰紡锛屽瓧绗︿覆)锛屽"color: #ddd"
+ * @property {Boolean} focus 鏄惁鑷姩鑾峰緱鐒︾偣锛堥粯璁alse锛�
+ * @property {Boolean} fixed 濡傛灉type涓簍extarea锛屼笖鍦ㄤ竴涓�"position:fixed"鐨勫尯鍩燂紝闇�瑕佹寚鏄庝负true锛堥粯璁alse锛�
+ * @property {Boolean} disabled 鏄惁涓嶅彲杈撳叆锛堥粯璁alse锛�
+ * @property {Number String} maxlength 鏈�澶ц緭鍏ラ暱搴︼紝璁剧疆涓� -1 鐨勬椂鍊欎笉闄愬埗鏈�澶ч暱搴︼紙榛樿140锛�
+ * @property {String} confirm-type 璁剧疆閿洏鍙充笅瑙掓寜閽殑鏂囧瓧锛屼粎鍦╰ype="text"鏃剁敓鏁堬紙榛樿done锛�
+ * @event {Function} input 杈撳叆妗嗗唴瀹瑰彂鐢熷彉鍖栨椂瑙﹀彂
+ * @event {Function} focus 杈撳叆妗嗚幏寰楃劍鐐规椂瑙﹀彂
+ * @event {Function} blur 杈撳叆妗嗗け鍘荤劍鐐规椂瑙﹀彂
+ * @event {Function} confirm 鐐瑰嚮瀹屾垚鎸夐挳鏃惰Е鍙�
+ * @event {Function} right-icon-click 閫氳繃right-icon鐢熸垚鐨勫浘鏍囪鐐瑰嚮鏃惰Е鍙�
+ * @event {Function} click 杈撳叆妗嗚鐐瑰嚮鎴栬�呴�氳繃right-icon鐢熸垚鐨勫浘鏍囪鐐瑰嚮鏃惰Е鍙戯紝杩欐牱璁捐鏄�冭檻鍒颁紶閫掑彸杈圭殑鍥炬爣锛屼竴鑸兘涓洪渶瑕佸脊鍑�"picker"绛夋搷浣滄椂鐨勫満鏅紝鐐瑰嚮鍊掍笁瑙掑浘鏍囷紝鐞嗗簲鍙戝嚭姝や簨浠讹紝瑙佷笂鏂硅鏄�
+ * @example <u-field v-model="mobile" label="鎵嬫満鍙�" required :error-message="errorMessage"></u-field>
+ */
+export default {
+ name:"u-field",
+ props: {
+ icon: String,
+ rightIcon: String,
+ // arrowDirection: {
+ // type: String,
+ // default: 'right'
+ // },
+ required: Boolean,
+ label: String,
+ password: Boolean,
+ clearable: {
+ type: Boolean,
+ default: true
+ },
+ // 宸﹁竟鏍囬鐨勫搴﹀崟浣峳px
+ labelWidth: {
+ type: [Number, String],
+ default: 130
+ },
+ // 瀵归綈鏂瑰紡锛宭eft|center|right
+ labelAlign: {
+ type: String,
+ default: 'left'
+ },
+ inputAlign: {
+ type: String,
+ default: 'left'
+ },
+ iconColor: {
+ type: String,
+ default: '#606266'
+ },
+ autoHeight: {
+ type: Boolean,
+ default: true
+ },
+ errorMessage: {
+ type: [String, Boolean],
+ default: ''
+ },
+ placeholder: String,
+ placeholderStyle: String,
+ focus: Boolean,
+ fixed: Boolean,
+ value: [Number, String],
+ type: {
+ type: String,
+ default: 'text'
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ maxlength: {
+ type: [Number, String],
+ default: 140
+ },
+ confirmType: {
+ type: String,
+ default: 'done'
+ },
+ // lable鐨勪綅缃紝鍙�変负 left-宸﹁竟锛宼op-涓婅竟
+ labelPosition: {
+ type: String,
+ default: 'left'
+ },
+ // 杈撳叆妗嗙殑鑷畾涔夋牱寮�
+ fieldStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 娓呴櫎鎸夐挳鐨勫ぇ灏�
+ clearSize: {
+ type: [Number, String],
+ default: 30
+ },
+ // lable宸﹁竟鐨勫浘鏍囨牱寮忥紝瀵硅薄褰㈠紡
+ iconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏄惁鏄剧ず涓婅竟妗�
+ borderTop: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず涓嬭竟妗�
+ borderBottom: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鑷姩鍘婚櫎涓ょ鐨勭┖鏍�
+ trim: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ focused: false,
+ itemIndex: 0,
+ };
+ },
+ computed: {
+ inputWrapStyle() {
+ let style = {};
+ style.textAlign = this.inputAlign;
+ // 鍒ゆ柇lable鐨勪綅缃紝濡傛灉鏄痩eft鐨勮瘽锛岃input宸﹁竟涓よ竟鏈夐棿闅�
+ if(this.labelPosition == 'left') {
+ style.margin = `0 8rpx`;
+ } else {
+ // 濡傛灉lable鏄痶op鐨勶紝input鐨勫乏杈瑰氨娌″繀瑕佹湁闂撮殭浜�
+ style.marginRight = `8rpx`;
+ }
+ return style;
+ },
+ rightIconStyle() {
+ let style = {};
+ if (this.arrowDirection == 'top') style.transform = 'roate(-90deg)';
+ if (this.arrowDirection == 'bottom') style.transform = 'roate(90deg)';
+ else style.transform = 'roate(0deg)';
+ return style;
+ },
+ labelStyle() {
+ let style = {};
+ if(this.labelAlign == 'left') style.justifyContent = 'flext-start';
+ if(this.labelAlign == 'center') style.justifyContent = 'center';
+ if(this.labelAlign == 'right') style.justifyContent = 'flext-end';
+ return style;
+ },
+ // uni涓嶆敮鎸佸湪computed涓啓style.justifyContent = 'center'鐨勫舰寮忥紝鏁呯敤姝ゆ柟娉�
+ justifyContent() {
+ if(this.labelAlign == 'left') return 'flex-start';
+ if(this.labelAlign == 'center') return 'center';
+ if(this.labelAlign == 'right') return 'flex-end';
+ },
+ // 鍥犱负uniapp鐨刬nput缁勪欢鐨刴axlength缁勪欢蹇呴』瑕佹暟鍊硷紝杩欓噷杞负鏁板�硷紝缁欑敤鎴峰彲浠ヤ紶鍏ュ瓧绗︿覆鏁板��
+ inputMaxlength() {
+ return Number(this.maxlength)
+ },
+ // label鐨勪綅缃�
+ fieldInnerStyle() {
+ let style = {};
+ if(this.labelPosition == 'left') {
+ style.flexDirection = 'row';
+ } else {
+ style.flexDirection = 'column';
+ }
+
+ return style;
+ }
+ },
+ methods: {
+ onInput(event) {
+ let value = event.detail.value;
+ // 鍒ゆ柇鏄惁鍘婚櫎绌烘牸
+ if(this.trim) value = this.$u.trim(value);
+ this.$emit('input', value);
+ },
+ onFocus(event) {
+ this.focused = true;
+ this.$emit('focus', event);
+ },
+ onBlur(event) {
+ // 鏈�寮�濮嬩娇鐢ㄧ殑鏄洃鍚浘鏍嘆touchstart浜嬩欢锛岃嚜浠巋x2.8.4鍚庯紝姝ゆ柟娉曞湪寰俊灏忕▼搴忓嚭閿�
+ // 杩欓噷鏀逛负鐩戝惉鐐瑰嚮浜嬩欢锛屾墜鐐瑰嚮娓呴櫎鍥炬爣鏃讹紝鍚屾椂涔熷彂鐢熶簡@blur浜嬩欢锛屽鑷村浘鏍囨秷澶辫�屾棤娉曠偣鍑伙紝杩欓噷鍋氫竴涓欢鏃�
+ setTimeout(() => {
+ this.focused = false;
+ }, 100)
+ this.$emit('blur', event);
+ },
+ onConfirm(e) {
+ this.$emit('confirm', e.detail.value);
+ },
+ onClear(event) {
+ this.$emit('input', '');
+ },
+ rightIconClick() {
+ this.$emit('right-icon-click');
+ this.$emit('click');
+ },
+ fieldClick() {
+ this.$emit('click');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-field {
+ font-size: 28rpx;
+ padding: 20rpx 28rpx;
+ text-align: left;
+ position: relative;
+ color: $u-main-color;
+}
+
+.u-field-inner {
+ display: flex;
+ align-items: center;
+}
+
+.u-textarea-inner {
+ align-items: flex-start;
+}
+
+.u-textarea-class {
+ min-height: 96rpx;
+ width: auto;
+ font-size: 28rpx;
+}
+
+.fild-body {
+ display: flex;
+ flex: 1;
+ align-items: center;
+}
+
+.u-arror-right {
+ margin-left: 8rpx;
+}
+
+.u-label-text {
+ display: inline-block;
+}
+
+.u-label-left-gap {
+ margin-left: 6rpx;
+}
+
+.u-label-postion-top {
+ flex-direction: column;
+ align-items: flex-start;
+}
+
+.u-label {
+ width: 130rpx;
+ flex: 1 1 130rpx;
+ text-align: left;
+ position: relative;
+ display: flex;
+ align-items: center;
+}
+
+.u-required::before {
+ content: '*';
+ position: absolute;
+ left: -16rpx;
+ font-size: 14px;
+ color: $u-type-error;
+ height: 9px;
+ line-height: 1;
+}
+
+.u-field__input-wrap {
+ position: relative;
+ overflow: hidden;
+ font-size: 28rpx;
+ height: 48rpx;
+ flex: 1;
+ width: auto;
+}
+
+.u-clear-icon {
+ display: flex;
+ align-items: center;
+}
+
+.u-error-message {
+ color: $u-type-error;
+ font-size: 26rpx;
+ text-align: left;
+}
+
+.placeholder-style {
+ color: rgb(150, 151, 153);
+}
+
+.u-input-class {
+ font-size: 28rpx;
+}
+
+.u-button-wrap {
+ margin-left: 8rpx;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form-item/u-form-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form-item/u-form-item.vue"
new file mode 100644
index 0000000..161de4c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form-item/u-form-item.vue"
@@ -0,0 +1,401 @@
+<template>
+ <view class="u-form-item" :class="{'u-border-bottom': elBorderBottom, 'u-form-item__border-bottom--error': validateState === 'error' && showError('border-bottom')}">
+ <view class="u-form-item__body" :style="{
+ flexDirection: elLabelPosition == 'left' ? 'row' : 'column'
+ }">
+ <!-- 寰俊灏忕▼搴忎腑锛屽皢涓�涓弬鏁拌缃┖瀛楃涓诧紝缁撴灉浼氬彉鎴愬瓧绗︿覆"true" -->
+ <view class="u-form-item--left" :style="{
+ width: uLabelWidth,
+ flex: `0 0 ${uLabelWidth}`,
+ marginBottom: elLabelPosition == 'left' ? 0 : '10rpx',
+ }">
+ <!-- 涓轰簡鍧楀榻� -->
+ <view class="u-form-item--left__content">
+ <!-- nvue涓嶆敮鎸佷吉鍏冪礌before -->
+ <text v-if="required" class="u-form-item--left__content--required">*</text>
+ <view class="u-form-item--left__content__icon" v-if="leftIcon">
+ <u-icon :name="leftIcon" :custom-style="leftIconStyle"></u-icon>
+ </view>
+ <view class="u-form-item--left__content__label" :style="[elLabelStyle, {
+ 'justify-content': elLabelAlign == 'left' ? 'flex-start' : elLabelAlign == 'center' ? 'center' : 'flex-end'
+ }]">
+ {{label}}
+ </view>
+ </view>
+ </view>
+ <view class="u-form-item--right u-flex">
+ <view class="u-form-item--right__content">
+ <view class="u-form-item--right__content__slot ">
+ <slot />
+ </view>
+ <view class="u-form-item--right__content__icon u-flex" v-if="$slots.right || rightIcon">
+ <u-icon :custom-style="rightIconStyle" v-if="rightIcon" :name="rightIcon"></u-icon>
+ <slot name="right" />
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="u-form-item__message" v-if="validateState === 'error' && showError('message')" :style="{
+ paddingLeft: elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '0',
+ }">{{validateMessage}}</view>
+ </view>
+</template>
+
+<script>
+import Emitter from '../../libs/util/emitter.js';
+import schema from '../../libs/util/async-validator';
+// 鍘婚櫎璀﹀憡淇℃伅
+schema.warning = function(){};
+
+ /**
+ * form-item 琛ㄥ崟item
+ * @description 姝ょ粍浠朵竴鑸敤浜庤〃鍗曞満鏅紝鍙互閰嶇疆Input杈撳叆妗嗭紝Select寮瑰嚭妗嗭紝杩涜琛ㄥ崟楠岃瘉绛夈��
+ * @tutorial http://uviewui.com/components/form.html
+ * @property {String} label 宸︿晶鎻愮ず鏂囧瓧
+ * @property {Object} prop 琛ㄥ崟鍩焟odel瀵硅薄鐨勫睘鎬у悕锛屽湪浣跨敤 validate銆乺esetFields 鏂规硶鐨勬儏鍐典笅锛岃灞炴�ф槸蹇呭~鐨�
+ * @property {Boolean} border-bottom 鏄惁鏄剧ず琛ㄥ崟鍩熺殑涓嬪垝绾胯竟妗�
+ * @property {String} label-position 琛ㄥ崟鍩熸彁绀烘枃瀛楃殑浣嶇疆锛宭eft-宸︿晶锛宼op-涓婃柟
+ * @property {String Number} label-width 鎻愮ず鏂囧瓧鐨勫搴︼紝鍗曚綅rpx锛堥粯璁�90锛�
+ * @property {Object} label-style lable鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} label-align lable鐨勫榻愭柟寮�
+ * @property {String} right-icon 鍙充晶鑷畾涔夊瓧浣撳浘鏍�(闄恥View鍐呯疆鍥炬爣)鎴栧浘鐗囧湴鍧�
+ * @property {String} left-icon 宸︿晶鑷畾涔夊瓧浣撳浘鏍�(闄恥View鍐呯疆鍥炬爣)鎴栧浘鐗囧湴鍧�
+ * @property {Object} left-icon-style 宸︿晶鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} right-icon-style 鍙充晶鍥炬爣鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} required 鏄惁鏄剧ず宸﹁竟鐨�"*"鍙凤紝杩欓噷浠呰捣灞曠ず浣滅敤锛屽闇�鏍¢獙蹇呭~锛岃閫氳繃rules閰嶇疆蹇呭~瑙勫垯(榛樿false)
+ * @example <u-form-item label="濮撳悕"><u-input v-model="form.name" /></u-form-item>
+ */
+
+export default {
+ name: 'u-form-item',
+ mixins: [Emitter],
+ inject: {
+ uForm: {
+ default() {
+ return null
+ }
+ }
+ },
+ props: {
+ // input鐨刲abel鎻愮ず璇�
+ label: {
+ type: String,
+ default: ''
+ },
+ // 缁戝畾鐨勫��
+ prop: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず琛ㄥ崟鍩熺殑涓嬪垝绾胯竟妗�
+ borderBottom: {
+ type: [String, Boolean],
+ default: ''
+ },
+ // label鐨勪綅缃紝left-宸﹁竟锛宼op-涓婅竟
+ labelPosition: {
+ type: String,
+ default: ''
+ },
+ // label鐨勫搴︼紝鍗曚綅rpx
+ labelWidth: {
+ type: [String, Number],
+ default: ''
+ },
+ // lable鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ labelStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // lable瀛椾綋鐨勫榻愭柟寮�
+ labelAlign: {
+ type: String,
+ default: ''
+ },
+ // 鍙充晶鍥炬爣
+ rightIcon: {
+ type: String,
+ default: ''
+ },
+ // 宸︿晶鍥炬爣
+ leftIcon: {
+ type: String,
+ default: ''
+ },
+ // 宸︿晶鍥炬爣鐨勬牱寮�
+ leftIconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 宸︿晶鍥炬爣鐨勬牱寮�
+ rightIconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏄惁鏄剧ず宸﹁竟鐨勫繀濉槦鍙凤紝鍙綔鏄剧ず鐢紝鍏蜂綋鏍¢獙蹇呭~鐨勯�昏緫锛岃鍦╮ules涓厤缃�
+ required: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ initialValue: '', // 瀛樺偍鐨勯粯璁ゅ��
+ // isRequired: false, // 鏄惁蹇呭~锛岀敱浜庝汉鎬у寲鑰冭檻锛屽繀濉�"*"鍙烽�氳繃props鐨剅equired閰嶇疆锛屼笉鍐嶉�氳繃rules鐨勮鍒欒嚜鍔ㄧ敓鎴�
+ validateState: '', // 鏄惁鏍¢獙鎴愬姛
+ validateMessage: '' ,// 鏍¢獙澶辫触鐨勬彁绀鸿
+ // 鏈夐敊璇椂鐨勬彁绀烘柟寮忥紝message-鎻愮ず淇℃伅锛宐order-濡傛灉input璁剧疆浜嗚竟妗嗭紝鍙樻垚鍛堢孩鑹诧紝
+ errorType: ['message'],
+ };
+ },
+ created() {
+ // 鏀粯瀹濆皬绋嬪簭涓嶆敮鎸乸rovide/inject锛屾墍浠ヤ娇鐢ㄨ繖涓柟娉曡幏鍙栨暣涓埗缁勪欢锛屽湪created瀹氫箟锛岄伩鍏嶅惊鐜簲鐢�
+ this.parent = this.$u.$parent.call(this, 'u-form');
+ },
+ watch: {
+ validateState(val) {
+ this.broadcastInputError();
+ },
+ // 鐩戝惉u-form缁勪欢鐨別rrorType鐨勫彉鍖�
+ "uForm.errorType"(val) {
+ this.errorType = val;
+ this.broadcastInputError();
+ },
+ },
+ computed: {
+ // 璁$畻鍚庣殑label瀹藉害锛岀敱浜庨渶瑕佸涓垽鏂紝鏁呮斁鍒癱omputed涓�
+ uLabelWidth() {
+ // 濡傛灉鐢ㄦ埛璁剧疆label涓虹┖瀛楃涓�(寰俊灏忕▼搴忕┖瀛楃涓叉渶缁堜細鍙樻垚瀛楃涓茬殑'true')锛屾剰鍛崇潃瑕佸皢label鐨勪綅缃搴﹁缃负auto
+ return this.elLabelPosition == 'left' ? (this.label === 'true' || this.label === '' ? 'auto' : this.$u.addUnit(this.elLabelWidth)) : '100%';
+ },
+ fieldValue() {
+ return this.uForm.model[this.prop];
+ },
+ showError() {
+ return type => {
+ // 濡傛灉errorType鏁扮粍涓惈鏈塶one锛屾垨鑰卼oast鎻愮ず绫诲瀷
+ if(this.errorType.indexOf('none') >= 0) return false;
+ else if(this.errorType.indexOf(type) >= 0) return true;
+ else return false;
+ }
+ },
+ // label鐨勫搴�
+ elLabelWidth() {
+ // label榛樿瀹藉害涓�90锛屼紭鍏堜娇鐢ㄦ湰缁勪欢鐨勫�硷紝濡傛灉娌℃湁(濡傛灉璁剧疆涓�0锛屼篃绠楁槸閰嶇疆浜嗗�硷紝渚濈劧璧锋晥)锛屽垯鐢╱-form鐨勫��
+ return (this.labelWidth != 0 || this.labelWidth != '') ? this.labelWidth : (this.parent ? this.parent.labelWidth : 90);
+ },
+ // label鐨勬牱寮�
+ elLabelStyle() {
+ return Object.keys(this.labelStyle).length ? this.labelStyle : (this.parent ? this.parent.labelStyle : {});
+ },
+ // label鐨勪綅缃紝宸︿晶鎴栬�呬笂鏂�
+ elLabelPosition() {
+ return this.labelPosition ? this.labelPosition : (this.parent ? this.parent.labelPosition : 'left');
+ },
+ // label鐨勫榻愭柟寮�
+ elLabelAlign() {
+ return this.labelAlign ? this.labelAlign : (this.parent ? this.parent.labelAlign : 'left');
+ },
+ // label鐨勪笅鍒掔嚎
+ elBorderBottom() {
+ // 瀛愮粍浠剁殑borderBottom榛樿涓虹┖瀛楃涓诧紝濡傛灉涓嶇瓑浜庣┖瀛楃涓诧紝鎰忓懗鐫�瀛愮粍浠惰缃簡鍊硷紝浼樺厛浣跨敤瀛愮粍浠剁殑鍊�
+ return this.borderBottom !== '' ? this.borderBottom : this.parent ? this.parent.borderBottom : true;
+ }
+ },
+ methods: {
+ broadcastInputError() {
+ // 瀛愮粍浠跺彂鍑轰簨浠讹紝绗笁涓弬鏁颁负true鎴栬�協alse锛宼rue浠h〃鏈夐敊璇�
+ this.broadcast('u-input', 'on-form-item-error', this.validateState === 'error' && this.showError('border'));
+ },
+ // 鍒ゆ柇鏄惁闇�瑕乺equired鏍¢獙
+ setRules() {
+ let that = this;
+ // 鐢变簬浜烘�у寲鑰冭檻锛屽繀濉�"*"鍙烽�氳繃props鐨剅equired閰嶇疆锛屼笉鍐嶉�氳繃rules鐨勮鍒欒嚜鍔ㄧ敓鎴�
+ // 浠庣埗缁勪欢u-form鎷垮埌褰撳墠u-form-item闇�瑕侀獙璇� 鐨勮鍒�
+ // let rules = this.getRules();
+ // if (rules.length) {
+ // this.isRequired = rules.some(rule => {
+ // // 濡傛灉鏈夊繀濉」锛屽氨杩斿洖锛屾病鏈夌殑璇濓紝灏辨槸undefined
+ // return rule.required;
+ // });
+ // }
+
+ // blur浜嬩欢
+ this.$on('on-form-blur', that.onFieldBlur);
+ // change浜嬩欢
+ this.$on('on-form-change', that.onFieldChange);
+ },
+
+ // 浠巙-form鐨剅ules灞炴�т腑锛屽彇鍑哄綋鍓島-form-item鐨勬牎楠岃鍒�
+ getRules() {
+ // 鐖剁粍浠剁殑鎵�鏈夎鍒�
+ let rules = this.uForm.rules;
+ rules = rules ? rules[this.prop] : [];
+ // 淇濊瘉杩斿洖鐨勬槸涓�涓暟缁勫舰寮�
+ return [].concat(rules || []);
+ },
+
+ // blur浜嬩欢鏃惰繘琛岃〃鍗曟牎楠�
+ onFieldBlur() {
+ this.validation('blur');
+ },
+
+ // change浜嬩欢杩涜琛ㄥ崟鏍¢獙
+ onFieldChange() {
+ this.validation('change');
+ },
+
+ // 杩囨护鍑虹鍚堣姹傜殑rule瑙勫垯
+ getFilteredRule(triggerType = '') {
+ let rules = this.getRules();
+ // 鏁翠綋楠岃瘉琛ㄥ崟鏃讹紝triggerType涓虹┖瀛楃涓诧紝姝ゆ椂杩斿洖鎵�鏈夎鍒欒繘琛岄獙璇�
+ if(!triggerType) return rules;
+ // 鍘嗛亶鍒ゆ柇瑙勫垯鏄惁鏈夊搴旂殑浜嬩欢锛屾瘮濡俠lur锛宑hange瑙﹀彂绛夌殑浜嬩欢
+ // 浣跨敤indexOf鍒ゆ柇锛屾槸鍥犱负鏌愪簺鏃跺�欒缃殑楠岃瘉瑙勫垯鐨則rigger灞炴�у彲鑳戒负澶氫釜锛屾瘮濡俒'blur','change']
+ // 鏌愪簺鍦烘櫙鍙兘鐨勫垽鏂鍒欙紝鍙兘涓嶅瓨鍦╰rigger灞炴�э紝鏁呭厛鍒ゆ柇鏄惁瀛樺湪姝ゅ睘鎬�
+ return rules.filter(res => res.trigger && res.trigger.indexOf(triggerType) !== -1);
+ },
+
+ // 鏍¢獙鏁版嵁
+ validation(trigger, callback = () => {}) {
+ // blur鍜宑hange鏄惁鏈夊綋鍓嶆柟寮忕殑鏍¢獙瑙勫垯
+ let rules = this.getFilteredRule(trigger);
+ // 鍒ゆ柇鏄惁鏈夐獙璇佽鍒欙紝濡傛灉娌℃湁瑙勫垯锛屼篃璋冪敤鍥炶皟鏂规硶锛屽惁鍒欑埗缁勪欢u-form浼氬洜涓�
+ // 瀵筩ount鍙橀噺鐨勭粺璁¢敊璇�屾棤娉曡繘鍏ヤ笂涓�灞傜殑鍥炶皟
+ if (!rules || rules.length === 0) {
+ return callback('');
+ }
+ // 璁剧疆褰撳墠鐨勮濉紝鏍囪瘑涓烘牎楠屼腑
+ this.validateState = 'validating';
+ // 璋冪敤async-validator鐨勬柟娉�
+ let validator = new schema({ [this.prop]: rules });
+ validator.validate({ [this.prop]: this.fieldValue }, { firstFields: true }, (errors, fields) => {
+ // 璁板綍鐘舵�佸拰鎶ラ敊淇℃伅
+ this.validateState = !errors ? 'success' : 'error';
+ this.validateMessage = errors ? errors[0].message : '';
+ // 璋冪敤鍥炶皟鏂规硶
+ callback(this.validateMessage);
+ });
+ },
+
+ // 娓呯┖褰撳墠鐨剈-form-item
+ resetField() {
+ this.uForm.model[this.prop] = this.initialValue;
+ // 璁剧疆涓篳success`鐘舵�侊紝鍙槸涓轰簡娓呯┖閿欒鏍囪
+ this.validateState = 'success';
+ }
+ },
+
+ // 缁勪欢鍒涘缓瀹屾垚鏃讹紝灏嗗綋鍓嶅疄渚嬩繚瀛樺埌u-form涓�
+ mounted() {
+ // 濡傛灉娌℃湁浼犲叆prop锛屾垨鑰卽Form涓虹┖(濡傛灉u-form-input鍗曠嫭浣跨敤锛屽氨涓嶄細鏈塽Form娉ㄥ叆)锛屽氨涓嶈繘琛屾牎楠�
+ if (!this.prop || this.uForm === null) return;
+ // 鍙戝嚭浜嬩欢锛岃鐖剁粍浠跺皢鏈疄渚嬪姞鍏ュ埌绠$悊鏁扮粍涓�
+ this.dispatch('u-form', 'on-form-item-add', this);
+ this.errorType = this.uForm.errorType;
+ // 璁剧疆鍒濆鍊�
+ this.initialValue = this.fieldValue;
+ // 娣诲姞琛ㄥ崟鏍¢獙锛岃繖閲屽繀椤昏鍐欏湪$nextTick涓紝鍥犱负u-form鐨剅ules鏄�氳繃ref鎵嬪姩浼犲叆鐨�
+ // 涓嶅湪$nextTick涓殑璇濓紝鍙兘浼氶�犳垚鎵ц姝ゅ浠g爜鏃讹紝鐖剁粍浠惰繕娌¢�氳繃ref鎶婅鍒欑粰u-form锛屽鑷磋鍒欎负绌�
+ this.$nextTick(() =>{
+ this.setRules();
+ })
+ },
+
+ // 缁勪欢閿�姣佸墠锛屽皢瀹炰緥浠� Form 鐨勭紦瀛樹腑绉婚櫎
+ beforeDestroy() {
+ this.dispatch('u-form', 'on-form-item-remove', this);
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-form-item {
+ display: flex;
+ // align-items: flex-start;
+ padding: 20rpx 0;
+ font-size: 28rpx;
+ color: $u-main-color;
+ box-sizing: border-box;
+ line-height: $u-form-item-height;
+ flex-direction: column;
+
+ &__border-bottom--error:after {
+ border-color: $u-type-error;
+ }
+
+ &__body {
+ display: flex;
+ }
+
+ &--left {
+ display: flex;
+ align-items: center;
+
+ &__content {
+ position: relative;
+ display: flex;
+ align-items: center;
+ padding-right: 10rpx;
+ flex: 1;
+
+ &__icon {
+ margin-right: 8rpx;
+ }
+
+ &--required {
+ position: absolute;
+ left: -16rpx;
+ vertical-align: middle;
+ color: $u-type-error;
+ padding-top: 6rpx;
+ }
+
+ &__label {
+ display: flex;
+ align-items: center;
+ flex: 1;
+ }
+ }
+ }
+
+ &--right {
+ flex: 1;
+
+ &__content {
+ display: flex;
+ align-items: center;
+ flex: 1;
+
+ &__slot {
+ flex: 1;
+ /* #ifndef MP */
+ display: flex;
+ align-items: center;
+ /* #endif */
+ }
+
+ &__icon {
+ margin-left: 10rpx;
+ color: $u-light-color;
+ font-size: 30rpx;
+ }
+ }
+ }
+
+ &__message {
+ font-size: 24rpx;
+ line-height: 24rpx;
+ color: $u-type-error;
+ margin-top: 12rpx;
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form/u-form.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form/u-form.vue"
new file mode 100644
index 0000000..7c81c9d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-form/u-form.vue"
@@ -0,0 +1,149 @@
+<template>
+ <view class="u-form"><slot /></view>
+</template>
+
+<script>
+ /**
+ * form 琛ㄥ崟
+ * @description 姝ょ粍浠朵竴鑸敤浜庤〃鍗曞満鏅紝鍙互閰嶇疆Input杈撳叆妗嗭紝Select寮瑰嚭妗嗭紝杩涜琛ㄥ崟楠岃瘉绛夈��
+ * @tutorial http://uviewui.com/components/form.html
+ * @property {Object} model 琛ㄥ崟鏁版嵁瀵硅薄
+ * @property {Boolean} border-bottom 鏄惁鏄剧ず琛ㄥ崟鍩熺殑涓嬪垝绾胯竟妗�
+ * @property {String} label-position 琛ㄥ崟鍩熸彁绀烘枃瀛楃殑浣嶇疆锛宭eft-宸︿晶锛宼op-涓婃柟
+ * @property {String Number} label-width 鎻愮ず鏂囧瓧鐨勫搴︼紝鍗曚綅rpx锛堥粯璁�90锛�
+ * @property {Object} label-style lable鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} label-align lable鐨勫榻愭柟寮�
+ * @property {Object} rules 閫氳繃ref璁剧疆锛岃瀹樼綉璇存槑
+ * @property {Array} error-type 閿欒鐨勬彁绀烘柟寮忥紝鏁扮粍褰㈠紡锛岃涓婃柟璇存槑(榛樿['message'])
+ * @example <u-form :model="form" ref="uForm"></u-form>
+ */
+
+export default {
+ name: 'u-form',
+ props: {
+ // 褰撳墠form鐨勯渶瑕侀獙璇佸瓧娈电殑闆嗗悎
+ model: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 楠岃瘉瑙勫垯
+ // rules: {
+ // type: [Object, Function, Array],
+ // default() {
+ // return {};
+ // }
+ // },
+ // 鏈夐敊璇椂鐨勬彁绀烘柟寮忥紝message-鎻愮ず淇℃伅锛宐order-濡傛灉input璁剧疆浜嗚竟妗嗭紝鍙樻垚鍛堢孩鑹诧紝
+ // border-bottom-涓嬭竟妗嗗憟鐜扮孩鑹诧紝none-鏃犳彁绀�
+ errorType: {
+ type: Array,
+ default() {
+ return ['message', 'toast']
+ }
+ },
+ // 鏄惁鏄剧ず琛ㄥ崟鍩熺殑涓嬪垝绾胯竟妗�
+ borderBottom: {
+ type: Boolean,
+ default: true
+ },
+ // label鐨勪綅缃紝left-宸﹁竟锛宼op-涓婅竟
+ labelPosition: {
+ type: String,
+ default: 'left'
+ },
+ // label鐨勫搴︼紝鍗曚綅rpx
+ labelWidth: {
+ type: [String, Number],
+ default: 90
+ },
+ // lable瀛椾綋鐨勫榻愭柟寮�
+ labelAlign: {
+ type: String,
+ default: 'left'
+ },
+ // lable鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ labelStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ },
+ provide() {
+ return {
+ uForm: this
+ };
+ },
+ data() {
+ return {
+ rules: {}
+ };
+ },
+ created() {
+ // 瀛樺偍褰撳墠form涓嬬殑鎵�鏈塽-form-item鐨勫疄渚�
+ // 涓嶈兘瀹氫箟鍦╠ata涓紝鍚﹀垯寰俊灏忕▼搴忎細閫犳垚寰幆寮曠敤鑰屾姤閿�
+ this.fields = [];
+ // 瀛樺綋鍓嶅疄渚�
+ let that = this;
+ // 鐩戝惉on-form-item-add浜嬩欢锛屽皢瀛愮粍浠舵坊鍔犲埌fields涓�
+ this.$on('on-form-item-add', item => {
+ if (item) {
+ that.fields.push(item);
+ }
+ });
+ // 鍒犻櫎褰撳墠鏈夌殑瀹炰緥
+ this.$on('on-form-item-remove', item => {
+ // 濡傛灉褰撳墠娌℃湁prop鐨勮瘽琛ㄧず褰撳墠涓嶈杩涜鍒犻櫎锛堝洜涓烘病鏈夋敞鍏ワ級
+ if (item.prop) {
+ that.fields.splice(that.fields.indexOf(item), 1);
+ }
+ });
+ },
+ methods: {
+ setRules(rules) {
+ this.rules = rules;
+ },
+ // 娓呯┖鎵�鏈塽-form-item缁勪欢鐨勫唴瀹癸紝鏈川涓婃槸璋冪敤浜唘-form-item缁勪欢涓殑resetField()鏂规硶
+ resetFields() {
+ this.fields.map(field => {
+ field.resetField();
+ });
+ },
+ // 鏍¢獙鍏ㄩ儴鏁版嵁
+ validate(callback) {
+ return new Promise(resolve => {
+ // 瀵规墍鏈夌殑u-form-item杩涜鏍¢獙
+ let valid = true; // 榛樿閫氳繃
+ let count = 0; // 鐢ㄤ簬鏍囪鏄惁妫�鏌ュ畬姣�
+ let errorArr = []; // 瀛樻斁閿欒淇℃伅
+ this.fields.map(field => {
+ // 璋冪敤姣忎竴涓猽-form-item瀹炰緥鐨剉alidation鐨勬牎楠屾柟娉�
+ field.validation('', error => {
+ // 濡傛灉浠绘剰涓�涓猽-form-item鏍¢獙涓嶉�氳繃锛屽氨鎰忓懗鐫�鏁翠釜琛ㄥ崟涓嶉�氳繃
+ if (error) {
+ valid = false;
+ errorArr.push(error);
+ }
+ // 褰撳巻閬嶄簡鎵�鏈夌殑u-form-item鏃讹紝璋冪敤promise鐨則hen鏂规硶
+ if (++count === this.fields.length) {
+ resolve(valid); // 杩涘叆promise鐨則hen鏂规硶
+ // 鍒ゆ柇鏄惁璁剧疆浜唗oast鐨勬彁绀烘柟寮忥紝鍙彁绀烘渶鍓嶉潰鐨勮〃鍗曞煙鐨勭涓�涓敊璇俊鎭�
+ if(this.errorType.indexOf('none') === -1 && this.errorType.indexOf('toast') >= 0 && errorArr.length) {
+ this.$u.toast(errorArr[0]);
+ }
+ // 璋冪敤鍥炶皟鏂规硶
+ if (typeof callback == 'function') callback(valid);
+ }
+ });
+ });
+ });
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-full-screen/u-full-screen.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-full-screen/u-full-screen.vue"
new file mode 100644
index 0000000..4f7e7d9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-full-screen/u-full-screen.vue"
@@ -0,0 +1,52 @@
+<template>
+ <u-modal v-model="show" :show-cancel-button="true" confirm-text="鍗囩骇" title="鍙戠幇鏂扮増鏈�" @cancel="cancel" @confirm="confirm">
+ <view class="u-update-content">
+ <rich-text :nodes="content"></rich-text>
+ </view>
+ </u-modal>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ show: false,
+ content: `
+ 1. 淇badge缁勪欢鐨剆ize鍙傛暟鏃犳晥闂<br>
+ 2. 鏂板Modal妯℃�佹缁勪欢<br>
+ 3. 鏂板鍘嬬獥灞忕粍浠讹紝鍙互鍦ˋPP涓婁互寮圭獥鐨勫舰寮忛伄鐩栧鑸爮鍜屽簳閮╰abbar<br>
+ 4. 淇閿洏缁勪欢鍦ㄥ井淇″皬绋嬪簭涓婇伄缃╂棤鏁堢殑闂
+ `,
+ }
+ },
+ onReady() {
+ this.show = true;
+ },
+ methods: {
+ cancel() {
+ this.closeModal();
+ },
+ confirm() {
+ this.closeModal();
+ },
+ closeModal() {
+ uni.navigateBack();
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-full-content {
+ background-color: #00C777;
+ }
+
+ .u-update-content {
+ font-size: 26rpx;
+ color: $u-content-color;
+ line-height: 1.7;
+ padding: 30rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-gap/u-gap.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-gap/u-gap.vue"
new file mode 100644
index 0000000..6c01f94
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-gap/u-gap.vue"
@@ -0,0 +1,54 @@
+<template>
+ <view class="u-gap" :style="[gapStyle]"></view>
+</template>
+
+<script>
+/**
+ * gap 闂撮殧妲�
+ * @description 璇ョ粍浠朵竴鑸敤浜庡唴瀹瑰潡涔嬮棿鐨勭敤涓�涓伆鑹插潡闅斿紑鐨勫満鏅紝鏂逛究鐢ㄦ埛椋庢牸缁熶竴锛屽噺灏戝伐浣滈噺
+ * @tutorial https://www.uviewui.com/components/gap.html
+ * @property {String} bg-color 鑳屾櫙棰滆壊锛堥粯璁�#f3f4f6锛�
+ * @property {String Number} height 鍒嗗壊妲介珮搴︼紝鍗曚綅rpx锛堥粯璁�30锛�
+ * @property {String Number} margin-top 涓庡墠涓�涓粍浠剁殑璺濈锛屽崟浣峳px锛堥粯璁�0锛�
+ * @property {String Number} margin-bottom 涓庡悗涓�涓粍浠剁殑璺濈锛屽崟浣峳px锛�0锛�
+ * @example <u-gap height="80" bg-color="#bbb"></u-gap>
+ */
+export default {
+ name: "u-gap",
+ props: {
+ bgColor: {
+ type: String,
+ default: 'transparent ' // 鑳屾櫙閫忔槑
+ },
+ // 楂樺害
+ height: {
+ type: [String, Number],
+ default: 30
+ },
+ // 涓庝笂涓�涓粍浠剁殑璺濈
+ marginTop: {
+ type: [String, Number],
+ default: 0
+ },
+ // 涓庝笅涓�涓粍浠剁殑璺濈
+ marginBottom: {
+ type: [String, Number],
+ default: 0
+ },
+ },
+ computed: {
+ gapStyle() {
+ return {
+ backgroundColor: this.bgColor,
+ height: this.height + 'rpx',
+ marginTop: this.marginTop + 'rpx',
+ marginBottom: this.marginBottom + 'rpx'
+ };
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid-item/u-grid-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid-item/u-grid-item.vue"
new file mode 100644
index 0000000..da5c1d2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid-item/u-grid-item.vue"
@@ -0,0 +1,113 @@
+<template>
+ <view class="u-grid-item" :hover-class="hoverClass"
+ :hover-stay-time="200" @tap="click" :style="{
+ background: bgColor,
+ width: width,
+ }">
+ <view class="u-grid-item-box" :class="[showBorder ? 'u-border-right u-border-bottom' : '']">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * gridItem 鎻愮ず
+ * @description 瀹牸缁勪欢涓�鑸敤浜庡悓鏃跺睍绀哄涓悓绫婚」鐩殑鍦烘櫙锛屽彲浠ョ粰瀹牸鐨勯」鐩缃窘鏍囩粍浠�(badge)锛屾垨鑰呭浘鏍囩瓑锛屼篃鍙互鎵╁睍涓哄乏鍙虫粦鍔ㄧ殑杞挱褰㈠紡銆傛惌閰島-grid浣跨敤
+ * @tutorial https://www.uviewui.com/components/grid.html
+ * @property {String} bg-color 瀹牸鐨勮儗鏅鑹诧紙榛樿#ffffff锛�
+ * @property {String Number} index 鐐瑰嚮瀹牸鏃讹紝杩斿洖鐨勫��
+ * @event {Function} click 鐐瑰嚮瀹牸瑙﹀彂
+ * @example <u-grid-item></u-grid-item>
+ */
+ export default {
+ name: "u-grid-item",
+ props: {
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鐐瑰嚮鏃惰繑鍥炵殑index
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ },
+ // 鐖剁粍浠堕�氳繃provide浼犻�掕繃鏉ョ殑鏁翠釜this
+ inject: ['uGrid'],
+ data() {
+ return {
+ hoverClass: '', // 鎸変笅鍘荤殑鏃跺�欙紝鏄惁鏄剧ず鑳屾櫙鐏拌壊
+ };
+ },
+ created() {
+ this.hoverClass = this.uGrid.hoverClass;
+ },
+ computed: {
+ // 灏忎簬2锛屾樉绀�2鍒楋紱澶т簬12锛屾樉绀�12鍒�
+ colNum() {
+ return this.col < 2 ? 2 : this.col > 12 ? 12 : this.col;
+ },
+ // 姣忎釜grid-item鐨勫搴�
+ width() {
+ return 100 / Number(this.uGrid.col) + '%';
+ },
+ // 鏄惁鏄剧ず杈规
+ // 涓轰簡杩庡悎婕旂ず鐨勯渶瑕侊紝浠巆reated鐢熷懡鍛ㄦ湡绉诲埌姝わ紝浠ヤ负婕旂ず涓彲鑳介渶瑕佸姩鎬佷慨鏀规湁鏃犺竟妗�
+ showBorder() {
+ return this.uGrid.border;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click', this.index);
+ this.uGrid.click(this.index);
+ }
+ },
+ };
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-grid-item {
+ box-sizing: border-box;
+ background: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ flex-direction: column;
+
+ /* #ifdef MP */
+ position: relative;
+ float: left;
+ /* #endif */
+ }
+
+ .u-grid-item-hover {
+ background: #f7f7f7 !important;
+ }
+
+ .u-grid-marker-box {
+ position: absolute;
+ display: inline-block;
+ line-height: 0;
+ }
+
+ .u-grid-marker-wrap {
+ position: absolute;
+ }
+
+ .u-grid-item-box {
+ padding: 30rpx 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ flex: 1;
+ width: 100%;
+ height: 100%;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid/u-grid.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid/u-grid.vue"
new file mode 100644
index 0000000..56aaa6f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-grid/u-grid.vue"
@@ -0,0 +1,95 @@
+<template>
+ <view class="u-grid" :class="{'u-border-top u-border-left': border}" :style="[gridStyle]"><slot /></view>
+</template>
+
+<script>
+/**
+ * grid 瀹牸甯冨眬
+ * @description 瀹牸缁勪欢涓�鑸敤浜庡悓鏃跺睍绀哄涓悓绫婚」鐩殑鍦烘櫙锛屽彲浠ョ粰瀹牸鐨勯」鐩缃窘鏍囩粍浠�(badge)锛屾垨鑰呭浘鏍囩瓑锛屼篃鍙互鎵╁睍涓哄乏鍙虫粦鍔ㄧ殑杞挱褰㈠紡銆�
+ * @tutorial https://www.uviewui.com/components/grid.html
+ * @property {String Number} col 瀹牸鐨勫垪鏁帮紙榛樿3锛�
+ * @property {Boolean} border 鏄惁鏄剧ず瀹牸鐨勮竟妗嗭紙榛樿true锛�
+ * @property {Boolean} hover-class 鐐瑰嚮瀹牸鐨勬椂鍊欙紝鏄惁鏄剧ず鎸変笅鐨勭伆鑹茶儗鏅紙榛樿false锛�
+ * @event {Function} click 鐐瑰嚮瀹牸瑙﹀彂
+ * @example <u-grid :col="3" @click="click"></u-grid>
+ */
+export default {
+ name: 'u-grid',
+ props: {
+ // 鍒嗘垚鍑犲垪
+ col: {
+ type: [Number, String],
+ default: 3
+ },
+ // 鏄惁鏄剧ず杈规
+ border: {
+ type: Boolean,
+ default: true
+ },
+ // 瀹牸瀵归綈鏂瑰紡锛岃〃鐜颁负鏁伴噺灏戠殑鏃跺�欙紝闈犲乏锛屽眳涓紝杩樻槸闈犲彸
+ align: {
+ type: String,
+ default: 'left'
+ },
+ // 瀹牸鎸夊帇鏃剁殑鏍峰紡绫伙紝"none"涓烘棤鏁堟灉
+ hoverClass: {
+ type: String,
+ default: 'u-hover-class'
+ }
+ },
+ data() {
+ return {
+ index: 0,
+ }
+ },
+ provide() {
+ return {
+ uGrid: this
+ }
+ },
+ computed: {
+ // 瀹牸瀵归綈鏂瑰紡
+ gridStyle() {
+ let style = {};
+ switch(this.align) {
+ case 'left':
+ style.justifyContent = 'flex-start';
+ break;
+ case 'center':
+ style.justifyContent = 'center';
+ break;
+ case 'right':
+ style.justifyContent = 'flex-end';
+ break;
+ default: style.justifyContent = 'flex-start';
+ };
+ return style;
+ }
+ },
+ methods: {
+ click(index) {
+ this.$emit('click', index);
+ }
+ }
+
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-grid {
+ width: 100%;
+ /* #ifdef MP */
+ position: relative;
+ box-sizing: border-box;
+ overflow: hidden;
+ /* #endif */
+
+ /* #ifndef MP */
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ /* #endif */
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-icon/u-icon.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-icon/u-icon.vue"
new file mode 100644
index 0000000..44a47b1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-icon/u-icon.vue"
@@ -0,0 +1,262 @@
+<template>
+ <view :style="[customStyle]" class="u-icon" @tap="click" :class="['u-icon--' + labelPos]">
+ <image class="u-icon__img" v-if="isImg" :src="name" :mode="imgMode" :style="[imgStyle]"></image>
+ <text v-else class="u-icon__icon" :class="customClass" :style="[iconStyle]" :hover-class="hoverClass" @touchstart="touchstart"></text>
+ <!-- 杩欓噷杩涜绌哄瓧绗︿覆鍒ゆ柇锛屽鏋滀粎浠呮槸v-if="label"锛屽彲鑳戒細鍑虹幇浼犻��0鐨勬椂鍊欙紝缁撴灉涔熸棤娉曟樉绀� -->
+ <text v-if="label !== ''" class="u-icon__label" :style="{
+ color: labelColor,
+ fontSize: $u.addUnit(labelSize),
+ marginLeft: labelPos == 'right' ? $u.addUnit(marginLeft) : 0,
+ marginTop: labelPos == 'bottom' ? $u.addUnit(marginTop) : 0,
+ marginRight: labelPos == 'left' ? $u.addUnit(marginRight) : 0,
+ marginBottom: labelPos == 'top' ? $u.addUnit(marginBottom) : 0,
+ }">{{label}}</text>
+ </view>
+</template>
+
+<script>
+/**
+ * icon 鍥炬爣
+ * @description 鍩轰簬瀛椾綋鐨勫浘鏍囬泦锛屽寘鍚簡澶у鏁板父瑙佸満鏅殑鍥炬爣銆�
+ * @tutorial https://www.uviewui.com/components/icon.html
+ * @property {String} name 鍥炬爣鍚嶇О锛岃绀轰緥鍥炬爣闆�
+ * @property {String} color 鍥炬爣棰滆壊锛堥粯璁nherit锛�
+ * @property {String | Number} size 鍥炬爣瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�32锛�
+ * @property {String | Number} label-size label瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {String} label 鍥炬爣鍙充晶鐨刲abel鏂囧瓧锛堥粯璁�28锛�
+ * @property {String} label-pos label鏂囧瓧鐩稿浜庡浘鏍囩殑浣嶇疆锛屽彧鑳絩ight鎴朾ottom锛堥粯璁ight锛�
+ * @property {String} label-color label瀛椾綋棰滆壊锛堥粯璁�#606266锛�
+ * @property {Object} custom-style icon鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} custom-prefix 鑷畾涔夊瓧浣撳浘鏍囧簱鏃讹紝闇�瑕佸啓涓婃鍊�
+ * @property {String | Number} margin-left label鍦ㄥ彸渚ф椂涓庡浘鏍囩殑璺濈锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {String | Number} margin-top label鍦ㄤ笅鏂规椂涓庡浘鏍囩殑璺濈锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {String | Number} margin-bottom label鍦ㄤ笂鏂规椂涓庡浘鏍囩殑璺濈锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {String | Number} margin-right label鍦ㄥ乏渚ф椂涓庡浘鏍囩殑璺濈锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {String} label-pos label鐩稿浜庡浘鏍囩殑浣嶇疆锛屽彧鑳絩ight鎴朾ottom锛堥粯璁ight锛�
+ * @property {String} index 涓�涓敤浜庡尯鍒嗗涓浘鏍囩殑鍊硷紝鐐瑰嚮鍥炬爣鏃堕�氳繃click浜嬩欢浼犲嚭
+ * @property {String} hover-class 鍥炬爣鎸変笅鍘荤殑鏍峰紡绫伙紝鐢ㄦ硶鍚寀ni鐨剉iew缁勪欢鐨刪over-class鍙傛暟锛岃鎯呰瀹樼綉
+ * @property {String} width 鏄剧ず鍥剧墖灏忓浘鏍囨椂鐨勫搴�
+ * @property {String} height 鏄剧ず鍥剧墖灏忓浘鏍囨椂鐨勯珮搴�
+ * @property {String} top 鍥炬爣鍦ㄥ瀭鐩存柟鍚戜笂鐨勫畾浣�
+ * @event {Function} click 鐐瑰嚮鍥炬爣鏃惰Е鍙�
+ * @example <u-icon name="photo" color="#2979ff" size="28"></u-icon>
+ */
+export default {
+ name: 'u-icon',
+ props: {
+ // 鍥炬爣绫诲悕
+ name: {
+ type: String,
+ default: ''
+ },
+ // 鍥炬爣棰滆壊锛屽彲鎺ュ彈涓婚鑹�
+ color: {
+ type: String,
+ default: ''
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ size: {
+ type: [Number, String],
+ default: 'inherit'
+ },
+ // 鏄惁鏄剧ず绮椾綋
+ bold: {
+ type: Boolean,
+ default: false
+ },
+ // 鐐瑰嚮鍥炬爣鐨勬椂鍊欎紶閫掍簨浠跺嚭鍘荤殑index锛堢敤浜庡尯鍒嗙偣鍑讳簡鍝竴涓級
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ // 瑙︽懜鍥炬爣鏃剁殑绫诲悕
+ hoverClass: {
+ type: String,
+ default: ''
+ },
+ // 鑷畾涔夋墿灞曞墠缂�锛屾柟渚跨敤鎴锋墿灞曡嚜宸辩殑鍥炬爣搴�
+ customPrefix: {
+ type: String,
+ default: 'uicon'
+ },
+ // 鍥炬爣鍙宠竟鎴栬�呬笅闈㈢殑鏂囧瓧
+ label: {
+ type: [String, Number],
+ default: ''
+ },
+ // label鐨勪綅缃紝鍙兘鍙宠竟鎴栬�呬笅杈�
+ labelPos: {
+ type: String,
+ default: 'right'
+ },
+ // label鐨勫ぇ灏�
+ labelSize: {
+ type: [String, Number],
+ default: '28'
+ },
+ // label鐨勯鑹�
+ labelColor: {
+ type: String,
+ default: '#606266'
+ },
+ // label涓庡浘鏍囩殑璺濈(妯悜鎺掑垪)
+ marginLeft: {
+ type: [String, Number],
+ default: '6'
+ },
+ // label涓庡浘鏍囩殑璺濈(绔栧悜鎺掑垪)
+ marginTop: {
+ type: [String, Number],
+ default: '6'
+ },
+ // label涓庡浘鏍囩殑璺濈(绔栧悜鎺掑垪)
+ marginRight: {
+ type: [String, Number],
+ default: '6'
+ },
+ // label涓庡浘鏍囩殑璺濈(绔栧悜鎺掑垪)
+ marginBottom: {
+ type: [String, Number],
+ default: '6'
+ },
+ // 鍥剧墖鐨刴ode
+ imgMode: {
+ type: String,
+ default: 'widthFix'
+ },
+ // 鑷畾涔夋牱寮�
+ customStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鐢ㄤ簬鏄剧ず鍥剧墖灏忓浘鏍囨椂锛屽浘鐗囩殑瀹藉害
+ width: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鐢ㄤ簬鏄剧ず鍥剧墖灏忓浘鏍囨椂锛屽浘鐗囩殑楂樺害
+ height: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鐢ㄤ簬瑙e喅鏌愪簺鎯呭喌涓嬶紝璁╁浘鏍囧瀭鐩村眳涓殑鐢ㄩ��
+ top: {
+ type: [String, Number],
+ default: 0
+ }
+ },
+ computed: {
+ customClass() {
+ let classes = [];
+ classes.push(this.customPrefix + '-' + this.name);
+ // uView鐨勮嚜瀹氫箟鍥炬爣绫诲悕涓簎-iconfont
+ if (this.customPrefix == 'uicon') classes.push('u-iconfont');
+ else classes.push(this.customPrefix);
+ // 涓婚鑹诧紝閫氳繃绫婚厤缃�
+ if (this.color && this.$u.config.type.includes(this.color)) classes.push('u-icon__icon--' + this.color);
+ // 闃块噷锛屽ご鏉★紝鐧惧害灏忕▼搴忛�氳繃鏁扮粍缁戝畾绫诲悕鏃讹紝鏃犳硶鐩存帴浣跨敤[a, b, c]鐨勫舰寮忥紝鍚﹀垯鏃犳硶璇嗗埆
+ // 鏁呴渶灏嗗叾鎷嗘垚涓�涓瓧绗︿覆鐨勫舰寮忥紝閫氳繃绌烘牸闅斿紑鍚勪釜绫诲悕
+ //#ifdef MP-ALIPAY || MP-TOUTIAO || MP-BAIDU
+ classes = classes.join(' ');
+ //#endif
+ return classes;
+ },
+ iconStyle() {
+ let style = {};
+ style = {
+ fontSize: this.size == 'inherit' ? 'inherit' : this.$u.addUnit(this.size),
+ fontWeight: this.bold ? 'bold' : 'normal',
+ // 鏌愪簺鐗规畩鎯呭喌闇�瑕佽缃竴涓埌椤堕儴鐨勮窛绂伙紝鎵嶈兘鏇村ソ鐨勫瀭鐩村眳涓�
+ top: this.$u.addUnit(this.top)
+ };
+ // 闈炰富棰樿壊鍊兼椂锛屾墠褰撲綔棰滆壊鍊�
+ if (this.color && !this.$u.config.type.includes(this.color)) style.color = this.color;
+ return style;
+ },
+ // 鍒ゆ柇浼犲叆鐨刵ame灞炴�э紝鏄惁鍥剧墖璺緞锛屽彧瑕佸甫鏈�"/"鍧囪涓烘槸鍥剧墖褰㈠紡
+ isImg() {
+ return this.name.indexOf('/') !== -1;
+ },
+ imgStyle() {
+ let style = {};
+ // 濡傛灉璁剧疆width鍜宧eight灞炴�э紝鍒欎紭鍏堜娇鐢紝鍚﹀垯浣跨敤size灞炴��
+ style.width = this.width ? this.$u.addUnit(this.width) : this.$u.addUnit(this.size);
+ style.height = this.height ? this.$u.addUnit(this.height) : this.$u.addUnit(this.size);
+ return style;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click', this.index);
+ },
+ touchstart() {
+ this.$emit('touchstart', this.index);
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+@import '../../iconfont.css';
+
+.u-icon {
+ display: inline-flex;
+ align-items: center;
+
+ &--left {
+ flex-direction: row-reverse;
+ align-items: center;
+ }
+
+ &--right {
+ flex-direction: row;
+ align-items: center;
+ }
+
+ &--top {
+ flex-direction: column-reverse;
+ justify-content: center;
+ }
+
+ &--bottom {
+ flex-direction: column;
+ justify-content: center;
+ }
+
+ &__icon {
+ position: relative;
+
+ &--primary {
+ color: $u-type-primary;
+ }
+
+ &--success {
+ color: $u-type-success;
+ }
+
+ &--error {
+ color: $u-type-error;
+ }
+
+ &--warning {
+ color: $u-type-warning;
+ }
+
+ &--info {
+ color: $u-type-info;
+ }
+ }
+
+ &__img {
+ height: auto;
+ will-change: transform;
+ }
+
+ &__label {
+ line-height: 1;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-image/u-image.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-image/u-image.vue"
new file mode 100644
index 0000000..d779ddf
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-image/u-image.vue"
@@ -0,0 +1,262 @@
+<template>
+ <view class="u-image" @tap="onClick" :style="[wrapStyle, backgroundStyle]">
+ <image
+ v-if="!isError"
+ :src="src"
+ :mode="mode"
+ @error="onErrorHandler"
+ @load="onLoadHandler"
+ :lazy-load="lazyLoad"
+ class="u-image__image"
+ :style="{
+ borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius)
+ }"
+ ></image>
+ <view
+ v-if="showLoading && loading"
+ class="u-image__loading"
+ :style="{
+ borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius),
+ backgroundColor: this.bgColor
+ }"
+ >
+ <slot v-if="$slots.loading" name="loading" />
+ <u-icon v-else :name="loadingIcon" :width="width" :height="height"></u-icon>
+ </view>
+ <view
+ v-if="showError && isError && !loading"
+ class="u-image__error"
+ :style="{
+ borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius)
+ }"
+ >
+ <slot v-if="$slots.error" name="error" />
+ <u-icon v-else :name="errorIcon" :width="width" :height="height"></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * Image 鍥剧墖
+ * @description 姝ょ粍浠朵负uni-app鐨刬mage缁勪欢鐨勫姞寮虹増锛屽湪缁ф壙浜嗗師鏈夊姛鑳藉锛岃繕鏀寔娣″叆鍔ㄧ敾銆佸姞杞戒腑銆佸姞杞藉け璐ユ彁绀恒�佸渾瑙掑�煎拰褰㈢姸绛夈��
+ * @tutorial https://uviewui.com/components/image.html
+ * @property {String} src 鍥剧墖鍦板潃
+ * @property {String} mode 瑁佸壀妯″紡锛岃瀹樼綉璇存槑
+ * @property {String | Number} width 瀹藉害锛屽崟浣嶄换鎰忥紝濡傛灉涓烘暟鍊硷紝鍒欎负rpx鍗曚綅锛堥粯璁�100%锛�
+ * @property {String | Number} height 楂樺害锛屽崟浣嶄换鎰忥紝濡傛灉涓烘暟鍊硷紝鍒欎负rpx鍗曚綅锛堥粯璁� auto锛�
+ * @property {String} shape 鍥剧墖褰㈢姸锛宑ircle-鍦嗗舰锛宻quare-鏂瑰舰锛堥粯璁quare锛�
+ * @property {String | Number} border-radius 鍦嗚鍊硷紝鍗曚綅浠绘剰锛屽鏋滀负鏁板�硷紝鍒欎负rpx鍗曚綅锛堥粯璁� 0锛�
+ * @property {Boolean} lazy-load 鏄惁鎳掑姞杞斤紝浠呭井淇″皬绋嬪簭銆丄pp銆佺櫨搴﹀皬绋嬪簭銆佸瓧鑺傝烦鍔ㄥ皬绋嬪簭鏈夋晥锛堥粯璁� true锛�
+ * @property {Boolean} show-menu-by-longpress 鏄惁寮�鍚暱鎸夊浘鐗囨樉绀鸿瘑鍒皬绋嬪簭鐮佽彍鍗曪紝浠呭井淇″皬绋嬪簭鏈夋晥锛堥粯璁� false锛�
+ * @property {String} loading-icon 鍔犺浇涓殑鍥炬爣锛屾垨鑰呭皬鍥剧墖锛堥粯璁� photo锛�
+ * @property {String} error-icon 鍔犺浇澶辫触鐨勫浘鏍囷紝鎴栬�呭皬鍥剧墖锛堥粯璁� error-circle锛�
+ * @property {Boolean} show-loading 鏄惁鏄剧ず鍔犺浇涓殑鍥炬爣鎴栬�呰嚜瀹氫箟鐨剆lot锛堥粯璁� true锛�
+ * @property {Boolean} show-error 鏄惁鏄剧ず鍔犺浇閿欒鐨勫浘鏍囨垨鑰呰嚜瀹氫箟鐨剆lot锛堥粯璁� true锛�
+ * @property {Boolean} fade 鏄惁闇�瑕佹贰鍏ユ晥鏋滐紙榛樿 true锛�
+ * @property {String Number} width 浼犲叆鍥剧墖璺緞鏃跺浘鐗囩殑瀹藉害
+ * @property {String Number} height 浼犲叆鍥剧墖璺緞鏃跺浘鐗囩殑楂樺害
+ * @property {Boolean} webp 鍙敮鎸佺綉缁滆祫婧愶紝鍙寰俊灏忕▼搴忔湁鏁堬紙榛樿 false锛�
+ * @property {String | Number} duration 鎼厤fade鍙傛暟鐨勮繃娓℃椂闂达紝鍗曚綅ms锛堥粯璁� 500锛�
+ * @event {Function} click 鐐瑰嚮鍥剧墖鏃惰Е鍙�
+ * @event {Function} error 鍥剧墖鍔犺浇澶辫触鏃惰Е鍙�
+ * @event {Function} load 鍥剧墖鍔犺浇鎴愬姛鏃惰Е鍙�
+ * @example <u-image width="100%" height="300rpx" :src="src"></u-image>
+ */
+export default {
+ name: 'u-image',
+ props: {
+ // 鍥剧墖鍦板潃
+ src: {
+ type: String,
+ default: ''
+ },
+ // 瑁佸壀妯″紡
+ mode: {
+ type: String,
+ default: 'aspectFill'
+ },
+ // 瀹藉害锛屽崟浣嶄换鎰�
+ width: {
+ type: [String, Number],
+ default: '100%'
+ },
+ // 楂樺害锛屽崟浣嶄换鎰�
+ height: {
+ type: [String, Number],
+ default: 'auto'
+ },
+ // 鍥剧墖褰㈢姸锛宑ircle-鍦嗗舰锛宻quare-鏂瑰舰
+ shape: {
+ type: String,
+ default: 'square'
+ },
+ // 鍦嗚锛屽崟浣嶄换鎰�
+ borderRadius: {
+ type: [String, Number],
+ default: 0
+ },
+ // 鏄惁鎳掑姞杞斤紝寰俊灏忕▼搴忋�丄pp銆佺櫨搴﹀皬绋嬪簭銆佸瓧鑺傝烦鍔ㄥ皬绋嬪簭
+ lazyLoad: {
+ type: Boolean,
+ default: true
+ },
+ // 寮�鍚暱鎸夊浘鐗囨樉绀鸿瘑鍒井淇″皬绋嬪簭鐮佽彍鍗�
+ showMenuByLongpress: {
+ type: Boolean,
+ default: true
+ },
+ // 鍔犺浇涓殑鍥炬爣锛屾垨鑰呭皬鍥剧墖
+ loadingIcon: {
+ type: String,
+ default: 'photo'
+ },
+ // 鍔犺浇澶辫触鐨勫浘鏍囷紝鎴栬�呭皬鍥剧墖
+ errorIcon: {
+ type: String,
+ default: 'error-circle'
+ },
+ // 鏄惁鏄剧ず鍔犺浇涓殑鍥炬爣鎴栬�呰嚜瀹氫箟鐨剆lot
+ showLoading: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鍔犺浇閿欒鐨勫浘鏍囨垨鑰呰嚜瀹氫箟鐨剆lot
+ showError: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁闇�瑕佹贰鍏ユ晥鏋�
+ fade: {
+ type: Boolean,
+ default: true
+ },
+ // 鍙敮鎸佺綉缁滆祫婧愶紝鍙寰俊灏忕▼搴忔湁鏁�
+ webp: {
+ type: Boolean,
+ default: false
+ },
+ // 杩囨浮鏃堕棿锛屽崟浣峬s
+ duration: {
+ type: [String, Number],
+ default: 500
+ },
+ // 鑳屾櫙棰滆壊锛岀敤浜庢繁鑹查〉闈㈠姞杞藉浘鐗囨椂锛屼负浜嗗拰鑳屾櫙鑹茶瀺鍚�
+ bgColor: {
+ type: String,
+ default: '#f3f4f6'
+ }
+ },
+ data() {
+ return {
+ // 鍥剧墖鏄惁鍔犺浇閿欒锛屽鏋滄槸锛屽垯鏄剧ず閿欒鍗犱綅鍥�
+ isError: false,
+ // 鍒濆鍖栫粍浠舵椂锛岄粯璁や负鍔犺浇涓姸鎬�
+ loading: true,
+ // 涓嶉�忔槑搴︼紝涓轰簡瀹炵幇娣″叆娣″嚭鐨勬晥鏋�
+ opacity: 1,
+ // 杩囨浮鏃堕棿锛屽洜涓簆rops鐨勫�兼棤娉曚慨鏀癸紝鏁呴渶瑕佷竴涓腑闂村��
+ durationTime: this.duration,
+ // 鍥剧墖鍔犺浇瀹屾垚鏃讹紝鍘绘帀鑳屾櫙棰滆壊锛屽洜涓哄鏋滄槸png鍥剧墖锛屽氨浼氭樉绀虹伆鑹茬殑鑳屾櫙
+ backgroundStyle: {}
+ };
+ },
+ watch: {
+ src(n) {
+ if(!n) {
+ // 濡傛灉浼犲叆null鎴栬��''锛屾垨鑰協alse锛屾垨鑰卽ndefined锛屾爣璁颁负閿欒鐘舵��
+ this.isError = true;
+ } else {
+ this.isError = false;
+ }
+ }
+ },
+ computed: {
+ wrapStyle() {
+ let style = {};
+ // 閫氳繃璋冪敤addUnit()鏂规硶锛屽鏋滄湁鍗曚綅锛屽鐧惧垎姣旓紝px鍗曚綅绛夛紝鐩存帴杩斿洖锛屽鏋滄槸绾补鐨勬暟鍊硷紝鍒欏姞涓妑px鍗曚綅
+ style.width = this.$u.addUnit(this.width);
+ style.height = this.$u.addUnit(this.height);
+ // 濡傛灉鏄厤缃簡鍦嗗舰锛岃缃�50%鐨勫渾瑙掞紝鍚﹀垯鎸夌収榛樿鐨勯厤缃��
+ style.borderRadius = this.shape == 'circle' ? '50%' : this.$u.addUnit(this.borderRadius);
+ // 濡傛灉璁剧疆鍦嗚锛屽繀椤昏鏈塰idden锛屽惁鍒欏彲鑳藉渾瑙掓棤鏁�
+ style.overflow = this.borderRadius > 0 ? 'hidden' : 'visible';
+ if (this.fade) {
+ style.opacity = this.opacity;
+ style.transition = `opacity ${Number(this.durationTime) / 1000}s ease-in-out`;
+ }
+ return style;
+ }
+ },
+ methods: {
+ // 鐐瑰嚮鍥剧墖
+ onClick() {
+ this.$emit('click');
+ },
+ // 鍥剧墖鍔犺浇澶辫触
+ onErrorHandler() {
+ this.loading = false;
+ this.isError = true;
+ this.$emit('error');
+ },
+ // 鍥剧墖鍔犺浇瀹屾垚锛屾爣璁發oading缁撴潫
+ onLoadHandler() {
+ this.loading = false;
+ this.isError = false;
+ this.$emit('load');
+ // 濡傛灉涓嶉渶瑕佸姩鐢绘晥鏋滐紝灏变笉鎵ц涓嬫柟浠g爜锛屽悓鏃剁Щ闄ゅ姞杞芥椂鐨勮儗鏅鑹�
+ // 鍚﹀垯鏃犻渶fade鏁堟灉鏃讹紝png鍥剧墖渚濈劧鑳界湅鍒颁笅鏂圭殑鑳屾櫙鑹�
+ if (!this.fade) return this.removeBgColor();
+ // 鍘熸潵opacity涓�1(涓嶉�忔槑锛屾槸涓轰簡鏄剧ず鍗犱綅鍥�)锛屾敼鎴�0(閫忔槑锛屾剰鍛崇潃璇ュ厓绱犳樉绀虹殑鏄儗鏅鑹诧紝榛樿鐨勭伆鑹�)锛屽啀鏀规垚1锛屾槸涓轰簡鑾峰緱杩囨浮鏁堟灉
+ this.opacity = 0;
+ // 杩欓噷璁剧疆涓�0锛屾槸涓轰簡鍥剧墖灞曠ず鍒拌儗鏅叏閫忔槑杩欎釜杩囩▼鏃堕棿涓�0锛屽欢鏃朵箣鍚庡欢鏃朵箣鍚庨噸鏂拌缃负duration锛屾槸涓轰簡鑾峰緱鑳屾櫙閫忔槑(鐏拌壊)
+ // 鍒板浘鐗囧睍绀虹殑杩囩▼涓殑娣″叆鏁堟灉
+ this.durationTime = 0;
+ // 寤舵椂50ms锛屽惁鍒欏湪娴忚鍣℉5锛岃繃娓℃晥鏋滄棤鏁�
+ setTimeout(() => {
+ this.durationTime = this.duration;
+ this.opacity = 1;
+ setTimeout(() => {
+ this.removeBgColor();
+ }, this.durationTime);
+ }, 50);
+ },
+ // 绉婚櫎鍥剧墖鐨勮儗鏅壊
+ removeBgColor() {
+ // 娣″叆鍔ㄧ敾杩囨浮瀹屾垚鍚庯紝灏嗚儗鏅缃负閫忔槑鑹诧紝鍚﹀垯png鍥剧墖浼氱湅鍒扮伆鑹茬殑鑳屾櫙
+ this.backgroundStyle = {
+ backgroundColor: 'transparent'
+ };
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import '../../libs/css/style.components.scss';
+
+.u-image {
+ position: relative;
+ transition: opacity 0.5s ease-in-out;
+
+ &__image {
+ width: 100%;
+ height: 100%;
+ }
+
+ &__loading,
+ &__error {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: $u-bg-color;
+ color: $u-tips-color;
+ font-size: 46rpx;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue"
new file mode 100644
index 0000000..473760b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue"
@@ -0,0 +1,84 @@
+<template>
+ <!-- 鏀粯瀹濆皬绋嬪簭浣跨敤$u.getRect()鑾峰彇缁勪欢鐨勬牴鍏冪礌灏哄锛屾墍浠ュ湪澶栭潰濂椾竴涓�"澹�" -->
+ <view>
+ <view class="u-index-anchor-wrapper" :id="$u.guid()" :style="[wrapperStyle]">
+ <view class="u-index-anchor " :class="[active ? 'u-index-anchor--active' : '']" :style="[customAnchorStyle]">
+ <slot v-if="useSlot" />
+ <block v-else>
+ <text>{{ index }}</text>
+ </block>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * indexAnchor 绱㈠紩鍒楄〃閿氱偣
+ * @description 閫氳繃鎶樺彔闈㈡澘鏀剁撼鍐呭鍖哄煙,鎼厤<u-index-anchor>浣跨敤
+ * @tutorial https://www.uviewui.com/components/indexList.html#indexanchor-props
+ * @property {Boolean} use-slot 鏄惁浣跨敤鑷畾涔夊唴瀹圭殑鎻掓Ы锛堥粯璁alse锛�
+ * @property {String Number} index 绱㈠紩瀛楃锛屽鏋滃畾涔変簡use-slot锛屾鍙傛暟鑷姩澶辨晥
+ * @property {Object} custStyle 鑷畾涔夋牱寮忥紝瀵硅薄褰㈠紡锛屽"{color: 'red'}"
+ * @event {Function} default 閿氱偣浣嶇疆鏄剧ず鍐呭锛岄粯璁や负绱㈠紩瀛楃
+ * @example <u-index-anchor :index="item" />
+ */
+ export default {
+ name: "u-index-anchor",
+ props: {
+ useSlot: {
+ type: Boolean,
+ default: false
+ },
+ index: {
+ type: String,
+ default: ''
+ },
+ customStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ active: false,
+ wrapperStyle: {},
+ anchorStyle: {}
+ }
+ },
+ inject: ['UIndexList'],
+ mounted() {
+ this.UIndexList.children.push(this);
+ this.UIndexList.updateData();
+ },
+ computed: {
+ customAnchorStyle() {
+ return Object.assign(this.anchorStyle, this.customStyle);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-index-anchor {
+ box-sizing: border-box;
+ padding: 14rpx 24rpx;
+ color: #606266;
+ width: 100%;
+ font-weight: 500;
+ font-size: 28rpx;
+ line-height: 1.2;
+ background-color: rgb(245, 245, 245);
+ }
+
+ .u-index-anchor--active {
+ right: 0;
+ left: 0;
+ color: #2979ff;
+ background-color: #fff;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-list/u-index-list.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-list/u-index-list.vue"
new file mode 100644
index 0000000..0e96f36
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-index-list/u-index-list.vue"
@@ -0,0 +1,321 @@
+<template>
+ <!-- 鏀粯瀹濆皬绋嬪簭浣跨敤$u.getRect()鑾峰彇缁勪欢鐨勬牴鍏冪礌灏哄锛屾墍浠ュ湪澶栭潰濂椾竴涓�"澹�" -->
+ <view>
+ <view class="u-index-bar">
+ <slot />
+ <view v-if="showSidebar" class="u-index-bar__sidebar" @touchstart.stop.prevent="onTouchMove" @touchmove.stop.prevent="onTouchMove"
+ @touchend.stop.prevent="onTouchStop" @touchcancel.stop.prevent="onTouchStop">
+ <view v-for="(item, index) in indexList" :key="index" class="u-index-bar__index" :style="{zIndex: zIndex + 1, color: activeAnchorIndex === index ? activeColor : ''}"
+ :data-index="index">
+ {{ item }}
+ </view>
+ </view>
+ <view class="u-indexed-list-alert" v-if="touchmove && indexList[touchmoveIndex]" :style="{
+ zIndex: alertZIndex
+ }">
+ <text>{{indexList[touchmoveIndex]}}</text>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ var indexList = function() {
+ var indexList = [];
+ var charCodeOfA = 'A'.charCodeAt(0);
+ for (var i = 0; i < 26; i++) {
+ indexList.push(String.fromCharCode(charCodeOfA + i));
+ }
+ return indexList;
+ };
+
+ /**
+ * indexList 绱㈠紩鍒楄〃
+ * @description 閫氳繃鎶樺彔闈㈡澘鏀剁撼鍐呭鍖哄煙,鎼厤<u-index-anchor>浣跨敤
+ * @tutorial https://www.uviewui.com/components/indexList.html#indexanchor-props
+ * @property {Number String} scroll-top 褰撳墠婊氬姩楂樺害锛岃嚜瀹氫箟缁勪欢鏃犳硶鑾峰緱婊氬姩鏉′簨浠讹紝鎵�浠ヤ緷璧栨帴鍏ユ柟浼犲叆
+ * @property {Array} index-list 绱㈠紩瀛楃鍒楄〃锛屾暟缁勶紙榛樿A-Z锛�
+ * @property {Number String} z-index 閿氱偣鍚搁《鏃剁殑灞傜骇锛堥粯璁�965锛�
+ * @property {Boolean} sticky 鏄惁寮�鍚敋鐐硅嚜鍔ㄥ惛椤讹紙榛樿true锛�
+ * @property {Number String} offset-top 閿氱偣鑷姩鍚搁《鏃朵笌椤堕儴鐨勮窛绂伙紙榛樿0锛�
+ * @property {String} highlight-color 閿氱偣鍜屽彸杈圭储寮曞瓧绗﹂珮浜鑹诧紙榛樿#2979ff锛�
+ * @event {Function} select 閫変腑鍙宠竟绱㈠紩瀛楃鏃惰Е鍙�
+ * @example <u-index-list :scrollTop="scrollTop"></u-index-list>
+ */
+ export default {
+ name: "u-index-list",
+ props: {
+ sticky: {
+ type: Boolean,
+ default: true
+ },
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ scrollTop: {
+ type: [Number, String],
+ default: 0,
+ },
+ offsetTop: {
+ type: [Number, String],
+ default: 0
+ },
+ indexList: {
+ type: Array,
+ default () {
+ return indexList()
+ }
+ },
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ }
+ },
+ created() {
+ // #ifdef H5
+ this.stickyOffsetTop = this.offsetTop ? uni.upx2px(this.offsetTop) : 44;
+ // #endif
+ // #ifndef H5
+ this.stickyOffsetTop = this.offsetTop ? uni.upx2px(this.offsetTop) : 0;
+ // #endif
+ // 鍙兘鍦╟reated鐢熷懡鍛ㄦ湡瀹氫箟children锛屽鏋滃湪data瀹氫箟锛屼細鍥犱负鍦ㄥ瓙缁勪欢涓�氳繃provide/inject
+ // 杩涜push鏃惰�屽鑷寸殑鑾悕鍏跺鐨勯敊璇�
+ this.children = [];
+ },
+ provide() {
+ return {
+ UIndexList: this
+ }
+ },
+ data() {
+ return {
+ activeAnchorIndex: 0,
+ showSidebar: true,
+ // children: [],
+ touchmove: false,
+ touchmoveIndex: 0,
+ }
+ },
+ watch: {
+ scrollTop() {
+ this.updateData()
+ }
+ },
+ computed: {
+ // 寮瑰嚭toast鐨剒-index鍊�
+ alertZIndex() {
+ return this.$u.zIndex.toast;
+ }
+ },
+ methods: {
+ updateData() {
+ this.timer && clearTimeout(this.timer);
+ this.timer = setTimeout(() => {
+ this.showSidebar = !!this.children.length;
+ this.setRect().then(() => {
+ this.onScroll();
+ });
+ }, 0);
+ },
+ setRect() {
+ return Promise.all([
+ this.setAnchorsRect(),
+ this.setListRect(),
+ this.setSiderbarRect()
+ ]);
+ },
+ setAnchorsRect() {
+ return Promise.all(this.children.map((anchor, index) => anchor
+ .$uGetRect('.u-index-anchor-wrapper')
+ .then((rect) => {
+ Object.assign(anchor, {
+ height: rect.height,
+ top: rect.top
+ });
+ })));
+ },
+ setListRect() {
+ return this.$uGetRect('.u-index-bar').then((rect) => {
+ Object.assign(this, {
+ height: rect.height,
+ top: rect.top + this.scrollTop
+ });
+ });
+ },
+ setSiderbarRect() {
+ return this.$uGetRect('.u-index-bar__sidebar').then(rect => {
+ this.sidebar = {
+ height: rect.height,
+ top: rect.top
+ };
+ });
+ },
+ getActiveAnchorIndex() {
+ const {
+ children
+ } = this;
+ const {
+ sticky
+ } = this;
+ for (let i = this.children.length - 1; i >= 0; i--) {
+ const preAnchorHeight = i > 0 ? children[i - 1].height : 0;
+ const reachTop = sticky ? preAnchorHeight : 0;
+ if (reachTop >= children[i].top) {
+ return i;
+ }
+ }
+ return -1;
+ },
+ onScroll() {
+ const {
+ children = []
+ } = this;
+ if (!children.length) {
+ return;
+ }
+ const {
+ sticky,
+ stickyOffsetTop,
+ zIndex,
+ scrollTop,
+ activeColor
+ } = this;
+ const active = this.getActiveAnchorIndex();
+ this.activeAnchorIndex = active;
+ if (sticky) {
+ let isActiveAnchorSticky = false;
+ if (active !== -1) {
+ isActiveAnchorSticky =
+ children[active].top <= 0;
+ }
+ children.forEach((item, index) => {
+ if (index === active) {
+ let wrapperStyle = '';
+ let anchorStyle = {
+ color: `${activeColor}`
+ };
+ if (isActiveAnchorSticky) {
+ wrapperStyle = {
+ height: `${children[index].height}px`
+ };
+ anchorStyle = {
+ position: 'fixed',
+ top: `${stickyOffsetTop}px`,
+ zIndex: `${zIndex ? zIndex : this.$u.zIndex.indexListSticky}`,
+ color: `${activeColor}`
+ };
+ }
+ item.active = active;
+ item.wrapperStyle = wrapperStyle;
+ item.anchorStyle = anchorStyle;
+ } else if (index === active - 1) {
+ const currentAnchor = children[index];
+ const currentOffsetTop = currentAnchor.top;
+ const targetOffsetTop = index === children.length - 1 ?
+ this.top :
+ children[index + 1].top;
+ const parentOffsetHeight = targetOffsetTop - currentOffsetTop;
+ const translateY = parentOffsetHeight - currentAnchor.height;
+ const anchorStyle = {
+ position: 'relative',
+ transform: `translate3d(0, ${translateY}px, 0)`,
+ zIndex: `${zIndex ? zIndex : this.$u.zIndex.indexListSticky}`,
+ color: `${activeColor}`
+ };
+ item.active = active;
+ item.anchorStyle = anchorStyle;
+ } else {
+ item.active = false;
+ item.anchorStyle = '';
+ item.wrapperStyle = '';
+ }
+ });
+ }
+ },
+ onTouchMove(event) {
+ this.touchmove = true;
+ const sidebarLength = this.children.length;
+ const touch = event.touches[0];
+ const itemHeight = this.sidebar.height / sidebarLength;
+ let clientY = 0;
+ clientY = touch.clientY;
+ let index = Math.floor((clientY - this.sidebar.top) / itemHeight);
+ if (index < 0) {
+ index = 0;
+ } else if (index > sidebarLength - 1) {
+ index = sidebarLength - 1;
+ }
+ this.touchmoveIndex = index;
+ this.scrollToAnchor(index);
+ },
+ onTouchStop() {
+ this.touchmove = false;
+ this.scrollToAnchorIndex = null;
+ },
+ scrollToAnchor(index) {
+ if (this.scrollToAnchorIndex === index) {
+ return;
+ }
+ this.scrollToAnchorIndex = index;
+ const anchor = this.children.find((item) => item.index === this.indexList[index]);
+ if (anchor) {
+ this.$emit('select', anchor.index);
+ uni.pageScrollTo({
+ duration: 0,
+ scrollTop: anchor.top + this.scrollTop
+ });
+ }
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-index-bar {
+ position: relative
+ }
+
+ .u-index-bar__sidebar {
+ position: fixed;
+ top: 50%;
+ right: 0;
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ transform: translateY(-50%);
+ user-select: none;
+ z-index: 99;
+ }
+
+ .u-index-bar__index {
+ font-weight: 500;
+ padding: 8rpx 18rpx;
+ font-size: 22rpx;
+ line-height: 1
+ }
+
+ .u-indexed-list-alert {
+ position: fixed;
+ width: 120rpx;
+ height: 120rpx;
+ right: 90rpx;
+ top: 50%;
+ margin-top: -60rpx;
+ border-radius: 24rpx;
+ font-size: 50rpx;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.65);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0;
+ z-index: 9999999;
+ }
+
+ .u-indexed-list-alert text {
+ line-height: 50rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-input/u-input.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-input/u-input.vue"
new file mode 100644
index 0000000..148e552
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-input/u-input.vue"
@@ -0,0 +1,366 @@
+<template>
+ <view
+ class="u-input"
+ :class="{
+ 'u-input--border': border,
+ 'u-input--error': validateState
+ }"
+ :style="{
+ padding: `0 ${border ? 20 : 0}rpx`,
+ borderColor: borderColor,
+ textAlign: inputAlign
+ }"
+ @tap.stop="inputClick"
+ >
+ <textarea
+ v-if="type == 'textarea'"
+ class="u-input__input u-input__textarea"
+ :style="[getStyle]"
+ :value="defaultValue"
+ :placeholder="placeholder"
+ :placeholderStyle="placeholderStyle"
+ :disabled="disabled"
+ :maxlength="inputMaxlength"
+ :fixed="fixed"
+ :focus="focus"
+ :autoHeight="autoHeight"
+ :selection-end="uSelectionEnd"
+ :selection-start="uSelectionStart"
+ :cursor-spacing="getCursorSpacing"
+ @input="handleInput"
+ @blur="handleBlur"
+ @focus="onFocus"
+ @confirm="onConfirm"
+ />
+ <input
+ v-else
+ class="u-input__input"
+ :type="type == 'password' ? 'text' : type"
+ :style="[getStyle]"
+ :value="defaultValue"
+ :password="type == 'password' && !showPassword"
+ :placeholder="placeholder"
+ :placeholderStyle="placeholderStyle"
+ :disabled="disabled || type === 'select'"
+ :maxlength="inputMaxlength"
+ :focus="focus"
+ :confirmType="confirmType"
+ :cursor-spacing="getCursorSpacing"
+ :selection-end="uSelectionEnd"
+ :selection-start="uSelectionStart"
+ @focus="onFocus"
+ @blur="handleBlur"
+ @input="handleInput"
+ @confirm="onConfirm"
+ />
+ <view class="u-input__right-icon u-flex">
+ <view class="u-input__right-icon__clear u-input__right-icon__item" @tap="onClear" v-if="clearable && value != '' && focused">
+ <u-icon size="32" name="close-circle-fill" color="#c0c4cc"/>
+ </view>
+ <view class="u-input__right-icon__clear u-input__right-icon__item" v-if="passwordIcon && type == 'password'">
+ <u-icon size="32" :name="!showPassword ? 'eye' : 'eye-fill'" color="#c0c4cc" @click="showPassword = !showPassword"/>
+ </view>
+ <view class="u-input__right-icon--select u-input__right-icon__item" v-if="type == 'select'" :class="{
+ 'u-input__right-icon--select--reverse': selectOpen
+ }">
+ <u-icon name="arrow-down-fill" size="26" color="#c0c4cc"></u-icon>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+import Emitter from '../../libs/util/emitter.js';
+
+/**
+ * input 杈撳叆妗�
+ * @description 姝ょ粍浠朵负涓�涓緭鍏ユ锛岄粯璁ゆ病鏈夎竟妗嗗拰鏍峰紡锛屾槸涓撻棬涓洪厤鍚堣〃鍗曠粍浠秛-form鑰岃璁$殑锛屽埄鐢ㄥ畠鍙互蹇�熷疄鐜拌〃鍗曢獙璇侊紝杈撳叆鍐呭锛屼笅鎷夐�夋嫨绛夊姛鑳姐��
+ * @tutorial http://uviewui.com/components/input.html
+ * @property {String} type 妯″紡閫夋嫨锛岃瀹樼綉璇存槑
+ * @property {Boolean} clearable 鏄惁鏄剧ず鍙充晶鐨勬竻闄ゅ浘鏍�(榛樿true)
+ * @property {} v-model 鐢ㄤ簬鍙屽悜缁戝畾杈撳叆妗嗙殑鍊�
+ * @property {String} input-align 杈撳叆妗嗘枃瀛楃殑瀵归綈鏂瑰紡(榛樿left)
+ * @property {String} placeholder placeholder鏄剧ず鍊�(榛樿 '璇疯緭鍏ュ唴瀹�')
+ * @property {Boolean} disabled 鏄惁绂佺敤杈撳叆妗�(榛樿false)
+ * @property {String Number} maxlength 杈撳叆妗嗙殑鏈�澶у彲杈撳叆闀垮害(榛樿140)
+ * @property {String Number} selection-start 鍏夋爣璧峰浣嶇疆锛岃嚜鍔ㄨ仛鐒︽椂鏈夋晥锛岄渶涓巗election-end鎼厤浣跨敤锛堥粯璁�-1锛�
+ * @property {String Number} maxlength 鍏夋爣缁撴潫浣嶇疆锛岃嚜鍔ㄨ仛鐒︽椂鏈夋晥锛岄渶涓巗election-start鎼厤浣跨敤锛堥粯璁�-1锛�
+ * @property {String Number} cursor-spacing 鎸囧畾鍏夋爣涓庨敭鐩樼殑璺濈锛屽崟浣峱x(榛樿0)
+ * @property {String} placeholderStyle placeholder鐨勬牱寮忥紝瀛楃涓插舰寮忥紝濡�"color: red;"(榛樿 "color: #c0c4cc;")
+ * @property {String} confirm-type 璁剧疆閿洏鍙充笅瑙掓寜閽殑鏂囧瓧锛屼粎鍦╰ype涓簍ext鏃剁敓鏁�(榛樿done)
+ * @property {Object} custom-style 鑷畾涔夎緭鍏ユ鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} focus 鏄惁鑷姩鑾峰緱鐒︾偣(榛樿false)
+ * @property {Boolean} fixed 濡傛灉type涓簍extarea锛屼笖鍦ㄤ竴涓�"position:fixed"鐨勫尯鍩燂紝闇�瑕佹寚鏄庝负true(榛樿false)
+ * @property {Boolean} password-icon type涓簆assword鏃讹紝鏄惁鏄剧ず鍙充晶鐨勫瘑鐮佹煡鐪嬪浘鏍�(榛樿true)
+ * @property {Boolean} border 鏄惁鏄剧ず杈规(榛樿false)
+ * @property {String} border-color 杈撳叆妗嗙殑杈规棰滆壊(榛樿#dcdfe6)
+ * @property {Boolean} auto-height 鏄惁鑷姩澧為珮杈撳叆鍖哄煙锛宼ype涓簍extarea鏃舵湁鏁�(榛樿true)
+ * @property {String Number} height 楂樺害锛屽崟浣峳px(text绫诲瀷鏃朵负70锛宼extarea鏃朵负100)
+ * @example <u-input v-model="value" :type="type" :border="border" />
+ */
+export default {
+ name: 'u-input',
+ mixins: [Emitter],
+ props: {
+ value: {
+ type: [String, Number],
+ default: ''
+ },
+ // 杈撳叆妗嗙殑绫诲瀷锛宼extarea锛宼ext锛宯umber
+ type: {
+ type: String,
+ default: 'text'
+ },
+ inputAlign: {
+ type: String,
+ default: 'left'
+ },
+ placeholder: {
+ type: String,
+ default: '璇疯緭鍏ュ唴瀹�'
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ maxlength: {
+ type: [Number, String],
+ default: 140
+ },
+ placeholderStyle: {
+ type: String,
+ default: 'color: #c0c4cc;'
+ },
+ confirmType: {
+ type: String,
+ default: 'done'
+ },
+ // 杈撳叆妗嗙殑鑷畾涔夋牱寮�
+ customStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 濡傛灉 textarea 鏄湪涓�涓� position:fixed 鐨勫尯鍩燂紝闇�瑕佹樉绀烘寚瀹氬睘鎬� fixed 涓� true
+ fixed: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鑷姩鑾峰緱鐒︾偣
+ focus: {
+ type: Boolean,
+ default: false
+ },
+ // 瀵嗙爜绫诲瀷鏃讹紝鏄惁鏄剧ず鍙充晶鐨勫瘑鐮佸浘鏍�
+ passwordIcon: {
+ type: Boolean,
+ default: true
+ },
+ // input|textarea鏄惁鏄剧ず杈规
+ border: {
+ type: Boolean,
+ default: false
+ },
+ // 杈撳叆妗嗙殑杈规棰滆壊
+ borderColor: {
+ type: String,
+ default: '#dcdfe6'
+ },
+ autoHeight: {
+ type: Boolean,
+ default: true
+ },
+ // type=select鏃讹紝鏃嬭浆鍙充晶鐨勫浘鏍囷紝鏍囪瘑褰撳墠澶勪簬鎵撳紑杩樻槸鍏抽棴select鐨勭姸鎬�
+ // open-鎵撳紑锛宑lose-鍏抽棴
+ selectOpen: {
+ type: Boolean,
+ default: false
+ },
+ // 楂樺害锛屽崟浣峳px
+ height: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏄惁鍙竻绌�
+ clearable: {
+ type: Boolean,
+ default: true
+ },
+ // 鎸囧畾鍏夋爣涓庨敭鐩樼殑璺濈锛屽崟浣� px
+ cursorSpacing: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鍏夋爣璧峰浣嶇疆锛岃嚜鍔ㄨ仛鐒︽椂鏈夋晥锛岄渶涓巗election-end鎼厤浣跨敤
+ selectionStart: {
+ type: [Number, String],
+ default: -1
+ },
+ // 鍏夋爣缁撴潫浣嶇疆锛岃嚜鍔ㄨ仛鐒︽椂鏈夋晥锛岄渶涓巗election-start鎼厤浣跨敤
+ selectionEnd: {
+ type: [Number, String],
+ default: -1
+ },
+ // 鏄惁鑷姩鍘婚櫎涓ょ鐨勭┖鏍�
+ trim: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ defaultValue: this.value,
+ inputHeight: 70, // input鐨勯珮搴�
+ textareaHeight: 100, // textarea鐨勯珮搴�
+ validateState: false, // 褰撳墠input鐨勯獙璇佺姸鎬侊紝鐢ㄤ簬閿欒鏃讹紝杈规鏄惁鏀逛负绾㈣壊
+ focused: false, // 褰撳墠鏄惁澶勪簬鑾峰緱鐒︾偣鐨勭姸鎬�
+ showPassword: false, // 鏄惁棰勮瀵嗙爜
+ };
+ },
+ watch: {
+ value(nVal, oVal) {
+ this.defaultValue = nVal;
+ // 褰撳�煎彂鐢熷彉鍖栵紝涓斾负select绫诲瀷鏃�(姝ゆ椂input琚缃负disabled锛屼笉浼氳Е鍙慇input浜嬩欢)锛屾ā鎷熻Е鍙慇input浜嬩欢
+ if(nVal != oVal && this.type == 'select') this.handleInput({
+ detail: {
+ value: nVal
+ }
+ })
+ },
+ },
+ computed: {
+ // 鍥犱负uniapp鐨刬nput缁勪欢鐨刴axlength缁勪欢蹇呴』瑕佹暟鍊硷紝杩欓噷杞负鏁板�硷紝缁欑敤鎴峰彲浠ヤ紶鍏ュ瓧绗︿覆鏁板��
+ inputMaxlength() {
+ return Number(this.maxlength);
+ },
+ getStyle() {
+ let style = {};
+ // 濡傛灉娌℃湁鑷畾涔夐珮搴︼紝灏辨牴鎹畉ype涓篿nput杩樻槸textare鏉ュ垎閰嶄竴涓粯璁ょ殑楂樺害
+ style.minHeight = this.height ? this.height + 'rpx' : this.type == 'textarea' ?
+ this.textareaHeight + 'rpx' : this.inputHeight + 'rpx';
+ style = Object.assign(style, this.customStyle);
+ return style;
+ },
+ //
+ getCursorSpacing() {
+ return Number(this.cursorSpacing);
+ },
+ // 鍏夋爣璧峰浣嶇疆
+ uSelectionStart() {
+ return String(this.selectionStart);
+ },
+ // 鍏夋爣缁撴潫浣嶇疆
+ uSelectionEnd() {
+ return String(this.selectionEnd);
+ }
+ },
+ created() {
+ // 鐩戝惉u-form-item鍙戝嚭鐨勯敊璇簨浠讹紝灏嗚緭鍏ユ杈规鍙樼孩鑹�
+ this.$on('on-form-item-error', this.onFormItemError);
+ },
+ methods: {
+ /**
+ * change 浜嬩欢
+ * @param event
+ */
+ handleInput(event) {
+ let value = event.detail.value;
+ // 鍒ゆ柇鏄惁鍘婚櫎绌烘牸
+ if(this.trim) value = this.$u.trim(value);
+ // 褰撳墠model 璧嬪��
+ this.defaultValue = value;
+ // vue 鍘熺敓鐨勬柟娉� return 鍑哄幓
+ this.$emit('input', value);
+ // 杩囦竴涓敓鍛藉懆鏈熷啀鍙戦�佷簨浠剁粰u-form-item锛屽惁鍒檛his.$emit('input')鏇存柊浜嗙埗缁勪欢鐨勫�硷紝浣嗘槸寰俊灏忕▼搴忎笂
+ // 灏氭湭鏇存柊鍒皍-form-item锛屽鑷磋幏鍙栫殑鍊间负绌猴紝浠庤�屾牎楠屾贩璁�
+ this.$nextTick(() => {
+ // 灏嗗綋鍓嶇殑鍊煎彂閫佸埌 u-form-item 杩涜鏍¢獙
+ this.dispatch('u-form-item', 'on-form-change', value);
+ });
+ },
+ /**
+ * blur 浜嬩欢
+ * @param event
+ */
+ handleBlur(event) {
+ // 鏈�寮�濮嬩娇鐢ㄧ殑鏄洃鍚浘鏍嘆touchstart浜嬩欢锛岃嚜浠巋x2.8.4鍚庯紝姝ゆ柟娉曞湪寰俊灏忕▼搴忓嚭閿�
+ // 杩欓噷鏀逛负鐩戝惉鐐瑰嚮浜嬩欢锛屾墜鐐瑰嚮娓呴櫎鍥炬爣鏃讹紝鍚屾椂涔熷彂鐢熶簡@blur浜嬩欢锛屽鑷村浘鏍囨秷澶辫�屾棤娉曠偣鍑伙紝杩欓噷鍋氫竴涓欢鏃�
+ setTimeout(() => {
+ this.focused = false;
+ }, 100)
+ // vue 鍘熺敓鐨勬柟娉� return 鍑哄幓
+ this.$emit('blur', event.detail.value);
+ this.$nextTick(() => {
+ // 灏嗗綋鍓嶇殑鍊煎彂閫佸埌 u-form-item 杩涜鏍¢獙
+ this.dispatch('u-form-item', 'on-form-blur', event.detail.value);
+ });
+ },
+ onFormItemError(status) {
+ this.validateState = status;
+ },
+ onFocus(event) {
+ this.focused = true;
+ this.$emit('focus');
+ },
+ onConfirm(e) {
+ this.$emit('confirm', e.detail.value);
+ },
+ onClear(event) {
+ this.$emit('input', '');
+ },
+ inputClick() {
+ this.$emit('click');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+.u-input {
+ position: relative;
+ flex: 1;
+ display: flex;
+
+ &__input {
+ //height: $u-form-item-height;
+ font-size: 28rpx;
+ color: $u-main-color;
+ flex: 1;
+ }
+
+ &__textarea {
+ width: auto;
+ font-size: 28rpx;
+ color: $u-main-color;
+ padding: 10rpx 0;
+ line-height: normal;
+ flex: 1;
+ }
+
+ &--border {
+ border-radius: 6rpx;
+ border-radius: 4px;
+ border: 1px solid $u-form-item-border-color;
+ }
+
+ &--error {
+ border-color: $u-type-error!important;
+ }
+
+ &__right-icon {
+
+ &__item {
+ margin-left: 10rpx;
+ }
+
+ &--select {
+ transition: transform .4s;
+
+ &--reverse {
+ transform: rotate(-180deg);
+ }
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-keyboard/u-keyboard.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-keyboard/u-keyboard.vue"
new file mode 100644
index 0000000..0af2a98
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-keyboard/u-keyboard.vue"
@@ -0,0 +1,217 @@
+<template>
+ <u-popup class="" :mask="mask" :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
+ :safeAreaInsetBottom="safeAreaInsetBottom" @close="popupClose" :zIndex="uZIndex">
+ <slot />
+ <view class="u-tooltip" v-if="tooltip">
+ <view class="u-tooltip-item u-tooltip-cancel" hover-class="u-tooltip-cancel-hover" @tap="onCancel">
+ {{cancelBtn ? cancelText : ''}}
+ </view>
+ <view v-if="showTips" class="u-tooltip-item u-tooltip-tips">
+ {{tips ? tips : mode == 'number' ? '鏁板瓧閿洏' : mode == 'card' ? '韬唤璇侀敭鐩�' : '杞︾墝鍙烽敭鐩�'}}
+ </view>
+ <view v-if="confirmBtn" @tap="onConfirm" class="u-tooltip-item u-tooltips-submit" hover-class="u-tooltips-submit-hover">
+ {{confirmBtn ? confirmText : ''}}
+ </view>
+ </view>
+ <block v-if="mode == 'number' || mode == 'card'">
+ <u-number-keyboard :random="random" @backspace="backspace" @change="change" :mode="mode" :dotEnabled="dotEnabled"></u-number-keyboard>
+ </block>
+ <block v-else>
+ <u-car-keyboard :random="random" @backspace="backspace" @change="change"></u-car-keyboard>
+ </block>
+ </u-popup>
+</template>
+
+<script>
+ /**
+ * keyboard 閿洏
+ * @description 姝や负uViw鑷畾涔夌殑閿洏闈㈡澘锛屽唴鍚簡鏁板瓧閿洏锛岃溅鐗屽彿閿紝韬唤璇佸彿閿洏3涓ā寮忥紝閮芥湁鍙互鎵撲贡鎸夐敭椤哄簭鐨勯�夐」銆�
+ * @tutorial https://www.uviewui.com/components/keyboard.html
+ * @property {String} mode 閿洏绫诲瀷锛岃瀹樼綉鍩烘湰浣跨敤鐨勮鏄庯紙榛樿number锛�
+ * @property {Boolean} dot-enabled 鏄惁鏄剧ず"."鎸夐敭锛屽彧鍦╩ode=number鏃舵湁鏁堬紙榛樿true锛�
+ * @property {Boolean} tooltip 鏄惁鏄剧ず閿洏椤堕儴宸ュ叿鏉★紙榛樿true锛�
+ * @property {String} tips 宸ュ叿鏉′腑闂寸殑鎻愮ず鏂囧瓧锛岃涓婃柟鍩烘湰浣跨敤鐨勮鏄庯紝濡備笉闇�瑕侊紝璇蜂紶""绌哄瓧绗�
+ * @property {Boolean} cancel-btn 鏄惁鏄剧ず宸ュ叿鏉″乏杈圭殑"鍙栨秷"鎸夐挳锛堥粯璁rue锛�
+ * @property {Boolean} confirm-btn 鏄惁鏄剧ず宸ュ叿鏉″彸杈圭殑"瀹屾垚"鎸夐挳锛堥粯璁rue锛�
+ * @property {Boolean} mask 鏄惁鏄剧ず閬僵锛堥粯璁rue锛�
+ * @property {String} confirm-text 纭鎸夐挳鐨勬枃瀛�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬枃瀛�
+ * @property {Number String} z-index 寮瑰嚭閿洏鐨剒-index鍊硷紙榛樿1075锛�
+ * @property {Boolean} random 鏄惁鎵撲贡閿洏鎸夐敭鐨勯『搴忥紙榛樿false锛�
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛堥粯璁alse锛�
+ * @property {Boolean} mask-close-able 鏄惁鍏佽鐐瑰嚮閬僵鏀惰捣閿洏锛堥粯璁rue锛�
+ * @event {Function} change 鎸夐敭琚偣鍑�(涓嶅寘鍚��鏍奸敭琚偣鍑�)
+ * @event {Function} cancel 閿洏椤堕儴宸ュ叿鏉″乏杈圭殑"鍙栨秷"鎸夐挳琚偣鍑�
+ * @event {Function} confirm 閿洏椤堕儴宸ュ叿鏉″彸杈圭殑"瀹屾垚"鎸夐挳琚偣鍑�
+ * @event {Function} backspace 閿洏閫�鏍奸敭琚偣鍑�
+ * @example <u-keyboard mode="number" v-model="show"></u-keyboard>
+ */
+ export default {
+ name: "u-keyboard",
+ props: {
+ // 閿洏鐨勭被鍨嬶紝number-鏁板瓧閿洏锛宑ard-韬唤璇侀敭鐩橈紝car-杞︾墝鍙烽敭鐩�
+ mode: {
+ type: String,
+ default: 'number'
+ },
+ // 鏄惁鏄剧ず閿洏鐨�"."绗﹀彿
+ dotEnabled: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず椤堕儴宸ュ叿鏉�
+ tooltip: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず宸ュ叿鏉′腑闂寸殑鎻愮ず
+ showTips: {
+ type: Boolean,
+ default: true
+ },
+ // 宸ュ叿鏉′腑闂寸殑鎻愮ず鏂囧瓧
+ tips: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず宸ュ叿鏉″乏杈圭殑"鍙栨秷"鎸夐挳
+ cancelBtn: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず宸ュ叿鏉″彸杈圭殑"瀹屾垚"鎸夐挳
+ confirmBtn: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鎵撲贡閿洏鎸夐敭鐨勯『搴�
+ random: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛屽紑鍚殑璇濓紝浼氬湪iPhoneX鏈哄瀷搴曢儴娣诲姞涓�瀹氱殑鍐呰竟璺�
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴閿洏
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氳繃鍙屽悜缁戝畾鎺у埗閿洏鐨勫脊鍑轰笌鏀惰捣
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず閬僵锛屾煇浜涙椂鍊欐暟瀛楅敭鐩樻椂锛岀敤鎴峰笇鏈涚湅鍒拌嚜宸辩殑鏁板�硷紝鎵�浠ュ彲鑳戒笉鎯宠閬僵
+ mask: {
+ type: Boolean,
+ default: true
+ },
+ // z-index鍊�
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鍙栨秷鎸夐挳鐨勬枃瀛�
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ },
+ // 纭鎸夐挳鐨勬枃瀛�
+ confirmText: {
+ type: String,
+ default: '纭'
+ }
+ },
+ data() {
+ return {
+ //show: false
+ }
+ },
+ computed: {
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ methods: {
+ change(e) {
+ this.$emit('change', e);
+ },
+ // 閿洏鍏抽棴
+ popupClose() {
+ // 閫氳繃鍙戦�乮nput杩欎釜鐗规畩鐨勪簨浠跺悕锛屽彲浠ヤ慨鏀圭埗缁勪欢浼犵粰props鐨剉alue鐨勫彉閲忥紝涔熷嵆鍙屽悜缁戝畾
+ this.$emit('input', false);
+ },
+ // 杈撳叆瀹屾垚
+ onConfirm() {
+ this.popupClose();
+ this.$emit('confirm');
+ },
+ // 鍙栨秷杈撳叆
+ onCancel() {
+ this.popupClose();
+ this.$emit('cancel');
+ },
+ // 閫�鏍奸敭
+ backspace() {
+ this.$emit('backspace');
+ },
+ // 鍏抽棴閿洏
+ // close() {
+ // this.show = false;
+ // },
+ // // 鎵撳紑閿洏
+ // open() {
+ // this.show = true;
+ // }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-keyboard {
+ position: relative;
+ z-index: 1003;
+ }
+
+ .u-tooltip {
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .u-tooltip-item {
+ color: #333333;
+ flex: 0 0 33.333333%;
+ text-align: center;
+ padding: 20rpx 10rpx;
+ font-size: 28rpx;
+ }
+
+ .u-tooltips-submit {
+ text-align: right;
+ flex-grow: 1;
+ flex-wrap: 0;
+ padding-right: 40rpx;
+ color: $u-type-primary;
+ }
+
+ .u-tooltip-cancel {
+ text-align: left;
+ flex-grow: 1;
+ flex-wrap: 0;
+ padding-left: 40rpx;
+ color: #888888;
+ }
+
+ .u-tooltips-submit-hover {
+ color: $u-type-success;
+ }
+
+ .u-tooltip-cancel-hover {
+ color: #333333;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue"
new file mode 100644
index 0000000..85133d8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue"
@@ -0,0 +1,242 @@
+<template>
+ <view class="u-wrap" :style="{
+ opacity: Number(opacity),
+ borderRadius: borderRadius + 'rpx',
+ // 鍥犱负time鍊奸渶瑕佹敼鍙�,鎵�浠ヤ笉鐩存帴鐢╠uration鍊�(涓嶈兘鏀瑰彉鐖剁粍浠秔rop浼犺繃鏉ョ殑鍊�)
+ transition: `opacity ${time / 1000}s ease-in-out`
+ }"
+ :class="'u-lazy-item-' + elIndex">
+ <view :class="'u-lazy-item-' + elIndex">
+ <image :style="{borderRadius: borderRadius + 'rpx', height: imgHeight}" v-if="!isError" class="u-lazy-item"
+ :src="isShow ? image : loadingImg" :mode="imgMode" @load="imgLoaded" @error="loadError" @tap="clickImg"></image>
+ <image :style="{borderRadius: borderRadius + 'rpx', height: imgHeight}" class="u-lazy-item error" v-else :src="errorImg"
+ :mode="imgMode" @load="errorImgLoaded" @tap="clickImg"></image>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * lazyLoad 鎳掑姞杞�
+ * @description 鎳掑姞杞戒娇鐢ㄧ殑鍦烘櫙涓猴細椤甸潰鏈夊緢澶氬浘鐗囨椂锛孉PP浼氬悓鏃跺姞杞芥墍鏈夌殑鍥剧墖锛屽鑷撮〉闈㈠崱椤匡紝鍚勪釜浣嶇疆鐨勫浘鐗囧嚭鐜板墠鍚庝笉涓�鑷寸瓑.
+ * @tutorial https://www.uviewui.com/components/lazyLoad.html
+ * @property {String Number} index 鐢ㄦ埛鑷畾涔夊�硷紝鍦ㄤ簨浠惰Е鍙戞椂鍥炶皟锛岀敤浠ュ尯鍒嗘槸鍝釜鍥剧墖
+ * @property {String} image 鍥剧墖璺緞
+ * @property {String} loading-img 棰勫姞杞芥椂鐨勫崰浣嶅浘
+ * @property {String} error-img 鍥剧墖鍔犺浇鍑洪敊鏃剁殑鍗犱綅鍥�
+ * @property {String} threshold 瑙﹀彂鍔犺浇鏃剁殑浣嶇疆锛岃涓婃柟璇存槑锛屽崟浣� rpx锛堥粯璁�300锛�
+ * @property {String Number} duration 鍥剧墖鍔犺浇鎴愬姛鏃讹紝娣″叆娣″嚭鏃堕棿锛屽崟浣峬s锛堥粯璁わ級
+ * @property {String} effect 鍥剧墖鍔犺浇鎴愬姛鏃讹紝娣″叆娣″嚭鐨刢ss鍔ㄧ敾鏁堟灉锛堥粯璁ase-in-out锛�
+ * @property {Boolean} is-effect 鍥剧墖鍔犺浇鎴愬姛鏃讹紝鏄惁鍚敤娣″叆娣″嚭鏁堟灉锛堥粯璁rue锛�
+ * @property {String Number} border-radius 鍥剧墖鍦嗚鍊硷紝鍗曚綅rpx锛堥粯璁�0锛�
+ * @property {String Number} height 鍥剧墖楂樺害锛屾敞鎰忥細瀹為檯楂樺害鍙兘鍙梚mg-mode鍙傛暟褰卞搷锛堥粯璁�450锛�
+ * @property {String Number} mg-mode 鍥剧墖鐨勮鍓ā寮忥紝璇﹁image缁勪欢瑁佸壀妯″紡锛堥粯璁idthFix锛�
+ * @event {Function} click 鐐瑰嚮鍥剧墖鏃惰Е鍙�
+ * @event {Function} load 鍥剧墖鍔犺浇鎴愬姛鏃惰Е鍙�
+ * @event {Function} error 鍥剧墖鍔犺浇澶辫触鏃惰Е鍙�
+ * @example <u-lazy-load :image="image" :loading-img="loadingImg" :error-img="errorImg"></u-lazy-load>
+ */
+ export default {
+ name: 'u-lazy-load',
+ props: {
+ index: {
+ type: [Number, String]
+ },
+ // 瑕佹樉绀虹殑鍥剧墖
+ image: {
+ type: String,
+ default: ''
+ },
+ // 鍥剧墖瑁佸壀妯″紡
+ imgMode: {
+ type: String,
+ default: 'widthFix'
+ },
+ // 鍗犱綅鍥剧墖璺緞
+ loadingImg: {
+ type: String,
+ default: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM0QjNBQjkyQUQ2MTFFQTlCNUQ4RTIzNDE5RUIxNjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM0QjNBQkEyQUQ2MTFFQTlCNUQ4RTIzNDE5RUIxNjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzRCM0FCNzJBRDYxMUVBOUI1RDhFMjM0MTlFQjE2NyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzRCM0FCODJBRDYxMUVBOUI1RDhFMjM0MTlFQjE2NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtRHfPcAAAAzUExURZWVldfX18PDw62trZubm9zc3Li4uKGhoebm5tLS0uHh4c3Nzaenp729vcjIyLKysuvr6141L40AAAcXSURBVHja7NzZlqpGAEBR5lG0//9rIw7IJKJi4or7PGTdtN10wr5SVAEGf/qqArsAiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAg+nmQFMi5Jis+sIniED23jSzIgLTtg2D//iYme/8QBM/9lQ+CAEhbNLM3N9hEHAThX7GPCiBfAxK1b51kD+R7QMLjXg7iCsgWIPUh7pfVozG791oeBPngm48G583uW5GkBvI+SBaM2xXDn1oqum423bX/mgF5FySc2cv93Voug9TdZotsggnkBZB2NzbhrSY5HnoG07jei8dvzsJB/c3W60SALILE46+WCztsbhPR7R2VJq0ukEcT49nyy8QhaKcRa3fYHZD4+ufqOJAcgDz8/59vtw1I3QP5K6JsOG0vm3hce4I8LQp/BaRZGJC3AAn7IKOKXbC+7EdA5vdmmVwOLksgRThqOqiH4XEGsht+peoPUE8U/jJIO5OLH4GEwUslV5G0PTBG5Uiw/Y2jyigO3l9HAHKv9PYb82LloH74dZBoBUgar+l48NsNvtD0fkez9iwrAvIYZDRCl+Xs149Hm/KZmQ+QjUCiO1ei4ru7EsgnQYrkznlQb7thCuRfAzlOAPN72427P4VA/i2Q/DKT/Ls/VR8fvIBsDZIuz7TPF6TCbnk4GJkB2RokejTjuE7/unlgCuSTIO0Cy+Plp6vDfnQlBchy8QtjSHVd3EgmK1bHLm+H6+nXYbz2DuQRSPnqoL7vvq0u70on4zvxgCyWD3b9UyDVdW24PaWaiGTnFZJwPIQAebDpIKheBIm7n124ZthMJipAlkqHO+IZkP1tbfzOJark/A7MgKyvvl60fRqkvXfhuow+t9+q00+0/yyBrK8ZngOtBzldhw2X9tvpNGty0gvkmbPeJ0Cy/r09s/stbmfo0yMWkEdjevgKyOn2t2pxv7UXoibTdCDLje9/Ww1ymqzn87dbp92242ZmMRjI8hASvwKSLq4udqN6ksw8nxXN3tszD9L8Gkg+2mFrQYql5az4tvFj5xOx4VwnSdeBtGdyPwUytxK77pBVlNHdO7OK3rh/eTPUvdutT3fO52tuHMqD4N7llv8pyOQQ//w19YVDfX27+Sfuby9/6nau4pdA8vEdOZuChEH/quHt0Jg+IRJ/5+PrHwKZXfjbDiS73Zo7mu5UkzX7uTsXe0e/7nC3ePf1O69+BUg2XDfZCqSqOu7rGVf8cHBe8zhC2b61dtUHXv0OkGo6ZL4JkpbRYXdUaFevivx2M/1GIOctNh949TtAoumQ+TpIHMX54CJu+8BDd8FkE5BqcZh/59XvAClmTvKfB0nDqIlHo3T70SftyW1eX9dXtgQJqs1f/Q6QaOa/7wmQKtxH8eiGoCRuovODIO3VxOMmruZbHrLyD7z6DSDtGyT7ew1kf9hNn07c986JTovzzem0Id9wUG+Vk/IDr34DSNR7huZJkMFT6vEhqrPx/j5cnlZML8N6/PAzh9Y99Flm5Yde/c9BquDOkvkKkMP58dA4qi9vivE8JOvGz/j8FokfPpr288+pH2ZPOZrLmeGD+7KOh6dqYWJ48ki7yUg0tz0go/fv/LLddfV3sgOLJyaGPY/zrSlh1a36Arkzoue9CyG35ze6E6/dzO2Ga0EGHqdRJIkfn9/8OEjTW8Vq91ZWh39FeehWA7Nu9ft8CpUEk1WWOyDF0OPyEU2Pnzf/bZC0P6IPzmAvu7KauQBVrgKpJ0tG2arHzX8e5Pb3PezNs/PrX+3JMyCLn9XXf37tPFHvt09WfCDDjx+yyn1/p1V11j7GnB/q3leLuVva79S/tzed+db08YpF4uOZtmz/9oXWMq6BCAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiAALELvqt/BBgACqVeUBXxcCkAAAAASUVORK5CYII='
+ },
+ // 鍔犺浇澶辫触鐨勯敊璇崰浣嶅浘
+ errorImg: {
+ type: String,
+ default: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODdDMjhENDYyQUQ2MTFFQTlDQ0VBODgxQjFFOEEyMEMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODdDMjhENDcyQUQ2MTFFQTlDQ0VBODgxQjFFOEEyMEMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0MyOEQ0NDJBRDYxMUVBOUNDRUE4ODFCMUU4QTIwQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0MyOEQ0NTJBRDYxMUVBOUNDRUE4ODFCMUU4QTIwQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhLwhikAAAAzUExURZWVldfX162trcPDw5ubm7i4uNzc3Obm5s3NzaGhoeHh4cjIyKenp9LS0r29vbKysuvr67sDMEkAAAlpSURBVHja7NzpYqMgAIVRUVHc8/5PO66R1WAbOzX97q+ZtDEpR0AWTR7kVyWhCAAhgABCAAGEAAIIAQQQAggBBBACCCAEEEAIIIAQQAgggBBAACGAAEIAAYQAQgABhAACCAEEEAIIIAQQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAsqeX5QWHKIcs/Ptl03lfL4zDFPWfBGmSpPn+IZzSH5KkCL5B+n+oklwz6Iz//R2QzFOabzhEmiRirAmZt/bl0w/dpMbLqeeo4wEdpC7zR5WAPKziHKtO7ql+ReKvIa9BxgNaL5ZtEkpeAGIVp5jKJa09xVo9vgSSzQcszdYvmOqjQNSQ6pHK6rO1n1Xj32788miwHLaZz1Tl9i/yayDlYJ/60/+lp8GSY7OY1B8E4p55bWmfquFk22GLuUUxi78cX+m+BjL2GLkhMrV+/muS6Sfic0CEp5T1Yu2OQdTzsKV0MJV73KVjroyTffxfuv5Tf3fd6iLT9wz8YdVHgUzF2Is9/Xhi5sYJqP1w/GUpjOiHVbaI0w2L+pg3GZzvtokcgHxWDXHaiy78l3sPke01qphamT5c+dqyeAGSumdL/mkggauTam0e3L/mPEiqtzKDbl0Z1Wn8xOa4ySo8X/7TQIJnY/seEKWf12UmC72CKP9xYjr19RPT7NNA+oMO+R0gwmlotAry+C6I0f59ch8yXVQOr0BKYcXt1IUYRyCt+Ur9HGsrQKI79WY9sY9ARPKlzFOFdb41ioD8b5Bp+mqeeRKAxINkESBFGpOpKhgv9OuYpH8A8l4Qa3qp60Kl2/k+rG2sWafuuyCBafb2j4JkgZUob3nWcmicpkxEgmTLLGejTxnWSWCi8lPmsk6DlIHFJv24ojiYyYoGacwL8zXTLEAVaDI/Ybb3NIgKDSv2oXpmHkvNs+PTpMASEdlk7fOZeRk37fwJ6yGnQarQsGIfqqcvx43rTOXY6jf7uKXdRzdLDRPbjIrx1cIj3Kr4KyBFezzgUGuR5893qkOQ19fR2uVBaU+r16LphJNOiatK7PeBZK/Kb+tUn71rcQjSvARpghfH/yG/D2RetTuI3N5QrMWdP46brP7FmKZ//CGQ9At9SL01DLkzY/Vs8Z97fQZ7gelw7jHqCz+/Wile5J4g3Vc79eb5a6oLSue+Ve83gaSv2jp5PxCzjzwFUm9zw9MllSMil1kS4d2E9SaQ1xNo9wMxx0+nQNLnew/WDHvveMAHYm08mofl3TFI/8pD3Q6kMAv6DIi2jTCwRJUvNdDYrrJum9oHhusCbWALonwxBRk1vXMnEGWuT5wAmfYuVGUYpJ7fUZujCN92hvzwWlrFgxSfANKb10DxIMbShnfrynyZZV30imA7P43ArXXHbvBVkTCIuGy25AdBrHmNeBCpL214QdLp9LZarG3IMWrmW0ehtuO7F2PS09UcgqS3B7FKPhpknrStD0HGF/vQRne37LwLG8EbHT4WxN7/Fg0yD9Yr/3br4nnstA+0Il6QxzdBmg8A6a2/IRbkcK9h/uzV8zywF/oSkOyageCPglRWgcWClHnEzs9q/t/SENVXgFijlsq3VtXdCsRp4qObrLLLgjuzSq3fX89ZZW6AfxNIzF6X9FYgThN/fk093KkvHX/hbWd+DqS/FUhlf+G3gohEXzVs3g9iDluWoaW8fL73QhB34u+tIHIf19nLuF4Q98a09Eynnl56q+ePgEhnX+dbQOp6H5XnJ0ACd8dFgkwf12nTOTcEqd2pom+CFF02TIPw6dKmrLS5qOtBpo8b5quUtrwrSGbuqPkeSJqllTFHO02NPxdMrm+y5LKdWyWXjw4vA5nGEtnjuyCFyHqNYvEolzmASm3zK1Eg5zr13lhqV1tlksnVw8Pkwgri7O07AVKLJkutRYw87bPlRpBpNXE8xGb+fhBlvEGrGPLqViu5sILIx9dAmqF1705sxF4M8+R8P5dOdQwi12fMnATpjJ2JSt/POIvU9wPJEs/jduJAjLvU0yFT0i64Yb1bsVi79dA4pEy3TzoHMq2O7Re4vXm5O9+l290NpE4CU+YRIMNye2iaqbVS2AUnn2fsekthYKReVNutVedA5juttyIXrT38mOds+ps9DWhwL7GWc61/DVKPzVN9UHDarf1icU98IOU8tm6L031Iq63t1tKzj3fe/FCpO4F0/i0Z2+yvA1KeGBjqj1qYx8/zoxpKZ1Yl367I1k+sfcft/QPy9csXy/32qX1qLZsrryG5BGQaRj0vc/b7N54XXq293TCLB5HO42Fy517obW19b+qjl3CHp0fdLJcWvmdy1etESi/uAdJrs1hTaUklHuW8qSDdC3UfXVR5cnD3rAFSSqtFb7z7eapErx7rC739jCXfbK3aWiipjXo8UbmxXPa7QQq9R289j2Gr88N7Ag5AlHPRKc37pNZv0CZtX1tVMG6rm8qW1/KlCgQvcMss933ybwXZz3dReW5yce4ByZtHFIhwT9kmjxg8BzbKDUe1PB9edBJqSN7/KM1LmqyuMZ5BpeTUw1aD/uDI0relPfSHa/Wn8Pxq1BNfxy/h3IdwOJqIKumb9CHvTqMefyY82RoQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAQgABhAACCAGEAAIIAQQQAgggBBBACCAEEEAIIIAQQAAhgABCACGAAEIAAYQAAggBBBACCAEEEAIIIAQQQAggfyL/BBgA8PgLdH0TBtkAAAAASUVORK5CYII='
+ },
+ // 鍥剧墖杩涘叆鍙鍖哄煙鍓嶅灏戝儚绱犳椂锛屽崟浣峳px锛屽紑濮嬪姞杞藉浘鐗�
+ // 璐熸暟涓哄浘鐗囪秴鍑哄睆骞曞簳閮ㄥ灏戣窛绂诲悗瑙﹀彂鎳掑姞杞斤紝姝f暟涓哄浘鐗囬《閮ㄨ窛绂诲睆骞曞簳閮ㄥ灏戣窛绂绘椂瑙﹀彂(鍥剧墖杩樻病鍑虹幇鍦ㄥ睆骞曚笂)
+ threshold: {
+ type: [Number, String],
+ default: 100
+ },
+ // 娣″叆娣″嚭鍔ㄧ敾鐨勮繃娓℃椂闂�
+ duration: {
+ type: [Number, String],
+ default: 500
+ },
+ // 娓℃晥鏋滅殑閫熷害鏇茬嚎锛屽悇涓箣闂村樊鍒笉澶э紝鍥犱负杩欐槸娣″叆娣″嚭锛屼笖鏃堕棿寰堢煭锛屼笉鏄偅浜涘彉褰㈡垨鑰呯Щ鍔ㄧ殑鎯呭喌锛屼細鏄庢樉
+ // linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n);
+ effect: {
+ type: String,
+ default: 'ease-in-out'
+ },
+ // 鏄惁浣跨敤杩囨浮鏁堟灉
+ isEffect: {
+ type: Boolean,
+ default: true
+ },
+ // 鍦嗚鍊�
+ borderRadius: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鍥剧墖楂樺害锛屽崟浣峳px
+ height: {
+ type: [Number, String],
+ default: '450'
+ }
+ },
+ data() {
+ return {
+ isShow: false,
+ opacity: 1,
+ time: this.duration,
+ loadStatus: '', // 榛樿鏄噿鍔犺浇涓殑鐘舵��
+ isError: false, // 鍥剧墖鍔犺浇澶辫触
+ elIndex: this.$u.guid()
+ }
+ },
+ computed: {
+ // 灏唗hreshold浠巖px杞负px
+ getThreshold() {
+ // 鍏堝彇缁濆鍊硷紝鍥犱负threshold鍙兘鏄礋鏁帮紝鏈�鍚庢牴鎹畉his.threshold鏄鏁版垨鑰呰礋鏁帮紝閲嶆柊杩樺師
+ let thresholdPx = uni.upx2px(Math.abs(this.threshold));
+ return this.threshold < 0 ? -thresholdPx : thresholdPx;
+ },
+ // 璁$畻鍥剧墖鐨勯珮搴︼紝鍙兘涓篴uto锛屽甫%锛屾垨鑰呯洿鎺ユ暟鍊�
+ imgHeight() {
+ return this.$u.addUnit(this.height);
+ }
+ },
+ created() {
+ // 鐢变簬涓�浜涚壒娈婂師鍥狅紝涓嶈兘灏嗘鍙橀噺鏀惧埌data涓畾涔�
+ this.observer = {};
+ },
+ watch: {
+ isShow(nVal) {
+ // 濡傛灉鏄笉寮�鍚繃娓℃晥鏋滐紝鐩存帴杩斿洖
+ if (!this.isEffect) return;
+ this.time = 0;
+ // 鍘熸潵opacity涓�1(涓嶉�忔槑锛屾槸涓轰簡鏄剧ず鍗犱綅鍥�)锛屾敼鎴�0(閫忔槑锛屾剰鍛崇潃璇ュ厓绱犳樉绀虹殑鏄儗鏅鑹诧紝榛樿鐨勭櫧鑹�)锛屽啀鏀规垚1锛屾槸涓轰簡鑾峰緱杩囨浮鏁堟灉
+ this.opacity = 0;
+ // 寤舵椂30ms锛屽惁鍒欏湪娴忚鍣℉5锛岃繃娓℃晥鏋滄棤鏁�
+ setTimeout(() => {
+ this.time = this.duration;
+ this.opacity = 1;
+ }, 30)
+ },
+ // 鍥剧墖璺緞鍙戠敓鍙樺寲鏃讹紝闇�瑕侀噸鏂版爣璁颁竴浜涘彉閲忥紝鍚﹀垯浼氫竴鐩村崱鍦ㄦ煇涓�涓姸鎬侊紝姣斿isError
+ image(n) {
+ if(!n) {
+ // 濡傛灉浼犲叆null鎴栬��''锛屾垨鑰卽ndefined锛屾爣璁颁负閿欒鐘舵��
+ this.isError = true;
+ } else {
+ this.init();
+ this.isError = false;
+ }
+ }
+ },
+ methods: {
+ // 鐢ㄤ簬閲嶆柊鍒濆鍖�
+ init() {
+ this.isError = false;
+ this.loadStatus = '';
+ },
+ // 鐐瑰嚮鍥剧墖瑙﹀彂鐨勪簨浠�,loadlazy-杩樻槸鎳掑姞杞戒腑鐘舵�侊紝loading-鍥剧墖姝e湪鍔犺浇锛宭oaded-鍥剧墖鍔犲姞杞藉畬鎴�
+ clickImg() {
+ let whichImg = '';
+ // 濡傛灉isShow涓篺alse锛屾剰鍛崇潃鍥剧墖杩樻病寮�濮嬪姞杞斤紝鐐瑰嚮鐨勫彧鑳芥槸鏈�寮�濮嬬殑鍗犱綅鍥�
+ if (this.isShow == false) whichImg = 'lazyImg';
+ // 濡傛灉isError涓簍rue锛屾剰鍛崇潃鍥剧墖鍔犺浇澶辫触锛岃繖鏄彧鍓╀笅閿欒鐨勫崰浣嶅浘锛屾墍浠ョ偣鍑荤殑鍙兘鏄敊璇崰浣嶅浘
+ // 褰撶劧锛屼篃鍙互缁欓敊璇殑鍗犱綅鍥惧厓绱犵粦瀹氱偣鍑讳簨浠讹紝鐪嬩綘鍠滄~
+ else if (this.isError == true) whichImg = 'errorImg';
+ // 鎬诲叡涓夊紶鍥剧墖锛岄櫎浜嗕袱涓崰浣嶅浘锛屽墿涓嬬殑鍙兘鏄甯哥殑閭e紶鍥剧墖浜�
+ else whichImg = 'realImg';
+ // 鍙�氱煡褰撳墠鍥剧墖鐨刬ndex
+ this.$emit('click', this.index);
+ },
+ // 鍥剧墖鍔犺浇瀹屾垚浜嬩欢锛屽彲鑳芥槸鍔犺浇鍗犱綅鍥炬椂瑙﹀彂锛屼篃鍙兘鏄姞杞界湡姝g殑鍥剧墖瀹屾垚鏃惰Е鍙戯紝閫氳繃isShow鍖哄垎
+ imgLoaded() {
+ // 鍗犱綅鍥惧姞杞藉畬鎴�
+ if (this.loadStatus == '') {
+ this.loadStatus = 'lazyed';
+ }
+ // 鐪熸鐨勫浘鐗囧姞杞藉畬鎴�
+ else if (this.loadStatus == 'lazyed') {
+ this.loadStatus = 'loaded';
+ this.$emit('load', this.index);
+ }
+ },
+ // 閿欒鐨勫浘鐗囧姞杞藉畬鎴�
+ errorImgLoaded() {
+ this.$emit('error', this.index);
+ },
+ // 鍥剧墖鍔犺浇澶辫触
+ loadError() {
+ this.isError = true;
+ },
+ disconnectObserver(observerName) {
+ const observer = this[observerName];
+ observer && observer.disconnect();
+ },
+ },
+ beforeDestroy() {
+ // 閿�姣侀〉闈㈡椂锛屽彲鑳借繕娌¤Е鍙戞煇寮犲緢搴曢儴鐨勬噿鍔犺浇鍥剧墖锛屾墍浠ユ妸杩欎釜浜嬩欢缁欏幓鎺�
+ //observer.disconnect();
+ },
+ mounted() {
+ // 姝OnReachBottom浜嬩欢鐢眒ixin.js鍙戝嚭锛岀洰鐨勬槸璁╅〉闈㈠埌搴曟椂锛屼繚璇佹墍鏈夊浘鐗囬兘杩涜鍔犺浇锛屽仛鍒扮粷瀵圭ǔ瀹氫笖鍙潬
+ this.$nextTick(() => {
+ uni.$once('uOnReachBottom', () => {
+ if (!this.isShow) this.isShow = true;
+ });
+ })
+ // mounted鐨勬椂鍊欙紝涓嶄竴瀹氭寕杞戒簡杩欎釜鍏冪礌锛屽欢鏃�30ms锛屽惁鍒欎細鎶ラ敊鎴栬�呬笉鎶ラ敊锛屼絾鏄篃娌℃湁鏁堟灉
+ setTimeout(() => {
+ // 杩欓噷鏄粍浠跺唴鑾峰彇甯冨眬鐘舵�侊紝涓嶈兘鐢╱ni.createIntersectionObserver锛岃�屽繀椤荤敤this.createIntersectionObserver
+ this.disconnectObserver('contentObserver');
+ const contentObserver = uni.createIntersectionObserver(this);
+ // 瑕佺悊瑙h繖閲屾�庝箞璁$畻鐨勶紝璇风湅杩欎釜锛�
+ // https://blog.csdn.net/qq_25324335/article/details/83687695
+ contentObserver.relativeToViewport({
+ bottom: this.getThreshold,
+ }).observe('.u-lazy-item-' + this.elIndex, (res) => {
+ if (res.intersectionRatio > 0) {
+ // 鎳掑姞杞界姸鎬佹敼鍙�
+ this.isShow = true;
+ // 濡傛灉鍥剧墖宸茬粡鍔犺浇锛屽幓鎺夌洃鍚紝鍑忓皯鎬ц兘鐨勬秷鑰�
+ this.disconnectObserver('contentObserver');
+ }
+ })
+ this.contentObserver = contentObserver;
+ }, 30)
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-wrap {
+ background-color: #eee;
+ overflow: hidden;
+ }
+
+ .u-lazy-item {
+ width: 100%;
+ // 楠楃郴缁熷紑鍚‖浠跺姞閫�
+ transform: transition3d(0, 0, 0);
+ // 闃叉鍥剧墖鍔犺浇鈥滈棯涓�涓嬧��
+ will-change: transform;
+ display: block;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line-progress/u-line-progress.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line-progress/u-line-progress.vue"
new file mode 100644
index 0000000..55014d3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line-progress/u-line-progress.vue"
@@ -0,0 +1,145 @@
+<template>
+ <view class="u-progress" :style="{
+ borderRadius: round ? '100rpx' : 0,
+ height: height + 'rpx',
+ backgroundColor: inactiveColor
+ }">
+ <view :class="[
+ type ? `u-type-${type}-bg` : '',
+ striped ? 'u-striped' : '',
+ striped && stripedActive ? 'u-striped-active' : ''
+ ]" class="u-active" :style="[progressStyle]">
+ <slot v-if="$slots.default" />
+ <block v-else-if="showPercent">
+ {{percent + '%'}}
+ </block>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * lineProgress 绾垮瀷杩涘害鏉�
+ * @description 灞曠ず鎿嶄綔鎴栦换鍔$殑褰撳墠杩涘害锛屾瘮濡備笂浼犳枃浠讹紝鏄竴涓嚎褰㈢殑杩涘害鏉°��
+ * @tutorial https://www.uviewui.com/components/lineProgress.html
+ * @property {String Number} percent 杩涘害鏉$櫨鍒嗘瘮鍊硷紝涓烘暟鍊肩被鍨嬶紝0-100
+ * @property {Boolean} round 杩涘害鏉′袱绔槸鍚︿负鍗婂渾锛堥粯璁rue锛�
+ * @property {String} type 濡傝缃紝active-color鍊煎皢浼氬け鏁�
+ * @property {String} active-color 杩涘害鏉℃縺娲婚儴鍒嗙殑棰滆壊锛堥粯璁�#19be6b锛�
+ * @property {String} inactive-color 杩涘害鏉$殑搴曡壊锛堥粯璁�#ececec锛�
+ * @property {Boolean} show-percent 鏄惁鍦ㄨ繘搴︽潯鍐呴儴鏄剧ず褰撳墠鐨勭櫨鍒嗘瘮鍊兼暟鍊硷紙榛樿true锛�
+ * @property {String Number} height 杩涘害鏉$殑楂樺害锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {Boolean} striped 鏄惁鏄剧ず杩涘害鏉℃縺娲婚儴鍒嗙殑鏉$汗锛堥粯璁alse锛�
+ * @property {Boolean} striped-active 鏉$汗鏄惁鍏锋湁鍔ㄦ�佹晥鏋滐紙榛樿false锛�
+ * @example <u-line-progress :percent="70" :show-percent="true"></u-line-progress>
+ */
+ export default {
+ name: "u-line-progress",
+ props: {
+ // 涓ょ鏄惁鏄剧ず鍗婂渾褰�
+ round: {
+ type: Boolean,
+ default: true
+ },
+ // 涓婚棰滆壊
+ type: {
+ type: String,
+ default: ''
+ },
+ // 婵�娲婚儴鍒嗙殑棰滆壊
+ activeColor: {
+ type: String,
+ default: '#19be6b'
+ },
+ inactiveColor: {
+ type: String,
+ default: '#ececec'
+ },
+ // 杩涘害鐧惧垎姣旓紝鏁板��
+ percent: {
+ type: Number,
+ default: 0
+ },
+ // 鏄惁鍦ㄨ繘搴︽潯鍐呴儴鏄剧ず鐧惧垎姣旂殑鍊�
+ showPercent: {
+ type: Boolean,
+ default: true
+ },
+ // 杩涘害鏉$殑楂樺害锛屽崟浣峳px
+ height: {
+ type: [Number, String],
+ default: 28
+ },
+ // 鏄惁鏄剧ず鏉$汗
+ striped: {
+ type: Boolean,
+ default: false
+ },
+ // 鏉$汗鏄惁鏄剧ず娲诲姩鐘舵��
+ stripedActive: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ computed: {
+ progressStyle() {
+ let style = {};
+ style.width = this.percent + '%';
+ if(this.activeColor) style.backgroundColor = this.activeColor;
+ return style;
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-progress {
+ overflow: hidden;
+ height: 15px;
+ display: inline-flex;
+ align-items: center;
+ width: 100%;
+ border-radius: 100rpx;
+ }
+
+ .u-active {
+ width: 0;
+ height: 100%;
+ align-items: center;
+ display: flex;
+ justify-items: flex-end;
+ justify-content: space-around;
+ font-size: 20rpx;
+ color: #ffffff;
+ transition: all 0.4s ease;
+ }
+
+ .u-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 39px 39px;
+ }
+
+ .u-striped-active {
+ animation: progress-stripes 2s linear infinite;
+ }
+
+ @keyframes progress-stripes {
+ 0% {
+ background-position: 0 0;
+ }
+
+ 100% {
+ background-position: 39px 0;
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line/u-line.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line/u-line.vue"
new file mode 100644
index 0000000..c56fbc3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-line/u-line.vue"
@@ -0,0 +1,84 @@
+<template>
+ <view class="u-line" :style="[lineStyle]">
+
+ </view>
+</template>
+
+<script>
+ /**
+ * line 绾挎潯
+ * @description 姝ょ粍浠朵竴鑸敤浜庢樉绀轰竴鏍圭嚎鏉★紝鐢ㄤ簬鍒嗛殧鍐呭鍧楋紝鏈夋í鍚戝拰绔栧悜涓ょ妯″紡锛屼笖鑳借缃�0.5px绾挎潯锛屼娇鐢ㄤ篃寰堢畝鍗�
+ * @tutorial https://www.uviewui.com/components/line.html
+ * @property {String} color 绾挎潯鐨勯鑹�(榛樿#e4e7ed)
+ * @property {String} length 闀垮害锛岀珫鍚戞椂琛ㄧ幇涓洪珮搴︼紝妯悜鏃惰〃鐜颁负闀垮害锛屽彲浠ヤ负鐧惧垎姣旓紝甯px鍗曚綅鐨勫�肩瓑
+ * @property {String} direction 绾挎潯鐨勬柟鍚戯紝row-妯悜锛宑ol-绔栧悜(榛樿row)
+ * @property {String} border-style 绾挎潯鐨勭被鍨嬶紝solid-瀹炵嚎锛宒ashed-鏂瑰舰铏氱嚎锛宒otted-鍦嗙偣铏氱嚎(榛樿solid)
+ * @property {Boolean} hair-line 鏄惁鏄剧ず缁嗙嚎鏉�(榛樿true)
+ * @property {String} margin 绾挎潯涓庝笂涓嬪乏鍙冲厓绱犵殑闂磋窛锛屽瓧绗︿覆褰㈠紡锛屽"30rpx"
+ * @example <u-line color="red"></u-line>
+ */
+ export default {
+ name: 'u-line',
+ props: {
+ color: {
+ type: String,
+ default: '#e4e7ed'
+ },
+ // 闀垮害锛岀珫鍚戞椂琛ㄧ幇涓洪珮搴︼紝妯悜鏃惰〃鐜颁负闀垮害锛屽彲浠ヤ负鐧惧垎姣旓紝甯px鍗曚綅鐨勫�肩瓑
+ length: {
+ type: String,
+ default: '100%'
+ },
+ // 绾挎潯鏂瑰悜锛宑ol-绔栧悜锛宺ow-妯悜
+ direction: {
+ type: String,
+ default: 'row'
+ },
+ // 鏄惁鏄剧ず缁嗚竟妗�
+ hairLine: {
+ type: Boolean,
+ default: true
+ },
+ // 绾挎潯涓庝笂涓嬪乏鍙冲厓绱犵殑闂磋窛锛屽瓧绗︿覆褰㈠紡锛屽"30rpx"銆�"20rpx 30rpx"
+ margin: {
+ type: String,
+ default: '0'
+ },
+ // 绾挎潯鐨勭被鍨嬶紝solid-瀹炵嚎锛宒ashed-鏂瑰舰铏氱嚎锛宒otted-鍦嗙偣铏氱嚎
+ borderStyle: {
+ type: String,
+ default: 'solid'
+ }
+ },
+ computed: {
+ lineStyle() {
+ let style = {};
+ style.margin = this.margin;
+ // 濡傛灉鏄按骞崇嚎鏉★紝杈规楂樺害涓�1px锛屽啀閫氳繃transform缂╁皬涓�鍗婏紝灏辨槸0.5px浜�
+ if(this.direction == 'row') {
+ // 姝ゅ閲囩敤鍏煎鍒嗗紑鍐欙紝鍏煎nvue鐨勫啓娉�
+ style.borderBottomWidth = '1px';
+ style.borderBottomStyle = this.borderStyle;
+ style.width = this.$u.addUnit(this.length);
+ if(this.hairLine) style.transform = 'scaleY(0.5)';
+ } else {
+ // 濡傛灉鏄珫鍚戠嚎鏉★紝杈规瀹藉害涓�1px锛屽啀閫氳繃transform缂╁皬涓�鍗婏紝灏辨槸0.5px浜�
+ style.borderLeftWidth = '1px';
+ style.borderLeftStyle = this.borderStyle;
+ style.height = this.$u.addUnit(this.length);
+ if(this.hairLine) style.transform = 'scaleX(0.5)';
+ }
+ style.borderColor = this.color;
+ return style;
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-line {
+ vertical-align: middle;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-link/u-link.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-link/u-link.vue"
new file mode 100644
index 0000000..edb51be
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-link/u-link.vue"
@@ -0,0 +1,89 @@
+<template>
+ <text class="u-link" @tap.stop="openLink" :style="{
+ color: color,
+ fontSize: fontSize + 'rpx',
+ borderBottom: underLine ? `1px solid ${lineColor ? lineColor : color}` : 'none',
+ paddingBottom: underLine ? '0rpx' : '0'
+ }">
+ <slot></slot>
+ </text>
+</template>
+
+<script>
+ /**
+ * link 瓒呴摼鎺�
+ * @description 璇ョ粍浠朵负瓒呴摼鎺ョ粍浠讹紝鍦ㄤ笉鍚屽钩鍙版湁涓嶅悓琛ㄧ幇褰㈠紡锛氬湪APP骞冲彴浼氶�氳繃plus鐜鎵撳紑鍐呯疆娴忚鍣紝鍦ㄥ皬绋嬪簭涓妸閾炬帴澶嶅埗鍒扮矘璐存澘锛屽悓鏃舵彁绀轰俊鎭紝鍦℉5涓�氳繃window.open鎵撳紑閾炬帴銆�
+ * @tutorial https://www.uviewui.com/components/link.html
+ * @property {String} color 鏂囧瓧棰滆壊锛堥粯璁�#606266锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {Boolean} under-line 鏄惁鏄剧ず涓嬪垝绾匡紙榛樿false锛�
+ * @property {String} href 璺宠浆鐨勯摼鎺ワ紝瑕佸甫涓奾ttp(s)
+ * @property {String} line-color 涓嬪垝绾块鑹诧紝榛樿鍚宑olor鍙傛暟棰滆壊
+ * @property {String} mp-tips 鍚勪釜灏忕▼搴忓钩鍙版妸閾炬帴澶嶅埗鍒扮矘璐存澘鍚庣殑鎻愮ず璇紙榛樿鈥滈摼鎺ュ凡澶嶅埗锛岃鍦ㄦ祻瑙堝櫒鎵撳紑鈥濓級
+ * @example <u-link href="http://www.uviewui.com">铚�閬撻毦锛岄毦浜庝笂闈掑ぉ</u-link>
+ */
+ export default {
+ name: "u-link",
+ props: {
+ // 鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [String, Number],
+ default: 28
+ },
+ // 鏄惁鏄剧ず涓嬪垝绾�
+ underLine: {
+ type: Boolean,
+ default: false
+ },
+ // 瑕佽烦杞殑閾炬帴
+ href: {
+ type: String,
+ default: ''
+ },
+ // 灏忕▼搴忎腑澶嶅埗鍒扮矘璐存澘鐨勬彁绀鸿
+ mpTips: {
+ type: String,
+ default: '閾炬帴宸插鍒讹紝璇峰湪娴忚鍣ㄦ墦寮�'
+ },
+ // 涓嬪垝绾块鑹�
+ lineColor: {
+ type: String,
+ default: ''
+ }
+ },
+ methods: {
+ openLink() {
+ // #ifdef APP-PLUS
+ plus.runtime.openURL(this.href)
+ // #endif
+ // #ifdef H5
+ window.open(this.href)
+ // #endif
+ // #ifdef MP
+ uni.setClipboardData({
+ data: this.href,
+ success() {
+ uni.hideToast();
+ }
+ });
+ this.$nextTick(() => {
+ this.$u.toast(this.mpTips);
+ })
+ // #endif
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-link {
+ line-height: 1;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading-page/u-loading-page.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading-page/u-loading-page.vue"
new file mode 100644
index 0000000..7e04401
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading-page/u-loading-page.vue"
@@ -0,0 +1,25 @@
+<template>
+ <view class="u-loading-page">
+
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+
+ },
+ data() {
+ return {
+
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading/u-loading.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading/u-loading.vue"
new file mode 100644
index 0000000..e31f9b9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loading/u-loading.vue"
@@ -0,0 +1,101 @@
+<template>
+ <view v-if="show" class="u-loading" :class="mode == 'circle' ? 'u-loading-circle' : 'u-loading-flower'" :style="[cricleStyle]">
+ </view>
+</template>
+
+<script>
+ /**
+ * loading 鍔犺浇鍔ㄧ敾
+ * @description 璀︽缁勪欢涓轰竴涓皬鍔ㄧ敾锛岀洰鍓嶇敤鍦╱View鐨刲oadmore鍔犺浇鏇村鍜宻witch寮�鍏崇瓑缁勪欢鐨勬鍦ㄥ姞杞界姸鎬佸満鏅��
+ * @tutorial https://www.uviewui.com/components/loading.html
+ * @property {String} mode 妯″紡閫夋嫨锛岃瀹樼綉璇存槑锛堥粯璁ircle锛�
+ * @property {String} color 鍔ㄧ敾娲诲姩鍖哄煙鐨勯鑹诧紝鍙 mode = flower 妯″紡鏈夋晥锛堥粯璁�#c7c7c7锛�
+ * @property {String Number} size 鍔犺浇鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�34锛�
+ * @property {Boolean} show 鏄惁鏄剧ず鍔ㄧ敾锛堥粯璁rue锛�
+ * @example <u-loading mode="circle"></u-loading>
+ */
+ export default {
+ name: "u-loading",
+ props: {
+ // 鍔ㄧ敾鐨勭被鍨�
+ mode: {
+ type: String,
+ default: 'circle'
+ },
+ // 鍔ㄧ敾鐨勯鑹�
+ color: {
+ type: String,
+ default: '#c7c7c7'
+ },
+ // 鍔犺浇鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ size: {
+ type: [String, Number],
+ default: '34'
+ },
+ // 鏄惁鏄剧ず鍔ㄧ敾
+ show: {
+ type: Boolean,
+ default: true
+ }
+ },
+ computed: {
+ // 鍔犺浇涓渾鍦堝姩鐢荤殑鏍峰紡
+ cricleStyle() {
+ let style = {};
+ style.width = this.size + 'rpx';
+ style.height = this.size + 'rpx';
+ if (this.mode == 'circle') style.borderColor = `#e4e4e4 #e4e4e4 #e4e4e4 ${this.color ? this.color : '#c7c7c7'}`;
+ return style;
+ },
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-loading-circle {
+ display: inline-block;
+ vertical-align: middle;
+ width: 28rpx;
+ height: 28rpx;
+ background: 0 0;
+ border-radius: 50%;
+ border: 2px solid;
+ border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
+ animation: u-circle 1s linear infinite;
+ }
+
+ .u-loading-flower {
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-animation: a 1s steps(12) infinite;
+ animation: u-flower 1s steps(12) infinite;
+ background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
+ background-size: 100%;
+ }
+
+ @keyframes u-flower {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn);
+ }
+ }
+
+ @-webkit-keyframes u-circle {
+ 0% {
+ transform: rotate(0);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loadmore/u-loadmore.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loadmore/u-loadmore.vue"
new file mode 100644
index 0000000..cb39959
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-loadmore/u-loadmore.vue"
@@ -0,0 +1,199 @@
+<template>
+ <view class="u-load-more-wrap" :style="{
+ backgroundColor: bgColor,
+ marginBottom: marginBottom + 'rpx',
+ marginTop: marginTop + 'rpx',
+ height: $u.addUnit(height)
+ }">
+ <!-- 鍔犺浇涓拰娌℃湁鏇村鐨勭姸鎬佹墠鏄剧ず涓よ竟鐨勬í绾� -->
+ <view :class="status == 'loadmore' || status == 'nomore' ? 'u-more' : ''" class="u-load-more-inner">
+ <u-loading class="u-loadmore-icon" :color="iconColor" :mode="iconType == 'circle' ? 'circle' : 'flower'" :show="status == 'loading' && icon"></u-loading>
+ <!-- 濡傛灉娌℃湁鏇村鐨勭姸鎬佷笅锛屾樉绀哄唴瀹逛负dot锛堢矖鐐癸級锛屽姞杞界壒瀹氭牱寮� -->
+ <view :style="[loadTextStyle]" :class="[(status == 'nomore' && isDot == true) ? 'u-dot-text' : 'u-more-text']" @tap="loadMore">
+ {{ showText }}
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * loadmore 鍔犺浇鏇村
+ * @description 姝ょ粍浠朵竴鑸敤浜庢爣璇嗛〉闈㈠簳閮ㄥ姞杞芥暟鎹椂鐨勭姸鎬併��
+ * @tutorial https://www.uviewui.com/components/loadMore.html
+ * @property {String} status 缁勪欢鐘舵�侊紙榛樿loadmore锛�
+ * @property {String} bg-color 缁勪欢鑳屾櫙棰滆壊锛屽湪椤甸潰鏄潪鐧借壊鏃朵細鐢ㄥ埌锛堥粯璁�#ffffff锛�
+ * @property {Boolean} icon 鍔犺浇涓椂鏄惁鏄剧ず鍥炬爣锛堥粯璁rue锛�
+ * @property {String} icon-type 鍔犺浇涓椂鐨勫浘鏍囩被鍨嬶紙榛樿circle锛�
+ * @property {String} icon-color icon-type涓篶ircle鏃舵湁鏁堬紝鍔犺浇涓殑鍔ㄧ敾鍥炬爣鐨勯鑹诧紙榛樿#b7b7b7锛�
+ * @property {Boolean} is-dot status涓簄omore鏃讹紝鍐呭鏄剧ず涓轰竴涓�"鈼�"锛堥粯璁alse锛�
+ * @property {String} color 瀛椾綋棰滆壊锛堥粯璁�#606266锛�
+ * @property {String Number} margin-top 鍒颁笂涓�涓浉閭诲厓绱犵殑璺濈
+ * @property {String Number} margin-bottom 鍒颁笅涓�涓浉閭诲厓绱犵殑璺濈
+ * @property {Object} load-text 鑷畾涔夋樉绀虹殑鏂囧瓧锛岃涓婃柟璇存槑绀轰緥
+ * @event {Function} loadmore status涓簂oadmore鏃讹紝鐐瑰嚮缁勪欢浼氬彂鍑烘浜嬩欢
+ * @example <u-loadmore :status="status" icon-type="iconType" load-text="loadText" />
+ */
+ export default {
+ name: "u-loadmore",
+ props: {
+ //褰撳墠椤甸潰鑳屾櫙棰滆壊锛屽鏋滆儗鏅负闈炵櫧鑹茬殑鏃跺�欙紝闇�瑕佹妸姝ゅ�艰缃负鑳屾櫙鐨勯鑹�
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鏄惁鏄剧ず鍔犺浇涓殑鍥炬爣
+ icon: {
+ type: Boolean,
+ default: true
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: String,
+ default: '28'
+ },
+ // 瀛椾綋棰滆壊
+ color: {
+ type: String,
+ default: '#606266'
+ },
+ // 缁勪欢鐘舵�侊紝loadmore-鍔犺浇鍓嶇殑鐘舵�侊紝loading-鍔犺浇涓殑鐘舵�侊紝nomore-娌℃湁鏇村鐨勭姸鎬�
+ status: {
+ type: String,
+ default: 'loadmore'
+ },
+ // 鍔犺浇涓姸鎬佺殑鍥炬爣锛宖lower-鑺辨湹鐘跺浘鏍囷紝circle-鍦嗗湀鐘跺浘鏍�
+ iconType: {
+ type: String,
+ default: 'circle'
+ },
+ // 鏄剧ず鐨勬枃瀛�
+ loadText: {
+ type: Object,
+ default () {
+ return {
+ loadmore: '鍔犺浇鏇村',
+ loading: '姝e湪鍔犺浇...',
+ nomore: '娌℃湁鏇村浜�'
+ }
+ }
+ },
+ // 鍦ㄢ�滄病鏈夋洿澶氣�濈姸鎬佷笅锛屾槸鍚︽樉绀虹矖鐐�
+ isDot: {
+ type: Boolean,
+ default: false
+ },
+ // 鍔犺浇涓樉绀哄渾鍦堝姩鐢绘椂锛屽姩鐢荤殑棰滆壊
+ iconColor: {
+ type: String,
+ default: '#b7b7b7'
+ },
+ // 涓婅竟璺�
+ marginTop: {
+ type: [String, Number],
+ default: 0
+ },
+ // 涓嬭竟璺�
+ marginBottom: {
+ type: [String, Number],
+ default: 0
+ },
+ // 楂樺害锛屽崟浣峳px
+ height: {
+ type: [String, Number],
+ default: 'auto'
+ }
+ },
+ data() {
+ return {
+ // 绮楃偣
+ dotText: "鈼�"
+ }
+ },
+ computed: {
+ // 鍔犺浇鐨勬枃瀛楁樉绀虹殑鏍峰紡
+ loadTextStyle() {
+ return {
+ color: this.color,
+ fontSize: this.fontSize + 'rpx',
+ position: 'relative',
+ zIndex: 1,
+ backgroundColor: this.bgColor,
+ // 濡傛灉鏄姞杞戒腑鐘舵�侊紝鍔ㄧ敾鍜屾枃瀛楅渶瑕佽窛绂昏繎涓�鐐�
+ padding: this.status == 'loading' ? '0 8px' : '0 12px',
+ }
+ },
+ // 鍔犺浇涓渾鍦堝姩鐢荤殑鏍峰紡
+ cricleStyle() {
+ return {
+ borderColor: `#e5e5e5 #e5e5e5 #e5e5e5 ${this.circleColor}`
+ }
+ },
+ // 鍔犺浇涓姳鏈靛姩鐢诲舰寮�
+ // 鍔ㄧ敾鐢眀ase64鍥剧墖鐢熸垚锛屾殏涓嶆敮鎸佷慨鏀�
+ flowerStyle() {
+ return {
+ }
+ },
+ // 鏄剧ず鐨勬彁绀烘枃瀛�
+ showText() {
+ let text = '';
+ if(this.status == 'loadmore') text = this.loadText.loadmore;
+ else if(this.status == 'loading') text = this.loadText.loading;
+ else if(this.status == 'nomore' && this.isDot) text = this.dotText;
+ else text = this.loadText.nomore;
+ return text;
+ }
+ },
+ methods: {
+ loadMore() {
+ // 鍙湁鍦ㄢ�滃姞杞芥洿澶氣�濈殑鐘舵�佷笅鎵嶅彂閫佺偣鍑讳簨浠讹紝鍐呭涓嶆弧涓�灞忔椂鏃犳硶瑙﹀彂搴曢儴涓婃媺浜嬩欢锛屾墍浠ラ渶瑕佺偣鍑绘潵瑙﹀彂
+ if(this.status == 'loadmore') this.$emit('loadmore');
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-load-more-wrap {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ }
+
+ .u-load-more-inner {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .u-more {
+ width: 60%;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ }
+
+ .u-more::before {
+ content: ' ';
+ position: absolute;
+ border-bottom: 1px solid #d4d4d4;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ width: 100%;
+ top: 50%;
+ left: 0;
+ }
+
+ .u-dot-text {
+ font-size: 28rpx;
+ }
+
+ .u-loadmore-icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-mask/u-mask.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-mask/u-mask.vue"
new file mode 100644
index 0000000..f52dc1f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-mask/u-mask.vue"
@@ -0,0 +1,123 @@
+<template>
+ <view class="u-mask" hover-stop-propagation :style="[maskStyle, zoomStyle]" @tap="click" @touchmove.stop.prevent :class="{
+ 'u-mask-zoom': zoom,
+ 'u-mask-show': show
+ }">
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * mask 閬僵
+ * @description 鍒涘缓涓�涓伄缃╁眰锛岀敤浜庡己璋冪壒瀹氱殑椤甸潰鍏冪礌锛屽苟闃绘鐢ㄦ埛瀵归伄缃╀笅灞傜殑鍐呭杩涜鎿嶄綔锛屼竴鑸敤浜庡脊绐楀満鏅�
+ * @tutorial https://www.uviewui.com/components/mask.html
+ * @property {Boolean} show 鏄惁鏄剧ず閬僵锛堥粯璁alse锛�
+ * @property {String Number} z-index z-index 灞傜骇锛堥粯璁�1070锛�
+ * @property {Object} custom-style 鑷畾涔夋牱寮忓璞★紝瑙佷笂鏂硅鏄�
+ * @property {String Number} duration 鍔ㄧ敾鏃堕暱锛屽崟浣嶆绉掞紙榛樿300锛�
+ * @property {Boolean} zoom 鏄惁浣跨敤scale瀵硅繖鎷涜繘琛岀缉鏀撅紙榛樿true锛�
+ * @property {Boolean} mask-click-able 閬僵鏄惁鍙偣鍑伙紝涓篺alse鏃剁偣鍑讳笉浼氬彂閫乧lick浜嬩欢锛堥粯璁rue锛�
+ * @event {Function} click mask-click-able涓簍rue鏃讹紝鐐瑰嚮閬僵鍙戦�佹浜嬩欢
+ * @example <u-mask :show="show" @click="show = false"></u-mask>
+ */
+ export default {
+ name: "u-mask",
+ props: {
+ // 鏄惁鏄剧ず閬僵
+ show: {
+ type: Boolean,
+ default: false
+ },
+ // 灞傜骇z-index
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鐢ㄦ埛鑷畾涔夋牱寮�
+ customStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 閬僵鐨勫姩鐢绘牱寮忥紝 鏄惁浣跨敤浣跨敤zoom杩涜scale杩涜缂╂斁
+ zoom: {
+ type: Boolean,
+ default: true
+ },
+ // 閬僵鐨勮繃娓℃椂闂达紝鍗曚綅涓簃s
+ duration: {
+ type: [Number, String],
+ default: 300
+ },
+ // 鏄惁鍙互閫氳繃鐐瑰嚮閬僵杩涜鍏抽棴
+ maskClickAble: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ zoomStyle: {
+ transform: ''
+ },
+ scale: 'scale(1.2, 1.2)'
+ }
+ },
+ watch: {
+ show(n) {
+ if(n && this.zoom) {
+ // 褰撳睍绀洪伄缃╃殑鏃跺�欙紝璁剧疆scale涓�1锛岃揪鍒扮缉灏�(鍘熸潵涓�1.2)鐨勬晥鏋�
+ this.zoomStyle.transform = 'scale(1, 1)';
+ } else if(!n && this.zoom) {
+ // 褰撻殣钘忛伄缃╃殑鏃跺�欙紝璁剧疆scale涓�1.2锛岃揪鍒版斁澶�(鍥犱负鏄剧ず閬僵鏃跺凡閲嶇疆涓�1)鐨勬晥鏋�
+ this.zoomStyle.transform = this.scale;
+ }
+ }
+ },
+ computed: {
+ maskStyle() {
+ let style = {};
+ style.backgroundColor = "rgba(0, 0, 0, 0.6)";
+ if(this.show) style.zIndex = this.zIndex ? this.zIndex : this.$u.zIndex.mask;
+ else style.zIndex = -1;
+ style.transition = `all ${this.duration / 1000}s ease-in-out`;
+ // 鍒ゆ柇鐢ㄦ埛浼犻�掔殑瀵硅薄鏄惁涓虹┖锛屼笉涓虹┖灏辫繘琛屽悎骞�
+ if (Object.keys(this.customStyle).length) style = {
+ ...style,
+ ...this.customStyle
+ };
+ return style;
+ }
+ },
+ methods: {
+ click() {
+ if (!this.maskClickAble) return;
+ this.$emit('click');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-mask {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ opacity: 0;
+ transition: transform 0.3s;
+ }
+
+ .u-mask-show {
+ opacity: 1;
+ }
+
+ .u-mask-zoom {
+ transform: scale(1.2, 1.2);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-message-input/u-message-input.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-message-input/u-message-input.vue"
new file mode 100644
index 0000000..805a659
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-message-input/u-message-input.vue"
@@ -0,0 +1,304 @@
+<template>
+ <view class="u-char-box">
+ <view class="u-char-flex">
+ <input :disabled="disabledKeyboard" :value="valueModel" type="number" :focus="focus" :maxlength="maxlength" class="u-input" @input="getVal"/>
+ <view v-for="(item, index) in maxlength" :key="index">
+ <view :class="[breathe && charArrLength == index ? 'u-breathe' : '', 'u-char-item',
+ charArrLength === index && mode == 'box' ? 'u-box-active' : '',
+ mode === 'box' ? 'u-box' : '']" :style="{
+ fontWeight: bold ? 'bold' : 'normal',
+ fontSize: fontSize + 'rpx',
+ width: width + 'rpx',
+ height: width + 'rpx',
+ color: inactiveColor
+ }">
+ <view class="u-placeholder-line" :style="{
+ display: charArrLength === index ? 'block' : 'none',
+ height: width * 0.5 +'rpx'
+ }"
+ v-if="mode !== 'middleLine'"
+ ></view>
+ <view v-if="mode === 'middleLine' && charArrLength <= index" :class="[breathe && charArrLength == index ? 'u-breathe' : '', charArrLength === index ? 'u-middle-line-active' : '']"
+ class="u-middle-line" :style="{height: bold ? '4px' : '2px', background: charArrLength === index ? activeColor : inactiveColor}"></view>
+ <view v-if="mode === 'bottomLine'" :class="[breathe && charArrLength == index ? 'u-breathe' : '', charArrLength === index ? 'u-buttom-line-active' : '']"
+ class="u-bottom-line" :style="{height: bold ? '4px' : '2px', background: charArrLength === index ? activeColor : inactiveColor}"></view>
+ <block v-if="!dotFill"> {{ charArr[index] ? charArr[index] : ''}}</block>
+ <block v-else>
+ <text class="u-dot">{{ charArr[index] ? '鈼�' : ''}}</text>
+ </block>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * messageInput 楠岃瘉鐮佽緭鍏ユ
+ * @description 璇ョ粍浠朵竴鑸敤浜庨獙璇佺敤鎴风煭淇¢獙璇佺爜鐨勫満鏅紝涔熷彲浠ョ粨鍚坲View鐨勯敭鐩樼粍浠朵娇鐢�
+ * @tutorial https://www.uviewui.com/components/messageInput.html
+ * @property {String Number} maxlength 杈撳叆瀛楃涓暟锛堥粯璁�4锛�
+ * @property {Boolean} dot-fill 鏄惁鐢ㄥ渾鐐瑰~鍏咃紙榛樿false锛�
+ * @property {String} mode 妯″紡閫夋嫨锛岃涓婃柟"鍩烘湰浣跨敤"璇存槑锛堥粯璁ox锛�
+ * @property {String Number} value 棰勭疆鍊�
+ * @property {Boolean} breathe 鏄惁寮�鍚懠鍚告晥鏋滐紝瑙佷笂鏂硅鏄庯紙榛樿true锛�
+ * @property {Boolean} focus 鏄惁鑷姩鑾峰彇鐒︾偣锛堥粯璁alse锛�
+ * @property {Boolean} bold 瀛椾綋鍜岃緭鍏ユí绾挎槸鍚﹀姞绮楋紙榛樿true锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�60锛�
+ * @property {String} active-color 褰撳墠婵�娲昏緭鍏ユ鐨勬牱寮忥紙榛樿#2979ff锛�
+ * @property {String} inactive-color 闈炴縺娲昏緭鍏ユ鐨勬牱寮忥紝鏂囧瓧棰滆壊鍚屾鍊硷紙榛樿#606266锛�
+ * @property {String | Number} width 杈撳叆妗嗗搴︼紝鍗曚綅rpx锛岄珮绛変簬瀹斤紙榛樿80锛�
+ * @property {Boolean} disabled-keyboard 绂佹鐐瑰嚮杈撳叆妗嗗敜璧风郴缁熼敭鐩橈紙榛樿false锛�
+ * @event {Function} change 杈撳叆鍐呭鍙戠敓鏀瑰彉鏃惰Е鍙戯紝鍏蜂綋瑙佸畼缃戣鏄�
+ * @event {Function} finish 杈撳叆瀛楃涓暟杈緈axlength鍊兼椂瑙﹀彂锛岃瀹樼綉璇存槑
+ * @example <u-message-input mode="bottomLine"></u-message-input>
+ */
+ export default {
+ name: "u-message-input",
+ props: {
+ // 鏈�澶ц緭鍏ラ暱搴�
+ maxlength: {
+ type: [Number, String],
+ default: 4
+ },
+ // 鏄惁鐢ㄥ渾鐐瑰~鍏�
+ dotFill: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄剧ず妯″紡锛宐ox-鐩掑瓙妯″紡锛宐ottomLine-妯嚎鍦ㄥ簳閮ㄦā寮忥紝middleLine-妯嚎鍦ㄤ腑閮ㄦā寮�
+ mode: {
+ type: String,
+ default: "box"
+ },
+ // 棰勭疆鍊�
+ value: {
+ type: [String, Number],
+ default: ''
+ },
+ // 褰撳墠婵�娲昏緭鍏tem锛屾槸鍚﹀甫鏈夊懠鍚告晥鏋�
+ breathe: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鑷姩鑾峰彇鐒︾偣
+ focus: {
+ type: Boolean,
+ default: false
+ },
+ // 瀛椾綋鏄惁鍔犵矖
+ bold: {
+ type: Boolean,
+ default: false
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: [String, Number],
+ default: 60
+ },
+ // 婵�娲绘牱寮�
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鏈縺娲荤殑鏍峰紡
+ inactiveColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 杈撳叆妗嗙殑澶у皬锛屽崟浣峳px锛屽绛変簬楂�
+ width: {
+ type: [Number, String],
+ default: '80'
+ },
+ // 鏄惁闅愯棌鍘熺敓閿洏锛屽鏋滄兂鐢ㄨ嚜瀹氫箟閿洏鐨勮瘽锛岄渶璁剧疆姝ゅ弬鏁颁负true
+ disabledKeyboard: {
+ type: Boolean,
+ default: false
+ }
+ },
+ watch: {
+ maxlength: {
+ // 姝ゅ�艰缃负true锛屼細鍦ㄧ粍浠跺姞杞藉悗鏃犻渶maxlength鍙樺寲灏变細鎵ц涓�娆℃湰鐩戝惉鍑芥暟锛屾棤闇�鍐峜reated鐢熷懡鍛ㄦ湡涓鐞�
+ immediate: true,
+ handler(val) {
+ this.maxlength = Number(val);
+ }
+ },
+ value: {
+ immediate: true,
+ handler(val) {
+ // 杞负瀛楃涓�
+ val = String(val);
+ // 瓒呭嚭閮ㄥ垎鎴帀
+ this.valueModel = val.substring(0, this.maxlength);
+ }
+ },
+ },
+ data() {
+ return {
+ valueModel: ""
+ }
+ },
+ computed: {
+ // 鏄惁鏄剧ず鍛煎惛鐏晥鏋�
+ animationClass() {
+ return (index) => {
+ if (this.breathe && this.charArr.length == index) return 'u-breathe';
+ else return '';
+ }
+ },
+ // 鐢ㄤ簬鏄剧ず瀛楃
+ charArr() {
+ return this.valueModel.split('');
+ },
+ charArrLength() {
+ return this.charArr.length;
+ }
+ },
+ methods: {
+ getVal(e) {
+ let {
+ value
+ } = e.detail
+ this.valueModel = value;
+ // 鍒ゆ柇闀垮害鏄惁瓒呭嚭浜唌axlength鍊硷紝鐞嗚涓婁笉浼氬彂鐢燂紝鍥犱负input缁勪欢璁剧疆浜唌axlength灞炴�у��
+ if (String(value).length > this.maxlength) return;
+ // 鏈揪鍒癿axlength涔嬪墠锛屽彂閫乧hange浜嬩欢锛岃揪鍒板悗鍙戦�乫inish浜嬩欢
+ this.$emit('change', value);
+ if (String(value).length == this.maxlength) {
+ this.$emit('finish', value);
+ }
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ @keyframes breathe {
+ 0% {
+ opacity: 0.3;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0.3;
+ }
+ }
+
+ .u-char-box {
+ text-align: center;
+ }
+
+ .u-char-flex {
+ display: flex;
+ justify-content: center;
+ flex-wrap: wrap;
+ position: relative;
+ }
+
+ .u-input {
+ position: absolute;
+ top: 0;
+ left: -100%;
+ width: 200%;
+ height: 100%;
+ text-align: left;
+ z-index: 9;
+ opacity: 0;
+ background: none;
+ }
+
+ .u-char-item {
+ position: relative;
+ width: 90rpx;
+ height: 90rpx;
+ margin: 10rpx 10rpx;
+ font-size: 60rpx;
+ font-weight: bold;
+ color: $u-main-color;
+ line-height: 90rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .u-middle-line {
+ border: none;
+ }
+
+ .u-box {
+ box-sizing: border-box;
+ border: 2rpx solid #cccccc;
+ border-radius: 6rpx;
+ }
+
+ .u-box-active {
+ overflow: hidden;
+ animation-timing-function: ease-in-out;
+ animation-duration: 1500ms;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ border: 2rpx solid $u-type-primary;
+ }
+
+ .u-middle-line-active {
+ background: $u-type-primary;
+ }
+
+ .u-breathe {
+ animation: breathe 2s infinite ease;
+ }
+
+ .u-placeholder-line {
+ display: none;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: 2rpx;
+ height: 40rpx;
+ background: #333333;
+ animation: twinkling 1.5s infinite ease;
+ }
+
+ .u-animation-breathe {
+ animation-name: breathe;
+ }
+
+ .u-dot {
+ font-size: 34rpx;
+ line-height: 34rpx;
+ }
+
+ .u-middle-line {
+ height: 4px;
+ background: #000000;
+ width: 80%;
+ position: absolute;
+ border-radius: 2px;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ .u-buttom-line-active {
+ background: $u-type-primary;
+ }
+
+ .u-bottom-line {
+ height: 4px;
+ background: #000000;
+ width: 80%;
+ position: absolute;
+ border-radius: 2px;
+ bottom: 0;
+ left: 50%;
+ transform: translate(-50%);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-modal/u-modal.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-modal/u-modal.vue"
new file mode 100644
index 0000000..6362879
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-modal/u-modal.vue"
@@ -0,0 +1,283 @@
+<template>
+ <view>
+ <u-popup :zoom="zoom" mode="center" :popup="false" :z-index="uZIndex" v-model="value" :length="width"
+ :mask-close-able="maskCloseAble" :border-radius="borderRadius" @close="popupClose" :negative-top="negativeTop">
+ <view class="u-model">
+ <view v-if="showTitle" class="u-model__title u-line-1" :style="[titleStyle]">{{ title }}</view>
+ <view class="u-model__content">
+ <view :style="[contentStyle]" v-if="$slots.default">
+ <slot />
+ </view>
+ <view v-else class="u-model__content__message" :style="[contentStyle]">{{ content }}</view>
+ </view>
+ <view class="u-model__footer u-border-top" v-if="showCancelButton || showConfirmButton">
+ <view v-if="showCancelButton" :hover-stay-time="100" hover-class="u-model__btn--hover" class="u-model__footer__button"
+ :style="[cancelBtnStyle]" @tap="cancel">
+ {{cancelText}}
+ </view>
+ <view v-if="showConfirmButton || $slots['confirm-button']" :hover-stay-time="100" :hover-class="asyncClose ? 'none' : 'u-model__btn--hover'"
+ class="u-model__footer__button hairline-left" :style="[confirmBtnStyle]" @tap="confirm">
+ <slot v-if="$slots['confirm-button']" name="confirm-button"></slot>
+ <block v-else>
+ <u-loading mode="circle" :color="confirmColor" v-if="loading"></u-loading>
+ <block v-else>
+ {{confirmText}}
+ </block>
+ </block>
+ </view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ /**
+ * modal 妯℃�佹
+ * @description 寮瑰嚭妯℃�佹锛屽父鐢ㄤ簬娑堟伅鎻愮ず銆佹秷鎭‘璁ゃ�佸湪褰撳墠椤甸潰鍐呭畬鎴愮壒瀹氱殑浜や簰鎿嶄綔
+ * @tutorial https://www.uviewui.com/components/modal.html
+ * @property {Boolean} value 鏄惁鏄剧ず妯℃�佹
+ * @property {String | Number} z-index 灞傜骇
+ * @property {String} title 妯℃�佹鏍囬锛堥粯璁�"鎻愮ず"锛�
+ * @property {String | Number} width 妯℃�佹瀹藉害锛堥粯璁�600锛�
+ * @property {String} content 妯℃�佹鍐呭锛堥粯璁�"鍐呭"锛�
+ * @property {Boolean} show-title 鏄惁鏄剧ず鏍囬锛堥粯璁rue锛�
+ * @property {Boolean} async-close 鏄惁寮傛鍏抽棴锛屽彧瀵圭‘瀹氭寜閽湁鏁堬紙榛樿false锛�
+ * @property {Boolean} show-confirm-button 鏄惁鏄剧ず纭鎸夐挳锛堥粯璁rue锛�
+ * @property {Stringr | Number} negative-top modal寰�涓婂亸绉荤殑鍊�
+ * @property {Boolean} show-cancel-button 鏄惁鏄剧ず鍙栨秷鎸夐挳锛堥粯璁alse锛�
+ * @property {Boolean} mask-close-able 鏄惁鍏佽鐐瑰嚮閬僵鍏抽棴modal锛堥粯璁alse锛�
+ * @property {String} confirm-text 纭鎸夐挳鐨勬枃瀛楀唴瀹癸紙榛樿"纭"锛�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬枃瀛楀唴瀹癸紙榛樿"鍙栨秷"锛�
+ * @property {String} cancel-color 鍙栨秷鎸夐挳鐨勯鑹诧紙榛樿"#606266"锛�
+ * @property {String} confirm-color 纭鎸夐挳鐨勬枃瀛楀唴瀹癸紙榛樿"#2979ff"锛�
+ * @property {String | Number} border-radius 妯℃�佹鍦嗚鍊硷紝鍗曚綅rpx锛堥粯璁�16锛�
+ * @property {Object} title-style 鑷畾涔夋爣棰樻牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} content-style 鑷畾涔夊唴瀹规牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} cancel-style 鑷畾涔夊彇娑堟寜閽牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} confirm-style 鑷畾涔夌‘璁ゆ寜閽牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} zoom 鏄惁寮�鍚缉鏀炬ā寮忥紙榛樿true锛�
+ * @event {Function} confirm 纭鎸夐挳琚偣鍑�
+ * @event {Function} cancel 鍙栨秷鎸夐挳琚偣鍑�
+ * @example <u-modal :src="title" :content="content"></u-modal>
+ */
+ export default {
+ name: 'u-modal',
+ props: {
+ // 鏄惁鏄剧ずModal
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 灞傜骇z-index
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏍囬
+ title: {
+ type: [String],
+ default: '鎻愮ず'
+ },
+ // 寮圭獥瀹藉害锛屽彲浠ユ槸鏁板��(rpx)锛岀櫨鍒嗘瘮锛宎uto绛�
+ width: {
+ type: [Number, String],
+ default: 600
+ },
+ // 寮圭獥鍐呭
+ content: {
+ type: String,
+ default: '鍐呭'
+ },
+ // 鏄惁鏄剧ず鏍囬
+ showTitle: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず纭鎸夐挳
+ showConfirmButton: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鍙栨秷鎸夐挳
+ showCancelButton: {
+ type: Boolean,
+ default: false
+ },
+ // 纭鏂囨
+ confirmText: {
+ type: String,
+ default: '纭'
+ },
+ // 鍙栨秷鏂囨
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ },
+ // 纭鎸夐挳棰滆壊
+ confirmColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鍙栨秷鏂囧瓧棰滆壊
+ cancelColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 鍦嗚鍊�
+ borderRadius: {
+ type: [Number, String],
+ default: 16
+ },
+ // 鏍囬鐨勬牱寮�
+ titleStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 鍐呭鐨勬牱寮�
+ contentStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 鍙栨秷鎸夐挳鐨勬牱寮�
+ cancelStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 纭畾鎸夐挳鐨勬牱寮�
+ confirmStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // 鏄惁寮�鍚缉鏀炬晥鏋�
+ zoom: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁寮傛鍏抽棴锛屽彧瀵圭‘瀹氭寜閽湁鏁�
+ asyncClose: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍏佽鐐瑰嚮閬僵鍏抽棴modal
+ maskCloseAble: {
+ type: Boolean,
+ default: false
+ },
+ // 缁欎竴涓礋鐨刴argin-top锛屽線涓婂亸绉伙紝閬垮厤鍜岄敭鐩橀噸鍚堢殑鎯呭喌
+ negativeTop: {
+ type: [String, Number],
+ default: 0
+ }
+ },
+ data() {
+ return {
+ loading: false, // 纭鎸夐挳鏄惁姝e湪鍔犺浇涓�
+ }
+ },
+ computed: {
+ cancelBtnStyle() {
+ return Object.assign({
+ color: this.cancelColor
+ }, this.cancelStyle);
+ },
+ confirmBtnStyle() {
+ return Object.assign({
+ color: this.confirmColor
+ }, this.confirmStyle);
+ },
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ watch: {
+ // 濡傛灉鏄紓姝ュ叧闂椂锛屽閮ㄤ慨鏀箆-model鐨勫�间负false鏃讹紝閲嶇疆鍐呴儴鐨刲oading鐘舵��
+ // 閬垮厤涓嬫鎵撳紑鐨勬椂鍊欙紝鐘舵�佹贩涔�
+ value(n) {
+ if (n === true) this.loading = false;
+ }
+ },
+ methods: {
+ confirm() {
+ // 寮傛鍏抽棴
+ if (this.asyncClose) {
+ this.loading = true;
+ } else {
+ this.$emit('input', false);
+ }
+ this.$emit('confirm');
+ },
+ cancel() {
+ this.$emit('cancel');
+ this.$emit('input', false);
+ // 鐩墠popup寮圭獥鍏抽棴鏈変竴涓欢鏃舵搷浣滐紝姝ゅ鍋氫竴涓欢鏃�
+ // 閬垮厤纭鎸夐挳鏂囧瓧鍙樻垚浜�"纭畾"瀛楁牱锛宮odal杩樻病娑堝け锛岄�犳垚瑙嗚涓嶅ソ鐨勬晥鏋�
+ setTimeout(() => {
+ this.loading = false;
+ }, 300);
+ },
+ // 鐐瑰嚮閬僵鍏抽棴modal锛岃缃畍-model鐨勫�间负false锛屽惁鍒欐棤娉曠浜屾寮硅捣modal
+ popupClose() {
+ this.$emit('input', false);
+ },
+ // 娓呴櫎鍔犺浇涓殑鐘舵��
+ clearLoading() {
+ this.loading = false;
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-model {
+ height: auto;
+ overflow: hidden;
+ font-size: 32rpx;
+ background-color: #fff;
+
+ &__btn--hover {
+ background-color: rgb(230, 230, 230);
+ }
+
+ &__title {
+ padding-top: 48rpx;
+ font-weight: 500;
+ text-align: center;
+ color: $u-main-color;
+ }
+
+ &__content {
+ &__message {
+ padding: 48rpx;
+ font-size: 30rpx;
+ text-align: center;
+ color: $u-content-color;
+ }
+ }
+
+ &__footer {
+ display: flex;
+
+ &__button {
+ flex: 1;
+ height: 100rpx;
+ line-height: 100rpx;
+ font-size: 32rpx;
+ box-sizing: border-box;
+ cursor: pointer;
+ text-align: center;
+ border-radius: 4rpx;
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-navbar/u-navbar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-navbar/u-navbar.vue"
new file mode 100644
index 0000000..8abda3a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-navbar/u-navbar.vue"
@@ -0,0 +1,309 @@
+<template>
+ <view class="">
+ <view class="u-navbar" :style="[navbarStyle]" :class="{ 'u-navbar-fixed': isFixed, 'u-border-bottom': borderBottom }">
+ <view class="u-status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
+ <view class="u-navbar-inner" :style="[navbarInnerStyle]">
+ <view class="u-back-wrap" v-if="isBack" @tap="goBack">
+ <view class="u-icon-wrap">
+ <u-icon :name="backIconName" :color="backIconColor" :size="backIconSize"></u-icon>
+ </view>
+ <view class="u-icon-wrap u-back-text u-line-1" v-if="backText" :style="[backTextStyle]">{{ backText }}</view>
+ </view>
+ <view class="u-navbar-content-title" v-if="title" :style="[titleStyle]">
+ <view
+ class="u-title u-line-1"
+ :style="{
+ color: titleColor,
+ fontSize: titleSize + 'rpx'
+ }">
+ {{ title }}
+ </view>
+ </view>
+ <view class="u-slot-content">
+ <slot></slot>
+ </view>
+ <view class="u-slot-right">
+ <slot name="right"></slot>
+ </view>
+ </view>
+ </view>
+ <!-- 瑙e喅fixed瀹氫綅鍚庡鑸爮濉岄櫡鐨勯棶棰� -->
+ <view class="u-navbar-placeholder" v-if="isFixed && !immersive" :style="{ width: '100%', height: Number(navbarHeight) + statusBarHeight + 'px' }"></view>
+ </view>
+</template>
+
+<script>
+ // 鑾峰彇绯荤粺鐘舵�佹爮鐨勯珮搴�
+ let systemInfo = uni.getSystemInfoSync();
+ let menuButtonInfo = {};
+ // 濡傛灉鏄皬绋嬪簭锛岃幏鍙栧彸涓婅鑳跺泭鐨勫昂瀵镐俊鎭紝閬垮厤瀵艰埅鏍忓彸渚у唴瀹逛笌鑳跺泭閲嶅彔(鏀粯瀹濆皬绋嬪簭闈炴湰API锛屽皻鏈吋瀹�)
+ // #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO || MP-QQ
+ menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+ // #endif
+ /**
+ * navbar 鑷畾涔夊鑸爮
+ * @description 姝ょ粍浠朵竴鑸敤浜庡湪鐗规畩鎯呭喌涓嬶紝闇�瑕佽嚜瀹氫箟瀵艰埅鏍忕殑鏃跺�欑敤鍒帮紝涓�鑸缓璁娇鐢╱niapp鑷甫鐨勫鑸爮銆�
+ * @tutorial https://www.uviewui.com/components/navbar.html
+ * @property {String Number} height 瀵艰埅鏍忛珮搴�(涓嶅寘鎷姸鎬佹爮楂樺害鍦ㄥ唴锛屽唴閮ㄨ嚜鍔ㄥ姞涓�)锛屾敞鎰忚繖閲岀殑鍗曚綅鏄痯x锛堥粯璁�44锛�
+ * @property {String} back-icon-color 宸﹁竟杩斿洖鍥炬爣鐨勯鑹诧紙榛樿#606266锛�
+ * @property {String} back-icon-name 宸﹁竟杩斿洖鍥炬爣鐨勫悕绉帮紝鍙兘涓簎View鑷甫鐨勫浘鏍囷紙榛樿arrow-left锛�
+ * @property {String Number} back-icon-size 宸﹁竟杩斿洖鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�30锛�
+ * @property {String} back-text 杩斿洖鍥炬爣鍙宠竟鐨勮緟鍔╂彁绀烘枃瀛�
+ * @property {Object} back-text-style 杩斿洖鍥炬爣鍙宠竟鐨勮緟鍔╂彁绀烘枃瀛楃殑鏍峰紡锛屽璞″舰寮忥紙榛樿{ color: '#606266' }锛�
+ * @property {String} title 瀵艰埅鏍忔爣棰橈紝濡傝缃负绌哄瓧绗︼紝灏嗕細闅愯棌鏍囬鍗犱綅鍖哄煙
+ * @property {String Number} title-width 瀵艰埅鏍忔爣棰樼殑鏈�澶у搴︼紝鍐呭瓒呭嚭浼氫互鐪佺暐鍙烽殣钘忥紝鍗曚綅rpx锛堥粯璁�250锛�
+ * @property {String} title-color 鏍囬鐨勯鑹诧紙榛樿#606266锛�
+ * @property {String Number} title-size 瀵艰埅鏍忔爣棰樺瓧浣撳ぇ灏忥紝鍗曚綅rpx锛堥粯璁�32锛�
+ * @property {Function} custom-back 鑷畾涔夎繑鍥為�昏緫鏂规硶
+ * @property {String Number} z-index 鍥哄畾鍦ㄩ《閮ㄦ椂鐨剒-index鍊硷紙榛樿980锛�
+ * @property {Boolean} is-back 鏄惁鏄剧ず瀵艰埅鏍忓乏杈硅繑鍥炲浘鏍囧拰杈呭姪鏂囧瓧锛堥粯璁rue锛�
+ * @property {Object} background 瀵艰埅鏍忚儗鏅缃紝瑙佸畼缃戣鏄庯紙榛樿{ background: '#ffffff' }锛�
+ * @property {Boolean} is-fixed 瀵艰埅鏍忔槸鍚﹀浐瀹氬湪椤堕儴锛堥粯璁rue锛�
+ * @property {Boolean} immersive 娌夋蹈寮忥紝鍏佽fixed瀹氫綅鍚庡鑸爮濉岄櫡锛屼粎fixed瀹氫綅涓嬬敓鏁堬紙榛樿false锛�
+ * @property {Boolean} border-bottom 瀵艰埅鏍忓簳閮ㄦ槸鍚︽樉绀轰笅杈规锛屽瀹氫箟浜嗚緝娣辩殑鑳屾櫙棰滆壊锛屽彲鍙栨秷姝ゅ�硷紙榛樿true锛�
+ * @example <u-navbar back-text="杩斿洖" title="鍓戞湭閰嶅Ε锛屽嚭闂ㄥ凡鏄睙婀�"></u-navbar>
+ */
+ export default {
+ name: "u-navbar",
+ props: {
+ // 瀵艰埅鏍忛珮搴︼紝鍗曚綅px锛岄潪rpx
+ height: {
+ type: [String, Number],
+ default: ''
+ },
+ // 杩斿洖绠ご鐨勯鑹�
+ backIconColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 宸﹁竟杩斿洖鐨勫浘鏍�
+ backIconName: {
+ type: String,
+ default: 'nav-back'
+ },
+ // 宸﹁竟杩斿洖鍥炬爣鐨勫ぇ灏忥紝rpx
+ backIconSize: {
+ type: [String, Number],
+ default: '44'
+ },
+ // 杩斿洖鐨勬枃瀛楁彁绀�
+ backText: {
+ type: String,
+ default: ''
+ },
+ // 杩斿洖鐨勬枃瀛楃殑 鏍峰紡
+ backTextStyle: {
+ type: Object,
+ default () {
+ return {
+ color: '#606266'
+ }
+ }
+ },
+ // 瀵艰埅鏍忔爣棰�
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鏍囬鐨勫搴︼紝濡傛灉闇�瑕佽嚜瀹氫箟鍙充晶鍐呭锛屼笖鍙充晶鍐呭寰堝鏃讹紝鍙兘闇�瑕佸噺灏戣繖涓搴︼紝鍗曚綅rpx
+ titleWidth: {
+ type: [String, Number],
+ default: '250'
+ },
+ // 鏍囬鐨勯鑹�
+ titleColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 鏍囬鐨勫瓧浣撳ぇ灏�
+ titleSize: {
+ type: [String, Number],
+ default: 32
+ },
+ isBack: {
+ type: [Boolean, String],
+ default: true
+ },
+ // 瀵硅薄褰㈠紡锛屽洜涓虹敤鎴峰彲鑳藉畾涔変竴涓函鑹诧紝鎴栬�呯嚎鎬ф笎鍙樼殑棰滆壊
+ background: {
+ type: Object,
+ default () {
+ return {
+ background: '#ffffff'
+ }
+ }
+ },
+ // 瀵艰埅鏍忔槸鍚﹀浐瀹氬湪椤堕儴
+ isFixed: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁娌夋蹈寮忥紝鍏佽fixed瀹氫綅鍚庡鑸爮濉岄櫡锛屼粎fixed瀹氫綅涓嬬敓鏁�
+ immersive: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず瀵艰埅鏍忕殑涓嬭竟妗�
+ borderBottom: {
+ type: Boolean,
+ default: true
+ },
+ zIndex: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鑷畾涔夎繑鍥為�昏緫
+ customBack: {
+ type: Function,
+ default: null
+ }
+ },
+ data() {
+ return {
+ menuButtonInfo: menuButtonInfo,
+ statusBarHeight: systemInfo.statusBarHeight
+ };
+ },
+ computed: {
+ // 瀵艰埅鏍忓唴閮ㄧ洅瀛愮殑鏍峰紡
+ navbarInnerStyle() {
+ let style = {};
+ // 瀵艰埅鏍忓搴︼紝濡傛灉鍦ㄥ皬绋嬪簭涓嬶紝瀵艰埅鏍忓搴︿负鑳跺泭鐨勫乏杈瑰埌灞忓箷宸﹁竟鐨勮窛绂�
+ style.height = this.navbarHeight + 'px';
+ // // 濡傛灉鏄悇瀹跺皬绋嬪簭锛屽鑸爮鍐呴儴鐨勫搴﹂渶瑕佸噺灏戝彸杈硅兌鍥婄殑瀹藉害
+ // #ifdef MP
+ let rightButtonWidth = systemInfo.windowWidth - menuButtonInfo.left;
+ style.marginRight = rightButtonWidth + 'px';
+ // #endif
+ return style;
+ },
+ // 鏁翠釜瀵艰埅鏍忕殑鏍峰紡
+ navbarStyle() {
+ let style = {};
+ style.zIndex = this.zIndex ? this.zIndex : this.$u.zIndex.navbar;
+ // 鍚堝苟鐢ㄦ埛浼犻�掔殑鑳屾櫙鑹插璞�
+ Object.assign(style, this.background);
+ return style;
+ },
+ // 瀵艰埅涓棿鐨勬爣棰樼殑鏍峰紡
+ titleStyle() {
+ let style = {};
+ // #ifndef MP
+ style.left = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
+ style.right = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
+ // #endif
+ // #ifdef MP
+ // 姝ゅ鏄负浜嗚鏍囬鏄剧ず鍖哄煙鍗充娇鍦ㄥ皬绋嬪簭鏈夊彸渚ц兌鍥婄殑鎯呭喌涓嬩篃鑳藉浜庡睆骞曠殑涓棿锛屾槸閫氳繃缁濆瀹氫綅瀹炵幇鐨�
+ let rightButtonWidth = systemInfo.windowWidth - menuButtonInfo.left;
+ style.left = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
+ style.right = rightButtonWidth - (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + rightButtonWidth +
+ 'px';
+ // #endif
+ style.width = uni.upx2px(this.titleWidth) + 'px';
+ return style;
+ },
+ // 杞崲瀛楃鏁板�间负鐪熸鐨勬暟鍊�
+ navbarHeight() {
+ // #ifdef APP-PLUS || H5
+ return this.height ? this.height : 44;
+ // #endif
+ // #ifdef MP
+ // 灏忕▼搴忕壒鍒鐞嗭紝璁╁鑸爮楂樺害 = 鑳跺泭楂樺害 + 涓ゅ�嶈兌鍥婇《閮ㄤ笌鐘舵�佹爮搴曢儴鐨勮窛绂讳箣宸�(鐩稿綋浜庡悓鏃惰幏寰椾簡瀵艰埅鏍忓簳閮ㄤ笌鑳跺泭搴曢儴鐨勮窛绂�)
+ // 姝ゆ柟娉曟湁缂洪櫡锛屾殏涓嶇敤(浼氬鑷村皯浜嗗嚑涓猵x)锛岄噰鐢ㄧ洿鎺ュ浐瀹氬�肩殑鏂瑰紡
+ // return menuButtonInfo.height + (menuButtonInfo.top - this.statusBarHeight) * 2;//瀵艰埅楂樺害
+ let height = systemInfo.platform == 'ios' ? 44 : 48;
+ return this.height ? this.height : height;
+ // #endif
+ }
+ },
+ created() {},
+ methods: {
+ goBack() {
+ // 濡傛灉鑷畾涔変簡鐐瑰嚮杩斿洖鎸夐挳鐨勫嚱鏁帮紝鍒欐墽琛岋紝鍚﹀垯鎵ц杩斿洖閫昏緫
+ if (typeof this.customBack === 'function') {
+ // 鍦ㄥ井淇★紝鏀粯瀹濈瓑鐜(H5姝e父)锛屼細瀵艰嚧鐖剁粍浠跺畾涔夌殑customBack()鍑芥暟浣撲腑鐨則his鍙樻垚瀛愮粍浠剁殑this
+ // 閫氳繃bind()鏂规硶锛岀粦瀹氱埗缁勪欢鐨則his锛岃this.customBack()鐨則his涓虹埗缁勪欢鐨勪笂涓嬫枃
+ this.customBack.bind(this.$u.$parent.call(this))();
+ } else {
+ uni.navigateBack();
+ }
+ }
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-navbar {
+ width: 100%;
+ }
+
+ .u-navbar-fixed {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 991;
+ }
+
+ .u-status-bar {
+ width: 100%;
+ }
+
+ .u-navbar-inner {
+ display: flex;
+ justify-content: space-between;
+ position: relative;
+ align-items: center;
+ }
+
+ .u-back-wrap {
+ display: flex;
+ align-items: center;
+ flex: 1;
+ flex-grow: 0;
+ padding: 14rpx 14rpx 14rpx 24rpx;
+ }
+
+ .u-back-text {
+ padding-left: 4rpx;
+ font-size: 30rpx;
+ }
+
+ .u-navbar-content-title {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex: 1;
+ position: absolute;
+ left: 0;
+ right: 0;
+ height: 60rpx;
+ text-align: center;
+ flex-shrink: 0;
+ }
+
+ .u-navbar-centent-slot {
+ flex: 1;
+ }
+
+ .u-title {
+ line-height: 60rpx;
+ font-size: 32rpx;
+ flex: 1;
+ }
+
+ .u-navbar-right {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ }
+
+ .u-slot-content {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-no-network/u-no-network.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-no-network/u-no-network.vue"
new file mode 100644
index 0000000..a74688d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-no-network/u-no-network.vue"
@@ -0,0 +1,233 @@
+<template>
+ <view class="u-no-network" v-if="!isConnected" :style="{'z-index': uZIndex}" @touchmove.stop.prevent="">
+ <view class="u-inner">
+ <image class="u-error-icon" :src="image" mode="widthFix"></image>
+ <view class="u-tips">
+ {{tips}}
+ </view>
+ <!-- 鍙湁APP骞冲彴锛屾墠鑳借烦杞缃〉锛屽洜涓洪渶瑕佽皟鐢╬lus鐜 -->
+ <!-- #ifdef APP-PLUS -->
+ <view class="u-to-setting">
+ 璇锋鏌ョ綉缁滐紝鎴栧墠寰�<text class="u-setting-btn" @tap="openSettings">璁剧疆</text>
+ </view>
+ <!-- #endif -->
+ <view class="u-retry" :hover-stay-time="150" @tap="retry" hover-class="u-retry-hover">
+ 閲嶈瘯
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * noNetwork 鏃犵綉缁滄彁绀�
+ * @description 璇ョ粍浠舵棤闇�浠讳綍閰嶇疆锛屽紩鍏ュ嵆鍙紝鍐呴儴鑷姩澶勭悊鎵�鏈夊姛鑳藉拰浜嬩欢銆�
+ * @tutorial https://www.uviewui.com/components/noNetwork.html
+ * @property {String} tips 娌℃湁缃戠粶鏃剁殑鎻愮ず璇紙榛樿鍝庡憖锛岀綉缁滀俊鍙蜂涪澶憋級
+ * @property {String Number} zIndex 缁勪欢鐨剒-index鍊硷紙榛樿1080锛�
+ * @property {String} image 鏃犵綉缁滅殑鍥剧墖鎻愮ず锛屽彲鐢ㄧ殑src鍦板潃鎴朾ase64鍥剧墖
+ * @event {Function} retry 鐢ㄦ埛鐐瑰嚮椤甸潰鐨�"閲嶈瘯"鎸夐挳鏃惰Е鍙�
+ * @example <u-no-network></u-no-network>
+ */
+ export default {
+ name: "u-no-network",
+ props: {
+ // 椤甸潰鏂囧瓧鎻愮ず
+ tips: {
+ type: String,
+ default: '鍝庡憖锛岀綉缁滀俊鍙蜂涪澶�'
+ },
+ // 涓�涓獄-index鍊硷紝鐢ㄤ簬璁剧疆娌℃湁缃戠粶杩欎釜缁勪欢鐨勫眰娆★紝鍥犱负椤甸潰鍙兘浼氭湁鍏朵粬瀹氫綅鐨勫厓绱犲眰绾ц繃楂橈紝瀵艰嚧姝ょ粍浠惰瑕嗙洊
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ // image 娌℃湁缃戠粶鐨勫浘鐗囨彁绀�
+ image: {
+ type: String,
+ default: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAEYCAMAAABFglBLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0U3MjVFMzQwNEY1MTFFQUE4MTNDOUEzMTVBREMxQjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0U3MjVFMzUwNEY1MTFFQUE4MTNDOUEzMTVBREMxQjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTcyNUUzMjA0RjUxMUVBQTgxM0M5QTMxNUFEQzFCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRTcyNUUzMzA0RjUxMUVBQTgxM0M5QTMxNUFEQzFCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkHIU9QAAAMAUExURdHW2OWiou7u7tve4dnc3/vw8N3g4sPCwvjn5+jo6M7Q0u6+vtyEhPXY2Li+wuikpPXW1uXo6dba3Pbg4Na5u+qurqqyt/HJydjb3fjo6LrAxO7Bwey1td6MjOrs7fbc3OTn6Maytf7+/vz19eqqqrzCxvzz87a8wLO6vuqxsf78/PDFxenr7L/FyNTY26+2u/z09MjMzqy0udnZ2dvb27G4vMjN0O7v8P339+Ll5u3v8NDS1ODj5frt7bC3vP76+u24uOKamtTW2MTIy9zc3N7e3vPQ0OCTk8DGyfDDw9LR0c7S1LussNbY2fPOztLU1cLHyrK6vvji4vrv78bKzPX29/np6crP0vjk5Ozu78bLzuepqczR1MHFyMDEyOq1tfTS0vP09cLIy9DU173Ex8bGxvHy88/U18vO0LK4vM7OzsTKzcPJzPLMzM/T1sbMz8HJy+7FxbW8wNTW18XKzvb3+MjLzczP0d3e3+Dh4r3Dxtna29zd3rK5vdPU1cfM0Prq6uOenuPm58HGyfHz8/ro6Lq/w8nO0bzCxcrKytjZ2uXm5vTU1LvBxbW7v+rp6eefn/39/eLi4u3t7Ozs7Pj4+Pr6+vX19fHx8erq6vPz8+Xl5ff39+fn5/v7+/z8/PLx8fX09Pb29ri4uOTk5PHw8OPj4/Py8ubm5vn5+e3s7Pb19fTz8/f29tfX1+7t7cvQ0+zr6/Ly8u3t7fr5+efm5quzuOvq6vT19uvr6/j5+a61uuy6uvb39/T09Ojn5+jq6621uvn6+t/i5KyzuPn4+Le+wvv6+s3S1fj4+fDw8OHk5vv7/Pr7++Xk5LS7v7y8vObl5fz9/ff4+OTj48DEx8XJy+Hk5euysu/x8re9wfn5+v38/Pv8/Pr6++vt7uLi4+Pi4ubl5uXk5dPV1tbV1fHMzNPX2e7u7ejn6PT19fX19PDw7/b29f39/vnr6+Hh4a+3u+7t7q61uePi48PHyf35+enp6fLz9PPz8qmxtuDg4N/f3/Dv7////////1cfN/UAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAlqElEQVR42uydCXwUVZrAk5CEJBAQshACCGyjIRwBJR0It6JBGZZBkRtm5PBgFXAXHBghqAMz6LjGTrd9n7lvwn0JQhARxYNxVJTMwcwOM+7uzK6Z3VXcrnTXVr2q6q7urrvfq26c+n4egXTSVfXv993veym4JkklKdoj0IBoogHRgGiiAdGAaKIB0YBoogHRgGiiAdFEA6IBUVuwx+vqet/v1YAkhxwmcNT9gvjnsAYkGcT7eN1TtThe+1TdL2o1IEkg+rrvUV90MF9oQBIqv6ijF4a3d51XA5J4jVVXx3z587ojGpDEm/QwkO9pQJJB2CvksAYk8fJUXT31xZG63ppRTwI5QgcgR35Rd1MDkgxSX1f31P33P1V3i3u936HUyc3edWSsjuEakKRRW3r9kVv+JrRsrwbklpKTnXs+z0wfONOtAUm8rJu55oqfkZ0TOzUgCZS3Zh7s54+S5RqQhNGYMsnPISkakCSiQcjkNzUgasvUDaVsBF1fb9GXd//B0ziliPzjEA2IujLqGRaMST+cawgLNpn4q30aEDV1Va+dYRqzNy00RMoYUmdpQNTzcb8sCtuKH8w9Z4iWLuIbVzQgapmOBedDOO6c0WjgENK2vKwBUUUmvBSiUbrqxwZuOU18d5MGhEe/dI6a2WvIxA0HX1hfvH7V8gUpA9Mz3x/VuVTRLxvwdAhH5aJjBj4hv39QAxIl743ITHm6azBPnOCfVLwlc6pR3upYFbLjvIuDlEUqRYZo38JYS4gVt5rNZhMQO46byksoMeG4w8QIjtvMpJA/wP1EdZ0bKvkitkh555mBA3zSLnBlSFnNnlJvEJJ95ItW3pJAamvtZhy3m/T0g7fhthJGiG+EviYgmEJ/wHFP6GsbnlZSoicoucxmGwHVguPTBz543C9LHky/Jnql1w5KxWGo8KsThsAFYneYMOb5mlnP11ZCrwOPjfgGI8RqsZuZtUOsFmbllFhZP+zEbc8vGcqzMibv7qos3rd7Mg+TrQv2vCVkiLYcl4rDYLhKvi79FgFirDU7TPpyHHexINg9ZnOazWazyPxlVhsBzcKAKrl84cHo5zx758H0ASufWGrVBWkxup8YMepCespDV6Jfe3z9kOnc7/OjLydJx2FoJF983norAEkLqSbiw4+ZHGY7+UQhyYCDEZml8+ufzLz+RlBAPpieGYPloczYdaIb8rAMHAbD1yr5WHEBqTW7XIwZwEykBoIcrH3JrkgcL554PShRPpie/hDbE9v97oTIXz2zUhYOw0Lw4glJDMRiNtGrIo1AYUFwYZlsVbVzwyhfUJ4YO1MqWb/hsfRw6rzzPnk4DNlk2sQ/BU9aIGZaS2EOI6LLunBn+Fk+fWFpUJmcvPBSWH2dXz4A/OqTB2XiMBimgJf/NCmBGO0OykM1mW3ILur9cNq1cuATwbjk801htC8QcUQmk0NcIhWHoWKwPBdr9KwVuWvz//nVxYXIgTg9wCu1OZxGdJ+RacWhxNKazmD8snJL2DN44Z/oL/btMkgWsFr3Sr+BvmF5oP+fMpABMaaBSKHcgnTJ7tnLPLz1mW8E4ch76S9Hec47pOOgPCz/COm38EDfCEkdn4UCiNVDGg69Ay2OqSEFU7wnCFNGvcB2hHtk8Lhbdn/D6r7RMigLARDSbjgRW7QhTNBdeSEIW6ZPYXgUzZXBg3IB9n0o4y6+iAHS9/Zhc2ACMToIS27yoA5URzCe7ju9gigk5O767/sXqTz04PUPT5VzH31uv3f1o30eTb2djeQnr8IDkqYnLTlqMX7JfIAHeoOI5P3HmDSXRJv+8WC5BoQtZSv++SdhJMMgAbGSISDy1YEPYFzdJ91BhJL5Dv020sw6VdgdEMd9zfrTallERIE4ieWB2VDj+GALE1F3BtHKB0N209E/Js6Dyt28H+fNzbtXBhExIGaqiIHaetDLY/LAIHo5STtcs2+I8ZgNXtdLtqYadiY1NfXMsGEFob+QTkQEiIPwdJEvD7zX29Qj2jQ9qIqk087c1X8XzGBRL3pX9u3khZ2rsfOovyqgF8m8eIFYSjAjahxvLKdzsr2CaslK2p/rJ1BFP0ZXHvE4gJCxOsXgK4rIA7PiAkJYcidyHp1DqTufsi6ooqTQXREL+Xj8gY5PFdxRQWQM8kABi8igeIDYS+zItRX+Pm3NBwbVlVF0sSWHm8f/Ut8d40pTkJqIDgvzWUT+pByIhXCvkPPIpG78yij2w7K6/7PFiJrIe3QafjsXj266+Z1M3uld1jiB9B1L/m0uZVaWKQaClegtyM05nUf8ll1asr9Oihv5IhlCvfneWB4Y7WQ4HRhVhrN77DJ0dx75n4y8M/dGEukDvjyjFEhaSUka8moMdeMb2I9J92+vU/Jn5EToj8NQzp4fv/8FkEBwknkjFyjHyU7l5aWyg8Jx4E+3FyoEokevsOgezkjvyv46I1bkRKZR/m9RJI/7qct6ie3+0z1KLrmf0TwmF58bcr/GKwNiJ3t50ApdiBoVWQsP8Xjdjt60X6PC9vNsHrQmWxPlcaa5yPpDOeF4ii6Ugrxh8/LoqLCMzpw8UMYk5u9VBgQj3xup0LHAyshH1BIGElDB2dL1iybyCnVZWziu2GbGPDheTi4UQTt/hkJwhioWjg0rrXngq1eVADEityB0AuPNqCdkCQN5XRX/l0oAb43s+BEoSBmpDg/MzO/xMJkSyoCX0badwFMGMvKrlQCxlSPOuL9L3XjM87GqqrJIWUPlGikec6nLmiiYvqB8rxKXKJC+95KLhMIA6DwKlo4yo46WB138+DD2+QRCQP5TpRhxA9WFEtp0QESpojUJuwuokHIPl0GZF45A7iVNR35fhsNI8NVoGCVcJPEHV8NVaIn8RbWonSrubjQY6CKApI4fo9OKO8m4MZYJO5kFTDjlahHhyV3MF7KBODwofaxOqhD3U87HY6ECkb8YVQMSpPy9nDV+mfl2C+j8iGFSlpeXN+wBVt4kP6Sz7hVLn/ABQVoFWbeVy78Ke75/tgf+zx1UU7pYPSmZsu7FSTHhyPrl0yl4QmllUP1AjMv1qAIgGEIgur0c8UdiZWl4B8pM2fdDMNEbcTuWFs6ugCgkL1wDoWJ04ov55P9TFQAx8fsQccuahKR3RSokDI9pim7JQn6ECb+LUl15hFuVWsB4W6tDkQmxVnIfzV02DlcExISKBxUJrwkml9BVmT2Kb8sOfGG9w4pnADf39gzGmFPq6/bUM1K6SlN4a+moMlkDqERRkvHo56f8jAVx3JnVDDJerjOhDO8ZJiLMyJXa4pvCn+tFUys8CeznC8mF463TCk16jDkhwhMHneJdTZZAHlg9LLdMVgKcvzqFpm8UNO8O/W1S8fiW5WOVXo7v/qxp1tUhY15WJvvnU/iz7w50FZBRScVjBIXi9ELgaj0d9z0W3B6K0XF4QFxIgMykMndqPm4sm+5Mbf8om/MFM+kOFAzL8cPZ/FxAKK0HMnC4QKwoTMhvgQG587/UBPK93r3/mO1tr/h5794Y1/cH0lXkYCOGgW7sSZfjv9GMAsUqRChbg0hhdQZVBsIIFxC61YHwwrMxrGcMHKUVzyPij3VMethELoMOxYnBJALyULgJyYxh2CK/WhMbFKTfOdJZRmNcywdkVe/UJQ+QT+he+JmgmE8AwfbCUloIVJapJGaJuDFqu6fX6VAQN+6hevuDSQPkGtXjMJiaSGAjgVQUJVhpCQCxxS4RN3nNjsvN5P/kvxdocd+iMo/2x8NA/hi1o4reIERXZVrIu4LmaaEw6rFLBAChRVlRqus9lYE81ZslH7G/c4Hezhjqd6Du6zPQ+P1eMgKxxJSN4wHyVldIW6soFWwevR9vj+lbXB/+GxO4r12zJRVxEwGE3B1igwZkInmfz6rMw9w7Up7yRhbS/ctZL66nbmwjaDb+VTICMeqjmrPYQGS6WSfBB++6ujy8j0cB6V1BfcNH75GOyBlk03d2RaWp4vKB4M4SV8Rzb2YBkZlZeRIkt9VOU3mz/8jWWCVm6q9P0k166REvdtB3tgMYO28yAsEjNVYAY4usbPBUstxQejIBqUNvNm3XK8yh8iBVQj8/LfKVR5g7G5NAR0u0DcgaXiPuCB6YSc5naE0Cq7ZuoLhKwnt1qPCjK1p/hj5vwPXtZ0xKIFZ9yNMymiKBYM3S3+YJct7k0P9KDBBg2sPmnN4j9FhMU5gzdGf9FO2+VWeFOELhodsRBSS7RfLbbInV2GpKSe/eIYd3IsWDw9+zYRFLZGhyAiG7KRhLYnSGmcgambWOnIjw1x8lDIj35x9FdvJyuhcslbwPxsAAREAI35e1tc1IOVoyZ/uBtPu7CSwKMm13S5+lm6mDwkDAEtmUnEDInFZ5+Pl7SUtSL4/Hm2Ck24jEF2sn0NndzKAIEOw18mXTkxMIuZmKFQaSpq9F3pukgx34iefRixpl3cVTIWMDAWPLnkxSICzDDv6EBWS+yYP8n0o1ZQE9LOs/guJA9GRj0O5fJSkQ3ONhGxW5Xb/XQHLog0T3+tDFwSf5DQ3bhSxOkOcreX+IUXnz9RDVO004ZBQ1wfe4wEKNAHIDxCrJC8SIKZ+zAXbxTU8sj3S612dCUCIQDKRXOpMZiFIiU8Eg0ITi8NEDh559MygZyEbVjr9VqLIUE5mYcJM+9TG/lAa9SCA/JvsYd+uSFohyIo8l2qS/T022nvRcUA4QqpbbmbxAABEFe9fXJXo3CJ28qhQtjp3FYnXWl0kMBBDxyH4H0NvwfsJwvEcPKHhBfG754Ugg+oT4WbK2RRNE5E/8W8U1r0E1uV4pkLziq4ew61RvJTMQ3GiSzeM3pALfmSgemdTg3dLPpbw4LQrI18r3HKoFBETt8qCMApo4QTzoeVyPTZVWx4oCsohjKFDyAYnMNIoLaLeZkBAcJ+mjFpZ/KO31N6OAgCPUt6J9/uMgrBCCiIzRf8WcI2bUkE461z5E6g9kRwMBO3OXIgWiix8IOexa+jDGX05md2uqmmunttUWST+HpDkayEbkRkQHwYYArSU5RLwODgBUH4eOniPzoIwjrBqjgSxEfiDxXVCAgAH9EkPEXonJmzxBH5y0Rs5mlO5oIGA46XqUQArhAMEt+hK9tHlaz5D3NFVtHnSuXV6fizGGB0ZOZNwNmcE3rK9HwwJChIgSpzc9nAibTje2b5W3N6glFgiIKt9A51e9WAYLCDAlke6v2+l0x7zmLb/6Nv0kfWT9s/8h7+dssUDug3/iKpvH6Kw5EIFYIt3fNHJCXkP0i8CQnSmq8pi2VeEweXsskBz4Tb6PsL7+KksHc4VEuL9HqRmS0e2+M9XedvvLJ+nSoPytjGmxQBZGD1SO389lASnLehGHCYR0f/WM++umgBzlKk5NUzGXSB/V85KCLklHLBDgZu2D6laxBjzMyvoKLhDg/tojVkg0kCnqOlnp1FE9gxV1ETdj3G6WHyaQrHDkMScr6xHIQEj3lx6JojtB8jgRrRPBMbJela15pbIeSRMHkH2Q3azRWWG/6pGsrELYQHBLqBXb0mowtMbsGAF1aZWt+cG3FP04RxiCYeAM3W/hAXkx7FeNy8qCbUOogEQoZPeBU4NUteanlZ5k1cIFBAT816HxKMti+VWzCCKjoQMhR2xYeCskb6q285ax5sUrlf4GGxeQq2C6FzQgs7JY5+voCCDL4AMBm6wwnjzKNbVSi7Q19z+pfPqynQvIxvin/rGEMONsv+ougshdCICAww658/ET1CkXMta8NJ4zps1cQHKgDhEgzHjWuIgFk1WgQwAEBCScRPaospONseYPXYvnt7i4gNyAuiuBMCFZ7IMMSbteiAIIb4UkU4VpGow1j7Od28fFA3sFbqieQRD4JkppjUMBBAQkHESGoJ/HxFjzojjzAZw2HauAXBFZFmlF8K+ysjKQAAFEYjPyE5F3ODDWfFO854SmcQLBlJ72KaC0yqKU1hwkQHBLOUdTI2ogjDWHkL/08AOBWTPMiIoGC6OXCLyKsdEYu6kHMRDGmr8Tv1bkNiEUEKi7caOiwWVRVgXqCTtGLLr1FymQkDWfAqFRtVYAyAswgRBKq8AYocIilwhUIK7oJjqUQEbQ1vw8FLc6IABkCtwKFZsAGYkU4qiAUE10RnWA0JsM/A+thPLrsgWAHIRbVGfZ8W+yspaNxhECiSaCDAhzQj2saqSxWwAI3PZeMvZ4JGTiZ83BkQIBRKyRcQiCyfsDqQkA/p2wYPOZEAz+/ADSjH9Fub6/zspAkVyMlDR2GiUTSZvc1PVMbP5LWL/yshCQFMhGPWsW7VcVjsbRA8HtLKW1R1azs9RY8DzdxwBx6TULAZkI8/G8SNh0OqGo4zqMCkHnqt0aOiZ0AvyRAdfoM7/9774B75da+Hjsgj3PoSzGiqMHQloSWmtdg77hs9dfKRxXPof5W/mcXirbuwfik5n11RxcfSA2xo6AiuEqeA/u22eYWHAp1GXHq7HAgNKVEBeI6DEvaFaITV+it8GvqWeW0oUoyH6Cm48Htc0Q4pad0XhigITS8WTXyRVYmcSX6OXx9BOQ3YQ0XiCg2xreNIdxeKKAMETIvqzjcJ7ahSIKx2T4FUgXLxDyPUtxNQXZ/iCKCOhchOEOvUmPj/E/uBI6D36NBbZ9xjuddHOf/NvyZpUlGgjY1GOcCKmV9POtcFMlEjUWlIJhnyogdwxPMBCCiJPqfo87gHuDnu3q34nkPDF+jbVNaW7xxe/nz+9zT5/NuSsK8UEUkKrViQZC9tDNhBGqT6P3N/s3+FDwqOXXWBsVBeovzmMY0NJncd7aqqqErxAyaAfDPTfF9bys9H5afyWi80GP8ANRNKFpflW05BMBCIElCYBQg/Vmx7U8+jGZRB8aHsw5LlwCLNeH8pK5d8TwqFpLROgAS6KBEDwGx+dmrWOcq2JklXknPw/sbdlO1m1VHDISx/Oqql5NOBCmqKd8Wlavh+nYA+FBFzf5eSyUbdOXcfGoysLxV6uqFsMAUhgHD6D7qWMBFdY96EHt/k0IR5oKmHT5rdZzOHlUZeD4eMKGjP9+bt5XZfEBmaecB1A2Y7D/IWNdZWVBuu5R2iuIUMwCQEAma538kCNK+o/D8TPhPw26Z9jm3MVlioBk9f9GKQ/w6X6t2wB6QxS0FU4oZhK736LkYRXgATa0SRrPNKdwVsHikbfN414gY4lXEI5wlC88TwGQWf0l+mqxAh5n0e8MBqC4ZG8T+JAePebvQtyqnSYEZLbEpqzRVYJCPsPUqjuIwCxj8W35Zxgwt8kFMgs41HfcVqh0fexuNBgMPUoikWlDmbLgJ2h5+BoFeGwTGRsw7pGfzXqksOybccuEgYwnXkrEhbmLmVp62bKR8+4gCclcIYWkSpyvhAc4pLy0HuyUniQ7Ell6EHEoKKG5ITRYg7s6tTi/zxf9IxTQq7l5+TxACOWUQX2VOmj4/M0jV5CP9J6qKgU2pA/pQitIIYNw8A/U1vWdcvOLmVdQh4Lhdqx6ISCkh1jJSaN/zEMn9+GM5QFCPMOsyL9JHTSIL3IXBvLNWMXx+WkXxcOQI28X1ROrkIeCYbEL8bjBPUh57SCuhz6aUCh8KmsFjo8kgpGR88afGcRC+aIStzdLAQ+QUDzfTPMwgBT2UMk9PpPQh4Ih0bkwMad3RPTqGA4e5j3z543MKsTLCr9akZe7lvg7XcwqiAhDCP+LVv3Gwp+NXDu+zz19limKQxR4veCU8sHnDCEplX4I7oi9KoSCYTmMiWmsqDknZePJBzxoc5RdvYPwffILeIGMIxOOqRILwdBTJ0ujeRhWST2i7Q36BGf/FZVmAjYL8QBTezdE3NsK0krMXxFzz6nguX/Bw4P0poZXDUpQxfA34Ika2AIc39m/EU9cMVXBd1UaTC68QH4Qk3pfS64OLi/nrs2DBLze4WAN3ZMgICBZ3h0BxCDpZPsJDzHGvFMdHEGfoIuFkZq2KyKNRFY2+DIeGd8fzgdkGI7rQDCiHEhq3zyFPECnzsJIHoZF4t1ZS5ki7Wz1zmc9IsgDtMhtieKRK3TvGf25gXwfOGDzEgLkS5B8iuJh+HdwOrPQrv703TSP5T9VjYdbkAd1PvGASB4iPudm3jCkQIQlKiAgAFliiJEfCPeLDHiMicxVnD0nVAchZAZ5PXdG8hB7KDwprSwQhqxIAJALYItZLA8qFCni69dlioLHv/SpyMMpvEBeZuexRhf0qZKidIbxhSGEO7D6izP580b+7C4VgVwnNdNOA5dc4e0G0g2k29n9z65UEYdI0gRbSJaeS98bnZW7edjw1ULp8oiokS8MYWW5+o89k782L0MFIB+SbaNdn3ICyeGbmzXtThrHVpXHkacJLxAQpf8920rPl/IMcrmAgJxg6qD+MSl5xEBIzXO6gpOH4V/e5jwueuoUpuq+5RN1ediEeVSQlRB/6k8ifFdJbaOxPMiI8AsQHZbNyruNWHBUW8pmSUCG9Y0UuQZ9roFHXuY4XPKTlLeZft1OdXEEjc3CQLaTV/UPgMegM+PX5r0otTMXj40QiYgw2L9q+G15BYVGJp21bBBP8l0ciKkEc5md4oP3J5D7Ynfw8TD0DI6xIr2YLHtRr6DaIqKwekBrxt/l5y5+ZJxcRXEHR3mqMFROH94n/9W8grtI869QZZlKgOC4RfAMl/fIEt99Bn75LGoI/LTHQtpK/RPcRBQWtgQUjxVuC5kf2yXHVVEcpBCI0+whmJhIMnqX2SIUoe8T4GFofJu9Q3olU/Twr5da9bCeaq4/ZVVFYeknxbX3dmTkIskDXXLLRv9s5GZ2lTEvHqNuIVQWtVL0rjQu9UUe2zK5QgiIAXzqroAZlUuZqTH+rZK11ZGSDlJOqaCwqLRivw8U5/PmrJg3PKKW+GqoGoIbM1bk5vNXQ2R4WUanmVJf5QSgqLGwb5DmYIYgD8O5SXQjvG7IwwyPJ92SeXSUHLG5D3d3ZMfP46wID9Db4L8QX5J1DvHcCYcqtaqqjAxD+ku2RfLcXqcDI0eLl5eYIrQXWUPfaxARkK3764/er2RwbLou+RlaS0qoKL67wxZ3J1ajCJBKiEPLxlZV5S6b00dyNURBHGK04lZKe3ns9EKZSnhYRY1iQAwggcjUPPxdciLBU8zKsMW/RG6K8ABBLKxTXFaHfV+UuSxLGu18UYP4p3Ck3Dnkhj8sk76U1RHf2HGY/qqjG7EBoU7AhTUASFacH1eByuj0lIOj2vSeCt4UVpSMYXAc3yKztzSsqTrK0Xq8GNhiNHsdJCB3FYxcm39mbP985ECohWLFnSUlr5HGWgKPuUwacbnsXaCnGPfK3dEcFw9vvZhFf5t/lrWvZX9bTXtN2/4WI45M4i3hWhxkz36xOI5tTGB+XsHESlvH/ZRRbw7pLmXiEFsg4MCQSo4H7mtrCISlyf3rJAVCtY1WiOFY1BW2H0qG0WR39DiJ9dHc0YjWgIBoieM4BF9bIFpsviQFUuT3fyZM419n0NZjE7V/c4/8J+nLBnFhR2NcNazDYjxuHOceWHaxIRArDZakBDJCLCbsuXs2jWMAvYunn5JRPrbm8vLm+PRVbbcYEFBI3xmjsNoC3FKTfECMblJjYfw4Fv7QH8aB4yeBJbkvmAixihl06viW2BCkJhBQj0hcQIy1DQHiQ1XKr6v6ReDA6SmMkvoYoTfy3hRVWIM5k4r8PFAQiQdISzVxSZOIKJ0bh/4qrav8q1hWcoEfxRxGCWIW41HxGqiiRd+lOyAkliQCYgNXtIm4iX/lshyv0TRKNzxHxPSYyWQ2m624zUQtmglq87gsxoNqNDk/PeouvYI8Ag2+pAFCr+QhHJXbj3P6hVJWMz7BXSWM2PC0kudB2vevKvOwi/L42s+5g61GGEjAnSxAqukL+u/TZLOiJwTjd6/k3BkKOR6kktg2p9lsMplIIBaTB0z6lL5jRCUeVL/Flujb1DWIADmcJEDCVwQ+WVt/uGrGK4vu/uzK8XAA2O/gcwHOYvxAv1qHt0ktgdCdiv5VsZmIgJhcSgog1eELat7n55DXCBqEVHNmfabEN3ADdhsvc9aUv99vcakhCDKzrgxIxGW2boqmMXvKc8J+IVWkUqv5xyvKo4e6bo4zVp2iQNqSAEhL1DXt6sdoquNjijfO7WF/7yLnb6B2Eg5QB4gojwrq4kdwXGiDKJD22qPGRANpirmqtN/p5y6Y23Mz9nqrObtpPvErzWrJ7zER5UF5GdxTZsSBgOTvfl8igbQE5IibNwWG4uQEBfpqG12l4bzOdqm32WTRJQxIkywg3EsEX+lXJWRvkehf8Z2NVyvjRlsSBMQbCEBYIgwRtCfl1oryyBHkIZI4iTYn1oQAccsEwpeAu049igUJjT9oHg/x3ayuGsaHDy2QdplAmiJ/PGj0tlzcX1vjbHqOHojlS1x8vsPPExDKiAzhpn9TkC+QQMBIczhqqa1pYrstP6bVxTU0PMTziVQBRPD04aA8ixk4qzIQd4NsHoH9be127u/QAcBuJO7vETEc99NNlNsD1U02t+WSl9P9sMq824tqArFWB+BKuh+ZsyVaj3qePm5hIyuZXt3edtEbFeftl3lPLeoBsQagyy66iLUcsiER23KAYRup/VvHb3AUOZra3Faj5Ax8tPjUAoKARyDg2onCkLSYpJU//F2ZAt5IzX4qKyIvEo4vu5WSYB6E7IBvSEQbRrfRKeq9N8Xjvfb9Vp88z9KqChBjNSIggSG7IRsS0f6rq3Qy9CCaGzqrChB3AJl4imHuxtWJuVeL6L690iGobsioAhBvAKGkMXNID8Y/NdniEXF2mal1O/cgux+3CkBqYDNoPXTCcO5Ys6vR1N3T05Pzj3RtK1695RRpT8yh9ePg7R97bjpOHTqQhgBIkwpAYFiQtLTWU4bsY/UAQZTod4Y+uAjbqRcy77Lv+fBbY6ZPXceyDYda4bHRIQeii+PqDhxyZHtc9SasR1BymA09Uy4r9nazhSvnewfTM0+381xDN4HGk+2IG40POZBLirTSiXMff2rqkSxLJtPPa+I6ZepKcD+n/ip93IJ/aIfopXSbXMcMJw4oBWJFDkSej3Uo+9hHjViPbAlplMkHR8gPzgXVVcVVeiKw//RGGVfU3ejKdhySDcSCHIjkYLU122XqUS4hveXfJLNNyCY4FfluZoigf+cr8q8Kazwmb7W0IAcixes9YDhWj/XEK4ze8vsr038lvXQu1Et9Y28p8ztfvqH4wro/zj4k1bZ4UQMRT/Meajb1wJGFn4XaH3dvkJjhcvLv/dh2X5EfAg56qXya3Yo2MpQE5NJZkfc/kv37HojySmgjg99fPFF84IP1FK+bu2RMuH9v6AwoV1cvnv8KII1DdCLtlAeyG3tgS8VG1oPsWiPcUXeYx7natqSfHzoOsE6aDyEr5IoD0YnE6AdMPUgkZyjraZ5+9sKHfKkSzq3O5TP27mb//M4cuFeXjapGJQrEKFKzTUPEg5Btn01mdwwXb8mcaozJJHL5uq/cvW8w+yf3bbwf+sUZhHbx6NAB8Ylpy/oehLLr7n3HI/u433lm4ADWJt6zUb7urhnbPxtzOuInti5ZiOTaHGgqVGJARHsabvagFf3GyvPR3fWTitevWr4gZeCQRTk5i2bMyMnZsfHu7UvuG7p7cPQr//EHixBdVz2/B9xgRAdEQo63uQe55Oyc5Jcvx4du34bskrAjiLrlUuJTWKAq3qOC3Pi66G05NIq+noHycrpPCGxyM6IDclRatsRjUoNJzyszrr5cJM5idtdnO/QorwNzOQQidrsXRwdEcu/3oWPdPSrJwh1Xh75WenpwLInzr+28mtNRjvj9G88JxuqX42y4hgSEEEezqUdN+fGujudzNm6/umT7jpxFNzp26cvRvyfWKBYSBuLdkwBDZYVjRIenvrvnOyom102zeG4RcbO1LyBfWh3HTN8xFli9R2r23YcWiIRdwTxr5US2x2XCbnkSja7sm6dk1HPR7w+Jr7chrdVwrrnx1tNimMnluXmiVf4No99BZYTU83PK4DnmakzuNUN1n5xoVVxJDxxVYUubDnIH6QGyEaj5o0ZTd7JQaPyo+ZzhBIweoP3qbPrcH0AkaQdaTzhuZje7Pvp9dzemJoJ6V3O24QTMRiyyKxvKXnUpFcOWhoAKQuA5dOqEw3DznOeY51jzx/WfNv7eZDJhCklh3SZTIyHEsz/mOZd97qbBceIUZATQl4fUEq6xLZBgSUsj/jlwgPz3QOuR1gOtrYcOmQ8R/xL/aW09YCb+Jb+bRvwLXqy6tMMaryGxycFbE9BEQFu14Li6QIigvUl77rzaKoirDwTHL9VWa8+eQ1lZoE6Cl7Xp03ixXQMQue8A+gx4ufvUfW5NdYVo7Pfi0EXBaA2f+6wGI1CNggaudMSfz1LT8LdMo8F2VIfjSQSETKlY3c6/TRg1Fm8QRyZxzX7XWff/bVkUe02LD0crcR9XQayUs5f/JoxG21Ejjl5SoPwWn8V2+LsM43AbMpuBBggIUryWtvbvnqmvrnFb1YIBFwitwbwXbd8Nu1Ld3ub2GnG1JQXJbzVesrQ1NdzCi6IlAShQArlFlViCFoVqQCgBwxb31ziTNzNZ3VTT5j7q9enwJJAUFd/L6LNe3G9rr06SRWNvt+23WL3GpOCQECBhy++71OJuO9vU1KA2m4aGJnI5XEyS5ZAsQNgKTWf0ei+1XHTXtp1tPwx98Vyurm5vt7W53S0tl7y/1iUrhSQCErt6dD6f9WiLez8ptbU2Ww0p7U5nEyHVhNiZZdVgJ/9YTfy10+lsBy+z2WpryZ9zW45avT6jLojfcpKCa6IB0UQDogHRRAOiAdFEA6IB0UQDogHRRAOiiQZEA6KJBuTWl/8XYADnNmjWHFGctAAAAABJRU5ErkJggg=="
+ }
+ },
+ data() {
+ return {
+ isConnected: true, // 鏄惁鏈夌綉缁滆繛鎺�
+ networkType: "none", // 缃戠粶绫诲瀷
+ }
+ },
+ computed: {
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.noNetwork;
+ }
+ },
+ mounted() {
+ this.isIOS = (uni.getSystemInfoSync().platform === 'ios');
+ uni.onNetworkStatusChange((res) => {
+ this.isConnected = res.isConnected;
+ this.networkType = res.networkType;
+ });
+ uni.getNetworkType({
+ success: (res) => {
+ this.networkType = res.networkType;
+ if (res.networkType == 'none') {
+ this.isConnected = false;
+ } else {
+ this.isConnected = true;
+ }
+ }
+ });
+ },
+ methods: {
+ retry() {
+ // 閲嶆柊妫�鏌ョ綉缁�
+ uni.getNetworkType({
+ success: (res) => {
+ this.networkType = res.networkType;
+ if (res.networkType == 'none') {
+ uni.showToast({
+ title: '鏃犵綉缁滆繛鎺�',
+ icon: 'none',
+ position: 'top'
+ })
+ this.isConnected = false;
+ } else {
+ uni.showToast({
+ title: '缃戠粶宸茶繛鎺�',
+ icon: 'none',
+ position: 'top'
+ })
+ this.isConnected = true;
+ }
+ }
+ });
+ this.$emit('retry');
+ },
+ async openSettings() {
+ if (this.networkType == "none") {
+ this.openSystemSettings();
+ return;
+ }
+ },
+ openAppSettings() {
+ this.gotoAppSetting();
+ },
+ openSystemSettings() {
+ // 浠ヤ笅鏂规硶鏉ヨ嚜5+鑼冪暣锛屽闇�娣辩┒锛岃鑷鏌ラ槄鐩稿叧鏂囨。
+ // https://ask.dcloud.net.cn/docs/
+ if (this.isIOS) {
+ this.gotoiOSSetting();
+ } else {
+ this.gotoAndroidSetting();
+ }
+ },
+ network() {
+ var result = null;
+ var cellularData = plus.ios.newObject("CTCellularData");
+ var state = cellularData.plusGetAttribute("restrictedState");
+ if (state == 0) {
+ result = null;
+ } else if (state == 2) {
+ result = 1;
+ } else if (state == 1) {
+ result = 2;
+ }
+ plus.ios.deleteObject(cellularData);
+ return result;
+ },
+ gotoAppSetting() {
+ if (this.isIOS) {
+ var UIApplication = plus.ios.import("UIApplication");
+ var application2 = UIApplication.sharedApplication();
+ var NSURL2 = plus.ios.import("NSURL");
+ var setting2 = NSURL2.URLWithString("app-settings:");
+ application2.openURL(setting2);
+ plus.ios.deleteObject(setting2);
+ plus.ios.deleteObject(NSURL2);
+ plus.ios.deleteObject(application2);
+ } else {
+ var Intent = plus.android.importClass("android.content.Intent");
+ var Settings = plus.android.importClass("android.provider.Settings");
+ var Uri = plus.android.importClass("android.net.Uri");
+ var mainActivity = plus.android.runtimeMainActivity();
+ var intent = new Intent();
+ intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
+ intent.setData(uri);
+ mainActivity.startActivity(intent);
+ }
+ },
+ gotoiOSSetting() {
+ var UIApplication = plus.ios.import("UIApplication");
+ var application2 = UIApplication.sharedApplication();
+ var NSURL2 = plus.ios.import("NSURL");
+ var setting2 = NSURL2.URLWithString("App-prefs:root=General");
+ application2.openURL(setting2);
+ plus.ios.deleteObject(setting2);
+ plus.ios.deleteObject(NSURL2);
+ plus.ios.deleteObject(application2);
+ },
+ gotoAndroidSetting() {
+ var Intent = plus.android.importClass("android.content.Intent");
+ var Settings = plus.android.importClass("android.provider.Settings");
+ var mainActivity = plus.android.runtimeMainActivity();
+ var intent = new Intent(Settings.ACTION_SETTINGS);
+ mainActivity.startActivity(intent);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-no-network {
+ background-color: #fff;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ }
+
+ .u-inner {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-top: -15%;
+ }
+
+ .u-tips {
+ color: $u-tips-color;
+ font-size: 28rpx;
+ padding: 30rpx 0;
+ }
+
+ .u-error-icon {
+ width: 300rpx;
+ }
+
+ .u-to-setting {
+ color: $u-light-color;
+ font-size: 26rpx;
+ }
+
+ .u-setting-btn {
+ font-size: 26rpx;
+ color: $u-type-primary;
+ }
+
+ .u-retry {
+ margin-top: 30rpx;
+ border: 1px solid $u-tips-color;
+ color: $u-tips-color;
+ font-size: 28rpx;
+ padding: 6rpx 30rpx;
+ border-radius: 3px;
+ }
+
+ .u-retry-hover {
+ color: #fff;
+ background-color: $u-tips-color;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue"
new file mode 100644
index 0000000..5033c5e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue"
@@ -0,0 +1,272 @@
+<template>
+ <view class="u-notice-bar-wrap" v-if="isShow" :style="{
+ borderRadius: borderRadius + 'rpx',
+ }">
+ <block v-if="mode == 'horizontal' && isCircular">
+ <u-row-notice
+ :type="type"
+ :color="color"
+ :bgColor="bgColor"
+ :list="list"
+ :volumeIcon="volumeIcon"
+ :moreIcon="moreIcon"
+ :volumeSize="volumeSize"
+ :closeIcon="closeIcon"
+ :mode="mode"
+ :fontSize="fontSize"
+ :speed="speed"
+ :playState="playState"
+ :padding="padding"
+ @getMore="getMore"
+ @close="close"
+ @click="click"
+ ></u-row-notice>
+ </block>
+ <block v-if="mode == 'vertical' || (mode == 'horizontal' && !isCircular)">
+ <u-column-notice
+ :type="type"
+ :color="color"
+ :bgColor="bgColor"
+ :list="list"
+ :volumeIcon="volumeIcon"
+ :moreIcon="moreIcon"
+ :closeIcon="closeIcon"
+ :mode="mode"
+ :volumeSize="volumeSize"
+ :disable-touch="disableTouch"
+ :fontSize="fontSize"
+ :duration="duration"
+ :playState="playState"
+ :padding="padding"
+ @getMore="getMore"
+ @close="close"
+ @click="click"
+ @end="end"
+ ></u-column-notice>
+ </block>
+ </view>
+</template>
+<script>
+/**
+ * noticeBar 婊氬姩閫氱煡
+ * @description 璇ョ粍浠剁敤浜庢粴鍔ㄩ�氬憡鍦烘櫙锛屾湁澶氱妯″紡鍙緵閫夋嫨
+ * @tutorial https://www.uviewui.com/components/noticeBar.html
+ * @property {Array} list 婊氬姩鍐呭锛屾暟缁勫舰寮忥紝瑙佷笂鏂硅鏄�
+ * @property {String} type 鏄剧ず鐨勪富棰橈紙榛樿warning锛�
+ * @property {Boolean} volume-icon 鏄惁鏄剧ず灏忓枃鍙浘鏍囷紙榛樿true锛�
+ * @property {Boolean} more-icon 鏄惁鏄剧ず鍙宠竟鐨勫悜鍙崇澶达紙榛樿false锛�
+ * @property {Boolean} close-icon 鏄惁鏄剧ず鍏抽棴鍥炬爣锛堥粯璁alse锛�
+ * @property {Boolean} autoplay 鏄惁鑷姩鎾斁锛堥粯璁rue锛�
+ * @property {String} color 鏂囧瓧棰滆壊
+ * @property {String Number} bg-color 鑳屾櫙棰滆壊
+ * @property {String} mode 婊氬姩妯″紡锛堥粯璁orizontal锛�
+ * @property {Boolean} show 鏄惁鏄剧ず锛堥粯璁rue锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {String Number} volume-size 宸﹁竟鍠囧彮鐨勫ぇ灏忥紙榛樿34锛�
+ * @property {String Number} duration 婊氬姩鍛ㄦ湡鏃堕暱锛屽彧瀵规杩涙ā寮忔湁鏁堬紝妯悜琛旀帴妯″紡鏃犳晥锛屽崟浣峬s锛堥粯璁�2000锛�
+ * @property {String Number} speed 姘村钩婊氬姩鏃剁殑婊氬姩閫熷害锛屽嵆姣忕绉诲姩澶氬皯璺濈锛屽彧瀵规按骞宠鎺ユ柟寮忔湁鏁堬紝鍗曚綅rpx锛堥粯璁�160锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {Boolean} is-circular mode涓篽orizontal鏃讹紝鎸囨槑鏄惁姘村钩琛旀帴婊氬姩锛堥粯璁rue锛�
+ * @property {String} play-state 鎾斁鐘舵�侊紝play - 鎾斁锛宲aused - 鏆傚仠锛堥粯璁lay锛�
+ * @property {String Nubmer} border-radius 閫氱煡鏍忓渾瑙掞紙榛樿涓�0锛�
+ * @property {String Nubmer} padding 鍐呰竟璺濓紝瀛楃涓诧紝涓庢櫘閫氱殑鍐呰竟璺漜ss鍐欐硶涓�鐩达紙榛樿"18rpx 24rpx"锛�
+ * @property {Boolean} no-list-hidden 鍒楄〃涓虹┖鏃讹紝鏄惁鏄剧ず缁勪欢锛堥粯璁alse锛�
+ * @property {Boolean} disable-touch 鏄惁绂佹閫氳繃鎵嬪姩婊戝姩鍒囨崲閫氱煡锛屽彧鏈塵ode = vertical锛屾垨鑰卪ode = horizontal涓攊s-circular = false鏃舵湁鏁堬紙榛樿true锛�
+ * @event {Function} click 鐐瑰嚮閫氬憡鏂囧瓧瑙﹀彂锛屽彧鏈塵ode = vertical锛屾垨鑰卪ode = horizontal涓攊s-circular = false鏃舵湁鏁�
+ * @event {Function} close 鐐瑰嚮鍙充晶鍏抽棴鍥炬爣瑙﹀彂
+ * @event {Function} getMore 鐐瑰嚮鍙充晶鍚戝彸鍥炬爣瑙﹀彂
+ * @event {Function} end 鍒楄〃鐨勬秷鎭瘡娆¤鎾斁涓�涓懆鏈熸椂瑙﹀彂锛屽彧鏈塵ode = vertical锛屾垨鑰卪ode = horizontal涓攊s-circular = false鏃舵湁鏁�
+ * @example <u-notice-bar :more-icon="true" :list="list"></u-notice-bar>
+ */
+export default {
+ name: "u-notice-bar",
+ props: {
+ // 鏄剧ず鐨勫唴瀹癸紝鏁扮粍
+ list: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 鏄剧ず鐨勪富棰橈紝success|error|primary|info|warning
+ type: {
+ type: String,
+ default: 'warning'
+ },
+ // 鏄惁鏄剧ず宸︿晶鐨勯煶閲忓浘鏍�
+ volumeIcon: {
+ type: Boolean,
+ default: true
+ },
+ // 闊抽噺鍠囧彮鐨勫ぇ灏�
+ volumeSize: {
+ type: [Number, String],
+ default: 34
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫彸绠ご鍥炬爣
+ moreIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫叧闂浘鏍�
+ closeIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鑷姩鎾斁
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 鏂囧瓧棰滆壊锛屽悇鍥炬爣涔熶細浣跨敤鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: ''
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 婊氬姩鏂瑰悜锛宧orizontal-姘村钩婊氬姩锛寁ertical-鍨傜洿婊氬姩
+ mode: {
+ type: String,
+ default: 'horizontal'
+ },
+ // 鏄惁鏄剧ず
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 28
+ },
+ // 婊氬姩涓�涓懆鏈熺殑鏃堕棿闀匡紝鍗曚綅ms
+ duration: {
+ type: [Number, String],
+ default: 2000
+ },
+ // 姘村钩婊氬姩鏃剁殑婊氬姩閫熷害锛屽嵆姣忕婊氬姩澶氬皯rpx锛岃繖鏈夊埄浜庢帶鍒舵枃瀛楁棤璁哄灏戞椂锛岄兘鑳芥湁涓�涓亽瀹氱殑閫熷害
+ speed: {
+ type: [Number, String],
+ default: 160
+ },
+ // 姘村钩婊氬姩鏃讹紝鏄惁閲囩敤琛旀帴褰㈠紡婊氬姩
+ // 姘村钩琛旀帴妯″紡锛岄噰鐢ㄧ殑鏄痵wiper缁勪欢锛屾按骞虫粴鍔�
+ isCircular: {
+ type: Boolean,
+ default: true
+ },
+ // 鎾斁鐘舵�侊紝play-鎾斁锛宲aused-鏆傚仠
+ playState: {
+ type: String,
+ default: 'play'
+ },
+ // 鏄惁绂佹鐢ㄦ墜婊戝姩鍒囨崲
+ // 鐩墠HX2.6.11锛屽彧鏀寔App 2.5.5+銆丠5 2.5.5+銆佹敮浠樺疂灏忕▼搴忋�佸瓧鑺傝烦鍔ㄥ皬绋嬪簭
+ disableTouch: {
+ type: Boolean,
+ default: true
+ },
+ // 婊氬姩閫氱煡璁剧疆鍦嗚
+ borderRadius: {
+ type: [Number, String],
+ default: 0
+ },
+ // 閫氱煡鐨勮竟璺�
+ padding: {
+ type: [Number, String],
+ default: '18rpx 24rpx'
+ },
+ // list鍒楄〃涓虹┖鏃讹紝鏄惁鏄剧ず缁勪欢
+ noListHidden: {
+ type: Boolean,
+ default: true
+ }
+ },
+ computed: {
+ // 濡傛灉璁剧疆show涓篺alse锛屾垨鑰呰缃簡noListHidden涓簍rue锛屼笖list闀垮害鍙堜负闆剁殑璇濓紝闅愯棌缁勪欢
+ isShow() {
+ if(this.show == false || (this.noListHidden == true && this.list.length == 0)) return false;
+ else return true;
+ }
+ },
+ methods: {
+ // 鐐瑰嚮閫氬憡鏍�
+ click(index) {
+ this.$emit('click', index);
+ },
+ // 鐐瑰嚮鍏抽棴鎸夐挳
+ close() {
+ this.$emit('close');
+ },
+ // 鐐瑰嚮鏇村绠ご鎸夐挳
+ getMore() {
+ this.$emit('getMore');
+ },
+ // 婊氬姩涓�涓懆鏈熺粨鏉燂紝鍙鍨傜洿锛屾垨鑰呮按骞虫杩涘舰寮忔湁鏁�
+ end() {
+ this.$emit('end');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-notice-bar-wrap {
+ overflow: hidden;
+}
+
+.u-notice-bar {
+ padding: 18rpx 24rpx;
+ overflow: hidden;
+}
+
+.u-direction-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.u-left-icon {
+ display: flex;
+ align-items: center;
+}
+
+.u-notice-box {
+ flex: 1;
+ display: flex;
+ overflow: hidden;
+ margin-left: 12rpx;
+}
+
+.u-right-icon {
+ margin-left: 12rpx;
+ display: flex;
+ align-items: center;
+}
+
+.u-notice-content {
+ line-height: 1;
+ white-space: nowrap;
+ font-size: 26rpx;
+ animation: u-loop-animation 10s linear infinite both;
+ text-align: right;
+ // 杩欎竴鍙ュ緢閲嶈锛屼负浜嗚兘璁╂粴鍔ㄥ乏鍙宠繛鎺ヨ捣鏉�
+ padding-left: 100%;
+}
+
+@keyframes u-loop-animation {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-box/u-number-box.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-box/u-number-box.vue"
new file mode 100644
index 0000000..2a03441
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-box/u-number-box.vue"
@@ -0,0 +1,348 @@
+<template>
+ <view class="u-numberbox">
+ <view class="u-icon-minus" @touchstart.stop.prevent="btnTouchStart('minus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal <= min }"
+ :style="{
+ background: bgColor,
+ height: inputHeight + 'rpx',
+ color: color
+ }">
+ <u-icon name="minus" :size="size"></u-icon>
+ </view>
+ <input :disabled="disabledInput || disabled" :cursor-spacing="getCursorSpacing" :class="{ 'u-input-disabled': disabled }"
+ v-model="inputVal" class="u-number-input" @blur="onBlur"
+ type="number" :style="{
+ color: color,
+ fontSize: size + 'rpx',
+ background: bgColor,
+ height: inputHeight + 'rpx',
+ width: inputWidth + 'rpx'
+ }" />
+ <view class="u-icon-plus" @touchstart.stop.prevent="btnTouchStart('plus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal >= max }"
+ :style="{
+ background: bgColor,
+ height: inputHeight + 'rpx',
+ color: color
+ }">
+ <u-icon name="plus" :size="size"></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * numberBox 姝ヨ繘鍣�
+ * @description 璇ョ粍浠朵竴鑸敤浜庡晢鍩庤喘鐗╅�夋嫨鐗╁搧鏁伴噺鐨勫満鏅�傛敞鎰忥細璇ヨ緭鍏ユ鍙兘杈撳叆澶т簬鎴栫瓑浜�0鐨勬暣鏁帮紝涓嶆敮鎸佸皬鏁拌緭鍏�
+ * @tutorial https://www.uviewui.com/components/numberBox.html
+ * @property {Number} value 杈撳叆妗嗗垵濮嬪�硷紙榛樿1锛�
+ * @property {String} bg-color 杈撳叆妗嗗拰鎸夐挳鐨勮儗鏅鑹诧紙榛樿#F2F3F5锛�
+ * @property {Number} min 鐢ㄦ埛鍙緭鍏ョ殑鏈�灏忓�硷紙榛樿0锛�
+ * @property {Number} max 鐢ㄦ埛鍙緭鍏ョ殑鏈�澶у�硷紙榛樿99999锛�
+ * @property {Number} step 姝ラ暱锛屾瘡娆″姞鎴栧噺鐨勫�硷紙榛樿1锛�
+ * @property {Boolean} disabled 鏄惁绂佺敤鎿嶄綔锛岀鐢ㄥ悗鏃犳硶鍔犲噺鎴栨墜鍔ㄤ慨鏀硅緭鍏ユ鐨勫�硷紙榛樿false锛�
+ * @property {Boolean} disabled-input 鏄惁绂佹杈撳叆妗嗘墜鍔ㄨ緭鍏ュ�硷紙榛樿false锛�
+ * @property {Boolean} positive-integer 鏄惁鍙兘杈撳叆姝f暣鏁帮紙榛樿true锛�
+ * @property {String | Number} size 杈撳叆妗嗘枃瀛楀拰鎸夐挳瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�26锛�
+ * @property {String} color 杈撳叆妗嗘枃瀛楀拰鍔犲噺鎸夐挳鍥炬爣鐨勯鑹诧紙榛樿#323233锛�
+ * @property {String | Number} input-width 杈撳叆妗嗗搴︼紝鍗曚綅rpx锛堥粯璁�80锛�
+ * @property {String | Number} input-height 杈撳叆妗嗗拰鎸夐挳鐨勯珮搴︼紝鍗曚綅rpx锛堥粯璁�50锛�
+ * @property {String | Number} index 浜嬩欢鍥炶皟鏃剁敤浠ュ尯鍒嗗綋鍓嶅彂鐢熷彉鍖栫殑鏄摢涓緭鍏ユ
+ * @property {Boolean} long-press 鏄惁寮�鍚暱鎸夎繛缁�掑鎴栭�掑噺(榛樿true)
+ * @property {String | Number} press-time 寮�鍚暱鎸夎Е鍙戝悗锛屾瘡瑙﹀彂涓�娆¢渶瑕佸涔咃紝鍗曚綅ms(榛樿250)
+ * @property {String | Number} cursor-spacing 鎸囧畾鍏夋爣浜庨敭鐩樼殑璺濈锛岄伩鍏嶉敭鐩橀伄鎸¤緭鍏ユ锛屽崟浣峳px锛堥粯璁�200锛�
+ * @event {Function} change 杈撳叆妗嗗唴瀹瑰彂鐢熷彉鍖栨椂瑙﹀彂锛屽璞″舰寮�
+ * @event {Function} blur 杈撳叆妗嗗け鍘荤劍鐐规椂瑙﹀彂锛屽璞″舰寮�
+ * @event {Function} minus 鐐瑰嚮鍑忓皯鎸夐挳鏃惰Е鍙�(鎸夐挳鍙偣鍑绘儏鍐典笅)锛屽璞″舰寮�
+ * @event {Function} plus 鐐瑰嚮澧炲姞鎸夐挳鏃惰Е鍙�(鎸夐挳鍙偣鍑绘儏鍐典笅)锛屽璞″舰寮�
+ * @example <u-number-box :min="1" :max="100"></u-number-box>
+ */
+ export default {
+ name: "u-number-box",
+ props: {
+ // 棰勬樉绀虹殑鏁板瓧
+ value: {
+ type: Number,
+ default: 1
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#F2F3F5'
+ },
+ // 鏈�灏忓��
+ min: {
+ type: Number,
+ default: 0
+ },
+ // 鏈�澶у��
+ max: {
+ type: Number,
+ default: 99999
+ },
+ // 姝ヨ繘鍊硷紝姣忔鍔犳垨鍑忕殑鍊�
+ step: {
+ type: Number,
+ default: 1
+ },
+ // 鏄惁绂佺敤鍔犲噺鎿嶄綔
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // input鐨勫瓧浣撳ぇ灏忥紝鍗曚綅rpx
+ size: {
+ type: [Number, String],
+ default: 26
+ },
+ // 鍔犲噺鍥炬爣鐨勯鑹�
+ color: {
+ type: String,
+ default: '#323233'
+ },
+ // input瀹藉害锛屽崟浣峳px
+ inputWidth: {
+ type: [Number, String],
+ default: 80
+ },
+ // input楂樺害锛屽崟浣峳px
+ inputHeight: {
+ type: [Number, String],
+ default: 50
+ },
+ // index绱㈠紩锛岀敤浜庡垪琛ㄤ腑浣跨敤锛岃鐢ㄦ埛鐭ラ亾鏄摢涓猲umberbox鍙戠敓浜嗗彉鍖栵紝涓�鑸娇鐢╢or寰幆鍑烘潵鐨刬ndex鍊煎嵆鍙�
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏄惁绂佺敤杈撳叆妗嗭紝涓巇isabled浣滅敤浜庤緭鍏ユ鏃讹紝涓篛R鐨勫叧绯伙紝鍗虫兂瑕佺鐢ㄨ緭鍏ユ锛屽張鍙互鍔犲噺鐨勮瘽
+ // 璁剧疆disabled涓篺alse锛宒isabledInput涓簍rue鍗冲彲
+ disabledInput: {
+ type: Boolean,
+ default: false
+ },
+ // 杈撳叆妗嗕簬閿洏涔嬮棿鐨勮窛绂�
+ cursorSpacing: {
+ type: [Number, String],
+ default: 100
+ },
+ // 鏄惁寮�鍚暱鎸夎繛缁�掑鎴栭�掑噺
+ longPress: {
+ type: Boolean,
+ default: true
+ },
+ // 寮�鍚暱鎸夎Е鍙戝悗锛屾瘡瑙﹀彂涓�娆¢渶瑕佸涔�
+ pressTime: {
+ type: [Number, String],
+ default: 250
+ },
+ // 鏄惁鍙兘杈撳叆澶т簬鎴栫瓑浜�0鐨勬暣鏁�(姝f暣鏁�)
+ positiveInteger: {
+ type: Boolean,
+ default: true
+ }
+ },
+ watch: {
+ value(v1, v2) {
+ // 鍙湁value鐨勬敼鍙樻槸鏉ヨ嚜澶栭儴鐨勬椂鍊欙紝鎵嶅幓鍚屾inputVal鐨勫�硷紝鍚﹀垯浼氶�犳垚寰幆閿欒
+ if(!this.changeFromInner) {
+ this.inputVal = v1;
+ // 鍥犱负inputVal鍙樺寲鍚庯紝浼氳Е鍙憈his.handleChange()锛屽湪鍏朵腑changeFromInner浼氬啀娆¤璁剧疆涓簍rue锛�
+ // 閫犳垚澶栭潰淇敼鍊硷紝涔熷鑷磋璁や负鏄唴閮ㄤ慨鏀圭殑娣蜂贡锛岃繖閲岃繘琛宼his.$nextTick寤舵椂锛屼繚璇佸湪杩愯鍛ㄦ湡鐨勬渶鍚庡
+ // 灏哻hangeFromInner璁剧疆涓篺alse
+ this.$nextTick(function(){
+ this.changeFromInner = false;
+ })
+ }
+ },
+ inputVal(v1, v2) {
+ // 涓轰簡璁╃敤鎴疯兘澶熷垹闄ゆ墍鏈夎緭鍏ュ�硷紝閲嶆柊杈撳叆鍐呭锛屽垹闄ゆ墍鏈夊�煎悗锛屽唴瀹逛负绌哄瓧绗︿覆
+ if (v1 == '') return;
+ let value = 0;
+ // 棣栧厛鍒ゆ柇鏄惁鏁板�硷紝骞朵笖鍦╩in鍜宮ax涔嬮棿锛屽鏋滀笉鏄紝浣跨敤鍘熸潵鍊�
+ let tmp = this.$u.test.number(v1);
+ if (tmp && v1 >= this.min && v1 <= this.max) value = v1;
+ else value = v2;
+ // 鍒ゆ柇鏄惁鍙兘杈撳叆澶т簬绛変簬0鐨勬暣鏁�
+ if(this.positiveInteger) {
+ // 灏忎簬0锛屾垨鑰呭甫鏈夊皬鏁扮偣锛�
+ if(v1 < 0 || String(v1).indexOf('.') !== -1) {
+ value = v2;
+ // 鍙屽悜缁戝畾input鐨勫�硷紝蹇呴』瑕佷娇鐢�$nextTick淇敼鏄剧ず鐨勫��
+ this.$nextTick(() => {
+ this.inputVal = v2;
+ })
+ }
+ }
+ // 鍙戝嚭change浜嬩欢
+ this.handleChange(value, 'change');
+ }
+ },
+ data() {
+ return {
+ inputVal: 1, // 杈撳叆妗嗕腑鐨勫�硷紝涓嶈兘鐩存帴浣跨敤props涓殑value锛屽洜涓哄簲璇ユ敼鍙榩rops鐨勭姸鎬�
+ timer: null, // 鐢ㄤ綔闀挎寜鐨勫畾鏃跺櫒
+ changeFromInner: false, // 鍊煎彂鐢熷彉鍖栵紝鏄潵鑷唴閮ㄨ繕鏄閮�
+ };
+ },
+ created() {
+ this.inputVal = Number(this.value);
+ },
+ computed: {
+ getCursorSpacing() {
+ // 鍏堝皢鍊艰浆涓簆x鍗曚綅锛屽啀杞负鏁板��
+ return Number(uni.upx2px(this.cursorSpacing));
+ }
+ },
+ methods: {
+ // 鐐瑰嚮閫�鏍奸敭
+ btnTouchStart(callback) {
+ // 鍏堟墽琛屼竴閬嶆柟娉曪紝鍚﹀垯浼氶�犳垚鏉惧紑鎵嬫椂锛屽氨鎵ц浜哻learTimer锛屽鑷存棤娉曞疄鐜板姛鑳�
+ this[callback]();
+ // 濡傛灉娌″紑鍚暱鎸夊姛鑳斤紝鐩存帴杩斿洖
+ if (!this.longPress) return;
+ clearInterval(this.timer); //鍐嶆娓呯┖瀹氭椂鍣紝闃叉閲嶅娉ㄥ唽瀹氭椂鍣�
+ this.timer = null;
+ this.timer = setInterval(() => {
+ // 鎵ц鍔犳垨鍑忓嚱鏁�
+ this[callback]();
+ }, this.pressTime);
+ },
+ clearTimer() {
+ this.$nextTick(() => {
+ clearInterval(this.timer);
+ this.timer = null;
+ })
+ },
+ minus() {
+ this.computeVal('minus');
+ },
+ plus() {
+ this.computeVal('plus');
+ },
+ // 涓轰簡淇濊瘉灏忔暟鐩稿姞鍑忓嚭鐜扮簿搴︽孩鍑虹殑闂
+ calcPlus(num1, num2) {
+ let baseNum, baseNum1, baseNum2;
+ try {
+ baseNum1 = num1.toString().split('.')[1].length;
+ } catch (e) {
+ baseNum1 = 0;
+ }
+ try {
+ baseNum2 = num2.toString().split('.')[1].length;
+ } catch (e) {
+ baseNum2 = 0;
+ }
+ baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
+ let precision = baseNum1 >= baseNum2 ? baseNum1 : baseNum2; //绮惧害
+ return ((num1 * baseNum + num2 * baseNum) / baseNum).toFixed(precision);
+ },
+ // 涓轰簡淇濊瘉灏忔暟鐩稿姞鍑忓嚭鐜扮簿搴︽孩鍑虹殑闂
+ calcMinus(num1, num2) {
+ let baseNum, baseNum1, baseNum2;
+ try {
+ baseNum1 = num1.toString().split('.')[1].length;
+ } catch (e) {
+ baseNum1 = 0;
+ }
+ try {
+ baseNum2 = num2.toString().split('.')[1].length;
+ } catch (e) {
+ baseNum2 = 0;
+ }
+ baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
+ let precision = baseNum1 >= baseNum2 ? baseNum1 : baseNum2;
+ return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
+ },
+ computeVal(type) {
+ uni.hideKeyboard();
+ if (this.disabled) return;
+ let value = 0;
+ // 鍑�
+ if (type === 'minus') {
+ value = this.calcMinus(this.inputVal, this.step);
+ } else if (type === 'plus') {
+ value = this.calcPlus(this.inputVal, this.step);
+ }
+ // 鍒ゆ柇鏄惁灏忎簬鏈�灏忓�煎拰澶т簬鏈�澶у��
+ if (value < this.min || value > this.max) {
+ return;
+ }
+ this.inputVal = value;
+ this.handleChange(value, type);
+ },
+ // 澶勭悊鐢ㄦ埛鎵嬪姩杈撳叆鐨勬儏鍐�
+ onBlur(event) {
+ let val = 0;
+ let value = event.detail.value;
+ // 濡傛灉涓洪潪0-9鏁板瓧缁勬垚锛屾垨鑰呭叾绗竴浣嶆暟鍊间负0锛岀洿鎺ヨ鍏剁瓑浜巑in鍊�
+ // 杩欓噷涓嶇洿鎺ュ垽鏂槸鍚︽鏁存暟锛屾槸鍥犱负鐢ㄦ埛浼犻�掔殑props min鍊煎彲鑳戒负0
+ if (!/(^\d+$)/.test(value) || value[0] == 0) val = this.min;
+ val = +value;
+ if (val > this.max) {
+ val = this.max;
+ } else if (val < this.min) {
+ val = this.min;
+ }
+ this.$nextTick(() => {
+ this.inputVal = val;
+ })
+ this.handleChange(val, 'blur');
+ },
+ handleChange(value, type) {
+ if (this.disabled) return;
+ // 鍙戝嚭input浜嬩欢锛屼慨鏀归�氳繃v-model缁戝畾鐨勫�硷紝杈惧埌鍙屽悜缁戝畾鐨勬晥鏋�
+ this.changeFromInner = true;
+ this.$emit('input', Number(value));
+ this.$emit(type, {
+ // 杞负Number绫诲瀷
+ value: Number(value),
+ index: this.index
+ })
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-numberbox {
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .u-number-input {
+ position: relative;
+ text-align: center;
+ padding: 0;
+ margin: 0 6rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .u-icon-plus,
+ .u-icon-minus {
+ width: 60rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .u-icon-plus {
+ border-radius: 0 8rpx 8rpx 0;
+ }
+
+ .u-icon-minus {
+ border-radius: 8rpx 0 0 8rpx;
+ }
+
+ .u-icon-disabled {
+ color: #c8c9cc !important;
+ background: #f7f8fa !important;
+ }
+
+ .u-input-disabled {
+ color: #c8c9cc !important;
+ background-color: #f2f3f5 !important;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue"
new file mode 100644
index 0000000..970ae6c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue"
@@ -0,0 +1,158 @@
+<template>
+ <view class="u-keyboard" @touchmove.stop.prevent>
+ <view class="u-keyboard-grids">
+ <view
+ class="u-keyboard-grids-item"
+ :class="[btnBgGray(index) ? 'u-bg-gray' : '', index <= 2 ? 'u-border-top' : '', index < 9 ? 'u-border-bottom' : '', (index + 1) % 3 != 0 ? 'u-border-right' : '']"
+ :style="[itemStyle(index)]"
+ v-for="(item, index) in numList"
+ :key="index"
+ :hover-class="hoverClass(index)"
+ :hover-stay-time="100"
+ @tap="keyboardClick(item)">
+ <view class="u-keyboard-grids-btn">{{ item }}</view>
+ </view>
+ <view class="u-keyboard-grids-item u-bg-gray" hover-class="u-hover-class" :hover-stay-time="100" @touchstart.stop="backspaceClick"
+ @touchend="clearTimer">
+ <view class="u-keyboard-back u-keyboard-grids-btn">
+ <u-icon name="backspace" :size="38" :bold="true"></u-icon>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ // 閿洏鐨勭被鍨嬶紝number-鏁板瓧閿洏锛宑ard-韬唤璇侀敭鐩�
+ mode: {
+ type: String,
+ default: 'number'
+ },
+ // 鏄惁鏄剧ず閿洏鐨�"."绗﹀彿
+ dotEnabled: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鎵撲贡閿洏鎸夐敭鐨勯『搴�
+ random: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ backspace: 'backspace', // 閫�鏍奸敭鍐呭
+ dot: '.', // 鐐�
+ timer: null, // 闀挎寜澶氭鍒犻櫎鐨勪簨浠剁洃鍚�
+ cardX: 'X' // 韬唤璇佺殑X绗﹀彿
+ };
+ },
+ computed: {
+ // 閿洏闇�瑕佹樉绀虹殑鍐呭
+ numList() {
+ let tmp = [];
+ if (!this.dotEnabled && this.mode == 'number') {
+ if (!this.random) {
+ return [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
+ } else {
+ return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);
+ }
+ } else if (this.dotEnabled && this.mode == 'number') {
+ if (!this.random) {
+ return [1, 2, 3, 4, 5, 6, 7, 8, 9, this.dot, 0];
+ } else {
+ return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, this.dot, 0]);
+ }
+ } else if (this.mode == 'card') {
+ if (!this.random) {
+ return [1, 2, 3, 4, 5, 6, 7, 8, 9, this.cardX, 0];
+ } else {
+ return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, this.cardX, 0]);
+ }
+ }
+ },
+ // 鎸夐敭鐨勬牱寮忥紝鍦ㄩ潪涔卞簭&&鏁板瓧閿洏&&涓嶆樉绀虹偣鎸夐挳鏃讹紝index涓�9鏃讹紝鎸夐敭鍗犱綅涓や釜绌洪棿
+ itemStyle() {
+ return index => {
+ let style = {};
+ if (this.mode == 'number' && !this.dotEnabled && index == 9) style.flex = '0 0 66.6666666666%';
+ return style;
+ };
+ },
+ // 鏄惁璁╂寜閿樉绀虹伆鑹诧紝鍙湪闈炰贡搴�&&鏁板瓧閿洏&&涓斿厑璁哥偣鎸夐敭鐨勬椂鍊�
+ btnBgGray() {
+ return index => {
+ if (!this.random && index == 9 && (this.mode != 'number' || (this.mode == 'number' && this.dotEnabled))) return true;
+ else return false;
+ };
+ },
+ hoverClass() {
+ return index => {
+ if (!this.random && index == 9 && (this.mode == 'number' && this.dotEnabled || this.mode == 'card')) return 'u-hover-class';
+ else return 'u-keyboard-hover';
+ }
+ }
+ },
+ methods: {
+ // 鐐瑰嚮閫�鏍奸敭
+ backspaceClick() {
+ this.$emit('backspace');
+ clearInterval(this.timer); //鍐嶆娓呯┖瀹氭椂鍣紝闃叉閲嶅娉ㄥ唽瀹氭椂鍣�
+ this.timer = null;
+ this.timer = setInterval(() => {
+ this.$emit('backspace');
+ }, 250);
+ },
+ clearTimer() {
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+ // 鑾峰彇閿洏鏄剧ず鐨勫唴瀹�
+ keyboardClick(val) {
+ // 鍏佽閿洏鏄剧ず鐐规ā寮忓拰瑙﹀彂闈炵偣鎸夐敭鏃讹紝灏嗗唴瀹硅浆涓烘暟瀛楃被鍨�
+ if (this.dotEnabled && val != this.dot && val != this.cardX) val = Number(val);
+ this.$emit('change', val);
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-keyboard {
+ position: relative;
+ z-index: 1003;
+ }
+
+ .u-keyboard-grids {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .u-keyboard-grids-item {
+ flex: 0 0 33.3333333333%;
+ text-align: center;
+ font-size: 50rpx;
+ color: #333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 110rpx;
+ font-weight: 500;
+ }
+
+ .u-bg-gray {
+ background-color: $u-border-color;
+ }
+
+ .u-keyboard-back {
+ font-size: 36rpx;
+ }
+
+ .u-keyboard-hover {
+ background-color: #e7e6eb;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/handler.wxs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/handler.wxs"
new file mode 100644
index 0000000..d3b1aaa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/handler.wxs"
@@ -0,0 +1,22 @@
+var inline = {
+ abbr: 1,
+ b: 1,
+ big: 1,
+ code: 1,
+ del: 1,
+ em: 1,
+ i: 1,
+ ins: 1,
+ label: 1,
+ q: 1,
+ small: 1,
+ span: 1,
+ strong: 1,
+ sub: 1,
+ sup: 1
+}
+module.exports = {
+ use: function(item) {
+ return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/trees.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/trees.vue"
new file mode 100644
index 0000000..e1e7462
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/libs/trees.vue"
@@ -0,0 +1,501 @@
+<template>
+ <view :class="'interlayer '+(c||'')" :style="s">
+ <block v-for="(n, i) in nodes" v-bind:key="i">
+ <!--鍥剧墖-->
+ <view v-if="n.name=='img'" :class="'_img '+n.attrs.class" :style="n.attrs.style" :data-attrs="n.attrs" @tap="imgtap">
+ <rich-text v-if="ctrl[i]!=0" :nodes="[{attrs:{src:loading&&(ctrl[i]||0)<2?loading:(lazyLoad&&!ctrl[i]?placeholder:(ctrl[i]==3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]" />
+ <image class="_image" :src="lazyLoad&&!ctrl[i]?placeholder:n.attrs.src" :lazy-load="lazyLoad"
+ :show-menu-by-longpress="!n.attrs.ignore" :data-i="i" :data-index="n.attrs.i" data-source="img" @load="loadImg"
+ @error="error" />
+ </view>
+ <!--鏂囨湰-->
+ <text v-else-if="n.type=='text'" decode>{{n.text}}</text>
+ <!--#ifndef MP-BAIDU-->
+ <text v-else-if="n.name=='br'">\n</text>
+ <!--#endif-->
+ <!--瑙嗛-->
+ <view v-else-if="((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&ctrl[i]==undefined" :id="n.attrs.id" :class="'_video '+(n.attrs.class||'')"
+ :style="n.attrs.style" :data-i="i" @tap="_loadVideo" />
+ <video v-else-if="n.name=='video'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :autoplay="n.attrs.autoplay||ctrl[i]==0"
+ :controls="n.attrs.controls" :loop="n.attrs.loop" :muted="n.attrs.muted" :poster="n.attrs.poster" :src="n.attrs.source[ctrl[i]||0]"
+ :unit-id="n.attrs['unit-id']" :data-id="n.attrs.id" :data-i="i" data-source="video" @error="error" @play="play" />
+ <!--闊抽-->
+ <audio v-else-if="n.name=='audio'" :ref="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :author="n.attrs.author"
+ :autoplay="n.attrs.autoplay" :controls="n.attrs.controls" :loop="n.attrs.loop" :name="n.attrs.name" :poster="n.attrs.poster"
+ :src="n.attrs.source[ctrl[i]||0]" :data-i="i" :data-id="n.attrs.id" data-source="audio"
+ @error.native="error" @play.native="play" />
+ <!--閾炬帴-->
+ <view v-else-if="n.name=='a'" :id="n.attrs.id" :class="'_a '+(n.attrs.class||'')" hover-class="_hover" :style="n.attrs.style"
+ :data-attrs="n.attrs" @tap="linkpress">
+ <trees class="_span" c="_span" :nodes="n.children" />
+ </view>
+ <!--骞垮憡-->
+ <!--<ad v-else-if="n.name=='ad'" :class="n.attrs.class" :style="n.attrs.style" :unit-id="n.attrs['unit-id']" :appid="n.attrs.appid" :apid="n.attrs.apid" :type="n.attrs.type" :adpid="n.attrs.adpid" data-source="ad" @error="error" />-->
+ <!--鍒楄〃-->
+ <view v-else-if="n.name=='li'" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:flex;flex-direction:row'">
+ <view v-if="n.type=='ol'" class="_ol-bef">{{n.num}}</view>
+ <view v-else class="_ul-bef">
+ <view v-if="n.floor%3==0" class="_ul-p1">鈻�</view>
+ <view v-else-if="n.floor%3==2" class="_ul-p2" />
+ <view v-else class="_ul-p1" style="border-radius:50%">鈻�</view>
+ </view>
+ <trees class="_li" c="_li" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
+ </view>
+ <!--琛ㄦ牸-->
+ <view v-else-if="n.name=='table'&&n.c" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:table'">
+ <view v-for="(tbody, o) in n.children" v-bind:key="o" :class="tbody.attrs.class" :style="(tbody.attrs.style||'')+(tbody.name[0]=='t'?';display:table-'+(tbody.name=='tr'?'row':'row-group'):'')">
+ <view v-for="(tr, p) in tbody.children" v-bind:key="p" :class="tr.attrs.class" :style="(tr.attrs.style||'')+(tr.name[0]=='t'?';display:table-'+(tr.name=='tr'?'row':'cell'):'')">
+ <trees v-if="tr.name=='td'" :nodes="tr.children" />
+ <trees v-else v-for="(td, q) in tr.children" v-bind:key="q" :class="td.attrs.class" :c="td.attrs.class" :style="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')"
+ :s="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')" :nodes="td.children" />
+ </view>
+ </view>
+ </view>
+ <!--#ifdef APP-PLUS-->
+ <iframe v-else-if="n.name=='iframe'" :style="n.attrs.style" :allowfullscreen="n.attrs.allowfullscreen" :frameborder="n.attrs.frameborder"
+ :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
+ <embed v-else-if="n.name=='embed'" :style="n.attrs.style" :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
+ <!--#endif-->
+ <!--瀵屾枃鏈�-->
+ <!--#ifdef MP-WEIXIN || MP-QQ || APP-PLUS-->
+ <rich-text v-else-if="handler.use(n)" :id="n.attrs.id" :class="'_p __'+n.name" :nodes="[n]" />
+ <!--#endif-->
+ <!--#ifndef MP-WEIXIN || MP-QQ || APP-PLUS-->
+ <rich-text v-else-if="!n.c" :id="n.attrs.id" :nodes="[n]" style="display:inline" />
+ <!--#endif-->
+ <trees v-else :class="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')" :c="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')"
+ :style="n.attrs.style" :s="n.attrs.style" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
+ </block>
+ </view>
+</template>
+<script module="handler" lang="wxs" src="./handler.wxs"></script>
+<script>
+ global.Parser = {};
+ import trees from './trees'
+ const errorImg = require('../libs/config.js').errorImg;
+ export default {
+ components: {
+ trees
+ },
+ name: 'trees',
+ data() {
+ return {
+ ctrl: [],
+ placeholder: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>',
+ errorImg,
+ loadVideo: typeof plus == 'undefined',
+ // #ifndef MP-ALIPAY
+ c: '',
+ s: ''
+ // #endif
+ }
+ },
+ props: {
+ nodes: Array,
+ lazyLoad: Boolean,
+ loading: String,
+ // #ifdef MP-ALIPAY
+ c: String,
+ s: String
+ // #endif
+ },
+ mounted() {
+ for (this.top = this.$parent; this.top.$options.name != 'parser'; this.top = this.top.$parent);
+ this.init();
+ },
+ // #ifdef APP-PLUS
+ beforeDestroy() {
+ this.observer && this.observer.disconnect();
+ },
+ // #endif
+ methods: {
+ init() {
+ for (var i = this.nodes.length, n; n = this.nodes[--i];) {
+ if (n.name == 'img') {
+ this.top.imgList.setItem(n.attrs.i, n.attrs.src);
+ // #ifdef APP-PLUS
+ if (this.lazyLoad && !this.observer) {
+ this.observer = uni.createIntersectionObserver(this).relativeToViewport({
+ top: 500,
+ bottom: 500
+ });
+ setTimeout(() => {
+ this.observer.observe('._img', res => {
+ if (res.intersectionRatio) {
+ for (var j = this.nodes.length; j--;)
+ if (this.nodes[j].name == 'img')
+ this.$set(this.ctrl, j, 1);
+ this.observer.disconnect();
+ }
+ })
+ }, 0)
+ }
+ // #endif
+ } else if (n.name == 'video' || n.name == 'audio') {
+ var ctx;
+ if (n.name == 'video') {
+ ctx = uni.createVideoContext(n.attrs.id
+ // #ifndef MP-BAIDU
+ , this
+ // #endif
+ );
+ } else if (this.$refs[n.attrs.id])
+ ctx = this.$refs[n.attrs.id][0];
+ if (ctx) {
+ ctx.id = n.attrs.id;
+ this.top.videoContexts.push(ctx);
+ }
+ }
+ }
+ // #ifdef APP-PLUS
+ // APP 涓婇伩鍏� video 閿欎綅闇�瑕佸欢鏃舵覆鏌�
+ setTimeout(() => {
+ this.loadVideo = true;
+ }, 1000)
+ // #endif
+ },
+ play(e) {
+ var contexts = this.top.videoContexts;
+ if (contexts.length > 1 && this.top.autopause)
+ for (var i = contexts.length; i--;)
+ if (contexts[i].id != e.currentTarget.dataset.id)
+ contexts[i].pause();
+ },
+ imgtap(e) {
+ var attrs = e.currentTarget.dataset.attrs;
+ if (!attrs.ignore) {
+ var preview = true,
+ data = {
+ id: e.target.id,
+ src: attrs.src,
+ ignore: () => preview = false
+ };
+ global.Parser.onImgtap && global.Parser.onImgtap(data);
+ this.top.$emit('imgtap', data);
+ if (preview) {
+ var urls = this.top.imgList,
+ current = urls[attrs.i] ? parseInt(attrs.i) : (urls = [attrs.src], 0);
+ uni.previewImage({
+ current,
+ urls
+ })
+ }
+ }
+ },
+ loadImg(e) {
+ var i = e.currentTarget.dataset.i;
+ if (this.lazyLoad && !this.ctrl[i]) {
+ // #ifdef QUICKAPP-WEBVIEW
+ this.$set(this.ctrl, i, 0);
+ this.$nextTick(function() {
+ // #endif
+ // #ifndef APP-PLUS
+ this.$set(this.ctrl, i, 1);
+ // #endif
+ // #ifdef QUICKAPP-WEBVIEW
+ })
+ // #endif
+ } else if (this.loading && this.ctrl[i] != 2) {
+ // #ifdef QUICKAPP-WEBVIEW
+ this.$set(this.ctrl, i, 0);
+ this.$nextTick(function() {
+ // #endif
+ this.$set(this.ctrl, i, 2);
+ // #ifdef QUICKAPP-WEBVIEW
+ })
+ // #endif
+ }
+ },
+ linkpress(e) {
+ var jump = true,
+ attrs = e.currentTarget.dataset.attrs;
+ attrs.ignore = () => jump = false;
+ global.Parser.onLinkpress && global.Parser.onLinkpress(attrs);
+ this.top.$emit('linkpress', attrs);
+ if (jump) {
+ // #ifdef MP
+ if (attrs['app-id']) {
+ return uni.navigateToMiniProgram({
+ appId: attrs['app-id'],
+ path: attrs.path
+ })
+ }
+ // #endif
+ if (attrs.href) {
+ if (attrs.href[0] == '#') {
+ if (this.top.useAnchor)
+ this.top.navigateTo({
+ id: attrs.href.substring(1)
+ })
+ } else if (attrs.href.indexOf('http') == 0 || attrs.href.indexOf('//') == 0) {
+ // #ifdef APP-PLUS
+ plus.runtime.openWeb(attrs.href);
+ // #endif
+ // #ifndef APP-PLUS
+ uni.setClipboardData({
+ data: attrs.href,
+ success: () =>
+ uni.showToast({
+ title: '閾炬帴宸插鍒�'
+ })
+ })
+ // #endif
+ } else
+ uni.navigateTo({
+ url: attrs.href,
+ fail() {
+ uni.switchTab({
+ url: attrs.href,
+ })
+ }
+ })
+ }
+ }
+ },
+ error(e) {
+ var target = e.currentTarget,
+ source = target.dataset.source,
+ i = target.dataset.i;
+ if (source == 'video' || source == 'audio') {
+ // 鍔犺浇鍏朵粬 source
+ var index = this.ctrl[i] ? this.ctrl[i].i + 1 : 1;
+ if (index < this.nodes[i].attrs.source.length)
+ this.$set(this.ctrl, i, index);
+ if (e.detail.__args__)
+ e.detail = e.detail.__args__[0];
+ } else if (errorImg && source == 'img') {
+ this.top.imgList.setItem(target.dataset.index, errorImg);
+ this.$set(this.ctrl, i, 3);
+ }
+ this.top && this.top.$emit('error', {
+ source,
+ target,
+ errMsg: e.detail.errMsg
+ });
+ },
+ _loadVideo(e) {
+ this.$set(this.ctrl, e.target.dataset.i, 0);
+ }
+ }
+ }
+</script>
+
+<style>
+ /* 鍦ㄨ繖閲屽紩鍏ヨ嚜瀹氫箟鏍峰紡 */
+
+ /* 閾炬帴鍜屽浘鐗囨晥鏋� */
+ ._a {
+ display: inline;
+ padding: 1.5px 0 1.5px 0;
+ color: #366092;
+ word-break: break-all;
+ }
+
+ ._hover {
+ text-decoration: underline;
+ opacity: 0.7;
+ }
+
+ ._img {
+ display: inline-block;
+ max-width: 100%;
+ overflow: hidden;
+ }
+
+ /* #ifdef MP-WEIXIN */
+ :host {
+ display: inline;
+ }
+
+ /* #endif */
+
+ /* #ifndef MP-ALIPAY || APP-PLUS */
+ .interlayer {
+ display: inherit;
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ width: 100%;
+ white-space: inherit;
+ }
+
+ /* #endif */
+
+ ._b,
+ ._strong {
+ font-weight: bold;
+ }
+
+ /* #ifndef MP-ALIPAY */
+ ._blockquote,
+ ._div,
+ ._p,
+ ._ol,
+ ._ul,
+ ._li {
+ display: block;
+ }
+
+ /* #endif */
+
+ ._code {
+ font-family: monospace;
+ }
+
+ ._del {
+ text-decoration: line-through;
+ }
+
+ ._em,
+ ._i {
+ font-style: italic;
+ }
+
+ ._h1 {
+ font-size: 2em;
+ }
+
+ ._h2 {
+ font-size: 1.5em;
+ }
+
+ ._h3 {
+ font-size: 1.17em;
+ }
+
+ ._h5 {
+ font-size: 0.83em;
+ }
+
+ ._h6 {
+ font-size: 0.67em;
+ }
+
+ ._h1,
+ ._h2,
+ ._h3,
+ ._h4,
+ ._h5,
+ ._h6 {
+ display: block;
+ font-weight: bold;
+ }
+
+ ._image {
+ display: block;
+ width: 100%;
+ height: 360px;
+ margin-top: -360px;
+ opacity: 0;
+ }
+
+ ._ins {
+ text-decoration: underline;
+ }
+
+ ._li {
+ flex: 1;
+ width: 0;
+ }
+
+ ._ol-bef {
+ width: 36px;
+ margin-right: 5px;
+ text-align: right;
+ }
+
+ ._ul-bef {
+ display: block;
+ margin: 0 12px 0 23px;
+ line-height: normal;
+ }
+
+ ._ol-bef,
+ ._ul-bef {
+ flex: none;
+ user-select: none;
+ }
+
+ ._ul-p1 {
+ display: inline-block;
+ width: 0.3em;
+ height: 0.3em;
+ overflow: hidden;
+ line-height: 0.3em;
+ }
+
+ ._ul-p2 {
+ display: inline-block;
+ width: 0.23em;
+ height: 0.23em;
+ border: 0.05em solid black;
+ border-radius: 50%;
+ }
+
+ ._q::before {
+ content: '"';
+ }
+
+ ._q::after {
+ content: '"';
+ }
+
+ ._sub {
+ font-size: smaller;
+ vertical-align: sub;
+ }
+
+ ._sup {
+ font-size: smaller;
+ vertical-align: super;
+ }
+
+ /* #ifdef MP-ALIPAY || APP-PLUS || QUICKAPP-WEBVIEW */
+ ._abbr,
+ ._b,
+ ._code,
+ ._del,
+ ._em,
+ ._i,
+ ._ins,
+ ._label,
+ ._q,
+ ._span,
+ ._strong,
+ ._sub,
+ ._sup {
+ display: inline;
+ }
+
+ /* #endif */
+
+ /* #ifdef MP-WEIXIN || MP-QQ */
+ .__bdo,
+ .__bdi,
+ .__ruby,
+ .__rt {
+ display: inline-block;
+ }
+
+ /* #endif */
+ ._video {
+ position: relative;
+ display: inline-block;
+ width: 300px;
+ height: 225px;
+ background-color: black;
+ }
+
+ ._video::after {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -15px 0 0 -15px;
+ content: '';
+ border-color: transparent transparent transparent white;
+ border-style: solid;
+ border-width: 15px 0 15px 30px;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/u-parse.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/u-parse.vue"
new file mode 100644
index 0000000..7bbe13e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-parse/u-parse.vue"
@@ -0,0 +1,630 @@
+<template>
+ <view>
+ <slot v-if="!nodes.length" />
+ <!--#ifdef APP-PLUS-NVUE-->
+ <web-view id="_top" ref="web" :style="'margin-top:-2px;height:'+height+'px'" @onPostMessage="_message" />
+ <!--#endif-->
+ <!--#ifndef APP-PLUS-NVUE-->
+ <view id="_top" :style="showAm+(selectable?';user-select:text;-webkit-user-select:text':'')">
+ <!--#ifdef H5 || MP-360-->
+ <div :id="'rtf'+uid"></div>
+ <!--#endif-->
+ <!--#ifndef H5 || MP-360-->
+ <trees :nodes="nodes" :lazyLoad="lazyLoad" :loading="loadingImg" />
+ <!--#endif-->
+ </view>
+ <!--#endif-->
+ </view>
+</template>
+
+<script>
+ // #ifndef H5 || APP-PLUS-NVUE || MP-360
+ import trees from './libs/trees';
+ var cache = {},
+ // #ifdef MP-WEIXIN || MP-TOUTIAO
+ fs = uni.getFileSystemManager ? uni.getFileSystemManager() : null,
+ // #endif
+ Parser = require('./libs/MpHtmlParser.js');
+ var dom;
+ // 璁$畻 cache 鐨� key
+ function hash(str) {
+ for (var i = str.length, val = 5381; i--;)
+ val += (val << 5) + str.charCodeAt(i);
+ return val;
+ }
+ // #endif
+ // #ifdef H5 || APP-PLUS-NVUE || MP-360
+ var windowWidth = uni.getSystemInfoSync().windowWidth,
+ cfg = require('./libs/config.js');
+ // #endif
+ // #ifdef APP-PLUS-NVUE
+ var weexDom = weex.requireModule('dom');
+ // #endif
+ /**
+ * Parser 瀵屾枃鏈粍浠�
+ * @tutorial https://github.com/jin-yufeng/Parser
+ * @property {String} html 瀵屾枃鏈暟鎹�
+ * @property {Boolean} autopause 鏄惁鍦ㄦ挱鏀句竴涓棰戞椂鑷姩鏆傚仠鍏朵粬瑙嗛
+ * @property {Boolean} autoscroll 鏄惁鑷姩缁欐墍鏈夎〃鏍兼坊鍔犱竴涓粴鍔ㄥ眰
+ * @property {Boolean} autosetTitle 鏄惁鑷姩灏� title 鏍囩涓殑鍐呭璁剧疆鍒伴〉闈㈡爣棰�
+ * @property {Number} compress 鍘嬬缉绛夌骇
+ * @property {String} domain 鍥剧墖銆佽棰戠瓑閾炬帴鐨勪富鍩熷悕
+ * @property {Boolean} lazyLoad 鏄惁寮�鍚浘鐗囨噿鍔犺浇
+ * @property {String} loadingImg 鍥剧墖鍔犺浇瀹屾垚鍓嶇殑鍗犱綅鍥�
+ * @property {Boolean} selectable 鏄惁寮�鍚暱鎸夊鍒�
+ * @property {Object} tagStyle 鏍囩鐨勯粯璁ゆ牱寮�
+ * @property {Boolean} showWithAnimation 鏄惁浣跨敤娓愭樉鍔ㄧ敾
+ * @property {Boolean} useAnchor 鏄惁浣跨敤閿氱偣
+ * @property {Boolean} useCache 鏄惁缂撳瓨瑙f瀽缁撴灉
+ * @event {Function} parse 瑙f瀽瀹屾垚浜嬩欢
+ * @event {Function} load dom 鍔犺浇瀹屾垚浜嬩欢
+ * @event {Function} ready 鎵�鏈夊浘鐗囧姞杞藉畬姣曚簨浠�
+ * @event {Function} error 閿欒浜嬩欢
+ * @event {Function} imgtap 鍥剧墖鐐瑰嚮浜嬩欢
+ * @event {Function} linkpress 閾炬帴鐐瑰嚮浜嬩欢
+ * @author JinYufeng
+ * @version 20200728
+ * @listens MIT
+ */
+ export default {
+ name: 'parser',
+ data() {
+ return {
+ // #ifdef H5 || MP-360
+ uid: this._uid,
+ // #endif
+ // #ifdef APP-PLUS-NVUE
+ height: 1,
+ // #endif
+ // #ifndef APP-PLUS-NVUE
+ showAm: '',
+ // #endif
+ nodes: []
+ }
+ },
+ // #ifndef H5 || APP-PLUS-NVUE || MP-360
+ components: {
+ trees
+ },
+ // #endif
+ props: {
+ html: String,
+ autopause: {
+ type: Boolean,
+ default: true
+ },
+ autoscroll: Boolean,
+ autosetTitle: {
+ type: Boolean,
+ default: true
+ },
+ // #ifndef H5 || APP-PLUS-NVUE || MP-360
+ compress: Number,
+ loadingImg: String,
+ useCache: Boolean,
+ // #endif
+ domain: String,
+ lazyLoad: Boolean,
+ selectable: Boolean,
+ tagStyle: Object,
+ showWithAnimation: Boolean,
+ useAnchor: Boolean
+ },
+ watch: {
+ html(html) {
+ this.setContent(html);
+ }
+ },
+ created() {
+ // 鍥剧墖鏁扮粍
+ this.imgList = [];
+ this.imgList.each = function(f) {
+ for (var i = 0, len = this.length; i < len; i++)
+ this.setItem(i, f(this[i], i, this));
+ }
+ this.imgList.setItem = function(i, src) {
+ if (i == void 0 || !src) return;
+ // #ifndef MP-ALIPAY || APP-PLUS
+ // 鍘婚噸
+ if (src.indexOf('http') == 0 && this.includes(src)) {
+ var newSrc = src.split('://')[0];
+ for (var j = newSrc.length, c; c = src[j]; j++) {
+ if (c == '/' && src[j - 1] != '/' && src[j + 1] != '/') break;
+ newSrc += Math.random() > 0.5 ? c.toUpperCase() : c;
+ }
+ newSrc += src.substr(j);
+ return this[i] = newSrc;
+ }
+ // #endif
+ this[i] = src;
+ // 鏆傚瓨 data src
+ if (src.includes('data:image')) {
+ var filePath, info = src.match(/data:image\/(\S+?);(\S+?),(.+)/);
+ if (!info) return;
+ // #ifdef MP-WEIXIN || MP-TOUTIAO
+ filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}`;
+ fs && fs.writeFile({
+ filePath,
+ data: info[3],
+ encoding: info[2],
+ success: () => this[i] = filePath
+ })
+ // #endif
+ // #ifdef APP-PLUS
+ filePath = `_doc/parser_tmp/${Date.now()}.${info[1]}`;
+ var bitmap = new plus.nativeObj.Bitmap();
+ bitmap.loadBase64Data(src, () => {
+ bitmap.save(filePath, {}, () => {
+ bitmap.clear()
+ this[i] = filePath;
+ })
+ })
+ // #endif
+ }
+ }
+ },
+ mounted() {
+ // #ifdef H5 || MP-360
+ this.document = document.getElementById('rtf' + this._uid);
+ // #endif
+ // #ifndef H5 || APP-PLUS-NVUE || MP-360
+ if (dom) this.document = new dom(this);
+ // #endif
+ // #ifdef APP-PLUS-NVUE
+ this.document = this.$refs.web;
+ setTimeout(() => {
+ // #endif
+ if (this.html) this.setContent(this.html);
+ // #ifdef APP-PLUS-NVUE
+ }, 30)
+ // #endif
+ },
+ beforeDestroy() {
+ // #ifdef H5 || MP-360
+ if (this._observer) this._observer.disconnect();
+ // #endif
+ this.imgList.each(src => {
+ // #ifdef APP-PLUS
+ if (src && src.includes('_doc')) {
+ plus.io.resolveLocalFileSystemURL(src, entry => {
+ entry.remove();
+ });
+ }
+ // #endif
+ // #ifdef MP-WEIXIN || MP-TOUTIAO
+ if (src && src.includes(uni.env.USER_DATA_PATH))
+ fs && fs.unlink({
+ filePath: src
+ })
+ // #endif
+ })
+ clearInterval(this._timer);
+ },
+ methods: {
+ // 璁剧疆瀵屾枃鏈唴瀹�
+ setContent(html, append) {
+ // #ifdef APP-PLUS-NVUE
+ if (!html)
+ return this.height = 1;
+ if (append)
+ this.$refs.web.evalJs("var b=document.createElement('div');b.innerHTML='" + html.replace(/'/g, "\\'") +
+ "';document.getElementById('parser').appendChild(b)");
+ else {
+ html =
+ '<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><style>html,body{width:100%;height:100%;overflow:hidden}body{margin:0}</style><base href="' +
+ this.domain + '"><div id="parser"' + (this.selectable ? '>' : ' style="user-select:none">') + this._handleHtml(html).replace(/\n/g, '\\n') +
+ '</div><script>"use strict";function e(e){if(window.__dcloud_weex_postMessage||window.__dcloud_weex_){var t={data:[e]};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(t):window.__dcloud_weex_.postMessage(JSON.stringify(t))}}document.body.onclick=function(){e({action:"click"})},' +
+ (this.showWithAnimation ? 'document.body.style.animation="_show .5s",' : '') +
+ 'setTimeout(function(){e({action:"load",text:document.body.innerText,height:document.getElementById("parser").scrollHeight})},50);\x3c/script>';
+ this.$refs.web.evalJs("document.write('" + html.replace(/'/g, "\\'") + "');document.close()");
+ }
+ this.$refs.web.evalJs(
+ 'var t=document.getElementsByTagName("title");t.length&&e({action:"getTitle",title:t[0].innerText});for(var o,n=document.getElementsByTagName("style"),r=1;o=n[r++];)o.innerHTML=o.innerHTML.replace(/body/g,"#parser");for(var a,c=document.getElementsByTagName("img"),s=[],i=0==c.length,d=0,l=0,g=0;a=c[l];l++)parseInt(a.style.width||a.getAttribute("width"))>' +
+ windowWidth + '&&(a.style.height="auto"),a.onload=function(){++d==c.length&&(i=!0)},a.onerror=function(){++d==c.length&&(i=!0),' + (cfg.errorImg ? 'this.src="' + cfg.errorImg + '",' : '') +
+ 'e({action:"error",source:"img",target:this})},a.hasAttribute("ignore")||"A"==a.parentElement.nodeName||(a.i=g++,s.push(a.src),a.onclick=function(){e({action:"preview",img:{i:this.i,src:this.src}})});e({action:"getImgList",imgList:s});for(var u,m=document.getElementsByTagName("a"),f=0;u=m[f];f++)u.onclick=function(){var t,o=this.getAttribute("href");if("#"==o[0]){var n=document.getElementById(o.substr(1));n&&(t=n.offsetTop)}return e({action:"linkpress",href:o,offset:t}),!1};for(var h,y=document.getElementsByTagName("video"),v=0;h=y[v];v++)h.style.maxWidth="100%",h.onerror=function(){e({action:"error",source:"video",target:this})}' +
+ (this.autopause ? ',h.onplay=function(){for(var e,t=0;e=y[t];t++)e!=this&&e.pause()}' : '') +
+ ';for(var _,p=document.getElementsByTagName("audio"),w=0;_=p[w];w++)_.onerror=function(){e({action:"error",source:"audio",target:this})};' +
+ (this.autoscroll ? 'for(var T,E=document.getElementsByTagName("table"),B=0;T=E[B];B++){var N=document.createElement("div");N.style.overflow="scroll",T.parentNode.replaceChild(N,T),N.appendChild(T)}' : '') +
+ 'var x=document.getElementById("parser");clearInterval(window.timer),window.timer=setInterval(function(){i&&clearInterval(window.timer),e({action:"ready",ready:i,height:x.scrollHeight})},350)'
+ )
+ this.nodes = [1];
+ // #endif
+ // #ifdef H5 || MP-360
+ if (!html) {
+ if (this.rtf && !append) this.rtf.parentNode.removeChild(this.rtf);
+ return;
+ }
+ var div = document.createElement('div');
+ if (!append) {
+ if (this.rtf) this.rtf.parentNode.removeChild(this.rtf);
+ this.rtf = div;
+ } else {
+ if (!this.rtf) this.rtf = div;
+ else this.rtf.appendChild(div);
+ }
+ div.innerHTML = this._handleHtml(html, append);
+ for (var styles = this.rtf.getElementsByTagName('style'), i = 0, style; style = styles[i++];) {
+ style.innerHTML = style.innerHTML.replace(/body/g, '#rtf' + this._uid);
+ style.setAttribute('scoped', 'true');
+ }
+ // 鎳掑姞杞�
+ if (!this._observer && this.lazyLoad && IntersectionObserver) {
+ this._observer = new IntersectionObserver(changes => {
+ for (let item, i = 0; item = changes[i++];) {
+ if (item.isIntersecting) {
+ item.target.src = item.target.getAttribute('data-src');
+ item.target.removeAttribute('data-src');
+ this._observer.unobserve(item.target);
+ }
+ }
+ }, {
+ rootMargin: '500px 0px 500px 0px'
+ })
+ }
+ var _ts = this;
+ // 鑾峰彇鏍囬
+ var title = this.rtf.getElementsByTagName('title');
+ if (title.length && this.autosetTitle)
+ uni.setNavigationBarTitle({
+ title: title[0].innerText
+ })
+ // 鍥剧墖澶勭悊
+ this.imgList.length = 0;
+ var imgs = this.rtf.getElementsByTagName('img');
+ for (let i = 0, j = 0, img; img = imgs[i]; i++) {
+ if (parseInt(img.style.width || img.getAttribute('width')) > windowWidth)
+ img.style.height = 'auto';
+ var src = img.getAttribute('src');
+ if (this.domain && src) {
+ if (src[0] == '/') {
+ if (src[1] == '/')
+ img.src = (this.domain.includes('://') ? this.domain.split('://')[0] : '') + ':' + src;
+ else img.src = this.domain + src;
+ } else if (!src.includes('://')) img.src = this.domain + '/' + src;
+ }
+ if (!img.hasAttribute('ignore') && img.parentElement.nodeName != 'A') {
+ img.i = j++;
+ _ts.imgList.push(img.src || img.getAttribute('data-src'));
+ img.onclick = function() {
+ var preview = true;
+ this.ignore = () => preview = false;
+ _ts.$emit('imgtap', this);
+ if (preview) {
+ uni.previewImage({
+ current: this.i,
+ urls: _ts.imgList
+ });
+ }
+ }
+ }
+ img.onerror = function() {
+ if (cfg.errorImg)
+ _ts.imgList[this.i] = this.src = cfg.errorImg;
+ _ts.$emit('error', {
+ source: 'img',
+ target: this
+ });
+ }
+ if (_ts.lazyLoad && this._observer && img.src && img.i != 0) {
+ img.setAttribute('data-src', img.src);
+ img.removeAttribute('src');
+ this._observer.observe(img);
+ }
+ }
+ // 閾炬帴澶勭悊
+ var links = this.rtf.getElementsByTagName('a');
+ for (var link of links) {
+ link.onclick = function() {
+ var jump = true,
+ href = this.getAttribute('href');
+ _ts.$emit('linkpress', {
+ href,
+ ignore: () => jump = false
+ });
+ if (jump && href) {
+ if (href[0] == '#') {
+ if (_ts.useAnchor) {
+ _ts.navigateTo({
+ id: href.substr(1)
+ })
+ }
+ } else if (href.indexOf('http') == 0 || href.indexOf('//') == 0)
+ return true;
+ else
+ uni.navigateTo({
+ url: href
+ })
+ }
+ return false;
+ }
+ }
+ // 瑙嗛澶勭悊
+ var videos = this.rtf.getElementsByTagName('video');
+ _ts.videoContexts = videos;
+ for (let video, i = 0; video = videos[i++];) {
+ video.style.maxWidth = '100%';
+ video.onerror = function() {
+ _ts.$emit('error', {
+ source: 'video',
+ target: this
+ });
+ }
+ video.onplay = function() {
+ if (_ts.autopause)
+ for (let item, i = 0; item = _ts.videoContexts[i++];)
+ if (item != this) item.pause();
+ }
+ }
+ // 闊抽澶勭悊
+ var audios = this.rtf.getElementsByTagName('audio');
+ for (var audio of audios)
+ audio.onerror = function() {
+ _ts.$emit('error', {
+ source: 'audio',
+ target: this
+ });
+ }
+ // 琛ㄦ牸澶勭悊
+ if (this.autoscroll) {
+ var tables = this.rtf.getElementsByTagName('table');
+ for (var table of tables) {
+ let div = document.createElement('div');
+ div.style.overflow = 'scroll';
+ table.parentNode.replaceChild(div, table);
+ div.appendChild(table);
+ }
+ }
+ if (!append) this.document.appendChild(this.rtf);
+ this.$nextTick(() => {
+ this.nodes = [1];
+ this.$emit('load');
+ });
+ setTimeout(() => this.showAm = '', 500);
+ // #endif
+ // #ifndef APP-PLUS-NVUE
+ // #ifndef H5 || MP-360
+ var nodes;
+ if (!html) return this.nodes = [];
+ var parser = new Parser(html, this);
+ // 缂撳瓨璇诲彇
+ if (this.useCache) {
+ var hashVal = hash(html);
+ if (cache[hashVal])
+ nodes = cache[hashVal];
+ else {
+ nodes = parser.parse();
+ cache[hashVal] = nodes;
+ }
+ } else nodes = parser.parse();
+ this.$emit('parse', nodes);
+ if (append) this.nodes = this.nodes.concat(nodes);
+ else this.nodes = nodes;
+ if (nodes.length && nodes.title && this.autosetTitle)
+ uni.setNavigationBarTitle({
+ title: nodes.title
+ })
+ if (this.imgList) this.imgList.length = 0;
+ this.videoContexts = [];
+ this.$nextTick(() => {
+ (function f(cs) {
+ for (var i = cs.length; i--;) {
+ if (cs[i].top) {
+ cs[i].controls = [];
+ cs[i].init();
+ f(cs[i].$children);
+ }
+ }
+ })(this.$children)
+ this.$emit('load');
+ })
+ // #endif
+ var height;
+ clearInterval(this._timer);
+ this._timer = setInterval(() => {
+ // #ifdef H5 || MP-360
+ this.rect = this.rtf.getBoundingClientRect();
+ // #endif
+ // #ifndef H5 || MP-360
+ uni.createSelectorQuery().in(this)
+ .select('#_top').boundingClientRect().exec(res => {
+ if (!res) return;
+ this.rect = res[0];
+ // #endif
+ if (this.rect.height == height) {
+ this.$emit('ready', this.rect)
+ clearInterval(this._timer);
+ }
+ height = this.rect.height;
+ // #ifndef H5 || MP-360
+ });
+ // #endif
+ }, 350);
+ if (this.showWithAnimation && !append) this.showAm = 'animation:_show .5s';
+ // #endif
+ },
+ // 鑾峰彇鏂囨湰鍐呭
+ getText(ns = this.nodes) {
+ var txt = '';
+ // #ifdef APP-PLUS-NVUE
+ txt = this._text;
+ // #endif
+ // #ifdef H5 || MP-360
+ txt = this.rtf.innerText;
+ // #endif
+ // #ifndef H5 || APP-PLUS-NVUE || MP-360
+ for (var i = 0, n; n = ns[i++];) {
+ if (n.type == 'text') txt += n.text.replace(/ /g, '\u00A0').replace(/</g, '<').replace(/>/g, '>')
+ .replace(/&/g, '&');
+ else if (n.type == 'br') txt += '\n';
+ else {
+ // 鍧楃骇鏍囩鍓嶅悗鍔犳崲琛�
+ var block = n.name == 'p' || n.name == 'div' || n.name == 'tr' || n.name == 'li' || (n.name[0] == 'h' && n.name[1] >
+ '0' && n.name[1] < '7');
+ if (block && txt && txt[txt.length - 1] != '\n') txt += '\n';
+ if (n.children) txt += this.getText(n.children);
+ if (block && txt[txt.length - 1] != '\n') txt += '\n';
+ else if (n.name == 'td' || n.name == 'th') txt += '\t';
+ }
+ }
+ // #endif
+ return txt;
+ },
+ // 閿氱偣璺宠浆
+ in (obj) {
+ if (obj.page && obj.selector && obj.scrollTop) this._in = obj;
+ },
+ navigateTo(obj) {
+ if (!this.useAnchor) return obj.fail && obj.fail('Anchor is disabled');
+ // #ifdef APP-PLUS-NVUE
+ if (!obj.id)
+ weexDom.scrollToElement(this.$refs.web);
+ else
+ this.$refs.web.evalJs('var pos=document.getElementById("' + obj.id +
+ '");if(pos)post({action:"linkpress",href:"#",offset:pos.offsetTop+' + (obj.offset || 0) + '})');
+ obj.success && obj.success();
+ // #endif
+ // #ifndef APP-PLUS-NVUE
+ var d = ' ';
+ // #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO
+ d = '>>>';
+ // #endif
+ var selector = uni.createSelectorQuery().in(this._in ? this._in.page : this).select((this._in ? this._in.selector :
+ '#_top') + (obj.id ? `${d}#${obj.id},${this._in?this._in.selector:'#_top'}${d}.${obj.id}` : '')).boundingClientRect();
+ if (this._in) selector.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect();
+ else selector.selectViewport().scrollOffset();
+ selector.exec(res => {
+ if (!res[0]) return obj.fail && obj.fail('Label not found')
+ var scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + (obj.offset || 0);
+ if (this._in) this._in.page[this._in.scrollTop] = scrollTop;
+ else uni.pageScrollTo({
+ scrollTop,
+ duration: 300
+ })
+ obj.success && obj.success();
+ })
+ // #endif
+ },
+ // 鑾峰彇瑙嗛瀵硅薄
+ getVideoContext(id) {
+ // #ifndef APP-PLUS-NVUE
+ if (!id) return this.videoContexts;
+ else
+ for (var i = this.videoContexts.length; i--;)
+ if (this.videoContexts[i].id == id) return this.videoContexts[i];
+ // #endif
+ },
+ // #ifdef H5 || APP-PLUS-NVUE || MP-360
+ _handleHtml(html, append) {
+ if (!append) {
+ // 澶勭悊 tag-style 鍜� userAgentStyles
+ var style = '<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}img{max-width:100%}';
+ for (var item in cfg.userAgentStyles)
+ style += `${item}{${cfg.userAgentStyles[item]}}`;
+ for (item in this.tagStyle)
+ style += `${item}{${this.tagStyle[item]}}`;
+ style += '</style>';
+ html = style + html;
+ }
+ // 澶勭悊rpx
+ if (html.includes('rpx'))
+ html = html.replace(/[0-9.]+\s*rpx/g, $ => (parseFloat($) * windowWidth / 750) + 'px');
+ return html;
+ },
+ // #endif
+ // #ifdef APP-PLUS-NVUE
+ _message(e) {
+ // 鎺ユ敹 web-view 娑堟伅
+ var d = e.detail.data[0];
+ switch (d.action) {
+ case 'load':
+ this.$emit('load');
+ this.height = d.height;
+ this._text = d.text;
+ break;
+ case 'getTitle':
+ if (this.autosetTitle)
+ uni.setNavigationBarTitle({
+ title: d.title
+ })
+ break;
+ case 'getImgList':
+ this.imgList.length = 0;
+ for (var i = d.imgList.length; i--;)
+ this.imgList.setItem(i, d.imgList[i]);
+ break;
+ case 'preview':
+ var preview = true;
+ d.img.ignore = () => preview = false;
+ this.$emit('imgtap', d.img);
+ if (preview)
+ uni.previewImage({
+ current: d.img.i,
+ urls: this.imgList
+ })
+ break;
+ case 'linkpress':
+ var jump = true,
+ href = d.href;
+ this.$emit('linkpress', {
+ href,
+ ignore: () => jump = false
+ })
+ if (jump && href) {
+ if (href[0] == '#') {
+ if (this.useAnchor)
+ weexDom.scrollToElement(this.$refs.web, {
+ offset: d.offset
+ })
+ } else if (href.includes('://'))
+ plus.runtime.openWeb(href);
+ else
+ uni.navigateTo({
+ url: href
+ })
+ }
+ break;
+ case 'error':
+ if (d.source == 'img' && cfg.errorImg)
+ this.imgList.setItem(d.target.i, cfg.errorImg);
+ this.$emit('error', {
+ source: d.source,
+ target: d.target
+ })
+ break;
+ case 'ready':
+ this.height = d.height;
+ if (d.ready) uni.createSelectorQuery().in(this).select('#_top').boundingClientRect().exec(res => {
+ this.rect = res[0];
+ this.$emit('ready', res[0]);
+ })
+ break;
+ case 'click':
+ this.$emit('click');
+ this.$emit('tap');
+ }
+ },
+ // #endif
+ }
+ }
+</script>
+
+<style>
+ @keyframes _show {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+ }
+
+ /* #ifdef MP-WEIXIN */
+ :host {
+ display: block;
+ overflow: scroll;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ /* #endif */
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-picker/u-picker.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-picker/u-picker.vue"
new file mode 100644
index 0000000..b4da0bd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-picker/u-picker.vue"
@@ -0,0 +1,676 @@
+<template>
+ <u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
+ <view class="u-datetime-picker">
+ <view class="u-picker-header" @touchmove.stop.prevent="">
+ <view class="u-btn-picker u-btn-picker--tips"
+ :style="{ color: cancelColor }"
+ hover-class="u-opacity"
+ :hover-stay-time="150"
+ @tap="getResult('cancel')"
+ >{{cancelText}}</view>
+ <view class="u-picker__title">{{ title }}</view>
+ <view
+ class="u-btn-picker u-btn-picker--primary"
+ :style="{ color: moving ? cancelColor : confirmColor }"
+ hover-class="u-opacity"
+ :hover-stay-time="150"
+ @touchmove.stop=""
+ @tap.stop="getResult('confirm')"
+ >
+ {{confirmText}}
+ </view>
+ </view>
+ <view class="u-picker-body">
+ <picker-view v-if="mode == 'region'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
+ <picker-view-column v-if="!reset && params.province">
+ <view class="u-column-item" v-for="(item, index) in provinces" :key="index">
+ <view class="u-line-1">{{ item.label }}</view>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.city">
+ <view class="u-column-item" v-for="(item, index) in citys" :key="index">
+ <view class="u-line-1">{{ item.label }}</view>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.area">
+ <view class="u-column-item" v-for="(item, index) in areas" :key="index">
+ <view class="u-line-1">{{ item.label }}</view>
+ </view>
+ </picker-view-column>
+ </picker-view>
+ <picker-view v-else-if="mode == 'time'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
+ <picker-view-column v-if="!reset && params.year">
+ <view class="u-column-item" v-for="(item, index) in years" :key="index">
+ {{ item }}
+ <text class="u-text" v-if="showTimeTag">骞�</text>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.month">
+ <view class="u-column-item" v-for="(item, index) in months" :key="index">
+ {{ formatNumber(item) }}
+ <text class="u-text" v-if="showTimeTag">鏈�</text>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.day">
+ <view class="u-column-item" v-for="(item, index) in days" :key="index">
+ {{ formatNumber(item) }}
+ <text class="u-text" v-if="showTimeTag">鏃�</text>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.hour">
+ <view class="u-column-item" v-for="(item, index) in hours" :key="index">
+ {{ formatNumber(item) }}
+ <text class="u-text" v-if="showTimeTag">鏃�</text>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.minute">
+ <view class="u-column-item" v-for="(item, index) in minutes" :key="index">
+ {{ formatNumber(item) }}
+ <text class="u-text" v-if="showTimeTag">鍒�</text>
+ </view>
+ </picker-view-column>
+ <picker-view-column v-if="!reset && params.second">
+ <view class="u-column-item" v-for="(item, index) in seconds" :key="index">
+ {{ formatNumber(item) }}
+ <text class="u-text" v-if="showTimeTag">绉�</text>
+ </view>
+ </picker-view-column>
+ </picker-view>
+ <picker-view v-else-if="mode == 'selector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
+ <picker-view-column v-if="!reset">
+ <view class="u-column-item" v-for="(item, index) in range" :key="index">
+ <view class="u-line-1">{{ getItemValue(item, 'selector') }}</view>
+ </view>
+ </picker-view-column>
+ </picker-view>
+ <picker-view v-else-if="mode == 'multiSelector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
+ <picker-view-column v-if="!reset" v-for="(item, index) in range" :key="index">
+ <view class="u-column-item" v-for="(item1, index1) in item" :key="index1">
+ <view class="u-line-1">{{ getItemValue(item1, 'multiSelector') }}</view>
+ </view>
+ </picker-view-column>
+ </picker-view>
+ </view>
+ </view>
+ </u-popup>
+</template>
+
+<script>
+import provinces from '../../libs/util/province.js';
+import citys from '../../libs/util/city.js';
+import areas from '../../libs/util/area.js';
+
+/**
+ * picker picker寮瑰嚭閫夋嫨鍣�
+ * @description 姝ら�夋嫨鍣ㄦ湁涓ょ寮瑰嚭妯″紡锛氫竴鏄椂闂存ā寮忥紝鍙互閰嶇疆骞达紝鏃ワ紝鏈堬紝鏃讹紝鍒嗭紝绉掑弬鏁� 浜屾槸鍦板尯妯″紡锛屽彲浠ラ厤缃渷锛屽競锛屽尯鍙傛暟
+ * @tutorial https://www.uviewui.com/components/picker.html
+ * @property {Object} params 闇�瑕佹樉绀虹殑鍙傛暟锛岃瀹樼綉璇存槑
+ * @property {String} mode 妯″紡閫夋嫨锛宺egion-鍦板尯绫诲瀷锛宼ime-鏃堕棿绫诲瀷锛堥粯璁ime锛�
+ * @property {String Number} start-year 鍙�夌殑寮�濮嬪勾浠斤紝mode=time鏃舵湁鏁堬紙榛樿1950锛�
+ * @property {String Number} end-year 鍙�夌殑缁撴潫骞翠唤锛宮ode=time鏃舵湁鏁堬紙榛樿2050锛�
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛堥粯璁alse锛�
+ * @property {Boolean} show-time-tag 鏃堕棿妯″紡鏃讹紝鏄惁鏄剧ず鍚庨潰鐨勫勾鏈堟棩涓枃鎻愮ず
+ * @property {String} cancel-color 鍙栨秷鎸夐挳鐨勯鑹诧紙榛樿#606266锛�
+ * @property {String} confirm-color 纭鎸夐挳鐨勯鑹诧紙榛樿#2979ff锛�
+ * @property {String} default-time 榛樿閫変腑鐨勬椂闂达紝mode=time鏃舵湁鏁�
+ * @property {String} confirm-text 纭鎸夐挳鐨勬枃瀛�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬枃瀛�
+ * @property {String} default-region 榛樿閫変腑鐨勫湴鍖猴紝涓枃褰㈠紡锛宮ode=region鏃舵湁鏁�
+ * @property {String} default-code 榛樿閫変腑鐨勫湴鍖猴紝缂栧彿褰㈠紡锛宮ode=region鏃舵湁鏁�
+ * @property {Boolean} mask-close-able 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴Picker锛堥粯璁rue锛�
+ * @property {String Number} z-index 寮瑰嚭鏃剁殑z-index鍊硷紙榛樿1075锛�
+ * @property {Array} default-selector 鏁扮粍褰㈠紡锛屽叾涓瘡涓�椤硅〃绀洪�夋嫨浜唕ange瀵瑰簲椤逛腑鐨勭鍑犱釜
+ * @property {Array} range 鑷畾涔夐�夋嫨鐨勬暟鎹紝mode=selector鎴杕ode=multiSelector鏃舵湁鏁�
+ * @property {String} range-key 褰搑ange鍙傛暟鐨勫厓绱犱负瀵硅薄鏃讹紝鎸囧畾Object涓殑鍝釜key鐨勫�间綔涓洪�夋嫨鍣ㄦ樉绀哄唴瀹�
+ * @event {Function} confirm 鐐瑰嚮纭畾鎸夐挳锛岃繑鍥炲綋鍓嶉�夋嫨鐨勫��
+ * @event {Function} cancel 鐐瑰嚮鍙栨秷鎸夐挳锛岃繑鍥炲綋鍓嶉�夋嫨鐨勫��
+ * @example <u-picker v-model="show" mode="time"></u-picker>
+ */
+export default {
+ name: 'u-picker',
+ props: {
+ // picker涓渶瑕佹樉绀虹殑鍙傛暟
+ params: {
+ type: Object,
+ default() {
+ return {
+ year: true,
+ month: true,
+ day: true,
+ hour: false,
+ minute: false,
+ second: false,
+ province: true,
+ city: true,
+ area: true,
+ timestamp: true,
+ };
+ }
+ },
+ // 褰搈ode=selector鎴栬�卪ode=multiSelector鏃讹紝鎻愪緵鐨勬暟缁�
+ range: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 褰搈ode=selector鎴栬�卪ode=multiSelector鏃讹紝鎻愪緵鐨勯粯璁ら�変腑鐨勪笅鏍�
+ defaultSelector: {
+ type: Array,
+ default() {
+ return [0];
+ }
+ },
+ // 褰� range 鏄竴涓� Array锛淥bject锛� 鏃讹紝閫氳繃 range-key 鏉ユ寚瀹� Object 涓� key 鐨勫�间綔涓洪�夋嫨鍣ㄦ樉绀哄唴瀹�
+ rangeKey: {
+ type: String,
+ default: ''
+ },
+ // 妯″紡閫夋嫨锛宺egion-鍦板尯绫诲瀷锛宼ime-鏃堕棿绫诲瀷锛宻elector-鍗曞垪妯″紡锛宮ultiSelector-澶氬垪妯″紡
+ mode: {
+ type: String,
+ default: 'time'
+ },
+ // 骞翠唤寮�濮嬫椂闂�
+ startYear: {
+ type: [String, Number],
+ default: 1950
+ },
+ // 骞翠唤缁撴潫鏃堕棿
+ endYear: {
+ type: [String, Number],
+ default: 2050
+ },
+ // "鍙栨秷"鎸夐挳鐨勯鑹�
+ cancelColor: {
+ type: String,
+ default: '#606266'
+ },
+ // "纭畾"鎸夐挳鐨勯鑹�
+ confirmColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 榛樿鏄剧ず鐨勬椂闂达紝2025-07-02 || 2025-07-02 13:01:00 || 2025/07/02
+ defaultTime: {
+ type: String,
+ default: ''
+ },
+ // 榛樿鏄剧ず鐨勫湴鍖猴紝鍙紶绫讳技["娌冲寳鐪�", "绉︾殗宀涘競", "鍖楁埓娌冲尯"]
+ defaultRegion: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 鏃堕棿妯″紡鏃讹紝鏄惁鏄剧ず鍚庨潰鐨勫勾鏈堟棩涓枃鎻愮ず
+ showTimeTag: {
+ type: Boolean,
+ default: true
+ },
+ // 榛樿鏄剧ず鍦板尯鐨勭紪鐮侊紝defaultRegion鍜宎reaCode鍚屾椂瀛樺湪锛宎reaCode浼樺厛锛屽彲浼犵被浼糩"13", "1303", "130304"]
+ areaCode: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴Picker
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氳繃鍙屽悜缁戝畾鎺у埗缁勪欢鐨勫脊鍑轰笌鏀惰捣
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 寮瑰嚭鐨剒-index鍊�
+ zIndex: {
+ type: [String, Number],
+ default: 0
+ },
+ // 椤堕儴鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鍙栨秷鎸夐挳鐨勬枃瀛�
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ },
+ // 纭鎸夐挳鐨勬枃瀛�
+ confirmText: {
+ type: String,
+ default: '纭'
+ }
+ },
+ data() {
+ return {
+ years: [],
+ months: [],
+ days: [],
+ hours: [],
+ minutes: [],
+ seconds: [],
+ year: 0,
+ month: 0,
+ day: 0,
+ hour: 0,
+ minute: 0,
+ second: 0,
+ reset: false,
+ startDate: '',
+ endDate: '',
+ valueArr: [],
+ provinces: provinces,
+ citys: citys[0],
+ areas: areas[0][0],
+ province: 0,
+ city: 0,
+ area: 0,
+ moving: false // 鍒楁槸鍚﹁繕鍦ㄦ粦鍔ㄤ腑锛屽井淇″皬绋嬪簭濡傛灉鍦ㄦ粦鍔ㄤ腑灏辩偣纭畾锛岀粨鏋滃彲鑳戒笉鍑嗙‘
+ };
+ },
+ mounted() {
+ this.init();
+ },
+ computed: {
+ propsChange() {
+ // 寮曠敤杩欏嚑涓彉閲忥紝鏄负浜嗙洃鍚叾鍙樺寲
+ return `${this.mode}-${this.defaultTime}-${this.startYear}-${this.endYear}-${this.defaultRegion}-${this.areaCode}`;
+ },
+ regionChange() {
+ // 寮曠敤杩欏嚑涓彉閲忥紝鏄负浜嗙洃鍚叾鍙樺寲
+ return `${this.province}-${this.city}`;
+ },
+ yearAndMonth() {
+ return `${this.year}-${this.month}`;
+ },
+ uZIndex() {
+ // 濡傛灉鐢ㄦ埛鏈変紶閫抸-index鍊硷紝浼樺厛浣跨敤
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ watch: {
+ propsChange() {
+ this.reset = true;
+ setTimeout(() => this.init(), 10);
+ },
+ // 濡傛灉鍦板尯鍙戠敓鍙樺寲锛屼负浜嗚picker鑱斿姩璧锋潵锛屽繀椤婚噸缃畉his.citys鍜宼his.areas
+ regionChange(val) {
+ this.citys = citys[this.province];
+ this.areas = areas[this.province][this.city];
+ },
+ // watch鐩戝惉鏈堜唤鐨勫彉鍖栵紝瀹炴椂鍙樻洿鏃ョ殑澶╂暟锛屽洜涓轰笉鍚屾湀浠斤紝澶╂暟涓嶄竴鏍�
+ // 涓�涓湀鍙兘鏈�30锛�31澶╋紝鐢氳嚦闂板勾2鏈堢殑29澶╋紝骞冲勾2鏈�28澶�
+ yearAndMonth(val) {
+ if (this.params.year) this.setDays();
+ },
+ // 寰俊鍜孮Q灏忕▼搴忕敱浜庝竴浜涘鎬殑鍘熷洜(鏁呭悓鏃跺鎵�鏈夊钩鍙板潎鍒濆鍖栦竴閬�)锛岄渶瑕侀噸鏂板垵濮嬪寲鎵嶈兘鏄剧ず姝g‘鐨勫��
+ value(n) {
+ if (n) {
+ this.reset = true;
+ setTimeout(() => this.init(), 10);
+ }
+ }
+ },
+ methods: {
+ // 鏍囪瘑婊戝姩寮�濮嬶紝鍙湁寰俊灏忕▼搴忔墠鏈夎繖鏍风殑浜嬩欢
+ pickstart() {
+ // #ifdef MP-WEIXIN
+ this.moving = true;
+ // #endif
+ },
+ // 鏍囪瘑婊戝姩缁撴潫
+ pickend() {
+ // #ifdef MP-WEIXIN
+ this.moving = false;
+ // #endif
+ },
+ // 瀵瑰崟鍒楀拰澶氬垪褰㈠紡鐨勫垽鏂槸鍚︽湁浼犲叆鍙橀噺鐨勬儏鍐�
+ getItemValue(item, mode) {
+ // 鐩墠(2020-05-25)uni-app瀵瑰井淇″皬绋嬪簭缂栬瘧鏈夐敊璇紝瀵艰嚧v-if涓篺alse涓殑鍐呭涔熸墽琛岋紝閿欒瀵艰嚧
+ // 鍗曞垪妯″紡鎴栬�呭鍒楁ā寮忎腑鐨刧etItemValue鍚屾椂琚墽琛岋紝鏁呭湪杩欓噷鍐嶅姞涓�灞傚垽鏂�
+ if (this.mode == mode) {
+ return typeof item == 'object' ? item[this.rangeKey] : item;
+ }
+ },
+ // 灏忎簬10鍓嶉潰琛�0锛岀敤浜庢湀浠斤紝鏃ユ湡锛屾椂鍒嗙绛�
+ formatNumber(num) {
+ return +num < 10 ? '0' + num : String(num);
+ },
+ // 鐢熸垚閫掕繘鐨勬暟缁�
+ generateArray: function(start, end) {
+ // 杞负鏁板�兼牸寮忥紝鍚﹀垯鐢ㄦ埛缁檈nd-year绛変紶閫掑瓧绗︿覆鍊兼椂锛屼笅闈㈢殑end+1浼氬鑷村瓧绗︿覆鎷兼帴锛岃�屼笉鏄浉鍔�
+ start = Number(start);
+ end = Number(end);
+ end = end > start ? end : start;
+ // 鐢熸垚鏁扮粍锛岃幏鍙栧叾涓殑绱㈠紩锛屽苟鍓嚭鏉�
+ return [...Array(end + 1).keys()].slice(start);
+ },
+ getIndex: function(arr, val) {
+ let index = arr.indexOf(val);
+ // 濡傛灉index涓�-1(鍗虫壘涓嶅埌index鍊�)锛寏(-1)=-(-1)-1=0锛屽鑷存潯浠朵笉鎴愮珛
+ return ~index ? index : 0;
+ },
+ //鏃ユ湡鏃堕棿澶勭悊
+ initTimeValue() {
+ // 鏍煎紡鍖栨椂闂达紝鍦↖E娴忚鍣�(uni涓嶅瓨鍦ㄦ鎯呭喌)锛屾棤娉曡瘑鍒棩鏈熼棿鐨�"-"闂撮殧绗﹀彿
+ let fdate = this.defaultTime.replace(/\-/g, '/');
+ fdate = fdate && fdate.indexOf('/') == -1 ? `2020/01/01 ${fdate}` : fdate;
+ let time = null;
+ if (fdate) time = new Date(fdate);
+ else time = new Date();
+ // 鑾峰彇骞存棩鏈堟椂鍒嗙
+ this.year = time.getFullYear();
+ this.month = Number(time.getMonth()) + 1;
+ this.day = time.getDate();
+ this.hour = time.getHours();
+ this.minute = time.getMinutes();
+ this.second = time.getSeconds();
+ },
+ init() {
+ this.valueArr = [];
+ this.reset = false;
+ if (this.mode == 'time') {
+ this.initTimeValue();
+ if (this.params.year) {
+ this.valueArr.push(0);
+ this.setYears();
+ }
+ if (this.params.month) {
+ this.valueArr.push(0);
+ this.setMonths();
+ }
+ if (this.params.day) {
+ this.valueArr.push(0);
+ this.setDays();
+ }
+ if (this.params.hour) {
+ this.valueArr.push(0);
+ this.setHours();
+ }
+ if (this.params.minute) {
+ this.valueArr.push(0);
+ this.setMinutes();
+ }
+ if (this.params.second) {
+ this.valueArr.push(0);
+ this.setSeconds();
+ }
+ } else if (this.mode == 'region') {
+ if (this.params.province) {
+ this.valueArr.push(0);
+ this.setProvinces();
+ }
+ if (this.params.city) {
+ this.valueArr.push(0);
+ this.setCitys();
+ }
+ if (this.params.area) {
+ this.valueArr.push(0);
+ this.setAreas();
+ }
+ } else if (this.mode == 'selector') {
+ this.valueArr = this.defaultSelector;
+ } else if (this.mode == 'multiSelector') {
+ this.valueArr = this.defaultSelector;
+ this.multiSelectorValue = this.defaultSelector;
+ }
+ this.$forceUpdate();
+ },
+ // 璁剧疆picker鐨勬煇涓�鍒楀��
+ setYears() {
+ // 鑾峰彇骞翠唤闆嗗悎
+ this.years = this.generateArray(this.startYear, this.endYear);
+ // 璁剧疆this.valueArr鏌愪竴椤圭殑鍊硷紝鏄负浜嗚picker棰勯�変腑鏌愪竴涓��
+ this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.years, this.year));
+ },
+ setMonths() {
+ this.months = this.generateArray(1, 12);
+ this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.months, this.month));
+ },
+ setDays() {
+ let totalDays = new Date(this.year, this.month, 0).getDate();
+ this.days = this.generateArray(1, totalDays);
+ let index = 0;
+ // 杩欓噷涓嶈兘浣跨敤绫讳技setMonths()涓殑this.valueArr.splice(this.valueArr.length - 1, xxx)鍋氭硶
+ // 鍥犱负this.month鍜宼his.year鍙樺寲鏃讹紝浼氳Е鍙憌atch涓殑this.setDays()锛屽鑷磘his.valueArr.length璁$畻鏈夎
+ if (this.params.year && this.params.month) index = 2;
+ else if (this.params.month) index = 1;
+ else if (this.params.year) index = 1;
+ else index = 0;
+ // 褰撴湀浠藉彉鍖栨椂锛屼細瀵艰嚧鏃ユ湡鐨勫ぉ鏁颁篃浼氬彉鍖栵紝濡傛灉鍘熸潵閫夌殑澶╂暟澶т簬鍙樺寲鍚庣殑澶╂暟锛屽垯閲嶇疆涓哄彉鍖栧悗鐨勬渶澶у��
+ // 姣斿鍘熸潵閫変腑3鏈�31鏃ワ紝璋冩暣涓�2鏈堝悗锛屾棩鏈熷彉涓烘渶澶�29锛岃繖鏃跺鏋渄ay鍊肩户缁负31鏄剧劧涓嶅悎鐞嗭紝浜庢槸灏嗗叾缃负29(picker-column浠�1寮�濮�)
+ if(this.day > this.days.length) this.day = this.days.length;
+ this.valueArr.splice(index, 1, this.getIndex(this.days, this.day));
+ },
+ setHours() {
+ this.hours = this.generateArray(0, 23);
+ this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.hours, this.hour));
+ },
+ setMinutes() {
+ this.minutes = this.generateArray(0, 59);
+ this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.minutes, this.minute));
+ },
+ setSeconds() {
+ this.seconds = this.generateArray(0, 59);
+ this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.seconds, this.second));
+ },
+ setProvinces() {
+ // 鍒ゆ柇鏄惁闇�瑕乸rovince鍙傛暟
+ if (!this.params.province) return;
+ let tmp = '';
+ let useCode = false;
+ // 濡傛灉鍚屾椂閰嶇疆浜哾efaultRegion鍜宎reaCode锛屼紭鍏堜娇鐢╝reaCode鍙傛暟
+ if (this.areaCode.length) {
+ tmp = this.areaCode[0];
+ useCode = true;
+ } else if (this.defaultRegion.length) tmp = this.defaultRegion[0];
+ else tmp = 0;
+ // 鍘嗛亶鐪佷唤鏁扮粍鍖归厤
+ provinces.map((v, k) => {
+ if (useCode ? v.value == tmp : v.label == tmp) {
+ tmp = k;
+ }
+ });
+ this.province = tmp;
+ this.provinces = provinces;
+ // 璁剧疆榛樿鐪佷唤鐨勫��
+ this.valueArr.splice(0, 1, this.province);
+ },
+ setCitys() {
+ if (!this.params.city) return;
+ let tmp = '';
+ let useCode = false;
+ if (this.areaCode.length) {
+ tmp = this.areaCode[1];
+ useCode = true;
+ } else if (this.defaultRegion.length) tmp = this.defaultRegion[1];
+ else tmp = 0;
+ citys[this.province].map((v, k) => {
+ if (useCode ? v.value == tmp : v.label == tmp) {
+ tmp = k;
+ }
+ });
+ this.city = tmp;
+ this.citys = citys[this.province];
+ this.valueArr.splice(1, 1, this.city);
+ },
+ setAreas() {
+ if (!this.params.area) return;
+ let tmp = '';
+ let useCode = false;
+ if (this.areaCode.length) {
+ tmp = this.areaCode[2];
+ useCode = true;
+ } else if (this.defaultRegion.length) tmp = this.defaultRegion[2];
+ else tmp = 0;
+ areas[this.province][this.city].map((v, k) => {
+ if (useCode ? v.value == tmp : v.label == tmp) {
+ tmp = k;
+ }
+ });
+ this.area = tmp;
+ this.areas = areas[this.province][this.city];
+ this.valueArr.splice(2, 1, this.area);
+ },
+ close() {
+ this.$emit('input', false);
+ },
+ // 鐢ㄦ埛鏇存敼picker鐨勫垪閫夐」
+ change(e) {
+ this.valueArr = e.detail.value;
+ let i = 0;
+ if (this.mode == 'time') {
+ // 杩欓噷浣跨敤i++锛屾槸鍥犱负this.valueArr鏁扮粍鐨勯暱搴︽槸涓嶇‘瀹氶暱搴︾殑锛屽畠鏍规嵁this.params鐨勫�兼潵閰嶇疆闀垮害
+ // 杩涘叆if瑙勫垯锛宨浼氬姞1锛屼繚璇佷簡鑳借幏鍙栧噯纭殑鍊�
+ if (this.params.year) this.year = this.years[this.valueArr[i++]];
+ if (this.params.month) this.month = this.months[this.valueArr[i++]];
+ if (this.params.day) this.day = this.days[this.valueArr[i++]];
+ if (this.params.hour) this.hour = this.hours[this.valueArr[i++]];
+ if (this.params.minute) this.minute = this.minutes[this.valueArr[i++]];
+ if (this.params.second) this.second = this.seconds[this.valueArr[i++]];
+ } else if (this.mode == 'region') {
+ if (this.params.province) this.province = this.valueArr[i++];
+ if (this.params.city) this.city = this.valueArr[i++];
+ if (this.params.area) this.area = this.valueArr[i++];
+ } else if (this.mode == 'multiSelector') {
+ let index = null;
+ // 瀵规瘮鍓嶅悗涓や釜鏁扮粍锛屽鎵惧彉鏇寸殑鏄摢涓�鍒楋紝濡傛灉鏌愪竴涓厓绱犱笉鍚岋紝鍗冲彲鍒ゅ畾璇ュ垪鍙戠敓浜嗗彉鍖�
+ this.defaultSelector.map((val, idx) => {
+ if (val != e.detail.value[idx]) index = idx;
+ });
+ // 涓轰簡璁╃敤鎴峰澶氬垪鍙樺寲鏃讹紝瀵瑰姩鎬佽缃叾浠栧垪鐨勫彉鏇�
+ if (index != null) {
+ this.$emit('columnchange', {
+ column: index,
+ index: e.detail.value[index]
+ });
+ }
+ }
+ },
+ // 鐢ㄦ埛鐐瑰嚮纭畾鎸夐挳
+ getResult(event = null) {
+ // #ifdef MP-WEIXIN
+ if (this.moving) return;
+ // #endif
+ let result = {};
+ // 鍙繑鍥炵敤鎴峰湪this.params涓厤缃簡涓簍rue鐨勫瓧娈�
+ if (this.mode == 'time') {
+ if (this.params.year) result.year = this.formatNumber(this.year || 0);
+ if (this.params.month) result.month = this.formatNumber(this.month || 0);
+ if (this.params.day) result.day = this.formatNumber(this.day || 0);
+ if (this.params.hour) result.hour = this.formatNumber(this.hour || 0);
+ if (this.params.minute) result.minute = this.formatNumber(this.minute || 0);
+ if (this.params.second) result.second = this.formatNumber(this.second || 0);
+ if (this.params.timestamp) result.timestamp = this.getTimestamp();
+ } else if (this.mode == 'region') {
+ if (this.params.province) result.province = provinces[this.province];
+ if (this.params.city) result.city = citys[this.province][this.city];
+ if (this.params.area) result.area = areas[this.province][this.city][this.area];
+ } else if (this.mode == 'selector') {
+ result = this.valueArr;
+ } else if (this.mode == 'multiSelector') {
+ result = this.valueArr;
+ }
+ if (event) this.$emit(event, result);
+ this.close();
+ },
+ // 鑾峰彇鏃堕棿鎴�
+ getTimestamp() {
+ // yyyy-mm-dd涓哄畨鍗撳啓娉曪紝涓嶆敮鎸乮OS锛岄渶瑕佷娇鐢�"/"鍒嗛殧锛屾墠鑳戒簩鑰呭吋瀹�
+ let time = this.year + '/' + this.month + '/' + this.day + ' ' + this.hour + ':' + this.minute + ':' + this.second;
+ return new Date(time).getTime() / 1000;
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import '../../libs/css/style.components.scss';
+
+.u-datetime-picker {
+ position: relative;
+ z-index: 999;
+}
+
+.u-picker-view {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.u-picker-header {
+ width: 100%;
+ height: 90rpx;
+ padding: 0 40rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ font-size: 30rpx;
+ background: #fff;
+ position: relative;
+}
+
+.u-picker-header::after {
+ content: '';
+ position: absolute;
+ border-bottom: 1rpx solid #eaeef1;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ bottom: 0;
+ right: 0;
+ left: 0;
+}
+
+.u-picker__title {
+ color: $u-content-color;
+}
+
+.u-picker-body {
+ width: 100%;
+ height: 500rpx;
+ overflow: hidden;
+ background-color: #fff;
+}
+
+.u-column-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ color: $u-main-color;
+ padding: 0 8rpx;
+}
+
+.u-text {
+ font-size: 24rpx;
+ padding-left: 8rpx;
+}
+
+.u-btn-picker {
+ padding: 16rpx;
+ box-sizing: border-box;
+ text-align: center;
+ text-decoration: none;
+}
+
+.u-opacity {
+ opacity: 0.5;
+}
+
+.u-btn-picker--primary {
+ color: $u-type-primary;
+}
+
+.u-btn-picker--tips {
+ color: $u-tips-color;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-popup/u-popup.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-popup/u-popup.vue"
new file mode 100644
index 0000000..01b939a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-popup/u-popup.vue"
@@ -0,0 +1,452 @@
+<template>
+ <view v-if="visibleSync" :style="[customStyle, {
+ zIndex: uZindex - 1
+ }]" :class="{ 'u-drawer-visible': showDrawer }" class="u-drawer" hover-stop-propagation>
+ <u-mask :custom-style="maskCustomStyle" :maskClickAble="maskCloseAble" :z-index="uZindex - 2" :show="showDrawer && mask" @click="maskClick"></u-mask>
+ <view
+ class="u-drawer-content"
+ @tap="modeCenterClose(mode)"
+ :class="[
+ safeAreaInsetBottom ? 'safe-area-inset-bottom' : '',
+ 'u-drawer-' + mode,
+ showDrawer ? 'u-drawer-content-visible' : '',
+ zoom && mode == 'center' ? 'u-animation-zoom' : ''
+ ]"
+ @touchmove.stop.prevent
+ @tap.stop.prevent
+ :style="[style]"
+ >
+ <view class="u-mode-center-box" @tap.stop.prevent @touchmove.stop.prevent v-if="mode == 'center'" :style="[centerStyle]">
+ <u-icon
+ @click="close"
+ v-if="closeable"
+ class="u-close"
+ :class="['u-close--' + closeIconPos]"
+ :name="closeIcon"
+ :color="closeIconColor"
+ :size="closeIconSize"
+ ></u-icon>
+ <scroll-view class="u-drawer__scroll-view" scroll-y="true">
+ <slot />
+ </scroll-view>
+ </view>
+ <scroll-view class="u-drawer__scroll-view" scroll-y="true" v-else>
+ <slot />
+ </scroll-view>
+ <view @tap="close" class="u-close" :class="['u-close--' + closeIconPos]">
+ <u-icon
+ v-if="mode != 'center' && closeable"
+ :name="closeIcon"
+ :color="closeIconColor"
+ :size="closeIconSize"
+ ></u-icon>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * popup 寮圭獥
+ * @description 寮瑰嚭灞傚鍣紝鐢ㄤ簬灞曠ず寮圭獥銆佷俊鎭彁绀虹瓑鍐呭锛屾敮鎸佷笂銆佷笅銆佸乏銆佸彸鍜屼腑閮ㄥ脊鍑恒�傜粍浠跺彧鎻愪緵瀹瑰櫒锛屽唴閮ㄥ唴瀹圭敱鐢ㄦ埛鑷畾涔�
+ * @tutorial https://www.uviewui.com/components/popup.html
+ * @property {String} mode 寮瑰嚭鏂瑰悜锛堥粯璁eft锛�
+ * @property {Boolean} mask 鏄惁鏄剧ず閬僵锛堥粯璁rue锛�
+ * @property {Stringr | Number} length mode=left | 瑙佸畼缃戣鏄庯紙榛樿auto锛�
+ * @property {Boolean} zoom 鏄惁寮�鍚缉鏀惧姩鐢伙紝鍙湪mode涓篶enter鏃舵湁鏁堬紙榛樿true锛�
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛堥粯璁alse锛�
+ * @property {Boolean} mask-close-able 鐐瑰嚮閬僵鏄惁鍙互鍏抽棴寮瑰嚭灞傦紙榛樿true锛�
+ * @property {Object} custom-style 鐢ㄦ埛鑷畾涔夋牱寮�
+ * @property {Stringr | Number} negative-top 涓儴寮瑰嚭鏃讹紝寰�涓婂亸绉荤殑鍊�
+ * @property {Numberr | String} border-radius 寮圭獥鍦嗚鍊硷紙榛樿0锛�
+ * @property {Numberr | String} z-index 寮瑰嚭鍐呭鐨剒-index鍊硷紙榛樿1075锛�
+ * @property {Boolean} closeable 鏄惁鏄剧ず鍏抽棴鍥炬爣锛堥粯璁alse锛�
+ * @property {String} close-icon 鍏抽棴鍥炬爣鐨勫悕绉帮紝鍙兘uView鐨勫唴缃浘鏍�
+ * @property {String} close-icon-pos 鑷畾涔夊叧闂浘鏍囦綅缃紙榛樿top-right锛�
+ * @property {String} close-icon-color 鍏抽棴鍥炬爣鐨勯鑹诧紙榛樿#909399锛�
+ * @property {Number | String} close-icon-size 鍏抽棴鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�30锛�
+ * @event {Function} open 寮瑰嚭灞傛墦寮�
+ * @event {Function} close 寮瑰嚭灞傛敹璧�
+ * @example <u-popup v-model="show"><view>鍑烘筏娉ヨ�屼笉鏌擄紝婵竻娑熻�屼笉濡�</view></u-popup>
+ */
+export default {
+ name: 'u-popup',
+ props: {
+ /**
+ * 鏄剧ず鐘舵��
+ */
+ show: {
+ type: Boolean,
+ default: false
+ },
+ /**
+ * 寮瑰嚭鏂瑰悜锛宭eft|right|top|bottom|center
+ */
+ mode: {
+ type: String,
+ default: 'left'
+ },
+ /**
+ * 鏄惁鏄剧ず閬僵
+ */
+ mask: {
+ type: Boolean,
+ default: true
+ },
+ // 鎶藉眽鐨勫搴�(mode=left|right)锛屾垨鑰呴珮搴�(mode=top|bottom)锛屽崟浣峳px锛屾垨鑰�"auto"
+ // 鎴栬�呯櫨鍒嗘瘮"50%"锛岃〃绀虹敱鍐呭鎾戝紑楂樺害鎴栬�呭搴�
+ length: {
+ type: [Number, String],
+ default: 'auto'
+ },
+ // 鏄惁寮�鍚缉鏀惧姩鐢伙紝鍙湪mode=center鏃舵湁鏁�
+ zoom: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤锛屽紑鍚殑璇濓紝浼氬湪iPhoneX鏈哄瀷搴曢儴娣诲姞涓�瀹氱殑鍐呰竟璺�
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍙互閫氳繃鐐瑰嚮閬僵杩涜鍏抽棴
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 鐢ㄦ埛鑷畾涔夋牱寮�
+ customStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 姝や负鍐呴儴鍙傛暟锛屼笉鍦ㄦ枃妗e澶栦娇鐢紝涓轰簡瑙e喅Picker鍜宬eyboard绛夎瀺鍚堜簡寮圭獥鐨勭粍浠�
+ // 瀵箆-model鍙屽悜缁戝畾澶氬眰璋冪敤閫犳垚鎶ラ敊涓嶈兘淇敼props鍊肩殑闂
+ popup: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄剧ず鏄剧ず寮圭獥鐨勫渾瑙掞紝鍗曚綅rpx
+ borderRadius: {
+ type: [Number, String],
+ default: 0
+ },
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏄惁鏄剧ず鍏抽棴鍥炬爣
+ closeable: {
+ type: Boolean,
+ default: false
+ },
+ // 鍏抽棴鍥炬爣鐨勫悕绉帮紝鍙兘uView鐨勫唴缃浘鏍�
+ closeIcon: {
+ type: String,
+ default: 'close'
+ },
+ // 鑷畾涔夊叧闂浘鏍囦綅缃紝top-left涓哄乏涓婅锛宼op-right涓哄彸涓婅锛宐ottom-left涓哄乏涓嬭锛宐ottom-right涓哄彸涓嬭
+ closeIconPos: {
+ type: String,
+ default: 'top-right'
+ },
+ // 鍏抽棴鍥炬爣鐨勯鑹�
+ closeIconColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 鍏抽棴鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ closeIconSize: {
+ type: [String, Number],
+ default: '30'
+ },
+ // 瀹藉害锛屽彧瀵瑰乏锛屽彸锛屼腑閮ㄥ脊鍑烘椂璧蜂綔鐢紝鍗曚綅rpx锛屾垨鑰�"auto"
+ // 鎴栬�呯櫨鍒嗘瘮"50%"锛岃〃绀虹敱鍐呭鎾戝紑楂樺害鎴栬�呭搴︼紝浼樺厛绾ч珮浜巐ength鍙傛暟
+ width: {
+ type: String,
+ default: ''
+ },
+ // 楂樺害锛屽彧瀵逛笂锛屼笅锛屼腑閮ㄥ脊鍑烘椂璧蜂綔鐢紝鍗曚綅rpx锛屾垨鑰�"auto"
+ // 鎴栬�呯櫨鍒嗘瘮"50%"锛岃〃绀虹敱鍐呭鎾戝紑楂樺害鎴栬�呭搴︼紝浼樺厛绾ч珮浜巐ength鍙傛暟
+ height: {
+ type: String,
+ default: ''
+ },
+ // 缁欎竴涓礋鐨刴argin-top锛屽線涓婂亸绉伙紝閬垮厤鍜岄敭鐩橀噸鍚堢殑鎯呭喌锛屼粎鍦╩ode=center鏃舵湁鏁�
+ negativeTop: {
+ type: [String, Number],
+ default: 0
+ },
+ // 閬僵鐨勬牱寮忥紝涓�鑸敤浜庝慨鏀归伄缃╃殑閫忔槑搴�
+ maskCustomStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ visibleSync: false,
+ showDrawer: false,
+ timer: null,
+ closeFromInner: false, // value鐨勫�兼敼鍙橈紝鏄彂鐢熷湪鍐呴儴杩樻槸澶栭儴
+ };
+ },
+ computed: {
+ // 鏍规嵁mode鐨勪綅缃紝璁惧畾鍏跺脊绐楃殑瀹藉害(mode = left|right)锛屾垨鑰呴珮搴�(mode = top|bottom)
+ style() {
+ let style = {};
+ // 濡傛灉鏄乏杈规垨鑰呬笂杈瑰脊鍑烘椂锛岄渶瑕佺粰translate璁剧疆涓鸿礋鍊硷紝鐢ㄤ簬闅愯棌
+ if (this.mode == 'left' || this.mode == 'right') {
+ style = {
+ width: this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length),
+ height: '100%',
+ transform: `translate3D(${this.mode == 'left' ? '-100%' : '100%'},0px,0px)`
+ };
+ } else if (this.mode == 'top' || this.mode == 'bottom') {
+ style = {
+ width: '100%',
+ height: this.height ? this.getUnitValue(this.height) : this.getUnitValue(this.length),
+ transform: `translate3D(0px,${this.mode == 'top' ? '-100%' : '100%'},0px)`
+ };
+ }
+ style.zIndex = this.uZindex;
+ // 濡傛灉鐢ㄦ埛璁剧疆浜哹orderRadius鍊硷紝娣诲姞寮圭獥鐨勫渾瑙�
+ if (this.borderRadius) {
+ switch (this.mode) {
+ case 'left':
+ style.borderRadius = `0 ${this.borderRadius}rpx ${this.borderRadius}rpx 0`;
+ break;
+ case 'top':
+ style.borderRadius = `0 0 ${this.borderRadius}rpx ${this.borderRadius}rpx`;
+ break;
+ case 'right':
+ style.borderRadius = `${this.borderRadius}rpx 0 0 ${this.borderRadius}rpx`;
+ break;
+ case 'bottom':
+ style.borderRadius = `${this.borderRadius}rpx ${this.borderRadius}rpx 0 0`;
+ break;
+ default:
+ }
+ // 涓嶅姞鍙兘鍦嗚鏃犳晥
+ style.overflow = 'hidden';
+ }
+ return style;
+ },
+ // 涓儴寮圭獥鐨勭壒鏈夋牱寮�
+ centerStyle() {
+ let style = {};
+ style.width = this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length);
+ // 涓儴寮瑰嚭鐨勬ā寮忥紝濡傛灉娌℃湁璁剧疆楂樺害锛屽氨鐢╝uto鍊硷紝鐢卞唴瀹规拺寮�楂樺害
+ style.height = this.height ? this.getUnitValue(this.height) : 'auto';
+ style.zIndex = this.uZindex;
+ style.marginTop = `-${this.$u.addUnit(this.negativeTop)}`;
+ if (this.borderRadius) {
+ style.borderRadius = `${this.borderRadius}rpx`;
+ // 涓嶅姞鍙兘鍦嗚鏃犳晥
+ style.overflow = 'hidden';
+ }
+ return style;
+ },
+ // 璁$畻鏁寸悊鍚庣殑z-index鍊�
+ uZindex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ }
+ },
+ watch: {
+ value(val) {
+ if (val) {
+ this.open();
+ } else if(!this.closeFromInner) {
+ this.close();
+ }
+ this.closeFromInner = false;
+ }
+ },
+ mounted() {
+ // 缁勪欢娓叉煋瀹屾垚鏃讹紝妫�鏌alue鏄惁涓簍rue锛屽鏋滄槸锛屽脊鍑簆opup
+ this.value && this.open();
+ },
+ methods: {
+ // 鍒ゆ柇浼犲叆鐨勫�硷紝鏄惁甯︽湁鍗曚綅锛屽鏋滄病鏈夛紝灏遍粯璁ょ敤rpx鍗曚綅
+ getUnitValue(val) {
+ if(/(%|px|rpx|auto)$/.test(val)) return val;
+ else return val + 'rpx'
+ },
+ // 閬僵琚偣鍑�
+ maskClick() {
+ this.close();
+ },
+ close() {
+ // 鏍囪鍏抽棴鏄唴閮ㄥ彂鐢熺殑锛屽惁鍒欎慨鏀逛簡value鍊硷紝瀵艰嚧watch涓value妫�娴嬶紝瀵艰嚧鍐嶆墽琛屼竴閬峜lose
+ // 閫犳垚@close浜嬩欢瑙﹀彂涓ゆ
+ this.closeFromInner = true;
+ this.change('showDrawer', 'visibleSync', false);
+ },
+ // 涓儴寮瑰嚭鏃讹紝闇�瑕�.u-drawer-content灏嗗眳涓唴瀹癸紝姝ゅ厓绱犱細閾烘弧灞忓箷锛岀偣鍑婚渶瑕佸叧闂脊绐�
+ // 璁╁叾鍙湪mode=center鏃惰捣浣滅敤
+ modeCenterClose(mode) {
+ if (mode != 'center' || !this.maskCloseAble) return;
+ this.close();
+ },
+ open() {
+ this.change('visibleSync', 'showDrawer', true);
+ },
+ // 姝ゅ鐨勫師鐞嗘槸锛屽叧闂椂鍏堥�氳繃鍔ㄧ敾闅愯棌寮圭獥鍜岄伄缃╋紝鍐嶇Щ闄ゆ暣涓粍浠�
+ // 鎵撳紑鏃讹紝鍏堟覆鏌撶粍浠讹紝寤舵椂涓�瀹氭椂闂村啀璁╅伄缃╁拰寮圭獥鐨勫姩鐢昏捣浣滅敤
+ change(param1, param2, status) {
+ // 濡傛灉this.popup涓篺alse锛屾剰鍛崇潃涓簆icker锛宎ctionsheet绛夌粍浠惰皟鐢ㄤ簡popup缁勪欢
+ if (this.popup == true) {
+ this.$emit('input', status);
+ }
+ this[param1] = status;
+ if(status) {
+ // #ifdef H5 || MP
+ this.timer = setTimeout(() => {
+ this[param2] = status;
+ this.$emit(status ? 'open' : 'close');
+ }, 50);
+ // #endif
+ // #ifndef H5 || MP
+ this.$nextTick(() => {
+ this[param2] = status;
+ this.$emit(status ? 'open' : 'close');
+ })
+ // #endif
+ } else {
+ this.timer = setTimeout(() => {
+ this[param2] = status;
+ this.$emit(status ? 'open' : 'close');
+ }, 300);
+ }
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-drawer {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+}
+
+.u-drawer-content {
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: absolute;
+ z-index: 1003;
+ transition: all 0.3s linear;
+}
+
+.u-drawer__scroll-view {
+ width: 100%;
+ height: 100%;
+}
+
+.u-drawer-left {
+ top: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #ffffff;
+}
+
+.u-drawer-right {
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background-color: #ffffff;
+}
+
+.u-drawer-top {
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: #ffffff;
+}
+
+.u-drawer-bottom {
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background-color: #ffffff;
+}
+
+.u-drawer-center {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ flex-direction: column;
+ /* #endif */
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+ justify-content: center;
+ align-items: center;
+ opacity: 0;
+ z-index: 99999;
+}
+
+.u-mode-center-box {
+ min-width: 100rpx;
+ min-height: 100rpx;
+ /* #ifndef APP-NVUE */
+ display: block;
+ /* #endif */
+ position: relative;
+ background-color: #ffffff;
+}
+
+.u-drawer-content-visible.u-drawer-center {
+ transform: scale(1);
+ opacity: 1;
+}
+
+.u-animation-zoom {
+ transform: scale(1.15);
+}
+
+.u-drawer-content-visible {
+ transform: translate3D(0px, 0px, 0px) !important;
+}
+
+.u-close {
+ position: absolute;
+ z-index: 3;
+}
+
+.u-close--top-left {
+ top: 30rpx;
+ left: 30rpx;
+}
+
+.u-close--top-right {
+ top: 30rpx;
+ right: 30rpx;
+}
+
+.u-close--bottom-left {
+ bottom: 30rpx;
+ left: 30rpx;
+}
+
+.u-close--bottom-right {
+ right: 30rpx;
+ bottom: 30rpx;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio-group/u-radio-group.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio-group/u-radio-group.vue"
new file mode 100644
index 0000000..98c6864
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio-group/u-radio-group.vue"
@@ -0,0 +1,105 @@
+<template>
+ <view class="u-radio-group u-clearfix">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ import Emitter from '../../libs/util/emitter.js';
+ /**
+ * radioRroup 鍗曢�夋鐖剁粍浠�
+ * @description 鍗曢�夋鐢ㄤ簬鏈変竴涓�夋嫨锛岀敤鎴峰彧鑳介�夋嫨鍏朵腑涓�涓殑鍦烘櫙銆傛惌閰島-radio浣跨敤
+ * @tutorial https://www.uviewui.com/components/radio.html
+ * @property {Boolean} disabled 鏄惁绂佺敤鎵�鏈塺adio锛堥粯璁alse锛�
+ * @property {String Number} size 缁勪欢鏁翠綋鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�40锛�
+ * @property {String} active-color 閫変腑鏃剁殑棰滆壊锛屽簲鐢ㄥ埌鎵�鏈夊瓙Radio缁勪欢锛堥粯璁�#2979ff锛�
+ * @property {String Number} icon-size 鍥炬爣澶у皬锛屽崟浣峳px锛堥粯璁�20锛�
+ * @property {String} shape 澶栬褰㈢姸锛宻hape-鏂瑰舰锛宑ircle-鍦嗗舰(榛樿circle)
+ * @property {Boolean} label-disabled 鏄惁绂佹鐐瑰嚮鏂囨湰鎿嶄綔checkbox(榛樿false)
+ * @property {String} width 瀹藉害锛岄渶甯﹀崟浣�
+ * @property {Boolean} wrap 鏄惁姣忎釜radio閮芥崲琛岋紙榛樿false锛�
+ * @event {Function} change 浠讳竴涓猺adio鐘舵�佸彂鐢熷彉鍖栨椂瑙﹀彂
+ * @example <u-radio-group v-model="value"></u-radio-group>
+ */
+ export default {
+ name: "u-radio-group",
+ mixins: [Emitter],
+ props: {
+ // 鏄惁绂佺敤鎵�鏈夊崟閫夋
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 鍖归厤鏌愪竴涓猺adio缁勪欢锛屽鏋滄煇涓猺adio鐨刵ame鍊肩瓑浜庢鍊硷紝閭d箞杩欎釜radio灏辫浼氶�変腑
+ value: {
+ type: [String, Number],
+ default: ''
+ },
+ // 閫変腑鐘舵�佷笅鐨勯鑹�
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 缁勪欢鐨勬暣浣撳ぇ灏�
+ size: {
+ type: [String, Number],
+ default: 34
+ },
+ // 鏄惁绂佹鐐瑰嚮鎻愮ず璇�変腑澶嶉�夋
+ labelDisabled: {
+ type: Boolean,
+ default: false
+ },
+ // 褰㈢姸锛宻quare涓烘柟褰紝circle涓哄師鍨�
+ shape: {
+ type: String,
+ default: 'circle'
+ },
+ // 鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ iconSize: {
+ type: [String, Number],
+ default: 20
+ },
+ // 姣忎釜checkbox鍗爑-checkbox-group鐨勫搴�
+ width: {
+ type: String,
+ default: 'auto'
+ },
+ // 鏄惁姣忎釜checkbox閮芥崲琛�
+ wrap: {
+ type: Boolean,
+ default: false
+ }
+ },
+ provide() {
+ return {
+ radioGroup: this
+ }
+ },
+ methods: {
+ // 璇ユ柟娉曟湁瀛愮粍浠秗adio璋冪敤锛屽綋涓�涓猺adio琚�変腑鐨勬椂鍊欙紝缁欑埗缁勪欢璁剧疆value鍊�(props浼犻�掔殑value)
+ setValue(val) {
+ // 閫氳繃emit浜嬩欢锛岃缃埗缁勪欢閫氳繃v-model鍙屽悜缁戝畾鐨勫��
+ this.$emit('input', val);
+ // 绛夊緟涓嬩竴涓懆鏈熷啀鎵ц锛屽洜涓簍his.$emit('input')浣滅敤浜庣埗缁勪欢锛屽啀鍙嶉鍒板瓙缁勪欢鍐呴儴锛岄渶瑕佹椂闂�
+ this.$nextTick(function() {
+ this.$emit('change', val);
+ // 鍙戝嚭浜嬩欢锛岀敤浜庡湪琛ㄥ崟缁勪欢涓祵鍏adio鐨勬儏鍐碉紝杩涜楠岃瘉
+ // 灏嗗綋鍓嶇殑鍊煎彂閫佸埌 u-form-item 杩涜鏍¢獙
+ this.dispatch('u-form-item', 'on-form-change', val);
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-radio-group {
+ /* #ifndef MP */
+ display: inline-flex;
+ flex-wrap: wrap;
+ /* #endif */
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio/u-radio.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio/u-radio.vue"
new file mode 100644
index 0000000..671e385
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-radio/u-radio.vue"
@@ -0,0 +1,237 @@
+<template>
+ <view class="u-radio" :style="[radioStyle]">
+ <view class="u-radio__icon-wrap" @tap="toggle" :class="[iconClass]" :style="[iconStyle]">
+ <u-icon
+ name="checkbox-mark"
+ :size="elIconSize"
+ :color="iconColor"/>
+ </view>
+ <view class="u-radio__label" @tap="onClickLabel" :style="{
+ fontSize: $u.addUnit(labelSize)
+ }">
+ <slot />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * radio 鍗曢�夋
+ * @description 鍗曢�夋鐢ㄤ簬鏈変竴涓�夋嫨锛岀敤鎴峰彧鑳介�夋嫨鍏朵腑涓�涓殑鍦烘櫙銆傛惌閰島-radio-group浣跨敤
+ * @tutorial https://www.uviewui.com/components/radio.html
+ * @property {String Number} icon-size 鍥炬爣澶у皬锛屽崟浣峳px锛堥粯璁�24锛�
+ * @property {String Number} label-size label瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {String Number} name radio缁勪欢鐨勬爣绀虹
+ * @property {String} shape 褰㈢姸锛岃涓婃柟璇存槑锛堥粯璁ircle锛�
+ * @property {Boolean} disabled 鏄惁绂佺敤锛堥粯璁alse锛�
+ * @property {Boolean} label-disabled 鐐瑰嚮鏂囨湰鏄惁鍙互鎿嶄綔radio锛堥粯璁rue锛�
+ * @property {String} active-color 閫変腑鏃剁殑棰滆壊锛屽璁剧疆parent鐨刟ctive-color灏嗗け鏁�
+ * @event {Function} change 鏌愪釜radio鐘舵�佸彂鐢熷彉鍖栨椂瑙﹀彂(閫変腑鐘舵��)
+ * @example <u-radio :label-disabled="false">闂ㄦ帺榛勬槒锛屾棤璁$暀鏄ヤ綇</u-radio>
+ */
+ export default {
+ name: "u-radio",
+ props: {
+ // radio鐨勫悕绉�
+ name: {
+ type: [String, Number],
+ default: ''
+ },
+ // 褰㈢姸锛宻quare涓烘柟褰紝circle涓哄師鍨�
+ shape: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁绂佺敤
+ disabled: {
+ type: [String, Boolean],
+ default: ''
+ },
+ // 鏄惁绂佹鐐瑰嚮鎻愮ず璇�変腑澶嶉�夋
+ labelDisabled: {
+ type: [String, Boolean],
+ default: ''
+ },
+ // 閫変腑鐘舵�佷笅鐨勯鑹诧紝濡傝缃鍊硷紝灏嗕細瑕嗙洊parent鐨刟ctiveColor鍊�
+ activeColor: {
+ type: String,
+ default: ''
+ },
+ // 鍥炬爣鐨勫ぇ灏忥紝鍗曚綅rpx
+ iconSize: {
+ type: [String, Number],
+ default: ''
+ },
+ // label鐨勫瓧浣撳ぇ灏忥紝rpx鍗曚綅
+ labelSize: {
+ type: [String, Number],
+ default: ''
+ },
+ },
+ data() {
+ return {
+ parentDisabled: false
+ };
+ },
+ created() {
+ // this.parentDisabled = this.parent.disabled;
+ // 鏀粯瀹濆皬绋嬪簭涓嶆敮鎸乸rovide/inject锛屾墍浠ヤ娇鐢ㄨ繖涓柟娉曡幏鍙栨暣涓埗缁勪欢锛屽湪created瀹氫箟锛岄伩鍏嶅惊鐜簲鐢�
+ this.parent = this.$u.$parent.call(this, 'u-radio-group');
+ },
+ computed: {
+ // 鏄惁绂佺敤锛屽鏋滅埗缁勪欢u-raios-group绂佺敤鐨勮瘽锛屽皢浼氬拷鐣ュ瓙缁勪欢鐨勯厤缃�
+ elDisabled() {
+ return this.disabled !== '' ? this.disabled : this.parent ? this.parent.disabled : false;
+ },
+ // 鏄惁绂佺敤label鐐瑰嚮
+ elLabelDisabled() {
+ return this.labelDisabled !== '' ? this.labelDisabled : this.parent ? this.parent.labelDisabled : false;
+ },
+ // 缁勪欢灏哄锛屽搴攕ize鐨勫�硷紝榛樿鍊间负34rpx
+ elSize() {
+ return this.size ? this.size : (this.parent ? this.parent.size : 34);
+ },
+ // 缁勪欢鐨勫嬀閫夊浘鏍囩殑灏哄锛岄粯璁�20
+ elIconSize() {
+ return this.iconSize ? this.iconSize : (this.parent ? this.parent.iconSize : 20);
+ },
+ // 缁勪欢閫変腑婵�娲绘椂鐨勯鑹�
+ elActiveColor() {
+ return this.activeColor ? this.activeColor : (this.parent ? this.parent.activeColor : 'primary');
+ },
+ // 缁勪欢鐨勫舰鐘�
+ elShape() {
+ return this.shape ? this.shape : (this.parent ? this.parent.shape : 'circle');
+ },
+ // 璁剧疆radio鐨勭姸鎬侊紝瑕佹眰radio鐨刵ame绛変簬parent鐨剉alue鏃舵墠涓洪�変腑鐘舵��
+ iconStyle() {
+ let style = {};
+ if (this.elActiveColor && this.name == this.parent.value && !this.elDisabled) {
+ style.borderColor = this.elActiveColor;
+ style.backgroundColor = this.elActiveColor;
+ }
+ style.width = this.$u.addUnit(this.elSize);
+ style.height = this.$u.addUnit(this.elSize);
+ return style;
+ },
+ iconColor() {
+ return this.name == this.parent.value ? '#ffffff' : 'transparent';
+ },
+ iconClass() {
+ let classes = [];
+ classes.push('u-radio__icon-wrap--' + this.elShape);
+ if (this.name == this.parent.value) classes.push('u-radio__icon-wrap--checked');
+ if (this.elDisabled) classes.push('u-radio__icon-wrap--disabled');
+ if (this.name == this.parent.value && this.elDisabled) classes.push(
+ 'u-radio__icon-wrap--disabled--checked');
+ // 鏀粯瀹濆皬绋嬪簭鏃犳硶鍔ㄦ�佺粦瀹氫竴涓暟缁勭被鍚嶏紝鍚﹀垯瑙f瀽鍑烘潵鐨勭粨鏋滀細甯︽湁","锛岃�屽鑷村け鏁�
+ return classes.join(' ');
+ },
+ radioStyle() {
+ let style = {};
+ if (this.parent.width) {
+ style.width = this.parent.width;
+ // #ifdef MP
+ // 鍚勫灏忕▼搴忓洜涓哄畠浠壒娈婄殑缂栬瘧缁撴瀯锛屼娇鐢╢loat甯冨眬
+ style.float = 'left';
+ // #endif
+ // #ifndef MP
+ // H5鍜孉PP浣跨敤flex甯冨眬
+ style.flex = `0 0 ${this.parent.width}`;
+ // #endif
+ }
+ if (this.parent.wrap) {
+ style.width = '100%';
+ // #ifndef MP
+ // H5鍜孉PP浣跨敤flex甯冨眬锛屽皢瀹藉害璁剧疆100%锛屽嵆鍙嚜鍔ㄦ崲琛�
+ style.flex = '0 0 100%';
+ // #endif
+ }
+ return style;
+ }
+ },
+ methods: {
+ onClickLabel() {
+ if (!this.elLabelDisabled && !this.elDisabled) {
+ this.parent.setValue(this.name);
+ this.emitEvent();
+ }
+ },
+ toggle() {
+ if (!this.elDisabled) {
+ this.parent.setValue(this.name);
+ this.emitEvent();
+ }
+ },
+ emitEvent() {
+ // u-radio鐨刵ame涓嶇瓑浜庣埗缁勪欢鐨剉-model鐨勫�兼椂(鎰忓懗鐫�鏈�変腑)锛屾墠鍙戝嚭浜嬩欢锛岄伩鍏嶅娆$偣鍑昏Е鍙戜簨浠�
+ if(this.parent.value != this.name) this.$emit('change', this.name);
+ },
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-radio {
+ display: -webkit-flex;
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+ user-select: none;
+ line-height: 1.8;
+
+ &__icon-wrap {
+ color: $u-content-color;
+ display: flex;
+ flex: none;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ width: 42rpx;
+ height: 42rpx;
+ color: transparent;
+ text-align: center;
+ transition-property: color, border-color, background-color;
+ font-size: 20px;
+ border: 1px solid #c8c9cc;
+ transition-duration: 0.2s;
+
+ &--circle {
+ border-radius: 100%;
+ }
+
+ &--square {
+ border-radius: 3px;
+ }
+
+ &--checked {
+ color: #fff;
+ background-color: #2979ff;
+ border-color: #2979ff;
+ }
+
+ &--disabled {
+ background-color: #ebedf0;
+ border-color: #c8c9cc;
+ }
+
+ &--disabled--checked {
+ color: #c8c9cc !important;
+ }
+ }
+
+ &__label {
+ word-wrap: break-word;
+ margin-left: 10rpx;
+ margin-right: 24rpx;
+ color: $u-content-color;
+ font-size: 30rpx;
+
+ &--disabled {
+ color: #c8c9cc;
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-rate/u-rate.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-rate/u-rate.vue"
new file mode 100644
index 0000000..ebde0f9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-rate/u-rate.vue"
@@ -0,0 +1,214 @@
+<template>
+ <view class="u-rate" :id="elId" @touchmove.stop.prevent="touchMove">
+ <view class="u-star-wrap" v-for="(item, index) in count" :key="index" :class="[elClass]">
+ <u-icon
+ :name="activeIndex > index ? activeIcon : inactiveIcon"
+ @click="click(index + 1, $event)"
+ :color="activeIndex > index ? activeColor : inactiveColor"
+ :custom-style="{
+ fontSize: size + 'rpx',
+ padding: `0 ${gutter / 2 + 'rpx'}`
+ }"
+ ></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * rate 璇勫垎
+ * @description 璇ョ粍浠朵竴鑸敤浜庢弧鎰忓害璋冩煡锛屾槦鍨嬭瘎鍒嗙殑鍦烘櫙
+ * @tutorial https://www.uviewui.com/components/rate.html
+ * @property {String Number} count 鏈�澶氬彲閫夌殑鏄熸槦鏁伴噺锛堥粯璁�5锛�
+ * @property {String Number} current 榛樿閫変腑鐨勬槦鏄熸暟閲忥紙榛樿0锛�
+ * @property {Boolean} disabled 鏄惁绂佹鐢ㄦ埛鎿嶄綔锛堥粯璁alse锛�
+ * @property {String Number} size 鏄熸槦鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�32锛�
+ * @property {String} inactive-color 鏈�変腑鏄熸槦鐨勯鑹诧紙榛樿#b2b2b2锛�
+ * @property {String} active-color 閫変腑鐨勬槦鏄熼鑹诧紙榛樿#FA3534锛�
+ * @property {String} active-icon 閫変腑鏃剁殑鍥炬爣鍚嶏紝鍙兘涓簎View鐨勫唴缃浘鏍囷紙榛樿star-fill锛�
+ * @property {String} inactive-icon 鏈�変腑鏃剁殑鍥炬爣鍚嶏紝鍙兘涓簎View鐨勫唴缃浘鏍囷紙榛樿star锛�
+ * @property {String} gutter 鏄熸槦涔嬮棿鐨勮窛绂伙紙榛樿10锛�
+ * @property {String Number} min-count 鏈�灏戦�変腑鏄熸槦鐨勪釜鏁帮紙榛樿0锛�
+ * @property {Boolean} allow-half 鏄惁鍏佽鍗婃槦閫夋嫨锛堥粯璁alse锛�
+ * @event {Function} change 閫変腑鐨勬槦鏄熷彂鐢熷彉鍖栨椂瑙﹀彂
+ * @example <u-rate :count="count" :current="2"></u-rate>
+ */
+export default {
+ name: 'u-rate',
+ props: {
+ // 鐢ㄤ簬v-model鍙屽悜缁戝畾閫変腑鐨勬槦鏄熸暟閲�
+ // 1.4.5鐗堟柊澧�
+ value: {
+ type: [Number, String],
+ default: -1
+ },
+ // 瑕佹樉绀虹殑鏄熸槦鏁伴噺
+ count: {
+ type: [Number, String],
+ default: 5
+ },
+ // 褰撳墠闇�瑕侀粯璁ら�変腑鐨勬槦鏄�(閫変腑鐨勪釜鏁�)
+ // 1.4.5鍚庨�氳繃value鍙屽悜缁戝畾锛屼笉鍐嶅缓璁娇鐢ㄦ鍙傛暟
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏄惁涓嶅彲閫変腑
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄熸槦鐨勫ぇ灏忥紝鍗曚綅rpx
+ size: {
+ type: [Number, String],
+ default: 32
+ },
+ // 鏈�変腑鏃剁殑棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#b2b2b2'
+ },
+ // 閫変腑鐨勯鑹�
+ activeColor: {
+ type: String,
+ default: '#FA3534'
+ },
+ // 鏄熸槦涔嬮棿鐨勯棿璺濓紝鍗曚綅rpx
+ gutter: {
+ type: [Number, String],
+ default: 10
+ },
+ // 鏈�灏戣兘閫夋嫨鐨勬槦鏄熶釜鏁�
+ minCount: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏄惁鍏佽鍗婃槦(鍔熻兘灏氭湭瀹炵幇)
+ allowHalf: {
+ type: Boolean,
+ default: false
+ },
+ // 閫変腑鏃剁殑鍥炬爣(鏄熸槦)
+ activeIcon: {
+ type: String,
+ default: 'star-fill'
+ },
+ // 鏈�変腑鏃剁殑鍥炬爣(鏄熸槦)
+ inactiveIcon: {
+ type: String,
+ default: 'star'
+ }
+ },
+ data() {
+ return {
+ // 鐢熸垚涓�涓敮涓�id锛屽惁鍒欎竴涓〉闈㈠涓瘎鍒嗙粍浠讹紝浼氶�犳垚鍐茬獊
+ elId: this.$u.guid(),
+ elClass: this.$u.guid(),
+ starBoxLeft: 0, // 璇勫垎鐩掑瓙宸﹁竟鍒板睆骞曞乏杈圭殑璺濈锛岀敤浜庢粦鍔ㄩ�夋嫨鏃惰绠楄窛绂�
+ // 褰撳墠婵�娲荤殑鏄熸槦鐨刬ndex锛屽鏋滃瓨鍦╲alue锛屼紭鍏堜娇鐢╲alue锛屽洜涓哄畠鍙互鍙屽悜缁戝畾(1.4.5鏂板)
+ activeIndex: this.value != -1 ? this.value : this.current,
+ starWidth: 0, // 姣忎釜鏄熸槦鐨勫搴�
+ starWidthArr: [] //姣忎釜鏄熸槦鏈�鍙宠竟鍒扮粍浠剁洅瀛愭渶宸﹁竟鐨勮窛绂�
+ };
+ },
+ watch: {
+ current(val) {
+ this.activeIndex = val;
+ },
+ value(val) {
+ this.activeIndex = val;
+ }
+ },
+ methods: {
+ // 鑾峰彇璇勫垎缁勪欢鐩掑瓙鐨勫竷灞�淇℃伅
+ getElRectById() {
+ // uView灏佽鐨勮幏鍙栬妭鐐圭殑鏂规硶锛岃瑙佹枃妗�
+ this.$u.getRect('#' + this.elId).then(res => {
+ this.starBoxLeft = res.left;
+ })
+ },
+ // 鑾峰彇鍗曚釜鏄熸槦鐨勫昂瀵�
+ getElRectByClass() {
+ // uView灏佽鐨勮幏鍙栬妭鐐圭殑鏂规硶锛岃瑙佹枃妗�
+ this.$u.getRect('.' + this.elClass).then(res => {
+ this.starWidth = res.width;
+ // 鎶婃瘡涓槦鏄熷彸杈瑰埌缁勪欢鐩掑瓙宸﹁竟鐨勮窛绂绘斁鍏ユ暟缁勪腑
+ for (let i = 0; i < this.count; i++) {
+ this.starWidthArr[i] = (i + 1) * this.starWidth;
+ }
+ })
+ },
+ // 鎵嬫寚婊戝姩
+ touchMove(e) {
+ if (this.disabled) {
+ return;
+ }
+ if (!e.changedTouches[0]) {
+ return;
+ }
+ const movePageX = e.changedTouches[0].pageX;
+ // 婊戝姩鐐圭浉瀵逛簬璇勫垎鐩掑瓙宸﹁竟鐨勮窛绂�
+ const distance = movePageX - this.starBoxLeft;
+
+ // 濡傛灉婊戝姩鍒颁簡璇勫垎鐩掑瓙鐨勫乏杈圭晫锛屽氨璁剧疆涓�0鏄�
+ if (distance <= 0) {
+ this.activeIndex = 0;
+ }
+ // 婊戝姩鐨勮窛绂伙紝鐩稿綋浜庡灏戦鏄熸槦
+ let index = Math.ceil(distance / this.starWidth);
+ this.activeIndex = index > this.count ? this.count : index;
+ // 瀵规渶灏戦鏄熸槦鐨勯檺鍒�
+ if (this.activeIndex < this.minCount) this.activeIndex = this.minCount;
+ this.emitEvent();
+ },
+ // 閫氳繃鐐瑰嚮锛岀洿鎺ラ�変腑
+ click(index, e) {
+ if (this.disabled) {
+ return;
+ }
+ // 鍗婃槦閫夋嫨锛屽皻鏈疄鐜�
+ if (this.allowHalf) {
+ }
+ // 瀵圭涓�涓槦鏄熺壒娈婂鐞嗭紝鍙湁涓�涓殑鏃跺�欙紝鐐瑰嚮鍙互鍙栨秷锛屽惁鍒欐棤娉曚綔0鏄熻瘎浠�
+ if (index == 1) {
+ if (this.activeIndex == 1) this.activeIndex = 0;
+ else this.activeIndex = 1;
+ } else {
+ this.activeIndex = index;
+ }
+ // 瀵规渶灏戦鏄熸槦鐨勯檺鍒�
+ if (this.activeIndex < this.minCount) this.activeIndex = this.minCount;
+ this.emitEvent();
+ },
+ // 鍙戝嚭浜嬩欢
+ emitEvent() {
+ // 鍙戝嚭change浜嬩欢
+ this.$emit('change', this.activeIndex);
+ // 鍚屾椂淇敼鍙屽悜缁戝畾鐨剉alue鐨勫��
+ if(this.value != -1) {
+ this.$emit('input', this.activeIndex);
+ }
+ }
+ },
+ mounted() {
+ this.getElRectById();
+ this.getElRectByClass();
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-rate {
+ display: -webkit-inline-flex;
+ display: inline-flex;
+ align-items: center;
+ margin: 0;
+ padding: 0;
+}
+
+.u-icon {
+ box-sizing: border-box;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-read-more/u-read-more.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-read-more/u-read-more.vue"
new file mode 100644
index 0000000..578bd8c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-read-more/u-read-more.vue"
@@ -0,0 +1,179 @@
+<template>
+ <view class="">
+ <view class="u-content" :class="[elId]" :style="{
+ height: isLongContent && !showMore ? showHeight + 'rpx' : 'auto',
+ textIndent: this.textIndent
+ }">
+ <slot></slot>
+ </view>
+ <view @tap="toggleReadMore" v-if="isLongContent" class="u-content__showmore-wrap"
+ :class="{ 'u-content__show-more': showMore }"
+ :style="[innerShadowStyle]">
+ <text class="u-content__showmore-wrap__readmore-btn" :style="{
+ fontSize: fontSize + 'rpx',
+ color: color
+ }">
+ {{ showMore ? openText : closeText }}
+ </text>
+ <view class="u-content__showmore-wrap__readmore-btn__icon u-flex">
+ <u-icon :color="color" :size="fontSize" :name="showMore ? 'arrow-up' : 'arrow-down'"></u-icon>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * readMore 闃呰鏇村
+ * @description 璇ョ粍浠朵竴鑸敤浜庡唴瀹硅緝闀匡紝棰勫厛鏀惰捣涓�閮ㄥ垎锛岀偣鍑诲睍寮�鍏ㄩ儴鍐呭鐨勫満鏅��
+ * @tutorial https://www.uviewui.com/components/readMore.html
+ * @property {String Number} show-height 鍐呭瓒呭嚭姝ら珮搴︽墠浼氭樉绀哄睍寮�鍏ㄦ枃鎸夐挳锛屽崟浣峳px锛堥粯璁�400锛�
+ * @property {Boolean} toggle 灞曞紑鍚庢槸鍚︽樉绀烘敹璧锋寜閽紙榛樿false锛�
+ * @property {String} close-text 鍏抽棴鏃剁殑鎻愮ず鏂囧瓧锛堥粯璁も�滃睍寮�闃呰鍏ㄦ枃鈥濓級
+ * @property {String Number} font-size 鎻愮ず鏂囧瓧鐨勫ぇ灏忥紝鍗曚綅rpx锛堥粯璁�28锛�
+ * @property {String} text-indent 娈佃惤棣栬缂╄繘鐨勫瓧绗︿釜鏁帮紙榛樿2em锛�
+ * @property {String} open-text 灞曞紑鏃剁殑鎻愮ず鏂囧瓧锛堥粯璁も�滄敹璧封�濓級
+ * @property {String} color 鎻愮ず鏂囧瓧鐨勯鑹诧紙榛樿#2979ff锛�
+ * @example <u-read-more><rich-text :nodes="content"></rich-text></u-read-more>
+ */
+ export default {
+ name: "u-read-more",
+ props: {
+ // 榛樿鐨勬樉绀哄崰浣嶉珮搴︼紝鍗曚綅涓簉px
+ showHeight: {
+ type: [Number, String],
+ default: 400
+ },
+ // 灞曞紑鍚庢槸鍚︽樉绀�"鏀惰捣"鎸夐挳
+ toggle: {
+ type: Boolean,
+ default: false
+ },
+ // 鍏抽棴鏃剁殑鎻愮ず鏂囧瓧
+ closeText: {
+ type: String,
+ default: '灞曞紑闃呰鍏ㄦ枃'
+ },
+ // 灞曞紑鏃剁殑鎻愮ず鏂囧瓧
+ openText: {
+ type: String,
+ default: '鏀惰捣'
+ },
+ // 鎻愮ず鐨勬枃瀛楅鑹�
+ color: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鎻愮ず鏂囧瓧鐨勫ぇ灏�
+ fontSize: {
+ type: [String, Number],
+ default: 28
+ },
+ // 鏄惁鏄剧ず闃村奖
+ shadowStyle: {
+ type: Object,
+ default () {
+ return {
+ backgroundImage: "linear-gradient(-180deg, rgba(255, 255, 255, 0) 0%, #fff 80%)",
+ paddingTop: "300rpx",
+ marginTop: "-300rpx"
+ }
+ }
+ },
+ // 娈佃惤棣栬缂╄繘鐨勫瓧绗︿釜鏁�
+ textIndent: {
+ type: String,
+ default: '2em'
+ },
+ // open鍜宑lose浜嬩欢鏃讹紝灏嗘鍙傛暟杩斿洖鍦ㄥ洖璋冨弬鏁颁腑
+ index: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ watch: {
+ paramsChange(val) {
+ this.init();
+ }
+ },
+ computed: {
+ paramsChange() {
+ return `${this.toggle}-${this.showHeight}`;
+ },
+ // 灞曞紑鍚庢棤闇�闃村奖锛屾敹璧锋椂鎵嶉渶瑕侀槾褰辨牱寮�
+ innerShadowStyle() {
+ if (this.showMore) return {};
+ else return this.shadowStyle
+ }
+ },
+ data() {
+ return {
+ isLongContent: false, // 鏄惁闇�瑕侀殣钘忎竴閮ㄥ垎鍐呭
+ showMore: false, // 褰撳墠闅愯棌涓庢樉绀虹殑鐘舵�侊紝true-鏄剧ず锛宖alse-鏀惰捣
+ elId: this.$u.guid(), // 鐢熸垚鍞竴class
+ };
+ },
+ mounted() {
+ this.$nextTick(function() {
+ this.init();
+ })
+ },
+ methods: {
+ init() {
+ this.$uGetRect('.' + this.elId).then(res => {
+ // 鍒ゆ柇楂樺害锛屽鏋滅湡瀹炲唴瀹归珮搴﹀ぇ浜庡崰浣嶉珮搴︼紝鍒欐樉绀烘敹璧蜂笌灞曞紑鐨勬帶鍒舵寜閽�
+ if (res.height > uni.upx2px(this.showHeight)) {
+ this.isLongContent = true;
+ this.showMore = false;
+ }
+ })
+ },
+ // 灞曞紑鎴栬�呮敹璧�
+ toggleReadMore() {
+ this.showMore = !this.showMore;
+ // 濡傛灉toggle涓篺alse锛岄殣钘�"鏀惰捣"閮ㄥ垎鐨勫唴瀹�
+ if (this.toggle == false) this.isLongContent = false;
+ // 鍙戝嚭鎵撳紑鎴栬�呮敹榻愮殑浜嬩欢
+ this.$emit(this.showMore ? 'open' : 'close', this.index);
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-content {
+ font-size: 30rpx;
+ color: $u-content-color;
+ line-height: 1.8;
+ text-align: left;
+ overflow: hidden;
+
+ &__show-more {
+ padding-top: 0;
+ background: none;
+ margin-top: 20rpx;
+ }
+
+ &__showmore-wrap {
+ position: relative;
+ width: 100%;
+ padding-bottom: 26rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ &__readmore-btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ line-height: 1;
+
+ &__icon {
+ margin-left: 14rpx;
+ }
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row-notice/u-row-notice.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row-notice/u-row-notice.vue"
new file mode 100644
index 0000000..6d0e090
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row-notice/u-row-notice.vue"
@@ -0,0 +1,267 @@
+<template>
+ <view
+ v-if="show"
+ class="u-notice-bar"
+ :style="{
+ background: computeBgColor,
+ padding: padding
+ }"
+ :class="[
+ type ? `u-type-${type}-light-bg` : ''
+ ]"
+ >
+ <view class="u-direction-row">
+ <view class="u-icon-wrap">
+ <u-icon class="u-left-icon" v-if="volumeIcon" name="volume-fill" :size="volumeSize" :color="computeColor"></u-icon>
+ </view>
+ <view class="u-notice-box" id="u-notice-box">
+ <view
+ class="u-notice-content"
+ id="u-notice-content"
+ :style="{
+ animationDuration: animationDuration,
+ animationPlayState: animationPlayState,
+ }"
+ >
+ <text class="u-notice-text" @tap="click" :style="[textStyle]"
+ :class="['u-type-' + type]">{{showText}}</text>
+ </view>
+ </view>
+ <view class="u-icon-wrap">
+ <u-icon @click="getMore" class="u-right-icon" v-if="moreIcon" name="arrow-right" :size="26" :color="computeColor"></u-icon>
+ <u-icon @click="close" class="u-right-icon" v-if="closeIcon" name="close" :size="24" :color="computeColor"></u-icon>
+ </view>
+ </view>
+ </view>
+</template>
+<script>
+export default {
+ props: {
+ // 鏄剧ず鐨勫唴瀹癸紝鏁扮粍
+ list: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 鏄剧ず鐨勪富棰橈紝success|error|primary|info|warning|none
+ // none涓婚榛樿涓洪�忔槑鑳屾櫙锛岄粦鑹�(contentColor)瀛椾綋
+ type: {
+ type: String,
+ default: 'warning'
+ },
+ // 鏄惁鏄剧ず宸︿晶鐨勯煶閲忓浘鏍�
+ volumeIcon: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫彸绠ご鍥炬爣
+ moreIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず鍙充晶鐨勫叧闂浘鏍�
+ closeIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鑷姩鎾斁
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 鏂囧瓧棰滆壊锛屽悇鍥炬爣涔熶細浣跨敤鏂囧瓧棰滆壊
+ color: {
+ type: String,
+ default: ''
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 26
+ },
+ // 闊抽噺鍠囧彮鐨勫ぇ灏�
+ volumeSize: {
+ type: [Number, String],
+ default: 34
+ },
+ // 姘村钩婊氬姩鏃剁殑婊氬姩閫熷害锛屽嵆姣忕婊氬姩澶氬皯rpx锛岃繖鏈夊埄浜庢帶鍒舵枃瀛楁棤璁哄灏戞椂锛岄兘鑳芥湁涓�涓亽瀹氱殑閫熷害
+ speed: {
+ type: [Number, String],
+ default: 160
+ },
+ // 鎾斁鐘舵�侊紝play-鎾斁锛宲aused-鏆傚仠
+ playState: {
+ type: String,
+ default: 'play'
+ },
+ // 閫氱煡鐨勮竟璺�
+ padding: {
+ type: [Number, String],
+ default: '18rpx 24rpx'
+ }
+ },
+ data() {
+ return {
+ textWidth: 0, // 婊氬姩鐨勬枃瀛楀搴�
+ boxWidth: 0, // 渚涙枃瀛楁粴鍔ㄧ殑鐖剁洅瀛愮殑瀹藉害锛屽拰鍓嶈�呬竴璧蜂负浜嗚绠楁粴鍔ㄩ�熷害
+ animationDuration: '10s', // 鍔ㄧ敾鎵ц鏃堕棿
+ animationPlayState: 'paused', // 鍔ㄧ敾鐨勫紑濮嬪拰缁撴潫鎵ц
+ showText: '' // 鏄剧ず鐨勬枃鏈�
+ };
+ },
+ watch: {
+ list: {
+ immediate: true,
+ handler(val) {
+ this.showText = val.join('锛�');
+ this.$nextTick(() => {
+ this.initSize();
+ });
+ }
+ },
+ playState(val) {
+ if(val == 'play') this.animationPlayState = 'running';
+ else this.animationPlayState = 'paused';
+ },
+ speed(val) {
+ this.initSize();
+ }
+ },
+ computed: {
+ // 璁$畻瀛椾綋棰滆壊锛屽鏋滄病鏈夎嚜瀹氫箟鐨勶紝灏辩敤uview涓婚棰滆壊
+ computeColor() {
+ if (this.color) return this.color;
+ // 濡傛灉鏄棤涓婚锛屽氨榛樿浣跨敤content-color
+ else if(this.type == 'none') return '#606266';
+ else return this.type;
+ },
+ // 鏂囧瓧鍐呭鐨勬牱寮�
+ textStyle() {
+ let style = {};
+ if (this.color) style.color = this.color;
+ else if(this.type == 'none') style.color = '#606266';
+ style.fontSize = this.fontSize + 'rpx';
+ return style;
+ },
+ // 璁$畻鑳屾櫙棰滆壊
+ computeBgColor() {
+ if (this.bgColor) return this.bgColor;
+ else if(this.type == 'none') return 'transparent';
+ }
+ },
+ mounted() {
+ this.$nextTick(() => {
+ this.initSize();
+ });
+ },
+ methods: {
+ initSize() {
+ let query = [],
+ boxWidth = 0,
+ textWidth = 0;
+ let textQuery = new Promise((resolve, reject) => {
+ uni.createSelectorQuery()
+ .in(this)
+ .select(`#u-notice-content`)
+ .boundingClientRect()
+ .exec(ret => {
+ this.textWidth = ret[0].width;
+ resolve();
+ });
+ });
+ query.push(textQuery);
+ Promise.all(query).then(() => {
+ // 鏍规嵁t=s/v(鏃堕棿=璺▼/閫熷害)锛岃繖閲屼负浣曚笉闇�瑕佸姞涓�#u-notice-box鐨勫搴︼紝鍥犱负涓缃簡.u-notice-content鏍峰紡涓缃簡padding-left: 100%
+ // 鎭板阀璁$畻鍑烘潵鐨勭粨鏋滀腑宸茬粡鍖呭惈浜�#u-notice-box鐨勫搴�
+ this.animationDuration = `${this.textWidth / uni.upx2px(this.speed)}s`;
+ // 杩欓噷蹇呴』杩欐牱寮�濮嬪姩鐢伙紝鍚﹀垯鍦ˋPP涓婂姩鐢婚�熷害涓嶄細鏀瑰彉(HX鐗堟湰2.4.6锛孖OS13)
+ this.animationPlayState = 'paused';
+ setTimeout(() => {
+ if(this.playState == 'play' && this.autoplay) this.animationPlayState = 'running';
+ }, 10);
+ });
+ },
+ // 鐐瑰嚮閫氬憡鏍�
+ click(index) {
+ this.$emit('click');
+ },
+ // 鐐瑰嚮鍏抽棴鎸夐挳
+ close() {
+ this.$emit('close');
+ },
+ // 鐐瑰嚮鏇村绠ご鎸夐挳
+ getMore() {
+ this.$emit('getMore');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-notice-bar {
+ padding: 18rpx 24rpx;
+ overflow: hidden;
+}
+
+.u-direction-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.u-left-icon {
+ display: inline-flex;
+ align-items: center;
+}
+
+.u-notice-box {
+ flex: 1;
+ display: flex;
+ overflow: hidden;
+ margin-left: 12rpx;
+}
+
+.u-right-icon {
+ margin-left: 12rpx;
+ display: inline-flex;
+ align-items: center;
+}
+
+.u-notice-content {
+ animation: u-loop-animation 10s linear infinite both;
+ text-align: right;
+ // 杩欎竴鍙ュ緢閲嶈锛屼负浜嗚兘璁╂粴鍔ㄥ乏鍙宠繛鎺ヨ捣鏉�
+ padding-left: 100%;
+ display: flex;
+ flex-wrap: nowrap;
+}
+
+.u-notice-text {
+ font-size: 26rpx;
+ word-break: keep-all;
+ white-space: nowrap
+}
+
+@keyframes u-loop-animation {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row/u-row.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row/u-row.vue"
new file mode 100644
index 0000000..98df4de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-row/u-row.vue"
@@ -0,0 +1,84 @@
+<template>
+ <view class="u-row" :style="{
+ alignItems: uAlignItem,
+ justifyContent: uJustify
+ }"
+ @tap.stop.prevent="click"
+ >
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * row 琛屽竷灞�
+ * @description 閫氳繃鍩虹鐨� 12 鍒嗘爮锛岃繀閫熺畝渚垮湴鍒涘缓甯冨眬銆�
+ * @tutorial https://www.uviewui.com/components/layout.html#row-props
+ * @property {String Number} gutter 鏍呮牸闂撮殧锛屽乏鍙冲悇涓烘鍊肩殑涓�鍗婏紝鍗曚綅rpx锛堥粯璁�0锛�
+ * @property {String} justify 姘村钩鎺掑垪鏂瑰紡(寰俊灏忕▼搴忔殏涓嶆敮鎸�)榛樿锛坰tart(鎴杅lex-start)锛�
+ * @property {String} align 鍨傜洿鎺掑垪鏂瑰紡锛堥粯璁enter锛�
+ * @example <u-row gutter="16"></u-row>
+ */
+ export default {
+ name: "u-row",
+ props: {
+ // 缁檆ol娣诲姞闂磋窛锛屽乏鍙宠竟璺濆悇鍗犱竴鍗�
+ gutter: {
+ type: [String, Number],
+ default: 20
+ },
+ // 姘村钩鎺掑垪鏂瑰紡锛屽彲閫夊�间负`start`(鎴朻flex-start`)銆乣end`(鎴朻flex-end`)銆乣center`銆乣around`(鎴朻space-around`)銆乣between`(鎴朻space-between`)
+ justify: {
+ type: String,
+ default: 'start'
+ },
+ // 鍨傜洿瀵归綈鏂瑰紡锛屽彲閫夊�间负top銆乧enter銆乥ottom
+ align: {
+ type: String,
+ default: 'center'
+ }
+ },
+ provide() {
+ return {
+ gutter: this.gutter
+ }
+ },
+ computed: {
+ uJustify() {
+ if (this.justify == 'end' || this.justify == 'start') return 'flex-' + this.justify;
+ else if (this.justify == 'around' || this.justify == 'between') return 'space-' + this.justify;
+ else return this.justify;
+ },
+ uAlignItem() {
+ if (this.align == 'top') return 'flex-start';
+ if (this.align == 'bottom') return 'flex-end';
+ else return this.align;
+ }
+ },
+ methods: {
+ click() {
+ this.$emit('click');
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-row {
+ // 鐢变簬寰俊灏忕▼搴忕紪璇戝悗濂囨�殑椤甸潰缁撴瀯锛屽彧鑳戒娇鐢╢loat甯冨眬瀹炵幇锛宖lex鏃犳硶瀹炵幇
+ /* #ifndef MP-WEIXIN || MP-QQ */
+ display: flex;
+ /* #endif */
+ flex-wrap: wrap;
+ }
+
+ .u-row:after {
+ /* #ifdef MP-WEIXIN || MP-QQ */
+ display: table;
+ clear: both;
+ content: "";
+ /* #endif */
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-search/u-search.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-search/u-search.vue"
new file mode 100644
index 0000000..f9484f3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-search/u-search.vue"
@@ -0,0 +1,342 @@
+<template>
+ <view class="u-search" @tap="clickHandler" :style="{
+ margin: margin,
+ }">
+ <view
+ class="u-content"
+ :style="{
+ backgroundColor: bgColor,
+ borderRadius: shape == 'round' ? '100rpx' : '10rpx',
+ border: borderStyle,
+ height: height + 'rpx'
+ }"
+ >
+ <view class="u-icon-wrap">
+ <u-icon class="u-clear-icon" :size="30" :name="searchIcon" :color="searchIconColor ? searchIconColor : color"></u-icon>
+ </view>
+ <input
+ confirm-type="search"
+ @blur="blur"
+ :value="value"
+ @confirm="search"
+ @input="inputChange"
+ :disabled="disabled"
+ @focus="getFocus"
+ :maxlength="getMaxlength"
+ :focus="focus"
+ placeholder-class="u-placeholder-class"
+ :placeholder="placeholder"
+ :placeholder-style="`color: ${placeholderColor}`"
+ class="u-input"
+ type="text"
+ :style="[{
+ textAlign: inputAlign,
+ color: color,
+ backgroundColor: bgColor,
+ }, inputStyle]"
+ />
+ <view class="u-close-wrap" v-if="keyword && clearabled && focused" @tap="clear">
+ <u-icon class="u-clear-icon" name="close-circle-fill" size="34" color="#c0c4cc"></u-icon>
+ </view>
+ </view>
+ <view :style="[actionStyle]" class="u-action"
+ :class="[showActionBtn || show ? 'u-action-active' : '']"
+ @tap.stop.prevent="custom"
+ >{{ actionText }}</view>
+ </view>
+</template>
+
+<script>
+/**
+ * search 鎼滅储妗�
+ * @description 鎼滅储缁勪欢锛岄泦鎴愪簡甯歌鎼滅储妗嗘墍闇�鍔熻兘锛岀敤鎴峰彲浠ヤ竴閿紩鍏ワ紝寮�绠卞嵆鐢ㄣ��
+ * @tutorial https://www.uviewui.com/components/search.html
+ * @property {String} shape 鎼滅储妗嗗舰鐘讹紝round-鍦嗗舰锛宻quare-鏂瑰舰锛堥粯璁ound锛�
+ * @property {String} bg-color 鎼滅储妗嗚儗鏅鑹诧紙榛樿#f2f2f2锛�
+ * @property {String} border-color 杈规棰滆壊锛岄厤缃簡棰滆壊锛屾墠浼氭湁杈规
+ * @property {String} placeholder 鍗犱綅鏂囧瓧鍐呭锛堥粯璁も�滆杈撳叆鍏抽敭瀛椻�濓級
+ * @property {Boolean} clearabled 鏄惁鍚敤娓呴櫎鎺т欢锛堥粯璁rue锛�
+ * @property {Boolean} focus 鏄惁鑷姩鑾峰緱鐒︾偣锛堥粯璁alse锛�
+ * @property {Boolean} show-action 鏄惁鏄剧ず鍙充晶鎺т欢锛堥粯璁rue锛�
+ * @property {String} action-text 鍙充晶鎺т欢鏂囧瓧锛堥粯璁も�滄悳绱⑩�濓級
+ * @property {Object} action-style 鍙充晶鎺т欢鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {String} input-align 杈撳叆妗嗗唴瀹规按骞冲榻愭柟寮忥紙榛樿left锛�
+ * @property {Object} input-style 鑷畾涔夎緭鍏ユ鏍峰紡锛屽璞″舰寮�
+ * @property {Boolean} disabled 鏄惁鍚敤杈撳叆妗嗭紙榛樿false锛�
+ * @property {String} search-icon-color 鎼滅储鍥炬爣鐨勯鑹诧紝榛樿鍚岃緭鍏ユ瀛椾綋棰滆壊
+ * @property {String} color 杈撳叆妗嗗瓧浣撻鑹诧紙榛樿#606266锛�
+ * @property {String} placeholder-color placeholder鐨勯鑹诧紙榛樿#909399锛�
+ * @property {String} search-icon 杈撳叆妗嗗乏杈圭殑鍥炬爣锛屽彲浠ヤ负uView鍥炬爣鍚嶇О鎴栧浘鐗囪矾寰�
+ * @property {String} margin 缁勪欢涓庡叾浠栦笂涓嬪乏鍙冲厓绱犱箣闂寸殑璺濈锛屽甫鍗曚綅鐨勫瓧绗︿覆褰㈠紡锛屽"30rpx"
+ * @property {Boolean} animation 鏄惁寮�鍚姩鐢伙紝瑙佷笂鏂硅鏄庯紙榛樿false锛�
+ * @property {String} value 杈撳叆妗嗗垵濮嬪��
+ * @property {String | Number} maxlength 杈撳叆妗嗘渶澶ц兘杈撳叆鐨勯暱搴︼紝-1涓轰笉闄愬埗闀垮害
+ * @property {Boolean} input-style input杈撳叆妗嗙殑鏍峰紡锛屽彲浠ュ畾涔夋枃瀛楅鑹诧紝澶у皬绛夛紝瀵硅薄褰㈠紡
+ * @property {String | Number} height 杈撳叆妗嗛珮搴︼紝鍗曚綅rpx锛堥粯璁�64锛�
+ * @event {Function} change 杈撳叆妗嗗唴瀹瑰彂鐢熷彉鍖栨椂瑙﹀彂
+ * @event {Function} search 鐢ㄦ埛纭畾鎼滅储鏃惰Е鍙戯紝鐢ㄦ埛鎸夊洖杞﹂敭锛屾垨鑰呮墜鏈洪敭鐩樺彸涓嬭鐨�"鎼滅储"閿椂瑙﹀彂
+ * @event {Function} custom 鐢ㄦ埛鐐瑰嚮鍙充晶鎺т欢鏃惰Е鍙�
+ * @event {Function} clear 鐢ㄦ埛鐐瑰嚮娓呴櫎鎸夐挳鏃惰Е鍙�
+ * @example <u-search placeholder="鏃ョ収棣欑倝鐢熺传鐑�" v-model="keyword"></u-search>
+ */
+export default {
+ name: "u-search",
+ props: {
+ // 鎼滅储妗嗗舰鐘讹紝round-鍦嗗舰锛宻quare-鏂瑰舰
+ shape: {
+ type: String,
+ default: 'round'
+ },
+ // 鎼滅储妗嗚儗鏅壊锛岄粯璁ゅ��#f2f2f2
+ bgColor: {
+ type: String,
+ default: '#f2f2f2'
+ },
+ // 鍗犱綅鎻愮ず鏂囧瓧
+ placeholder: {
+ type: String,
+ default: '璇疯緭鍏ュ叧閿瓧'
+ },
+ // 鏄惁鍚敤娓呴櫎鎺т欢
+ clearabled: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鑷姩鑱氱劍
+ focus: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍦ㄦ悳绱㈡鍙充晶鏄剧ず鍙栨秷鎸夐挳
+ showAction: {
+ type: Boolean,
+ default: true
+ },
+ // 鍙宠竟鎺т欢鐨勬牱寮�
+ actionStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 鍙栨秷鎸夐挳鏂囧瓧
+ actionText: {
+ type: String,
+ default: '鎼滅储'
+ },
+ // 杈撳叆妗嗗唴瀹瑰榻愭柟寮忥紝鍙�夊�间负 left|center|right
+ inputAlign: {
+ type: String,
+ default: 'left'
+ },
+ // 鏄惁鍚敤杈撳叆妗�
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 寮�鍚痵howAction鏃讹紝鏄惁鍦╥nput鑾峰彇鐒︾偣鏃舵墠鏄剧ず
+ animation: {
+ type: Boolean,
+ default: false
+ },
+ // 杈规棰滆壊锛屽彧瑕侀厤缃簡棰滆壊锛屾墠浼氭湁杈规
+ borderColor: {
+ type: String,
+ default: 'none'
+ },
+ // 杈撳叆妗嗙殑鍒濆鍖栧唴瀹�
+ value: {
+ type: String,
+ default: ''
+ },
+ // 鎼滅储妗嗛珮搴︼紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 64
+ },
+ // input杈撳叆妗嗙殑鏍峰紡锛屽彲浠ュ畾涔夋枃瀛楅鑹诧紝澶у皬绛夛紝瀵硅薄褰㈠紡
+ inputStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 杈撳叆妗嗘渶澶ц兘杈撳叆鐨勯暱搴︼紝-1涓轰笉闄愬埗闀垮害(鏉ヨ嚜uniapp鏂囨。)
+ maxlength: {
+ type: [Number, String],
+ default: -1
+ },
+ // 鎼滅储鍥炬爣鐨勯鑹诧紝榛樿鍚岃緭鍏ユ瀛椾綋棰滆壊
+ searchIconColor: {
+ type: String,
+ default: ''
+ },
+ // 杈撳叆妗嗗瓧浣撻鑹�
+ color: {
+ type: String,
+ default: '#606266'
+ },
+ // placeholder鐨勯鑹�
+ placeholderColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 缁勪欢涓庡叾浠栦笂涓嬪乏鍙冲厓绱犱箣闂寸殑璺濈锛屽甫鍗曚綅鐨勫瓧绗︿覆褰㈠紡锛屽"30rpx"銆�"30rpx 20rpx"绛夊啓娉�
+ margin: {
+ type: String,
+ default: '0'
+ },
+ // 宸﹁竟杈撳叆妗嗙殑鍥炬爣锛屽彲浠ヤ负uView鍥炬爣鍚嶇О鎴栧浘鐗囪矾寰�
+ searchIcon: {
+ type: String,
+ default: 'search'
+ }
+ },
+ data() {
+ return {
+ keyword: '',
+ showClear: false, // 鏄惁鏄剧ず鍙宠竟鐨勬竻闄ゅ浘鏍�
+ show: false,
+ // 鏍囪input褰撳墠鐘舵�佹槸鍚﹀浜庤仛鐒︿腑锛屽鏋滄槸锛屾墠浼氭樉绀哄彸渚х殑娓呴櫎鎺т欢
+ focused: this.focus
+ // 缁戝畾杈撳叆妗嗙殑鍊�
+ // inputValue: this.value
+ };
+ },
+ watch: {
+ keyword(nVal) {
+ // 鍙屽悜缁戝畾鍊硷紝璁﹙-model缁戝畾鐨勫�煎弻鍚戝彉鍖�
+ this.$emit('input', nVal);
+ // 瑙﹀彂change浜嬩欢锛屼簨浠舵晥鏋滃拰v-model鍙屽悜缁戝畾鐨勬晥鏋滀竴鏍凤紝璁╃敤鎴峰涓�涓�夋嫨
+ this.$emit('change', nVal);
+ },
+ value: {
+ immediate: true,
+ handler(nVal) {
+ this.keyword = nVal;
+ }
+ }
+ },
+ computed: {
+ showActionBtn() {
+ if (!this.animation && this.showAction) return true;
+ else return false;
+ },
+ // 鏍峰紡锛屾牴鎹敤鎴蜂紶鍏ョ殑棰滆壊鍊肩敓鎴愶紝濡傛灉涓嶄紶鍏ワ紝榛樿涓簄one
+ borderStyle() {
+ if (this.borderColor) return `1px solid ${this.borderColor}`;
+ else return 'none';
+ },
+ // 灏唌axlength杞负鏁板��
+ getMaxlength() {
+ return Number(this.maxlength);
+ }
+ },
+ methods: {
+ // 鐩墠HX2.6.9 v-model鍙屽悜缁戝畾鏃犳晥锛屾晠鐩戝惉input浜嬩欢鑾峰彇杈撳叆妗嗗唴瀹圭殑鍙樺寲
+ inputChange(e) {
+ this.keyword = e.detail.value;
+ },
+ // 娓呯┖杈撳叆
+ // 涔熷彲浠ヤ綔涓虹敤鎴烽�氳繃this.$refs褰㈠紡璋冪敤娓呯┖杈撳叆妗嗗唴瀹�
+ clear() {
+ this.keyword = '';
+ // 寤跺悗鍙戝嚭浜嬩欢锛岄伩鍏嶅湪鐖剁粍浠剁洃鍚琧lear浜嬩欢鏃讹紝value涓烘洿鏂板墠鐨勫��(涓嶄负绌�)
+ this.$nextTick(() => {
+ this.$emit('clear');
+ })
+ },
+ // 纭畾鎼滅储
+ search(e) {
+ this.$emit('search', e.detail.value);
+ // 鏀惰捣閿洏
+ uni.hideKeyboard();
+ },
+ // 鐐瑰嚮鍙宠竟鑷畾涔夋寜閽殑浜嬩欢
+ custom() {
+ this.$emit('custom', this.keyword);
+ // 鏀惰捣閿洏
+ uni.hideKeyboard();
+ },
+ // 鑾峰彇鐒︾偣
+ getFocus() {
+ this.focused = true;
+ // 寮�鍚彸渚ф悳绱㈡寜閽睍寮�鐨勫姩鐢绘晥鏋�
+ if (this.animation && this.showAction) this.show = true;
+ this.$emit('focus', this.keyword);
+ },
+ // 澶卞幓鐒︾偣
+ blur() {
+ // 鏈�寮�濮嬩娇鐢ㄧ殑鏄洃鍚浘鏍嘆touchstart浜嬩欢锛岃嚜浠巋x2.8.4鍚庯紝姝ゆ柟娉曞湪寰俊灏忕▼搴忓嚭閿�
+ // 杩欓噷鏀逛负鐩戝惉鐐瑰嚮浜嬩欢锛屾墜鐐瑰嚮娓呴櫎鍥炬爣鏃讹紝鍚屾椂涔熷彂鐢熶簡@blur浜嬩欢锛屽鑷村浘鏍囨秷澶辫�屾棤娉曠偣鍑伙紝杩欓噷鍋氫竴涓欢鏃�
+ setTimeout(() => {
+ this.focused = false;
+ }, 100)
+ this.show = false;
+ this.$emit('blur', this.keyword);
+ },
+ // 鐐瑰嚮鎼滅储妗嗭紝鍙湁disabled=true鏃舵墠鍙戝嚭浜嬩欢锛屽洜涓虹姝簡杈撳叆锛屾剰鍛崇潃鏄兂璺宠浆鐪熸鐨勬悳绱㈤〉
+ clickHandler() {
+ if(this.disabled) this.$emit('click');
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-search {
+ display: flex;
+ align-items: center;
+ flex: 1;
+}
+
+.u-content {
+ display: flex;
+ align-items: center;
+ padding: 0 18rpx;
+ flex: 1;
+}
+
+.u-clear-icon {
+ display: flex;
+ align-items: center;
+}
+
+.u-input {
+ flex: 1;
+ font-size: 28rpx;
+ line-height: 1;
+ margin: 0 10rpx;
+ color: $u-tips-color;
+}
+
+.u-close-wrap {
+ width: 40rpx;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+}
+
+.u-placeholder-class {
+ color: $u-tips-color;
+}
+
+.u-action {
+ font-size: 28rpx;
+ color: $u-main-color;
+ width: 0;
+ overflow: hidden;
+ transition: all 0.3s;
+ white-space: nowrap;
+ text-align: center;
+}
+
+.u-action-active {
+ width: 80rpx;
+ margin-left: 10rpx;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-section/u-section.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-section/u-section.vue"
new file mode 100644
index 0000000..761cb1c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-section/u-section.vue"
@@ -0,0 +1,154 @@
+<template>
+ <view class="u-section">
+ <view class="u-section__title" :style="{
+ fontWeight: bold ? 'bold' : 'normal',
+ color: color,
+ fontSize: fontSize + 'rpx',
+ paddingLeft: showLine ? (fontSize * 0.7) + 'rpx' : 0
+ }" :class="{
+ 'u-section--line': showLine
+ }">
+ <view class="u-section__title__icon-wrap u-flex" :style="[lineStyle]" v-if="showLine">
+ <u-icon top="0" name="column-line" :size="fontSize * 1.25" bold :color="lineColor ? lineColor : color"></u-icon>
+ </view>
+ <text class="u-flex u-section__title__text">{{title}}</text>
+ </view>
+ <view class="u-section__right-info" v-if="right || $slots.right" :style="{
+ color: subColor
+ }" @tap="rightClick">
+ <slot name="right" v-if="$slots.right" />
+ <block v-else>
+ {{subTitle}}
+ <view class="u-section__right-info__icon-arrow u-flex" v-if="arrow">
+ <u-icon name="arrow-right" size="24" :color="subColor"></u-icon>
+ </view>
+ </block>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * section 鏌ョ湅鏇村
+ * @description 璇ョ粍浠朵竴鑸敤浜庡垎绫讳俊鎭湁寰堝锛屼絾鏄檺浜庣瘒骞呭彧鑳藉垪鍑轰竴閮ㄥ垎锛岃鐢ㄦ埛閫氳繃"鏌ョ湅鏇村"鑾峰緱鏇村淇℃伅鐨勫満鏅紝瀹為檯鏁堟灉瑙佹紨绀恒��
+ * @tutorial https://www.uviewui.com/components/section.html
+ * @property {String} title 宸﹁竟涓绘爣棰�
+ * @property {String} sub-title 鍙宠竟鍓爣棰橈紙榛樿鏇村锛�
+ * @property {Boolean} right 鏄惁鏄剧ず鍙宠竟鐨勫唴瀹癸紙榛樿true锛�
+ * @property {Boolean} showLine 鏄惁鏄剧ず宸﹁竟鐨勭珫鏉★紙榛樿true锛�
+ * @property {Boolean} arrow 鏄惁鏄剧ず鍙宠竟绠ご锛堥粯璁rue锛�
+ * @property {String Number} font-size 涓绘爣棰樼殑瀛椾綋澶у皬锛堥粯璁�28锛�
+ * @property {Boolean} bold 涓绘爣棰樻槸鍚﹀姞绮楋紙榛樿true锛�
+ * @property {String} color 涓绘爣棰橀鑹诧紙榛樿#303133锛�
+ * @event {Function} click 缁勪欢鍙充晶鐨勫唴瀹硅鐐瑰嚮鏃惰Е鍙戯紝鐢ㄤ簬璺宠浆"鏇村"
+ * @example <u-section title="浠婃棩鐑棬" :right="false"></u-section>
+ */
+ export default {
+ name: "u-section",
+ props: {
+ // 鏍囬淇℃伅
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鍙宠竟鍓爣棰樺唴瀹�
+ subTitle: {
+ type: String,
+ default: '鏇村'
+ },
+ // 鏄惁鏄剧ず鍙宠竟鐨勫唴瀹�
+ right: {
+ type: Boolean,
+ default: true
+ },
+ fontSize: {
+ type: [Number, String],
+ default: 28
+ },
+ // 涓绘爣棰樻槸鍚﹀姞绮�
+ bold: {
+ type: Boolean,
+ default: true
+ },
+ // 涓绘爣棰樼殑棰滆壊
+ color: {
+ type: String,
+ default: '#303133'
+ },
+ // 鍙宠竟鍓爣棰樼殑棰滆壊
+ subColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 鏄惁鏄剧ず宸﹁竟鐨勭珫鏉�
+ showLine: {
+ type: Boolean,
+ default: true
+ },
+ // 宸﹁竟绔栫嚎鐨勯鑹�
+ lineColor: {
+ type: String,
+ default: ''
+ },
+ // 鏄惁鏄剧ず鍙宠竟绠ご
+ arrow: {
+ type: Boolean,
+ default: true
+ },
+ },
+ computed: {
+ // 宸﹁竟绔栨潯鐨勬牱寮�
+ lineStyle() {
+ // 鐢变簬瀹夊崜鍜宨OS鐨勶紝闇�瑕佺◢寰皟鏁寸粷瀵瑰畾浣嶇殑top鍊硷紝鎵嶈兘璁╁乏杈圭殑绔栫嚎鍜屽彸杈圭殑鏂囧瓧鍨傜洿灞呬腑
+ return {
+ // 鐢变簬绔栫嚎涓哄瓧浣撳浘鏍囷紝鍏锋湁姣斿疄闄呯嚎瀹芥洿瀹界殑瀹藉害锛屾墍浠ヤ篃闇�瑕佹牴鎹瓧浣撴墦涓嬪姩鎬佽皟鏁�
+ left: -(Number(this.fontSize) * 0.9) + 'rpx',
+ top: -(Number(this.fontSize) * (this.$u.os() == 'ios' ? 0.14 : 0.15)) + 'rpx',
+ }
+ }
+ },
+ methods: {
+ rightClick() {
+ this.$emit('click');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-section {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+
+ &__title {
+ position: relative;
+ font-size: 28rpx;
+ padding-left: 20rpx;
+ display: flex;
+ align-items: center;
+
+ &__icon-wrap {
+ position: absolute;
+ }
+
+ &__text {
+ line-height: 1;
+ }
+ }
+
+ &__right-info {
+ color: $u-tips-color;
+ font-size: 26rpx;
+ display: flex;
+ align-items: center;
+
+ &__icon-arrow {
+ margin-left: 6rpx;
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-select/u-select.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-select/u-select.vue"
new file mode 100644
index 0000000..268f0a7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-select/u-select.vue"
@@ -0,0 +1,417 @@
+<template>
+ <view class="u-select">
+ <!-- <view class="u-select__action" :class="{
+ 'u-select--border': border
+ }" @tap.stop="selectHandler">
+ <view class="u-select__action__icon" :class="{
+ 'u-select__action__icon--reverse': value == true
+ }">
+ <u-icon name="arrow-down-fill" size="26" color="#c0c4cc"></u-icon>
+ </view>
+ </view> -->
+ <u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
+ <view class="u-select">
+ <view class="u-select__header" @touchmove.stop.prevent="">
+ <view
+ class="u-select__header__cancel u-select__header__btn"
+ :style="{ color: cancelColor }"
+ hover-class="u-hover-class"
+ :hover-stay-time="150"
+ @tap="getResult('cancel')"
+ >
+ {{cancelText}}
+ </view>
+ <view class="u-select__header__title">
+ {{title}}
+ </view>
+ <view
+ class="u-select__header__confirm u-select__header__btn"
+ :style="{ color: moving ? cancelColor : confirmColor }"
+ hover-class="u-hover-class"
+ :hover-stay-time="150"
+ @touchmove.stop=""
+ @tap.stop="getResult('confirm')"
+ >
+ {{confirmText}}
+ </view>
+ </view>
+ <view class="u-select__body">
+ <picker-view @change="columnChange" class="u-select__body__picker-view" :value="defaultSelector" @pickstart="pickstart" @pickend="pickend">
+ <picker-view-column v-for="(item, index) in columnData" :key="index">
+ <view class="u-select__body__picker-view__item" v-for="(item1, index1) in item" :key="index1">
+ <view class="u-line-1">{{ item1[labelName] }}</view>
+ </view>
+ </picker-view-column>
+ </picker-view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ /**
+ * select 鍒楅�夋嫨鍣�
+ * @description 姝ら�夋嫨鍣ㄧ敤浜庡崟鍒楋紝澶氬垪锛屽鍒楄仈鍔ㄧ殑閫夋嫨鍦烘櫙銆�(浠�1.3.0鐗堟湰璧凤紝涓嶅缓璁娇鐢≒icker缁勪欢鐨勫崟鍒楀拰澶氬垪妯″紡锛孲elect缁勪欢鏄笓闂ㄤ负鍒楅�夋嫨鑰屾瀯閫犵殑缁勪欢锛屾洿绠�鍗曟槗鐢ㄣ��)
+ * @tutorial http://uviewui.com/components/select.html
+ * @property {String} mode 妯″紡閫夋嫨锛�"single-column"-鍗曞垪妯″紡锛�"mutil-column"-澶氬垪妯″紡锛�"mutil-column-auto"-澶氬垪鑱斿姩妯″紡
+ * @property {Array} list 鍒楁暟鎹紝鏁扮粍褰㈠紡锛岃瀹樼綉璇存槑
+ * @property {Boolean} v-model 甯冨皵鍊煎彉閲忥紝鐢ㄤ簬鎺у埗閫夋嫨鍣ㄧ殑寮瑰嚭涓庢敹璧�
+ * @property {Boolean} safe-area-inset-bottom 鏄惁寮�鍚簳閮ㄥ畨鍏ㄥ尯閫傞厤(榛樿false)
+ * @property {String} cancel-color 鍙栨秷鎸夐挳鐨勯鑹诧紙榛樿#606266锛�
+ * @property {String} confirm-color 纭鎸夐挳鐨勯鑹�(榛樿#2979ff)
+ * @property {String} confirm-text 纭鎸夐挳鐨勬枃瀛�
+ * @property {String} cancel-text 鍙栨秷鎸夐挳鐨勬枃瀛�
+ * @property {String} default-value 鎻愪緵鐨勯粯璁ら�変腑鐨勪笅鏍囷紝瑙佸畼缃戣鏄�
+ * @property {Boolean} mask-close-able 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴Picker(榛樿true)
+ * @property {String Number} z-index 寮瑰嚭鏃剁殑z-index鍊�(榛樿10075)
+ * @property {String} value-name 鑷畾涔塴ist鏁版嵁鐨剉alue灞炴�у悕 1.3.6
+ * @property {String} label-name 鑷畾涔塴ist鏁版嵁鐨刲abel灞炴�у悕 1.3.6
+ * @property {String} child-name 鑷畾涔塴ist鏁版嵁鐨刢hildren灞炴�у悕锛屽彧瀵瑰鍒楄仈鍔ㄦā寮忔湁鏁� 1.3.7
+ * @event {Function} confirm 鐐瑰嚮纭畾鎸夐挳锛岃繑鍥炲綋鍓嶉�夋嫨鐨勫��
+ * @example <u-select v-model="show" :list="list"></u-select>
+ */
+
+export default {
+ props: {
+ // 鍒楁暟鎹�
+ list: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 鏄惁鏄剧ず杈规
+ border: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氳繃鍙屽悜缁戝畾鎺у埗缁勪欢鐨勫脊鍑轰笌鏀惰捣
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // "鍙栨秷"鎸夐挳鐨勯鑹�
+ cancelColor: {
+ type: String,
+ default: '#606266'
+ },
+ // "纭畾"鎸夐挳鐨勯鑹�
+ confirmColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 寮瑰嚭鐨剒-index鍊�
+ zIndex: {
+ type: [String, Number],
+ default: 0
+ },
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍏佽閫氳繃鐐瑰嚮閬僵鍏抽棴Picker
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 鎻愪緵鐨勯粯璁ら�変腑鐨勪笅鏍�
+ defaultValue: {
+ type: Array,
+ default() {
+ return [0];
+ }
+ },
+ // 妯″紡閫夋嫨锛宻ingle-column-鍗曞垪锛宮util-column-澶氬垪锛宮util-column-auto-澶氬垪鑱斿姩
+ mode: {
+ type: String,
+ default: 'single-column'
+ },
+ // 鑷畾涔塿alue灞炴�у悕
+ valueName: {
+ type: String,
+ default: 'value'
+ },
+ // 鑷畾涔塴abel灞炴�у悕
+ labelName: {
+ type: String,
+ default: 'label'
+ },
+ // 鑷畾涔夊鍒楄仈鍔ㄦā寮忕殑children灞炴�у悕
+ childName: {
+ type: String,
+ default: 'children'
+ },
+ // 椤堕儴鏍囬
+ title: {
+ type: String,
+ default: ''
+ },
+ // 鍙栨秷鎸夐挳鐨勬枃瀛�
+ cancelText: {
+ type: String,
+ default: '鍙栨秷'
+ },
+ // 纭鎸夐挳鐨勬枃瀛�
+ confirmText: {
+ type: String,
+ default: '纭'
+ }
+ },
+ data() {
+ return {
+ // 鐢ㄤ簬鍒楁敼鍙樻椂锛屼繚瀛樺綋鍓嶇殑绱㈠紩锛屼笅涓�娆″彉鍖栨椂姣旇緝寰楀嚭鏄摢涓�鍒楀彂鐢熶簡鍙樺寲
+ defaultSelector: [0],
+ // picker-view鐨勬暟鎹�
+ columnData: [],
+ // 姣忔闃熷垪鍙戠敓鍙樺寲鏃讹紝淇濆瓨閫夋嫨鐨勭粨鏋�
+ selectValue: [],
+ // 涓婁竴娆″垪鍙樺寲鏃剁殑index
+ lastSelectIndex: [],
+ // 鍒楁暟
+ columnNum: 0,
+ // 鍒楁槸鍚﹁繕鍦ㄦ粦鍔ㄤ腑锛屽井淇″皬绋嬪簭濡傛灉鍦ㄦ粦鍔ㄤ腑灏辩偣纭畾锛岀粨鏋滃彲鑳戒笉鍑嗙‘
+ moving: false
+ };
+ },
+ watch: {
+ // 鍦╯elect寮硅捣鐨勬椂鍊欙紝閲嶆柊鍒濆鍖栨墍鏈夋暟鎹�
+ value: {
+ immediate: true,
+ handler(val) {
+ if(val) setTimeout(() => this.init(), 10);
+ }
+ },
+ },
+ computed: {
+ uZIndex() {
+ // 濡傛灉鐢ㄦ埛鏈変紶閫抸-index鍊硷紝浼樺厛浣跨敤
+ return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+ },
+ },
+ methods: {
+ // 鏍囪瘑婊戝姩寮�濮嬶紝鍙湁寰俊灏忕▼搴忔墠鏈夎繖鏍风殑浜嬩欢
+ pickstart() {
+ // #ifdef MP-WEIXIN
+ this.moving = true;
+ // #endif
+ },
+ // 鏍囪瘑婊戝姩缁撴潫
+ pickend() {
+ // #ifdef MP-WEIXIN
+ this.moving = false;
+ // #endif
+ },
+ init() {
+ this.setColumnNum();
+ this.setDefaultSelector();
+ this.setColumnData();
+ this.setSelectValue();
+ },
+ // 鑾峰彇榛樿閫変腑鍒椾笅鏍�
+ setDefaultSelector() {
+ // 濡傛灉娌℃湁浼犲叆榛樿閫変腑鐨勫�硷紝鐢熸垚闀垮害涓篶olumnNum锛岀敤0濉厖鐨勬暟缁�
+ this.defaultSelector = this.defaultValue.length == this.columnNum ? this.defaultValue : Array(this.columnNum).fill(0);
+ this.lastSelectIndex = this.$u.deepClone(this.defaultSelector);
+ },
+ // 璁$畻鍒楁暟
+ setColumnNum() {
+ // 鍗曞垪鐨勫垪鏁颁负1
+ if(this.mode == 'single-column') this.columnNum = 1;
+ // 澶氬垪鏃讹紝this.list鏁扮粍闀垮害灏辨槸鍒楁暟
+ else if(this.mode == 'mutil-column') this.columnNum = this.list.length;
+ // 澶氬垪鑱斿姩鏃讹紝閫氳繃鍘嗛亶this.list鐨勭涓�涓厓绱狅紝寰楀嚭鏈夊灏戝垪
+ else if(this.mode == 'mutil-column-auto') {
+ let num = 1;
+ let column = this.list;
+ // 鍙鏈夊厓绱犲苟涓旂涓�涓厓绱犳湁children灞炴�э紝缁х画鍘嗛亶
+ while(column[0][this.childName]) {
+ column = column[0] ? column[0][this.childName] : {};
+ num ++;
+ }
+ this.columnNum = num;
+ }
+ },
+ // 鑾峰彇闇�瑕佸睍绀哄湪picker涓殑鍒楁暟鎹�
+ setColumnData() {
+ let data = [];
+ this.selectValue = [];
+ if(this.mode == 'mutil-column-auto') {
+ // 鑾峰緱鎵�鏈夋暟鎹腑鐨勭涓�涓厓绱�
+ let column = this.list[this.defaultSelector.length ? this.defaultSelector[0] : 0];
+ // 閫氳繃寰幆鎵�鏈夌殑鍒楁暟锛屽啀鏍规嵁璁惧畾鍒楃殑鏁扮粍锛屽緱鍑哄綋鍓嶉渶瑕佹覆鏌撶殑鏁翠釜鍒楁暟缁�
+ for (let i = 0; i < this.columnNum; i++) {
+ // 绗竴鍒楅粯璁や负鏁翠釜list鏁扮粍
+ if (i == 0) {
+ data[i] = this.list;
+ column = column[this.childName];
+ } else {
+ // 澶т簬绗竴鍒楁椂锛屽垽鏂槸鍚︽湁榛樿閫変腑鐨勶紝濡傛灉娌℃湁灏辩敤璇ュ垪鐨勭涓�椤�
+ data[i] = column;
+ column = column[this.defaultSelector[i]][this.childName];
+ }
+ }
+ } else if(this.mode == 'single-column') {
+ data[0] = this.list;
+ } else {
+ data = this.list;
+ }
+ this.columnData = data;
+ },
+ // 鑾峰彇榛樿閫変腑鐨勫�硷紝濡傛灉娌℃湁璁剧疆defaultValue锛屽氨榛樿閫変腑姣忓垪鐨勭涓�涓�
+ setSelectValue() {
+ let tmp = null;
+ for(let i = 0; i < this.columnNum; i++) {
+ tmp = this.columnData[i][this.defaultSelector[i]];
+ let data = {
+ value: tmp ? tmp[this.valueName] : null,
+ label: tmp ? tmp[this.labelName] : null
+ };
+ // 鍒ゆ柇鏄惁瀛樺湪棰濆鐨勫弬鏁帮紝濡傛灉瀛樺湪锛屽氨杩斿洖
+ if(tmp && tmp.extra) data.extra = tmp.extra;
+ this.selectValue.push(data)
+ }
+ },
+ // 鍒楅�夐」
+ columnChange(e) {
+ let index = null;
+ let columnIndex = e.detail.value;
+ // 鐢变簬鍚庨潰鏄渶瑕乸ush杩涙暟缁勭殑锛屾墍浠ラ渶瑕佸厛娓呯┖鏁扮粍
+ this.selectValue = [];
+ if(this.mode == 'mutil-column-auto') {
+ // 瀵规瘮鍓嶅悗涓や釜鏁扮粍锛屽鎵惧彉鏇寸殑鏄摢涓�鍒楋紝濡傛灉鏌愪竴涓厓绱犱笉鍚岋紝鍗冲彲鍒ゅ畾璇ュ垪鍙戠敓浜嗗彉鍖�
+ this.lastSelectIndex.map((val, idx) => {
+ if (val != columnIndex[idx]) index = idx;
+ });
+ this.defaultSelector = columnIndex;
+ for (let i = index + 1; i < this.columnNum; i++) {
+ // 褰撳墠鍙樺寲鍒楃殑涓嬩竴鍒楃殑鏁版嵁锛岄渶瑕佽幏鍙栦笂涓�鍒楃殑鏁版嵁锛屽悓鏃堕渶瑕佹寚瀹氭槸涓婁竴鍒楃殑绗嚑涓殑children锛屽啀寰�鍚庣殑
+ // 榛樿鏄槦鍒楃殑绗竴涓负榛樿閫夐」
+ this.columnData[i] = this.columnData[i - 1][i - 1 == index ? columnIndex[index] : 0][this.childName];
+ // 鏀瑰彉鐨勫垪涔嬪悗鐨勬墍鏈夊垪锛岄粯璁ら�変腑绗竴涓�
+ this.defaultSelector[i] = 0;
+ }
+ // 鍦ㄥ巻閬嶇殑杩囩▼涓紝鍙兘鐢变簬涓婁竴姝ヤ慨鏀箃his.columnData锛屽鑷翠骇鐢熻繛閿佸弽搴旓紝绋嬪簭瑙﹀彂columnChange锛屼細鏈夊娆¤皟鐢�
+ // 鍙湁鍦ㄦ渶鍚庝竴娆℃暟鎹ǔ瀹氬悗鐨勭粨鏋滄槸姝g‘鐨勶紝姝ゅ墠鐨勫巻閬嶄腑锛屽彲鑳戒細浜х敓undefined锛屾晠闇�瑕佸垽鏂�
+ columnIndex.map((item, index) => {
+ let data = this.columnData[index][columnIndex[index]];
+ let tmp = {
+ value: data ? data[this.valueName] : null,
+ label: data ? data[this.labelName] : null,
+ };
+ // 鍒ゆ柇鏄惁鏈夐渶瑕侀澶栨惡甯︾殑鍙傛暟
+ if(data && data.extra !== undefined) tmp.extra = data.extra;
+ this.selectValue.push(tmp);
+
+ })
+ // 淇濆瓨杩欎竴娆$殑缁撴灉锛岀敤浜庝笅娆″垪鍙戠敓鍙樺寲鏃朵綔姣旇緝
+ this.lastSelectIndex = columnIndex;
+ } else if(this.mode == 'single-column') {
+ let data = this.columnData[0][columnIndex[0]];
+ // 鍒濆榛樿閫変腑鍊�
+ let tmp = {
+ value: data ? data[this.valueName] : null,
+ label: data ? data[this.labelName] : null,
+ };
+ // 鍒ゆ柇鏄惁鏈夐渶瑕侀澶栨惡甯︾殑鍙傛暟
+ if(data && data.extra !== undefined) tmp.extra = data.extra;
+ this.selectValue.push(tmp);
+ } else if(this.mode == 'mutil-column') {
+ // 鍒濆榛樿閫変腑鍊�
+ columnIndex.map((item, index) => {
+ let data = this.columnData[index][columnIndex[index]];
+ // 鍒濆榛樿閫変腑鍊�
+ let tmp = {
+ value: data ? data[this.valueName] : null,
+ label: data ? data[this.labelName] : null,
+ };
+ // 鍒ゆ柇鏄惁鏈夐渶瑕侀澶栨惡甯︾殑鍙傛暟
+ if(data && data.extra !== undefined) tmp.extra = data.extra;
+ this.selectValue.push(tmp);
+ })
+ }
+ },
+ close() {
+ this.$emit('input', false);
+ },
+ // 鐐瑰嚮纭畾鎴栬�呭彇娑�
+ getResult(event = null) {
+ // #ifdef MP-WEIXIN
+ if (this.moving) return;
+ // #endif
+ if (event) this.$emit(event, this.selectValue);
+ this.close();
+ },
+ selectHandler() {
+ this.$emit('click');
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-select {
+
+ &__action {
+ position: relative;
+ line-height: $u-form-item-height;
+ height: $u-form-item-height;
+
+ &__icon {
+ position: absolute;
+ right: 20rpx;
+ top: 50%;
+ transition: transform .4s;
+ transform: translateY(-50%);
+ z-index: 1;
+
+ &--reverse {
+ transform: rotate(-180deg) translateY(50%);
+ }
+ }
+ }
+
+ &__hader {
+ &__title {
+ color: $u-content-color;
+ }
+ }
+
+ &--border {
+ border-radius: 6rpx;
+ border-radius: 4px;
+ border: 1px solid $u-form-item-border-color;
+ }
+
+ &__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 80rpx;
+ padding: 0 40rpx;
+ }
+
+ &__body {
+ width: 100%;
+ height: 500rpx;
+ overflow: hidden;
+ background-color: #fff;
+
+ &__picker-view {
+ height: 100%;
+ box-sizing: border-box;
+
+ &__item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ color: $u-main-color;
+ padding: 0 8rpx;
+ }
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-skeleton/u-skeleton.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-skeleton/u-skeleton.vue"
new file mode 100644
index 0000000..c8cb19e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-skeleton/u-skeleton.vue"
@@ -0,0 +1,199 @@
+<template>
+ <view v-if="loading" :style="{
+ width: windowWinth + 'px',
+ height: windowHeight + 'px',
+ backgroundColor: bgColor,
+ position: 'absolute',
+ left: left + 'px',
+ top: top + 'px',
+ zIndex: 9998,
+ overflow: 'hidden'
+ }"
+ @touchmove.stop.prevent>
+ <view v-for="(item, index) in RectNodes" :key="$u.guid()" :class="[animation ? 'skeleton-fade' : '']" :style="{
+ width: item.width + 'px',
+ height: item.height + 'px',
+ backgroundColor: elColor,
+ position: 'absolute',
+ left: (item.left - left) + 'px',
+ top: (item.top - top) + 'px'
+ }"></view>
+ <view v-for="(item, index) in circleNodes" :key="$u.guid()" :class="animation ? 'skeleton-fade' : ''" :style="{
+ width: item.width + 'px',
+ height: item.height + 'px',
+ backgroundColor: elColor,
+ borderRadius: item.width/2 + 'px',
+ position: 'absolute',
+ left: (item.left - left) + 'px',
+ top: (item.top - top) + 'px'
+ }"></view>
+ <view v-for="(item, index) in filletNodes" :key="$u.guid()" :class="animation ? 'skeleton-fade' : ''" :style="{
+ width: item.width + 'px',
+ height: item.height + 'px',
+ backgroundColor: elColor,
+ borderRadius: borderRadius + 'rpx',
+ position: 'absolute',
+ left: (item.left - left) + 'px',
+ top: (item.top - top) + 'px'
+ }"></view>
+ </view>
+</template>
+
+<script>
+ /**
+ * skeleton 楠ㄦ灦灞�
+ * @description 楠ㄦ灦灞忎竴鑸敤浜庨〉闈㈠湪璇锋眰杩滅▼鏁版嵁灏氭湭瀹屾垚鏃讹紝椤甸潰鐢ㄧ伆鑹插潡棰勬樉绀烘湰鏉ョ殑椤甸潰缁撴瀯锛岀粰鐢ㄦ埛鏇村ソ鐨勪綋楠屻��
+ * @tutorial https://www.uviewui.com/components/skeleton.html
+ * @property {String} el-color 楠ㄦ灦鍧楃姸鍏冪礌鐨勮儗鏅鑹诧紙榛樿#e5e5e5锛�
+ * @property {String} bg-color 楠ㄦ灦缁勪欢鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {Boolean} animation 楠ㄦ灦鍧楁槸鍚︽樉绀哄姩鐢绘晥鏋滐紙榛樿false锛�
+ * @property {String Number} border-radius u-skeleton-fillet绫诲悕鍏冪礌锛屽搴旂殑楠ㄦ灦鍧楃殑鍦嗚澶у皬锛屽崟浣峳px锛堥粯璁�10锛�
+ * @property {Boolean} loading 鏄惁鏄剧ず楠ㄦ灦缁勪欢锛岃姹傚畬鎴愬悗锛屽皢姝ゅ�艰缃负false锛堥粯璁rue锛�
+ * @example <u-skeleton :loading="true" :animation="true"></u-skeleton>
+ */
+ export default {
+ name: "u-skeleton",
+ props: {
+ // 闇�瑕佹覆鏌撶殑鍏冪礌鑳屾櫙棰滆壊锛屽崄鍏繘鍒舵垨鑰卹gb绛夐兘鍙互
+ elColor: {
+ type: String,
+ default: '#e5e5e5'
+ },
+ // 鏁翠釜楠ㄦ灦灞忛〉闈㈢殑鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鏄惁鏄剧ず鍔犺浇鍔ㄧ敾
+ animation: {
+ type: Boolean,
+ default: false
+ },
+ // 鍦嗚鍊硷紝鍙绫诲悕涓簎-skeleton-fillet鐨勫厓绱犵敓鏁堬紝涓烘暟鍊硷紝涓嶅甫鍗曚綅
+ borderRadius: {
+ type: [String, Number],
+ default: "10"
+ },
+ // 鏄惁鏄剧ず楠ㄦ灦锛宼rue-鏄剧ず锛宖alse-闅愯棌
+ loading: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ windowWinth: 750, // 楠ㄦ灦灞忓搴�
+ windowHeight: 1500, // 楠ㄦ灦灞忛珮搴�
+ filletNodes: [], // 鍦嗚鍏冪礌
+ circleNodes: [], // 鍦嗗舰鍏冪礌
+ RectNodes: [], // 鐭╁舰鍏冪礌
+ top: 0,
+ left: 0,
+ }
+ },
+ methods: {
+ // 鏌ヨ鍚勮妭鐐圭殑淇℃伅
+ selecterQueryInfo() {
+ // 鑾峰彇鏁翠釜鐖剁粍浠跺鍣ㄧ殑楂樺害锛屽綋鍋氶鏋跺睆鐨勯珮搴�
+ // 鍦ㄥ井淇″皬绋嬪簭涓紝濡傛灉鎶婇鏋跺睆鏀惧叆缁勪欢涓娇鐢ㄧ殑璇濓紝闇�瑕佽皟in(this)涓婁笅鏂囦负鐖剁粍浠舵墠鏈夋晥
+ let query = '';
+ // #ifdef MP-WEIXIN
+ query = uni.createSelectorQuery().in(this.$parent);
+ // #endif
+ // #ifndef MP-WEIXIN
+ query = uni.createSelectorQuery()
+ // #endif
+ query.selectAll('.u-skeleton').boundingClientRect().exec((res) => {
+ this.windowHeight = res[0][0].height;
+ this.windowWinth = res[0][0].width;
+ this.top = res[0][0].bottom - res[0][0].height;
+ this.left = res[0][0].left;
+ });
+ // 鐭╁舰楠ㄦ灦鍏冪礌
+ this.getRectEls();
+ // 鍦嗗舰楠ㄦ灦鍏冪礌
+ this.getCircleEls();
+ // 鍦嗚楠ㄦ灦鍏冪礌
+ this.getFilletEls();
+ },
+ // 鐭╁舰鍏冪礌鍒楄〃
+ getRectEls() {
+ let query = '';
+ // 鍦ㄥ井淇″皬绋嬪簭涓紝濡傛灉鎶婇鏋跺睆鏀惧叆缁勪欢涓娇鐢ㄧ殑璇濓紝闇�瑕佽皟in(this)涓婁笅鏂囦负鐖剁粍浠舵墠鏈夋晥
+ // #ifdef MP-WEIXIN
+ query = uni.createSelectorQuery().in(this.$parent);
+ // #endif
+ // #ifndef MP-WEIXIN
+ query = uni.createSelectorQuery()
+ // #endif
+ query.selectAll('.u-skeleton-rect').boundingClientRect().exec((res) => {
+ this.RectNodes = res[0];
+ });
+ },
+ // 鍦嗚鍏冪礌鍒楄〃
+ getFilletEls() {
+ let query = '';
+ // 鍦ㄥ井淇″皬绋嬪簭涓紝濡傛灉鎶婇鏋跺睆鏀惧叆缁勪欢涓娇鐢ㄧ殑璇濓紝闇�瑕佽皟in(this)涓婁笅鏂囦负鐖剁粍浠舵墠鏈夋晥
+ // #ifdef MP-WEIXIN
+ query = uni.createSelectorQuery().in(this.$parent);
+ // #endif
+ // #ifndef MP-WEIXIN
+ query = uni.createSelectorQuery()
+ // #endif
+ query.selectAll('.u-skeleton-fillet').boundingClientRect().exec((res) => {
+ this.filletNodes = res[0];
+ });
+ },
+ // 鍦嗗舰鍏冪礌鍒楄〃
+ getCircleEls() {
+ let query = '';
+ // 鍦ㄥ井淇″皬绋嬪簭涓紝濡傛灉鎶婇鏋跺睆鏀惧叆缁勪欢涓娇鐢ㄧ殑璇濓紝闇�瑕佽皟in(this)涓婁笅鏂囦负鐖剁粍浠舵墠鏈夋晥
+ // #ifdef MP-WEIXIN
+ query = uni.createSelectorQuery().in(this.$parent);
+ // #endif
+ // #ifndef MP-WEIXIN
+ query = uni.createSelectorQuery()
+ // #endif
+ query.selectAll('.u-skeleton-circle').boundingClientRect().exec((res) => {
+ this.circleNodes = res[0];
+ });
+ }
+ },
+ // 缁勪欢琚寕杞�
+ mounted() {
+ // 鑾峰彇绯荤粺淇℃伅
+ let systemInfo = uni.getSystemInfoSync();
+ this.windowHeight = systemInfo.windowHeight;
+ this.windowWinth = systemInfo.windowWidth;
+ this.selecterQueryInfo();
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .skeleton-fade {
+ width: 100%;
+ height: 100%;
+ background: rgb(194, 207, 214);
+ animation-duration: 1.5s;
+ animation-name: blink;
+ animation-timing-function: ease-in-out;
+ animation-iteration-count: infinite;
+ }
+
+ @keyframes blink {
+ 0% {
+ opacity: 1;
+ }
+
+ 50% {
+ opacity: 0.4;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-slider/u-slider.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-slider/u-slider.vue"
new file mode 100644
index 0000000..d8b0a39
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-slider/u-slider.vue"
@@ -0,0 +1,257 @@
+<template>
+ <view class="u-slider" @tap="onClick" :class="[disabled ? 'u-slider--disabled' : '']" :style="{
+ backgroundColor: inactiveColor
+ }">
+ <view
+ class="u-slider__gap"
+ :style="[
+ barStyle,
+ {
+ height: height + 'rpx',
+ backgroundColor: activeColor
+ }
+ ]"
+ >
+ <view class="u-slider__button-wrap" @touchstart="onTouchStart"
+ @touchmove="onTouchMove" @touchend="onTouchEnd"
+ @touchcancel="onTouchEnd">
+ <slot v-if="$slots.default"/>
+ <view v-else class="u-slider__button" :style="[blockStyle, {
+ height: blockWidth + 'rpx',
+ width: blockWidth + 'rpx',
+ backgroundColor: blockColor
+ }]"></view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * slider 婊戝潡閫夋嫨鍣�
+ * @tutorial https://uviewui.com/components/slider.html
+ * @property {Number | String} value 婊戝潡榛樿鍊硷紙榛樿0锛�
+ * @property {Number | String} min 鏈�灏忓�硷紙榛樿0锛�
+ * @property {Number | String} max 鏈�澶у�硷紙榛樿100锛�
+ * @property {Number | String} step 姝ラ暱锛堥粯璁�1锛�
+ * @property {Number | String} blockWidth 婊戝潡瀹藉害锛岄珮绛変簬瀹斤紙30锛�
+ * @property {Number | String} height 婊戝潡鏉¢珮搴︼紝鍗曚綅rpx锛堥粯璁�6锛�
+ * @property {String} inactiveColor 搴曢儴鏉¤儗鏅鑹诧紙榛樿#c0c4cc锛�
+ * @property {String} activeColor 搴曢儴閫夋嫨閮ㄥ垎鐨勮儗鏅鑹诧紙榛樿#2979ff锛�
+ * @property {String} blockColor 婊戝潡棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {Object} blockStyle 缁欐粦鍧楄嚜瀹氫箟鏍峰紡锛屽璞″舰寮�
+ * @property {Boolean} disabled 鏄惁绂佺敤婊戝潡(榛樿涓篺alse)
+ * @event {Function} start 婊戝姩瑙﹀彂
+ * @event {Function} moving 姝e湪婊戝姩涓�
+ * @event {Function} end 婊戝姩缁撴潫
+ * @example <u-slider v-model="value" />
+ */
+export default {
+ name: 'u-slider',
+ props: {
+ // 褰撳墠杩涘害鐧惧垎姣斿�硷紝鑼冨洿0-100
+ value: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏄惁绂佺敤婊戝潡
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 婊戝潡瀹藉害锛岄珮绛変簬瀹斤紝鍗曚綅rpx
+ blockWidth: {
+ type: [Number, String],
+ default: 30
+ },
+ // 鏈�灏忓��
+ min: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏈�澶у��
+ max: {
+ type: [Number, String],
+ default: 100
+ },
+ // 姝ヨ繘鍊�
+ step: {
+ type: [Number, String],
+ default: 1
+ },
+ // 婊戝潡鏉¢珮搴︼紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 6
+ },
+ // 杩涘害鏉$殑婵�娲婚儴鍒嗛鑹�
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 杩涘害鏉$殑鑳屾櫙棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#c0c4cc'
+ },
+ // 婊戝潡鐨勮儗鏅鑹�
+ blockColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鐢ㄦ埛瀵规粦鍧楃殑鑷畾涔夐鑹�
+ blockStyle: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ },
+ data() {
+ return {
+ startX: 0,
+ status: 'end',
+ newValue: 0,
+ distanceX: 0,
+ startValue: 0,
+ barStyle: {},
+ sliderRect: {
+ left: 0,
+ width: 0
+ }
+ };
+ },
+ watch: {
+ value(n) {
+ // 鍙湁鍦ㄩ潪婊戝姩鐘舵�佹椂锛屾墠鍙互閫氳繃value鏇存柊婊戝潡鍊硷紝杩欓噷鐩戝惉锛屾槸涓轰簡璁╃敤鎴疯Е鍙�
+ if(this.status == 'end') this.updateValue(this.value, false);
+ }
+ },
+ created() {
+ this.updateValue(this.value, false);
+ },
+ mounted() {
+ // 鑾峰彇婊戝潡鏉$殑灏哄淇℃伅
+ this.$uGetRect('.u-slider').then(rect => {
+ this.sliderRect = rect;
+ });
+ },
+ methods: {
+ onTouchStart(event) {
+ if (this.disabled) return;
+ this.startX = 0;
+ // 瑙︽懜鐐归泦
+ let touches = event.touches[0];
+ // 瑙︽懜鐐瑰埌灞忓箷宸﹁竟鐨勮窛绂�
+ this.startX = touches.clientX;
+ // 姝ゅ鐨則his.value铏戒负props鍊硷紝浣嗘槸閫氳繃$emit('input')杩涜浜嗕慨鏀�
+ this.startValue = this.format(this.value);
+ // 鏍囩ず褰撳墠鐨勭姸鎬佷负寮�濮嬭Е鎽告粦鍔�
+ this.status = 'start';
+ },
+ onTouchMove(event) {
+ if (this.disabled) return;
+ // 杩炵画瑙︽懜鐨勮繃绋嬩細涓�鐩磋Е鍙戞湰鏂规硶锛屼絾鍙湁鎵嬫寚瑙﹀彂涓旂Щ鍔ㄤ簡鎵嶈璁や负鏄嫋鍔ㄤ簡锛屾墠鍙戝嚭浜嬩欢
+ // 瑙︽懜鍚庣涓�娆$Щ鍔ㄥ凡缁忓皢status璁剧疆涓簃oving鐘舵�侊紝鏁呰Е鎽哥浜屾绉诲姩涓嶄細瑙﹀彂鏈簨浠�
+ if (this.status == 'start') this.$emit('start');
+ let touches = event.touches[0];
+ // 婊戝潡鐨勫乏杈逛笉涓�瀹氳窡灞忓箷宸﹁竟鎺ュ¥锛屾墍浠ラ渶瑕佸噺鍘绘渶澶栧眰鐖跺厓绱犵殑宸﹁竟鍊�
+ this.distanceX = touches.clientX - this.sliderRect.left;
+ // 鑾峰緱绉诲姩璺濈瀵规暣涓粦鍧楃殑鐧惧垎姣斿�硷紝姝や负甯︽湁澶氫綅灏忔暟鐨勫�硷紝涓嶈兘鐢ㄦ鏇存柊瑙嗗浘
+ // 鍚﹀垯閫犳垚閫氫俊闃诲锛岄渶瑕佹瘡鏀瑰彉涓�涓猻tep鍊兼椂淇敼涓�娆¤鍥�
+ this.newValue = (this.distanceX / this.sliderRect.width) * 100;
+ this.status = 'moving';
+ // 鍙戝嚭moving浜嬩欢
+ this.$emit('moving');
+ this.updateValue(this.newValue, true);
+ },
+ onTouchEnd() {
+ if (this.disabled) return;
+ if (this.status === 'moving') {
+ this.updateValue(this.newValue, false);
+ this.$emit('end');
+ }
+ this.status = 'end';
+ },
+ updateValue(value, drag) {
+ // 鍘绘帀灏忔暟閮ㄥ垎锛屽悓鏃朵篃鏄step姝ヨ繘鐨勫鐞�
+ const width = this.format(value);
+ // 涓嶅厑璁告粦鍔ㄧ殑鍊艰秴杩噈ax鏈�澶у�硷紝鐧惧垎姣斾篃涓嶈兘瓒呰繃100
+ if(width > this.max || width > 100) return;
+ // 璁剧疆绉诲姩鐨勭櫨鍒嗘瘮鍊�
+ let barStyle = {
+ width: width + '%'
+ };
+ // 绉诲姩鏈熼棿鏃犻渶杩囨浮鍔ㄧ敾
+ if (drag == true) {
+ barStyle.transition = 'none';
+ } else {
+ // 闈炵Щ鍔ㄦ湡闂达紝鍒犳帀瀵硅繃娓′负绌虹殑澹版槑锛岃css涓殑澹版槑璧锋晥
+ delete barStyle.transition;
+ }
+ // 淇敼value鍊�
+ this.$emit('input', width);
+ this.barStyle = barStyle;
+ },
+ format(value) {
+ // 灏嗗皬鏁板彉鎴愭暣鏁帮紝涓轰簡鍑忓皯瀵硅鍥剧殑鏇存柊锛岄�犳垚瑙嗗浘灞備笌閫昏緫灞傜殑闃诲
+ return Math.round(Math.max(this.min, Math.min(value, this.max)) / this.step) * this.step;
+ },
+ onClick(event) {
+ if (this.disabled) return;
+ // 鐩存帴鐐瑰嚮婊戝潡鐨勬儏鍐碉紝璁$畻鏂瑰紡涓巓nTouchMove鏂规硶鐩稿悓
+ const value = ((event.detail.x - this.sliderRect.left) / this.sliderRect.width) * 100;
+ this.updateValue(value, false);
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-slider {
+ position: relative;
+ border-radius: 999px;
+ border-radius: 999px;
+ background-color: #ebedf0;
+}
+
+.u-slider:before {
+ position: absolute;
+ right: 0;
+ left: 0;
+ content: '';
+ top: -8px;
+ bottom: -8px;
+ z-index: -1;
+}
+
+.u-slider__gap {
+ position: relative;
+ border-radius: inherit;
+ transition: width 0.2s;
+ transition: width 0.2s;
+ background-color: #1989fa;
+}
+
+.u-slider__button {
+ width: 24px;
+ height: 24px;
+ border-radius: 50%;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
+ background-color: #fff;
+ cursor: pointer;
+}
+
+.u-slider__button-wrap {
+ position: absolute;
+ top: 50%;
+ right: 0;
+ transform: translate3d(50%, -50%, 0);
+}
+
+.u-slider--disabled {
+ opacity: 0.5;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-steps/u-steps.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-steps/u-steps.vue"
new file mode 100644
index 0000000..5d483ad
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-steps/u-steps.vue"
@@ -0,0 +1,200 @@
+<template>
+ <view class="">
+ <view
+ class="u-steps"
+ :style="{
+ flexDirection: direction
+ }"
+ >
+ <view class="u-steps__item"
+ :class="['u-steps__item--' + direction]"
+ v-for="(item, index) in list" :key="index"
+ >
+ <view
+ class="u-steps__item__num"
+ v-if="mode == 'number'"
+ :style="{
+ backgroundColor: current < index ? 'transparent' : activeColor,
+ borderColor: current < index ? unActiveColor : activeColor
+ }"
+ >
+ <text v-if="current < index" :style="{
+ color: current < index ? unActiveColor : activeColor,
+ }">
+ {{ index + 1 }}
+ </text>
+ <u-icon v-else size="22" color="#ffffff" :name="icon"></u-icon>
+ </view>
+ <view class="u-steps__item__dot" v-if="mode == 'dot'" :style="{
+ backgroundColor: index <= current ? activeColor : unActiveColor
+ }"></view>
+ <text class="u-line-1" :style="{
+ color: index <= current ? activeColor : unActiveColor,
+ }" :class="['u-steps__item__text--' + direction]">
+ {{ item.name }}
+ </text>
+ <view class="u-steps__item__line" :class="['u-steps__item__line--' + mode]" v-if="index < list.length - 1">
+ <u-line :direction="direction" length="100%" :hair-line="false" :color="unActiveColor"></u-line>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * steps 姝ラ鏉�
+ * @description 璇ョ粍浠朵竴鑸敤浜庡畬鎴愪竴涓换鍔¤鍒嗗嚑涓楠わ紝鏍囪瘑鐩墠澶勪簬绗嚑姝ョ殑鍦烘櫙銆�
+ * @tutorial https://www.uviewui.com/components/steps.html
+ * @property {String} mode 璁剧疆妯″紡锛堥粯璁ot锛�
+ * @property {Array} list 鏁拌酱鏉℃暟鎹紝鏁扮粍銆傚叿浣撹涓婃柟绀轰緥
+ * @property {String} type type涓婚锛堥粯璁rimary锛�
+ * @property {String} direction row-妯悜锛宑olumn-绔栧悜锛堥粯璁ow锛�
+ * @property {Number String} current 璁剧疆褰撳墠澶勪簬绗嚑姝�
+ * @property {String} active-color 宸插畬鎴愭楠ょ殑婵�娲婚鑹诧紝濡傝缃紝type鍊间細澶辨晥
+ * @property {String} un-active-color 鏈縺娲荤殑棰滆壊锛岀敤浜庤〃绀烘湭瀹屾垚姝ラ鐨勯鑹诧紙榛樿#606266锛�
+ * @example <u-steps :list="numList" active-color="#fa3534"></u-steps>
+ */
+export default {
+ name: 'u-steps',
+ props: {
+ // 姝ラ鏉$殑绫诲瀷锛宒ot|number
+ mode: {
+ type: String,
+ default: 'dot'
+ },
+ // 姝ラ鏉$殑鏁版嵁
+ list: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 涓婚绫诲瀷, primary|success|info|warning|error
+ type: {
+ type: String,
+ default: 'primary'
+ },
+ // 褰撳墠鍝竴姝ユ槸婵�娲荤殑
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 婵�娲绘楠ょ殑棰滆壊
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鏈縺娲荤殑棰滆壊
+ unActiveColor: {
+ type: String,
+ default: '#909399'
+ },
+ // 鑷畾涔夊浘鏍�
+ icon: {
+ type: String,
+ default: 'checkmark'
+ },
+ // step鐨勬帓鍒楁柟鍚戯紝row-妯悜锛宑olumn-绔栧悜
+ direction: {
+ type: String,
+ default: 'row'
+ }
+ },
+ data() {
+ return {};
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import '../../libs/css/style.components.scss';
+
+$u-steps-item-number-width: 44rpx;
+$u-steps-item-dot-width: 20rpx;
+
+.u-steps {
+ display: flex;
+
+ .u-steps__item {
+ flex: 1;
+ text-align: center;
+ position: relative;
+ min-width: 100rpx;
+ font-size: 26rpx;
+ color: #8799a3;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ align-items: center;
+
+ &--row {
+ display: flex;
+ flex-direction: column;
+
+ .u-steps__item__line {
+ position: absolute;
+ z-index: 0;
+ left: 75%;
+ width: 50%;
+
+ &--dot {
+ top: calc(#{$u-steps-item-dot-width} / 2);
+ }
+
+ &--number {
+ top: calc(#{$u-steps-item-number-width} / 2);
+ }
+ }
+ }
+
+ &--column {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ min-height: 120rpx;
+
+ .u-steps__item__line {
+ position: absolute;
+ z-index: 0;
+ height: 50%;
+ top: 75%;
+
+ &--dot {
+ left: calc(#{$u-steps-item-dot-width} / 2);
+ }
+
+ &--number {
+ left: calc(#{$u-steps-item-number-width} / 2);
+ }
+ }
+ }
+
+ &__num {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: $u-steps-item-number-width;
+ height: $u-steps-item-number-width;
+ border: 1px solid #8799a3;
+ border-radius: 50%;
+ overflow: hidden;
+ }
+
+ &__dot {
+ width: $u-steps-item-dot-width;
+ height: $u-steps-item-dot-width;
+ display: flex;
+ border-radius: 50%;
+ }
+
+ &__text--row {
+ margin-top: 14rpx;
+ }
+
+ &__text--column {
+ margin-left: 14rpx;
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-sticky/u-sticky.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-sticky/u-sticky.vue"
new file mode 100644
index 0000000..d9bc34c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-sticky/u-sticky.vue"
@@ -0,0 +1,157 @@
+<template>
+ <view class="">
+ <view class="u-sticky-wrap" :class="[elClass]" :style="{
+ height: fixed ? height + 'px' : 'auto',
+ backgroundColor: bgColor
+ }">
+ <view class="u-sticky" :style="{
+ position: fixed ? 'fixed' : 'static',
+ top: stickyTop + 'px',
+ left: left + 'px',
+ width: width == 'auto' ? 'auto' : width + 'px',
+ zIndex: uZIndex
+ }">
+ <slot></slot>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * sticky 鍚搁《
+ * @description 璇ョ粍浠朵笌CSS涓璸osition: sticky灞炴�у疄鐜扮殑鏁堟灉涓�鑷达紝褰撶粍浠惰揪鍒伴璁剧殑鍒伴《閮ㄨ窛绂绘椂锛� 灏变細鍥哄畾鍦ㄦ寚瀹氫綅缃紝缁勪欢浣嶇疆澶т簬棰勮鐨勯《閮ㄨ窛绂绘椂锛屼細閲嶆柊鎸夌収姝e父鐨勫竷灞�鎺掑垪銆�
+ * @tutorial https://www.uviewui.com/components/sticky.html
+ * @property {String Number} offset-top 鍚搁《鏃朵笌椤堕儴鐨勮窛绂伙紝鍗曚綅rpx锛堥粯璁�0锛�
+ * @property {String Number} index 鑷畾涔夋爣璇嗭紝鐢ㄤ簬鍖哄垎鏄摢涓�涓粍浠�
+ * @property {Boolean} enable 鏄惁寮�鍚惛椤跺姛鑳斤紙榛樿true锛�
+ * @property {String} bg-color 缁勪欢鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {String Number} z-index 鍚搁《鏃剁殑z-index鍊硷紙榛樿970锛�
+ * @property {String Number} h5-nav-height 瀵艰埅鏍忛珮搴︼紝鑷畾涔夊鑸爮鏃�(鏃犲鑸爮鏃堕渶璁剧疆涓�0)锛岄渶瑕佷紶鍏ユ鍊硷紝鍗曚綅px锛堥粯璁�44锛�
+ * @event {Function} fixed 缁勪欢鍚搁《鏃惰Е鍙�
+ * @event {Function} unfixed 缁勪欢鍙栨秷鍚搁《鏃惰Е鍙�
+ * @example <u-sticky offset-top="200"><view>濉炰笅绉嬫潵椋庢櫙寮傦紝琛¢槼闆佸幓鏃犵暀鎰�</view></u-sticky>
+ */
+ export default {
+ name: "u-sticky",
+ props: {
+ // 鍚搁《瀹瑰櫒鍒伴《閮ㄦ煇涓窛绂荤殑鏃跺�欙紝杩涜鍚搁《锛屽湪H5骞冲彴锛孨avigationBar涓�44px
+ offsetTop: {
+ type: [Number, String],
+ default: 0
+ },
+ //鍒楄〃涓殑绱㈠紩鍊�
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ // 鏄惁寮�鍚惛椤跺姛鑳�
+ enable: {
+ type: Boolean,
+ default: true
+ },
+ // h5椤堕儴瀵艰埅鏍忕殑楂樺害
+ h5NavHeight: {
+ type: [Number, String],
+ default: 44
+ },
+ // 鍚搁《鍖哄煙鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // z-index鍊�
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ data() {
+ return {
+ fixed: false,
+ height: 'auto',
+ stickyTop: 0,
+ elClass: this.$u.guid(),
+ left: 0,
+ width: 'auto',
+ };
+ },
+ watch: {
+ offsetTop(val) {
+ this.initObserver();
+ },
+ enable(val) {
+ if (val == false) {
+ this.fixed = false;
+ this.disconnectObserver('contentObserver');
+ } else {
+ this.initObserver();
+ }
+ }
+ },
+ computed: {
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.sticky;
+ }
+ },
+ mounted() {
+ this.initObserver();
+ },
+ methods: {
+ initObserver() {
+ if (!this.enable) return;
+ // #ifdef H5
+ this.stickyTop = this.offsetTop != 0 ? uni.upx2px(this.offsetTop) + this.h5NavHeight : this.h5NavHeight;
+ // #endif
+ // #ifndef H5
+ this.stickyTop = this.offsetTop != 0 ? uni.upx2px(this.offsetTop) : 0;
+ // #endif
+
+ this.disconnectObserver('contentObserver');
+ this.$uGetRect('.' + this.elClass).then((res) => {
+ this.height = res.height;
+ this.left = res.left;
+ this.width = res.width;
+ this.$nextTick(() => {
+ this.observeContent();
+ });
+ });
+ },
+ observeContent() {
+ this.disconnectObserver('contentObserver');
+ const contentObserver = this.createIntersectionObserver({
+ thresholds: [0.95, 0.98, 1]
+ });
+ contentObserver.relativeToViewport({
+ top: -this.stickyTop
+ });
+ contentObserver.observe('.' + this.elClass, res => {
+ if (!this.enable) return;
+ this.setFixed(res.boundingClientRect.top);
+ });
+ this.contentObserver = contentObserver;
+ },
+ setFixed(top) {
+ const fixed = top < this.stickyTop;
+ if (fixed) this.$emit('fixed', this.index);
+ else if(this.fixed) this.$emit('unfixed', this.index);
+ this.fixed = fixed;
+ },
+ disconnectObserver(observerName) {
+ const observer = this[observerName];
+ observer && observer.disconnect();
+ },
+ },
+ beforeDestroy() {
+ this.disconnectObserver('contentObserver');
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ .u-sticky {
+ z-index: 9999999999;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-subsection/u-subsection.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-subsection/u-subsection.vue"
new file mode 100644
index 0000000..6e68017
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-subsection/u-subsection.vue"
@@ -0,0 +1,356 @@
+<template>
+ <view class="u-subsection" :style="[subsectionStyle]">
+ <view class="u-item u-line-1" :style="[itemStyle(index)]" @tap="click(index)" :class="[noBorderRight(index), 'u-item-' + index]"
+ v-for="(item, index) in listInfo" :key="index">
+ <view :style="[textStyle(index)]" class="u-item-text u-line-1">{{ item.name }}</view>
+ </view>
+ <view class="u-item-bg" :style="[itemBarStyle]"></view>
+ </view>
+</template>
+
+<script>
+ /**
+ * subsection 鍒嗘鍣�
+ * @description 璇ュ垎娈靛櫒涓�鑸敤浜庣敤鎴蜂粠鍑犱釜閫夐」涓�夋嫨鏌愪竴涓殑鍦烘櫙
+ * @tutorial https://www.uviewui.com/components/subsection.html
+ * @property {Array} list 閫夐」鐨勬暟缁勶紝褰㈠紡瑙佷笂鏂�"鍩烘湰浣跨敤"
+ * @property {String Number} current 鍒濆鍖栨椂榛樿閫変腑鐨勯�夐」绱㈠紩鍊硷紙榛樿0锛�
+ * @property {String} active-color 婵�娲绘椂鐨勯鑹诧紝mode涓簊ubsection鏃跺浐瀹氫负鐧借壊锛堥粯璁�#303133锛�
+ * @property {String} inactive-color 鏈縺娲绘椂瀛椾綋鐨勯鑹诧紝mode涓簊ubsection鏃舵棤鏁堬紙榛樿#606266锛�
+ * @property {String} mode 妯″紡閫夋嫨锛岃瀹樼綉"妯″紡閫夋嫨"璇存槑锛堥粯璁utton锛�
+ * @property {String Number} font-size 瀛椾綋澶у皬锛屽崟浣峳px锛堥粯璁�28锛�
+ * @property {String Number} height 缁勪欢楂樺害锛屽崟浣峳px锛堥粯璁�70锛�
+ * @property {Boolean} animation 鏄惁寮�鍚姩鐢绘晥鏋滐紝瑙佷笂鏂硅鏄庯紙榛樿true锛�
+ * @property {Boolean} bold 婵�娲婚�夐」鐨勫瓧浣撴槸鍚﹀姞绮楋紙榛樿true锛�
+ * @property {String} bg-color 缁勪欢鑳屾櫙棰滆壊锛宮ode涓篵utton鏃舵湁鏁堬紙榛樿#eeeeef锛�
+ * @property {String} button-color 鎸夐挳鑳屾櫙棰滆壊锛宮ode涓篵utton鏃舵湁鏁堬紙榛樿#ffffff锛�
+ * @event {Function} change 鍒嗘鍣ㄩ�夐」鍙戠敓鏀瑰彉鏃惰Е鍙�
+ * @example <u-subsection active-color="#ff9900"></u-subsection>
+ */
+ export default {
+ name: "u-subsection",
+ props: {
+ // tab鐨勬暟鎹�
+ list: {
+ type: Array,
+ default () {
+ return [];
+ }
+ },
+ // 褰撳墠娲诲姩鐨則ab鐨刬ndex
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 婵�娲荤殑棰滆壊
+ activeColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鏈縺娲荤殑棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 妯″紡閫夋嫨锛宮ode=button涓烘寜閽舰寮忥紝mode=subsection鏃朵负鍒嗘妯″紡
+ mode: {
+ type: String,
+ default: 'button'
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 28
+ },
+ // 鏄惁寮�鍚姩鐢绘晥鏋�
+ animation: {
+ type: Boolean,
+ default: true
+ },
+ // 缁勪欢鐨勯珮搴︼紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 70
+ },
+ // 婵�娲籺ab鐨勫瓧浣撴槸鍚﹀姞绮�
+ bold: {
+ type: Boolean,
+ default: true
+ },
+ // mode=button鏃讹紝缁勪欢鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#eeeeef'
+ },
+ // mode = button鏃讹紝婊戝潡鑳屾櫙棰滆壊
+ buttonColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鍦ㄥ垏鎹㈠垎娈靛櫒鐨勬椂鍊欙紝鏄惁璁╄澶囬渿涓�涓�
+ vibrateShort: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ listInfo: [],
+ itemBgStyle: {
+ width: 0,
+ left: 0,
+ backgroundColor: '#ffffff',
+ height: '100%',
+ transition: ''
+ },
+ currentIndex: this.current,
+ buttonPadding: 3, // mode = button 鏃讹紝缁勪欢鐨勫唴杈硅窛
+ borderRadius: 5, // 鍦嗚鍊�
+ firstTimeVibrateShort: true // 缁勪欢鍒濆鍖栨椂锛屼細瑙﹀彂current鍙樺寲锛屾鏃朵笉搴旈渿鍔�
+ };
+ },
+ watch: {
+ current: {
+ immediate: true,
+ handler(nVal) {
+ this.currentIndex = nVal;
+ this.changeSectionStatus(nVal);
+ }
+ }
+ },
+ created() {
+ // 灏唋ist鐨勬暟鎹紝浼犲叆listInfo鏁扮粍锛屽洜涓轰笉鑳戒慨鏀筽rops浼犻�掔殑list鍊�
+ // 鍙互鎺ュ彈鐩存帴鏁扮粍褰㈠紡锛屾垨鑰呮暟缁勫厓绱犱负瀵硅薄鐨勫舰寮忥紝濡傦細['绠�浠�', '璇勮'],鎴栬�匸{name: '绠�浠�'}, {name: '璇勮'}]
+ this.listInfo = this.list.map((val, index) => {
+ if (typeof val != 'object') {
+ let obj = {
+ width: 0,
+ name: val
+ };
+ return obj;
+ } else {
+ val.width = 0;
+ return val;
+ }
+ });
+ },
+ computed: {
+ // 璁剧疆mode=subsection鏃讹紝婊戝潡鐗规湁鐨勬牱寮�
+ noBorderRight() {
+ return index => {
+ if (this.mode != 'subsection') return;
+ let classs = '';
+ // 涓嶆樉绀哄彸杈圭殑杈规
+ if (index < this.list.length - 1) classs += ' u-none-border-right';
+ // 鏄剧ず鏁翠釜缁勪欢鐨勫乏鍙宠竟鍦嗚
+ if (index == 0) classs += ' u-item-first';
+ if (index == this.list.length - 1) classs += ' u-item-last';
+ return classs;
+ };
+ },
+ // 鏂囧瓧鐨勬牱寮�
+ textStyle() {
+ return index => {
+ let style = {};
+ // 璁剧疆瀛椾綋棰滆壊
+ if (this.mode == 'subsection') {
+ if (index == this.currentIndex) {
+ style.color = '#ffffff';
+ } else {
+ style.color = this.activeColor;
+ }
+ } else {
+ if (index == this.currentIndex) {
+ style.color = this.activeColor;
+ } else {
+ style.color = this.inactiveColor;
+ }
+ }
+ // 瀛椾綋鍔犵矖
+ if (index == this.currentIndex && this.bold) style.fontWeight = 'bold';
+ // 鏂囧瓧澶у皬
+ style.fontSize = this.fontSize + 'rpx';
+ return style;
+ };
+ },
+ // 姣忎釜鍒嗘鍣╥tem鐨勬牱寮�
+ itemStyle() {
+ return index => {
+ let style = {};
+ if (this.mode == 'subsection') {
+ // 璁剧疆border鐨勬牱寮�
+ style.borderColor = this.activeColor;
+ style.borderWidth = '1px';
+ style.borderStyle = 'solid';
+ }
+ return style;
+ };
+ },
+ // mode=button鏃讹紝澶栧眰view鐨勬牱寮�
+ subsectionStyle() {
+ let style = {};
+ style.height = uni.upx2px(this.height) + 'px';
+ if (this.mode == 'button') {
+ style.backgroundColor = this.bgColor;
+ style.padding = `${this.buttonPadding}px`;
+ style.borderRadius = `${this.borderRadius}px`;
+ }
+ return style;
+ },
+ // 婊戝潡鐨勬牱寮�
+ itemBarStyle() {
+ let style = {};
+ style.backgroundColor = this.activeColor;
+ style.zIndex = 1;
+ if (this.mode == 'button') {
+ style.backgroundColor = this.buttonColor;
+ style.borderRadius = `${this.borderRadius}px`;
+ style.bottom = `${this.buttonPadding}px`;
+ style.height = uni.upx2px(this.height) - this.buttonPadding * 2 + 'px';
+ style.zIndex = 0;
+ }
+ return Object.assign(this.itemBgStyle, style);
+ }
+ },
+ mounted() {
+ setTimeout(() => {
+ this.getTabsInfo();
+ }, 10);
+ },
+ methods: {
+ // 鏀瑰彉婊戝潡鐨勬牱寮�
+ changeSectionStatus(nVal) {
+ if (this.mode == 'subsection') {
+ // 鏍规嵁婊戝潡鍦ㄦ渶宸﹁竟鍜屾渶鍙宠竟鏃讹紝鏄剧ず宸﹁竟鍜屽彸杈圭殑鍦嗚
+ if (nVal == this.list.length - 1) {
+ this.itemBgStyle.borderRadius = `0 ${this.buttonPadding}px ${this.buttonPadding}px 0`;
+ }
+ if (nVal == 0) {
+ this.itemBgStyle.borderRadius = `${this.buttonPadding}px 0 0 ${this.buttonPadding}px`;
+ }
+ if (nVal > 0 && nVal < this.list.length - 1) {
+ this.itemBgStyle.borderRadius = '0';
+ }
+ }
+ // 鏇存柊婊戝潡鐨勪綅缃�
+ setTimeout(() => {
+ this.itemBgLeft();
+ }, 10);
+ if (this.vibrateShort && !this.firstTimeVibrateShort) {
+ // 浣挎墜鏈轰骇鐢熺煭淇冮渿鍔紝寰俊灏忕▼搴忔湁鏁堬紝APP(HX 2.6.8)鍜孒5鏃犳晥
+ // #ifndef H5
+ uni.vibrateShort();
+ // #endif
+ }
+ // 绗竴娆¤繃鍚庯紝璁剧疆firstTimeVibrateShort涓篺alse锛岃鍏朵笅涓�娆″彲浠ラ渿鍔�(濡傛灉鍏佽闇囧姩鐨勮瘽)
+ this.firstTimeVibrateShort = false;
+ },
+ click(index) {
+ // 涓嶅厑璁哥偣鍑诲綋鍓嶆縺娲婚�夐」
+ if (index == this.currentIndex) return;
+ this.currentIndex = index;
+ this.changeSectionStatus(index);
+ this.$emit('change', Number(index));
+ },
+ // 鑾峰彇鍚勪釜tab鐨勮妭鐐逛俊鎭�
+ getTabsInfo() {
+ let view = uni.createSelectorQuery().in(this);
+ for (let i = 0; i < this.list.length; i++) {
+ view.select('.u-item-' + i).boundingClientRect();
+ }
+ view.exec(res => {
+ if (!res.length) {
+ setTimeout(() => {
+ this.getTabsInfo();
+ return;
+ }, 10);
+ }
+ // 灏嗗垎娈靛櫒姣忎釜item鐨勫搴︼紝鏀惧叆listInfo鏁扮粍
+ res.map((val, index) => {
+ this.listInfo[index].width = val.width;
+ });
+ // 鍒濆鍖栨粦鍧楃殑瀹藉害
+ if (this.mode == 'subsection') {
+ this.itemBgStyle.width = this.listInfo[0].width + 'px';
+ } else if (this.mode == 'button') {
+ this.itemBgStyle.width = this.listInfo[0].width + 'px';
+ }
+ // 鍒濆鍖栨粦鍧楃殑浣嶇疆
+ this.itemBgLeft();
+ });
+ },
+ itemBgLeft() {
+ // 鏍规嵁鏄惁寮�鍚姩鐢绘晥鏋滐紝
+ if (this.animation) {
+ this.itemBgStyle.transition = 'all 0.35s';
+ } else {
+ this.itemBgStyle.transition = 'all 0s';
+ }
+ let left = 0;
+ // 璁$畻褰撳墠娲昏穬item鍒扮粍浠跺乏杈圭殑璺濈
+ this.listInfo.map((val, index) => {
+ if (index < this.currentIndex) left += val.width;
+ });
+ // 鏍规嵁mode涓嶅悓妯″紡锛岃绠楁粦鍧楅渶瑕佺Щ鍔ㄧ殑璺濈
+ if (this.mode == 'subsection') {
+ this.itemBgStyle.left = left + 'px';
+ } else if (this.mode == 'button') {
+ this.itemBgStyle.left = left + this.buttonPadding + 'px';
+ }
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-subsection {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+ position: relative;
+ }
+
+ .u-item {
+ flex: 1;
+ text-align: center;
+ font-size: 26rpx;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: $u-main-color;
+ display: inline-flex;
+ padding: 0 6rpx;
+ }
+
+ .u-item-bg {
+ background-color: $u-type-primary;
+ position: absolute;
+ z-index: -1;
+ }
+
+ .u-none-border-right {
+ border-right: none !important;
+ }
+
+ .u-item-first {
+ border-top-left-radius: 8rpx;
+ border-bottom-left-radius: 8rpx;
+ }
+
+ .u-item-last {
+ border-top-right-radius: 8rpx;
+ border-bottom-right-radius: 8rpx;
+ }
+
+ .u-item-text {
+ transition: all 0.35s;
+ color: $u-main-color;
+ display: flex;
+ align-items: center;
+ position: relative;
+ z-index: 3;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue"
new file mode 100644
index 0000000..b533ff3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue"
@@ -0,0 +1,255 @@
+<template>
+ <view class="">
+ <movable-area class="u-swipe-action" :style="{ backgroundColor: bgColor }">
+ <movable-view
+ class="u-swipe-view"
+ @change="change"
+ @touchend="touchend"
+ @touchstart="touchstart"
+ direction="horizontal"
+ :disabled="disabled"
+ :x="moveX"
+ :style="{
+ width: movableViewWidth ? movableViewWidth : '100%'
+ }"
+ >
+ <view
+ class="u-swipe-content"
+ @tap.stop="contentClick"
+ >
+ <slot></slot>
+ </view>
+ <view class="u-swipe-del" v-if="showBtn" @tap.stop="btnClick(index)" :style="[btnStyle(item.style)]" v-for="(item, index) in options" :key="index">
+ <view class="u-btn-text">{{ item.text }}</view>
+ </view>
+ </movable-view>
+ </movable-area>
+ </view>
+</template>
+
+<script>
+/**
+ * swipeAction 宸︽粦鍗曞厓鏍�
+ * @description 璇ョ粍浠朵竴鑸敤浜庡乏婊戝敜鍑烘搷浣滆彍鍗曠殑鍦烘櫙锛岀敤鐨勬渶澶氱殑鏄乏婊戝垹闄ゆ搷浣溿��
+ * @tutorial https://www.uviewui.com/components/swipeAction.html
+ * @property {String} bg-color 鏁翠釜缁勪欢鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {Array} options 鏁扮粍褰㈠紡锛屽彲浠ラ厤缃儗鏅鑹插拰鏂囧瓧
+ * @property {String Number} index 鏍囪瘑绗︼紝鐐瑰嚮鏃跺�欑敤浜庡尯鍒嗙偣鍑讳簡鍝竴涓紝鐢╲-for寰幆鏃剁殑index鍗冲彲
+ * @property {String Number} btn-width 鎸夐挳瀹藉害锛屽崟浣峳px锛堥粯璁�180锛�
+ * @property {Boolean} disabled 鏄惁绂佹鏌愪釜swipeAction婊戝姩锛堥粯璁alse锛�
+ * @property {Boolean} show 鎵撳紑鎴栬�呭叧闂煇涓粍浠讹紙榛樿false锛�
+ * @event {Function} click 鐐瑰嚮缁勪欢鏃惰Е鍙�
+ * @event {Function} close 缁勪欢瑙﹀彂鍏抽棴鐘舵�佹椂
+ * @event {Function} content-click 鐐瑰嚮鍐呭鏃惰Е鍙�
+ * @event {Function} open 缁勪欢瑙﹀彂鎵撳紑鐘舵�佹椂
+ * @example <u-swipe-action btn-text="鏀惰棌">...</u-swipe-action>
+ */
+export default {
+ name: 'u-swipe-action',
+ props: {
+ // index鍊硷紝鐢ㄤ簬寰楃煡鐐瑰嚮鍒犻櫎鐨勬槸鍝釜鎸夐挳
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ // 婊戝姩鎸夐挳鐨勫搴︼紝鍗曚綅涓簉px
+ btnWidth: {
+ type: [String, Number],
+ default: 180
+ },
+ // 鏄惁绂佹鏌愪釜action婊戝姩
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 鎵撳紑鎴栬�呭叧闂粍浠�
+ show: {
+ type: Boolean,
+ default: false
+ },
+ // 缁勪欢鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鏄惁浣挎墜鏈哄彂鐢熺煭淇冮渿鍔紝鐩墠鍙湪iOS鐨勫井淇″皬绋嬪簭鏈夋晥(2020-05-06)
+ vibrateShort: {
+ type: Boolean,
+ default: false
+ },
+ // 鎸夐挳鎿嶄綔鍙傛暟
+ options: {
+ type: Array,
+ default() {
+ return [];
+ }
+ }
+ },
+ watch: {
+ show: {
+ immediate: true,
+ handler(nVal, oVal) {
+ if (nVal) {
+ this.open();
+ } else {
+ this.close();
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ moveX: 0, // movable-view鍏冪礌鍦▁杞翠笂闇�瑕佺Щ鍔ㄧ殑鐩爣绉诲姩璺濈锛岀敤浜庡睍寮�鎴栨敹璧锋粦鍔ㄧ殑鎸夐挳
+ scrollX: 0, // movable-view绉诲姩杩囩▼涓骇鐢熺殑change浜嬩欢涓殑x杞寸Щ鍔ㄥ��
+ status: false, // 婊戝姩鐨勭姸鎬侊紝琛ㄧず褰撳墠鏄睍寮�杩樻槸鍏抽棴鎸夐挳鐨勭姸鎬�
+ movableAreaWidth: 0, // 婊戝姩鍖哄煙
+ elId: this.$u.guid(), // id锛岀敤浜庨�氱煡鍙﹀缁勪欢鍏抽棴鏃剁殑璇嗗埆
+ showBtn: false, // 鍒氬紑濮嬫覆鏌撹鍥炬椂涓嶆樉绀哄彸杈圭殑鎸夐挳锛岄伩鍏嶈鍥鹃棯鍔�
+ };
+ },
+ computed: {
+ movableViewWidth() {
+ return this.movableAreaWidth + this.allBtnWidth + 'px';
+ },
+ innerBtnWidth() {
+ return uni.upx2px(this.btnWidth);
+ },
+ allBtnWidth() {
+ return uni.upx2px(this.btnWidth) * this.options.length;
+ },
+ btnStyle() {
+ return style => {
+ let css = {};
+ style.width = this.btnWidth + 'rpx';
+ return style;
+ };
+ }
+ },
+ mounted() {
+ this.getActionRect();
+ },
+ methods: {
+ // 鐐瑰嚮鎸夐挳
+ btnClick(index) {
+ this.status = false;
+ // this.index涓虹偣鍑荤殑鍑犱釜缁勪欢锛宨ndex涓虹偣鍑绘煇涓粍浠剁殑绗嚑涓寜閽�(options鏁扮粍鐨勭储寮�)
+ this.$emit('click', this.index, index);
+ },
+ // movable-view鍏冪礌绉诲姩浜嬩欢
+ change(e) {
+ this.scrollX = e.detail.x;
+ },
+ // 鍏抽棴鎸夐挳鐘舵��
+ close() {
+ this.moveX = 0;
+ this.status = false;
+ },
+ // 鎵撳紑鎸夐挳鐨勭姸鎬�
+ open() {
+ if (this.disabled) return;
+ this.moveX = -this.allBtnWidth;
+ this.status = true;
+ },
+ // 鐢ㄦ埛鎵嬫寚绂诲紑movable-view鍏冪礌锛屽仠姝㈣Е鎽�
+ touchend() {
+ this.moveX = this.scrollX;
+ // 鍋滄瑙︽懜鏃跺�欙紝鍒ゆ柇褰撳墠鏄睍寮�杩樻槸鍏抽棴鐘舵��
+ // 鍏抽棴鐘舵��
+ // 杩欎竴姝ュ緢閲嶈锛岄渶瑕佸厛缁檛his.moveX涓�涓彉鍖栫殑闅忔満鍊硷紝鍚﹀垯鍥犱负鍓嶅悗璁剧疆鐨勪负鍚屼竴涓��
+ // props鍗曞悜鏁版嵁娴佺殑鍘熷洜锛屽鑷磎ovable-view鍏冪礌涓嶄細鍙戠敓鍙樺寲锛屽垏璁帮紝璇﹁鏂囨。锛�
+ // https://uniapp.dcloud.io/use?id=%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98
+ this.$nextTick(function() {
+ if (this.status == false) {
+ // 鍏抽棴鐘舵�佸乏婊戯紝浜х敓鐨剎杞翠綅绉讳负璐熷�硷紝涔熷氨鏄婊戝姩鐨勮窛绂诲ぇ浜庢寜閽殑鍥涘垎涔嬩竴瀹藉害锛岃嚜鍔ㄥ睍寮�鎸夐挳
+ if (this.scrollX <= -this.allBtnWidth / 4) {
+ this.moveX = -this.allBtnWidth; // 鎸夐挳瀹藉害鐨勮礋鍊硷紝鍗充负灞曞紑鐘舵�乵ovable-view鍏冪礌宸︽粦鐨勮窛绂�
+ this.status = true; // 鏍囧織褰撳墠涓哄睍寮�鐘舵��
+ this.emitOpenEvent();
+ // 浜х敓闇囧姩鏁堟灉
+ if (this.vibrateShort) uni.vibrateShort();
+ } else {
+ this.moveX = 0; // 濡傛灉璺濈娌℃湁鎸夐挳瀹藉害鐨勫洓鍒嗕箣涓�锛岃嚜鍔ㄦ敹璧�
+ this.status = false;
+ this.emitCloseEvent();
+ }
+ } else {
+ // 濡傛灉鍦ㄦ墦寮�鐨勭姸鎬佷笅锛屽彸婊戝姩鐨勮窛绂籜杞村亸绉昏秴杩囨寜閽殑鍥涘垎涔嬩竴(璐熷�煎弽杩囨潵鐨勫洓鍒嗕箣涓�)锛岃嚜鍔ㄦ敹璧锋寜閽�
+ if (this.scrollX > (-this.allBtnWidth * 3) / 4) {
+ this.moveX = 0;
+ this.$nextTick(() => {
+ this.moveX = 101;
+ });
+ this.status = false;
+ this.emitCloseEvent();
+ } else {
+ this.moveX = -this.allBtnWidth;
+ this.status = true;
+ this.emitOpenEvent();
+ }
+ }
+ });
+ },
+ emitOpenEvent() {
+ this.$emit('open', this.index);
+ },
+ emitCloseEvent() {
+ this.$emit('close', this.index);
+ },
+ // 寮�濮嬭Е鎽�
+ touchstart() {},
+ getActionRect() {
+ this.$uGetRect('.u-swipe-action').then(res => {
+ this.movableAreaWidth = res.width;
+ // 绛夎鍥炬洿鏂板畬鍚庯紝鍐嶆樉绀哄彸杈圭殑鍙粦鍔ㄦ寜閽紝闃叉杩欎簺鎸夐挳浼�"闂竴涓�"
+ this.$nextTick(() => {
+ this.showBtn = true;
+ })
+ });
+ },
+ // 鐐瑰嚮鍐呭瑙﹀彂浜嬩欢
+ contentClick() {
+ // 鐐瑰嚮鍐呭鏃讹紝濡傛灉褰撳墠涓烘墦寮�鐘舵�侊紝鏀惰捣缁勪欢
+ if (this.status == true) {
+ this.status = 'close';
+ this.moveX = 0;
+ }
+ this.$emit('content-click', this.index);
+ }
+ }
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-swipe-action {
+ width: auto;
+ height: initial;
+ position: relative;
+ overflow: hidden;
+}
+
+.u-swipe-view {
+ display: flex;
+ height: initial;
+ position: relative;
+ /* 杩欎竴鍙ュ緢鍏抽敭锛岃鐩栭粯璁ょ殑缁濆瀹氫綅 */
+}
+
+.u-swipe-content {
+ flex: 1;
+}
+
+.u-swipe-del {
+ position: relative;
+ font-size: 30rpx;
+ color: #ffffff;
+}
+
+.u-btn-text {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swiper/u-swiper.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swiper/u-swiper.vue"
new file mode 100644
index 0000000..86e59db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-swiper/u-swiper.vue"
@@ -0,0 +1,338 @@
+<template>
+ <view class="u-swiper-wrap" :style="{
+ borderRadius: `${borderRadius}rpx`
+ }">
+ <swiper :current="elCurrent" @change="change" @animationfinish="animationfinish" :interval="interval" :circular="circular" :duration="duration" :autoplay="autoplay"
+ :previous-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'" :next-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'"
+ :style="{
+ height: height + 'rpx'
+ }">
+ <swiper-item class="u-swiper-item" v-for="(item, index) in list" :key="index">
+ <view class="u-list-image-wrap" @tap.stop.prevent="listClick(index)" :class="[uCurrent != index ? 'u-list-scale' : '']" :style="{
+ borderRadius: `${borderRadius}rpx`,
+ transform: effect3d && uCurrent != index ? 'scaleY(0.9)' : 'scaleY(1)',
+ margin: effect3d && uCurrent != index ? '0 20rpx' : 0,
+ backgroundColor: bgColor
+ }">
+ <image class="u-swiper-image" :src="item[name]" :mode="imgMode"></image>
+ <view v-if="title" class="u-swiper-title u-line-1" :style="[{
+ 'padding-bottom': titlePaddingBottom
+ }, titleStyle]">
+ {{ item.title }}
+ </view>
+ </view>
+ </swiper-item>
+ </swiper>
+ <view class="u-swiper-indicator" :style="{
+ top: indicatorPos == 'topLeft' || indicatorPos == 'topCenter' || indicatorPos == 'topRight' ? '12rpx' : 'auto',
+ bottom: indicatorPos == 'bottomLeft' || indicatorPos == 'bottomCenter' || indicatorPos == 'bottomRight' ? '12rpx' : 'auto',
+ justifyContent: justifyContent,
+ padding: `0 ${effect3d ? '74rpx' : '24rpx'}`
+ }">
+ <block v-if="mode == 'rect'">
+ <view class="u-indicator-item-rect" :class="{ 'u-indicator-item-rect-active': index == uCurrent }" v-for="(item, index) in list"
+ :key="index"></view>
+ </block>
+ <block v-if="mode == 'dot'">
+ <view class="u-indicator-item-dot" :class="{ 'u-indicator-item-dot-active': index == uCurrent }" v-for="(item, index) in list"
+ :key="index"></view>
+ </block>
+ <block v-if="mode == 'round'">
+ <view class="u-indicator-item-round" :class="{ 'u-indicator-item-round-active': index == uCurrent }" v-for="(item, index) in list"
+ :key="index"></view>
+ </block>
+ <block v-if="mode == 'number'">
+ <view class="u-indicator-item-number">{{ uCurrent + 1 }}/{{ list.length }}</view>
+ </block>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * swiper 杞挱鍥�
+ * @description 璇ョ粍浠朵竴鑸敤浜庡鑸疆鎾紝骞垮憡灞曠ず绛夊満鏅�,鍙紑绠卞嵆鐢�
+ * @tutorial https://www.uviewui.com/components/swiper.html
+ * @property {Array} list 杞挱鍥炬暟鎹紝瑙佸畼缃�"鍩烘湰浣跨敤"璇存槑
+ * @property {Boolean} title 鏄惁鏄剧ず鏍囬鏂囧瓧锛岄渶瑕侀厤鍚坙ist鍙傛暟锛岃瀹樼綉璇存槑锛堥粯璁alse锛�
+ * @property {String} mode 鎸囩ず鍣ㄦā寮忥紝瑙佸畼缃戣鏄庯紙榛樿round锛�
+ * @property {String Number} height 杞挱鍥剧粍浠堕珮搴︼紝鍗曚綅rpx锛堥粯璁�250锛�
+ * @property {String} indicator-pos 鎸囩ず鍣ㄧ殑浣嶇疆锛堥粯璁ottomCenter锛�
+ * @property {Boolean} effect3d 鏄惁寮�鍚�3D鏁堟灉锛堥粯璁alse锛�
+ * @property {Boolean} autoplay 鏄惁鑷姩鎾斁锛堥粯璁rue锛�
+ * @property {String Number} interval 鑷姩杞挱鏃堕棿闂撮殧锛屽崟浣峬s锛堥粯璁�2500锛�
+ * @property {Boolean} circular 鏄惁琛旀帴鎾斁锛岃瀹樼綉璇存槑锛堥粯璁rue锛�
+ * @property {String} bg-color 鑳屾櫙棰滆壊锛堥粯璁�#f3f4f6锛�
+ * @property {String Number} border-radius 杞挱鍥惧渾瑙掑�硷紝鍗曚綅rpx锛堥粯璁�8锛�
+ * @property {Object} title-style 鑷畾涔夋爣棰樻牱寮�
+ * @property {String Number} effect3d-previous-margin mode = true妯″紡鐨勬儏鍐典笅锛屾縺娲婚」涓庡墠鍚庨」涔嬮棿鐨勮窛绂伙紝鍗曚綅rpx锛堥粯璁�50锛�
+ * @property {String} img-mode 鍥剧墖鐨勮鍓ā寮忥紝璇﹁image缁勪欢瑁佸壀妯″紡锛堥粯璁spectFill锛�
+ * @event {Function} click 鐐瑰嚮杞挱鍥炬椂瑙﹀彂
+ * @example <u-swiper :list="list" mode="dot" indicator-pos="bottomRight"></u-swiper>
+ */
+ export default {
+ name: "u-swiper",
+ props: {
+ // 杞挱鍥剧殑鏁版嵁,鏍煎紡濡傦細[{image: 'xxxx', title: 'xxxx'}锛寋image: 'yyyy', title: 'yyyy'}]锛屽叾涓璽itle瀛楁鍙��
+ list: {
+ type: Array,
+ default () {
+ return [];
+ }
+ },
+ // 鏄惁鏄剧ずtitle鏍囬
+ title: {
+ type: Boolean,
+ default: false
+ },
+ // 鐢ㄦ埛鑷畾涔夌殑鎸囩ず鍣ㄧ殑鏍峰紡
+ indicator: {
+ type: Object,
+ default () {
+ return {};
+ }
+ },
+ // 鍦嗚鍊�
+ borderRadius: {
+ type: [Number, String],
+ default: 8
+ },
+ // 闅斿涔呰嚜鍔ㄥ垏鎹�
+ interval: {
+ type: [String, Number],
+ default: 3000
+ },
+ // 鎸囩ず鍣ㄧ殑妯″紡锛宺ect|dot|number|round
+ mode: {
+ type: String,
+ default: 'round'
+ },
+ // list鐨勯珮搴︼紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 250
+ },
+ // 鎸囩ず鍣ㄧ殑浣嶇疆锛宼opLeft|topCenter|topRight|bottomLeft|bottomCenter|bottomRight
+ indicatorPos: {
+ type: String,
+ default: 'bottomCenter'
+ },
+ // 鏄惁寮�鍚缉鏀炬晥鏋�
+ effect3d: {
+ type: Boolean,
+ default: false
+ },
+ // 3D妯″紡鐨勬儏鍐典笅锛屾縺娲籭tem涓庡墠鍚巌tem涔嬮棿鐨勮窛绂伙紝鍗曚綅rpx
+ effect3dPreviousMargin: {
+ type: [Number, String],
+ default: 50
+ },
+ // 鏄惁鑷姩鎾斁
+ autoplay: {
+ type: Boolean,
+ default: true
+ },
+ // 鑷姩杞挱鏃堕棿闂撮殧锛屽崟浣峬s
+ duration: {
+ type: [Number, String],
+ default: 500
+ },
+ // 鏄惁琛旀帴婊戝姩锛屽嵆鍒版渶鍚庝竴寮犳椂鎺ョ潃婊戝姩锛屾槸鍚﹁嚜鍔ㄥ垏鎹㈠埌绗竴寮�
+ circular: {
+ type: Boolean,
+ default: true
+ },
+ // 鍥剧墖鐨勮鍓ā寮�
+ imgMode: {
+ type: String,
+ default: 'aspectFill'
+ },
+ // 浠巐ist鏁扮粍涓鍙栫殑鍥剧墖鐨勫睘鎬у悕
+ name: {
+ type: String,
+ default: 'image'
+ },
+ // 鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#f3f4f6'
+ },
+ // 鍒濆鍖栨椂锛岄粯璁ゆ樉绀虹鍑犻」
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 鏍囬鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ titleStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ watch: {
+ // 濡傛灉澶栭儴鐨刲ist鍙戠敓鍙樺寲锛屽垽鏂暱搴︽槸鍚﹁淇敼锛屽鏋滃墠鍚庨暱搴︿笉涓�鑷达紝閲嶇疆uCurrent鍊硷紝閬垮厤婧㈠嚭
+ list(nVal, oVal) {
+ if(nVal.length !== oVal.length) this.uCurrent = 0;
+ },
+ // 鐩戝惉澶栭儴current鐨勫彉鍖栵紝瀹炴椂淇敼鍐呴儴渚濊禆浜庢娴媢Current鍊硷紝濡傛灉鏇存柊浜哻urrent锛岃�屼笉鏄洿鏂皍Current锛�
+ // 灏变細閿欎贡锛屽洜涓烘寚绀哄櫒鏄緷璧栦簬uCurrent鐨�
+ current(n) {
+ this.uCurrent = n;
+ }
+ },
+ data() {
+ return {
+ uCurrent: this.current // 褰撳墠娲昏穬鐨剆wiper-item鐨刬ndex
+ };
+ },
+ computed: {
+ justifyContent() {
+ if (this.indicatorPos == 'topLeft' || this.indicatorPos == 'bottomLeft') return 'flex-start';
+ if (this.indicatorPos == 'topCenter' || this.indicatorPos == 'bottomCenter') return 'center';
+ if (this.indicatorPos == 'topRight' || this.indicatorPos == 'bottomRight') return 'flex-end';
+ },
+ titlePaddingBottom() {
+ let tmp = 0;
+ if (this.mode == 'none') return '12rpx';
+ if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode == 'number') {
+ tmp = '60rpx';
+ } else if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode != 'number') {
+ tmp = '40rpx';
+ } else {
+ tmp = '12rpx';
+ }
+ return tmp;
+ },
+ // 鍥犱负uni鐨剆wiper缁勪欢鐨刢urrent鍙傛暟鍙帴鍙桸umber绫诲瀷锛岃繖閲屽仛涓�涓浆鎹�
+ elCurrent() {
+ return Number(this.current);
+ }
+ },
+ methods: {
+ listClick(index) {
+ this.$emit('click', index);
+ },
+ change(e) {
+ let current = e.detail.current;
+ this.uCurrent = current;
+ // 鍙戝嚭change浜嬩欢锛岃〃绀哄綋鍓嶈嚜鍔ㄥ垏鎹㈢殑index锛屼粠0寮�濮�
+ this.$emit('change', current);
+ },
+ // 澶存潯灏忕▼搴忎笉鏀寔animationfinish浜嬩欢锛屾敼鐢眂hange浜嬩欢
+ // 鏆備笉鐩戝惉姝や簨浠讹紝鍥犱负涓嶅啀缁檚wiper缁戝畾uCurrent灞炴��
+ animationfinish(e) {
+ // #ifndef MP-TOUTIAO
+ // this.uCurrent = e.detail.current;
+ // #endif
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-swiper-wrap {
+ position: relative;
+ overflow: hidden;
+ transform: translateY(0);
+ }
+
+ .u-swiper-image {
+ width: 100%;
+ will-change: transform;
+ height: 100%;
+ display: block;
+ /* #ifdef H5 */
+ pointer-events: none;
+ /* #endif */
+ }
+
+ .u-swiper-indicator {
+ padding: 0 24rpx;
+ position: absolute;
+ display: flex;
+ width: 100%;
+ z-index: 1;
+ }
+
+ .u-indicator-item-rect {
+ width: 26rpx;
+ height: 8rpx;
+ margin: 0 6rpx;
+ transition: all 0.5s;
+ background-color: rgba(0, 0, 0, 0.3);
+ }
+
+ .u-indicator-item-rect-active {
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+
+ .u-indicator-item-dot {
+ width: 14rpx;
+ height: 14rpx;
+ margin: 0 6rpx;
+ border-radius: 20rpx;
+ transition: all 0.5s;
+ background-color: rgba(0, 0, 0, 0.3);
+ }
+
+ .u-indicator-item-dot-active {
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+
+ .u-indicator-item-round {
+ width: 14rpx;
+ height: 14rpx;
+ margin: 0 6rpx;
+ border-radius: 20rpx;
+ transition: all 0.5s;
+ background-color: rgba(0, 0, 0, 0.3);
+ }
+
+ .u-indicator-item-round-active {
+ width: 34rpx;
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+
+ .u-indicator-item-number {
+ padding: 6rpx 16rpx;
+ line-height: 1;
+ background-color: rgba(0, 0, 0, 0.3);
+ border-radius: 100rpx;
+ font-size: 26rpx;
+ color: rgba(255, 255, 255, 0.8);
+ }
+
+ .u-list-scale {
+ transform-origin: center center;
+ }
+
+ .u-list-image-wrap {
+ width: 100%;
+ height: 100%;
+ flex: 1;
+ transition: all 0.5s;
+ overflow: hidden;
+ box-sizing: content-box;
+ position: relative;
+ }
+
+ .u-swiper-title {
+ position: absolute;
+ background-color: rgba(0, 0, 0, 0.3);
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ font-size: 28rpx;
+ padding: 12rpx 24rpx;
+ color: rgba(255, 255, 255, 0.9);
+ }
+
+ .u-swiper-item {
+ display: flex;
+ overflow: hidden;
+ align-items: center;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-switch/u-switch.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-switch/u-switch.vue"
new file mode 100644
index 0000000..c7b3a79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-switch/u-switch.vue"
@@ -0,0 +1,161 @@
+<template>
+ <view class="u-switch" :class="[value == true ? 'u-switch--on' : '', disabled ? 'u-switch--disabled' : '']" @tap="onClick"
+ :style="[switchStyle]">
+ <view class="u-switch__node node-class" :style="{
+ width: $u.addUnit(this.size),
+ height: $u.addUnit(this.size)
+ }">
+ <u-loading :show="loading" class="u-switch__loading" :size="size * 0.6" :color="loadingColor" />
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * switch 寮�鍏抽�夋嫨鍣�
+ * @description 閫夋嫨寮�鍏充竴鑸敤浜庡彧鏈変袱涓�夋嫨锛屼笖鍙兘閫夊叾涓�鐨勫満鏅��
+ * @tutorial https://www.uviewui.com/components/switch.html
+ * @property {Boolean} loading 鏄惁澶勪簬鍔犺浇涓紙榛樿false锛�
+ * @property {Boolean} disabled 鏄惁绂佺敤锛堥粯璁alse锛�
+ * @property {String Number} size 寮�鍏冲昂瀵革紝鍗曚綅rpx锛堥粯璁�50锛�
+ * @property {String} active-color 鎵撳紑鏃剁殑鑳屾櫙鑹诧紙榛樿#2979ff锛�
+ * @property {Boolean} inactive-color 鍏抽棴鏃剁殑鑳屾櫙鑹诧紙榛樿#ffffff锛�
+ * @property {Boolean | Number | String} active-value 鎵撳紑閫夋嫨鍣ㄦ椂閫氳繃change浜嬩欢鍙戝嚭鐨勫�硷紙榛樿true锛�
+ * @property {Boolean | Number | String} inactive-value 鍏抽棴閫夋嫨鍣ㄦ椂閫氳繃change浜嬩欢鍙戝嚭鐨勫�硷紙榛樿false锛�
+ * @event {Function} change 鍦╯witch鎵撳紑鎴栧叧闂椂瑙﹀彂
+ * @example <u-switch v-model="checked" active-color="red" inactive-color="#eee"></u-switch>
+ */
+ export default {
+ name: "u-switch",
+ props: {
+ // 鏄惁涓哄姞杞戒腑鐘舵��
+ loading: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁涓虹鐢ㄨ濉�
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 寮�鍏冲昂瀵革紝鍗曚綅rpx
+ size: {
+ type: [Number, String],
+ default: 50
+ },
+ // 鎵撳紑鏃剁殑鑳屾櫙棰滆壊
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鍏抽棴鏃剁殑鑳屾櫙棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 閫氳繃v-model鍙屽悜缁戝畾鐨勫��
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁浣挎墜鏈哄彂鐢熺煭淇冮渿鍔紝鐩墠鍙湪iOS鐨勫井淇″皬绋嬪簭鏈夋晥(2020-05-06)
+ vibrateShort: {
+ type: Boolean,
+ default: false
+ },
+ // 鎵撳紑閫夋嫨鍣ㄦ椂鐨勫��
+ activeValue: {
+ type: [Number, String, Boolean],
+ default: true
+ },
+ // 鍏抽棴閫夋嫨鍣ㄦ椂鐨勫��
+ inactiveValue: {
+ type: [Number, String, Boolean],
+ default: false
+ },
+ },
+ data() {
+ return {
+
+ }
+ },
+ computed: {
+ switchStyle() {
+ let style = {};
+ style.fontSize = this.size + 'rpx';
+ style.backgroundColor = this.value ? this.activeColor : this.inactiveColor;
+ return style;
+ },
+ loadingColor() {
+ return this.value ? this.activeColor : null;
+ }
+ },
+ methods: {
+ onClick() {
+ if (!this.disabled && !this.loading) {
+ // 浣挎墜鏈轰骇鐢熺煭淇冮渿鍔紝寰俊灏忕▼搴忔湁鏁堬紝APP(HX 2.6.8)鍜孒5鏃犳晥
+ if(this.vibrateShort) uni.vibrateShort();
+ this.$emit('input', !this.value);
+ // 鏀惧埌涓嬩竴涓敓鍛藉懆鏈燂紝鍥犱负鍙屽悜缁戝畾鐨剉alue淇敼鐖剁粍浠剁姸鎬侀渶瑕佹椂闂达紝涓旀槸寮傛鐨�
+ this.$nextTick(() => {
+ this.$emit('change', this.value ? this.activeValue : this.inactiveValue);
+ })
+ }
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-switch {
+ position: relative;
+ display: inline-block;
+ box-sizing: initial;
+ width: 2em;
+ height: 1em;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ border-radius: 1em;
+ transition: background-color 0.3s;
+ font-size: 50rpx;
+ }
+
+ .u-switch__node {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-radius: 100%;
+ z-index: 1;
+ background-color: #fff;
+ background-color: #fff;
+ box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);
+ box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);
+ transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05);
+ transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05), -webkit-transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05);
+ transition: transform cubic-bezier(0.3, 1.05, 0.4, 1.05);
+ transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05)
+ }
+
+ .u-switch__loading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .u-switch--on {
+ background-color: #1989fa;
+ }
+
+ .u-switch--on .u-switch__node {
+ transform: translateX(100%);
+ }
+
+ .u-switch--disabled {
+ opacity: 0.4;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabbar/u-tabbar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabbar/u-tabbar.vue"
new file mode 100644
index 0000000..e7d0e0f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabbar/u-tabbar.vue"
@@ -0,0 +1,321 @@
+<template>
+ <view v-if="show" class="u-tabbar" @touchmove.stop.prevent>
+ <view class="u-tabbar__content safe-area-inset-bottom" :style="{
+ height: $u.addUnit(height),
+ backgroundColor: bgColor,
+ }" :class="{
+ 'u-border-top': borderTop
+ }">
+ <view class="u-tabbar__content__item" v-for="(item, index) in list" :key="index" :class="{
+ 'u-tabbar__content__circle': midButton &&item.midButton
+ }" @tap.stop="clickHandler(index)" :style="{
+ backgroundColor: bgColor
+ }">
+ <view :class="[
+ midButton && item.midButton ? 'u-tabbar__content__circle__button' : 'u-tabbar__content__item__button'
+ ]">
+ <u-icon
+ :size="midButton && item.midButton ? midButtonSize : iconSize"
+ :name="elIconPath(index)"
+ img-mode="scaleToFill"
+ :color="elColor(index)"
+ :custom-prefix="item.customIcon ? 'custom-icon' : 'uicon'"
+ ></u-icon>
+ <u-badge :count="item.count" :is-dot="item.isDot"
+ v-if="item.count"
+ :offset="[-2, getOffsetRight(item.count, item.isDot)]"
+ ></u-badge>
+ </view>
+ <view class="u-tabbar__content__item__text" :style="{
+ color: elColor(index)
+ }">
+ <text class="u-line-1">{{item.text}}</text>
+ </view>
+ </view>
+ <view v-if="midButton" class="u-tabbar__content__circle__border" :class="{
+ 'u-border': borderTop,
+ }" :style="{
+ backgroundColor: bgColor,
+ left: midButtonLeft
+ }">
+ </view>
+ </view>
+ <!-- 杩欓噷鍔犱笂涓�涓�48rpx鐨勯珮搴�,鏄负浜嗗楂樻湁鍑歌捣鎸夐挳鏃剁殑闃插闄烽珮搴�(涔熷嵆鎸夐挳鍑稿嚭鏉ラ儴鍒嗙殑楂樺害) -->
+ <view class="u-fixed-placeholder safe-area-inset-bottom" :style="{
+ height: `calc(${$u.addUnit(height)} + ${midButton ? 48 : 0}rpx)`,
+ }"></view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ // 鏄剧ず涓庡惁
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 閫氳繃v-model缁戝畾current鍊�
+ value: {
+ type: [String, Number],
+ default: 0
+ },
+ // 鏁翠釜tabbar鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // tabbar鐨勯珮搴︼紝榛樿50px锛屽崟浣嶄换鎰忥紝濡傛灉涓烘暟鍊硷紝鍒欎负rpx鍗曚綅
+ height: {
+ type: [String, Number],
+ default: '50px'
+ },
+ // 闈炲嚫璧峰浘鏍囩殑澶у皬锛屽崟浣嶄换鎰忥紝鏁板�奸粯璁px
+ iconSize: {
+ type: [String, Number],
+ default: 40
+ },
+ // 鍑歌捣鐨勫浘鏍囩殑澶у皬锛屽崟浣嶄换鎰忥紝鏁板�奸粯璁px
+ midButtonSize: {
+ type: [String, Number],
+ default: 90
+ },
+ // 婵�娲绘椂鐨勬紨绀猴紝鍖呮嫭瀛椾綋鍥炬爣锛屾彁绀烘枃瀛楃瓑鐨勬紨绀�
+ activeColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鏈縺娲绘椂鐨勯鑹�
+ inactiveColor: {
+ type: String,
+ default: '#606266'
+ },
+ // 鏄惁鏄剧ず涓儴鐨勫嚫璧锋寜閽�
+ midButton: {
+ type: Boolean,
+ default: false
+ },
+ // 閰嶇疆鍙傛暟
+ list: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ // 鍒囨崲鍓嶇殑鍥炶皟
+ beforeSwitch: {
+ type: Function,
+ default: null
+ },
+ // 鏄惁鏄剧ず椤堕儴鐨勬í绾�
+ borderTop: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁闅愯棌鍘熺敓tabbar
+ hideTabBar: {
+ type: Boolean,
+ default: true
+ },
+ },
+ data() {
+ return {
+ // 鐢变簬瀹夊崜澶彍浜嗭紝閫氳繃css灞呬腑鍑歌捣鎸夐挳鐨勫灞傚厓绱犳湁璇樊锛屾晠閫氳繃js璁$畻灏嗗叾鍏朵腑
+ midButtonLeft: '50%',
+ pageUrl: '', // 褰撳墠
+ }
+ },
+ created() {
+ // 鏄惁闅愯棌鍘熺敓tabbar
+ if(this.hideTabBar) uni.hideTabBar();
+ // 鑾峰彇寮曞叆浜唘-tabbar椤甸潰鐨勮矾鐢卞湴鍧�锛岃鍦板潃娌℃湁璺緞鍓嶉潰鐨�"/"
+ let pages = getCurrentPages();
+ // 椤甸潰鏍堜腑鐨勬渶鍚庝竴涓嵆涓洪」涓哄綋鍓嶉〉闈紝route灞炴�т负椤甸潰璺緞
+ this.pageUrl = pages[pages.length - 1].route;
+ },
+ computed: {
+ elIconPath() {
+ return (index) => {
+ // 鍘嗛亶u-tabbar鐨勬瘡涓�椤筰tem鏃讹紝鍒ゆ柇鏄惁浼犲叆浜唒agePath鍙傛暟锛屽鏋滀紶鍏ヤ簡
+ // 鍜宒ata涓殑pageUrl鍙傛暟瀵规瘮锛屽鏋滅浉绛夛紝鍗冲彲鍒ゆ柇褰撳墠鐨刬tem瀵瑰簲褰撳墠鐨則abbar椤甸潰锛岃缃珮浜浘鏍�
+ // 閲囩敤杩欎釜鏂规硶锛屽彲浠ユ棤闇�浣跨敤v-model缁戝畾鐨剉alue鍊�
+ let pagePath = this.list[index].pagePath;
+ // 濡傛灉瀹氫箟浜唒agePath灞炴�э紝鎰忓懗鐫�浣跨敤绯荤粺鑷甫tabbar鏂规锛屽惁鍒欎娇鐢ㄤ竴涓〉闈㈢敤鍑犱釜缁勪欢妯℃嫙tabbar椤甸潰鐨勬柟妗�
+ // 杩欎袱涓柟妗堝澶勭悊tabbar item鐨勬縺娲讳笌鍚︽柟寮忎笉涓�鏍�
+ if(pagePath) {
+ if(pagePath == this.pageUrl || pagePath == '/' + this.pageUrl) {
+ return this.list[index].selectedIconPath;
+ } else {
+ return this.list[index].iconPath;
+ }
+ } else {
+ // 鏅�氭柟妗堜腑锛岀储寮曠瓑浜巚-model鍊兼椂锛屽嵆涓烘縺娲婚」
+ return index == this.value ? this.list[index].selectedIconPath : this.list[index].iconPath
+ }
+ }
+ },
+ elColor() {
+ return (index) => {
+ // 鍒ゆ柇鏂规硶鍚岀悊浜巈lIconPath
+ let pagePath = this.list[index].pagePath;
+ if(pagePath) {
+ if(pagePath == this.pageUrl || pagePath == '/' + this.pageUrl) return this.activeColor;
+ else return this.inactiveColor;
+ } else {
+ return index == this.value ? this.activeColor : this.inactiveColor;
+ }
+ }
+ }
+ },
+ mounted() {
+ this.midButton && this.getMidButtonLeft();
+ },
+ methods: {
+ async clickHandler(index) {
+ if(this.beforeSwitch && typeof(this.beforeSwitch) === 'function') {
+ // 鎵ц鍥炶皟锛屽悓鏃朵紶鍏ョ储寮曞綋浣滃弬鏁�
+ // 鍦ㄥ井淇★紝鏀粯瀹濈瓑鐜(H5姝e父)锛屼細瀵艰嚧鐖剁粍浠跺畾涔夌殑customBack()鍑芥暟浣撲腑鐨則his鍙樻垚瀛愮粍浠剁殑this
+ // 閫氳繃bind()鏂规硶锛岀粦瀹氱埗缁勪欢鐨則his锛岃this.customBack()鐨則his涓虹埗缁勪欢鐨勪笂涓嬫枃
+ let beforeSwitch = this.beforeSwitch.bind(this.$u.$parent.call(this))(index);
+ // 鍒ゆ柇鏄惁杩斿洖浜唒romise
+ if (!!beforeSwitch && typeof beforeSwitch.then === 'function') {
+ await beforeSwitch.then(res => {
+ // promise杩斿洖鎴愬姛锛�
+ this.switchTab(index);
+ }).catch(err => {
+
+ })
+ } else if(beforeSwitch === true) {
+ // 濡傛灉杩斿洖true
+ this.switchTab(index);
+ }
+ } else {
+ this.switchTab(index);
+ }
+ },
+ // 鍒囨崲tab
+ switchTab(index) {
+ // 鍙戝嚭浜嬩欢鍜屼慨鏀箆-model缁戝畾鐨勫��
+ this.$emit('change', index);
+ // 濡傛灉鏈夐厤缃畃agePath灞炴�э紝浣跨敤uni.switchTab杩涜璺宠浆
+ if(this.list[index].pagePath) {
+ uni.switchTab({
+ url: this.list[index].pagePath
+ })
+ } else {
+ // 濡傛灉閰嶇疆浜唒apgePath灞炴�э紝灏嗕笉浼氬弻鍚戠粦瀹歷-model浼犲叆鐨剉alue鍊�
+ // 鍥犱负杩欎釜妯″紡涓嬶紝涓嶅啀闇�瑕乿-model缁戝畾鐨剉alue鍊间簡锛岃�屾槸閫氳繃getCurrentPages()閫傞厤
+ this.$emit('input', index);
+ }
+ },
+ // 璁$畻瑙掓爣鐨剅ight鍊�
+ getOffsetRight(count, isDot) {
+ // 鐐圭被鍨嬶紝count澶т簬9(涓や綅鏁�)锛屽垎鍒缃笉鍚岀殑right鍊硷紝閬垮厤浣嶇疆澶尋
+ if(isDot) {
+ return -20;
+ } else if(count > 9) {
+ return -40;
+ } else {
+ return -30;
+ }
+ },
+ // 鑾峰彇鍑歌捣鎸夐挳澶栧眰鍏冪礌鐨刲eft鍊硷紝璁╁叾姘村钩灞呬腑
+ getMidButtonLeft() {
+ let windowWidth = this.$u.sys().windowWidth;
+ // 鐢变簬瀹夊崜涓璫ss璁$畻left: 50%鐨勭粨鏋滀笉鍑嗙‘锛屾晠鐢╦s璁$畻
+ this.midButtonLeft = (windowWidth / 2) + 'px';
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .u-fixed-placeholder {
+ box-sizing: content-box;
+ }
+
+ .u-tabbar {
+
+ &__content {
+ display: flex;
+ align-items: center;
+ position: relative;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ z-index: 998;
+ box-sizing: content-box;
+
+ &__circle__border {
+ border-radius: 100%;
+ width: 110rpx;
+ height: 110rpx;
+ top: -48rpx;
+ position: absolute;
+ z-index: 4;
+ background-color: #ffffff;
+ // 鐢变簬瀹夊崜鐨勬棤鑳斤紝瀵艰嚧鍙湁3涓猼abbar item鏃讹紝姝ss璁$畻鏂瑰紡鏈夎宸�
+ // 鏁呬娇鐢╦s璁$畻鐨勫舰寮忔潵瀹氫綅锛屾澶勪笉娉ㄩ噴锛屾槸鍥犱负js璁$畻鏈夊欢鍚庯紝閬垮厤鍑虹幇浣嶇疆闂姩
+ left: 50%;
+ transform: translateX(-50%);
+
+ &:after {
+ border-radius: 100px;
+ }
+ }
+
+ &__item {
+ flex: 1;
+ justify-content: center;
+ height: 100%;
+ padding: 12rpx 0;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ position: relative;
+
+ &__button {
+ position: absolute;
+ top: 10rpx;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+
+ &__text {
+ color: $u-content-color;
+ font-size: 26rpx;
+ line-height: 28rpx;
+ position: absolute;
+ bottom: 12rpx;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ }
+
+ &__circle {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ z-index: 10;
+ height: calc(100% - 1px);
+
+ &__button {
+ width: 90rpx;
+ height: 90rpx;
+ border-radius: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: absolute;
+ background-color: #ffffff;
+ top: -40rpx;
+ left: 50%;
+ z-index: 6;
+ transform: translateX(-50%);
+ }
+ }
+ }
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-table/u-table.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-table/u-table.vue"
new file mode 100644
index 0000000..7ed8ab8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-table/u-table.vue"
@@ -0,0 +1,89 @@
+<template>
+ <view class="u-table" :style="[tableStyle]">
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * table 琛ㄦ牸
+ * @description 琛ㄦ牸缁勪欢涓�鑸敤浜庡睍绀哄ぇ閲忕粨鏋勫寲鏁版嵁鐨勫満鏅�
+ * @tutorial https://www.uviewui.com/components/table.html
+ * @property {String} border-color 琛ㄦ牸杈规鐨勯鑹诧紙榛樿#e4e7ed锛�
+ * @property {String} bg-color 琛ㄦ牸鐨勮儗鏅鑹诧紙榛樿#ffffff锛�
+ * @property {String} align 鍗曞厓鏍肩殑鍐呭瀵归綈鏂瑰紡锛屼綔鐢ㄧ被浼糲ss鐨則ext-align锛堥粯璁enter锛�
+ * @property {String} padding 鍗曞厓鏍肩殑鍐呰竟璺濓紝鍚宑ss鐨刾adding鍐欐硶锛堥粯璁�10rpx 0锛�
+ * @property {String Number} font-size 鍗曞厓鏍煎瓧浣撳ぇ灏忥紝鍗曚綅rpx锛堥粯璁�28锛�
+ * @property {String} color 鍗曞厓鏍煎瓧浣撻鑹诧紙榛樿#606266锛�
+ * @property {Object} th-style th鍗曞厓鏍肩殑鏍峰紡锛屽璞″舰寮�(灏唗h鎵�闇�鍙傛暟鏀惧湪table缁勪欢锛屾槸涓轰簡閬垮厤姣忎竴涓猼h缁勪欢瑕佸啓涓�閬嶏級
+ * @event {Function} click 鐐瑰嚮缁勪欢鏃惰Е鍙�
+ * @event {Function} close 鐐瑰嚮鍏抽棴鎸夐挳鏃惰Е鍙�
+ * @example <u-table></u-table>
+ */
+ export default {
+ name: "u-table",
+ props: {
+ borderColor: {
+ type: String,
+ default: '#e4e7ed'
+ },
+ align: {
+ type: String,
+ default: 'center'
+ },
+ // td鐨勫唴杈硅窛
+ padding: {
+ type: String,
+ default: '10rpx 6rpx'
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: [String, Number],
+ default: 28
+ },
+ // 瀛椾綋棰滆壊
+ color: {
+ type: String,
+ default: '#606266'
+ },
+ // th鐨勮嚜瀹氫箟鏍峰紡
+ thStyle: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ // table鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ }
+ },
+ provide() {
+ return {
+ uTable: this,
+ };
+ },
+ data() {
+ return {}
+ },
+ computed: {
+ tableStyle() {
+ let style = {};
+ style.borderLeft = `solid 1px ${this.borderColor}`;
+ style.borderTop = `solid 1px ${this.borderColor}`;
+ style.backgroundColor = this.bgColor;;
+ return style;
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-table {
+ width: 100%;
+ box-sizing: border-box;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue"
new file mode 100644
index 0000000..32faf13
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue"
@@ -0,0 +1,473 @@
+<template>
+ <view class="u-tabs" :style="{
+ zIndex: zIndex,
+ background: bgColor
+ }">
+ <scroll-view scroll-x class="u-scroll-view" :scroll-left="scrollLeft" scroll-with-animation :style="{ zIndex: zIndex + 1 }">
+ <view class="u-tabs-scroll-box" :class="{'u-tabs-scorll-flex': !isScroll}">
+ <view class="u-tabs-item" :style="[tabItemStyle(index)]"
+ v-for="(item, index) in getTabs" :key="index" :class="[preId + index]" @tap="emit(index)">
+ {{ item[name] || item['name']}}
+ </view>
+ <view v-if="showBar" class="u-scroll-bar" :style="[tabBarStyle]"></view>
+ </view>
+ </scroll-view>
+ </view>
+</template>
+
+<script>
+ import colorGradient from '../../libs/function/colorGradient';
+ let color = colorGradient;
+ const {
+ windowWidth
+ } = uni.getSystemInfoSync();
+ const preId = 'UEl_';
+
+ /**
+ * tabsSwiper 鍏ㄥ睆閫夐」鍗�
+ * @description 璇ョ粍浠跺唴閮ㄥ疄鐜颁富瑕佷緷鎵樹簬uniapp鐨剆croll-view鍜宻wiper缁勪欢锛屼富瑕佺壒鑹叉槸鍒囨崲杩囩▼涓紝tabsSwiper鏂囧瓧鐨勯鑹插彲浠ユ笎鍙橈紝搴曢儴婊戝潡鍙互 璺熼殢寮忔粦鍔紝娲诲姩tab婊氬姩灞呬腑绛夈�傚簲鐢ㄥ満鏅彲浠ョ敤浜庨渶瑕佸乏鍙冲垏鎹㈤〉闈紝姣斿鍟嗗煄鐨勮鍗曚腑蹇�(寰呮敹璐�-寰呬粯娆�-寰呰瘎浠�-宸查��璐�)绛夊簲鐢ㄥ満鏅��
+ * @tutorial https://www.uviewui.com/components/tabsSwiper.html
+ * @property {Boolean} is-scroll tabs鏄惁鍙互宸﹀彸鎷栧姩锛堥粯璁rue锛�
+ * @property {Array} list 鏍囩鏁扮粍锛屽厓绱犱负瀵硅薄锛屽[{name: '鎺ㄨ崘'}]
+ * @property {String Number} current 鎸囧畾鍝釜tab涓烘縺娲荤姸鎬侊紙榛樿0锛�
+ * @property {String Number} height 瀵艰埅鏍忕殑楂樺害锛屽崟浣峳px锛堥粯璁�80锛�
+ * @property {String Number} font-size tab鏂囧瓧澶у皬锛屽崟浣峳px锛堥粯璁�30锛�
+ * @property {String Number} swiper-width tabs缁勪欢澶栭儴swiper鐨勫搴︼紝榛樿涓哄睆骞曞搴︼紝鍗曚綅rpx锛堥粯璁�750锛�
+ * @property {String} active-color 婊戝潡鍜屾縺娲籺ab鏂囧瓧鐨勯鑹诧紙榛樿#2979ff锛�
+ * @property {String} inactive-color tabs鏂囧瓧棰滆壊锛堥粯璁�#303133锛�
+ * @property {String Number} bar-width 婊戝潡瀹藉害锛屽崟浣峳px锛堥粯璁�40锛�
+ * @property {String Number} bar-height 婊戝潡楂樺害锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {Object} bar-style 搴曢儴婊戝潡鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} active-item-style 娲诲姩tabs item鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} show-bar 鏄惁鏄剧ず搴曢儴鐨勬粦鍧楋紙榛樿true锛�
+ * @property {String Number} gutter 鍗曚釜tab鏍囩鐨勫乏鍙冲唴杈硅窛涔嬪拰锛屽崟浣峳px锛堥粯璁�40锛�
+ * @property {String} bg-color tabs瀵艰埅鏍忕殑鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {String} name 缁勪欢鍐呴儴璇诲彇鐨刲ist鍙傛暟涓殑灞炴�у悕锛岃瀹樼綉璇存槑锛堥粯璁ame锛�
+ * @property {Boolean} bold 婵�娲婚�夐」鐨勫瓧浣撴槸鍚﹀姞绮楋紙榛樿true锛�
+ * @event {Function} change 鐐瑰嚮鏍囩鏃惰Е鍙�
+ * @example <u-tabs-swiper ref="tabs" :list="list" :is-scroll="false"></u-tabs-swiper>
+ */
+ export default {
+ name: "u-tabs-swiper",
+ props: {
+ // 瀵艰埅鑿滃崟鏄惁闇�瑕佹粴鍔紝濡傚彧鏈�2鎴栬��3涓殑鏃跺�欙紝灏变笉闇�瑕佹粴鍔ㄤ簡锛屾鏃朵娇鐢╢lex骞冲垎tab鐨勫搴�
+ isScroll: {
+ type: Boolean,
+ default: true
+ },
+ //闇�寰幆鐨勬爣绛惧垪琛�
+ list: {
+ type: Array,
+ default () {
+ return [];
+ }
+ },
+ // 褰撳墠娲诲姩tab鐨勭储寮�
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 瀵艰埅鏍忕殑楂樺害鍜岃楂橈紝鍗曚綅rpx
+ height: {
+ type: [Number, String],
+ default: 80
+ },
+ // 瀛椾綋澶у皬锛屽崟浣峳px
+ fontSize: {
+ type: [Number, String],
+ default: 30
+ },
+ // 杩囨浮鍔ㄧ敾鏃堕暱, 鍗曚綅s
+ // duration: {
+ // type: [Number, String],
+ // default: 0.5
+ // },
+ swiperWidth: {
+ //line3鐢熸晥, 澶栭儴swiper鐨勫搴�, 鍗曚綅rpx
+ type: [String, Number],
+ default: 750
+ },
+ // 閫変腑椤圭殑涓婚棰滆壊
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鏈�変腑椤圭殑棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鑿滃崟搴曢儴绉诲姩鐨刡ar鐨勫搴︼紝鍗曚綅rpx
+ barWidth: {
+ type: [Number, String],
+ default: 40
+ },
+ // 绉诲姩bar鐨勯珮搴�
+ barHeight: {
+ type: [Number, String],
+ default: 6
+ },
+ // 鍗曚釜tab鐨勫乏鎴栧彸鍐呰竟璺濓紙鍚勫崰涓�鍗婏級锛屽崟浣峳px
+ gutter: {
+ type: [Number, String],
+ default: 40
+ },
+ // 濡傛灉鏄粷瀵瑰畾浣嶏紝娣诲姞z-index鍊�
+ zIndex: {
+ type: [Number, String],
+ default: 1
+ },
+ // 瀵艰埅鏍忕殑鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ //婊氬姩鑷充腑蹇冪洰鏍囩被鍨�
+ autoCenterMode: {
+ type: String,
+ default: 'window'
+ },
+ // 璇诲彇浼犲叆鐨勬暟缁勫璞$殑灞炴��
+ name: {
+ type: String,
+ default: 'name'
+ },
+ // 娲诲姩tab瀛椾綋鏄惁鍔犵矖
+ bold: {
+ type: Boolean,
+ default: true
+ },
+ // 褰撳墠娲诲姩tab item鐨勬牱寮�
+ activeItemStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏄惁鏄剧ず搴曢儴鐨勬粦鍧�
+ showBar: {
+ type: Boolean,
+ default: true
+ },
+ // 搴曢儴婊戝潡鐨勮嚜瀹氫箟鏍峰紡
+ barStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ scrollLeft: 0, // 婊氬姩scroll-view鐨勫乏杈规粴鍔ㄨ窛绂�
+ tabQueryInfo: [], // 瀛樻斁瀵箃ab鑿滃崟鏌ヨ鍚庣殑鑺傜偣淇℃伅
+ windowWidth: 0, // 灞忓箷瀹藉害锛屽崟浣嶄负px
+ //scrollBarLeft: 0, // 绉诲姩bar闇�瑕侀�氳繃translateX()绉诲姩鐨勮窛绂�
+ animationFinishCurrent: this.current,
+ componentsWidth: 0,
+ line3AddDx: 0,
+ line3Dx: 0,
+ preId,
+ sW: 0,
+ tabsInfo: [],
+ colorGradientArr: [],
+ colorStep: 100 // 涓や釜棰滆壊涔嬮棿鐨勬笎鍙樼瓑鍒�
+ };
+ },
+ computed: {
+ // 鑾峰彇褰撳墠娲昏穬鐨刢urrent鍊�
+ getCurrent() {
+ const current = Number(this.current);
+ // 鍒ゆ柇鏄惁瓒呭嚭杈圭晫
+ if (current > this.getTabs.length - 1) {
+ return this.getTabs.length - 1;
+ }
+ if (current < 0) return 0;
+ return current;
+ },
+ getTabs() {
+ return this.list;
+ },
+ // 婊戝潡闇�瑕佺Щ鍔ㄧ殑璺濈
+ scrollBarLeft() {
+ return Number(this.line3Dx) + Number(this.line3AddDx);
+ },
+ // 婊戝潡鐨勫搴﹁浆涓簆x鍗曚綅
+ barWidthPx() {
+ return uni.upx2px(this.barWidth);
+ },
+ // tab鐨勬牱寮�
+ tabItemStyle() {
+ return (index) => {
+ let style = {
+ height: this.height + 'rpx',
+ lineHeight: this.height + 'rpx',
+ padding: `0 ${this.gutter / 2}rpx`,
+ color: this.tabsInfo.length > 0 ? (this.tabsInfo[index] ? this.tabsInfo[index].color : this.activeColor) : this.inactiveColor,
+ fontSize: this.fontSize + 'rpx',
+ zIndex: this.zIndex + 2,
+ fontWeight: (index == this.getCurrent && this.bold) ? 'bold' : 'normal'
+ };
+ if(index == this.getCurrent) {
+ // 缁欓�変腑鐨則ab item娣诲姞澶栭儴鑷畾涔夌殑鏍峰紡
+ style = Object.assign(style, this.activeItemStyle);
+ }
+ return style;
+ }
+ },
+ // 搴曢儴婊戝潡鐨勬牱寮�
+ tabBarStyle() {
+ let style = {
+ width: this.barWidthPx + 'px',
+ height: this.barHeight + 'rpx',
+ borderRadius: '100px',
+ backgroundColor: this.activeColor,
+ left: this.scrollBarLeft + 'px'
+ };
+ return Object.assign(style, this.barStyle);
+ }
+ },
+ watch: {
+ current(n, o) {
+ this.change(n);
+ this.setFinishCurrent(n);
+ },
+ list() {
+ this.$nextTick(() => {
+ this.init();
+ })
+ }
+ },
+ mounted() {
+ this.init();
+ },
+ methods: {
+ async init() {
+ this.countPx();
+ await this.getTabsInfo();
+ this.countLine3Dx();
+ this.getQuery(() => {
+ this.setScrollViewToCenter();
+ });
+ // 棰滆壊娓愬彉杩囩▼鏁扮粍
+ this.colorGradientArr = color.colorGradient(this.inactiveColor, this.activeColor, this.colorStep);
+ },
+ // 鑾峰彇鍚勪釜tab鐨勮妭鐐逛俊鎭�
+ getTabsInfo() {
+ return new Promise((resolve, reject) => {
+ let view = uni.createSelectorQuery().in(this);
+ for (let i = 0; i < this.list.length; i++) {
+ view.select('.' + preId + i).boundingClientRect();
+ }
+ view.exec(res => {
+ const arr = [];
+ for (let i = 0; i < res.length; i++) {
+ // 缁欐瘡涓猼ab娣诲姞鍏舵枃瀛楅鑹插睘鎬�
+ res[i].color = this.inactiveColor;
+ // 褰撳墠tab鐩存帴璧嬩簣activeColor
+ if (i == this.getCurrent) res[i].color = this.activeColor;
+ arr.push(res[i]);
+ }
+ this.tabsInfo = arr;
+ resolve();
+ });
+ })
+ },
+ // 褰搒wiper婊戝姩缁撴潫锛岃绠楁粦鍧楁渶缁堣鍋滅暀鐨勪綅缃�
+ countLine3Dx() {
+ const tab = this.tabsInfo[this.animationFinishCurrent];
+ // 璁╂粦鍧椾腑蹇冪偣鍜屽綋鍓峵ab涓績閲嶅悎
+ if (tab) this.line3Dx = tab.left + tab.width / 2 - this.barWidthPx / 2 - this.tabsInfo[0].left;
+ },
+ countPx() {
+ // swiper瀹藉害鐢眗px杞负px鍗曚綅锛屽洜涓篸x绛夛紝閮芥槸px鍗曚綅
+ this.sW = uni.upx2px(Number(this.swiperWidth));
+ },
+ emit(index) {
+ this.$emit('change', index);
+ },
+ change() {
+ this.setScrollViewToCenter();
+ },
+ getQuery(cb) {
+ try {
+ let view = uni.createSelectorQuery().in(this).select('.u-tabs');
+ view.fields({
+ size: true
+ },
+ data => {
+ if (data) {
+ this.componentsWidth = data.width;
+ if (cb && typeof cb === 'function') cb(data);
+ } else {
+ this.getQuery(cb);
+ }
+ }
+ ).exec();
+ } catch (e) {
+ this.componentsWidth = windowWidth;
+ }
+ },
+ // 鎶婃椿鍔╰ab绉诲姩鍒板睆骞曚腑蹇冪偣
+ setScrollViewToCenter() {
+ let tab;
+ tab = this.tabsInfo[this.animationFinishCurrent];
+ if (tab) {
+ let tabCenter = tab.left + tab.width / 2;
+ let fatherWidth;
+ // 娲诲姩tab绉诲姩鍒颁腑蹇冩椂锛屼互灞忓箷杩樻槸tab缁勪欢涓哄搴︿负鍩哄噯
+ if (this.autoCenterMode === 'window') {
+ fatherWidth = windowWidth;
+ } else {
+ fatherWidth = this.componentsWidth;
+ }
+ this.scrollLeft = tabCenter - fatherWidth / 2;
+ }
+ },
+ setDx(dx) {
+ let nextTabIndex = dx > 0 ? this.animationFinishCurrent + 1 : this.animationFinishCurrent - 1;
+ // 鍒ゆ柇绱㈠紩鏄惁瓒呭嚭杈圭晫
+ nextTabIndex = nextTabIndex <= 0 ? 0 : nextTabIndex;
+ nextTabIndex = nextTabIndex >= this.list.length ? this.list.length - 1 : nextTabIndex;
+ const tab = this.tabsInfo[nextTabIndex];
+ // 褰撳墠tab涓績鐐箈杞村潗鏍�
+ let nowTab = this.tabsInfo[this.animationFinishCurrent];
+ let nowTabX = nowTab.left + nowTab.width / 2;
+ // 涓嬩竴涓猼ab
+ let nextTab = this.tabsInfo[nextTabIndex];
+ let nextTabX = nextTab.left + nextTab.width / 2;
+ // 涓や釜tab涔嬮棿鐨勮窛绂伙紝鍥犱负涓嬩竴涓猼ab鍙兘鍦ㄥ綋鍓峵ab鐨勫乏杈规垨鑰呭彸杈癸紝鍙栫粷瀵瑰�煎嵆鍙�
+ let distanceX = Math.abs(nextTabX - nowTabX);
+ this.line3AddDx = (dx / this.sW) * distanceX;
+ this.setTabColor(this.animationFinishCurrent, nextTabIndex, dx);
+ },
+ // 璁剧疆tab鐨勯鑹�
+ setTabColor(nowTabIndex, nextTabIndex, dx) {
+ let colorIndex = Math.abs(Math.ceil((dx / this.sW) * 100));
+ let colorLength = this.colorGradientArr.length;
+ // 澶勭悊瓒呭嚭绱㈠紩杈圭晫鐨勬儏鍐�
+ colorIndex = colorIndex >= colorLength ? colorLength - 1 : colorIndex <= 0 ? 0 : colorIndex;
+ // 璁剧疆涓嬩竴涓猼ab鐨勯鑹�
+ this.tabsInfo[nextTabIndex].color = this.colorGradientArr[colorIndex];
+ // 璁剧疆褰撳墠tab鐨勯鑹�
+ this.tabsInfo[nowTabIndex].color = this.colorGradientArr[colorLength - 1 - colorIndex];
+ },
+ // swiper缁撴潫婊戝姩
+ setFinishCurrent(current) {
+ // 濡傛灉婊戝姩鐨勭储寮曚笉涓�鑷达紝淇敼tab棰滆壊鍙樺寲锛屽洜涓哄彲鑳戒細鏈夌洿鎺ョ偣鍑籺ab鐨勬儏鍐�
+ this.tabsInfo.map((val, index) => {
+ if (current == index) val.color = this.activeColor;
+ else val.color = this.inactiveColor;
+ return val;
+ });
+ this.line3AddDx = 0;
+ this.animationFinishCurrent = current;
+ this.countLine3Dx();
+ }
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ @import "../../libs/css/style.components.scss";
+
+ view,
+ scroll-view {
+ box-sizing: border-box;
+ }
+
+ .u-tabs {
+ width: 100%;
+ transition-property: background-color, color;
+ }
+
+ ::-webkit-scrollbar,
+ ::-webkit-scrollbar,
+ ::-webkit-scrollbar {
+ display: none;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+ }
+
+ /* #ifdef H5 */
+ // 閫氳繃鏍峰紡绌块�忥紝闅愯棌H5涓嬶紝scroll-view涓嬬殑婊氬姩鏉�
+ scroll-view ::v-deep ::-webkit-scrollbar {
+ display: none;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+ }
+
+ /* #endif */
+
+ .u-scroll-view {
+ width: 100%;
+ white-space: nowrap;
+ position: relative;
+ }
+
+ .u-tabs-scroll-box {
+ position: relative;
+ }
+
+ .u-tabs-scorll-flex {
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .u-tabs-scorll-flex .u-tabs-item {
+ flex: 1;
+ }
+
+ .u-tabs-item {
+ position: relative;
+ display: inline-block;
+ text-align: center;
+ transition-property: background-color, color, font-weight;
+ }
+
+ .content {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+
+ .boxStyle {
+ pointer-events: none;
+ position: absolute;
+ transition-property: all;
+ }
+
+ .boxStyle2 {
+ pointer-events: none;
+ position: absolute;
+ bottom: 0;
+ transition-property: all;
+ transform: translateY(-100%);
+ }
+
+ .itemBackgroundBox {
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ transition-property: left, background-color;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .itemBackground {
+ height: 100%;
+ width: 100%;
+ transition-property: all;
+ }
+
+ .u-scroll-bar {
+ position: absolute;
+ bottom: 4rpx;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs/u-tabs.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs/u-tabs.vue"
new file mode 100644
index 0000000..2968714
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tabs/u-tabs.vue"
@@ -0,0 +1,347 @@
+<template>
+ <view class="u-tabs" :style="{
+ background: bgColor
+ }">
+ <!-- $u.getRect()瀵圭粍浠舵牴鑺傜偣鏃犳晥锛屽洜涓哄啓浜�.in(this)锛屾晠杩欓噷鑾峰彇鍐呭眰鎺ョ偣灏哄 -->
+ <view :id="id">
+ <scroll-view scroll-x class="u-scroll-view" :scroll-left="scrollLeft" scroll-with-animation>
+ <view class="u-scroll-box" :class="{'u-tabs-scorll-flex': !isScroll}">
+ <view class="u-tab-item u-line-1" :id="'u-tab-item-' + index" v-for="(item, index) in list" :key="index" @tap="clickTab(index)"
+ :style="[tabItemStyle(index)]">
+ {{ item[name] || item['name']}}
+ </view>
+ <view v-if="showBar" class="u-tab-bar" :style="[tabBarStyle]"></view>
+ </view>
+ </scroll-view>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * tabs 鏍囩
+ * @description 璇ョ粍浠讹紝鏄竴涓猼abs鏍囩缁勪欢锛屽湪鏍囩澶氱殑鏃跺�欙紝鍙互閰嶇疆涓哄乏鍙虫粦鍔紝鏍囩灏戠殑鏃跺�欙紝鍙互绂佹婊戝姩銆� 璇ョ粍浠剁殑涓�涓壒鐐规槸閰嶇疆涓烘粴鍔ㄦā寮忔椂锛屾縺娲荤殑tab浼氳嚜鍔ㄧЩ鍔ㄥ埌缁勪欢鐨勪腑闂翠綅缃��
+ * @tutorial https://www.uviewui.com/components/tabs.html
+ * @property {Boolean} is-scroll tabs鏄惁鍙互宸﹀彸鎷栧姩锛堥粯璁rue锛�
+ * @property {Array} list 鏍囩鏁扮粍锛屽厓绱犱负瀵硅薄锛屽[{name: '鎺ㄨ崘'}]
+ * @property {String Number} current 鎸囧畾鍝釜tab涓烘縺娲荤姸鎬侊紙榛樿0锛�
+ * @property {String Number} height 瀵艰埅鏍忕殑楂樺害锛屽崟浣峳px锛堥粯璁�80锛�
+ * @property {String Number} font-size tab鏂囧瓧澶у皬锛屽崟浣峳px锛堥粯璁�30锛�
+ * @property {String Number} duration 婊戝潡绉诲姩涓�娆℃墍闇�鐨勬椂闂达紝鍗曚綅绉掞紙榛樿0.5锛�
+ * @property {String} active-color 婊戝潡鍜屾縺娲籺ab鏂囧瓧鐨勯鑹诧紙榛樿#2979ff锛�
+ * @property {String} inactive-color tabs鏂囧瓧棰滆壊锛堥粯璁�#303133锛�
+ * @property {String Number} bar-width 婊戝潡瀹藉害锛屽崟浣峳px锛堥粯璁�40锛�
+ * @property {Object} active-item-style 娲诲姩tabs item鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Object} bar-style 搴曢儴婊戝潡鐨勬牱寮忥紝瀵硅薄褰㈠紡
+ * @property {Boolean} show-bar 鏄惁鏄剧ず搴曢儴鐨勬粦鍧楋紙榛樿true锛�
+ * @property {String Number} bar-height 婊戝潡楂樺害锛屽崟浣峳px锛堥粯璁�6锛�
+ * @property {String Number} item-width 鏍囩鐨勫搴︼紙榛樿auto锛�
+ * @property {String Number} gutter 鍗曚釜tab鏍囩鐨勫乏鍙冲唴杈硅窛涔嬪拰锛屽崟浣峳px锛堥粯璁�40锛�
+ * @property {String} bg-color tabs瀵艰埅鏍忕殑鑳屾櫙棰滆壊锛堥粯璁�#ffffff锛�
+ * @property {String} name 缁勪欢鍐呴儴璇诲彇鐨刲ist鍙傛暟涓殑灞炴�у悕锛岃瀹樼綉璇存槑锛堥粯璁ame锛�
+ * @property {Boolean} bold 婵�娲婚�夐」鐨勫瓧浣撴槸鍚﹀姞绮楋紙榛樿true锛�
+ * @event {Function} change 鐐瑰嚮鏍囩鏃惰Е鍙�
+ * @example <u-tabs ref="tabs" :list="list" :is-scroll="false"></u-tabs>
+ */
+ export default {
+ name: "u-tabs",
+ props: {
+ // 瀵艰埅鑿滃崟鏄惁闇�瑕佹粴鍔紝濡傚彧鏈�2鎴栬��3涓殑鏃跺�欙紝灏变笉闇�瑕佹粴鍔ㄤ簡锛屾鏃朵娇鐢╢lex骞冲垎tab鐨勫搴�
+ isScroll: {
+ type: Boolean,
+ default: true
+ },
+ //闇�寰幆鐨勬爣绛惧垪琛�
+ list: {
+ type: Array,
+ default () {
+ return [];
+ }
+ },
+ // 褰撳墠娲诲姩tab鐨勭储寮�
+ current: {
+ type: [Number, String],
+ default: 0
+ },
+ // 瀵艰埅鏍忕殑楂樺害鍜岃楂�
+ height: {
+ type: [String, Number],
+ default: 80
+ },
+ // 瀛椾綋澶у皬
+ fontSize: {
+ type: [String, Number],
+ default: 30
+ },
+ // 杩囨浮鍔ㄧ敾鏃堕暱, 鍗曚綅ms
+ duration: {
+ type: [String, Number],
+ default: 0.5
+ },
+ // 閫変腑椤圭殑涓婚棰滆壊
+ activeColor: {
+ type: String,
+ default: '#2979ff'
+ },
+ // 鏈�変腑椤圭殑棰滆壊
+ inactiveColor: {
+ type: String,
+ default: '#303133'
+ },
+ // 鑿滃崟搴曢儴绉诲姩鐨刡ar鐨勫搴︼紝鍗曚綅rpx
+ barWidth: {
+ type: [String, Number],
+ default: 40
+ },
+ // 绉诲姩bar鐨勯珮搴�
+ barHeight: {
+ type: [String, Number],
+ default: 6
+ },
+ // 鍗曚釜tab鐨勫乏鎴栨湁鍐呰竟璺濓紙宸﹀彸鐩稿悓锛�
+ gutter: {
+ type: [String, Number],
+ default: 30
+ },
+ // 瀵艰埅鏍忕殑鑳屾櫙棰滆壊
+ bgColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 璇诲彇浼犲叆鐨勬暟缁勫璞$殑灞炴��
+ name: {
+ type: String,
+ default: 'name'
+ },
+ // 娲诲姩tab瀛椾綋鏄惁鍔犵矖
+ bold: {
+ type: Boolean,
+ default: true
+ },
+ // 褰撳墠娲诲姩tab item鐨勬牱寮�
+ activeItemStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏄惁鏄剧ず搴曢儴鐨勬粦鍧�
+ showBar: {
+ type: Boolean,
+ default: true
+ },
+ // 搴曢儴婊戝潡鐨勮嚜瀹氫箟鏍峰紡
+ barStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 鏍囩鐨勫搴�
+ itemWidth: {
+ type: [Number, String],
+ default: 'auto'
+ }
+ },
+ data() {
+ return {
+ scrollLeft: 0, // 婊氬姩scroll-view鐨勫乏杈规粴鍔ㄨ窛绂�
+ tabQueryInfo: [], // 瀛樻斁瀵箃ab鑿滃崟鏌ヨ鍚庣殑鑺傜偣淇℃伅
+ componentWidth: 0, // 灞忓箷瀹藉害锛屽崟浣嶄负px
+ scrollBarLeft: 0, // 绉诲姩bar闇�瑕侀�氳繃translateX()绉诲姩鐨勮窛绂�
+ parentLeft: 0, // 鐖跺厓绱�(tabs缁勪欢)鍒板睆骞曞乏杈圭殑璺濈
+ id: this.$u.guid(), // id鍊�
+ currentIndex: this.current,
+ barFirstTimeMove: true, // 婊戝潡绗竴娆$Щ鍔ㄦ椂(椤甸潰鍒氱敓鎴愭椂)锛屾棤闇�鍔ㄧ敾锛屽惁鍒欑粰浜烘�紓鐨勬劅瑙�
+ };
+ },
+ watch: {
+ // 鐩戝惉tab鐨勫彉鍖栵紝閲嶆柊璁$畻tab鑿滃崟鐨勫竷灞�淇℃伅锛屽洜涓哄疄闄呬娇鐢ㄤ腑鑿滃崟鍙兘鏄�氳繃
+ // 鍚庡彴鑾峰彇鐨勶紙濡傛柊闂籥pp椤堕儴鐨勮彍鍗曪級锛岃幏鍙栬繑鍥為渶瑕佷竴瀹氭椂闂达紝鎵�浠ist鍙樺寲鏃讹紝閲嶆柊鑾峰彇甯冨眬淇℃伅
+ list(n, o) {
+ // list鍙樺姩鏃讹紝閲嶅埗鍐呴儴绱㈠紩锛屽惁鍒欏彲鑳藉鑷磋秴鍑烘暟缁勮竟鐣岀殑鎯呭喌
+ if(n.length !== o.length) this.currentIndex = 0;
+ // 鐢�$nextTick绛夊緟瑙嗗浘鏇存柊瀹屾瘯鍚庡啀璁$畻tab鐨勫眬閮ㄤ俊鎭紝鍚﹀垯鍙兘鍥犱负tab杩樻病鐢熸垚灏辫幏鍙栵紝灏变細鏈夐棶棰�
+ this.$nextTick(() => {
+ this.init();
+ });
+ },
+ current: {
+ immediate: true,
+ handler(nVal, oVal) {
+ // 瑙嗗浘鏇存柊鍚庡啀鎵ц绉诲姩鎿嶄綔
+ this.$nextTick(() => {
+ this.currentIndex = nVal;
+ this.scrollByIndex();
+ });
+ }
+ },
+ },
+ computed: {
+ // 绉诲姩bar鐨勬牱寮�
+ tabBarStyle() {
+ let style = {
+ width: this.barWidth + 'rpx',
+ transform: `translate(${this.scrollBarLeft}px, -100%)`,
+ // 婊戝潡鍦ㄩ〉闈㈡覆鏌撳悗绗竴娆℃粦鍔ㄦ椂锛屾棤闇�鍔ㄧ敾鏁堟灉
+ 'transition-duration': `${this.barFirstTimeMove ? 0 : this.duration }s`,
+ 'background-color': this.activeColor,
+ height: this.barHeight + 'rpx',
+ // 璁剧疆涓�涓緢澶х殑鍊硷紝瀹冧細鑷姩鍙栬兘鐢ㄧ殑鏈�澶у�硷紝涓嶇敤楂樺害鐨勪竴鍗婏紝鏄洜涓洪珮搴﹀彲鑳芥槸鍗曟暟锛屼細鏈夊皬鏁板嚭鐜�
+ 'border-radius': `${this.barHeight / 2}px`
+ };
+ Object.assign(style, this.barStyle);
+ return style;
+ },
+ // tab鐨勬牱寮�
+ tabItemStyle() {
+ return (index) => {
+ let style = {
+ height: this.height + 'rpx',
+ 'line-height': this.height + 'rpx',
+ 'font-size': this.fontSize + 'rpx',
+ 'transition-duration': `${this.duration}s`,
+ padding: this.isScroll ? `0 ${this.gutter}rpx` : '',
+ flex: this.isScroll ? 'auto' : '1',
+ width: this.$u.addUnit(this.itemWidth)
+ };
+ // 瀛椾綋鍔犵矖
+ if (index == this.currentIndex && this.bold) style.fontWeight = 'bold';
+ if (index == this.currentIndex) {
+ style.color = this.activeColor;
+ // 缁欓�変腑鐨則ab item娣诲姞澶栭儴鑷畾涔夌殑鏍峰紡
+ style = Object.assign(style, this.activeItemStyle);
+ } else {
+ style.color = this.inactiveColor;
+ }
+ return style;
+ }
+ }
+ },
+ methods: {
+ // 璁剧疆涓�涓猧nit鏂规硶锛屾柟渚垮澶勮皟鐢�
+ async init() {
+ // 鑾峰彇tabs缁勪欢鐨勫昂瀵镐俊鎭�
+ let tabRect = await this.$uGetRect('#' + this.id);
+ // tabs缁勪欢璺濈灞忓箷宸﹁竟鐨勫搴�
+ this.parentLeft = tabRect.left;
+ // tabs缁勪欢鐨勫搴�
+ this.componentWidth = tabRect.width;
+ this.getTabRect();
+ },
+ // 鐐瑰嚮鏌愪竴涓猼ab鑿滃崟
+ clickTab(index) {
+ // 鐐瑰嚮褰撳墠娲诲姩tab锛屼笉瑙﹀彂浜嬩欢
+ if(index == this.currentIndex) return ;
+ // 鍙戦�佷簨浠剁粰鐖剁粍浠�
+ this.$emit('change', index);
+ },
+ // 鏌ヨtab鐨勫竷灞�淇℃伅
+ getTabRect() {
+ // 鍒涘缓鑺傜偣鏌ヨ
+ let query = uni.createSelectorQuery().in(this);
+ // 鍘嗛亶鎵�鏈塼ab锛岃繖閲屾槸鎵ц浜嗘煡璇紝鏈�缁堜娇鐢╡xec()浼氫竴娆℃�ц繑鍥炴煡璇㈢殑鏁扮粍缁撴灉
+ for (let i = 0; i < this.list.length; i++) {
+ // 鍙size鍜宺ect涓や釜鍙傛暟
+ query.select(`#u-tab-item-${i}`).fields({
+ size: true,
+ rect: true
+ });
+ }
+ // 鎵ц鏌ヨ锛屼竴娆℃�ц幏鍙栧涓粨鏋�
+ query.exec(
+ function(res) {
+ this.tabQueryInfo = res;
+ // 鍒濆鍖栨粴鍔ㄦ潯鍜岀Щ鍔╞ar鐨勪綅缃�
+ this.scrollByIndex();
+ }.bind(this)
+ );
+ },
+ // 婊氬姩scroll-view锛岃娲诲姩鐨則ab澶勪簬灞忓箷鐨勪腑闂翠綅缃�
+ scrollByIndex() {
+ // 褰撳墠娲诲姩tab鐨勫竷灞�淇℃伅锛屾湁tab鑿滃崟鐨剋idth鍜宭eft(涓哄厓绱犲乏杈圭晫鍒扮埗鍏冪礌宸﹁竟鐣岀殑璺濈)绛変俊鎭�
+ let tabInfo = this.tabQueryInfo[this.currentIndex];
+ if (!tabInfo) return;
+ // 娲诲姩tab鐨勫搴�
+ let tabWidth = tabInfo.width;
+ // 娲诲姩item鐨勫乏杈瑰埌tabs缁勪欢宸﹁竟鐨勮窛绂伙紝鐢╥tem鐨刲eft鍑忓幓tabs鐨刲eft
+ let offsetLeft = tabInfo.left - this.parentLeft;
+ // 灏嗘椿鍔ㄧ殑tabs-item绉诲姩鍒板睆骞曟涓棿锛屽疄闄呬笂鏄scroll-view鐨勭Щ鍔�
+ let scrollLeft = offsetLeft - (this.componentWidth - tabWidth) / 2;
+ this.scrollLeft = scrollLeft < 0 ? 0 : scrollLeft;
+ // 褰撳墠娲诲姩item鐨勪腑鐐圭偣鍒板乏杈圭殑璺濈鍑忓幓婊戝潡瀹藉害鐨勪竴鍗婏紝鍗冲彲寰楀埌婊戝潡鎵�闇�鐨勭Щ鍔ㄨ窛绂�
+ let left = tabInfo.left + tabInfo.width / 2 - this.parentLeft;
+ // 璁$畻褰撳墠娲昏穬item鍒扮粍浠跺乏杈圭殑璺濈
+ this.scrollBarLeft = left - uni.upx2px(this.barWidth) / 2;
+ // 绗竴娆$Щ鍔ㄦ粦鍧楃殑鏃跺�欙紝barFirstTimeMove涓簍rue锛屾斁鍒板欢鏃朵腑灏嗗叾璁剧疆false
+ // 寤舵椂鏄洜涓簊crollBarLeft浣滅敤浜巆omputed璁$畻鏃讹紝闇�瑕佷竴涓繃绋嬮渶锛屽惁鍒欏鑷村嚭閿�
+ if(this.barFirstTimeMove == true) {
+ setTimeout(() => {
+ this.barFirstTimeMove = false;
+ }, 100)
+ }
+ }
+ },
+ mounted() {
+ this.init();
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ view,
+ scroll-view {
+ box-sizing: border-box;
+ }
+
+ ::-webkit-scrollbar,
+ ::-webkit-scrollbar,
+ ::-webkit-scrollbar {
+ display: none;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+ }
+
+ .u-scroll-box {
+ position: relative;
+ }
+
+ /* #ifdef H5 */
+ // 閫氳繃鏍峰紡绌块�忥紝闅愯棌H5涓嬶紝scroll-view涓嬬殑婊氬姩鏉�
+ scroll-view ::v-deep ::-webkit-scrollbar {
+ display: none;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+ }
+
+ /* #endif */
+
+ .u-scroll-view {
+ width: 100%;
+ white-space: nowrap;
+ position: relative;
+ }
+
+ .u-tab-item {
+ position: relative;
+ display: inline-block;
+ text-align: center;
+ transition-property: background-color, color;
+ }
+
+ .u-tab-bar {
+ position: absolute;
+ bottom: 0;
+ }
+
+ .u-tabs-scorll-flex {
+ display: flex;
+ justify-content: space-between;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tag/u-tag.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tag/u-tag.vue"
new file mode 100644
index 0000000..88d28b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tag/u-tag.vue"
@@ -0,0 +1,292 @@
+<template>
+ <view v-if="show" :class="[
+ disabled ? 'u-disabled' : '',
+ 'u-size-' + size,
+ 'u-shape-' + shape,
+ 'u-mode-' + mode + '-' + type
+ ]"
+ class="u-tag" :style="[customStyle]" @tap="clickTag">
+ {{text}}
+ <view class="u-icon-wrap" @tap.stop>
+ <u-icon @click="close" size="22" v-if="closeable" :color="closeIconColor"
+ name="close" class="u-close-icon" :style="[iconStyle]"></u-icon>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * tag 鎻愮ず
+ * @description 璇ョ粍浠朵竴鑸敤浜庢爣璁板拰閫夋嫨
+ * @tutorial https://www.uviewui.com/components/tag.html
+ * @property {String} type 涓婚绫诲瀷锛堥粯璁rimary锛�
+ * @property {String} size 鏍囩澶у皬锛堥粯璁efault锛�
+ * @property {String} shape 鏍囩褰㈢姸锛堥粯璁quare锛�
+ * @property {String} text 鏍囩鐨勬枃瀛楀唴瀹�
+ * @property {String} bg-color 鑷畾涔夋爣绛剧殑鑳屾櫙棰滆壊
+ * @property {String} border-color 鏍囩鐨勮竟妗嗛鑹�
+ * @property {String} close-color 鍏抽棴鎸夐挳鐨勯鑹�
+ * @property {String Number} index 鐐瑰嚮鏍囩鏃讹紝浼氶�氳繃click浜嬩欢杩斿洖璇ュ��
+ * @property {String} mode 妯″紡閫夋嫨锛岃瀹樼綉璇存槑锛堥粯璁ight锛�
+ * @property {Boolean} closeable 鏄惁鍙叧闂紝璁剧疆涓簍rue锛屾枃瀛楀彸杈逛細鍑虹幇涓�涓叧闂浘鏍囷紙榛樿false锛�
+ * @property {Boolean} show 鏍囩鏄剧ず涓庡惁锛堥粯璁rue锛�
+ * @event {Function} click 鐐瑰嚮鏍囩瑙﹀彂
+ * @event {Function} close closeable涓簍rue鏃讹紝鐐瑰嚮鏍囩鍏抽棴鎸夐挳瑙﹀彂
+ * @example <u-tag text="闆湀澶�" type="success" />
+ */
+ export default {
+ name: 'u-tag',
+ // 鏄惁绂佺敤杩欎釜鏍囩锛岀鐢ㄧ殑璇濓紝浼氬睆钄界偣鍑讳簨浠�
+ props: {
+ // 鏍囩绫诲瀷info銆乸rimary銆乻uccess銆亀arning銆乪rror
+ type: {
+ type: String,
+ default: 'primary'
+ },
+ disabled: {
+ type: [Boolean, String],
+ default: false
+ },
+ // 鏍囩鐨勫ぇ灏忥紝鍒嗕负default锛堥粯璁わ級锛宮ini锛堣緝灏忥級
+ size: {
+ type: String,
+ default: 'default'
+ },
+ // tag鐨勫舰鐘讹紝circle锛堜袱杈瑰崐鍦嗗舰锛�, square锛堟柟褰紝甯﹀渾瑙掞級锛宑ircleLeft锛堝乏杈规槸鍗婂渾锛夛紝circleRight锛堝彸杈规槸鍗婂渾锛�
+ shape: {
+ type: String,
+ default: 'square'
+ },
+ // 鏍囩鏂囧瓧
+ text: {
+ type: [String, Number],
+ default: ''
+ },
+ // 鑳屾櫙棰滆壊锛岄粯璁や负绌哄瓧绗︿覆锛屽嵆涓嶅鐞�
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 鏍囩瀛椾綋棰滆壊锛岄粯璁や负绌哄瓧绗︿覆锛屽嵆涓嶅鐞�
+ color: {
+ type: String,
+ default: ''
+ },
+ // 闀傜┖褰㈠紡鏍囩鐨勮竟妗嗛鑹�
+ borderColor: {
+ type: String,
+ default: ''
+ },
+ // 鍏抽棴鎸夐挳鍥炬爣鐨勯鑹�
+ closeColor: {
+ type: String,
+ default: ''
+ },
+ // 鐐瑰嚮鏃惰繑鍥炵殑绱㈠紩鍊硷紝鐢ㄤ簬鍖哄垎渚嬮亶鐨勬暟缁勫摢涓厓绱犺鐐瑰嚮浜�
+ index: {
+ type: [Number, String],
+ default: ''
+ },
+ // 妯″紡閫夋嫨锛宒ark|light|plain
+ mode: {
+ type: String,
+ default: 'light'
+ },
+ // 鏄惁鍙叧闂�
+ closeable: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鏄剧ず
+ show: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ computed: {
+ customStyle() {
+ let style = {};
+ // 鏂囧瓧棰滆壊锛堝鏋滄湁姝ゅ�硷紝浼氳鐩杢ype鍊肩殑棰滆壊锛�
+ if(this.color) style.color = this.color+"!important";
+ // tag鐨勮儗鏅鑹诧紙濡傛灉鏈夋鍊硷紝浼氳鐩杢ype鍊肩殑棰滆壊锛�
+ if(this.bgColor) style.backgroundColor = this.bgColor+"!important";
+ // 濡傛灉鏄晜绌哄瀷tag锛屾病鏈変紶閫掕竟妗嗛鑹诧紙borderColor锛夌殑璇濓紝浣跨敤鏂囧瓧鐨勯鑹诧紙color灞炴�э級
+ if(this.mode == 'plain' && this.color && !this.borderColor) style.borderColor = this.color;
+ else style.borderColor = this.borderColor;
+ return style;
+ },
+ iconStyle() {
+ if(!this.closeable) return ;
+ let style = {};
+ if(this.size == 'mini') style.fontSize = '20rpx';
+ else style.fontSize = '22rpx';
+ if(this.mode == 'plain' || this.mode == 'light') style.color = this.type;
+ else if(this.mode == 'dark') style.color = "#ffffff";
+ if(this.closeColor) style.color = this.closeColor;
+ return style;
+ },
+ // 鍏抽棴鍥炬爣鐨勯鑹�
+ closeIconColor() {
+ // 濡傛灉瀹氫箟浜嗗叧闂浘鏍囩殑棰滆壊锛屽氨鐢ㄦ鍊硷紝鍚﹀垯鐢ㄥ瓧浣撻鑹茬殑鍊�
+ // 濡傛灉涓婇潰鐨勪簩鑰呴兘娌℃湁锛屽鏋滄槸dark娣辫壊妯″紡锛屽浘鏍囧氨涓虹櫧鑹�
+ // 鏈�鍚庡鏋滀笂闈㈢殑涓夎�呴兘涓嶅悎閫傦紝灏辫繑鍥瀟ype鍊肩粰鍥炬爣鑾峰彇棰滆壊
+ let color = '';
+ if(this.closeColor) return this.closeColor;
+ else if(this.color) return this.color;
+ else if(this.mode == 'dark') return '#ffffff';
+ else return this.type;
+ }
+ },
+ methods: {
+ // 鏍囩琚偣鍑�
+ clickTag() {
+ // 濡傛灉鏄痙isabled鐘舵�侊紝涓嶅彂閫佺偣鍑讳簨浠�
+ if(this.disabled) return ;
+ this.$emit('click', this.index);
+ },
+ // 鐐瑰嚮鏍囩鍏抽棴鎸夐挳
+ close() {
+ this.$emit('close', this.index);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-tag {
+ box-sizing: border-box;
+ align-items: center;
+ border-radius: 6rpx;
+ display: inline-block;
+ line-height: 1;
+ }
+
+ .u-size-default {
+ font-size: 22rpx;
+ padding: 12rpx 22rpx;
+ }
+
+ .u-size-mini {
+ font-size: 20rpx;
+ padding: 6rpx 12rpx;
+ }
+
+ .u-mode-light-primary {
+ background-color: $u-type-primary-light;
+ color: $u-type-primary;
+ border: 1px solid $u-type-primary-disabled;
+ }
+
+ .u-mode-light-success {
+ background-color: $u-type-success-light;
+ color: $u-type-success;
+ border: 1px solid $u-type-success-disabled;
+ }
+
+ .u-mode-light-error {
+ background-color: $u-type-error-light;
+ color: $u-type-error;
+ border: 1px solid $u-type-error-disabled;
+ }
+
+ .u-mode-light-warning {
+ background-color: $u-type-warning-light;
+ color: $u-type-warning;
+ border: 1px solid $u-type-warning-disabled;
+ }
+
+ .u-mode-light-info {
+ background-color: $u-type-info-light;
+ color: $u-type-info;
+ border: 1px solid $u-type-info-disabled;
+ }
+
+ .u-mode-dark-primary {
+ background-color: $u-type-primary;
+ color: #FFFFFF;
+ }
+
+ .u-mode-dark-success {
+ background-color: $u-type-success;
+ color: #FFFFFF;
+ }
+
+ .u-mode-dark-error {
+ background-color: $u-type-error;
+ color: #FFFFFF;
+ }
+
+ .u-mode-dark-warning {
+ background-color: $u-type-warning;
+ color: #FFFFFF;
+ }
+
+ .u-mode-dark-info {
+ background-color: $u-type-info;
+ color: #FFFFFF;
+ }
+
+ .u-mode-plain-primary {
+ background-color: #FFFFFF;
+ color: $u-type-primary;
+ border: 1px solid $u-type-primary;
+ }
+
+ .u-mode-plain-success {
+ background-color: #FFFFFF;
+ color: $u-type-success;
+ border: 1px solid $u-type-success;
+ }
+
+ .u-mode-plain-error {
+ background-color: #FFFFFF;
+ color: $u-type-error;
+ border: 1px solid $u-type-error;
+ }
+
+ .u-mode-plain-warning {
+ background-color: #FFFFFF;
+ color: $u-type-warning;
+ border: 1px solid $u-type-warning;
+ }
+
+ .u-mode-plain-info {
+ background-color: #FFFFFF;
+ color: $u-type-info;
+ border: 1px solid $u-type-info;
+ }
+
+ .u-disabled {
+ opacity: 0.55;
+ }
+
+ .u-shape-circle {
+ border-radius: 100rpx;
+ }
+
+ .u-shape-circleRight {
+ border-radius: 0 100rpx 100rpx 0;
+ }
+
+ .u-shape-circleLeft {
+ border-radius: 100rpx 0 0 100rpx;
+ }
+
+ .u-close-icon {
+ margin-left: 14rpx;
+ font-size: 22rpx;
+ color: $u-type-success;
+ }
+
+ .u-icon-wrap {
+ display: inline-flex;
+ transform: scale(0.86);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-td/u-td.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-td/u-td.vue"
new file mode 100644
index 0000000..66e42a4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-td/u-td.vue"
@@ -0,0 +1,102 @@
+<template>
+ <view class="u-td" :style="[tdStyle]">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ /**
+ * td td鍗曞厓鏍�
+ * @description 琛ㄦ牸缁勪欢涓�鑸敤浜庡睍绀哄ぇ閲忕粨鏋勫寲鏁版嵁鐨勫満鏅紙鎼厤u-table浣跨敤锛�
+ * @tutorial https://www.uviewui.com/components/table.html#td-props
+ * @property {String Number} width 鍗曞厓鏍煎搴︾櫨鍒嗘瘮鎴栬�呭叿浣撳甫鍗曚綅鐨勫�硷紝濡�30%锛� 200rpx绛夛紝涓�鑸娇鐢ㄧ櫨鍒嗘瘮锛屽崟鍏冩牸瀹藉害榛樿涓哄潎鍒唗r鐨勯暱搴︼紙榛樿auto锛�
+ * @example <u-td>浜屽勾绾�</u-td>
+ */
+ export default {
+ name: "u-td",
+ props: {
+ // 瀹藉害锛岀櫨鍒嗘瘮鎴栬�呭叿浣撳甫鍗曚綅鐨勫�硷紝濡�30%锛� 200rpx绛夛紝涓�鑸娇鐢ㄧ櫨鍒嗘瘮
+ width: {
+ type: [Number, String],
+ default: 'auto'
+ }
+ },
+ inject: ['uTable'],
+ computed: {
+ tdStyle() {
+ let style = {};
+ if (this.width != "auto") style.flex = `0 0 ${this.width}`;
+ style.textAlign = this.uTable.align;
+ style.fontSize = this.uTable.fontSize + 'rpx';
+ style.padding = this.uTable.padding;
+ style.borderBottom = `solid 1px ${this.uTable.borderColor}`;
+ style.borderRight = `solid 1px ${this.uTable.borderColor}`;
+ style.color = this.uTable.color;
+ return style;
+ }
+ },
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-td {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ justify-content: center;
+ font-size: 28rpx;
+ color: $u-content-color;
+ align-self: stretch;
+ box-sizing: border-box;
+ }
+
+ .u-col-1 {
+ flex: 0 0 calc(100%/12);
+ }
+
+ .u-col-2 {
+ flex: 0 0 calc(100%/12 * 2);
+ }
+
+ .u-col-3 {
+ flex: 0 0 calc(100%/12 * 3);
+ }
+
+ .u-col-4 {
+ flex: 0 0 calc(100%/12 * 4);
+ }
+
+ .u-col-5 {
+ flex: 0 0 calc(100%/12 * 5);
+ }
+
+ .u-col-6 {
+ flex: 0 0 calc(100%/12 * 6);
+ }
+
+ .u-col-7 {
+ flex: 0 0 calc(100%/12 * 7);
+ }
+
+ .u-col-8 {
+ flex: 0 0 calc(100%/12 * 8);
+ }
+
+ .u-col-9 {
+ flex: 0 0 calc(100%/12 * 9);
+ }
+
+ .u-col-10 {
+ flex: 0 0 calc(100%/12 * 10);
+ }
+
+ .u-col-11 {
+ flex: 0 0 calc(100%/12 * 11);
+ }
+
+ .u-col-12 {
+ flex: 0 0 calc(100%/12 * 12);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-th/u-th.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-th/u-th.vue"
new file mode 100644
index 0000000..3883559
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-th/u-th.vue"
@@ -0,0 +1,53 @@
+<template>
+ <view class="u-th" :style="[thStyle]">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ /**
+ * th th鍗曞厓鏍�
+ * @description 琛ㄦ牸缁勪欢涓�鑸敤浜庡睍绀哄ぇ閲忕粨鏋勫寲鏁版嵁鐨勫満鏅紙鎼厤u-table浣跨敤锛�
+ * @tutorial https://www.uviewui.com/components/table.html#td-props
+ * @property {String Number} width 鏍囬鍗曞厓鏍煎搴︾櫨鍒嗘瘮鎴栬�呭叿浣撳甫鍗曚綅鐨勫�硷紝濡�30%锛�200rpx绛夛紝涓�鑸娇鐢ㄧ櫨鍒嗘瘮锛屽崟鍏冩牸瀹藉害榛樿涓哄潎鍒唗r鐨勯暱搴�
+ * @example 鏆傛棤绀轰緥
+ */
+ export default {
+ name: "u-th",
+ props: {
+ // 瀹藉害锛岀櫨鍒嗘瘮鎴栬�呭叿浣撳甫鍗曚綅鐨勫�硷紝濡�30%锛� 200rpx绛夛紝涓�鑸娇鐢ㄧ櫨鍒嗘瘮
+ width: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ inject: ['uTable'],
+ computed: {
+ thStyle() {
+ let style = {};
+ if (this.width) style.flex = `0 0 ${this.width}`;
+ style.textAlign = this.uTable.align;
+ style.padding = this.uTable.padding;
+ style.borderBottom = `solid 1px ${this.uTable.borderColor}`;
+ style.borderRight = `solid 1px ${this.uTable.borderColor}`;
+ Object.assign(style, this.uTable.thStyle);
+ return style;
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-th {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ justify-content: center;
+ font-size: 28rpx;
+ color: $u-main-color;
+ font-weight: bold;
+ background-color: rgb(245, 246, 248);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue"
new file mode 100644
index 0000000..a890f98
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue"
@@ -0,0 +1,83 @@
+<template>
+ <view class="u-time-axis-item">
+ <slot name="content" />
+ <view class="u-time-axis-node" :style="[nodeStyle]">
+ <slot name="node">
+ <view class="u-dot">
+ </view>
+ </slot>
+ </view>
+ </view>
+</template>
+
+<script>
+ /**
+ * timeLineItem 鏃堕棿杞碔tem
+ * @description 鏃堕棿杞寸粍浠朵竴鑸敤浜庣墿娴佷俊鎭睍绀猴紝鍚勭璺熸椂闂寸浉鍏崇殑璁板綍绛夊満鏅��(鎼厤u-time-line浣跨敤)
+ * @tutorial https://www.uviewui.com/components/timeLine.html
+ * @property {String} bg-color 宸﹁竟鑺傜偣鐨勮儗鏅鑹诧紝涓�鑸�氳繃slot鍐呭鑷畾涔夎儗鏅鑹插嵆鍙紙榛樿#ffffff锛�
+ * @property {String Number} node-top 鑺傜偣宸﹁竟鍥炬爣缁濆瀹氫綅鐨則op鍊硷紝鍗曚綅rpx
+ * @example <u-time-line-item node-top="2">...</u-time-line-item>
+ */
+ export default {
+ name: "u-time-line-item",
+ props: {
+ // 鑺傜偣鐨勮儗鏅鑹�
+ bgColor: {
+ type: String,
+ default: "#ffffff"
+ },
+ // 鑺傜偣宸﹁竟鍥炬爣缁濆瀹氫綅鐨則op鍊�
+ nodeTop: {
+ type: [String, Number],
+ default: ""
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ computed: {
+ nodeStyle() {
+ let style = {
+ backgroundColor: this.bgColor,
+ };
+ if (this.nodeTop != "") style.top = this.nodeTop + 'rpx';
+ return style;
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-time-axis-item {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ position: relative;
+ margin-bottom: 32rpx;
+ }
+
+ .u-time-axis-node {
+ position: absolute;
+ top: 12rpx;
+ left: -40rpx;
+ transform-origin: 0;
+ transform: translateX(-50%);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 1;
+ font-size: 24rpx;
+ }
+
+ .u-dot {
+ height: 16rpx;
+ width: 16rpx;
+ border-radius: 100rpx;
+ background: #ddd;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line/u-time-line.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line/u-time-line.vue"
new file mode 100644
index 0000000..f3c7587
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-time-line/u-time-line.vue"
@@ -0,0 +1,43 @@
+<template>
+ <view class="u-time-axis">
+ <slot />
+ </view>
+</template>
+
+<script>
+ /**
+ * timeLine 鏃堕棿杞�
+ * @description 鏃堕棿杞寸粍浠朵竴鑸敤浜庣墿娴佷俊鎭睍绀猴紝鍚勭璺熸椂闂寸浉鍏崇殑璁板綍绛夊満鏅��
+ * @tutorial https://www.uviewui.com/components/timeLine.html
+ * @example <u-time-line></u-time-line>
+ */
+ export default {
+ name: "u-time-line",
+ data() {
+ return {
+
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-time-axis {
+ padding-left: 40rpx;
+ position: relative;
+ }
+
+ .u-time-axis::before {
+ content: " ";
+ position: absolute;
+ left: 0;
+ top: 12rpx;
+ width: 1px;
+ bottom: 0;
+ border-left: 1px solid #ddd;
+ transform-origin: 0 0;
+ transform: scaleX(0.5);
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-toast/u-toast.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-toast/u-toast.vue"
new file mode 100644
index 0000000..68c911b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-toast/u-toast.vue"
@@ -0,0 +1,222 @@
+<template>
+ <view class="u-toast" :class="[isShow ? 'u-show' : '', 'u-type-' + config.type, 'u-position-' + config.position]" :style="{
+ zIndex: uZIndex
+ }">
+ <view class="u-icon-wrap">
+ <u-icon v-if="config.icon" class="u-icon" :name="iconName" :size="30" :color="config.type"></u-icon>
+ </view>
+ <text class="u-text">{{config.title}}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * toast 娑堟伅鎻愮ず
+ * @description 姝ょ粍浠惰〃鐜板舰寮忕被浼紆ni鐨剈ni.showToastAPI锛屼絾涔熸湁涓嶅悓鐨勫湴鏂广��
+ * @tutorial https://www.uviewui.com/components/toast.html
+ * @property {String} z-index toast灞曠ず鏃剁殑z-index鍊�
+ * @event {Function} show 鏄剧ずtoast锛屽闇�涓�杩涘叆椤甸潰灏辨樉绀簍oast锛岃鍦╫nReady鐢熷懡鍛ㄦ湡璋冪敤
+ * @example <u-toast ref="uToast" />
+ */
+ export default {
+ name: "u-toast",
+ props: {
+ // z-index鍊�
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ },
+ },
+ data() {
+ return {
+ isShow: false,
+ timer: null, // 瀹氭椂鍣�
+ config: {
+ params: {}, // URL璺宠浆鐨勫弬鏁帮紝瀵硅薄
+ title: '', // 鏄剧ず鏂囨湰
+ type: '', // 涓婚绫诲瀷锛宲rimary锛宻uccess锛宔rror锛寃arning锛宐lack
+ duration: 2000, // 鏄剧ず鐨勬椂闂达紝姣
+ isTab: false, // 鏄惁璺宠浆tab椤甸潰
+ url: '', // toast娑堝け鍚庢槸鍚﹁烦杞〉闈紝鏈夊垯璺宠浆锛屼紭鍏堢骇楂樹簬back鍙傛暟
+ icon: true, // 鏄剧ず鐨勫浘鏍�
+ position: 'center', // toast鍑虹幇鐨勪綅缃�
+ callback: null, // 鎵ц瀹屽悗鐨勫洖璋冨嚱鏁�
+ back: false, // 缁撴潫toast鏄惁鑷姩杩斿洖涓婁竴椤�
+ }
+ };
+ },
+ computed: {
+ iconName() {
+ // 鍙湁涓嶄负none锛屽苟涓攖ype涓篹rror|warning|succes|info鏃跺�欙紝鎵嶆樉绀哄浘鏍�
+ if (['error', 'warning', 'success', 'info'].indexOf(this.config.type) >= 0 && this.config.icon) {
+ let icon = this.$u.type2icon(this.config.type);
+ return icon;
+ }
+ },
+ uZIndex() {
+ // 鏄剧ずtoast鏃跺�欙紝濡傛灉鐢ㄦ埛鏈変紶閫抸-index鍊硷紝鏈夐檺浣跨敤
+ return this.isShow ? (this.zIndex ? this.zIndex : this.$u.zIndex.toast) : '999999';
+ }
+ },
+ methods: {
+ // 鏄剧ずtoast缁勪欢锛岀敱鐖剁粍浠堕�氳繃this.$refs.xxx.show(options)褰㈠紡璋冪敤
+ show(options) {
+ this.config = this.$u.deepMerge(this.config, options);
+ if (this.timer) {
+ // 娓呴櫎瀹氭椂鍣�
+ clearTimeout(this.timer);
+ this.timer = null;
+ }
+ this.isShow = true;
+ this.timer = setTimeout(() => {
+ // 鍊掕鏃剁粨鏉燂紝娓呴櫎瀹氭椂鍣紝闅愯棌toast缁勪欢
+ this.isShow = false;
+ clearTimeout(this.timer);
+ this.timer = null;
+ // 鍒ゆ柇鏄惁瀛樺湪callback鏂规硶锛屽鏋滃瓨鍦ㄥ氨鎵ц
+ typeof(this.config.callback) === 'function' && this.config.callback();
+ this.timeEnd();
+ }, this.config.duration);
+ },
+ // 闅愯棌toast缁勪欢锛岀敱鐖剁粍浠堕�氳繃this.$refs.xxx.hide()褰㈠紡璋冪敤
+ hide() {
+ this.isShow = false;
+ if (this.timer) {
+ // 娓呴櫎瀹氭椂鍣�
+ clearTimeout(this.timer);
+ this.timer = null;
+ }
+ },
+ // 鍊掕鏃剁粨鏉熶箣鍚庯紝杩涜鐨勪竴浜涙搷浣�
+ timeEnd() {
+ // 濡傛灉甯︽湁url鍊硷紝鏍规嵁isTab涓簍rue鎴栬�協alse杩涜璺宠浆
+ if (this.config.url) {
+ // 濡傛灉url娌℃湁"/"寮�澶达紝娣诲姞涓婏紝鍥犱负uni鐨勮矾鐢辫烦杞渶瑕�"/"寮�澶�
+ if (this.config.url[0] != '/') this.config.url = '/' + this.config.url;
+ // 鍒ゆ柇鏄惁鏈変紶閫掓樉寮忕殑鍙傛暟
+ if (Object.keys(this.config.params).length) {
+ // 鍒ゆ柇鐢ㄦ埛浼犻�掔殑url涓紝鏄惁甯︽湁鍙傛暟
+ // 浣跨敤姝e垯鍖归厤锛屼富瑕佷緷鎹槸鍒ゆ柇鏄惁鏈�"/","?","="绛夛紝濡傗��/page/index/index?name=mary"
+ // 濡傛灉鏈塸arams鍙傛暟锛岃浆鎹㈠悗鏃犻渶甯︿笂"?"
+ let query = '';
+ if (/.*\/.*\?.*=.*/.test(this.config.url)) {
+ // object瀵硅薄杞负get绫诲瀷鐨勫弬鏁�
+ query = this.$u.queryParams(this.config.params, false);
+ this.config.url = this.config.url + "&" + query;
+ } else {
+ query = this.$u.queryParams(this.config.params);
+ this.config.url += query;
+ }
+ }
+ // 濡傛灉鏄烦杞瑃ab椤甸潰锛屽氨浣跨敤uni.switchTab
+ if (this.config.isTab) {
+ uni.switchTab({
+ url: this.config.url
+ });
+ } else {
+ uni.navigateTo({
+ url: this.config.url
+ });
+ }
+ } else if(this.config.back) {
+ // 鍥為��鍒颁笂涓�椤�
+ this.$u.route({
+ type: 'back'
+ })
+ }
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-toast {
+ position: fixed;
+ z-index: -1;
+ transition: opacity 0.3s;
+ text-align: center;
+ color: #fff;
+ border-radius: 8rpx;
+ background: #585858;
+ height: 80rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 28rpx;
+ opacity: 0;
+ pointer-events: none;
+ padding:0 40rpx;
+ }
+
+ .u-toast.u-show {
+ opacity: 1;
+ }
+
+ .u-text {
+ word-break: keep-all;
+ white-space: nowrap;
+ line-height: normal;
+ }
+
+ .u-icon {
+ margin-right: 10rpx;
+ display: flex;
+ align-items: center;
+ line-height: normal;
+ }
+
+ .u-position-center {
+ left: 50%;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ }
+
+ .u-position-top {
+ left: 50%;
+ top: 20%;
+ transform: translateX(-50%) translateY(-50%);
+ }
+
+ .u-position-bottom {
+ left: 50%;
+ bottom: 20%;
+ transform: translateX(-50%) translateY(-50%);
+ }
+
+ .u-type-primary {
+ color: $u-type-primary;
+ background-color: $u-type-primary-light;
+ border: 1px solid rgb(215, 234, 254);
+ }
+
+ .u-type-success {
+ color: $u-type-success;
+ background-color: $u-type-success-light;
+ border: 1px solid #BEF5C8;
+ }
+
+ .u-type-error {
+ color: $u-type-error;
+ background-color: $u-type-error-light;
+ border: 1px solid #fde2e2;
+ }
+
+ .u-type-warning {
+ color: $u-type-warning;
+ background-color: $u-type-warning-light;
+ border: 1px solid #faecd8;
+ }
+
+ .u-type-info {
+ color: $u-type-info;
+ background-color: $u-type-info-light;
+ border: 1px solid #ebeef5;
+ }
+
+ .u-type-default {
+ color: #fff;
+ background-color: #585858;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-top-tips/u-top-tips.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-top-tips/u-top-tips.vue"
new file mode 100644
index 0000000..f9a4d2e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-top-tips/u-top-tips.vue"
@@ -0,0 +1,121 @@
+<template>
+ <view class="u-tips" :class="['u-' + type, isShow ? 'u-tip-show' : '']" :style="{
+ top: navbarHeight + 'px',
+ zIndex: uZIndex
+ }">{{ title }}</view>
+</template>
+
+<script>
+ /**
+ * topTips 椤堕儴鎻愮ず
+ * @description 璇ョ粍浠朵竴鑸敤浜庨〉闈㈤《閮ㄥ悜涓嬫粦鍑轰竴涓彁绀猴紝灏斿悗鑷姩鏀惰捣鐨勫満鏅��
+ * @tutorial https://www.uviewui.com/components/topTips.html
+ * @property {String Number} navbar-height 瀵艰埅鏍忛珮搴�(鍖呭惈鐘舵�佹爮楂樺害鍦ㄥ唴)锛屽崟浣峆X
+ * @property {String Number} z-index z-index鍊硷紙榛樿975锛�
+ * @example <u-top-tips ref="uTips"></u-top-tips>
+ */
+ export default {
+ name: "u-top-tips",
+ props: {
+ // 瀵艰埅鏍忛珮搴︼紝鐢ㄤ簬鎻愮ず鐨勫垵濮嬪寲
+ navbarHeight: {
+ type: [Number, String],
+ // #ifndef H5
+ default: 0,
+ // #endif
+ // #ifdef H5
+ default: 44,
+ // #endif
+ },
+ // z-index鍊�
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ data() {
+ return {
+ timer: null, // 瀹氭椂鍣�
+ isShow: false, // 鏄惁鏄剧ず娑堟伅缁勪欢
+ title: '', // 缁勪欢涓樉绀虹殑娑堟伅鍐呭
+ type: 'primary', // 娑堟伅鐨勭被鍨嬶紙棰滆壊涓嶅悓锛夛紝primary锛宻uccess锛宔rror锛寃arning锛宨nfo
+ duration: 2000, // 缁勪欢鏄剧ず鐨勬椂闂达紝鍗曚綅涓烘绉�
+ };
+ },
+ computed: {
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.topTips;
+ }
+ },
+ methods: {
+ show(config = {}) {
+ // 鍏堟竻闄ゅ畾鏃跺櫒锛堝彲鑳芥槸涓婁竴娆″畾涔夌殑锛岄渶瑕佹竻闄や簡鍐嶅紑濮嬫柊鐨勶級
+ clearTimeout(this.timer);
+ // 鏃堕棿锛屽唴瀹癸紝绫诲瀷涓婚(type)绛夊弬鏁�
+ if (config.duration) this.duration = config.duration;
+ if (config.type) this.type = config.type;
+ this.title = config.title;
+ this.isShow = true;
+ // 鍊掕鏃�
+ this.timer = setTimeout(() => {
+ this.isShow = false;
+ clearTimeout(this.timer);
+ this.timer = null;
+ }, this.duration);
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ view {
+ box-sizing: border-box;
+ }
+
+ // 椤堕儴寮瑰嚭绫诲瀷鏍峰紡
+ .u-tips {
+ width: 100%;
+ position: fixed;
+ z-index: 1;
+ padding: 20rpx 30rpx;
+ color: #FFFFFF;
+ font-size: 28rpx;
+ left: 0;
+ right: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0;
+ // 姝ゅ涓烘渶鏍稿績鐐癸紝translateY(-100%)鎰忓懗鐫�灏嗗叾浠嶻杞撮殣钘忥紙闅愯棌鍒伴《閮�(h5)鎴栬�呰瀵艰埅鏍�(app)涓嬮潰锛�
+ transform: translateY(-100%);
+ transition: all 0.35s linear;
+ }
+
+ .u-tip-show {
+ transform: translateY(0);
+ opacity: 1;
+ z-index: 99;
+ }
+
+ .u-primary {
+ background: $u-type-primary;
+ }
+
+ .u-success {
+ background: $u-type-success;
+ }
+
+ .u-warning {
+ background: $u-type-warning;
+ }
+
+ .u-error {
+ background: $u-type-error;
+ }
+
+ .u-info {
+ background: $u-type-info;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tr/u-tr.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tr/u-tr.vue"
new file mode 100644
index 0000000..1fbadcf
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-tr/u-tr.vue"
@@ -0,0 +1,25 @@
+<template>
+ <view class="u-tr">
+ <slot></slot>
+ </view>
+</template>
+
+<script>
+ /**
+ * tr 琛ㄦ牸琛屾爣绛�
+ * @description 琛ㄦ牸缁勪欢涓�鑸敤浜庡睍绀哄ぇ閲忕粨鏋勫寲鏁版嵁鐨勫満鏅紙鎼厤<u-table>浣跨敤锛�
+ * @tutorial https://www.uviewui.com/components/table.html
+ * @example <u-tr></u-tr>
+ */
+ export default {
+ name: "u-tr",
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-tr {
+ display: flex;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-upload/u-upload.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-upload/u-upload.vue"
new file mode 100644
index 0000000..860f647
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-upload/u-upload.vue"
@@ -0,0 +1,614 @@
+<template>
+ <view class="u-upload" v-if="!disabled">
+ <view
+ v-if="showUploadList"
+ class="u-list-item u-preview-wrap"
+ v-for="(item, index) in lists"
+ :key="index"
+ :style="{
+ width: $u.addUnit(width),
+ height: $u.addUnit(height)
+ }"
+ >
+ <view
+ v-if="deletable"
+ class="u-delete-icon"
+ @tap.stop="deleteItem(index)"
+ :style="{
+ background: delBgColor
+ }"
+ >
+ <u-icon class="u-icon" :name="delIcon" size="20" :color="delColor"></u-icon>
+ </view>
+ <u-line-progress
+ v-if="showProgress && item.progress > 0 && !item.error"
+ :show-percent="false"
+ height="16"
+ class="u-progress"
+ :percent="item.progress"
+ ></u-line-progress>
+ <view @tap.stop="retry(index)" v-if="item.error" class="u-error-btn">鐐瑰嚮閲嶈瘯</view>
+ <image @tap.stop="doPreviewImage(item.url || item.path, index)" class="u-preview-image" v-if="!item.isImage" :src="item.url || item.path" :mode="imageMode"></image>
+ </view>
+ <slot name="file" :file="lists"></slot>
+ <view style="display: inline-block;" @tap="selectFile" v-if="maxCount > lists.length">
+ <slot name="addBtn"></slot>
+ <view
+ v-if="!customBtn"
+ class="u-list-item u-add-wrap"
+ hover-class="u-add-wrap__hover"
+ hover-stay-time="150"
+ :style="{
+ width: $u.addUnit(width),
+ height: $u.addUnit(height)
+ }"
+ >
+ <u-icon name="plus" class="u-add-btn" size="40"></u-icon>
+ <view class="u-add-tips">{{ uploadText }}</view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+/**
+ * upload 鍥剧墖涓婁紶
+ * @description 璇ョ粍浠剁敤浜庝笂浼犲浘鐗囧満鏅�
+ * @tutorial https://www.uviewui.com/components/upload.html
+ * @property {String} action 鏈嶅姟鍣ㄤ笂浼犲湴鍧�
+ * @property {String Number} max-count 鏈�澶ч�夋嫨鍥剧墖鐨勬暟閲忥紙榛樿99锛�
+ * @property {Boolean} custom-btn 濡傛灉闇�瑕佽嚜瀹氫箟閫夋嫨鍥剧墖鐨勬寜閽紝璁剧疆涓簍rue锛堥粯璁alse锛�
+ * @property {Boolean} show-progress 鏄惁鏄剧ず杩涘害鏉★紙榛樿true锛�
+ * @property {Boolean} disabled 鏄惁鍚敤(鏄剧ず/绉讳粨)缁勪欢锛堥粯璁alse锛�
+ * @property {String} image-mode 棰勮鍥剧墖绛夋樉绀烘ā寮忥紝鍙�夊�间负uni鐨刬mage鐨刴ode灞炴�у�硷紙榛樿aspectFill锛�
+ * @property {String} del-icon 鍙充笂瑙掑垹闄ゅ浘鏍囧悕绉帮紝鍙兘涓簎View鍐呯疆鍥炬爣
+ * @property {String} del-bg-color 鍙充笂瑙掑叧闂寜閽殑鑳屾櫙棰滆壊
+ * @property {String | Number} index 鍦ㄥ悇涓洖璋冧簨浠朵腑鐨勬渶鍚庝竴涓弬鏁拌繑鍥烇紝鐢ㄤ簬鍖哄埆鏄摢涓�涓粍浠剁殑浜嬩欢
+ * @property {String} del-color 鍙充笂瑙掑叧闂寜閽浘鏍囩殑棰滆壊
+ * @property {Object} header 涓婁紶鎼哄甫鐨勫ご淇℃伅锛屽璞″舰寮�
+ * @property {Object} form-data 涓婁紶棰濆鎼哄甫鐨勫弬鏁�
+ * @property {String} name 涓婁紶鏂囦欢鐨勫瓧娈靛悕锛屼緵鍚庣鑾峰彇浣跨敤锛堥粯璁ile锛�
+ * @property {Array<String>} size-type original 鍘熷浘锛宑ompressed 鍘嬬缉鍥撅紝榛樿浜岃�呴兘鏈夛紙榛樿['original', 'compressed']锛�
+ * @property {Array<String>} source-type 閫夋嫨鍥剧墖鐨勬潵婧愶紝album-浠庣浉鍐岄�夊浘锛宑amera-浣跨敤鐩告満锛岄粯璁や簩鑰呴兘鏈夛紙榛樿['album', 'camera']锛�
+ * @property {Boolean} preview-full-image 鏄惁鍙互閫氳繃uni.previewImage棰勮宸查�夋嫨鐨勫浘鐗囷紙榛樿true锛�
+ * @property {Boolean} multiple 鏄惁寮�鍚浘鐗囧閫夛紝閮ㄥ垎瀹夊崜鏈哄瀷涓嶆敮鎸侊紙榛樿true锛�
+ * @property {Boolean} deletable 鏄惁鏄剧ず鍒犻櫎鍥剧墖鐨勬寜閽紙榛樿true锛�
+ * @property {String Number} max-size 閫夋嫨鍗曚釜鏂囦欢鐨勬渶澶уぇ灏忥紝鍗曚綅B(byte)锛岄粯璁や笉闄愬埗锛堥粯璁umber.MAX_VALUE锛�
+ * @property {Array<Object>} file-list 榛樿鏄剧ず鐨勫浘鐗囧垪琛紝鏁扮粍鍏冪礌涓哄璞★紝蹇呴』鎻愪緵url灞炴��
+ * @property {Boolean} upload-text 閫夋嫨鍥剧墖鎸夐挳鐨勬彁绀烘枃瀛楋紙榛樿鈥滈�夋嫨鍥剧墖鈥濓級
+ * @property {Boolean} auto-upload 閫夋嫨瀹屽浘鐗囨槸鍚﹁嚜鍔ㄤ笂浼狅紝瑙佷笂鏂硅鏄庯紙榛樿true锛�
+ * @property {Boolean} show-tips 鐗规畩鎯呭喌涓嬫槸鍚﹁嚜鍔ㄦ彁绀簍oast锛岃涓婃柟璇存槑锛堥粯璁rue锛�
+ * @property {Boolean} show-upload-list 鏄惁鏄剧ず缁勪欢鍐呴儴鐨勫浘鐗囬瑙堬紙榛樿true锛�
+ * @event {Function} on-oversize 鍥剧墖澶у皬瓒呭嚭鏈�澶у厑璁稿ぇ灏�
+ * @event {Function} on-preview 鍏ㄥ睆棰勮鍥剧墖鏃惰Е鍙�
+ * @event {Function} on-remove 绉婚櫎鍥剧墖鏃惰Е鍙�
+ * @event {Function} on-success 鍥剧墖涓婁紶鎴愬姛鏃惰Е鍙�
+ * @event {Function} on-change 鍥剧墖涓婁紶鍚庯紝鏃犺鎴愬姛鎴栬�呭け璐ラ兘浼氳Е鍙�
+ * @event {Function} on-error 鍥剧墖涓婁紶澶辫触鏃惰Е鍙�
+ * @event {Function} on-progress 鍥剧墖涓婁紶杩囩▼涓殑杩涘害鍙樺寲杩囩▼瑙﹀彂
+ * @event {Function} on-uploaded 鎵�鏈夊浘鐗囦笂浼犲畬姣曡Е鍙�
+ * @event {Function} on-choose-complete 姣忔閫夋嫨鍥剧墖鍚庤Е鍙戯紝鍙槸璁╁閮ㄥ彲浠ュ緱鐭ユ瘡娆¢�夋嫨鍚庯紝鍐呴儴鐨勬枃浠跺垪琛�
+ * @example <u-upload :action="action" :file-list="fileList" ></u-upload>
+ */
+export default {
+ name: 'u-upload',
+ props: {
+ //鏄惁鏄剧ず缁勪欢鑷甫鐨勫浘鐗囬瑙堝姛鑳�
+ showUploadList: {
+ type: Boolean,
+ default: true
+ },
+ // 鍚庣鍦板潃
+ action: {
+ type: String,
+ default: ''
+ },
+ // 鏈�澶т笂浼犳暟閲�
+ maxCount: {
+ type: [String, Number],
+ default: 52
+ },
+ // 鏄惁鏄剧ず杩涘害鏉�
+ showProgress: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鍚敤
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ // 棰勮涓婁紶鐨勫浘鐗囨椂鐨勮鍓ā寮忥紝鍜宨mage缁勪欢mode灞炴�т竴鑷�
+ imageMode: {
+ type: String,
+ default: 'aspectFill'
+ },
+ // 澶撮儴淇℃伅
+ header: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 棰濆鎼哄甫鐨勫弬鏁�
+ formData: {
+ type: Object,
+ default() {
+ return {};
+ }
+ },
+ // 涓婁紶鐨勬枃浠跺瓧娈靛悕
+ name: {
+ type: String,
+ default: 'file'
+ },
+ // 鎵�閫夌殑鍥剧墖鐨勫昂瀵�, 鍙�夊�间负original compressed
+ sizeType: {
+ type: Array,
+ default() {
+ return ['original', 'compressed'];
+ }
+ },
+ sourceType: {
+ type: Array,
+ default() {
+ return ['album', 'camera'];
+ }
+ },
+ // 鏄惁鍦ㄧ偣鍑婚瑙堝浘鍚庡睍绀哄叏灞忓浘鐗囬瑙�
+ previewFullImage: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁寮�鍚浘鐗囧閫夛紝閮ㄥ垎瀹夊崜鏈哄瀷涓嶆敮鎸�
+ multiple: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁灞曠ず鍒犻櫎鎸夐挳
+ deletable: {
+ type: Boolean,
+ default: true
+ },
+ // 鏂囦欢澶у皬闄愬埗锛屽崟浣嶄负byte
+ maxSize: {
+ type: [String, Number],
+ default: Number.MAX_VALUE
+ },
+ // 鏄剧ず宸蹭笂浼犵殑鏂囦欢鍒楄〃
+ fileList: {
+ type: Array,
+ default() {
+ return [];
+ }
+ },
+ // 涓婁紶鍖哄煙鐨勬彁绀烘枃瀛�
+ uploadText: {
+ type: String,
+ default: '閫夋嫨鍥剧墖'
+ },
+ // 鏄惁鑷姩涓婁紶
+ autoUpload: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鏄剧ずtoast娑堟伅鎻愮ず
+ showTips: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁閫氳繃slot鑷畾涔変紶鍏ラ�夋嫨鍥炬爣鐨勬寜閽�
+ customBtn: {
+ type: Boolean,
+ default: false
+ },
+ // 鍐呴儴棰勮鍥剧墖鍖哄煙鍜岄�夋嫨鍥剧墖鎸夐挳鐨勫尯鍩熷搴�
+ width: {
+ type: [String, Number],
+ default: 200
+ },
+ // 鍐呴儴棰勮鍥剧墖鍖哄煙鍜岄�夋嫨鍥剧墖鎸夐挳鐨勫尯鍩熼珮搴�
+ height: {
+ type: [String, Number],
+ default: 200
+ },
+ // 鍙充笂瑙掑叧闂寜閽殑鑳屾櫙棰滆壊
+ delBgColor: {
+ type: String,
+ default: '#fa3534'
+ },
+ // 鍙充笂瑙掑叧闂寜閽殑鍙夊彿鍥炬爣鐨勯鑹�
+ delColor: {
+ type: String,
+ default: '#ffffff'
+ },
+ // 鍙充笂瑙掑垹闄ゅ浘鏍囧悕绉帮紝鍙兘涓簎View鍐呯疆鍥炬爣
+ delIcon: {
+ type: String,
+ default: 'close'
+ },
+ // 濡傛灉涓婁紶鍚庣殑杩斿洖鍊间负json瀛楃涓诧紝鏄惁鑷姩杞琷son
+ toJson: {
+ type: Boolean,
+ default: true
+ },
+ // 涓婁紶鍓嶇殑閽╁瓙锛屾瘡涓枃浠朵笂浼犲墠閮戒細鎵ц
+ beforeUpload: {
+ type: Function,
+ default: null
+ },
+ // 鍏佽涓婁紶鐨勫浘鐗囧悗缂�
+ limitType:{
+ type: Array,
+ default() {
+ return ['png', 'jpg', 'jpeg', 'webp', 'gif'];
+ }
+ },
+ // 鍦ㄥ悇涓洖璋冧簨浠朵腑鐨勬渶鍚庝竴涓弬鏁拌繑鍥烇紝鐢ㄤ簬鍖哄埆鏄摢涓�涓粍浠剁殑浜嬩欢
+ index: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ mounted() {},
+ data() {
+ return {
+ lists: [],
+ isInCount: true,
+ uploading: false
+ };
+ },
+ watch: {
+ fileList: {
+ immediate: true,
+ handler(val) {
+ val.map(value => {
+ // 棣栧厛妫�鏌ュ唴閮ㄦ槸鍚﹀凡缁忔坊鍔犺繃杩欏紶鍥剧墖锛屽洜涓哄閮ㄧ粦瀹氫簡涓�涓璞$粰fileList鐨勮瘽(瀵硅薄寮曠敤)锛岃繘琛屼慨鏀瑰閮╢ileList
+ // 鏃讹紝浼氳Е鍙憌atch锛屽鑷撮噸鏂版妸鍘熸潵鐨勫浘鐗囧啀娆℃坊鍔犲埌this.lists
+ // 鏁扮粍鐨剆ome鏂规硶鎰忔�濇槸锛屽彧瑕佹暟缁勫厓绱犳湁浠绘剰涓�涓厓绱犳潯浠剁鍚堬紝灏辫繑鍥瀟rue锛岃�屽彟涓�涓暟缁勭殑every鏂规硶鐨勬剰鎬濇槸鏁扮粍鎵�鏈夊厓绱犻兘绗﹀悎鏉′欢鎵嶈繑鍥瀟rue
+ let tmp = this.lists.some(val => {
+ return val.url == value.url;
+ })
+ // 濡傛灉鍐呴儴娌℃湁杩欎釜鍥剧墖(tmp涓篺alse)锛屽垯娣诲姞鍒板唴閮�
+ !tmp && this.lists.push({ url: value.url, error: false, progress: 100 });
+ });
+ }
+ },
+ // 鐩戝惉lists鐨勫彉鍖栵紝鍙戝嚭浜嬩欢
+ lists(n) {
+ this.$emit('on-list-change', n, this.index);
+ }
+ },
+ methods: {
+ // 娓呴櫎鍒楄〃
+ clear() {
+ this.lists = [];
+ },
+ // 閲嶆柊涓婁紶闃熷垪涓笂浼犲け璐ョ殑鎵�鏈夋枃浠�
+ reUpload() {
+ this.uploadFile();
+ },
+ // 閫夋嫨鍥剧墖
+ selectFile() {
+ if (this.disabled) return;
+ const { name = '', maxCount, multiple, maxSize, sizeType, lists, camera, compressed, maxDuration, sourceType } = this;
+ let chooseFile = null;
+ const newMaxCount = maxCount - lists.length;
+ // 璁剧疆涓哄彧閫夋嫨鍥剧墖鐨勬椂鍊欎娇鐢� chooseImage 鏉ュ疄鐜�
+ chooseFile = new Promise((resolve, reject) => {
+ uni.chooseImage({
+ count: multiple ? (newMaxCount > 9 ? 9 : newMaxCount) : 1,
+ sourceType: sourceType,
+ sizeType,
+ success: resolve,
+ fail: reject
+ });
+ });
+ chooseFile
+ .then(res => {
+ let file = null;
+ let listOldLength = this.lists.length;
+ res.tempFiles.map((val, index) => {
+ // 妫�鏌ユ枃浠跺悗缂�鏄惁鍏佽锛屽鏋滀笉鍦╰his.limitType鍐咃紝灏变細杩斿洖false
+ if(!this.checkFileExt(val)) return ;
+
+ // 濡傛灉鏄潪澶氶�夛紝index澶т簬绛変簬1鎴栬�呰秴鍑烘渶澶ч檺鍒舵暟閲忔椂锛屼笉澶勭悊
+ if (!multiple && index >= 1) return;
+ if (val.size > maxSize) {
+ this.$emit('on-oversize', val, this.lists, this.index);
+ this.showToast('瓒呭嚭鍏佽鐨勬枃浠跺ぇ灏�');
+ } else {
+ if (maxCount <= lists.length) {
+ this.$emit('on-exceed', val, this.lists, this.index);
+ this.showToast('瓒呭嚭鏈�澶у厑璁哥殑鏂囦欢涓暟');
+ return;
+ }
+ lists.push({
+ url: val.path,
+ progress: 0,
+ error: false,
+ file: val
+ });
+ }
+ });
+ // 姣忔鍥剧墖閫夋嫨瀹岋紝鎶涘嚭涓�涓簨浠讹紝骞跺皢褰撳墠鍐呴儴閫夋嫨鐨勫浘鐗囨暟缁勬姏鍑哄幓
+ this.$emit('on-choose-complete', this.lists, this.index);
+ if (this.autoUpload) this.uploadFile(listOldLength);
+ })
+ .catch(error => {
+ // this.$emit('on-error', error);
+ });
+ },
+ // 鎻愮ず鐢ㄦ埛娑堟伅
+ showToast(message, force = false) {
+ if (this.showTips || force) {
+ uni.showToast({
+ title: message,
+ icon: 'none'
+ });
+ }
+ },
+ // 璇ユ柟娉曚緵鐢ㄦ埛閫氳繃ref璋冪敤锛屾墜鍔ㄤ笂浼�
+ upload() {
+ this.uploadFile();
+ },
+ // 瀵瑰け璐ョ殑鍥剧墖閲嶆柊涓婁紶
+ retry(index) {
+ this.lists[index].progress = 0;
+ this.lists[index].error = false;
+ this.lists[index].response = null;
+ uni.showLoading({
+ title: '閲嶆柊涓婁紶'
+ });
+ this.uploadFile(index);
+ },
+ // 涓婁紶鍥剧墖
+ async uploadFile(index = 0) {
+ if (this.disabled) return;
+ if (this.uploading) return;
+ // 鍏ㄩ儴涓婁紶瀹屾垚
+ if (index >= this.lists.length) {
+ this.$emit('on-uploaded', this.lists, this.index);
+ return;
+ }
+ // 妫�鏌ユ槸鍚︽槸宸蹭笂浼犳垨鑰呮鍦ㄤ笂浼犱腑
+ if (this.lists[index].progress == 100) {
+ if (this.autoUpload == false) this.uploadFile(index + 1);
+ return;
+ }
+ // 鎵цbefore-upload閽╁瓙
+ if(this.beforeUpload && typeof(this.beforeUpload) === 'function') {
+ // 鎵ц鍥炶皟锛屽悓鏃朵紶鍏ョ储寮曞拰鏂囦欢鍒楄〃褰撲綔鍙傛暟
+ // 鍦ㄥ井淇★紝鏀粯瀹濈瓑鐜(H5姝e父)锛屼細瀵艰嚧鐖剁粍浠跺畾涔夌殑customBack()鍑芥暟浣撲腑鐨則his鍙樻垚瀛愮粍浠剁殑this
+ // 閫氳繃bind()鏂规硶锛岀粦瀹氱埗缁勪欢鐨則his锛岃this.customBack()鐨則his涓虹埗缁勪欢鐨勪笂涓嬫枃
+ // 鍥犱负upload缁勪欢鍙兘浼氳宓屽鍦ㄥ叾浠栫粍浠跺唴锛屾瘮濡倁-form锛岃繖鏃秚his.$parent鍏跺疄涓簎-form鐨則his锛�
+ // 闈為〉闈㈢殑this锛屾墍浠ヨ繖閲岄渶瑕佸線涓婂巻閬嶏紝涓�鐩村鎵惧埌鏈�椤剁鐨�$parent锛岃繖閲岀敤浜唗his.$u.$parent.call(this)
+ // 鏄庣櫧鎰忔�濆嵆鍙紝鏃犻渶绾犵粨this.$u.$parent.call(this)鐨勭粏鑺�
+ let beforeResponse = this.beforeUpload.bind(this.$u.$parent.call(this))(index, this.lists);
+ // 鍒ゆ柇鏄惁杩斿洖浜唒romise
+ if (!!beforeResponse && typeof beforeResponse.then === 'function') {
+ await beforeResponse.then(res => {
+ // promise杩斿洖鎴愬姛锛屼笉杩涜鍔ㄤ綔锛岀户缁笂浼�
+ }).catch(err => {
+ // 杩涘叆catch鍥炶皟鐨勮瘽锛岀户缁笅涓�寮�
+ return this.uploadFile(index + 1);
+ })
+ } else if(beforeResponse === false) {
+ // 濡傛灉杩斿洖false锛岀户缁笅涓�寮犲浘鐗囩殑涓婁紶
+ return this.uploadFile(index + 1);
+ }
+ }
+ // 妫�鏌ヤ笂浼犲湴鍧�
+ if (!this.action) {
+ this.showToast('璇烽厤缃笂浼犲湴鍧�', true);
+ return;
+ }
+ this.lists[index].error = false;
+ this.uploading = true;
+ // 鍒涘缓涓婁紶瀵硅薄
+ const task = uni.uploadFile({
+ url: this.action,
+ filePath: this.lists[index].url,
+ name: this.name,
+ formData: this.formData,
+ header: this.header,
+ success: res => {
+ // 鍒ゆ柇鏄惁json瀛楃涓诧紝灏嗗叾杞负json鏍煎紡
+ let data = this.toJson && this.$u.test.jsonString(res.data) ? JSON.parse(res.data) : res.data;
+ if (![200, 201, 204].includes(res.statusCode)) {
+ this.uploadError(index, data);
+ } else {
+ // 涓婁紶鎴愬姛
+ this.lists[index].response = data;
+ this.lists[index].progress = 100;
+ this.lists[index].error = false;
+ this.$emit('on-success', data, index, this.lists, this.index);
+ }
+ },
+ fail: e => {
+ this.uploadError(index, e);
+ },
+ complete: res => {
+ uni.hideLoading();
+ this.uploading = false;
+ this.uploadFile(index + 1);
+ this.$emit('on-change', res, index, this.lists, this.index);
+ }
+ });
+ task.onProgressUpdate(res => {
+ if (res.progress > 0) {
+ this.lists[index].progress = res.progress;
+ this.$emit('on-progress', res, index, this.lists, this.index);
+ }
+ });
+ },
+ // 涓婁紶澶辫触
+ uploadError(index, err) {
+ this.lists[index].progress = 0;
+ this.lists[index].error = true;
+ this.lists[index].response = null;
+ this.$emit('on-error', err, index, this.lists, this.index);
+ this.showToast('涓婁紶澶辫触锛岃閲嶈瘯');
+ },
+ // 鍒犻櫎涓�涓浘鐗�
+ deleteItem(index) {
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '鎮ㄧ‘瀹氳鍒犻櫎姝ら」鍚楋紵',
+ success: res => {
+ if (res.confirm) {
+ if (this.lists[index].process < 100 && this.lists[index].process > 0) {
+ typeof this.lists[index].uploadTask != 'undefined' && this.lists[index].uploadTask.abort();
+ }
+ this.lists.splice(index, 1);
+ this.$forceUpdate();
+ this.$emit('on-remove', index, this.lists, this.index);
+ this.showToast('绉婚櫎鎴愬姛');
+ }
+ }
+ });
+ },
+ // 鐢ㄦ埛閫氳繃ref鎵嬪姩鐨勫舰寮忥紝绉婚櫎涓�寮犲浘鐗�
+ remove(index) {
+ // 鍒ゆ柇绱㈠紩鐨勫悎娉曡寖鍥�
+ if (index >= 0 && index < this.lists.length) {
+ this.lists.splice(index, 1);
+ this.$emit('on-list-change', this.lists, this.index);
+ }
+ },
+ // 棰勮鍥剧墖
+ doPreviewImage(url, index) {
+ if (!this.previewFullImage) return;
+ const images = this.lists.map(item => item.url || item.path);
+ uni.previewImage({
+ urls: images,
+ current: url,
+ success: () => {
+ this.$emit('on-preview', url, this.lists, this.index);
+ },
+ fail: () => {
+ uni.showToast({
+ title: '棰勮鍥剧墖澶辫触',
+ icon: 'none'
+ });
+ }
+ });
+ },
+ // 鍒ゆ柇鏂囦欢鍚庣紑鏄惁鍏佽
+ checkFileExt(file) {
+ // 妫�鏌ユ槸鍚﹀湪鍏佽鐨勫悗缂�涓�
+ let noArrowExt = false;
+ // 鑾峰彇鍚庣紑鍚�
+ let fileExt = '';
+ const reg = /.+\./;
+ // 濡傛灉鏄疕5锛岄渶瑕佷粠name涓垽鏂�
+ // #ifdef H5
+ fileExt = file.name.replace(reg, "").toLowerCase();
+ // #endif
+ // 闈濰5锛岄渶瑕佷粠path涓鍙栧悗缂�
+ // #ifndef H5
+ fileExt = file.path.replace(reg, "").toLowerCase();
+ // #endif
+ // 浣跨敤鏁扮粍鐨剆ome鏂规硶锛屽彧瑕佺鍚坙imitType涓殑涓�涓紝灏辫繑鍥瀟rue
+ noArrowExt = this.limitType.some(ext => {
+ // 杞负灏忓啓
+ return ext.toLowerCase() === fileExt;
+ })
+ if(!noArrowExt) this.showToast(`涓嶅厑璁搁�夋嫨${fileExt}鏍煎紡鐨勬枃浠禶);
+ return noArrowExt;
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+@import '../../libs/css/style.components.scss';
+
+.u-upload {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+}
+
+.u-list-item {
+ width: 200rpx;
+ height: 200rpx;
+ overflow: hidden;
+ margin: 10rpx;
+ background: rgb(244, 245, 246);
+ position: relative;
+ border-radius: 10rpx;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.u-preview-wrap {
+ border: 1px solid rgb(235, 236, 238);
+}
+
+.u-add-wrap {
+ flex-direction: column;
+ color: $u-content-color;
+ font-size: 26rpx;
+}
+
+.u-add-tips {
+ margin-top: 20rpx;
+ line-height: 40rpx;
+}
+
+.u-add-wrap__hover {
+ background-color: rgb(235, 236, 238);
+}
+
+.u-preview-image {
+ display: block;
+ width: 100%;
+ height: 100%;
+ border-radius: 10rpx;
+}
+
+.u-delete-icon {
+ position: absolute;
+ top: 10rpx;
+ right: 10rpx;
+ z-index: 10;
+ background-color: $u-type-error;
+ border-radius: 100rpx;
+ width: 44rpx;
+ height: 44rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.u-icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.u-progress {
+ position: absolute;
+ bottom: 10rpx;
+ left: 8rpx;
+ right: 8rpx;
+ z-index: 9;
+ width: auto;
+}
+
+.u-error-btn {
+ color: #ffffff;
+ background-color: $u-type-error;
+ font-size: 20rpx;
+ padding: 4px 0;
+ text-align: center;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 9;
+ line-height: 1;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-verification-code/u-verification-code.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-verification-code/u-verification-code.vue"
new file mode 100644
index 0000000..b3079f4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-verification-code/u-verification-code.vue"
@@ -0,0 +1,164 @@
+<template>
+ <view class="u-code-wrap">
+ <!-- 姝ょ粍浠跺姛鑳界敱js瀹屾垚锛屾棤闇�鍐檋tml閫昏緫 -->
+ </view>
+</template>
+
+<script>
+ /**
+ * verificationCode 楠岃瘉鐮佽緭鍏ユ
+ * @description 鑰冭檻鍒扮敤鎴峰疄闄呭彂閫侀獙璇佺爜鐨勫満鏅紝鍙兘鏄竴涓寜閽紝涔熷彲鑳芥槸涓�娈垫枃瀛楋紝鎻愮ず璇悇鏈変笉鍚岋紝鎵�浠ユ湰缁勪欢 涓嶆彁渚涚晫闈㈡樉绀猴紝鍙彁渚涙彁绀鸿锛岀敱鐢ㄦ埛灏嗘彁绀鸿宓屽叆鍒板叿浣撶殑鍦烘櫙
+ * @tutorial https://www.uviewui.com/components/verificationCode.html
+ * @property {Number String} seconds 鍊掕鏃舵墍闇�鐨勭鏁帮紙榛樿60锛�
+ * @property {String} start-text 寮�濮嬪墠鐨勬彁绀鸿锛岃瀹樼綉璇存槑锛堥粯璁よ幏鍙栭獙璇佺爜锛�
+ * @property {String} change-text 鍊掕鏃舵湡闂寸殑鎻愮ず璇紝蹇呴』甯︽湁瀛楁瘝"x"锛岃瀹樼綉璇存槑锛堥粯璁绉掗噸鏂拌幏鍙栵級
+ * @property {String} end-text 鍊掕缁撴潫鐨勬彁绀鸿锛岃瀹樼綉璇存槑锛堥粯璁ら噸鏂拌幏鍙栵級
+ * @property {Boolean} keep-running 鏄惁鍦℉5鍒锋柊鎴栧悇绔繑鍥炲啀杩涘叆鏃剁户缁�掕鏃讹紙榛樿false锛�
+ * @event {Function} change 鍊掕鏃舵湡闂达紝姣忕瑙﹀彂涓�娆�
+ * @event {Function} start 寮�濮嬪�掕鏃惰Е鍙�
+ * @event {Function} end 缁撴潫鍊掕鏃惰Е鍙�
+ * @example <u-verification-code :seconds="seconds" @end="end" @start="start" ref="uCode"
+ */
+ export default {
+ name: "u-verification-code",
+ props: {
+ // 鍊掕鏃舵�荤鏁�
+ seconds: {
+ type: [String, Number],
+ default: 60
+ },
+ // 灏氭湭寮�濮嬫椂鎻愮ず
+ startText: {
+ type: String,
+ default: '鑾峰彇楠岃瘉鐮�'
+ },
+ // 姝e湪鍊掕鏃朵腑鐨勬彁绀�
+ changeText: {
+ type: String,
+ default: 'X绉掗噸鏂拌幏鍙�'
+ },
+ // 鍊掕鏃剁粨鏉熸椂鐨勬彁绀�
+ endText: {
+ type: String,
+ default: '閲嶆柊鑾峰彇'
+ },
+ // 鏄惁鍦℉5鍒锋柊鎴栧悇绔繑鍥炲啀杩涘叆鏃剁户缁�掕鏃�
+ keepRunning: {
+ type: Boolean,
+ default: false
+ },
+ // 涓轰簡鍖哄垎澶氫釜椤甸潰锛屾垨鑰呬竴涓〉闈㈠涓�掕鏃剁粍浠舵湰鍦板瓨鍌ㄧ殑缁х画鍊掕鏃跺彉浜�
+ uniqueKey: {
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ secNum: this.seconds,
+ timer: null,
+ canGetCode: true, // 鏄惁鍙互鎵ц楠岃瘉鐮佹搷浣�
+ }
+ },
+ mounted() {
+ this.checkKeepRunning();
+ },
+ watch: {
+ seconds: {
+ immediate: true,
+ handler(n) {
+ this.secNum = n;
+ }
+ }
+ },
+ methods: {
+ checkKeepRunning() {
+ // 鑾峰彇涓婁竴娆¢��鍑洪〉闈�(H5杩樺寘鎷埛鏂�)鏃剁殑鏃堕棿鎴筹紝濡傛灉娌℃湁涓婃鐨勪繚瀛橈紝姝ゅ�煎彲鑳戒负绌�
+ let lastTimestamp = Number(uni.getStorageSync(this.uniqueKey + '_$uCountDownTimestamp'));
+ if(!lastTimestamp) return this.changeEvent(this.startText);
+ // 褰撳墠绉掔殑鏃堕棿鎴�
+ let nowTimestamp = Math.floor((+ new Date()) / 1000);
+ // 鍒ゆ柇褰撳墠鐨勬椂闂存埑锛屾槸鍚﹀皬浜庝笂涓�娆$殑鏈鎸夎瀹氱粨鏉燂紝鍗存彁鍓嶇粨鏉熺殑鏃堕棿鎴�
+ if(this.keepRunning && lastTimestamp && lastTimestamp > nowTimestamp) {
+ // 鍓╀綑灏氭湭鎵ц瀹岀殑鍊掕绉掓暟
+ this.secNum = lastTimestamp - nowTimestamp;
+ // 娓呴櫎鏈湴淇濆瓨鐨勫彉閲�
+ uni.removeStorageSync(this.uniqueKey + '_$uCountDownTimestamp');
+ // 寮�濮嬪�掕鏃�
+ this.start();
+ } else {
+ // 濡傛灉涓嶅瓨鍦ㄩ渶瑕佺户缁笂涓�娆$殑鍊掕鏃讹紝鎵ц姝e父鐨勯�昏緫
+ this.changeEvent(this.startText);
+ }
+ },
+ // 寮�濮嬪�掕鏃�
+ start() {
+ // 闃叉蹇�熺偣鍑昏幏鍙栭獙璇佺爜鐨勬寜閽�屽鑷村唴閮ㄤ骇鐢熷涓畾鏃跺櫒瀵艰嚧娣蜂贡
+ if(this.timer) {
+ clearInterval(this.timer);
+ this.timer = null;
+ }
+ this.$emit('start');
+ this.canGetCode = false;
+ // 杩欓噷鏀捐繖鍙ワ紝鏄负浜嗕竴寮�濮嬫椂灏辨彁绀猴紝鍚﹀垯瑕佺瓑setInterval鐨�1绉掑悗鎵嶄細鏈夋彁绀�
+ this.changeEvent(this.changeText.replace(/x|X/, this.secNum));
+ this.setTimeToStorage();
+ this.timer = setInterval(() => {
+ if (--this.secNum) {
+ // 鐢ㄥ綋鍓嶅�掕鏃剁殑绉掓暟鏇挎崲鎻愮ず瀛楃涓蹭腑鐨�"x"瀛楁瘝
+ this.changeEvent(this.changeText.replace(/x|X/, this.secNum));
+ } else {
+ clearInterval(this.timer);
+ this.timer = null;
+ this.changeEvent(this.endText);
+ this.secNum = this.seconds;
+ this.$emit('end');
+ this.canGetCode = true;
+ }
+ }, 1000);
+ },
+ // 閲嶇疆锛屽彲浠ヨ鐢ㄦ埛鍐嶆鑾峰彇楠岃瘉鐮�
+ reset() {
+ this.canGetCode = true;
+ clearInterval(this.timer);
+ this.secNum = this.seconds;
+ this.changeEvent(this.endText);
+ },
+ changeEvent(text) {
+ this.$emit('change', text);
+ },
+ // 淇濆瓨鏃堕棿鎴筹紝涓轰簡闃叉鍊掕鏃跺皻鏈粨鏉燂紝H5鍒锋柊鎴栬�呭悇绔殑鍙充笂瑙掕繑鍥炰笂涓�椤靛啀杩涙潵
+ setTimeToStorage() {
+ if(!this.keepRunning || !this.timer) return;
+ // 璁板綍褰撳墠鐨勬椂闂存埑锛屼负浜嗕笅娆¤繘鍏ラ〉闈紝濡傛灉杩樺湪鍊掕鏃跺唴鐨勮瘽锛岀户缁�掕鏃�
+ // 鍊掕鏃跺皻鏈粨鏉燂紝缁撴灉澶т簬0锛涘�掕鏃跺凡缁忓紑濮嬶紝灏变細灏忎簬鍒濆鍊硷紝濡傛灉绛変簬鍒濆鍊硷紝璇存槑娌℃湁寮�濮嬪�掕鏃讹紝鏃犻渶澶勭悊
+ if(this.secNum > 0 && this.secNum <= this.seconds) {
+ // 鑾峰彇褰撳墠鏃堕棿鎴�(+ new Date()涓虹壒娈婂啓娉�)锛岄櫎浠�1000鍙樻垚绉掞紝鍐嶅幓闄ゅ皬鏁伴儴鍒�
+ let nowTimestamp = Math.floor((+ new Date()) / 1000);
+ // 灏嗘湰璇ョ粨鏉熸椂鍊欑殑鏃堕棿鎴充繚瀛樿捣鏉� => 褰撳墠鏃堕棿鎴� + 鍓╀綑鐨勭鏁�
+ uni.setStorage({
+ key: this.uniqueKey + '_$uCountDownTimestamp',
+ data: nowTimestamp + Number(this.secNum)
+ })
+ }
+ }
+ },
+ // 缁勪欢閿�姣佺殑鏃跺�欙紝娓呴櫎瀹氭椂鍣紝鍚﹀垯瀹氭椂鍣ㄤ細缁х画瀛樺湪锛岀郴缁熶笉浼氳嚜鍔ㄦ竻闄�
+ beforeDestroy() {
+ this.setTimeToStorage();
+ clearTimeout(this.timer);
+ this.timer = null;
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-code-wrap {
+ width: 0;
+ height: 0;
+ position: fixed;
+ z-index: -1;
+ }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-waterfall/u-waterfall.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-waterfall/u-waterfall.vue"
new file mode 100644
index 0000000..783c27b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/components/u-waterfall/u-waterfall.vue"
@@ -0,0 +1,181 @@
+<template>
+ <view class="u-waterfall">
+ <view id="u-left-column" class="u-column"><slot name="left" :leftList="leftList"></slot></view>
+ <view id="u-right-column" class="u-column"><slot name="right" :rightList="rightList"></slot></view>
+ </view>
+</template>
+
+<script>
+/**
+ * waterfall 鐎戝竷娴�
+ * @description 杩欐槸涓�涓�戝竷娴佸舰寮忕殑缁勪欢锛屽唴瀹瑰垎涓哄乏鍙充袱鍒楋紝缁撳悎uView鐨勬噿鍔犺浇缁勪欢鏁堟灉鏇翠匠銆傜浉杈冧簬鏌愪簺鍙槸濂囧伓鏁板乏鍙冲垎鍒紝鎴栬�呮病鏈夊埄鐢╲ue浣滅敤鍩熸彃妲界殑鍋氭硶锛寀View鐨勭�戝竷娴佸疄鐜颁簡鐪熸鐨� 缁勪欢鍖栵紝鎼厤LazyLoad 鎳掑姞杞藉拰loadMore 鍔犺浇鏇村缁勪欢锛岃鎮ㄥ紑绠卞嵆鐢紝鐪煎墠涓�浜��
+ * @tutorial https://www.uviewui.com/components/waterfall.html
+ * @property {Array} flow-list 鐢ㄤ簬娓叉煋鐨勬暟鎹�
+ * @property {String Number} add-time 鍗曟潯鏁版嵁娣诲姞鍒伴槦鍒楃殑鏃堕棿闂撮殧锛屽崟浣峬s锛岃涓婃柟娉ㄦ剰浜嬮」璇存槑锛堥粯璁�200锛�
+ * @example <u-waterfall :flowList="flowList"></u-waterfall>
+ */
+export default {
+ name: "u-waterfall",
+ props: {
+ value: {
+ // 鐎戝竷娴佹暟鎹�
+ type: Array,
+ required: true,
+ default: function() {
+ return [];
+ }
+ },
+ // 姣忔鍚戠粨鏋勬彃鍏ユ暟鎹殑鏃堕棿闂撮殧锛岄棿闅旇秺闀匡紝瓒婅兘淇濊瘉涓ゅ垪楂樺害鐩歌繎锛屼絾鏄鐢ㄦ埛浣撻獙瓒婁笉濂�
+ // 鍗曚綅ms
+ addTime: {
+ type: [Number, String],
+ default: 200
+ },
+ // id鍊硷紝鐢ㄤ簬娓呴櫎鏌愪竴鏉℃暟鎹椂锛屾牴鎹idKey鍚嶇О鎵惧埌骞剁Щ闄わ紝濡傛暟鎹负{idx: 22, name: 'lisa'}
+ // 閭d箞璇ユ妸idKey璁剧疆涓篿dx
+ idKey: {
+ type: String,
+ default: 'id'
+ }
+ },
+ provide() {
+ return {
+ uWaterfall: this
+ }
+ },
+ data() {
+ return {
+ leftList: [],
+ rightList: [],
+ tempList: [],
+ children: []
+ }
+ },
+ watch: {
+ copyFlowList(nVal, oVal) {
+ // 鍙栧樊鍊硷紝鍗宠繖涓�娆℃暟缁勫彉鍖栨柊澧炵殑閮ㄥ垎
+ let startIndex = Array.isArray(oVal) && oVal.length > 0 ? oVal.length : 0;
+ // 鎷兼帴涓婂師鏈夋暟鎹�
+ this.tempList = this.tempList.concat(this.cloneData(nVal.slice(startIndex)));
+ this.splitData();
+ }
+ },
+ mounted() {
+ this.tempList = this.cloneData(this.copyFlowList);
+ this.splitData();
+ },
+ computed: {
+ // 鐮村潖flowList鍙橀噺鐨勫紩鐢紝鍚﹀垯watch鐨勭粨鏋滄柊鏃у�兼槸涓�鏍风殑
+ copyFlowList() {
+ return this.cloneData(this.value);
+ }
+ },
+ methods: {
+ async splitData() {
+ if (!this.tempList.length) return;
+ let leftRect = await this.$uGetRect('#u-left-column');
+ let rightRect = await this.$uGetRect('#u-right-column');
+ // 濡傛灉宸﹁竟灏忎簬鎴栫瓑浜庡彸杈癸紝灏辨坊鍔犲埌宸﹁竟锛屽惁鍒欐坊鍔犲埌鍙宠竟
+ let item = this.tempList[0];
+ // 瑙e喅澶氭蹇�熶笂鎷夊悗锛屽彲鑳芥暟鎹細涔辩殑闂锛屽洜涓虹粡杩囦笂闈㈢殑涓や釜await鑺傜偣鏌ヨ闃诲涓�瀹氭椂闂达紝鍔犱笂鍚庨潰鐨勫畾鏃跺櫒骞叉壈
+ // 鏁扮粍鍙兘鍙樻垚[]锛屽鑷存item鍊煎彲鑳戒负undefined
+ if(!item) return ;
+ if (leftRect.height < rightRect.height) {
+ this.leftList.push(item);
+ } else if (leftRect.height > rightRect.height) {
+ this.rightList.push(item);
+ } else {
+ // 杩欓噷鏄负浜嗕繚璇佺涓�鍜岀浜屽紶娣诲姞鏃讹紝宸﹀彸閮借兘鏈夊唴瀹�
+ // 鍥犱负娣诲姞绗竴寮狅紝瀹為檯闃熷垪鐨勯珮搴﹀彲鑳借繕鏄�0锛岃繖鏃堕渶瑕佹牴鎹槦鍒楀厓绱犻暱搴﹀垽鏂笅涓�涓鏀惧摢杈�
+ if (this.leftList.length <= this.rightList.length) {
+ this.leftList.push(item);
+ } else {
+ this.rightList.push(item);
+ }
+ }
+ // 绉婚櫎涓存椂鍒楄〃鐨勭涓�椤�
+ this.tempList.splice(0, 1);
+ // 濡傛灉涓存椂鏁扮粍杩樻湁鏁版嵁锛岀户缁惊鐜�
+ if (this.tempList.length) {
+ setTimeout(() => {
+ this.splitData();
+ }, this.addTime)
+ }
+ },
+ // 澶嶅埗鑰屼笉鏄紩鐢ㄥ璞″拰鏁扮粍
+ cloneData(data) {
+ return JSON.parse(JSON.stringify(data));
+ },
+ // 娓呯┖鏁版嵁鍒楄〃
+ clear() {
+ this.leftList = [];
+ this.rightList = [];
+ // 鍚屾椂娓呴櫎鐖剁粍浠跺垪琛ㄤ腑鐨勬暟鎹�
+ this.$emit('input', []);
+ this.tempList = [];
+ },
+ // 娓呴櫎鏌愪竴鏉℃寚瀹氱殑鏁版嵁锛屾牴鎹甶d瀹炵幇
+ remove(id) {
+ // 濡傛灉findIndex鎵句笉鍒板悎閫傜殑鏉′欢锛屽氨浼氳繑鍥�-1
+ let index = -1;
+ index = this.leftList.findIndex(val => val[this.idKey] == id);
+ if(index != -1) {
+ // 濡傛灉index涓嶇瓑浜�-1锛岃鏄庡凡缁忔壘鍒颁簡瑕佹壘鐨刬d锛屾牴鎹甶ndex绱㈠紩鍒犻櫎杩欎竴鏉℃暟鎹�
+ this.leftList.splice(index, 1);
+ } else {
+ // 鍚岀悊浜庝笂鏂归潰鐨勬柟娉�
+ index = this.rightList.findIndex(val => val[this.idKey] == id);
+ if(index != -1) this.rightList.splice(index, 1);
+ }
+ // 鍚屾椂娓呴櫎鐖剁粍浠剁殑鏁版嵁涓殑瀵瑰簲id鐨勬潯鐩�
+ index = this.value.findIndex(val => val[this.idKey] == id);
+ if(index != -1) this.$emit('input', this.value.splice(index, 1));
+ },
+ // 淇敼鏌愭潯鏁版嵁鐨勬煇涓睘鎬�
+ modify(id, key, value) {
+ // 濡傛灉findIndex鎵句笉鍒板悎閫傜殑鏉′欢锛屽氨浼氳繑鍥�-1
+ let index = -1;
+ index = this.leftList.findIndex(val => val[this.idKey] == id);
+ if(index != -1) {
+ // 濡傛灉index涓嶇瓑浜�-1锛岃鏄庡凡缁忔壘鍒颁簡瑕佹壘鐨刬d锛屼慨鏀瑰搴攌ey鐨勫��
+ this.leftList[index][key] = value;
+ } else {
+ // 鍚岀悊浜庝笂鏂归潰鐨勬柟娉�
+ index = this.rightList.findIndex(val => val[this.idKey] == id);
+ if(index != -1) this.rightList[index][key] = value;
+ }
+ // 淇敼鐖剁粍浠剁殑鏁版嵁涓殑瀵瑰簲id鐨勬潯鐩�
+ index = this.value.findIndex(val => val[this.idKey] == id);
+ if(index != -1) {
+ // 棣栧厛澶嶅埗涓�浠絭alue鐨勬暟鎹�
+ let data = this.cloneData(this.value);
+ // 淇敼瀵瑰簲绱㈠紩鐨刱ey灞炴�х殑鍊间负value
+ data[index][key] = value;
+ // 淇敼鐖剁粍浠堕�氳繃v-model缁戝畾鐨勫彉閲忕殑鍊�
+ this.$emit('input', data);
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "../../libs/css/style.components.scss";
+
+.u-waterfall {
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+}
+
+.u-column {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ height: auto;
+}
+
+.u-image {
+ width: 100%;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/index.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/index.scss"
new file mode 100644
index 0000000..84daa72
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/index.scss"
@@ -0,0 +1,23 @@
+// 寮曞叆鍏叡鍩虹绫�
+@import "./libs/css/common.scss";
+@import "./libs/css/color.scss";
+
+// 闈瀗vue鐨勬牱寮�
+/* #ifndef APP-NVUE */
+@import "./libs/css/style.vue.scss";
+/* #endif */
+
+// nvue鐨勭壒鏈夋牱寮�
+/* #ifdef APP-NVUE */
+@import "./libs/css/style.nvue.scss";
+/* #endif */
+
+// 灏忕▼搴忕壒鏈夌殑鏍峰紡
+/* #ifdef MP */
+@import "./libs/css/style.mp.scss";
+/* #endif */
+
+// H5鐗规湁鐨勬牱寮�
+/* #ifdef H5 */
+@import "./libs/css/style.h5.scss";
+/* #endif */
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/color.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/color.scss"
new file mode 100644
index 0000000..279bc40
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/color.scss"
@@ -0,0 +1,155 @@
+.u-type-primary-light {
+ color: $u-type-primary-light;
+}
+
+.u-type-warning-light {
+ color: $u-type-warning-light;
+}
+
+.u-type-success-light {
+ color: $u-type-success-light;
+}
+
+.u-type-error-light {
+ color: $u-type-error-light;
+}
+
+.u-type-info-light {
+ color: $u-type-info-light;
+}
+
+.u-type-primary-light-bg {
+ background-color: $u-type-primary-light;
+}
+
+.u-type-warning-light-bg {
+ background-color: $u-type-warning-light;
+}
+
+.u-type-success-light-bg {
+ background-color: $u-type-success-light;
+}
+
+.u-type-error-light-bg {
+ background-color: $u-type-error-light;
+}
+
+.u-type-info-light-bg {
+ background-color: $u-type-info-light;
+}
+
+.u-type-primary-dark {
+ color: $u-type-primary-dark;
+}
+
+.u-type-warning-dark {
+ color: $u-type-warning-dark;
+}
+
+.u-type-success-dark {
+ color: $u-type-success-dark;
+}
+
+.u-type-error-dark {
+ color: $u-type-error-dark;
+}
+
+.u-type-info-dark {
+ color: $u-type-info-dark;
+}
+
+.u-type-primary-dark-bg {
+ background-color: $u-type-primary-dark;
+}
+
+.u-type-warning-dark-bg {
+ background-color: $u-type-warning-dark;
+}
+
+.u-type-success-dark-bg {
+ background-color: $u-type-success-dark;
+}
+
+.u-type-error-dark-bg {
+ background-color: $u-type-error-dark;
+}
+
+.u-type-info-dark-bg {
+ background-color: $u-type-info-dark;
+}
+
+.u-type-primary-disabled {
+ color: $u-type-primary-disabled;
+}
+
+.u-type-warning-disabled {
+ color: $u-type-warning-disabled;
+}
+
+.u-type-success-disabled {
+ color: $u-type-success-disabled;
+}
+
+.u-type-error-disabled {
+ color: $u-type-error-disabled;
+}
+
+.u-type-info-disabled {
+ color: $u-type-info-disabled;
+}
+
+.u-type-primary {
+ color: $u-type-primary;
+}
+
+.u-type-warning {
+ color: $u-type-warning;
+}
+
+.u-type-success {
+ color: $u-type-success;
+}
+
+.u-type-error {
+ color: $u-type-error;
+}
+
+.u-type-info {
+ color: $u-type-info;
+}
+
+.u-type-primary-bg {
+ background-color: $u-type-primary;
+}
+
+.u-type-warning-bg {
+ background-color: $u-type-warning;
+}
+
+.u-type-success-bg {
+ background-color: $u-type-success;
+}
+
+.u-type-error-bg {
+ background-color: $u-type-error;
+}
+
+.u-type-info-bg {
+ background-color: $u-type-info;
+}
+
+.u-main-color {
+ color: $u-main-color;
+}
+
+.u-content-color {
+ color: $u-content-color;
+}
+
+.u-tips-color {
+ color: $u-tips-color;
+}
+
+.u-light-color {
+ color: $u-light-color;
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/common.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/common.scss"
new file mode 100644
index 0000000..0c5850d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/common.scss"
@@ -0,0 +1,171 @@
+.u-relative,
+.u-rela {
+ position: relative;
+}
+
+.u-absolute,
+.u-abso {
+ position: absolute;
+}
+
+// nvue涓嶈兘鐢ㄦ爣绛惧懡鍚嶆牱寮忥紝涓嶈兘鏀惧湪寰俊缁勪欢涓紝鍚﹀垯寰俊寮�鍙戝伐鍏蜂細鎶ヨ鍛婏紝鏃犳硶浣跨敤鏍囩鍚嶅綋鍋氶�夋嫨鍣�
+/* #ifndef APP-NVUE */
+image {
+ display: inline-block;
+}
+
+// 鍦╳eex锛屼篃鍗硁vue涓紝鎵�鏈夊厓绱犻粯璁や负border-box
+view,
+text {
+ box-sizing: border-box;
+}
+/* #endif */
+
+.u-font-xs {
+ font-size: 22rpx;
+}
+
+.u-font-sm {
+ font-size: 26rpx;
+}
+
+.u-font-md {
+ font-size: 28rpx;
+}
+
+.u-font-lg {
+ font-size: 30rpx;
+}
+
+.u-font-xl {
+ font-size: 34rpx;
+}
+
+.u-flex {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+}
+
+.u-flex-wrap {
+ flex-wrap: wrap;
+}
+
+.u-flex-nowrap {
+ flex-wrap: nowrap;
+}
+
+.u-col-center {
+ align-items: center;
+}
+
+.u-col-top {
+ align-items: flex-start;
+}
+
+.u-col-bottom {
+ align-items: flex-end;
+}
+
+.u-row-center {
+ justify-content: center;
+}
+
+.u-row-left {
+ justify-content: flex-start;
+}
+
+.u-row-right {
+ justify-content: flex-end;
+}
+
+.u-row-between {
+ justify-content: space-between;
+}
+
+.u-row-around {
+ justify-content: space-around;
+}
+
+.u-text-left {
+ text-align: left;
+}
+
+.u-text-center {
+ text-align: center;
+}
+
+.u-text-right {
+ text-align: right;
+}
+
+.u-flex-col {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: column;
+}
+
+// 瀹氫箟flex绛夊垎
+@for $i from 0 through 12 {
+ .u-flex-#{$i} {
+ flex: $i;
+ }
+}
+
+// 瀹氫箟瀛椾綋(px)鍗曚綅锛屽皬浜�20閮戒负px鍗曚綅瀛椾綋
+@for $i from 9 to 20 {
+ .u-font-#{$i} {
+ font-size: $i + px;
+ }
+}
+
+// 瀹氫箟瀛椾綋(rpx)鍗曚綅锛屽ぇ浜庢垨绛変簬20鐨勯兘涓簉px鍗曚綅瀛椾綋
+@for $i from 20 through 40 {
+ .u-font-#{$i} {
+ font-size: $i + rpx;
+ }
+}
+
+// 瀹氫箟鍐呭杈硅窛锛屽巻閬�1-80
+@for $i from 0 through 80 {
+ // 鍙鍙屾暟鍜岃兘琚�5闄ゅ敖鐨勬暟
+ @if $i % 2 == 0 or $i % 5 == 0 {
+ // 寰楀嚭锛歶-margin-30鎴栬�卽-m-30
+ .u-margin-#{$i}, .u-m-#{$i} {
+ margin: $i + rpx!important;
+ }
+
+ // 寰楀嚭锛歶-padding-30鎴栬�卽-p-30
+ .u-padding-#{$i}, .u-p-#{$i} {
+ padding: $i + rpx!important;
+ }
+
+ @each $short, $long in l left, t top, r right, b bottom {
+ // 缂╁啓鐗堬紝缁撴灉濡傦細 u-m-l-30
+ // 瀹氫箟澶栬竟璺�
+ .u-m-#{$short}-#{$i} {
+ margin-#{$long}: $i + rpx!important;
+ }
+
+ // 瀹氫箟鍐呰竟璺�
+ .u-p-#{$short}-#{$i} {
+ padding-#{$long}: $i + rpx!important;
+ }
+
+ // 瀹屾暣鐗堬紝缁撴灉濡傦細u-margin-left-30
+ // 瀹氫箟澶栬竟璺�
+ .u-margin-#{$long}-#{$i} {
+ margin-#{$long}: $i + rpx!important;
+ }
+
+ // 瀹氫箟鍐呰竟璺�
+ .u-padding-#{$long}-#{$i} {
+ padding-#{$long}: $i + rpx!important;
+ }
+ }
+ }
+}
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.components.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.components.scss"
new file mode 100644
index 0000000..9b69629
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.components.scss"
@@ -0,0 +1,3 @@
+.demo {
+
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.h5.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.h5.scss"
new file mode 100644
index 0000000..62839eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.h5.scss"
@@ -0,0 +1,8 @@
+/* H5鐨勬椂鍊欙紝闅愯棌婊氬姩鏉� */
+::-webkit-scrollbar {
+ display: none;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.mp.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.mp.scss"
new file mode 100644
index 0000000..42dc1e3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.mp.scss"
@@ -0,0 +1,47 @@
+/* start--寰俊灏忕▼搴忕紪璇戝悗椤甸潰鏈夌粍浠跺悕鐨勫厓绱狅紝鐗瑰埆澶勭悊--start */
+/* #ifdef MP-WEIXIN || MP-QQ */
+u-td, u-th {
+ flex: 1;
+ align-self: stretch;
+}
+
+.u-td {
+ height: 100%;
+}
+
+u-icon {
+ display: inline-flex;
+ align-items: center;
+}
+
+// 鍚勫灏忕▼搴忓鏍肩粍浠跺灞傝缃负100%锛岄伩鍏嶅彈鍒扮埗鍏冪礌display: flex;鐨勫奖鍝�
+u-grid {
+ width: 100%;
+ flex: 0 0 100%;
+}
+
+// 閬垮厤灏忕▼搴忕嚎鏉$粍浠跺洜涓虹埗缁勪欢display: flex;鑰屽け鏁�
+u-line {
+ flex: 1;
+}
+
+u-switch {
+ display: inline-flex;
+ align-items: center;
+}
+
+u-dropdown {
+ flex: 1;
+}
+/* #endif */
+/* end-寰俊灏忕▼搴忕紪璇戝悗椤甸潰鏈夌粍浠跺悕鐨勫厓绱狅紝鐗瑰埆澶勭悊--end */
+
+
+/* #ifdef MP-QQ */
+/* 闇�瑕佸仛杩欎竴鍒囬澶栫殑鍏煎锛岄兘鏄洜涓篢X鐨勬棤鑳� */
+u-icon {
+ line-height: 0;
+}
+/* #endif */
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.nvue.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.nvue.scss"
new file mode 100644
index 0000000..4a6192a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.nvue.scss"
@@ -0,0 +1,3 @@
+.nvue {
+ font-size: 24rpx;
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.vue.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.vue.scss"
new file mode 100644
index 0000000..cf97cf1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/libs/css/style.vue.scss"
@@ -0,0 +1,174 @@
+page {
+ color: $u-main-color;
+ font-size: 28rpx;
+}
+
+/* start--鍘婚櫎webkit鐨勯粯璁ゆ牱寮�--start */
+.u-fix-ios-appearance {
+ -webkit-appearance:none;
+}
+/* end--鍘婚櫎webkit鐨勯粯璁ゆ牱寮�--end */
+
+/* start--icon鍥炬爣澶栧眰濂椾竴涓獀iew锛岃鍏惰揪鍒版洿濂界殑鍨傜洿灞呬腑鐨勬晥鏋�--start */
+.u-icon-wrap {
+ display: flex;
+ align-items: center;
+}
+/* end-icon鍥炬爣澶栧眰濂椾竴涓獀iew锛岃鍏惰揪鍒版洿濂界殑鍨傜洿灞呬腑鐨勬晥鏋�--end */
+
+/* start--iPhoneX搴曢儴瀹夊叏鍖哄畾涔�--start */
+.safe-area-inset-bottom {
+ padding-bottom: 0;
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+/* end-iPhoneX搴曢儴瀹夊叏鍖哄畾涔�--end */
+
+/* start--鍚勭hover鐐瑰嚮鍙嶉鐩稿叧鐨勭被鍚�-start */
+.u-hover-class {
+ // background-color: #f7f8f9!important;
+ opacity: 0.6;
+}
+
+.u-cell-hover {
+ background-color: #f7f8f9!important;
+}
+/* end--鍚勭hover鐐瑰嚮鍙嶉鐩稿叧鐨勭被鍚�--end */
+
+/* start--鏂囨湰琛屾暟闄愬埗--start */
+.u-line-1 {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.u-line-2 {
+ -webkit-line-clamp: 2;
+}
+
+.u-line-3 {
+ -webkit-line-clamp: 3;
+}
+
+.u-line-4 {
+ -webkit-line-clamp: 4;
+}
+
+.u-line-5 {
+ -webkit-line-clamp: 5;
+}
+
+.u-line-2, .u-line-3, .u-line-4, .u-line-5 {
+ overflow: hidden;
+ word-break: break-all;
+ text-overflow: ellipsis;
+ display: -webkit-box; // 寮规�т几缂╃洅
+ -webkit-box-orient: vertical; // 璁剧疆浼哥缉鐩掑瓙鍏冪礌鎺掑垪鏂瑰紡
+}
+
+/* end--鏂囨湰琛屾暟闄愬埗--end */
+
+
+/* start--Retina 灞忓箷涓嬬殑 1px 杈规--start */
+.u-border,
+.u-border-bottom,
+.u-border-left,
+.u-border-right,
+.u-border-top,
+.u-border-top-bottom {
+ position: relative
+}
+
+.u-border-bottom:after,
+.u-border-left:after,
+.u-border-right:after,
+.u-border-top-bottom:after,
+.u-border-top:after,
+.u-border:after {
+ /* #ifndef APP-NVUE */
+ content: ' ';
+ /* #endif */
+ position: absolute;
+ left: 0;
+ top: 0;
+ pointer-events: none;
+ box-sizing: border-box;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ // 澶氬姞0.1%锛岃兘瑙e喅鏈夋椂鍊欒竟妗嗙己澶辩殑闂
+ width: 199.8%;
+ height: 199.7%;
+ transform: scale(0.5, 0.5);
+ border: 0 solid $u-border-color;
+ z-index: 2;
+}
+
+.u-border-top:after {
+ border-top-width: 1px
+}
+
+.u-border-left:after {
+ border-left-width: 1px
+}
+
+.u-border-right:after {
+ border-right-width: 1px
+}
+
+.u-border-bottom:after {
+ border-bottom-width: 1px
+}
+
+.u-border-top-bottom:after {
+ border-width: 1px 0
+}
+
+.u-border:after {
+ border-width: 1px
+}
+/* end--Retina 灞忓箷涓嬬殑 1px 杈规--end */
+
+
+/* start--clearfix--start */
+.u-clearfix:after,
+.clearfix:after {
+ /* #ifndef APP-NVUE */
+ content: '';
+ /* #endif */
+ display: table;
+ clear: both
+}
+/* end--clearfix--end */
+
+/* start--楂樻柉妯$硦tabbar搴曢儴澶勭悊--start */
+.u-blur-effect-inset {
+ width: 750rpx;
+ height: var(--window-bottom);
+ background-color: #FFFFFF;
+}
+/* end--楂樻柉妯$硦tabbar搴曢儴澶勭悊--end */
+
+/* start--鎻愬崌H5绔痷ni.toast()鐨勫眰绾э紝閬垮厤琚玼View鐨刴odal绛夐伄鐩�--start */
+/* #ifdef H5 */
+uni-toast {
+ z-index: 10090;
+}
+uni-toast .uni-toast {
+ z-index: 10090;
+}
+/* #endif */
+/* end--鎻愬崌H5绔痷ni.toast()鐨勫眰绾э紝閬垮厤琚玼View鐨刴odal绛夐伄鐩�--end */
+
+/* start--鍘婚櫎button鐨勬墍鏈夐粯璁ゆ牱寮�--start */
+.u-reset-button {
+ padding: 0;
+ font-size: inherit;
+ line-height: inherit;
+ background-color: transparent;
+ color: inherit;
+}
+
+.u-reset-button::after {
+ border: none;
+}
+/* end--鍘婚櫎button鐨勬墍鏈夐粯璁ゆ牱寮�--end */
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/theme.scss" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/theme.scss"
new file mode 100644
index 0000000..f3bb36d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/LDY_PDA/uview-ui/theme.scss"
@@ -0,0 +1,38 @@
+// 姝ゆ枃浠朵负uView鐨勪富棰樺彉閲忥紝杩欎簺鍙橀噺鐩墠鍙兘閫氳繃uni.scss寮曞叆鎵嶆湁鏁堬紝鍙﹀鐢变簬
+// uni.scss涓紩鍏ョ殑鏍峰紡浼氬悓鏃舵贩鍏ュ埌鍏ㄥ眬鏍峰紡鏂囦欢鍜屽崟鐙瘡涓�涓〉闈㈢殑鏍峰紡涓紝閫犳垚寰俊绋嬪簭鍖呭お澶э紝
+// 鏁卽ni.scss鍙缓璁斁scss鍙橀噺鍚嶇浉鍏虫牱寮忥紝鍏朵粬鐨勬牱寮忓彲浠ラ�氳繃main.js鎴栬�匒pp.vue寮曞叆
+
+$u-main-color: #303133;
+$u-content-color: #606266;
+$u-tips-color: #909399;
+$u-light-color: #c0c4cc;
+$u-border-color: #e4e7ed;
+$u-bg-color: #f3f4f6;
+
+$u-type-primary: #2979ff;
+$u-type-primary-light: #ecf5ff;
+$u-type-primary-disabled: #a0cfff;
+$u-type-primary-dark: #2b85e4;
+
+$u-type-warning: #ff9900;
+$u-type-warning-disabled: #fcbd71;
+$u-type-warning-dark: #f29100;
+$u-type-warning-light: #fdf6ec;
+
+$u-type-success: #19be6b;
+$u-type-success-disabled: #71d5a1;
+$u-type-success-dark: #18b566;
+$u-type-success-light: #dbf1e1;
+
+$u-type-error: #fa3534;
+$u-type-error-disabled: #fab6b6;
+$u-type-error-dark: #dd6161;
+$u-type-error-light: #fef0f0;
+
+$u-type-info: #909399;
+$u-type-info-disabled: #c8c9cc;
+$u-type-info-dark: #82848a;
+$u-type-info-light: #f4f4f5;
+
+$u-form-item-height: 70rpx;
+$u-form-item-border-color: #dcdfe6;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/.gitignore" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/.gitignore"
new file mode 100644
index 0000000..403adbc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/.gitignore"
@@ -0,0 +1,23 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/README.md" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/README.md"
new file mode 100644
index 0000000..1d81700
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/README.md"
@@ -0,0 +1,41 @@
+# vol.vue3
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Run your unit tests
+```
+npm run test:unit
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
+
+
+### npm run serve鍚姩寮傚父锛�
+ 浣跨敤cmd杈撳叆node -v鏌ョ湅鐗堟湰锛屽鏋滄槸18.+鐗堟湰,璇峰皢package.json涓浜旇scripts涓殑鍐呭鏇挎崲涓猴細
+
+"scripts": {
+ "serve": " SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
+ "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
+ "test:unit": "vue-cli-service test:unit",
+ "lint": "vue-cli-service lint"
+}
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/static/login_bg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/static/login_bg.png"
new file mode 100644
index 0000000..925a5da
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/static/login_bg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wcslogo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wcslogo.png"
new file mode 100644
index 0000000..2ef8e9b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wcslogo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wms_d.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wms_d.png"
new file mode 100644
index 0000000..1e198e9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/public/wms_d.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/App.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/App.vue"
new file mode 100644
index 0000000..1645abf
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/App.vue"
@@ -0,0 +1,63 @@
+<template>
+ <div id="nav"></div>
+ <el-config-provider :locale="locale">
+ <router-view />
+ </el-config-provider>
+</template>
+<script>
+import { ElConfigProvider } from "element-plus";
+import zhCn from "element-plus/lib/locale/lang/zh-cn";
+export default {
+ name: "vol_app",
+ components: {
+ [ElConfigProvider.name]: ElConfigProvider, //娣诲姞缁勪欢
+ },
+ data() {
+ return {
+ locale: zhCn,
+ };
+ },
+};
+</script>
+<style lang="stylus">
+#app {
+ font-family: Avenir, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ height: 100%;
+ width: 100%;
+}
+
+.el-alert--error.is-light {
+ border: 1px solid #ffe0e0;
+}
+
+.el-alert--error.is-light {
+ color: #f74444 !important;
+}
+
+.el-alert--warning.is-light {
+ border: 1px solid #ffe6c1;
+}
+
+.el-alert--info.is-light {
+ border: 1px solid #e6e5e5;
+}
+
+.el-alert--info .el-alert__description {
+ color: #6b6b6b !important;
+}
+
+.el-alert--warning.is-light {
+ background-color: #fdf6ec;
+ color: #d68409 !important;
+}
+
+.el-alert--success.is-light {
+ border: 1px solid #cdf7b8;
+}
+
+.el-alert--success.is-light .el-alert__description {
+ color: #3baf02 !important;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/css/common.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/css/common.less"
new file mode 100644
index 0000000..ac7a179
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/css/common.less"
@@ -0,0 +1,75 @@
+*{
+ box-sizing:border-box;
+ -moz-box-sizing:border-box; /* Firefox */
+ -webkit-box-sizing:border-box; /* Safari */
+}
+.el-pager li{
+ font-weight: 100;
+ margin-right: 9px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ min-width: 28px;
+}
+.el-pager li.active,.el-pager li:hover{
+ background: #ed4014;
+ color: white;
+}
+.el-pagination__editor.el-input .el-input__inner{
+ height: 23px;
+}
+
+
+.animated {
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ }
+
+ @media (print), (prefers-reduced-motion) {
+ .animated {
+ -webkit-animation: unset !important;
+ animation: unset !important;
+ -webkit-transition: none !important;
+ transition: none !important;
+ }
+ }
+
+ @-webkit-keyframes fadeInDown {
+ from {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ @keyframes fadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ .fadeInDown {
+ -webkit-animation-name: fadeInDown;
+ animation-name: fadeInDown;
+ }
+ .ivu-message{
+ z-index: 999999999 !important;
+ }
+ .ivu-form-item-content{
+ text-align: left;
+ }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.ttf" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.ttf"
new file mode 100644
index 0000000..91b74de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.ttf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.woff" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.woff"
new file mode 100644
index 0000000..02b9a25
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/element-icon/fonts/element-icons.woff"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error-img.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error-img.png"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error-img.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error.png"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/error.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/favicon.ico"
new file mode 100644
index 0000000..9215c89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/01.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/01.jpg"
new file mode 100644
index 0000000..e0b3351
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/01.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/02.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/02.jpg"
new file mode 100644
index 0000000..980d84c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/02.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/03.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/03.jpg"
new file mode 100644
index 0000000..60e1e4c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/03.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/04.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/04.jpg"
new file mode 100644
index 0000000..69a4fb9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/04.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/05.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/05.jpg"
new file mode 100644
index 0000000..324d403
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/05.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/06.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/06.jpg"
new file mode 100644
index 0000000..e7e56f7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/06.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/07.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/07.jpg"
new file mode 100644
index 0000000..00797c6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/h5/07.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/log.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/log.png"
new file mode 100644
index 0000000..8397330
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/log.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/logo.png"
new file mode 100644
index 0000000..165d86a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_logo.png"
new file mode 100644
index 0000000..bb7c9f9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_d.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_d.png"
new file mode 100644
index 0000000..1e198e9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_d.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_x.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_x.png"
new file mode 100644
index 0000000..a6a28ca
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/imgs/wms_x.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/logo.png"
new file mode 100644
index 0000000..f3d2503
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/assets/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLine.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLine.vue"
new file mode 100644
index 0000000..8824922
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLine.vue"
@@ -0,0 +1,84 @@
+<template>
+ <div class="Linebox" >
+ <div class="card">
+ <div class="card-header">
+ <div id="lines2">
+ <div class="card-body">{{ device.deviceName }}<br />
+ -{{ device.childDeviceCode }}-
+ </div>
+ </div>
+ </div>
+ <div class="card-body">
+ <ul class="list-group lis">
+ <li class="list-group-item list-group-item-dark">璇诲彇淇″彿</li>
+ <li class="list-group-item list-group-item-secondary">浠诲姟鍙凤細{{
+ device.data.command.taskNum }}</li>
+ <li class="list-group-item list-group-item-secondary">鎵樼洏鍙凤細{{
+ device.data.command.barcode }}</li>
+ <li class="list-group-item list-group-item-secondary">缁堢偣鍦板潃锛歿{
+ device.data.command.targetAddress }}</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[6])">鎵爜绔欏彴鍏ュ簱璇锋眰</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[4])">鍫嗗灈鏈哄嚭搴撶珯鍙拌姹�</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[2])">鍫嗗灈鏈哄叆搴撶珯鍙拌姹�</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[0])">绾夸綋鍑哄簱鍙h姹�</li>
+ </ul>
+ <ul class="list-group lis">
+ <li class="list-group-item list-group-item-dark">鍐欏叆淇″彿</li>
+ <li class="list-group-item list-group-item-secondary">浠诲姟鍙凤細{{
+ device.data.commandWrite.taskNum }}</li>
+ <li class="list-group-item list-group-item-secondary">鎵樼洏鍙凤細{{
+ device.data.commandWrite.barcode }}</li>
+ <li class="list-group-item list-group-item-secondary">缁堢偣鍦板潃锛歿{
+ device.data.commandWrite.targetAddress }}</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[7])">鎵爜绔欏彴鍏ュ簱璇锋眰</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[5])">鍫嗗灈鏈哄嚭搴撶珯鍙拌姹�</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[3])">鍫嗗灈鏈哄叆搴撶珯鍙拌姹�</li>
+ <li :class="getSignalClass(device.data.writeInteractiveSignal[1])">绾夸綋鍑哄簱鍙h姹�</li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { defineProps } from "vue";
+
+// 瀹氫箟缁勪欢灞炴��
+const props = defineProps({
+ device: {
+ type: Object,
+ required: true
+ }
+});
+
+// 鑾峰彇淇″彿绫诲悕
+const getSignalClass = (signal) => {
+ // console.log("馃殌 ~ getSignalClass ~ signal:", signal)
+ return signal !== true ? 'list-group-item list-group-item-danger' : 'list-group-item list-group-item-success';
+};
+</script>
+
+<style scoped>
+/* .Stackerbox{
+ width: 220px;
+ float: left;
+} */
+.Linebox{
+ width: 500px;
+ float: left;
+}
+.box1{
+ float: left;
+}
+.card-body{
+ text-align: center;
+ border-radius: 6% ;
+}
+.Stacker{
+ background-color: burlywood;
+}
+.lis{
+ float: left;
+ width: 233px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLineVo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLineVo.vue"
new file mode 100644
index 0000000..6419f9c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceLineVo.vue"
@@ -0,0 +1,67 @@
+<template>
+ <div class="Linebox">
+ <div class="card">
+ <div class="card-header">
+ <div id="lines2" >
+ <div class="card-body">{{device.deviceName}}<br/>
+ -{{ device.data.childDeviceCode }}-
+ </div>
+ </div>
+ </div>
+ <div class="card-body">
+ <ul class="list-group lis">
+ <li class="list-group-item list-group-item-dark">璇诲彇淇″彿</li>
+ <li class="list-group-item list-group-item-secondary">浠诲姟鍙凤細{{ device.data.commandAfter.conveyorLineTaskNum }}</li>
+ <li class="list-group-item list-group-item-secondary">鎵樼洏鍙凤細{{ device.data.commandAfter.conveyorLineBarcode }}</li>
+ <li class="list-group-item list-group-item-secondary">缁堢偣鍦板潃锛歿{ device.data.commandAfter.conveyorLineTargetAddress }}</li>
+ <li class="list-group-item list-group-item-secondary">鏄惁鏈夌洏锛歿{ device.data.commandAfter.hasPallet }}</li>
+ <li class="list-group-item list-group-item-secondary">鎶ヨ浠g爜锛歿{ device.data.commandAfter.conveyorLineAlarm }}</li>
+ <li class="list-group-item list-group-item-secondary">璇锋眰鍙嶉锛歿{ device.data.commandAfter.responState }}</li>
+ <li :class="device.data.commandAfter.interactiveSignal !=0 ? 'list-group-item list-group-item-success' :'list-group-item list-group-item-danger'">浜や簰淇″彿</li>
+ </ul>
+ </div>
+ </div>
+</div>
+</template>
+<script setup>
+import { defineProps } from "vue";
+
+// 瀹氫箟缁勪欢灞炴��
+const props = defineProps({
+ device: {
+ type: Object,
+ required: true
+ }
+});
+
+// 鑾峰彇淇″彿绫诲悕
+const getSignalClass = (signal) => {
+ // console.log("馃殌 ~ getSignalClass ~ signal:", signal)
+ return signal !== true ? 'list-group-item list-group-item-danger' : 'list-group-item list-group-item-success';
+};
+</script>
+
+<style scoped>
+.Stackerbox {
+ width: 220px;
+ float: left;
+}
+.Linebox {
+ width: 300px;
+ float: left;
+}
+.box1 {
+ float: left;
+}
+.card-body {
+ text-align: center;
+ border-radius: 6%;
+}
+.Stacker {
+ background-color: burlywood;
+}
+.lis {
+ float: left;
+ width: 266px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceStacker.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceStacker.vue"
new file mode 100644
index 0000000..e519d9c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/DeviceStacker.vue"
@@ -0,0 +1,57 @@
+<template>
+ <div class="Stackerbox">
+ <div class="card">
+ <div class="card-header">
+ <div>
+ <div class="card-body Stacker">
+ {{ Stacker.deviceName }}
+ </div>
+ </div>
+ </div>
+ <div class="card-body">
+ <ul class="list-group">
+ <li class="list-group-item list-group-item-secondary">
+ 浠诲姟鍙凤細{{ Stacker.data.currentTaskNum || '鏆傛棤浠诲姟鍙�' }}
+ </li>
+ <li :class="getStatusClass(Stacker.data.stackerCraneAutoStatusDes)">
+ 宸ヤ綔妯″紡锛歿{ Stacker.data.stackerCraneAutoStatusDes }}
+ </li>
+ <li :class="getStatusClass(Stacker.data.stackerCraneStatusDes)">
+ 璁惧鐘舵�侊細{{ Stacker.data.stackerCraneStatusDes }}
+ </li>
+ <li :class="getStatusClass(Stacker.data.stackerCraneWorkStatusDes)">
+ 宸ヤ綔鐘舵�侊細{{ Stacker.data.stackerCraneWorkStatusDes }}
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { defineProps } from "vue";
+
+// 瀹氫箟缁勪欢灞炴��
+const props = defineProps({
+ Stacker: {
+ type: Object,
+ required: true
+ }
+});
+
+// 鑾峰彇鐘舵�佺被鍚嶏紙浼樺寲鐘舵�佸垽鏂級
+const getStatusClass = (status) => {
+ if (status === '姝e父' || status === '鑷姩' || status === '寰呮満') {
+ return 'list-group-item list-group-item-success';
+ }
+ if (status === '鏁呴殰' || status === '鍋滄満') {
+ return 'list-group-item list-group-item-danger';
+ }
+ return 'list-group-item list-group-item-warning'; // 榛樿璀﹀憡鐘舵��
+};
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/AsyncLoading.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/AsyncLoading.vue"
new file mode 100644
index 0000000..1ccf5c7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/AsyncLoading.vue"
@@ -0,0 +1,10 @@
+<template>
+ <div style="text-align: center;font-size: 16px;padding: 20px;">姝e湪鍔犺浇璧勬簮...</div>
+</template>
+<script>
+export default {
+ created() {
+ // console.log('loading')
+ }
+};
+</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Audit.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Audit.vue"
new file mode 100644
index 0000000..431d6c5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Audit.vue"
@@ -0,0 +1,59 @@
+<template>
+ <el-alert
+ :title="'褰撳墠閫変腑' + auditParam.rows + '鏉¤褰曞緟瀹℃牳..'"
+ type="success"
+ :closable="false"
+ >
+ </el-alert>
+ <div class="item">
+ <label>瀹℃牳缁撴灉锛�</label>
+ <el-radio-group v-model="auditParam.status">
+ <el-radio
+ v-for="item in auditParam.data"
+ :key="item.status"
+ :label="item.status"
+ >
+ <span>{{ item.text }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+ <div class="item">
+ <label style="margin-right: 13px;">澶� 娉細</label>
+ <el-input
+ v-model="auditParam.reason"
+ type="textarea"
+ style="margin-right: 13px;"
+ :autosize="{ minRows: 4, maxRows: 10 }"
+ placeholder="瀹℃牳澶囨敞..."
+ ></el-input>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ auditParam: {
+ type: Object,
+ default: () => {
+ return {
+ auditParam: {
+ rows: 0,
+ model: false,
+ status: -1,
+ reason: "",
+ data: [], //[{ text: "閫氳繃", status: 1 }, { text: "鎷掔粷", status: 2 }]
+ },
+ };
+ },
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+.item{
+ margin-top: 20px;
+ display: flex;
+ > label{
+ width: 86px;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Empty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Empty.vue"
new file mode 100644
index 0000000..e5e6a79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Empty.vue"
@@ -0,0 +1,3 @@
+<template>
+ <div></div>
+</template>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ErrorMsg.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ErrorMsg.vue"
new file mode 100644
index 0000000..3885ed5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ErrorMsg.vue"
@@ -0,0 +1,3 @@
+<template>
+ <div id="test"></div>
+</template>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Icons.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Icons.vue"
new file mode 100644
index 0000000..afd4250
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/Icons.vue"
@@ -0,0 +1,345 @@
+<template>
+ <div data-v-394040b0 class="icons">
+ <div
+ @click="select(index)"
+ v-for="(item, index) in icons"
+ :key="index"
+ class="icons-item"
+ >
+ <i
+ :class="[item, selectIndex == index ? 'active' : '']"
+ style="font-size: 32px"
+ ></i>
+ <p>{{ item }}</p>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ onSelect: {
+ type: Function,
+ default: () => {
+ return "";
+ },
+ },
+ },
+ methods: {
+ select(index) {
+ this.selectIndex = index;
+ this.onSelect(index < 0 ? "" : this.icons[index]);
+ },
+ },
+ data() {
+ return {
+ selectIndex: -1,
+ icons: [
+ //ivu-icon ivu-icon-ios-add
+ "el-icon-platform-eleme",
+ "el-icon-eleme",
+ "el-icon-delete-solid",
+ "el-icon-delete",
+ "el-icon-s-tools",
+ "el-icon-setting",
+ "el-icon-user-solid",
+ "el-icon-user",
+ "el-icon-phone",
+ "el-icon-phone-outline",
+ "el-icon-more",
+ "el-icon-more-outline",
+ "el-icon-star-on",
+ "el-icon-star-off",
+ "el-icon-s-goods",
+ "el-icon-goods",
+ "el-icon-warning",
+ "el-icon-warning-outline",
+ "el-icon-question",
+ "el-icon-info",
+ "el-icon-remove",
+ "el-icon-circle-plus",
+ "el-icon-success",
+ "el-icon-error",
+ "el-icon-zoom-in",
+ "el-icon-zoom-out",
+ "el-icon-remove-outline",
+ "el-icon-circle-plus-outline",
+ "el-icon-circle-check",
+ "el-icon-circle-close",
+ "el-icon-s-help",
+ "el-icon-help",
+ "el-icon-minus",
+ "el-icon-plus",
+ "el-icon-check",
+ "el-icon-close",
+ "el-icon-picture",
+ "el-icon-picture-outline",
+ "el-icon-picture-outline-round",
+ "el-icon-upload",
+ "el-icon-upload2",
+ "el-icon-download",
+ "el-icon-camera-solid",
+ "el-icon-camera",
+ "el-icon-video-camera-solid",
+ "el-icon-video-camera",
+ "el-icon-message-solid",
+ "el-icon-bell",
+ "el-icon-s-cooperation",
+ "el-icon-s-order",
+ "el-icon-s-platform",
+ "el-icon-s-fold",
+ "el-icon-s-unfold",
+ "el-icon-s-operation",
+ "el-icon-s-promotion",
+ "el-icon-s-home",
+ "el-icon-s-release",
+ "el-icon-s-ticket",
+ "el-icon-s-management",
+ "el-icon-s-open",
+ "el-icon-s-shop",
+ "el-icon-s-marketing",
+ "el-icon-s-flag",
+ "el-icon-s-comment",
+ "el-icon-s-finance",
+ "el-icon-s-claim",
+ "el-icon-s-custom",
+ "el-icon-s-opportunity",
+ "el-icon-s-data",
+ "el-icon-s-check",
+ "el-icon-s-grid",
+ "el-icon-menu",
+ "el-icon-share",
+ "el-icon-d-caret",
+ "el-icon-caret-left",
+ "el-icon-caret-right",
+ "el-icon-caret-bottom",
+ "el-icon-caret-top",
+ "el-icon-bottom-left",
+ "el-icon-bottom-right",
+ "el-icon-back",
+ "el-icon-right",
+ "el-icon-bottom",
+ "el-icon-top",
+ "el-icon-top-left",
+ "el-icon-top-right",
+ "el-icon-arrow-left",
+ "el-icon-arrow-right",
+ "el-icon-arrow-down",
+ "el-icon-arrow-up",
+ "el-icon-d-arrow-left",
+ "el-icon-d-arrow-right",
+ "el-icon-video-pause",
+ "el-icon-video-play",
+ "el-icon-refresh",
+ "el-icon-refresh-right",
+ "el-icon-refresh-left",
+ "el-icon-finished",
+ "el-icon-sort",
+ "el-icon-sort-up",
+ "el-icon-sort-down",
+ "el-icon-rank",
+ "el-icon-loading",
+ "el-icon-view",
+ "el-icon-c-scale-to-original",
+ "el-icon-date",
+ "el-icon-edit",
+ "el-icon-edit-outline",
+ "el-icon-folder",
+ "el-icon-folder-opened",
+ "el-icon-folder-add",
+ "el-icon-folder-remove",
+ "el-icon-folder-delete",
+ "el-icon-folder-checked",
+ "el-icon-tickets",
+ "el-icon-document-remove",
+ "el-icon-document-delete",
+ "el-icon-document-copy",
+ "el-icon-document-checked",
+ "el-icon-document",
+ "el-icon-document-add",
+ "el-icon-printer",
+ "el-icon-paperclip",
+ "el-icon-takeaway-box",
+ "el-icon-search",
+ "el-icon-monitor",
+ "el-icon-attract",
+ "el-icon-mobile",
+ "el-icon-scissors",
+ "el-icon-umbrella",
+ "el-icon-headset",
+ "el-icon-brush",
+ "el-icon-mouse",
+ "el-icon-coordinate",
+ "el-icon-magic-stick",
+ "el-icon-reading",
+ "el-icon-data-line",
+ "el-icon-data-board",
+ "el-icon-pie-chart",
+ "el-icon-data-analysis",
+ "el-icon-collection-tag",
+ "el-icon-film",
+ "el-icon-suitcase",
+ "el-icon-suitcase-1",
+ "el-icon-receiving",
+ "el-icon-collection",
+ "el-icon-files",
+ "el-icon-notebook-1",
+ "el-icon-notebook-2",
+ "el-icon-toilet-paper",
+ "el-icon-office-building",
+ "el-icon-school",
+ "el-icon-table-lamp",
+ "el-icon-house",
+ "el-icon-no-smoking",
+ "el-icon-smoking",
+ "el-icon-shopping-cart-full",
+ "el-icon-shopping-cart-1",
+ "el-icon-shopping-cart-2",
+ "el-icon-shopping-bag-1",
+ "el-icon-shopping-bag-2",
+ "el-icon-sold-out",
+ "el-icon-sell",
+ "el-icon-present",
+ "el-icon-box",
+ "el-icon-bank-card",
+ "el-icon-money",
+ "el-icon-coin",
+ "el-icon-wallet",
+ "el-icon-discount",
+ "el-icon-price-tag",
+ "el-icon-news",
+ "el-icon-guide",
+ "el-icon-male",
+ "el-icon-female",
+ "el-icon-thumb",
+ "el-icon-cpu",
+ "el-icon-link",
+ "el-icon-connection",
+ "el-icon-open",
+ "el-icon-turn-off",
+ "el-icon-set-up",
+ "el-icon-chat-round",
+ "el-icon-chat-line-round",
+ "el-icon-chat-square",
+ "el-icon-chat-dot-round",
+ "el-icon-chat-dot-square",
+ "el-icon-chat-line-square",
+ "el-icon-message",
+ "el-icon-postcard",
+ "el-icon-position",
+ "el-icon-turn-off-microphone",
+ "el-icon-microphone",
+ "el-icon-close-notification",
+ "el-icon-bangzhu",
+ "el-icon-time",
+ "el-icon-odometer",
+ "el-icon-crop",
+ "el-icon-aim",
+ "el-icon-switch-button",
+ "el-icon-full-screen",
+ "el-icon-copy-document",
+ "el-icon-mic",
+ "el-icon-stopwatch",
+ "el-icon-medal-1",
+ "el-icon-medal",
+ "el-icon-trophy",
+ "el-icon-trophy-1",
+ "el-icon-first-aid-kit",
+ "el-icon-discover",
+ "el-icon-place",
+ "el-icon-location",
+ "el-icon-location-outline",
+ "el-icon-location-information",
+ "el-icon-add-location",
+ "el-icon-delete-location",
+ "el-icon-map-location",
+ "el-icon-alarm-clock",
+ "el-icon-timer",
+ "el-icon-watch-1",
+ "el-icon-watch",
+ "el-icon-lock",
+ "el-icon-unlock",
+ "el-icon-key",
+ "el-icon-service",
+ "el-icon-mobile-phone",
+ "el-icon-bicycle",
+ "el-icon-truck",
+ "el-icon-ship",
+ "el-icon-basketball",
+ "el-icon-football",
+ "el-icon-soccer",
+ "el-icon-baseball",
+ "el-icon-wind-power",
+ "el-icon-light-rain",
+ "el-icon-lightning",
+ "el-icon-heavy-rain",
+ "el-icon-sunrise",
+ "el-icon-sunrise-1",
+ "el-icon-sunset",
+ "el-icon-sunny",
+ "el-icon-cloudy",
+ "el-icon-partly-cloudy",
+ "el-icon-cloudy-and-sunny",
+ "el-icon-moon",
+ "el-icon-moon-night",
+ "el-icon-dish",
+ "el-icon-dish-1",
+ "el-icon-food",
+ "el-icon-chicken",
+ "el-icon-fork-spoon",
+ "el-icon-knife-fork",
+ "el-icon-burger",
+ "el-icon-tableware",
+ "el-icon-sugar",
+ "el-icon-dessert",
+ "el-icon-ice-cream",
+ "el-icon-hot-water",
+ "el-icon-water-cup",
+ "el-icon-coffee-cup",
+ "el-icon-cold-drink",
+ "el-icon-goblet",
+ "el-icon-goblet-full",
+ "el-icon-goblet-square",
+ "el-icon-goblet-square-full",
+ "el-icon-refrigerator",
+ "el-icon-grape",
+ "el-icon-watermelon",
+ "el-icon-cherry",
+ "el-icon-apple",
+ "el-icon-pear",
+ "el-icon-orange",
+ "el-icon-coffee",
+ "el-icon-ice-tea",
+ "el-icon-ice-drink",
+ "el-icon-milk-tea",
+ "el-icon-potato-strips",
+ "el-icon-lollipop",
+ "el-icon-ice-cream-square",
+ "el-icon-ice-cream-round",
+ ],
+ };
+ },
+};
+</script>
+
+
+<style lang="less" scoped>
+.icons-item {
+ float: left;
+ margin: 6px 6px 6px 0;
+ width: 115px;
+ text-align: center;
+ list-style: none;
+ cursor: pointer;
+ height: 100px;
+ color: #5c6b77;
+ transition: all 0.2s ease;
+ position: relative;
+ padding-top: 10px;
+}
+.active {
+ border: 1px solid;
+ background: #f44336;
+ color: white;
+ font-size: 32px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/QuickSearch.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/QuickSearch.vue"
new file mode 100644
index 0000000..185cbf2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/QuickSearch.vue"
@@ -0,0 +1,152 @@
+<template>
+ <div>
+ <el-select
+ style="width: 150px"
+ v-if="['select', 'selectList'].indexOf(singleSearch.type) != -1"
+ v-model="searchFormFields[singleSearch.field]"
+ :filterable="
+ singleSearch.filter || singleSearch.data.length > 10 ? true : false
+ "
+ :placeholder="'璇烽�夋嫨' + singleSearch.title"
+ clearable
+ >
+ <el-option
+ v-for="item in singleSearch.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ <div
+ class="date-range"
+ v-else-if="['date', 'datetime'].indexOf(singleSearch.type) != -1"
+ >
+ <el-date-picker
+ style="width: 210px"
+ :clearable="false"
+ unlink-panels
+ v-model="searchFormFields[singleSearch.field]"
+ type="daterange"
+ :value-format="getDateFormat(singleSearch)"
+ :placeholder="singleSearch.title"
+ >
+ </el-date-picker>
+ <i
+ class="el-icon-circle-close"
+ @click="dateRangeClear(singleSearch.field)"
+ ></i>
+ </div>
+ <el-cascader
+ style="width: 210px"
+ clearable
+ v-model="searchFormFields[singleSearch.field]"
+ v-else-if="singleSearch.type == 'cascader'"
+ :options="singleSearch.data"
+ :props="{ checkStrictly: true }"
+ >
+ </el-cascader>
+ <el-input
+ clearable
+ v-else
+ style="width: 150px"
+ size="default"
+ v-model="searchFormFields[singleSearch.field]"
+ :placeholder="singleSearch.title"
+ @keypress="tiggerPress"
+ />
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ singleSearch: {
+ type: Object,
+ default: {},
+ },
+ searchFormFields: {
+ type: Object,
+ default: () => {
+ return {};
+ },
+ },
+ tiggerPress: {
+ type: Function,
+ default: () => {},
+ },
+ },
+ methods: {
+ compareDate(date1, date2) {
+ if (!date2) {
+ return true;
+ }
+ return (
+ date1.valueOf() <
+ (typeof date2 == "number" ? date2 : new Date(date2).valueOf())
+ );
+ },
+ getDateFormat(item) {
+ //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+ return item.type == "date" ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss";
+ },
+ getDateOptions(date, item) {
+ if ((!item.min && !item.max) || !date) {
+ return false;
+ }
+ if (item.min && item.min.indexOf(" ") == -1) {
+ //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+ item.min = item.min + " 00:00:000";
+ }
+ return (
+ this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+ );
+ },
+ dateRangeClear(field) {
+ this.searchFormFields[field]=[undefined,undefined];
+ },
+ },
+ created() {
+ this.singleSearch.dateType = this.singleSearch.type + "range";
+ if (
+ this.singleSearch.type == "date" ||
+ this.singleSearch.type == "datetime"
+ ) {
+ var _dateVal = this.searchFormFields[this.singleSearch.field];
+ if (
+ typeof this.singleSearch.range == "boolean" &&
+ !this.singleSearch.range
+ ) {
+ this.searchFormFields[this.singleSearch.field] = "";
+ this.singleSearch.dateType = this.singleSearch.type;
+ return this.singleSearch.dateType;
+ } else if (!(_dateVal instanceof Array)) {
+ this.searchFormFields[this.singleSearch.field] = ["", ""];
+ } else if (_dateVal.length != 2) {
+ _dateVal.splice(0);
+ _dateVal.push(...["", ""]);
+ }
+ }
+ },
+};
+</script>
+<style lang="less" scoped>
+.date-range{
+ position: relative;
+ > i{
+ display: none;
+ height: 27px;
+ line-height: 27px;
+ right: 1px;
+ top: 3px;
+ font-size: 13px;
+ color: #b4adad;
+ position: absolute;
+ padding: 0 6px 0 3px;
+ background: #ffff;
+ cursor: pointer;
+ }
+}
+.date-range:hover > i{
+ display: inline-block;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/RouterLoading.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/RouterLoading.vue"
new file mode 100644
index 0000000..134a454
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/RouterLoading.vue"
@@ -0,0 +1,105 @@
+<template>
+ <div class="router-loading" style="background: #eeeeee5c;">
+ <div class="spanner">
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {};
+ }
+};
+</script>
+<style scoped>
+.router-loading {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ font-size: 100px;
+ text-align: center;
+ padding-top: 200px;
+ color: #808080;
+ z-index: 9999;
+}
+.spanner {
+ width: 100px;
+ height: 100px;
+ position: relative;
+ margin: 0 auto;
+}
+.router-loading span {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #66b1ff;
+ position: absolute;
+ animation: r_load 1.04s ease infinite;
+}
+@keyframes r_load {
+ 0% {
+ transform: scale(1.2);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.3);
+ opacity: 0.5;
+ }
+}
+.router-loading span:nth-child(1) {
+ left: 0;
+ top: 50%;
+ margin-top: -10px;
+ animation-delay: 0.13s;
+}
+.router-loading span:nth-child(2) {
+ left: 14px;
+ top: 14px;
+ animation-delay: 0.26s;
+}
+.router-loading span:nth-child(3) {
+ left: 50%;
+ top: 0;
+ margin-left: -10px;
+ animation-delay: 0.39s;
+}
+.router-loading span:nth-child(4) {
+ top: 14px;
+ right: 14px;
+ animation-delay: 0.52s;
+}
+.router-loading span:nth-child(5) {
+ right: 0;
+ top: 50%;
+ margin-top: -10px;
+ animation-delay: 0.65s;
+}
+.router-loading span:nth-child(6) {
+ right: 14px;
+ bottom: 14px;
+ animation-delay: 0.78s;
+}
+.router-loading span:nth-child(7) {
+ bottom: 0;
+ left: 50%;
+ margin-left: -10px;
+ animation-delay: 0.91s;
+}
+.router-loading span:nth-child(8) {
+ bottom: 14px;
+ left: 14px;
+ animation-delay: 1.04s;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/UploadExcel.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/UploadExcel.vue"
new file mode 100644
index 0000000..230fdad
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/UploadExcel.vue"
@@ -0,0 +1,221 @@
+<template>
+ <div class="upload-container">
+ <a :href="template.url" ref="template"></a>
+ <div class="button-group">
+ <el-upload
+ style="float: left"
+ ref="uploadFile"
+ :max-size="maxSize"
+ :on-change="clearMsg"
+ :before-upload="beforeUpload"
+ :action="url"
+ >
+ <el-button size="small"
+ ><i class="el-icon-folder-opened"></i>閫夋嫨鏂囦欢</el-button
+ >
+ </el-upload>
+ <el-button
+ v-if="template.url"
+ style="margin-left: 10px"
+ type="primary"
+ size="small"
+ @click="dowloadTemplate"
+ :loading="loadingStatus"
+ >
+ <i class="el-icon-bottom"></i>
+ 涓嬭浇妯℃澘</el-button
+ >
+ <el-button
+ type="success"
+ size="small"
+ @click="upload"
+ :loading="loadingStatus"
+ >
+ <i class="el-icon-top"></i>
+ 涓婁紶鏂囦欢</el-button
+ >
+ </div>
+ <div class="alert">
+ <el-alert title="涓婁紶璇存槑" type="warning" :closable="false" show-icon
+ >鍙兘涓婁紶excel鏂囦欢,鏂囦欢澶у皬涓嶈秴杩噞{ maxSize }}M</el-alert
+ >
+ </div>
+
+ <div v-if="file">
+ <h3>鏂囦欢鍒楄〃</h3>
+ <div class="file-info">
+ <span>鏂囦欢鍚嶏細{{ file.name }}</span>
+ <span>澶у皬{{ (file.size / 1024).toFixed(2) }}KB</span>
+ </div>
+ </div>
+ <div v-show="message" class="v-r-message">
+ <h3 class="title">涓婁紶缁撴灉</h3>
+ <div class="text" :class="resultClass" v-html="message"></div>
+ </div>
+ <slot></slot>
+ </div>
+</template>
+<script>
+//鐩墠鍙敮鎸佸崟涓狤xcel涓婁紶锛屽叾浠栧姛鑳藉紑鍙戜腑...
+export default {
+ components: {},
+ props: {
+ url: {
+ type: String,
+ default: ''
+ },
+ template: {
+ //涓嬭浇妯℃澘閰嶇疆
+ type: Object,
+ default: () => {
+ return {
+ url: '', //妯℃澘涓嬭浇璺緞锛屽鏋滄病鏈夋ā鏉胯矾寰勶紝鍒欎笉鏄剧ず涓嬭浇妯℃澘鍔熻兘
+ fileName: '鏈畾涔夋枃浠跺悕' //涓嬭浇妯℃澘鐨勬枃浠跺悕
+ };
+ }
+ },
+ importExcelBefore: {
+ type: Function,
+ default: (file) => {
+ return true;
+ }
+ }
+ },
+ data() {
+ return {
+ maxSize: 100,
+ model: true,
+ file: null,
+ loadingStatus: false,
+ message: '',
+ resultClass: ''
+ };
+ },
+ methods: {
+ clearMsg() {
+ this.message = '';
+ },
+ reset() {
+ this.file = null;
+ this.message = '';
+ this.resultClass = '';
+ },
+ getFileType() {
+ let fileName =
+ this.file.name
+ .split('.')
+ .pop()
+ .toLocaleLowerCase() || '';
+ if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(fileName) == -1) {
+ this.$Message.error('鍙兘閫夋嫨excel鏂囦欢');
+ return false;
+ }
+ return true;
+ },
+ beforeUpload(file) {
+ this.file = file;
+ if (!this.getFileType()) {
+ return false;
+ }
+ return false;
+ },
+ upload() {
+ let _url = this.url;
+ if (!_url) {
+ return this.$Message.error('娌℃湁閰嶇疆濂経rl');
+ }
+
+ if (!this.file) {
+ return this.$Message.error('璇烽�夋嫨鏂囦欢');
+ }
+ var formData = new FormData();
+ formData.append('fileInput', this.file);
+ if (!this.importExcelBefore(formData)) {
+ return;
+ }
+ this.loadingStatus = true;
+ this.http.post(_url, formData).then(
+ (x) => {
+ // this.$refs.uploadFile.clearFiles();
+ this.loadingStatus = false;
+ this.file = null;
+ if (x.status) {
+ this.$emit('importExcelAfter', x);
+ }
+
+ this.message = x.message;
+ this.resultClass = x.status ? 'v-r-success' : 'v-r-error';
+ },
+ (error) => {
+ this.loadingStatus = false;
+ }
+ );
+ },
+ dowloadTemplate() {
+ let url = this.template.url;
+ let xmlResquest = new XMLHttpRequest();
+ xmlResquest.open('GET', url, true);
+ xmlResquest.setRequestHeader('Content-type', 'application/json');
+ xmlResquest.setRequestHeader(
+ 'Authorization',
+ this.$store.getters.getToken()
+ );
+ let fileName = this.template.fileName + '.xlsx';
+ let elink = this.$refs.template;
+ xmlResquest.responseType = 'blob';
+ let $_vue = this;
+ this.loadingStatus = true;
+ xmlResquest.onload = function(oEvent) {
+ $_vue.loadingStatus = false;
+ if (xmlResquest.response.type == 'application/json') {
+ return $_vue.message.error('鏈壘鍒颁笅杞芥枃浠�');
+ }
+ let content = xmlResquest.response;
+ elink.download = fileName;
+ let blob = new Blob([content]);
+ elink.href = URL.createObjectURL(blob);
+ elink.click();
+ };
+ xmlResquest.send();
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.upload-container {
+ min-height: 270px !important;
+ display: inline-block;
+ width: 100%;
+ padding: 10px;
+ border: 1px dashed #989898;
+ min-height: 250px;
+ border-radius: 5px;
+ .alert {
+ margin-top: 12px;
+ }
+ .el-button-group > * {
+ display: flex;
+ }
+ h3 {
+ margin: 9px 0px;
+ }
+ .file-info > span {
+ margin-right: 20px;
+ }
+ .v-r-message {
+ margin-top: 10px;
+ .title {
+ margin-bottom: 2px;
+ }
+ > .text {
+ font-size: 13px;
+ }
+ .v-r-success {
+ color: #02b702;
+ }
+ .v-r-error {
+ color: #dc0909;
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/AuditHis.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/AuditHis.vue"
new file mode 100644
index 0000000..d1fcb48
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/AuditHis.vue"
@@ -0,0 +1,46 @@
+<template>
+ <vol-table
+ :tableData="tableData"
+ :columns="columns"
+ :height="411"
+ :pagination-hide="true"
+ :load-key="false"
+ :text-inline="false"
+ :ck="false"
+ ></vol-table>
+</template>
+<script>
+import VolTable from '@/components/basic/VolTable.vue';
+import {
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance
+} from 'vue';
+export default defineComponent({
+ components: {
+ VolTable
+ },
+ props: {
+ tableData: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ setup() {
+ const columns = reactive([
+ { title: '鑺傜偣', field: 'stepName' },
+ { title: '瀹℃壒浜�', field: 'auditor' },
+ { title: '瀹℃壒缁撴灉', field: 'auditStatus' },
+ { title: '瀹℃壒鏃堕棿', field: 'auditDate',width:150 },
+ { title: '澶囨敞', field: 'remark' }
+ ]);
+ return {
+ columns
+ }
+ }
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.less"
new file mode 100644
index 0000000..adc13c3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.less"
@@ -0,0 +1,178 @@
+.view-container {
+ // padding: 15px;
+ background: white;
+ .grid-search {
+ padding-top: 15px;
+ //padding: 15px 15px 0 15px;
+ }
+ .grid-container,
+ .grid-body {
+ padding: 0 15px;
+ }
+ .view-header {
+ padding-left: 15px;
+ padding-right: 15px;
+ }
+ .fs-line {
+ height: 9px;
+ background: #f1f1f1;
+ margin-top: -10px;
+ margin-bottom: 10px;
+ }
+}
+.view-header {
+ height: 45px;
+ position: relative;
+ padding-bottom: 11px;
+ display: flex;
+ .search-line {
+ min-width: 150px;
+ }
+ .search-line > div {
+ margin-left: 5px;
+ margin-right: 10px;
+ }
+ .search-line > div > div {
+ width: 200px;
+ text-align: left;
+ }
+ .search-line > div:first-child {
+ flex: 1;
+ }
+ .search-line > div .ivu-select-dropdown {
+ max-height: 300px;
+ }
+ .btn-group {
+ white-space: nowrap;
+ button {
+ margin-left: 10px;
+ // padding: 5px 16px;
+ }
+ }
+ .btn-group .ivu-dropdown-item {
+ text-align: left !important;
+ }
+ .btn-group .ivu-dropdown-item:not(:last-child) {
+ border-bottom: 1px dotted #eee;
+ }
+ .desc-text {
+ margin-top: 5px;
+ font-weight: bold;
+ margin-bottom: 3px;
+ font-size: 14px;
+ color: #313131;
+ white-space: nowrap;
+ border-bottom: 2px solid #646565;
+ i {
+ font-size: 16px;
+ position: relative;
+ top: 1px;
+ margin-right: 2px;
+ }
+ }
+ .search-box {
+ background: #fefefe;
+ margin-top: 45px;
+ border: 1px solid #ececec;
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ right: 0;
+ padding: 25px 40px;
+ padding-bottom: 0;
+ box-shadow: 0px 7px 18px -12px #bdc0bb;
+ }
+ .notice {
+ font-size: 13px;
+ color: #6b6b6b;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ position: relative;
+ top: 12px;
+ flex: 1;
+ left: 10px;
+ margin-right: 20px;
+ }
+}
+
+.table-info-cell-title {
+ background-color: #f5f5f5 !important;
+}
+.box-com {
+ > div.item {
+ // margin-bottom: 10px;
+ padding: 15px 17px 0 8px;
+ margin-bottom: 12px;
+ background: white;
+ }
+ > div.form-item {
+ padding: 19px 16px 0px 5px;
+ //box-shadow: 0 1px 7px rgb(199, 199, 199);
+ }
+ > div.table-item {
+ padding: 0 10px;
+ border-top: 1.5px solid #eaeaea;
+ }
+ .v-text {
+ line-height: 27px;
+ }
+ .form-text {
+ position: relative;
+ border-bottom: 1px solid #eee;
+ font-size: 14px;
+ margin-bottom: 14px;
+ }
+}
+
+.form-closex {
+ text-align: right;
+ padding-bottom: 24px;
+}
+.form-closex button {
+ margin-left: 10px;
+ padding: 4px 13px;
+}
+.toolbar {
+ padding: 3px 0px;
+ width: 100%;
+ display: flex;
+ .title {
+ line-height: 29px;
+ border-bottom: none;
+ font-size: 13px;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ .icon {
+ color: #009688;
+ font-size: 18px;
+ }
+
+ i {
+ line-height: 29px;
+ border-bottom: none;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ position: relative;
+ margin-top: -4px;
+ font-size: 14px;
+ }
+ }
+ .btns {
+ line-height: 28px;
+ flex: 1;
+ text-align: right;
+ button {
+ // border: none;
+ // margin-left:15px;
+ border: 0px;
+ padding: 0px 9px;
+ color: #292929;
+ }
+ button:hover{
+ color: #0089f6;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.vue"
new file mode 100644
index 0000000..e4bbcd3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGrid.vue"
@@ -0,0 +1,806 @@
+<template>
+ <div class="layout-container">
+ <a :href="exportHref" ref="export"></a>
+ <!--寮�鍚噿鍔犺浇2020.12.06 -->
+ <vol-box
+ :on-model-close="closeCustomModel"
+ v-model="viewModel"
+ :height="520"
+ :width="500"
+ :padding="0"
+ :lazy="true"
+ title="璁剧疆"
+ >
+ <template #content>
+ <custom-column :view-columns="viewColumns"></custom-column>
+ </template>
+ <template #footer>
+ <div style="text-align: center">
+ <el-button type="default" size="small" @click="closeCustomModel"
+ ><i class="el-icon-close"></i>鍙栨秷</el-button
+ >
+ <el-button type="success" size="small" @click="initViewColumns(true)"
+ ><i class="el-icon-refresh"></i>閲嶇疆</el-button
+ >
+ <el-button type="primary" size="small" @click="saveColumnConfig"
+ ><i class="el-icon-check"></i>纭畾</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+ <ViewGridAudit @auditClick="saveAudit" :option="table" ref="audit">
+
+ </ViewGridAudit>
+ <!--寮�鍚噿鍔犺浇2020.12.06 -->
+ <!--瀹℃牳(寮傛鐐瑰嚮鎸夐挳鏃舵墠鍔犺浇寰呭畬)-->
+ <!-- <vol-box
+ v-model="auditParam.model"
+ :height="auditParam.height"
+ :width="750"
+ :lazy="true"
+ :padding="0"
+ title="瀹℃壒"
+ >
+ <template #content>
+ <el-tabs type="card">
+ <el-tab-pane label="褰撳墠瀹℃壒">
+ <div class="v-steps">
+ <div
+ :class="{ 'step-current': item.isCurrent }"
+ class="step-item"
+ v-for="(item, index) in workFlowSteps"
+ :key="index"
+ >
+ <div class="left-item">
+ <div>瀹℃壒鏃堕棿</div>
+ <div class="left-date">{{ item.auditDate || '寰呭鎵�' }}</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ <div class="step-text">瀹℃壒浜猴細{{ item.auditor }}</div>
+ <div class="step-text">
+ 鐘� 鎬侊細 {{ getAuditStatus(item.auditStatus) }}
+ </div>
+ <div class="step-text">澶� 娉細 {{ item.remark || '-' }}</div>
+ </div>
+ </div>
+ <div
+ :style="{
+ 'margin-top': workFlowSteps.length ? '20px' : '-17px'
+ }"
+ class="audit-content"
+ v-show="auditParam.showAction"
+ >
+ <div style="margin-bottom:10px;">
+ 瀹℃壒锛�
+ <el-radio-group
+ style="margin-left:15px"
+ v-model="auditParam.value"
+ >
+ <el-radio
+ v-for="item in auditParam.data"
+ :key="item.value"
+ :label="item.value"
+ >
+ <span>{{ item.text }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+
+ <el-input
+ v-model="auditParam.reason"
+ type="textarea"
+ style="margin-right: 13px;"
+ :autosize="{ minRows: 4, maxRows: 10 }"
+ placeholder="璇疯緭鍏ュ娉�..."
+ ></el-input>
+ </div>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane v-if="workFlowSteps.length" label="瀹℃壒璁板綍">
+ <audit-his :table-data="auditParam.auditHis"></audit-his>
+ </el-tab-pane>
+ </el-tabs>
+ </template>
+ <template #footer>
+ <div style="text-align: center;">
+ <el-button size="small" @click="auditParam.model = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ <el-button
+ type="primary"
+ v-show="auditParam.showAction"
+ size="small"
+ @click="saveAudit"
+ ><i class="el-icon-check"></i>瀹℃牳</el-button
+ >
+ </div>
+ </template>
+ </vol-box> -->
+
+ <!--瀵煎叆excel鍔熻兘-->
+ <!--2020.10.31娣诲姞瀵煎叆鍓嶇殑鏂规硶-->
+ <!--寮�鍚噿鍔犺浇2020.12.06 -->
+ <!-- 2022.01.08澧炲姞鏄庣粏琛ㄥ鍏ュ垽鏂� -->
+ <vol-box
+ v-if="upload.url"
+ v-model="upload.excel"
+ :height="350"
+ :width="600"
+ :lazy="true"
+ :title="(boxModel ? detailOptions.cnName : table.cnName) + '-瀵煎叆'"
+ >
+ <UploadExcel
+ ref="upload_excel"
+ @importExcelAfter="importExcelAfter"
+ :importExcelBefore="importExcelBefore"
+ :url="upload.url"
+ :template="upload.template"
+ ></UploadExcel>
+ </vol-box>
+ <!--澶撮儴鑷畾涔夌粍浠�-->
+ <component
+ :is="dynamicComponent.gridHeader"
+ ref="gridHeader"
+ @parentCall="parentCall"
+ ></component>
+ <!--涓荤晫闈㈡煡璇笌table琛ㄥ崟甯冨眬-->
+ <div class="view-container">
+ <!-- 2020.09.11澧炲姞鍥哄畾鏌ヨ琛ㄥ崟 -->
+ <!--鏌ヨ鏉′欢-->
+ <div class="grid-search">
+ <div
+ :class="[fiexdSearchForm ? 'fiexd-search-box' : 'search-box']"
+ v-show="searchBoxShow"
+ >
+ <!-- 2020.09.13澧炲姞formFileds鎷煎啓閿欒鍏煎澶勭悊 -->
+ <vol-form
+ ref="searchForm"
+ :load-key="false"
+ style="padding: 0 15px"
+ :label-width="labelWidth"
+ :formRules="searchFormOptions"
+ :formFields="searchFormFields"
+ :select2Count="select2Count"
+ >
+ <template #footer>
+ <div v-if="!fiexdSearchForm" class="form-closex">
+ <el-button size="small" type="primary" plain @click="search">
+ <i class="el-icon-search" />鏌ヨ
+ </el-button>
+
+ <el-button
+ size="small"
+ type="success"
+ plain
+ @click="resetSearch"
+ >
+ <i class="el-icon-refresh-right" />閲嶇疆
+ </el-button>
+ <el-button
+ size="small"
+ plain
+ @click="searchBoxShow = !searchBoxShow"
+ >
+ <i class="el-icon-switch-button" />鍏抽棴
+ </el-button>
+ </div>
+ </template>
+ </vol-form>
+ <div v-if="fiexdSearchForm" class="fs-line"></div>
+ </div>
+ <div class="view-header">
+ <div class="desc-text">
+ <i class="el-icon-s-grid" />
+ <span>{{ table.cnName }}</span>
+ </div>
+ <div class="notice">
+ <a class="text" :title="extend.text">{{ extend.text }}</a>
+ </div>
+ <!--蹇�熸煡璇㈠瓧娈�-->
+ <div class="search-line" v-if="!fiexdSearchForm">
+ <QuickSearch
+ v-if="singleSearch"
+ :singleSearch="singleSearch"
+ :searchFormFields="searchFormFields"
+ :tiggerPress="quickSearchKeyPress"
+ ></QuickSearch>
+ </div>
+ <!--鎿嶄綔鎸夐挳缁�-->
+ <!-- 2020.11.29澧炲姞鏌ヨ鐣岄潰hidden灞炴�� -->
+
+ <div class="btn-group">
+ <template
+ :key="bIndex"
+ v-for="(btn, bIndex) in buttons.slice(0, maxBtnLength)"
+ >
+ <el-dropdown size="small" v-if="btn.data" :split-button="false">
+ <el-button
+ :color="btn.color"
+ :dark="false"
+ :type="btn.type"
+ :plain="btn.plain"
+ >
+ {{ btn.name }}<i class="el-icon-arrow-down el-icon--right"></i
+ ></el-button>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item
+ v-for="(item, index) in btn.data"
+ :key="index"
+ >
+ <div @click="onClick(item.onClick)">
+ <i :class="item.icon"></i>
+ {{ item.name }}
+ </div>
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ <el-button
+ v-else
+ :type="btn.type"
+ size="small"
+ :color="btn.color"
+ :dark="false"
+ :class="btn.class"
+ :plain="btn.plain"
+ v-show="!btn.hidden"
+ @click="onClick(btn.onClick)"
+ >
+ <i :class="btn.icon"></i> {{ btn.name }}
+ </el-button>
+ </template>
+ <!-- 璁剧疆鍒楁寜閽� -->
+ <el-button
+ type="default"
+ style="padding: 0px 10px"
+ size="small"
+ :plain="true"
+ v-if="showCustom"
+ @click="showCustomModel"
+ >
+ <i class="el-icon-s-grid"></i>
+ </el-button>
+ <el-dropdown
+ size="small"
+ @click="changeDropdown"
+ v-if="buttons.length > maxBtnLength"
+ >
+ <el-button type="primary" plain size="small">
+ 鏇村<i class="el-icon-arrow-down el-icon--right"></i>
+ </el-button>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item
+ @click="changeDropdown(item.name)"
+ :name="item.name"
+ v-show="!item.hidden"
+ v-for="(item, dIndex) in buttons.slice(
+ maxBtnLength,
+ buttons.length
+ )"
+ :key="dIndex"
+ >
+ <i :class="item.icon"></i> {{ item.name }}</el-dropdown-item
+ >
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </div>
+ </div>
+
+ <!-- 鍒嗗壊浣嶇疆 -->
+ <vol-box
+ v-if="boxInit"
+ v-model="boxModel"
+ :title="boxOptions.title"
+ :width="boxOptions.width"
+ :height="boxOptions.height"
+ :modal="boxOptions.modal"
+ :draggable="boxOptions.draggable"
+ :padding="0"
+ :on-model-close="onGridModelClose"
+ @fullscreen="fullscreen"
+ >
+ <!--鏄庣粏澶撮儴鑷畾涔夌粍浠�-->
+ <template #content>
+ <div class="box-com">
+ <component
+ :is="dynamicComponent.modelHeader"
+ ref="modelHeader"
+ @parentCall="parentCall"
+ ></component>
+ <!-- <div v-show="isBoxAudit" class="flow-step">
+ <div v-for="(item, index) in workFlowSteps" :key="index">
+ {{ item.stepName }}
+ </div>
+ </div> -->
+ <div class="item form-item">
+ <vol-form
+ ref="form"
+ :editor="editor"
+ :load-key="false"
+ :label-width="boxOptions.labelWidth"
+ :formRules="editFormOptions"
+ :formFields="editFormFields"
+ :select2Count="select2Count"
+ ></vol-form>
+ </div>
+ <!--鏄庣粏body鑷畾涔夌粍浠�-->
+ <component
+ :is="dynamicComponent.modelBody"
+ ref="modelBody"
+ @parentCall="parentCall"
+ ></component>
+ <div
+ v-show="hasDetail"
+ v-if="detail.columns && detail.columns.length > 0"
+ class="grid-detail table-item item"
+ >
+ <div class="toolbar">
+ <div class="title form-text">
+ <span>
+ <i class="el-icon-menu" />
+ {{ detail.cnName }}
+ </span>
+ </div>
+ <!--鏄庣粏琛ㄦ牸鎸夐挳-->
+ <div class="btns" v-show="!isBoxAudit">
+ <el-button
+ v-for="(btn, bIndex) in detailOptions.buttons"
+ :key="bIndex"
+ :plain="btn.plain"
+ v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
+ @click="onClick(btn.onClick)"
+ size="small"
+ ><i :class="btn.icon"></i>{{ btn.name }}</el-button
+ >
+ </div>
+ </div>
+ <vol-table
+ ref="detail"
+ @loadBefore="loadInternalDetailTableBefore"
+ @loadAfter="loadDetailTableAfter"
+ @rowChange="detailRowOnChange"
+ @rowClick="detailRowOnClick"
+ :url="detailOptions.url"
+ :load-key="false"
+ :index="true"
+ :tableData="detailOptions.data"
+ :columns="detailOptions.columns"
+ :pagination="detailOptions.pagination"
+ :height="detailOptions.height"
+ :single="detailOptions.single"
+ :pagination-hide="false"
+ :defaultLoadPage="detailOptions.load"
+ :beginEdit="detailOptions.beginEdit"
+ :endEditBefore="detailOptions.endEditBefore"
+ :endEditAfter="detailOptions.endEditAfter"
+ :summary="detailOptions.summary"
+ :click-edit="detailOptions.clickEdit"
+ :double-edit="detailOptions.doubleEdit"
+ :column-index="detailOptions.columnIndex"
+ :ck="detailOptions.ck"
+ :text-inline="detailOptions.textInline"
+ :select2Count="select2Count"
+ :selectable="detailSelectable"
+ ></vol-table>
+ </div>
+ <!--鏄庣粏footer鑷畾涔夌粍浠�-->
+ <component
+ :is="dynamicComponent.modelFooter"
+ ref="modelFooter"
+ @parentCall="parentCall"
+ ></component>
+ </div>
+ </template>
+ <template #footer>
+ <div style="text-align: center;" v-show="isBoxAudit">
+ <el-button
+ size="small"
+ type="primary"
+ plain
+ @click="onGridModelClose(false)"
+ >
+ <i class="el-icon-close">鍏抽棴</i>
+ </el-button>
+ <el-button
+ size="small"
+ type="primary"
+ v-show="auditParam.showViewButton"
+ @click="auditParam.model = true"
+ >
+ <i class="el-icon-view">瀹℃壒</i>
+ </el-button>
+ </div>
+ <div v-show="!isBoxAudit">
+ <el-button
+ v-for="(btn, bIndex) in boxButtons"
+ :key="bIndex"
+ :type="btn.type"
+ size="small"
+ :plain="btn.plain"
+ v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
+ :disabled="btn.hasOwnProperty('disabled') && !!btn.disabled"
+ @click="onClick(btn.onClick)"
+ >
+ <i :class="btn.icon"> {{ btn.name }}</i>
+ </el-button>
+ <el-button
+ size="small"
+ type="primary"
+ plain
+ @click="onGridModelClose(false)"
+ >
+ <i class="el-icon-close">鍏抽棴</i>
+ </el-button>
+ </div>
+ </template>
+ </vol-box>
+ </div>
+ <!--body鑷畾涔夌粍浠�-->
+ <div class="grid-body">
+ <component
+ :is="dynamicComponent.gridBody"
+ ref="gridBody"
+ @parentCall="parentCall"
+ ></component>
+ </div>
+
+ <!--table琛ㄦ牸-->
+ <div class="grid-container">
+ <!-- 2021.05.02澧炲姞鏍戝舰缁撴瀯 rowKey -->
+ <vol-table
+ ref="table"
+ :single="single"
+ :rowKey="rowKey"
+ :loadTreeChildren="loadTreeTableChildren"
+ @loadBefore="loadTableBefore"
+ @loadAfter="loadTableAfter"
+ @rowChange="rowOnChange"
+ @rowClick="rowOnClick"
+ @rowDbClick="rowOnDbClick"
+ :tableData="[]"
+ :linkView="linkData"
+ :columns="columns"
+ :pagination="pagination"
+ :height="height"
+ :max-height="tableMaxHeight"
+ :pagination-hide="false"
+ :url="url"
+ :load-key="false"
+ :defaultLoadPage="load"
+ :summary="summary"
+ :double-edit="doubleEdit"
+ :index="doubleEdit"
+ :beginEdit="tableBeginEdit"
+ :endEditBefore="tableEndEditBefore"
+ :click-edit="true"
+ :column-index="columnIndex"
+ :text-inline="textInline"
+ :ck="ck"
+ :select2Count="select2Count"
+ :selectable="selectable"
+ ></vol-table>
+ </div>
+ </div>
+
+ <!--footer鑷畾涔夌粍浠�-->
+ <component
+ :is="dynamicComponent.gridFooter"
+ ref="gridFooter"
+ @parentCall="parentCall"
+ ></component>
+ </div>
+</template>
+
+<script>
+const _const = {
+ EDIT: 'update',
+ ADD: 'Add',
+ VIEW: 'view',
+ PAGE: 'getPageData',
+ AUDIT: 'audit',
+ DEL: 'del',
+ EXPORT: 'Export', //瀵煎嚭鎿嶄綔杩斿洖鍔犲瘑鍚庣殑璺緞
+ DOWNLOAD: 'DownLoadFile', //瀵煎嚭鏂囦欢
+ DOWNLOADTEMPLATE: 'DownLoadTemplate', //涓嬭浇瀵煎叆妯℃澘
+ IMPORT: 'Import', //瀵煎叆(瀵煎叆琛ㄧ殑Excel鍔熻兘)
+ UPLOAD: 'Upload' //涓婁紶鏂囦欢
+};
+import Empty from '@/components/basic/Empty.vue';
+
+import VolTable from '@/components/basic/VolTable.vue';
+import VolForm from '@/components/basic/VolForm.vue';
+import {
+ defineAsyncComponent,
+ defineComponent,
+ ref,
+ shallowRef,
+ toRaw
+} from 'vue';
+var vueParam = {
+ components: {
+ 'vol-form': VolForm,
+ 'vol-table': VolTable,
+ VolBox: defineAsyncComponent(() => import('@/components/basic/VolBox.vue')),
+ QuickSearch: defineAsyncComponent(() =>
+ import('@/components/basic/QuickSearch.vue')
+ ),
+ Audit: defineAsyncComponent(() => import('@/components/basic/Audit.vue')),
+ UploadExcel: defineAsyncComponent(() =>
+ import('@/components/basic/UploadExcel.vue')
+ ),
+ 'custom-column': defineAsyncComponent(() =>
+ import('./ViewGridCustomColumn.vue')
+ ),
+ 'vol-header': defineAsyncComponent(() => import('./../VolHeader.vue')),
+ ViewGridAudit: defineAsyncComponent(() => import('./ViewGridAudit.vue'))
+ },
+ props: {},
+ setup(props) {
+ //2021.07.17璋冩暣鎵╁睍缁勪欢缁勪欢
+ const dynamicCom = {
+ gridHeader: Empty,
+ gridBody: Empty,
+ gridFooter: Empty,
+ modelHeader: Empty,
+ modelBody: Empty,
+ modelFooter: Empty
+ };
+ //鍚堝苟鎵╁睍缁勪欢
+ if (props.extend.components) {
+ for (const key in props.extend.components) {
+ if (props.extend.components[key]) {
+ dynamicCom[key] = toRaw(props.extend.components[key]);
+ }
+ }
+ }
+ const dynamicComponent = shallowRef(dynamicCom);
+ return { dynamicComponent };
+ },
+ data() {
+ return {
+ isBoxAudit: false,
+ formFieldsType: [],
+ workFlowSteps: [],
+ //鏍戝舰缁撴瀯鐨勪富閿瓧娈碉紝濡傛灉璁剧疆鍊奸粯璁や細寮�鍚爲褰able锛涙敞鎰弐owKey瀛楁鐨勫�煎繀椤绘槸鍞竴锛�2021.05.02锛�
+ rowKey: undefined,
+ fiexdSearchForm: false, //2020.09.011鏄惁鍥哄畾鏌ヨ琛ㄥ崟锛宼rue鏌ヨ琛ㄥ崟灏嗗浐瀹氭樉绀哄湪琛ㄥ崟鐨勬渶涓婇潰
+ _inited: false,
+ doubleEdit: false, //2021.03.19鏄惁寮�鍚煡璇㈢晫闈㈣〃鏍煎弻鍑荤紪杈�
+ single: false, //琛ㄦ槸鍚﹀崟閫�
+ const: _const, //澧炲垹鏀规煡瀵煎叆瀵煎嚭绛夊搴旂殑action
+ boxInit: false, //鏂板缓鎴栫紪杈戠殑寮瑰嚭妗嗗垵鍖栫姸鎬侊紝榛樿涓嶅仛鍒濆鍖栵紝鐐瑰嚮鏂板缓鎴栫紪杈戞墠鍒濆鍖栧脊鍑烘
+ searchBoxShow: false, //楂樼骇鏌ヨ(鐣岄潰鏌ヨ鍚庣殑涓嬫媺妗嗙偣鍑昏Е鍙�)
+ singleSearch: {}, //蹇�熸煡璇㈠瓧娈�
+ exportHref: '',
+ currentAction: _const.ADD, //褰撴柊寤烘垨缂栬緫鏃讹紝璁板綍褰撳墠鐨勭姸鎬�:濡傚綋鍓嶆搷浣滄槸鏂板缓
+ currentRow: {}, //褰撳墠缂栬緫鎴栨煡鐪嬫暟鎹殑琛�
+ closable: false,
+ boxModel: false, //寮瑰嚭鏂板缓銆佺紪杈戞
+ width: 700, //寮瑰嚭妗嗘煡鐪嬭〃鏁版嵁缁撴瀯
+ labelWidth: 100, //楂樼骇鏌ヨ鐨勬爣绛惧搴�
+ viewModel: false, //鏌ョ湅琛ㄧ粨鏋勭殑寮瑰嚭妗�
+ viewColumns: [], //鏌ョ湅琛ㄧ粨鏋勭殑鍒楁暟鎹�
+ viewColumnsClone: [],
+ showCustom: true, //鏄惁鏄剧ず鑷畾涔夐厤缃垪鎸夐挳2022.05.27
+ // viewData: [], //鏌ョ湅琛ㄧ粨鏋勪俊鎭�
+ maxBtnLength: 8, //鐣岄潰鎸夐挳鏈�澶氭樉绀虹殑涓暟锛岃秴杩囩殑鏁伴噺閮芥樉绀哄湪鏇村涓�
+ buttons: [], //鏌ヨ鐣岄潰鎸夐挳 濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�(濡�:Sys_User.js涓璪uttons娣诲姞鍏朵粬鎸夐挳)
+ splitButtons: [],
+ uploadfiled: [], //涓婁紶鏂囦欢鍥剧墖鐨勫瓧娈�
+ boxButtons: [], //寮瑰嚭妗嗘寜閽� 濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�
+ dicKeys: [], //褰撳墠鐣岄潰鎵�鏈夌殑涓嬫媺妗嗗瓧鍏哥紪鍙峰強鏁版嵁婧�
+ hasKeyField: [], //鏈夊瓧鍏告暟鎹簮鐨勫瓧娈�
+ keyValueType: { _dinit: false },
+ url: '', //鐣岄潰琛ㄦ煡璇㈢殑鏁版嵁婧愮殑url
+ hasDetail: false, //鏄惁鏈変粠琛�(鏄庣粏)琛ㄦ牸鏁版嵁
+ initActivated: false,
+ load: true, //鏄惁榛樿鍔犺浇琛ㄦ暟鎹�
+ activatedLoad: false, //椤甸潰瑙﹀彂actived鏃舵槸鍚﹀埛鏂伴〉闈㈡暟鎹�
+ summary: false, //鏌ヨ鐣岄潰table鏄惁鏄剧ず鍚堣
+ //闇�瑕佷粠杩滅▼缁戝畾鏁版嵁婧愮殑瀛楀吀缂栧彿,濡傛灉瀛楀吀鏁版嵁婧愮殑鏌ヨ缁撴灉杈冨锛岃鍦╫nInit涓皢瀛楀吀缂栧彿娣诲姞杩涙潵
+ //鍙鑷畾sql鏈夋晥
+ remoteKeys: [],
+ columnIndex: true, //2020.11.01鏄惁鏄剧ず琛屽彿
+ ck: true, //2020.11.01鏄惁鏄剧ずcheckbox
+ continueAdd: false, //2021.04.11鏂板缓鏃舵槸鍚﹀彲浠ヨ繛缁柊寤烘搷浣�
+ continueAddName: '淇濆瓨鍚庣户缁坊鍔�', //2021.04.11鎸夐挳鍚嶇О
+ // detailUrl: "",
+ detailOptions: {
+ //寮瑰嚭妗嗕粠琛�(鏄庣粏)瀵硅薄
+ //浠庤〃閰嶇疆
+ buttons: [], //寮瑰嚭妗嗕粠琛ㄨ〃鏍兼搷浣滄寜閽�,鐩墠鏈夊垹闄よ锛屾坊鍔犺锛屽埛鏂版搷浣滐紝濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�
+ cnName: '', //浠庤〃鍚嶇О
+ key: '', //浠庤〃涓婚敭鍚�
+ data: [], //鏁版嵁婧�
+ columns: [], //浠庤〃鍒椾俊鎭�
+ edit: true, //鏄庣粏鏄惁鍙互缂栬緫
+ single: false, //鏄庣粏琛ㄦ槸鍚﹀崟閫�
+ load: false, //
+ delKeys: [], //褰撶紪杈戞椂鍒犻櫎褰撳墠鏄庣粏鐨勮涓婚敭鍊�
+ url: '', //浠庤〃鍔犺浇鏁版嵁鐨剈rl
+ pagination: { total: 0, size: 100, sortName: '' }, //浠庤〃鍒嗛〉閰嶇疆鏁版嵁
+ height: 0, //榛樿浠庤〃楂樺害
+ textInline: true, //鏄庣粏琛ㄨ鍐呭鏄剧ず鍦ㄤ竴琛屼笂锛屽鏋滈渶瑕佹崲琛屾樉绀猴紝璇疯缃负false
+ doubleEdit: true, //浣跨敤鍙屽嚮缂栬緫
+ clickEdit: false, //鏄惁寮�鍚偣鍑诲崟鍏冩牸缂栬緫锛岀偣鍑诲叾浠栬鏃剁粨鏉熺紪杈�
+ currentReadonly: false, //褰撳墠鐢ㄦ埛娌℃湁缂栬緫鎴栨柊寤烘潈闄愭椂锛岃〃鍗曞彧璇�(鍙敤浜庡垽鏂敤鎴锋槸鍚︽湁缂栬緫鎴栨柊寤烘潈闄�)
+ //寮�鍚紪杈戞椂
+ beginEdit: (row, column, index) => {
+ return true;
+ },
+ //缁撴潫缂栬緫鍓�
+ endEditBefore: (row, column, index) => {
+ return true;
+ },
+ //缁撴潫缂栬緫鍚�
+ endEditAfter: (row, column, index) => {
+ return true;
+ },
+ columnIndex: false, //2020.11.01鏄庣粏鏄惁鏄剧ず琛屽彿
+ ck: true //2020.11.01鏄庣粏鏄惁鏄剧ずcheckbox
+ },
+ auditParam: {
+ //瀹℃牳瀵硅薄
+ rows: 0, //褰撳墠閫変腑瀹℃牳鐨勮鏁�
+ model: false, //瀹℃牳寮瑰嚭妗�
+ value: -1, //瀹℃牳缁撴灉
+ status: -1,
+ reason: '', //瀹℃牳鍘熷洜
+ height: 500,
+ showViewButton: true,
+ auditHis: [],
+ showAction: false, //鏄惁鏄剧ず瀹℃壒鎿嶄綔(褰撳墠鑺傜偣涓虹敤鎴峰鎵规椂鏄剧ず)
+ //瀹℃牳閫夐」(鍙嚜琛屽啀娣诲姞)
+ data: [
+ { text: '閫氳繃', value: 1 },
+ { text: '鎷掔粷', value: 2 },
+ { text: '椹冲洖', value: 3 }
+ ]
+ },
+ upload: {
+ //瀵煎叆涓婁紶excel瀵硅薄
+ excel: false, //瀵煎叆鐨勫脊鍑烘鏄惁鏄剧ず
+ url: '', //瀵煎叆鐨勮矾寰�,濡傛灉娌℃湁鍊硷紝鍒欎笉娓叉煋瀵煎叆鍔熻兘
+ template: {
+ //涓嬭浇妯℃澘瀵硅薄
+ url: '', //涓嬭浇妯℃澘璺緞
+ fileName: '' //妯℃澘涓嬭浇鐨勪腑鏂囧悕
+ },
+ init: false //鏄惁鏈夊鍏ユ潈闄愶紝鏈夋墠娓叉煋瀵煎叆缁勪欢
+ },
+ height: 0, //琛ㄩ珮搴�
+ tableHeight: 0, //鏌ヨ椤甸潰table鐨勯珮搴�
+ tableMaxHeight: 0, //鏌ヨ椤甸潰table鐨勬渶澶ч珮搴�
+ textInline: true, //table鍐呭瓒呭嚭鍚庢槸鍚︿笉鎹㈣2020.01.16
+ pagination: { total: 0, size: 30, sortName: '' }, //浠庡垎椤甸厤缃暟鎹�
+ boxOptions: {
+ title: '', //寮瑰嚭妗嗘樉绀虹殑鏍囬2022.08.01
+ saveClose: true,
+ labelWidth: 100,
+ height: 0,
+ width: 0,
+ summary: false, //寮瑰嚭妗嗘槑缁唗able鏄惁鏄剧ず鍚堣
+ draggable: false, //2022.09.12寮瑰嚭妗嗘嫋鍔ㄥ姛鑳�
+ modal: true //2022.09.12寮瑰嚭妗嗚儗鏅伄缃╁眰
+ }, //saveClose鏂板缓鎴栫紪杈戞垚鍔熷悗鏄惁鍏抽棴寮瑰嚭妗�//寮瑰嚭妗嗙殑鏍囩瀹藉害labelWidth
+ editor: {
+ uploadImgUrl: '', //涓婁紶璺緞
+ upload: null //涓婁紶鏂规硶
+ },
+ numberFields: [],
+ //2022.09.26澧炲姞鑷畾涔夊鍑烘枃浠跺悕
+ downloadFileName: null,
+ select2Count: 500 //瓒呭嚭500鏁伴噺鏄剧ずselect2缁勪欢
+ };
+ },
+ methods: {},
+ activated() {
+ this.initFlowQuery();
+ //2020.06.25澧炲姞activated鏂规硶
+ this.onActivated && this.onActivated();
+ if (!this._inited) {
+ this._inited = true;
+ return;
+ }
+ if (this.activatedLoad) {
+ this.refresh();
+ }
+ },
+ mounted() {
+ this.mounted();
+ // this.$refs.searchForm.forEach()
+ },
+ unmounted() {
+ this.destroyed();
+ },
+ created: function() {
+ //鍚堝苟鑷畾涔変笟鍔℃墿灞曟柟娉�
+ Object.assign(this, this.extend.methods);
+ //濡傛灉娌℃湁鎸囧畾鎺掑簭瀛楁锛屽垯鐢ㄤ富閿綔涓洪粯璁ゆ帓搴忓瓧娈�
+ this.pagination.sortName = this.table.sortName || this.table.key;
+ this.initBoxButtons(); //鍒濆鍖栧脊鍑烘涓庢槑缁嗚〃鏍兼寜閽�
+ this.initAuditColumn();
+ this.onInit(); //鍒濆鍖栧墠锛屽鏋滈渶瑕佸仛鍏朵粬澶勭悊鍦ㄦ墿灞曟柟娉曚腑瑕嗙洊姝ゆ柟娉�
+ this.getButtons();
+ //鍒濆鍖栬嚜瀹氫箟琛ㄦ牸鍒�
+ this.initViewColumns();
+ //鍒濆缂栬緫妗嗙瓑鏁版嵁
+ this.initBoxHeightWidth();
+ this.initDicKeys(); //鍒濆涓嬫鏁版嵁婧�
+ this.onInited(); //鍒濆鍖栧悗锛屽鏋滈渶瑕佸仛鍏朵粬澶勭悊鍦ㄦ墿灞曟柟娉曚腑瑕嗙洊姝ゆ柟娉�
+ },
+ beforeUpdate: function() {},
+ updated: function() {}
+};
+
+import props from './props.js';
+import methods from './methods.js';
+
+//鍚堝苟灞炴��
+vueParam.props = Object.assign(vueParam.props, props);
+//鍚堝苟鏂规硶
+vueParam.methods = Object.assign(
+ vueParam.methods,
+ methods,
+ props.extend.methods
+);
+export default defineComponent(vueParam);
+</script>
+<style lang="less" scoped>
+@import './ViewGrid.less';
+</style>
+<style lang="less" scoped>
+.btn-group ::v-deep(.ivu-select-dropdown) {
+ padding: 0px !important;
+ right: 3px;
+}
+
+.btn-group ::v-deep(.ivu-select-dropdown .ivu-dropdown-menu) {
+ min-width: 100px;
+ right: -2px;
+ position: absolute;
+ background: white;
+ width: 130px;
+ border-radius: 5px;
+ border: 1px solid #e7e5e5;
+}
+
+.vertical-center-modal ::v-deep(.srcoll-content) {
+ padding: 0;
+}
+
+.view-model-content {
+ background: #eee;
+}
+
+.grid-detail ::v-deep(.v-table .el-table__header th) {
+ height: 44px;
+}
+</style>
+<style lang="less" scoped>
+.grid-search {
+ position: relative;
+
+ .search-box {
+ background: #fefefe;
+ margin-top: 33px;
+ border: 1px solid #eae8e8;
+ position: absolute;
+ z-index: 999;
+ left: 15px;
+ right: 15px;
+ padding: 25px 20px;
+ padding-bottom: 0;
+ border-top: 0;
+ box-shadow: 0 7px 18px -12px #bdc0bb;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridAudit.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridAudit.vue"
new file mode 100644
index 0000000..24cddc7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridAudit.vue"
@@ -0,0 +1,427 @@
+<template>
+ <vol-box :footer="false" v-model="model" :height="height" :width="width" :padding="0" :lazy="true" title="瀹℃牳">
+
+ <div class="audit-model-content" :style="{ height: height - 100 + 'px' }">
+ <el-descriptions class="desc-top" :column="3" size="default" :border="true">
+ <el-descriptions-item v-for="(item, index) in formData" :key="index">
+ <template #label>
+ <div class="cell-item">
+ {{ item.name }}
+ </div>
+ </template>
+ {{ item.value }}
+ </el-descriptions-item>
+ </el-descriptions>
+ <el-radio-group v-show="hasFlow" style="padding-left: 15px;" v-model="activeName" class="ml-4">
+ <el-radio label="audit" size="large">瀹℃牳</el-radio>
+ <el-radio label="log" size="large">瀹℃牳璁板綍</el-radio>
+ </el-radio-group>
+ <div v-show="activeName == 'audit' || !hasFlow" class="audit-content">
+ <div class="fx-left" v-if="hasFlow">
+ <div class="v-steps">
+ <div v-for="(item, index) in workFlowSteps" :key="index">
+ <div class="step-item" :class="{'step-item-ad':item.auditId||item.stepAttrType=='start'}" v-if="item.stepAttrType == 'start'">
+ <div class="left-item">
+ <div>娴佺▼寮�濮�</div>
+ <div class="left-date">{{ item.createDate }}</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ <div class="step-text">鍙戣捣浜猴細{{ item.creator }}</div>
+ </div>
+ </div>
+ <div class="step-item" v-else-if="item.stepAttrType == 'end'">
+ <div class="left-item">
+ <div>娴佺▼缁撴潫</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ </div>
+ </div>
+ <div v-else :class="{ 'step-current': item.isCurrent }" class="step-item">
+ <div class="left-item">
+ <div>瀹℃壒鏃堕棿</div>
+ <div class="left-date">{{ item.auditDate || '寰呭鎵�' }}</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ <div class="step-text">瀹℃壒浜猴細{{ item.auditor }}</div>
+ <div class="step-text">
+ 鐘� 鎬侊細 {{ getAuditStatus(item.auditStatus) }}
+ </div>
+ <div class="step-text">澶� 娉細 {{ item.remark || '-' }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="fx-right" :style="{ width: !hasFlow ? '100%' : '400px' }" v-if="isCurrentUser || !hasFlow">
+
+ <div v-if="!hasFlow">
+ <el-alert :title="'褰撳墠閫変腑銆�' + rowLen + '銆戞潯璁板綍寰呭鏍�..'" type="success" :closable="false" />
+ </div>
+ <div class="rd">
+ <span>瀹℃壒锛�</span>
+ <el-radio-group style="margin-left:15px" v-model="auditParam.value">
+ <el-radio v-for="item in auditParam.data" :key="item.value" :label="item.value">
+ <span>{{ item.text }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+ <el-input style="padding-top: 10px;" v-model="auditParam.reason" type="textarea"
+ :autosize="{ minRows: 4, maxRows: 10 }" placeholder="璇疯緭鍏ュ娉�..."></el-input>
+ <div class="btn">
+ <el-button type="primary" @click="auditClick" icon="Check">瀹℃壒</el-button>
+ </div>
+ </div>
+ </div>
+ <div v-show="activeName == 'log'">
+ <vol-table :tableData="tableData" :columns="columns" :height="height - 250" :pagination-hide="true"
+ :load-key="false" :text-inline="false" :ck="false"></vol-table>
+ </div>
+ </div>
+ </vol-box>
+</template>
+<script>
+import VolTable from '@/components/basic/VolTable.vue';
+import VolBox from '@/components/basic/VolBox.vue';
+import http from '@/../src/api/http.js';
+import { defineComponent, ref, reactive, getCurrentInstance } from 'vue';
+export default defineComponent({
+ components: {
+ VolTable,
+ VolBox
+ },
+ props: {
+ option: { //鐢熸垚vue鏂囦欢鐨則able鍙傛暟
+ type: Object,
+ default: {
+ key: '',
+ cnName: '',
+ name: '',
+ url: ""
+ }
+ }
+ },
+ setup(props, { emit }) {
+ const height = ref(500);
+ const width = ref(820);
+ const model = ref(false)
+ const workFlowSteps = reactive([]);
+
+ const hasFlow = ref(false)
+ const formData = reactive([]);
+
+ const auditParam = reactive({
+ //瀹℃牳瀵硅薄
+ rows: 0, //褰撳墠閫変腑瀹℃牳鐨勮鏁�
+ model: false, //瀹℃牳寮瑰嚭妗�
+ value: -1, //瀹℃牳缁撴灉
+ reason: '', //瀹℃牳鍘熷洜
+ //瀹℃牳閫夐」(main.js閲岄潰鍙互娣诲姞鍏朵粬閫夐」)
+ data: []
+ })
+ const { proxy } = getCurrentInstance();
+ auditParam.data = proxy.$global.audit.data;
+ const tableData = reactive([]);
+ const columns = reactive([
+ { title: '鑺傜偣', field: 'stepName', width: 100 },
+ { title: '瀹℃壒浜�', field: 'auditor', width: 80 },
+ { title: '瀹℃壒缁撴灉', field: 'auditStatus', width: 70, bind: { data: [] } },
+ { title: '瀹℃壒鏃堕棿', field: 'auditDate', width: 145 },
+ { title: '澶囨敞', field: 'remark', width: 120 }
+ ]);
+
+ const isCurrentUser = ref(null);
+ const activeName = ref('audit')
+
+ const auditDic = reactive([]);
+ const getAuditStatus = (key) => {
+ return (auditDic.find(x => { return x.key === key + '' }) || { value: key }).value;
+ }
+ const rowLen = ref(0)
+ let currentRows = []
+ const getAuditInfo = (option) => {
+ const table = option.table; //props.option.url.replaceAll('/', '');
+ const url = `api/Sys_WorkFlow/getSteps?tableName=${table}`
+ // let ids = currentRows.map(x => { return x[props.option.key] });
+ let ids = currentRows.map(x => { return x[option.key] });
+ // ['498043c1-fbd0-4a35-a870-523823912a9b']
+ http.post(url, ids, true).then(result => {
+ if (!result.status) {
+ proxy.$message.error(result.message);
+ return;
+ }
+
+ hasFlow.value = !!(result.list || []).length;
+ if (!hasFlow.value) {
+
+ let auditStatus = Object.keys(currentRows[0]).find(x => { return x.toLowerCase() === 'auditstatus' });
+
+ let checkStatus = currentRows.every((x) => {
+ return proxy.$global.audit.status.some(c => { return c === x[auditStatus] || !x[auditStatus] })
+ });
+ if (!checkStatus) {
+ proxy.$message.error('鍙兘閫夋嫨寰呭鎵规垨瀹℃牳涓殑鏁版嵁');
+ return;
+ }
+ rowLen.value = currentRows.length;
+ model.value = true;
+ width.value = 430;
+ height.value = 330;
+ isCurrentUser.value = true;
+ //娌℃湁瀹℃壒娴佺▼鐨勬暟鎹彧鏄剧ず
+ return;
+ }
+ model.value = true;
+ height.value = document.body.clientHeight * 0.95;
+ width.value = 820;
+ if (!auditDic.length) {
+ auditDic.push(...(result.auditDic || []))
+ columns.forEach(item => {
+ if (item.field == 'auditStatus') {
+ item.bind.data = auditDic;
+ }
+ })
+ }
+ isCurrentUser.value = result.list.some(x => { return x.isCurrentUser })
+ workFlowSteps.length = 0;
+ workFlowSteps.push(...result.list);
+ tableData.length = 0;
+ tableData.push(...result.log)
+ formData.length = 0;
+ formData.push(...(result.form || []))
+ })
+ }
+ //
+
+ const auditClick = () => {
+ if (auditParam.value == -1) {
+ proxy.$message.error('璇烽�夋嫨瀹℃壒椤�');
+ return;
+ }
+
+ if (!isFlow.value) {
+ emit("auditClick", auditParam, currentRows, (result) => {
+ if (result.status) {
+ model.value = false;
+ tableData.length = 0;
+ }
+ });
+ return;
+ }
+ //鎴戠殑娴佺▼涓偣鍑诲鎵�
+ //淇濆瓨瀹℃牳
+ let keys = currentRows.map(x => { return x[currentOption.key] });
+ let url = `api/${currentOption.table}/audit?auditReason=${auditParam.reason}&auditStatus=${auditParam.value}`
+ http.post(url, keys, '瀹℃牳涓�....').then((x) => {
+ if (!x.status) {
+ proxy.$message.error(x.message);
+ return;
+ }
+ model.value = false;
+ proxy.$parent.search()
+ proxy.$message.success(x.message)
+ });
+ }
+ const isFlow = ref(false);
+ let currentOption = {};
+ const open = (rows, flow) => {
+ isFlow.value = !!flow;
+ currentRows = rows;
+ activeName.value = 'audit'
+ auditParam.reason = '';
+ auditParam.value = -1;
+
+ if (flow) {
+ currentOption = {
+ table: rows[0].WorkTable,
+ key: "WorkTableKey"// rows[0].WorkTableKey
+ }
+ } else {
+ currentOption = {
+ table: props.option.url.replaceAll('/', ''),
+ key: props.option.key
+ }
+ }
+ getAuditInfo(currentOption);
+
+ }
+
+ return {
+ columns,
+ height,
+ width,
+ model,
+ workFlowSteps,
+ getAuditInfo,
+ getAuditStatus,
+ activeName,
+ reactive,
+ tableData,
+ auditParam,
+ auditClick,
+ open,
+ isCurrentUser,
+ hasFlow,
+ rowLen,
+ formData,
+ isFlow
+ }
+ }
+});
+</script>
+
+<style lang="less" scoped>
+.audit-model-content {
+ padding: 10px;
+}
+
+.step-item {
+ background: #fff;
+ display: flex;
+}
+
+.left-item {
+ min-width: 180px;
+ text-align: right;
+ padding-right: 25px;
+ padding-top: 8px;
+
+ .left-date {
+ font-size: 13px;
+ padding-top: 7px;
+ color: #6c6c6c;
+ }
+}
+
+.right-item {
+ cursor: pointer;
+ position: relative;
+ border-bottom: 1px solid #f3f3f3;
+ padding: 5px 0 5px 5px;
+}
+
+.left-item,
+.right-item {
+ padding-bottom: 10px;
+}
+
+.right-item:last-child {
+ border-bottom: 0;
+}
+
+.step-line {
+ top: 16px;
+ left: -10px;
+ width: 1px;
+ height: 100%;
+ position: absolute;
+ background-color: #ebedf0;
+}
+
+.step-circle {
+ position: absolute;
+ top: 17px;
+ left: -9px;
+ z-index: 2;
+ font-size: 12px;
+ line-height: 1;
+ transform: translate(-50%, -50%);
+ width: 7px;
+ height: 7px;
+ background-color: #a1a1a1;
+ border-radius: 50%;
+}
+
+.right-item::before {
+ content: '';
+}
+
+.step-content {
+ padding-top: 2px;
+ font-size: 14px;
+ color: #828282;
+ line-height: 1.5;
+}
+
+.step-title {
+ font-weight: bold;
+ padding-top: 3px;
+}
+
+.step-text {
+ font-size: 13px;
+ color: #999999;
+ padding-top: 6px;
+}
+
+.step-current {
+ * {
+ color: #2f95ff !important;
+ }
+
+ .step-circle {
+ background: #2f95ff !important;
+ }
+
+ // border-radius: 5px;
+ // border: 1px solid #d6eaff;
+ font-size: 13px;
+ padding-top: 6px;
+ // background-color: #eff7ffd9;
+ color: black;
+}
+
+.audit-content {
+ // background: #f9f9f9;
+ padding: 10px;
+ border-radius: 4px;
+ display: flex;
+
+ .fx-left {
+ flex: 1;
+ width: 0;
+
+ .rd {
+ display: flex;
+ align-items: baseline;
+ }
+ }
+
+ .fx-right {
+ // width: 400px;
+
+ .btn {
+ margin-top: 10px;
+ text-align: center;
+ }
+ }
+
+}
+
+.cell-item {
+ font-weight: 500;
+}
+
+.desc-top {
+ padding: 5px 10px 0 10px;
+}
+.step-item-ad{
+ *{
+ color: #9f9898 !important;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridCustomColumn.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridCustomColumn.vue"
new file mode 100644
index 0000000..97feb80
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/ViewGrid/ViewGridCustomColumn.vue"
@@ -0,0 +1,95 @@
+<template>
+ <el-alert
+ title="鎷栧姩鍒楀悕鍙皟鏁磋〃鏍煎垪鏄剧ず椤哄簭"
+ type="success"
+ :show-icon="false"
+ >
+ </el-alert>
+ <div class="view-column view-column-title">
+ <div class="view-column-index">#</div>
+ <div class="view-column-left">鍒楀悕</div>
+ <div class="view-column-right">鏄惁鏄剧ず</div>
+ </div>
+ <draggable
+ class="list-group"
+ tag="transition-group"
+ :component-data="componentData"
+ :list="viewColumns"
+ v-bind="dragOptions"
+ item-key="order"
+ >
+ <transition-group class="drag-center-item">
+ <div
+ class="view-column"
+ v-for="(column, index) in viewColumns"
+ :key="index"
+ >
+ <div class="view-column-index">{{ index + 1 }}</div>
+ <div class="view-column-left">{{ column.title }}</div>
+ <div class="view-column-right">
+ <el-checkbox v-model="column.show">
+ <div style="height: 100%; width: 250px"></div
+ ></el-checkbox>
+ </div>
+ </div>
+ </transition-group>
+ </draggable>
+</template>
+<script>
+import { VueDraggableNext } from 'vue-draggable-next';
+import { defineComponent, ref, reactive } from 'vue';
+
+export default defineComponent({
+ props: {
+ viewColumns: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ components: {
+ draggable: VueDraggableNext
+ },
+ data() {
+ return {};
+ },
+ setup(props, context) {
+ const dragOptions = reactive({
+ animation: 200,
+ group: 'description',
+ disabled: false,
+ ghostClass: 'ghost'
+ });
+ const componentData = reactive({
+ tag: 'ul',
+ type: 'transition-group'
+ });
+ return { dragOptions, componentData };
+ }
+});
+</script>
+<style lang="less" scoped>
+.view-column {
+ cursor: pointer;
+ display: flex;
+ padding: 10px;
+ border-bottom: 1px solid #f3f3f3;
+ .view-column-index {
+ width: 50px;
+ }
+ .view-column-left {
+ width: 120px;
+ padding: 0 10px;
+ }
+ .view-column-right {
+ flex: 1;
+ }
+}
+.view-column-title {
+ font-weight: bold;
+}
+.view-column:last-child {
+ border-bottom: 0;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolBox.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolBox.vue"
new file mode 100644
index 0000000..8893643
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolBox.vue"
@@ -0,0 +1,200 @@
+<template>
+ <div class="vol-dialog">
+
+ <el-dialog v-model="vmodel" :close-on-click-modal="false" :close-on-press-escape="false" :width="width"
+ :fullscreen="fullscreen" :draggable="draggable" :modal="modal" :before-close="handleClose">
+ <template #header>
+ <i :class="icon"></i> {{ title }}
+ <button class="el-dialog__headerbtn" type="button" style="right: 35px; color: var(--el-color-info)" @click="handleFullScreen">
+ <i class="el-icon el-icon-full-screen"></i>
+ </button>
+ </template>
+ <el-scrollbar :max-height="contentHeight">
+ <div v-if="inited" style="min-height: 50px;" class="srcoll-content" :style="{ padding: padding + 'px' }">
+ <slot name="content"></slot>
+ <slot></slot>
+ </div>
+ </el-scrollbar>
+ <template #footer>
+ <div class="dia-footer" v-if="footer">
+ <slot name="footer"></slot>
+ <el-button type="primary" v-if="!footer" size="mini" @click="handleClose()"><i
+ class="el-icon-close"></i>鍏抽棴</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { defineComponent, ref, watch, watchEffect } from 'vue';
+
+export default defineComponent({
+ props: {
+ modelValue: false,
+ lazy: {
+ //鏄惁寮�鍚噿鍔犺浇2020.12.06
+ type: Boolean,
+ default: false,
+ },
+ icon: {
+ type: String,
+ default: "el-icon-warning-outline",
+ },
+ title: {
+ type: String,
+ default: "鍩烘湰淇℃伅",
+ },
+ height: {
+ type: Number,
+ default: 200,
+ },
+ width: {
+ type: Number,
+ default: 650,
+ },
+ padding: {
+ type: Number,
+ default: 16,
+ },
+ modal: {
+ //鏄惁闇�瑕侀伄缃╁眰
+ type: Boolean,
+ default: true,
+ },
+ draggable: {
+ //鍚敤鍙嫋鎷藉姛鑳�
+ type: Boolean,
+ default: false,
+ },
+ mask: {
+ type: Boolean,
+ default: true,
+ },
+ onModelClose: {
+ //2021.07.11澧炲姞寮瑰嚭妗嗗叧闂簨浠�
+ type: Function,
+ default: (iconClick) => {
+ return true;
+ }
+ },
+ footer:{ //鏄惁鏄剧ず搴曢儴鎸夐挳
+ type: Boolean,
+ default: true
+ }
+
+ },
+ setup(props, context) {
+ const clientHeight = document.body.clientHeight * 0.95 - 60;
+ const inited = ref(true);
+ const vmodel = ref(false);
+ const footer = ref(false);
+ const top = ref(100);
+ vmodel.value = props.modelValue;
+ footer.value = !!context.slots.footer;
+ const contentHeight = ref(200);
+ contentHeight.value = props.height;
+ const handleClose = (done, iconClose) => {
+ let result = props.onModelClose(!!iconClose);
+ if (result === false) return;
+ vmodel.value = false;
+ context.emit("update:modelValue", false);
+ done && done();
+ };
+ const calcHeight = (val) => {
+ // if (props.height > clientHeight) {
+ // if(true){
+ contentHeight.value = clientHeight - 30;
+ return clientHeight / -2 + 'px';
+ // }
+ // contentHeight.value = val || props.height;
+ // return (props.height + 56) / -2 + 'px';
+ };
+ top.value = calcHeight();
+ watch(
+ () => props.modelValue,
+ (newVal, oldVal) => {
+ vmodel.value = newVal;
+ }
+ );
+ watch(
+ () => props.height,
+ (newVal, oldVal) => {
+ top.value = calcHeight();
+ }
+ );
+ const fullscreen=ref(false);
+ const handleFullScreen=()=> {
+ fullscreen.value = !fullscreen.value;
+ context.emit("fullscreen", fullscreen.value);
+ }
+ return {
+ handleClose,
+ inited,
+ vmodel,
+ footer,
+ top,
+ calcHeight,
+ contentHeight,
+ fullscreen,
+ handleFullScreen
+ };
+ }
+});
+</script>
+
+<style lang="less" scoped>
+.dia-footer {
+ text-align: right;
+ width: 100%;
+ border-top: 1px solid #e2e2e2;
+ text-align: right;
+ padding: 6px 8px;
+}
+</style>
+
+<style scoped lang="less">
+.vol-dialog ::v-deep(.el-overlay-dialog) {
+ display: flex !important;
+}
+
+.vol-dialog ::v-deep(.el-dialog) {
+ margin: auto;
+}
+
+.vol-dialog ::v-deep(.el-dialog) {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+.vol-dialog ::v-deep(.el-dialog__header) {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ padding: 0px 13px;
+ line-height: 53px;
+ border-bottom: 1px solid #e6e6e6;
+ height: 50px;
+ color: rgb(79, 79, 79);
+ font-weight: bold;
+ font-size: 14px;
+ margin: 0;
+ // background-image: linear-gradient(135deg, #0cd7bd 10%, #50c3f7);
+}
+
+.vol-dialog ::v-deep(.el-dialog__footer),
+.vol-dialog ::v-deep(.el-dialog__body) {
+ padding: 0;
+}
+
+.vol-dialog ::v-deep(.el-dialog__headerbtn) {
+ top: 0;
+ padding-top: 8px;
+ height: 50px;
+ width: 0;
+ padding-right: 30px;
+ padding-left: 5px;
+}
+// .vol-dialog ::v-deep(.el-dialog__headerbtn .el-dialog__close) {
+// color: #fff;
+// }
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenu.vue"
new file mode 100644
index 0000000..66a9779
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenu.vue"
@@ -0,0 +1,198 @@
+<template>
+ <div class="vol-el-menu">
+ <el-menu
+ close="vol-el-menu--vertical"
+ :default-openeds="openedIds"
+ :default-active="defaultActive"
+ :unique-opened="true"
+ @select="select"
+ :collapse="isCollapse"
+ @open="handleOpen"
+ @close="handleClose"
+ @contextmenu.prevent="bindRightClickMenu"
+ >
+ <template v-for="item in convertTree(list)">
+ <el-sub-menu
+ :key="item.id"
+ :index="'' + item.id"
+ v-if="item.children.length && (!enable || item.enable == 1)"
+ >
+ <template #title>
+ <i class="menu-icon" :class="item.icon"></i>
+ <span> {{ item.name }}</span>
+ </template>
+ <vol-element-menu-child
+ :enable="enable"
+ :list="item.children"
+ ></vol-element-menu-child>
+ </el-sub-menu>
+ <template v-else>
+ <el-menu-item
+ class="menu-item-lv1"
+ v-if="!enable || item.enable == 1"
+ :key="item.id"
+ :index="'' + item.id"
+ >
+ <i :class="item.icon"></i>
+ <span> {{ item.name }}</span>
+ </el-menu-item>
+ </template>
+ </template>
+ </el-menu>
+ </div>
+</template>
+
+<script>
+import VolElementMenuChild from './VolElementMenuChild';
+import { useRouter } from 'vue-router';
+
+import {
+ defineComponent,
+ reactive,
+ watch,
+ ref,
+ toRef,
+ toRefs,
+ getCurrentInstance
+ // onMounted,
+} from 'vue';
+export default defineComponent({
+ components: {
+ 'vol-element-menu-child': VolElementMenuChild
+ },
+ props: {
+ enable: {
+ type: Boolean,
+ default: false //鏄惁鍒ゆ柇enable=1
+ },
+ isCollapse: {
+ type: Boolean,
+ default: false
+ },
+ onSelect: {
+ type: Function,
+ default: (x) => {}
+ },
+ openSelect: {
+ //鎵撳紑鐨勬椂鍊欐槸鍚﹁Е鍙戦�変腑浜嬩欢
+ type: Boolean,
+ default: true
+ },
+ list: {
+ type: Array,
+ default: []
+ },
+ rootId: {
+ type: String,
+ default: '0'
+ },
+ currentMenuId: {
+ type: Number,
+ default: 0
+ }
+ },
+ setup(props) {
+ // const { list } = toRefs(props);
+ // const treeList = ref([]);
+ const getTree = (id, node, data) => {
+ if (!node.children) {
+ node.children = [];
+ }
+ data.forEach((x) => {
+ if (x.parentId == id && !node.children.some((c) => c.id === x.id)) {
+ node.children.push(x);
+ getTree(x.id, x, data);
+ }
+ });
+ };
+ let rootTreeId = !isNaN(props.rootId) ? ~~props.rootId : props.rootId;
+ props.list.forEach((x) => {
+ if (!x.icon || x.icon.substring(0, 3) != 'el-') {
+ x.icon = 'el-icon-menu';
+ }
+ x.children = [];
+ x.isRoot = x.parentId === rootTreeId;
+ });
+ const convertTree = (data) => {
+ var root_data = [];
+ data.forEach((x) => {
+ if (x.parentId === rootTreeId) {
+ if (!x.hasOwnProperty('enable')) x.enable = 1;
+ root_data.push(x);
+ getTree(x.id, x, data);
+ }
+ });
+ return root_data;
+ };
+ const openedIds = reactive([props.currentMenuId]);
+ const defaultActive = ref(props.currentMenuId + '');
+ let _base = getCurrentInstance().appContext.config.globalProperties.base;
+ watch(
+ () => props.currentMenuId,
+ (newVal, oldVal) => {
+ defaultActive.value = newVal + '';
+ openedIds.splice(0);
+ openedIds.push(
+ ..._base.getTreeAllParent(newVal, props.list).map((c) => {
+ return c.id;
+ })
+ );
+ }
+ );
+ const router = useRouter();
+ let eventSelect = false;
+ const select = (index, path) => {
+ if (eventSelect) {
+ return;
+ }
+ eventSelect = true;
+ setTimeout(() => {
+ eventSelect = false;
+ }, 20);
+
+ let _item = props.list.find((x) => {
+ return x.id == index;
+ });
+ props.onSelect(index, _item);
+ router.push({ path: _item.path || '' });
+ };
+
+ const handleOpen = (index, path) => {
+ if (props.openSelect) {
+ select(index, path);
+ }
+ };
+ const handleClose = () => {};
+
+ /**
+ * 鑿滃崟瀵艰埅鍙抽敭浜嬩欢
+ * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+ */
+ const bindRightClickMenu = (enable) => {
+ if (!enable) return;
+ };
+
+ return {
+ // treeList,
+ // list,
+ select,
+ convertTree,
+ handleOpen,
+ handleClose,
+ bindRightClickMenu,
+ openedIds,
+ defaultActive
+ };
+ }
+});
+</script>
+<style lang="less" scoped>
+.vol-el-menu {
+ box-sizing: content-box;
+ width: 100%;
+ .menu-icon {
+ font-size: 18px;
+ margin-right: 6px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenuChild.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenuChild.vue"
new file mode 100644
index 0000000..ccea321
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolElementMenuChild.vue"
@@ -0,0 +1,56 @@
+<template>
+ <div class="vol-el-menu-item">
+ <template v-for="(item) in list">
+ <template v-if="item.children&&item.children.length">
+ <el-menu-item :key="item.id"
+ :index="'' + item.id"
+ v-if="!item.children.length && (!enable || item.enable == 1)">
+ <template #title></template>
+ <span> {{ item.name }}</span>
+ </el-menu-item>
+ <el-sub-menu :key="item.id"
+ :index="'' + item.id"
+ v-if="item.children.length && (!enable || item.enable == 1)">
+ <template #title>
+ <span> {{ item.name }}</span>
+ </template>
+ <vol-element-menu-child :enable="enable" :list="item.children" />
+ </el-sub-menu>
+ </template>
+ <template v-else>
+ <el-menu-item :key="item.id"
+ :index="'' + item.id"
+ v-if="(!enable || item.enable == 1)">
+ <template #title></template>
+ <span> {{item.name }}</span>
+ </el-menu-item>
+ </template>
+ </template>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "vol-element-menu-child",
+ props: {
+ list: {
+ type: Array,
+ default: [],
+ },
+ enable: {
+ type: Boolean,
+ default: false, //鏄惁鍒ゆ柇enable=1
+ },
+ },
+};
+</script>
+
+<style scoped lang="less">
+.vol-el-menu-item ::v-deep(.el-menu-item) {
+ height: 42px !important;
+ line-height: 42px !important;
+}
+</style>
+
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue"
new file mode 100644
index 0000000..3e6b9b1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue"
@@ -0,0 +1,1487 @@
+<template>
+ <el-form
+ style="display: inline-block; width: 100%"
+ :inline="true"
+ ref="volform"
+ @submit.prevent
+ :model="formFields"
+ :label-width="labelWidth"
+ :rules="rules"
+ >
+ <template v-for="(row, findex) in formRules" :key="findex">
+ <div class="vol-form-item">
+ <el-form-item
+ :label="item.title ? item.title + '锛�' : ''"
+ v-show="!item.hidden"
+ v-for="(item, index) in row"
+ :prop="item.field"
+ :key="item.field + index"
+ :style="{ width: getColWidth(item) + '%' }"
+ >
+ <!-- render -->
+ <form-expand
+ v-if="item.render && typeof item.render == 'function'"
+ :render="item.render"
+ :par="12"
+ ></form-expand>
+ <!-- 2021.10.17澧炲姞琛ㄥ崟瀹炴椂鏂规硶璁$畻 -->
+ <span
+ v-else-if="
+ item.readonly && typeof formFields[item.field] == 'function'
+ "
+ >{{ formFields[item.field]() }}</span
+ >
+ <!-- 鍙鍥剧墖鎴栨枃浠� -->
+ <div v-else-if="isReadonlyImgFile(item, formFields)">
+ <div v-if="item.type == 'img'" class="form-imgs">
+ <div
+ class="img-item"
+ v-for="(img, imgIndex) in formFields[item.field]"
+ :key="imgIndex"
+ >
+ <img
+ :src="getSrc(img.path)"
+ :onerror="errorImg"
+ @click="previewImg(img.path)"
+ />
+ </div>
+ </div>
+ <div
+ v-else
+ class="form-file-list"
+ v-for="(file, fileIndex) in formFields[item.field]"
+ :key="fileIndex"
+ >
+ <a @click="dowloadFile(formFields[item.field][fileIndex])">{{
+ file.name
+ }}</a>
+ </div>
+ </div>
+
+ <div v-else :class="{ 'form-item-extra': item.extra }">
+ <!-- 鍙灞炴�� -->
+ <label
+ :style="item.inputStyle"
+ v-if="item.type == 'label'"
+ class="readonly-input"
+ >{{ getText(formFields, item) }}</label
+ >
+ <!-- 20223.05.13闆嗘垚el-tree-select -->
+ <!-- :filter-method="(value)=>{filterMethod(value,item.data)}" -->
+ <!-- :filterable="true" -->
+ <el-tree-select
+ style="width: 100%"
+ v-else-if="item.type == 'treeSelect'"
+ v-model="formFields[item.field]"
+ :data="item.data"
+ :multiple="item.multiple"
+ :render-after-expand="false"
+ :show-checkbox="false"
+ :check-strictly="true"
+ check-on-click-node
+ node-key="key"
+ :props="{ label: 'label' }"
+ >
+ <template #default="{data,node }">
+ <!-- <el-checkbox v-model="node.checked"></el-checkbox> -->
+ <!-- {{getNode(node, data)}} -->
+ <!-- {{node.checked}} -->
+ <!-- 杩欓噷杩樻湁鐐归棶棰橈紝鍚庨潰澶勭悊 -->
+ {{ data.label}}</template
+ >
+ </el-tree-select>
+ <template
+ v-else-if="['select', 'selectList'].indexOf(item.type) != -1"
+ >
+ <el-select-v2
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-if="item.data.length > select2Count"
+ v-model="formFields[item.field]"
+ filterable
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :allow-create="item.autocomplete"
+ :options="item.data"
+ @change="
+ (val) => {
+ item.onChange(val, item.data);
+ }
+ "
+ clearable
+ >
+ <template #default="{ item }">
+ {{ item.label }}
+ </template>
+ </el-select-v2>
+ <el-select
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-else-if="item.remote || item.url"
+ v-model="formFields[item.field]"
+ filterable
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ clearable
+ :remote-method="
+ (val) => {
+ remoteSearch(item, formFields, val);
+ }
+ "
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ <el-select
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-else
+ v-model="formFields[item.field]"
+ filterable
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :allow-create="item.autocomplete"
+ @change="
+ (val) => {
+ item.onChange(val, item.data);
+ }
+ "
+ clearable
+ >
+ <el-option
+ v-show="!item.hidden"
+ :disabled="item.disabled"
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ </template>
+
+ <el-switch
+ v-show="!item.hidden"
+ v-else-if="item.type == 'switch'"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ active-color="#0f84ff"
+ @change="item.onChange"
+ inactive-color="rgb(194 194 194)"
+ :active-value="
+ typeof formFields[item.field] == 'boolean'
+ ? true
+ : typeof formFields[item.field] == 'string'
+ ? '1'
+ : 1
+ "
+ :inactive-value="
+ typeof formFields[item.field] == 'boolean'
+ ? false
+ : typeof formFields[item.field] == 'string'
+ ? '0'
+ : 0
+ "
+ >
+ </el-switch>
+
+ <el-radio-group
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ v-else-if="item.type == 'radio'"
+ @change="item.onChange"
+ >
+ <el-radio
+ v-for="kv in item.data"
+ :disabled="item.readonly || item.disabled"
+ :key="kv.key"
+ :label="kv.key"
+ >{{ kv.value }}</el-radio
+ >
+ </el-radio-group>
+
+ <el-checkbox-group
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ v-else-if="item.type == 'checkbox'"
+ @change="item.onChange"
+ >
+ <el-checkbox
+ v-for="kv in item.data"
+ :key="kv.key"
+ :disabled="item.readonly || item.disabled"
+ :label="kv.key"
+ >{{ kv.value }}</el-checkbox
+ >
+ </el-checkbox-group>
+ <div
+ class="v-date-range"
+ style="display: flex"
+ v-else-if="
+ ['date', 'datetime'].indexOf(item.type) != -1 && item.range
+ "
+ >
+ <el-date-picker
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1; width: auto"
+ v-model="formFields[item.field][0]"
+ :type="item.type == 'date' ? 'date' : 'datetime'"
+ :disabledDate="(val) => getDateOptions(val, item)"
+ placeholder="寮�濮嬫椂闂�"
+ @change="
+ (val) => {
+ dateRangeChange(val, item);
+ }
+ "
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ <span style="margin: 0px 5px; font-size: 13px; color: #6f6b6b"
+ >鑷�</span
+ >
+ <el-date-picker
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1; width: auto"
+ v-model="formFields[item.field][1]"
+ placeholder="缁撴潫鏃堕棿"
+ :type="item.type == 'date' ? 'date' : 'datetime'"
+ :disabledDate="(val) => getDateOptions(val, item)"
+ @change="
+ (val) => {
+ dateRangeChange(val, item);
+ }
+ "
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ </div>
+ <!-- v-show涓嶆坊鍔犳牴鑺傜偣灏变細鎶ラ敊娌℃湁鏍圭偣鑺� -->
+ <div
+ v-show="!item.hidden"
+ style="width: 100%"
+ v-else-if="['date', 'datetime', 'month'].indexOf(item.type) != -1"
+ >
+ <el-date-picker
+ :size="size"
+ clearable
+ :disabled="item.readonly || item.disabled"
+ style="width: 100%"
+ v-model="formFields[item.field]"
+ @change="item.onChange"
+ :type="item.type"
+ :placeholder="
+ item.placeholder ? item.placeholder : '璇烽�夋嫨' + item.title
+ "
+ :disabledDate="(val) => getDateOptions(val, item)"
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ </div>
+
+ <el-time-picker
+ :size="size"
+ v-else-if="item.type == 'time'"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ placeholder="璇烽�夋嫨鏃堕棿"
+ :value-format="item.format || 'HH:mm:ss'"
+ :format="item.format"
+ style="width: 100%"
+ >
+ </el-time-picker>
+
+ <el-scrollbar
+ style="border: 1px solid #c7d8db; border-radius: 5px"
+ :height="item.height || 150"
+ v-else-if="
+ item.type == 'editor' && (item.readonly || item.disabled)
+ "
+ >
+ <div ref="editor" v-html="formFields[item.field]"></div>
+ </el-scrollbar>
+
+ <vol-wang-editor
+ ref="editor"
+ v-else-if="item.type == 'editor'"
+ :url="item.url || editor.uploadImgUrl"
+ :upload="item.upload || editor.upload"
+ v-model="formFields[item.field]"
+ :height="item.height || 350"
+ ></vol-wang-editor>
+
+ <vol-upload
+ v-show="!item.hidden"
+ v-else-if="isFile(item, formFields)"
+ :desc="item.desc"
+ :multiple="item.multiple"
+ :max-file="item.maxFile"
+ :max-size="item.maxSize"
+ :autoUpload="item.autoUpload"
+ :fileInfo="formFields[item.field]"
+ :url="item.url"
+ :img="item.type == 'img' || item.columnType == 'img'"
+ :excel="item.type == 'excel'"
+ :fileTypes="item.fileTypes ? item.fileTypes : []"
+ :upload-before="item.uploadBefore"
+ :upload-after="item.uploadAfter"
+ :append="item.multiple"
+ :on-change="
+ (files) => {
+ return fileOnChange(files, item);
+ }
+ "
+ :file-click="item.fileClick"
+ :remove-before="item.removeBefore"
+ :downLoad="item.downLoad ? true : false"
+ ></vol-upload>
+ <el-cascader
+ :size="size"
+ clearable
+ style="width: 100%; margin-top: -3px"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ v-else-if="item.type == 'cascader'"
+ :options="item.data"
+ :props="{
+ checkStrictly: item.changeOnSelect || item.checkStrictly
+ }"
+ @change="item.onChange"
+ >
+ </el-cascader>
+ <el-rate
+ v-else-if="item.type == 'rate'"
+ @change="
+ (val) => {
+ item.onChange && item.onChange(val);
+ }
+ "
+ :max="item.max"
+ v-model="formFields[item.field]"
+ />
+ <div
+ style="display: flex"
+ v-else-if="item.type == 'range' || item.range"
+ >
+ <el-input
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1"
+ v-model="formFields[item.field][0]"
+ clearable
+ />
+ <span style="margin: 0 5px">-</span>
+ <el-input
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1"
+ v-model="formFields[item.field][1]"
+ clearable
+ />
+ </div>
+ <el-input
+ :size="size"
+ clearable
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ :disabled="item.readonly || item.disabled"
+ v-else-if="item.type == 'textarea'"
+ v-model="formFields[item.field]"
+ type="textarea"
+ :autosize="{
+ minRows: item.minRows || 2,
+ maxRows: item.maxRows || 10
+ }"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ />
+ <el-input-number
+ :size="size"
+ style="width: 100%"
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ v-else-if="item.type == 'number'"
+ v-model="formFields[item.field]"
+ :min="item.min"
+ :disabled="item.readonly || item.disabled"
+ :max="item.max"
+ controls-position="right"
+ />
+ <el-input
+ :size="size"
+ clearable
+ :input-style="item.inputStyle"
+ v-else-if="item.type == 'password'"
+ type="password"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ />
+ <!-- 2021.11.18淇el-input娌℃湁榛樿enter浜嬩欢鏃跺洖杞﹀紓甯� -->
+ <el-input
+ :size="size"
+ clearable
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ v-else-if="item.onKeyPress"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ @keypress="
+ ($event) => {
+ onKeyPress($event, item);
+ }
+ "
+ @change="item.onKeyPress"
+ @keyup.enter="item.onKeyPress"
+ ></el-input>
+ <el-input
+ :size="size"
+ clearable
+ v-else
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ ></el-input>
+
+ <div class="form-extra" v-if="item.extra">
+ <form-expand
+ v-if="item.extra.render"
+ :render="item.extra.render"
+ ></form-expand>
+ <a
+ v-else-if="item.extra.click"
+ :style="item.extra.style"
+ @click="item.extra.click(item, formFields[item.field])"
+ >
+ <i v-if="item.extra.icon" :class="item.extra.icon" />
+ {{ item.extra.text }}
+ </a>
+ <a v-else :style="item.extra.style">
+ <i v-if="item.extra.icon" :class="item.extra.icon" />
+ {{ item.extra.text }}
+ </a>
+ </div>
+ </div>
+ </el-form-item>
+ </div>
+ </template>
+ <slot></slot>
+ <div style="width: 100%">
+ <slot name="footer"></slot>
+ </div>
+ </el-form>
+</template>
+<script>
+const rule = {
+ change: [
+ 'checkbox',
+ 'select',
+ 'date',
+ 'datetime',
+ 'drop',
+ 'radio',
+ 'cascader'
+ ], // 2020.05.31澧炲姞绾ц仈绫诲瀷
+ phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
+ decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/,
+ number: /(^[\-0-9][0-9]*([0-9]+)?)$/
+};
+const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password'];
+const types = {
+ int: 'number',
+ byte: 'number',
+ decimal: 'number', // "float",
+ string: 'string',
+ bool: 'boolean',
+ date: 'datetime',
+ date: 'date',
+ mail: 'email'
+};
+//琛ㄥ崟楠岃瘉娉ㄦ剰锛氭瘡娆¢獙璇侀兘蹇呴』鎵цcallback,鍚﹀垯楠岃瘉涓嶆墽琛屽洖璋冩柟娉�
+const colPow = Math.pow(10, 3);
+import FormExpand from './VolForm/VolFormRender';
+import {
+ defineAsyncComponent,
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance,
+ onMounted,
+ watch
+} from 'vue';
+export default defineComponent({
+ components: {
+ FormExpand,
+ 'vol-upload': defineAsyncComponent(() =>
+ import('@/components/basic/VolUpload.vue')
+ ),
+ 'vol-wang-editor': defineAsyncComponent(() =>
+ import('@/components/editor/VolWangEditor.vue')
+ )
+ },
+ props: {
+ loadKey: {
+ // 鏄惁鍔犺浇formRules瀛楁閰嶇疆鐨勬暟鎹簮
+ type: Boolean,
+ default: true
+ },
+ width: {
+ // 琛ㄥ崟瀹藉害
+ type: Number,
+ default: 0
+ },
+ labelWidth: {
+ // 琛ㄥ崟宸﹁竟label鏂囧瓧鏍囩鐨勫搴�
+ type: Number,
+ default: 100
+ },
+ formRules: {
+ // 琛ㄥ崟閰嶇疆瑙勫垯锛屽瀛楁绫诲瀷锛屾槸鍚﹀繀濉�
+ type: Array,
+ default: []
+ },
+ formFields: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ editor: {
+ // 2021.01.16缂栬緫鍣ㄤ俊鎭� {uploadImgUrl:"",upload:null//涓婁紶鏂规硶}
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ size: {
+ type: String, //large / default / small
+ default: 'large'
+ },
+ select2Count: {
+ //瓒呭嚭鏁伴噺鏄剧ずselect2缁勪欢
+ type: Number,
+ default: 500
+ }
+ },
+ computed: {
+ rules() {
+ let ruleResult = {};
+ this.formRules.forEach((option, xIndex) => {
+ option.forEach((item) => {
+ ruleResult[item.field] = [this.getRule(item, this.formFields)];
+ });
+ });
+ if (this.$refs.volform) {
+ setTimeout(() => {
+ this.$refs.volform.clearValidate();
+ }, 100);
+ }
+ return ruleResult;
+ }
+ },
+ setup(props, context) {
+ const { appContext, proxy } = getCurrentInstance();
+ const remoteCall = ref(true);
+ const span = ref(1);
+ const rangeFields = toRefs([]);
+ const volform = ref(null);
+ const numberFields = toRefs([]);
+ onMounted(() => {});
+ const initFormRules = (init) => {
+ if (props.loadKey) {
+ initSource();
+ }
+ props.formRules.forEach((row, xIndex) => {
+ if (row.length > span.value) span.value = row.length;
+ let _count = 0,
+ _size = 0;
+ row.forEach((x) => {
+ if (x.colSize > 0) {
+ _size = _size + x.colSize;
+ _count++;
+ }
+ });
+ if (_count > 0 && row.length - _count > 0) {
+ let _cellSize = (12 - _size) / (row.length - _count);
+ row.forEach((x) => {
+ if (!x.colSize) {
+ x.colSize = _cellSize;
+ }
+ });
+ }
+ row.forEach((item, yIndex) => {
+ if (item.type == 'number') {
+ numberFields.push(item.field);
+ }
+ // 鐩墠鍙敮鎸乻elect鍗曢�夎繙绋嬫悳绱紝remote杩滅▼浠庡悗鍙板瓧鍏告暟鎹簮杩涜鎼滅储锛寀rl浠庢寚瀹氱殑url鎼滅储
+ if (item.remote || item.url) {
+ // item.remoteData = [];
+ item.loading = false;
+ item.point = { x: xIndex, y: yIndex };
+ }
+ // 鍒濆鍖栦笂浼犳枃浠朵俊鎭�
+ initUpload(item, init);
+ // 鍒濆鍖栨暟鎹簮绌哄璞�
+ if (item.dataKey) {
+ // 涓嬫媺妗嗛兘寮哄埗璁剧疆涓哄瓧绗︿覆绫诲瀷
+ item.columnType = 'string';
+ if (!item.data) {
+ item.data = [];
+ }
+ }
+
+ if (item.range || item.type == 'range') {
+ if (
+ !(props.formFields[item.field] instanceof Array) ||
+ props.formFields[item.field].length != 2
+ ) {
+ props.formFields[item.field] = ['', ''];
+ }
+ rangeFields.push(item.field);
+ }
+ });
+ });
+ };
+
+ const initSource = () => {
+ let keys = [],
+ binds = [];
+ // 鍒濆鍖栧瓧鍏告暟鎹簮
+ props.formRules.forEach((item) => {
+ item.forEach((x) => {
+ if (x.dataKey && (!x.data || x.data.length == 0) && !x.remote) {
+ x.data = [];
+ binds.push({ key: x.dataKey, data: x.data, type: x.type });
+ if (keys.indexOf(x.dataKey) == -1) {
+ keys.push(x.dataKey);
+ }
+ }
+ });
+ });
+
+ if (keys.length == 0) return;
+ appContext.config.globalProperties.http
+ .post('/api/Sys_Dictionary/GetVueDictionary', keys)
+ .then((dic) => {
+ bindOptions(dic, binds);
+ proxy.$emit('dicInited', dic);
+ });
+ };
+ const bindOptions = (dic, binds) => {
+ dic.forEach((d) => {
+ if (d.data.length > props.select2Count) {
+ if (
+ !binds.some((x) => {
+ return x.key == d.dicNo && x.type == 'cascader';
+ })
+ ) {
+ d.data.forEach((item) => {
+ item.label = item.value;
+ item.value = item.key;
+ });
+ }
+ }
+ binds.forEach((x) => {
+ if (x.key != d.dicNo) return true;
+ // 濡傛灉鏈夋暟鎹殑鍒欎笉鏌ヨ
+ if (x.data.length > 0) return true;
+ //2022.03.13澧炲姞绾ц仈鏁版嵁婧愯嚜鍔ㄨ浆鎹�
+ if (x.type == 'cascader' || x.type == 'treeSelect') {
+ let _data = JSON.parse(JSON.stringify(d.data));
+ let cascaderArr = appContext.config.globalProperties.base.convertTree(
+ _data,
+ (node, data, isRoot) => {
+ if (!node.inited) {
+ node.inited = true;
+ node.label = node.value;
+ node.value = node.key;
+ }
+ }
+ );
+ props.formRules.forEach((option) => {
+ option.forEach((item) => {
+ if (item.dataKey == x.key) {
+ item.orginData = x.data;
+ item.data = cascaderArr;
+ }
+ });
+ });
+ } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) {
+ let source = d.data,
+ newSource = new Array(source.length);
+ for (let index = 0; index < source.length; index++) {
+ newSource[index] = {
+ key: source['key'] + '',
+ value: source['value']
+ };
+ }
+ x.data.push(...newSource);
+ } else {
+ x.data.push(...d.data);
+ }
+ });
+ });
+ };
+
+ const initUpload = (item, init) => {
+ if (!init) return;
+ if (
+ ['img', 'excel', 'file'].indexOf(item.type != -1) ||
+ item.columnType == 'img'
+ ) {
+ // 鍙槸娌¤缃槸鍚﹁嚜鍔ㄤ笂浼犵殑锛岄粯璁ら兘鏄�夋嫨鏂囦欢鍚庤嚜鍔ㄤ笂浼�
+ if (!item.hasOwnProperty('autoUpload')) {
+ item.autoUpload = true;
+ }
+ if (!item.hasOwnProperty('fileList')) {
+ item.fileList = true;
+ }
+ if (!item.hasOwnProperty('downLoad')) {
+ item.downLoad = true;
+ }
+ if (!item.removeBefore) {
+ item.removeBefore = (index, file, files) => {
+ return true;
+ };
+ }
+ if (!item.fileClick) {
+ item.fileClick = (index, file, files) => {
+ return true;
+ };
+ }
+ if (!item.onChange) {
+ item.onChange = (files) => {
+ return true;
+ };
+ }
+ if (!item.uploadAfter) {
+ item.uploadAfter = (result, files) => {
+ return true;
+ };
+ }
+ if (!item.uploadBefore) {
+ item.uploadBefore = (files) => {
+ return true;
+ };
+ }
+ }
+ };
+ const validate = (callback) => {
+ let result = true;
+ volform.value.validate((valid) => {
+ if (!valid) {
+ appContext.config.globalProperties.$message.error('鏁版嵁楠岃瘉鏈�氳繃!');
+ result = false;
+ } else if (typeof callback === 'function') {
+ try {
+ callback(valid);
+ } catch (error) {
+ let msg = `琛ㄥ崟楠岃瘉鍥炶皟鏂规硶寮傚父锛�${error.message}`;
+ appContext.config.globalProperties.$message.error(msg);
+ console.log(msg);
+ }
+ }
+ });
+ return result;
+ };
+
+ initFormRules(true);
+ return {
+ remoteCall,
+ span,
+ rangeFields,
+ numberFields,
+ validate,
+ volform
+ // initFormRules,
+ // initSource
+ };
+ },
+ created() {
+ this.formRules.forEach((rules) => {
+ rules.forEach((option) => {
+ if (option.type == 'treeSelect' && option.multiple === undefined) {
+ option.multiple = true;
+ }
+ });
+ });
+ },
+
+ data() {
+ return {
+ // remoteCall: true,
+ errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"'
+ // span: 1,
+ // rangeFields: [],
+ };
+ },
+ methods: {
+ getColWidth(item) {
+ //2021.08.30 澧炲姞鍔ㄦ�佽绠楄〃鍗曞搴�
+ let _span = 0;
+ this.formRules.forEach((row, xIndex) => {
+ //2022.05.06 杩藉姞琛ㄥ崟涓殣钘忕殑鍏冪礌涓嶅弬涓庡姩鎬佽绠楄〃鍗曞搴�
+ let rowLength = row.filter((item) => {
+ return !item.hidden;
+ }).length;
+ if (rowLength > _span) _span = rowLength;
+ });
+ let rete =
+ Math.round(((item.colSize || 12 / _span) / 0.12) * colPow, 10.0) /
+ colPow;
+ if (item.colSize) return rete.toFixed(3);
+ return rete.toFixed(3);
+ // return (100 - rete).toFixed(3);
+ },
+ previewImg(url) {
+ this.base.previewImg(url, this.http.ipAddress);
+ },
+ getSrc(path) {
+ if (!path) return;
+ if (!this.base.isUrl(path) && path.indexOf('.') != -1) {
+ return this.http.ipAddress + path;
+ }
+ return path;
+ },
+ // 鏄惁涓哄浘鐗囨枃浠剁瓑鏍煎紡骞跺瀛楁鐨勮浆鎹㈡垚鏁扮粍锛歔{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}]
+ isFile(item, formFields) {
+ if (
+ item.type == 'img' ||
+ item.columnType == 'img' ||
+ item.type == 'excel' ||
+ item.type == 'file'
+ ) {
+ this.convertFileToArray(item, formFields);
+ return true;
+ }
+ return false;
+ },
+ isReadonlyImgFile(item, formFields) {
+ if ((item.disabled || item.readonly) && this.isFile(item, formFields)) {
+ return true;
+ }
+ return false;
+ },
+ convertFileToArray(item, formFields) {
+ if (!item.maxFile) {
+ item.maxFile = 1; // 榛樿鍙兘涓婁紶涓�涓枃浠讹紝鍙互鍦╫nInit涓缃�
+ }
+
+ let fileInfo = formFields[item.field];
+ if (fileInfo instanceof Array) {
+ return;
+ }
+ if (fileInfo === null || fileInfo === undefined) {
+ formFields[item.field] = [];
+ return;
+ }
+ // 灏嗕互閫楀彿闅斿紑鐨勬枃浠跺垎鍓叉垚鏁扮粍127.0.0.1/aa/1.jpg,灏�127.0.0.1/aa/2.jpg
+ if (typeof fileInfo === 'string') {
+ if (fileInfo.trim() === '') {
+ formFields[item.field] = [];
+ return;
+ }
+ // 濡傛灉鏂囦欢璺緞鏄瓧绗︿覆锛屽垯浣跨敤锛屾媶鍒�
+ fileInfo = fileInfo.replace(/\\/g, '/');
+ let files = fileInfo.split(',');
+ formFields[item.field] = [];
+ for (let index = 0; index < files.length; index++) {
+ let file = files[index];
+ let splitFile = file.split('/');
+ formFields[item.field].push({
+ name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file,
+ path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file,
+ });
+ }
+ }
+ },
+ dowloadFile(file) {
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken()
+ },
+ this.http.ipAddress
+ );
+ },
+ validatorPhone(ruleOption, value, callback) {
+ if (!ruleOption.required && !value && value != '0') {
+ return callback();
+ }
+ if (!rule.phone.test((value || '').trim())) {
+ return callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'));
+ }
+ callback();
+ },
+ validatorPwd(ruleOption, value, callback) {
+ if (!ruleOption.required && !value && value != '0') {
+ return callback();
+ }
+ if ((value + '').trim().length < 6) {
+ return callback(new Error('瀵嗙爜闀垮害涓嶈兘灏忎簬6浣�'));
+ }
+ callback();
+ },
+ convertArrayValue(data, val) {
+ // 2020.12.13澧炲姞琛ㄥ崟澶氶�夊彧杞崲瀛楀吀
+ // 缂栬緫澶氶�塼able鏄剧ず
+ //2023.04.20淇鍙涓簂abel鏃跺師鏁版嵁琚瓧鍏告浛鎹簡鐨勯棶棰�
+ let valArr = Array.isArray(val)
+ ? val.map((x) => {
+ return x;
+ })
+ : val.split(',');
+ for (let index = 0; index < valArr.length; index++) {
+ var _item = data.find((x) => {
+ return x.key && x.key != '0' && x.key + '' == valArr[index] + '';
+ });
+ if (_item) {
+ valArr[index] = _item.value;
+ }
+ }
+ return valArr.join(',');
+ },
+ getText(formFields, item) {
+ // 2019.10.24淇琛ㄥ崟select缁勪欢涓哄彧璇荤殑灞炴�ф椂娌℃湁缁戝畾鏁版嵁婧�
+ let text = formFields[item.field];
+ if (typeof text === 'function') return text(formFields);
+ if (text === 'null' || text === '' || text === null || text === undefined)
+ return '--';
+ //2021.03.02澧炲姞鍙鏃舵棩鏈熷鐞�
+ if (item.type == 'date') {
+ return text.replace('T', ' ').split(' ')[0];
+ }
+ //2021.03.31淇琛ㄥ崟switch鍙鏃舵病鏈夎浆鎹㈠�肩殑闂
+ if (item.type == 'switch') {
+ return text ? '鏄�' : '鍚�';
+ }
+ if (!item.data) return text;
+ if (item.type == 'selectList' || item.type == 'checkbox') {
+ return this.convertArrayValue(item.data, text);
+ }
+ var _item = item.data.find((x) => {
+ return x.key == text;
+ });
+ return _item ? _item.value : text;
+ },
+ onClear(item, formFields) {
+ // 杩滅▼select鏍囩娓呯┖閫夐」
+ item.data.splice(0);
+ // console.log(2);
+ },
+ onChange(item, value) {
+ if (item.onChange && typeof item.onChange === 'function') {
+ item.onChange(value, item);
+ }
+ },
+ onRemoteChange(item, value) {
+ // 绗簩娆℃墦寮�鏃讹紝榛樿鍊兼垚浜唘ndefined锛屽緟鏌iewgrid涓噸缃唬鐮�
+ if (value == undefined && item.data.length > 0) {
+ this.formFields[item.field] = item.data[0].key;
+ // console.log('undefined');
+ }
+ this.remoteCall = false;
+ if (item.onChange && typeof item.onChange === 'function') {
+ item.onChange(value, item);
+ }
+ },
+ getData(item) {
+ return item.data;
+ },
+
+ // 杩滅▼鎼滅储(鎵撳紑寮瑰嚭妗嗘椂搴旇绂佹鎼滅储)
+ remoteSearch(item, formFields, val) {
+ if (!item.remote && !item.url) {
+ return;
+ }
+ if (
+ val == '' ||
+ (item.data.length == 1 &&
+ (val == item.data[0].key || val == item.data[0].value))
+ ) {
+ return;
+ }
+ // 寮瑰嚭妗嗘垨鍒濆鍖栬〃鍗曟椂缁檇ata璁剧疆鏁扮粍榛樿鍊�2
+ // 2020.09.26淇杩滅▼鎼滅储鑷畾涔塽rl涓嶈捣浣滅敤鐨勯棶棰�
+ let url;
+ if (typeof item.url === 'function') {
+ url = item.url(val, item.dataKey, item);
+ } else {
+ url =
+ (item.url || '/api/Sys_Dictionary/GetSearchDictionary') +
+ '?dicNo=' +
+ item.dataKey +
+ '&value=' +
+ val;
+ }
+ this.http.post(url).then((dicData) => {
+ //this.$set(item, "loading", false);
+ item.loading = false;
+ item.data = dicData;
+ this.formRules[item.point.x].splice(item.point.y, 1, item);
+ });
+ },
+ getObject(date) {
+ if (typeof date === 'object') {
+ return date;
+ }
+ return new Date(date);
+ },
+ reset(sourceObj) {
+ // 閲嶇疆琛ㄥ崟鏃讹紝绂佺敤杩滅▼鏌ヨ
+ this.$refs['volform'].resetFields();
+ if (this.rangeFields.length) {
+ this.rangeFields.forEach((key) => {
+ this.formFields[key].splice(0);
+ this.formFields[key] = [null, null];
+ });
+ }
+ if (!sourceObj) return;
+ for (const key in this.formFields) {
+ if (sourceObj.hasOwnProperty(key)) {
+ this.formFields[key] = sourceObj[key];
+ if (this.numberFields.indexOf(key) != -1) {
+ this.formFields[key] = sourceObj[key] * 1 || 0;
+ }
+ }
+ }
+ // this.remoteCall = true;
+ },
+
+ fileOnChange(files, item) {
+ this.$refs.volform.clearValidate(item.field);
+ if (item.onChange) {
+ return item.onChange(files);
+ }
+ return true;
+ },
+ isReadonly(item) {
+ return item.readonly || item.disabled;
+ },
+ getRule(item, formFields) {
+ //2021.07.17澧炲姞鍙琛ㄥ崟涓嶉獙璇�
+ //range涓巗wtich鏆傛椂涓嶅仛鏍¢獙
+ if (
+ // item.readonly ||
+ // item.disabled ||
+ item.type == 'switch' ||
+ item.type == 'range'
+ )
+ return { required: false };
+ // 鐢ㄦ埛璁剧疆鐨勮嚜瀹氫箟鏂规硶
+ if (item.validator && typeof item.validator === 'function') {
+ return {
+ validator: (rule, val, callback) => {
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ let message = item.validator(rule, val);
+ if (message) return callback(new Error(message + ''));
+ return callback();
+ },
+ required: item.required,
+ trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur'
+ };
+ }
+ if (['img', 'excel', 'file'].indexOf(item.type) != -1) {
+ return {
+ validator: (rule, val, callback) => {
+ //2021.09.05绉婚櫎鏂囦欢涓婁紶榛樿蹇呭~
+ if (
+ item.required &&
+ !this.isReadonly(item) &&
+ (!val || !val.length)
+ ) {
+ return callback(
+ new Error(item.type == 'img' ? '璇蜂笂浼犵収鐗�' : '璇蜂笂浼犳枃浠�')
+ );
+ }
+ return callback();
+ },
+ required: item.required,
+ trigger: 'change'
+ };
+ }
+ // 璁剧疆鏁板瓧鐨勬渶澶у�兼皯鏈�灏忓��
+ if (
+ item.type == 'number' ||
+ item.columnType == 'number' ||
+ item.columnType == 'int' ||
+ item.type == 'decimal'
+ ) {
+ // 濡傛灉鏄繀濉」鐨勬暟瀛楋紝璁剧疆涓�涓粯璁ゆ渶澶т笌鏈�鍊煎皬
+ if (item.required && typeof item.min !== 'number') {
+ item.min = 0; //item.type == "decimal" ? 0.1 : 1;
+ }
+
+ return {
+ required: item.required,
+ message: item.title + '鍙兘鏄暟瀛�',
+ title: item.title,
+ trigger: 'blur',
+ min: item.min,
+ max: item.max,
+ type: item.columnType || item.type,
+ validator: (ruleObj, value, callback) => {
+ if (!ruleObj.min && !ruleObj.max) {
+ if (ruleObj.required) {
+ if ((!value && value != '0') || !rule.decimal.test(value)) {
+ return callback(new Error('鍙兘鏄暟瀛�'));
+ }
+ }
+ return callback();
+ }
+ if (this.isReadonly(item)) return callback();
+ if (ruleObj.type == 'number') {
+ if (!rule.number.test(value)) {
+ ruleObj.message = ruleObj.title + '鍙兘鏄暣鏁�';
+ return callback(new Error(ruleObj.message));
+ }
+ } else {
+ if (!rule.decimal.test(value)) {
+ ruleObj.message = ruleObj.title + '鍙兘鏄暟瀛�';
+ return callback(new Error(ruleObj.message));
+ }
+ }
+ if (
+ ruleObj.min !== undefined &&
+ typeof ruleObj.min === 'number' &&
+ value < ruleObj.min
+ ) {
+ ruleObj.message = ruleObj.title + '涓嶈兘灏忎簬' + ruleObj.min;
+ return callback(new Error(ruleObj.message));
+ }
+ if (
+ ruleObj.max !== undefined &&
+ typeof ruleObj.max === 'number' &&
+ value > ruleObj.max
+ ) {
+ ruleObj.message = ruleObj.title + '涓嶈兘澶т簬' + ruleObj.max;
+ return callback(new Error(ruleObj.message));
+ }
+ return callback();
+ }
+ };
+ }
+
+ // 鎵嬫満銆佸瘑鐮侀獙璇�
+ if (item.type == 'password' || item.type == 'phone') {
+ return {
+ validator:
+ item.type == 'phone' ? this.validatorPhone : this.validatorPwd,
+ required: item.required,
+ trigger: 'blur'
+ };
+ }
+
+ if (!item.required && item.type != 'mail') return { required: false };
+
+ if (!item.hasOwnProperty('type')) item.type = 'text';
+
+ if (inputTypeArr.indexOf(item.type) != -1) {
+ let message =
+ item.title +
+ (item.type == 'mail' ? '蹇呴』鏄竴涓偖绠卞湴鍧�' : '涓嶈兘涓虹┖');
+ let type = item.type == 'mail' ? 'email' : types[item.columnType];
+ let _rule = {
+ required: true,
+ message: message,
+ trigger: 'blur',
+ type: type,
+ validator: (ruleObj, value, callback) => {
+ if (
+ !this.isReadonly(item) &&
+ (value === '' || value === undefined || value === null)
+ ) {
+ return callback(new Error(ruleObj.message));
+ }
+ return callback();
+ }
+ };
+ if (item.type == 'mail') {
+ _rule.validator = undefined;
+ return _rule;
+ }
+ if (item.min) {
+ _rule.min = item.min;
+ _rule.message = item.title + '鑷冲皯' + item.min + '涓瓧绗�!';
+ }
+ if (item.max) {
+ return [
+ _rule,
+ {
+ max: item.max,
+ required: true,
+ message: item.title + '鏈�澶�' + item.max + '涓瓧绗�!',
+ trigger: 'blur'
+ }
+ ];
+ }
+ return _rule;
+ }
+
+ if (item.type == 'radio') {
+ return {
+ required: item.required,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ type: 'string'
+ };
+ }
+ if (
+ item.type == 'date' ||
+ item.type == 'datetime' ||
+ item.type == 'month' ||
+ item.type == 'time'
+ ) {
+ return {
+ required: true,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ type: item.range ? 'array' : 'string',
+ validator: (rule, val, callback) => {
+ if (this.isReadonly(item)) return callback();
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ if (!val || (item.range && !val.length)) {
+ return callback(new Error('璇烽�夋嫨鏃ユ湡'));
+ }
+ return callback();
+ }
+ };
+ }
+
+ if (item.type == 'cascader') {
+ return {
+ type: 'array',
+ required: true,
+ min: item.min || 1,
+ // message: "璇烽�夋嫨" + item.title,
+ trigger: 'change',
+ validator: (rule, val, callback) => {
+ if (this.isReadonly(item)) return callback();
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ let _arr = this.formFields[item.field];
+ if (!_arr || !_arr.length) {
+ return callback(new Error('璇烽�夋嫨' + item.title));
+ }
+ return callback();
+ }
+ };
+ }
+
+ if (
+ ['select', 'selectList', 'checkbox', 'cascader', 'treeSelect'].indexOf(
+ item.type
+ ) != -1
+ ) {
+ let _rule = {
+ type: item.type == 'select' ? 'string' : 'array',
+ required: true,
+ min: item.min || 1,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ validator: (rule, value, callback) => {
+ if (this.isReadonly(item)) return callback();
+ //2021.11.27淇澶氶�夋病鏈夋彁绀虹殑闂
+ if (value == undefined || value === '') {
+ return callback(new Error(rule.message));
+ } else if (
+ (item.type == 'checkbox' ||
+ item.type == 'selectList' ||
+ item.type == 'treeSelect') &&
+ (!(value instanceof Array) || !value.length)
+ ) {
+ return callback(new Error(rule.message));
+ }
+ return callback();
+ }
+ };
+
+ if (_rule.max) {
+ _rule.nax = item.max;
+ _rule.message = '鏈�澶氬彧鑳介�夋嫨' + item.max + '椤�';
+ }
+ return _rule;
+ }
+ return {};
+ },
+ compareDate(date1, date2) {
+ if (!date2) {
+ return true;
+ }
+ return (
+ date1.valueOf() <
+ (typeof date2 == 'number' ? date2 : new Date(date2).valueOf())
+ );
+ },
+ getDateOptions(date, item) {
+ //2021.07.17璁剧疆鏃堕棿鍙�夎寖鍥�
+ if ((!item.min && !item.max) || !date) {
+ return false;
+ }
+ if (item.min && item.min.indexOf(' ') == -1) {
+ //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+ item.min = item.min + ' 00:00:000';
+ }
+ return (
+ this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+ );
+ },
+ getDateFormat(item) {
+ if (item.type == 'month') {
+ return 'YYYY-MM';
+ }
+ // if (item.type=='time') {
+ // return 'HH:mm:ss'
+ // }
+ //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+ return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss';
+ },
+ dateRangeChange(val, item) {
+ if (!val) {
+ this.$emit('update:formFields');
+ return;
+ }
+ item.onChange && item.onChange(val);
+ },
+ onKeyPress($event, item) {
+ if ($event.keyCode == 13) {
+ return;
+ }
+ item.onKeyPress($event);
+ },
+ filterMethod(value, data) {
+ return data.label.includes(value);
+ },
+ getNode( label,node, data){
+ console.log(label)
+ }
+ }
+});
+</script>
+<style lang="less" scoped>
+.el-form-item {
+ margin-right: 0;
+}
+.el-form-item {
+ .form-imgs {
+ img {
+ float: left;
+ cursor: pointer;
+ object-fit: cover;
+ margin: 0 10px 10px 0;
+ width: 65px;
+ height: 65px;
+ border: 1px solid #c7c7c7;
+ overflow: hidden;
+ border-radius: 5px;
+ box-sizing: content-box;
+ }
+ }
+}
+.el-form-item ::v-deep(.el-form-item__label) {
+ padding: 0 0px 0 4px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.el-form-item ::v-deep(.el-range-separator) {
+ text-align: center;
+ width: 13px;
+ padding: 0px 1px;
+ font-size: 12px;
+}
+.el-form-item ::v-deep(.el-range__close-icon) {
+ margin-right: -10px;
+}
+.form-item-extra {
+ > *:first-child {
+ flex: 1;
+ }
+ display: flex;
+ .form-extra {
+ padding-left: 7px;
+ line-height: 36px;
+ }
+}
+.vol-form-item {
+ width: 100%;
+}
+.vol-form-item ::v-deep(.el-form-item__content) {
+ display: unset !important;
+}
+.vol-form-item ::v-deep(.el-input--large .el-input__inner) {
+ height: 34px !important;
+}
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__increase) {
+ border-top: 1px solid #d4d4d4;
+}
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__decrease) {
+ border-bottom: 1px solid #d4d4d4;
+}
+.vol-form-item ::v-deep(.el-input--large.el-date-editor) {
+ height: 36px;
+}
+.v-date-range ::v-deep(.el-input__prefix) {
+ display: none;
+}
+.v-date-range ::v-deep(.el-input__inner) {
+ padding: 0;
+}
+
+.el-form-item ::v-deep(.el-checkbox) {
+ margin-right: 8px;
+}
+.el-form-item ::v-deep(.el-checkbox .el-checkbox__label) {
+ padding-left: 5px;
+}
+.el-form-item ::v-deep(textarea) {
+ font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
+ 'Microsoft YaHei', '寰蒋闆呴粦', Arial, sans-serif !important;
+}
+.el-form-item ::v-deep(.el-select .el-select__tags > span) {
+ display: flex;
+}
+.el-form-item ::v-deep(.el-select-v2__combobox-input) {
+ height: 30px;
+}
+.el-form-item ::v-deep(.el-select__tags) {
+ overflow: hidden;
+ height: 30px;
+}
+.el-form-item ::v-deep(.el-select-tags-wrapper) {
+ position: absolute;
+}
+
+.el-form-item {
+ vertical-align: top !important;
+}
+.form-file-list {
+ a {
+ color: #3ea9ff;
+ }
+ a:hover {
+ cursor: pointer;
+ color: #0281e7;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormDraggable.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormDraggable.vue"
new file mode 100644
index 0000000..de8b85f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormDraggable.vue"
@@ -0,0 +1,1159 @@
+<template>
+ <div class="drag-container">
+ <!-- @start="onStart" -->
+ <div class="drag-left">
+ <div class="left-title">缁勪欢鍒楄〃</div>
+ <draggable
+ v-model="components"
+ @end="end1"
+ class="left-draggable-item"
+ :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
+ animation="300"
+ @start="onStart"
+ :sort="false"
+ :move="onMove1"
+ >
+ <transition-group>
+ <div
+ :class="item.id == 1 ? 'item forbid' : 'item'"
+ v-for="item in components"
+ :key="item.id"
+ >
+ <i :class="item.icon"></i> {{ item.name }}
+ </div>
+ </transition-group>
+ </draggable>
+ <div class="example">
+ <div @click="example1">绀轰緥涓�<i class="el-icon-arrow-right"></i></div>
+ <div @click="example2">绀轰緥浜�<i class="el-icon-arrow-right"></i></div>
+ <div @click="example3">绀轰緥涓�<i class="el-icon-arrow-right"></i></div>
+ </div>
+ </div>
+
+ <div class="drag-center">
+ <div class="center-top">
+ <span>
+ <!-- <i class="el-icon-warning-outline"></i>楂樻晥鐨勮〃鍗曢厤缃� -->
+ </span>
+ <el-button type="primary" size="mini" plain @click="save"
+ ><i class="el-icon-check"> </i>淇濆瓨</el-button
+ >
+ <el-button type="primary" size="mini" plain @click="preview(true)"
+ ><i class="el-icon-view"> </i>棰勮</el-button
+ >
+ <el-button type="primary" size="mini" plain @click="download"
+ ><i class="el-icon-view"> </i>涓嬭浇</el-button
+ >
+ <el-button type="primary" @click="clearItems" size="mini" plain
+ ><i class="el-icon-delete"> </i>娓呯┖</el-button
+ >
+ <a
+ style="margin-left: 15px"
+ href="http://v2.volcore.xyz/document/api"
+ target="_blank"
+ >璁捐鍣ㄥ熀浜庢鏋秜olform銆乿oltable銆乿olupload銆乿olbox瀹氬埗寮�鍙�</a
+ >
+ </div>
+ <div>
+ <el-alert
+ title="鍏充簬琛ㄥ崟璁捐鍣�"
+ type="success"
+ :show-icon="true"
+ :closable="false"
+ >
+ <div>
+ 1銆佽〃鍗曡璁″櫒鍩轰簬draggable寮�鍙�,涓烘湰妗嗘灦鑷畾涔夐〉闈㈠姛鑳界殑琛ュ厖,妗嗘灦浠嶄互鍙鍖栦唬鐮佺敓鎴愬櫒涓烘牳蹇�
+ </div>
+ <div>
+ 2銆佹敮鎸佸彲瑙嗗寲璁捐1瀵�1銆�1瀵瑰鍙婅〃鍗曚笅鎷夋鑷姩缁戝畾銆乼able鑷姩鍔犺浇鏁版嵁(鍒嗛〉銆佺紪杈�)銆佽嚜鍔ㄤ笂浼犳枃浠躲�佸瘜鏂囨湰缂栬緫
+ </div>
+ </el-alert>
+ </div>
+ <el-scrollbar style="flex: 1">
+ <div class="tips" key="empty" v-show="!currentComponents.length">
+ 璇峰皢宸﹁竟缁勪欢鎷栧叆姝ゅ鍣ㄤ腑
+ </div>
+ <el-form label-position="top">
+ <draggable
+ class="draggable-container"
+ v-model="currentComponents"
+ @end="end2"
+ animation="300"
+ :move="onMove"
+ group="componentsGroup"
+ >
+ <transition-group class="drag-center-item">
+ <div
+ class="item2"
+ :class="{ actived: index === currentIndex }"
+ @click="itemClick(item, index)"
+ :style="{ width: item.width + '%' }"
+ v-for="(item, index) in currentComponents"
+ :key="index"
+ >
+ <i
+ class="el-icon-document-copy"
+ @click.stop="copyItem(item)"
+ ></i>
+ <i class="el-icon-delete" @click.stop="removeItem(index)"> </i>
+ <el-form-item
+ :required="item.required"
+ label-position="top"
+ style="width: 100%"
+ :label="item.type == 'line' ? '' : item.name"
+ >
+ <el-col>
+ <!-- <div></div> -->
+ <!-- {{ item.name }} -->
+ <el-input
+ v-if="item.type == 'text'"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="item.value"
+ :disabled="item.readonly"
+ size="medium"
+ ></el-input>
+ <el-input
+ v-else-if="item.type == 'textarea'"
+ type="textarea"
+ v-model="item.value"
+ :disabled="item.readonly"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ <el-date-picker
+ v-else-if="item.type == 'date'"
+ align="right"
+ v-model="item.value"
+ type="date"
+ :disabled="item.readonly"
+ size="medium"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
+ </el-date-picker>
+ <el-radio-group
+ :disabled="item.readonly"
+ v-else-if="item.type == 'radio'"
+ v-model="item.value"
+ >
+ <el-radio
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-radio>
+ <!-- <el-radio :label="1">鏄�</el-radio>
+ <el-radio :label="0">鍚�</el-radio> -->
+ </el-radio-group>
+
+ <el-checkbox-group
+ v-model="item.values"
+ :disabled="item.readonly"
+ style="width: 100%; display: inline-block"
+ v-else-if="item.type == 'checkbox'"
+ >
+ <el-checkbox
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-checkbox>
+ <!-- <el-checkbox label="澶嶉�夋 A"></el-checkbox>
+ <el-checkbox label="澶嶉�夋 B"></el-checkbox>
+ <el-checkbox label="澶嶉�夋 C"></el-checkbox> -->
+ </el-checkbox-group>
+
+ <el-select
+ style="width: 100%"
+ :disabled="item.readonly"
+ v-model="item.value"
+ size="medium"
+ v-else-if="item.type == 'select'"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <el-select
+ style="width: 100%"
+ :disabled="item.readonly"
+ v-model="item.values"
+ size="medium"
+ :multiple="true"
+ v-else-if="item.type == 'selectList'"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <el-cascader
+ :disabled="item.readonly"
+ style="width: 100%"
+ v-else-if="item.type == 'cascader'"
+ v-model="item.values"
+ :options="item.data"
+ @change="() => {}"
+ ></el-cascader>
+
+ <el-switch
+ :disabled="item.readonly"
+ v-model="item.value"
+ style="width: 100%"
+ v-else-if="item.type == 'switch'"
+ active-color="#13ce66"
+ inactive-color="#0e7ef3"
+ :active-value="1"
+ :inactive-value="0"
+ >
+ </el-switch>
+ <div class="col-line" v-else-if="item.type == 'line'">
+ {{ item.name }}
+ </div>
+
+ <vol-upload
+ v-else-if="
+ item.type == 'img' ||
+ item.type == 'excel' ||
+ item.type == 'file'
+ "
+ :fileInfo="item.fileInfo"
+ :url="item.url"
+ :img="item.type == 'img'"
+ :excel="item.type == 'excel'"
+ :multiple="item.multiple"
+ :max-size="item.maxSize"
+ :max-file="item.maxFile"
+ :autoUpload="item.autoUpload"
+ >
+ </vol-upload>
+ <vol-wang-editor
+ v-else-if="item.type == 'editor'"
+ :url="item.url"
+ v-model="item.value"
+ :height="item.height"
+ ></vol-wang-editor>
+
+ <vol-table
+ v-else-if="item.type == 'table'"
+ :url="item.url"
+ :load-key="true"
+ :index="item.edit"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :height="item.height"
+ :pagination-hide="true"
+ :column-index="item.columnIndex"
+ :ck="item.ck"
+ ></vol-table>
+ <el-button
+ @click="model = true"
+ v-else-if="item.type == 'box'"
+ type="primary"
+ size="small"
+ >{{ item.name }}</el-button
+ >
+ </el-col>
+ </el-form-item>
+ </div>
+ </transition-group>
+ </draggable>
+ </el-form>
+ </el-scrollbar>
+ </div>
+ <div class="drag-right">
+ <div class="left-title">缁勪欢灞炴��</div>
+ <div class="attr" v-show="currentIndex != -1">
+ <div class="attr-item">
+ <div class="text">瀛楁鍚嶇О</div>
+ <el-input size="medium" v-model="currentItem.name" />
+ </div>
+ <div class="attr-item">
+ <div class="text">瀛楁(鍞竴瀛楁)</div>
+ <el-input size="medium" v-model="currentItem.field" />
+ </div>
+ <div class="attr-item" v-show="currentItem.type == 'table'">
+ <div class="text">鍚庡彴杩斿洖鏁版嵁鎺ュ彛鍦板潃</div>
+ <el-input
+ size="medium"
+ placeholder="渚�:api/琛ㄥ悕/getPageData"
+ v-model="currentItem.url"
+ />
+ </div>
+ <div
+ class="attr-item"
+ v-show="
+ currentItem.type != 'table' && currentItem.hasOwnProperty('url')
+ "
+ >
+ <div class="text">涓婁紶鎺ュ彛鍦板潃(鍚庡彴鎺ュ彛)</div>
+ <el-input
+ size="medium"
+ placeholder="鍙敤妗嗘灦鍦板潃:api/琛ㄥ悕/upload"
+ v-model="currentItem.url"
+ />
+ <div class="text" style="margin-top: 10px">鏂囦欢澶у皬闄愬埗(M)</div>
+ <el-input size="medium" v-model="currentItem.maxSize" />
+ <div class="text" style="margin-top: 10px">鏄惁澶氭枃浠朵笂浼�</div>
+ <el-switch
+ v-model="currentItem.multiple"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ <div class="text" style="margin-top: 10px">鏄惁鑷姩涓婁紶</div>
+ <el-switch
+ v-model="currentItem.autoUpload"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ <div class="attr-item" v-show="currentItem.data">
+ <div class="text">鏁版嵁婧�(涓嬫媺妗嗙粦瀹氳缃腑缁存姢)</div>
+
+ <!-- dicList -->
+ <el-select
+ style="width: 100%"
+ v-model="currentItem.key"
+ size="medium"
+ @change="dicChange"
+ placeholder="璇烽�夋嫨鏁版嵁婧愬瓧鍏�"
+ >
+ <el-option
+ v-for="item in dicList"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="attr-item" v-show="currentItem.type != 'table'">
+ <div class="text">鏍囩瀹藉害</div>
+ <el-slider
+ style="width: 90%"
+ :min="20"
+ v-model="colWidth"
+ :step="10"
+ show-stops
+ >
+ </el-slider>
+ </div>
+ <div class="attr-item attr2" v-show="currentItem.type != 'table'">
+ <div>
+ <div class="text">蹇呭~</div>
+ <el-switch
+ v-model="currentItem.required"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+
+ <div>
+ <!-- active-text="鏄�"
+ inactive-text="鍚�" -->
+ <div class="text">鍙</div>
+ <el-switch
+ v-model="currentItem.readonly"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ </div>
+ <div v-show="currentItem.type == 'table'">
+ <div class="attr-item">
+ <div class="text">鏄惁浣跨敤閫夐」鍗�(tabs)</div>
+ <div>
+ <el-switch
+ v-model="currentItem.tabs"
+ style="width: 100%"
+ active-text="鏄�"
+ inactive-text="鍚�"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ </div>
+ <div class="attr-item attr2">
+ <el-button
+ style="width: 100%"
+ @click="openTableModel"
+ type="primary"
+ size="medium"
+ >table閰嶇疆</el-button
+ >
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <vol-box
+ v-model="model"
+ :height="300"
+ :width="550"
+ :lazy="true"
+ title="寮瑰嚭妗�"
+ >
+ <template #content>
+ <div>寮瑰嚭妗嗗唴瀹�</div>
+ </template>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="mini" @click="model = false"
+ ><i class="el-icon-close"></i>鐐瑰嚮鍏抽棴</el-button
+ >
+ <el-button size="mini" @click="model = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+
+ <vol-box
+ v-model="previewModel"
+ :height="600"
+ :width="1300"
+ :lazy="true"
+ :padding="1"
+ :close="false"
+ title="棰勮"
+ >
+ <preview style="height:600px" :options="viewFormData"></preview>
+ </vol-box>
+
+ <vol-box
+ v-model="tableModel"
+ :height="600"
+ :width="1300"
+ :lazy="true"
+ :padding="0"
+ :title="currentItem.name"
+ >
+ <template #content>
+ <div style="height:600px" >
+ <el-alert title="鍏充簬table閰嶇疆" type="info" :closable="false" show-icon>
+ 姝ゅtable鏄妗嗘灦voltable鍩烘湰鎿嶄綔鐨勯厤缃�,濡傛灉闇�瑕佷簨浠惰Е鍙戙�佹暟鎹姞杞界瓑鏇村鍔熻兘锛岃鍦ㄧ敓鎴愬悗鐨勪唬鐮佹坊鍔犻渶瑕佺殑鍔熻兘锛屽畬鏁撮厤缃鏂囨。<a
+ href="http://v2.volcore.xyz/document/api"
+ style="color: #1e88e5; margin-left: 9px"
+ target="_blank"
+ >voltable</a
+ >
+ </el-alert>
+ <div class="btns">
+ <div class="btns-left">
+ 琛ㄦ牸榛樿鍔熻兘鎸夐挳锛�
+ <el-checkbox
+ v-for="item in currentItem.buttons"
+ :label="item.name"
+ :key="item.name"
+ >{{ item.name }}</el-checkbox
+ >
+ </div>
+ <div class="btns-right">
+ <el-button type="primary" size="mini" @click="addRow"
+ ><i class="el-icon-plus"></i>娣诲姞瀛楁</el-button
+ >
+ <el-button type="primary" size="mini" @click="delRow"
+ ><i class="el-icon-delete"></i>鍒犻櫎瀛楁</el-button
+ >
+ <el-button type="primary" size="mini" @click="sortRow"
+ ><i class="el-icon-sort"></i>閲嶆柊鎺掑垪</el-button
+ >
+ </div>
+ </div>
+ <vol-table
+ :load-key="true"
+ :tableData="currnetTableData"
+ :columns="currentTableOption"
+ :height="448"
+ ref="table"
+ :index="true"
+ :pagination-hide="true"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </div>
+ </template>
+ <template #footer>
+ <div style="text-align: center">
+ <el-button size="mini" @click="tableModel = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ <el-button type="primary" size="mini" @click="saveConfigOptions"
+ ><i class="el-icon-check"></i>淇濆瓨</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+</template>
+
+<script>
+import { h, resolveComponent } from "vue";
+// import draggable from "vuedraggable";
+import { VueDraggableNext } from "vue-draggable-next";
+import VolWangEditor from "@/components/editor/VolWangEditor.vue";
+import VolUpload from "./../VolUpload";
+import VolTable from "./../VolTable";
+import VolBox from "./../VolBox";
+import VolFormPreview from "./VolFormPreview";
+import { components, tableOption } from "./options";
+import { options1, options2, options3 } from "./formTemplate";
+import downloadForm from "./DownloadForm";
+export default {
+ props: {
+ userComponents: {
+ type: Array,
+ default: () => {
+ return [];
+ },
+ },
+ },
+ components: {
+ draggable: VueDraggableNext,
+ "vol-upload": VolUpload,
+ "vol-wang-editor": VolWangEditor,
+ "vol-table": VolTable,
+ "vol-box": VolBox,
+ preview: VolFormPreview,
+ },
+ data() {
+ return {
+ options:{},
+ options1: options1,
+ options2: options2,
+ options3: options3,
+ colWidth: 100,
+ currentIndex: -1,
+ currentItem: {},
+ currnetTableData: [],
+ currentTableOption: tableOption,
+ //瀹氫箟瑕佽鎷栨嫿瀵硅薄鐨勬暟缁�
+ components: components,
+ currentComponents: [],
+ dicList: [],
+ model: false,
+ tableModel: false,
+ previewModel: false,
+ viewFormData: { fields: {}, formOptions: [], tables: [] },
+ };
+ },
+ watch: {
+ colWidth(newVal) {
+ if (this.currentIndex != -1) {
+ this.currentComponents[this.currentIndex].width = newVal;
+ }
+ },
+ userComponents: {
+ handler(newVal) {
+ this.currentComponents = newVal;
+ },
+ immediate: true,
+ deep: true,
+ },
+ },
+ created() {
+ this.currentComponents = this.userComponents;
+ this.http
+ .post("api/Sys_Dictionary/GetBuilderDictionary", {}, false)
+ .then((x) => {
+ this.dicList = x.map((c) => {
+ return { key: c, value: c };
+ });
+ });
+ },
+ methods: {
+ getFormOptions(item) {
+ let _option = {};
+ _option.field = item.field;
+ _option.title = item.name;
+ _option.type = item.type;
+ _option.required = item.required;
+ _option.readonly = item.readonly;
+ if (item.type == "line") {
+ _option.title = "";
+ let title = item.name;
+ _option.render = (h) => {
+ return h(
+ "div",
+ {
+ style: {
+ "line-height": "25px",
+ "font-weight": "bold",
+ "margin-left": "15px",
+ "border-bottom": "1px solid #dadada",
+ },
+ },
+ title
+ //涔熷彲浠ュ湪杩欓噷鏀句竴浜涚粍浠讹紝渚嬪锛�
+ // resolveComponent("el-tooltip"),
+ // {
+ // content: "杩欓噷鏄彁绀虹殑鍐呭",
+ // props: { effect: "dark", placement: "top-start" },
+ // style: {},
+ // },
+ // [h("a", { style: { color: "#2a92ff" } }, "鎻愮ず淇℃伅")]
+ );
+ };
+ }
+ if (item.type == "editor") {
+ _option.height = item.height;
+ }
+ if (item.width == 100) {
+ _option.colSize = 12;
+ } else {
+ _option.colSize = (_option.width * 12) / 100;
+ }
+ if (["img", "excel", "file"].indexOf(item.type) != -1) {
+ _option.maxSize = item.maxSize;
+ _option.fileInfo = item.fileInfo;
+ _option.multiple = item.multiple;
+ _option.autoUpload = item.autoUpload;
+ _option.maxFile = item.maxFile;
+ }
+ if (
+ ["img", "excel", "file", "editor", "table"].indexOf(item.type) != -1
+ ) {
+ _option.url = item.url;
+ }
+ if (item.data) {
+ _option.data = item.data;
+ _option.dataKey = item.key;
+ }
+ return _option;
+ },
+ getLineFormOptions(index) {
+ let _index = index;
+ let endIndex = index;
+ let width = 0;
+ let _options = [];
+ for (index; index < this.filterCurrentComponents().length; index++) {
+ const item = this.currentComponents[index];
+ if (item.width + width <= 100) {
+ width = item.width + width;
+ endIndex = index;
+ _options.push(this.getFormOptions(item));
+ }
+ }
+ return { options: _options, index: _index, endIndex: endIndex };
+ },
+ filterCurrentComponents() {
+ return this.currentComponents.filter((x) => {
+ return x.type != "table";
+ });
+ },
+ setSpan() {},
+ preview(isPre) {
+ let _fields = {};
+ let _formOptions = [];
+ let endIndex = -1;
+ this.filterCurrentComponents().forEach((item, index) => {
+ if (item.hasOwnProperty("values")) {
+ _fields[item.field] = [];
+ } else {
+ _fields[item.field] = null;
+ }
+
+ if (item.width == 100) {
+ _formOptions.push([this.getFormOptions(item)]);
+ } else {
+ if (endIndex == -1) {
+ let lineOptions = this.getLineFormOptions(index);
+ endIndex = lineOptions.endIndex;
+ _formOptions.push(lineOptions.options);
+ endIndex--;
+ } else {
+ endIndex--;
+ }
+ }
+ // _fields[item.field] = null;xc
+ // let _option = {};
+ // _option.field = item.field;
+ // _option.title = item.name;
+ // _option.type = item.type;
+ // _option.required = item.required;
+ // _option.readonly = item.readonly;
+ // if (["img", "excel", "file"].indexOf(item.type) != -1) {
+ // _option.maxSize = item.maxSize;
+ // _option.fileInfo = item.fileInfo;
+ // _option.multiple = item.multiple;
+ // _option.autoUpload = item.autoUpload;
+ // _option.maxFile = item.maxFile;
+ // }
+ // if (
+ // ["img", "excel", "file", "editor", "table"].indexOf(item.type) != -1
+ // ) {
+ // _option.url = item.url;
+ // }
+ // if (item.data) {
+ // _option.data = item.data;
+ // _option.dataKey = item.key;
+ // }
+ // _formOptions.push(_option);
+ });
+ this.viewFormData.fields = _fields;
+ // console.log(JSON.stringify(_formOptions))
+ this.viewFormData.formOptions = _formOptions;
+ if (isPre) {
+ this.previewModel = true;
+ }
+ let tableIndex = 0;
+ let keys = [];
+ let tables = this.currentComponents
+ .filter((x) => {
+ return x.type == "table";
+ })
+ .map((m) => {
+ m.pagination = !m.url;
+ if (m.name == "琛ㄦ牸") {
+ tableIndex++;
+ }
+ return {
+ name: m.name + (m.name == "琛ㄦ牸" ? tableIndex : ""),
+ url: m.url,
+ tabs: m.tabs,
+ pagination: m.pagination,
+ buttons: m.buttons,
+ columns: m.columns.map((c) => {
+ let obj = {
+ title: c.title,
+ field: c.field,
+ hidden: !c.show,
+ width: c.width,
+ required: c.required,
+ };
+
+ if (c.dataSource) {
+ obj.bind = { key: c.dataSource, data: [] };
+ }
+ if (c.dataSource) {
+ keys.push(c.dataSource);
+ }
+ if (c.edit) {
+ if (!obj.bind) {
+ obj.bind = { key: "", data: [] };
+ }
+ obj.edit = { type: c.editType };
+ }
+ return obj;
+ }),
+ tableData: [{}, {}, {}],
+ };
+ });
+ this.viewFormData.tables = tables.filter((x) => {
+ return !x.tabs;
+ });
+ this.viewFormData.tabs = tables.filter((x) => {
+ return x.tabs;
+ });
+ this.getDicKeys(keys);
+ this.options = this.viewFormData;
+ },
+ getDicKeys(keys) {
+ if (!keys.length) {
+ return;
+ }
+ debugger
+ this.http
+ .post("api/Sys_Dictionary/GetVueDictionary", keys, true)
+ .then((result) => {
+ result.forEach((c) => {
+ this.viewFormData.tables.forEach((t) => {
+ let _option = t.columns.find((x) => {
+ return x.bind && x.bind.key == c.dicNo;
+ });
+ if (_option) {
+ _option.bind.data = c.data;
+ }
+ });
+ this.viewFormData.tabs.forEach((t) => {
+ let _option = t.columns.find((x) => {
+ return x.bind && x.bind.key == c.dicNo;
+ });
+ if (_option) {
+ _option.bind.data = c.data;
+ }
+ });
+ });
+ });
+ },
+ save() {
+ this.preview(false);
+ this.$emit("save", {
+ daraggeOptions: this.currentComponents,
+ formOptions: this.viewFormData,
+ });
+ },
+ download() {
+ this.preview(false);
+ downloadForm.call(this);
+ },
+ openTableModel() {
+ let dataSource = this.currentTableOption.find((x) => {
+ return x.field == "dataSource";
+ });
+ if (!dataSource.bind.data.length) {
+ dataSource.bind.data = this.dicList;
+ }
+ this.currnetTableData = JSON.parse(
+ JSON.stringify(this.currentItem.columns)
+ );
+ this.tableModel = true;
+ },
+ addRow() {
+ this.currnetTableData.push({ field: this.getField() });
+ },
+ delRow() {
+ this.$confirm("纭瑕佸垹闄ら�夋嫨鐨勬暟鎹悧?", "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ center: true,
+ }).then(() => {
+ this.$refs.table.delRow();
+ });
+ },
+ sortRow() {
+ this.currnetTableData = this.currnetTableData.sort((a, b) => {
+ return a.orderNo - b.orderNo;
+ }); //.reverse();
+ this.$Message.success("鍒楁樉绀洪『搴忓凡閲嶆柊鎺掑垪,鐐瑰嚮棰勮鍙煡鐪�");
+ },
+ saveConfigOptions() {
+ this.currentItem.columns = JSON.parse(
+ JSON.stringify(this.currnetTableData)
+ );
+ this.tableModel = false;
+ },
+ copyItem(item) {
+ let itemClone = JSON.parse(JSON.stringify(item));
+ itemClone.field = "field" + new Date().valueOf();
+ this.currentComponents.push(itemClone);
+ },
+ removeItem(index) {
+ this.currentComponents.splice(index, 1);
+ this.colWidth = 100;
+ this.currentIndex = -1;
+ this.currentItem = {};
+ },
+ clearItems() {
+ this.currentComponents.length = 0;
+ this.colWidth = 100;
+ this.currentIndex = -1;
+ this.currentItem = {};
+ },
+ itemClick(item, index) {
+ this.currentIndex = index;
+ this.colWidth = this.currentComponents[this.currentIndex].width;
+ this.currentItem = this.currentComponents[this.currentIndex];
+ },
+ //寮�濮嬫嫋鎷戒簨浠�
+ onStart(e, e1) {
+ this.drag = true;
+ },
+ getField() {
+ return "field" + new Date().valueOf();
+ },
+ //宸﹁竟寰�鍙宠竟鎷栧姩鏃剁殑浜嬩欢
+ end1(e) {
+ if (1 == 1 && e.from !== e.to) {
+ let obj = JSON.parse(JSON.stringify(this.components[e.oldIndex]));
+ obj.field = this.getField();
+ obj.width = 100;
+ obj.readonly = false;
+ obj.required = false;
+ this.currentComponents.splice(e.newIndex, 1, obj);
+ this.userComponents.splice(0);
+ this.userComponents.push(...this.currentComponents);
+ // this.currentComponents = this.currentComponents.filter((x) => {
+ // return x.hasOwnProperty("field");
+ // });
+ this.colWidth = 100;
+ this.currentIndex = e.newIndex; //this.currentComponents.length - 1;
+ this.currentItem = this.currentComponents[this.currentIndex];
+ }
+ },
+ //鍙宠竟寰�宸﹁竟鎷栧姩鏃剁殑浜嬩欢
+ end2(e) {},
+ onMove1(e, originalEvent) {
+ // this.moveId = e.relatedContext.element.id;
+ return true;
+ },
+ //move鍥炶皟鏂规硶
+ onMove(e, originalEvent) {
+ console.log(JSON.stringify(this.currentComponents));
+ return true;
+ },
+ dicChange(key) {
+ debugger
+ this.http
+ .post("api/Sys_Dictionary/GetVueDictionary", [key], true)
+ .then((result) => {
+ this.currentItem.data = result[0].data;
+ if (result[0].data.length) {
+ if (this.currentItem.type == "select") {
+ this.currentItem.value = result[0].data[0].value;
+ } else {
+ this.currentItem.values = [result[0].data[0].value];
+ }
+ }
+ });
+ },
+ example1() {
+ this.currentComponents = this.options1;
+ },
+ example2() {
+ this.currentComponents = this.options2;
+ },
+ example3() {
+ this.currentComponents = this.options3;
+ },
+ },
+ computed: {
+ tabsTable() {
+ return this.currentComponents.filter((x) => {
+ return x.type == "table" && x.tabs == true;
+ });
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+* {
+ box-sizing: border-box;
+}
+.drag-container {
+ /* padding: 20px; */
+ display: flex;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ box-sizing: border-box;
+}
+.drag-left {
+ width: 250px;
+ display: flex;
+ border-right: 1px solid #eee;
+ flex-direction: column;
+}
+.left-title {
+ height: 42px;
+ text-align: left;
+ border-right: 1px solid #eee;
+ padding: 10px 0 10px 11px;
+ border-bottom: 1px solid #eee;
+}
+.drag-center {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+}
+.left-draggable-item {
+ // flex: 1;
+ display: inline-block;
+ padding: 5px;
+ // border-right: 1px solid #eee;
+}
+
+.left-draggable-item .item {
+ cursor: move;
+ float: left;
+ width: 111px;
+ /* height: 20px; */
+ text-align: center;
+ border: 1px solid #eeeeee;
+ padding: 2px 13px;
+ text-align: left;
+ line-height: 28px;
+ margin: 4px;
+ border-radius: 3px;
+ background: #f0f9eb;
+ font-size: 13px;
+}
+// .drag-center-item {
+// display: inline-block;
+// width: 100%;
+// height: calc(100vh - 122px);
+// padding: 10px;
+// }
+.draggable-container {
+ display: inline-block;
+ width: 100%;
+ height: calc(100vh - 215px);
+ padding: 10px 0;
+}
+
+.item2 {
+ position: relative;
+ cursor: move;
+ padding: 18px 10px 10px 10px;
+ text-align: left;
+ float: left;
+ margin-bottom: 10px;
+}
+.item2 .el-icon-delete,
+.item2 .el-icon-document-copy {
+ position: absolute;
+ right: 10px;
+ top: 2px;
+ padding: 5px;
+ display: none;
+ color: red;
+ cursor: pointer;
+}
+.item2 .el-icon-document-copy {
+ right: 35px;
+}
+.item2:hover,
+.actived {
+ background: #f0f9eb;
+}
+.item:hover {
+ border: 1px dashed #787be8;
+ color: #787be8;
+}
+.item2:hover .el-icon-delete,
+.item2:hover .el-icon-document-copy {
+ display: block;
+}
+
+.drag-right {
+ background: #f7fbff3d;
+ width: 250px;
+ border-left: 1px solid #eee;
+}
+
+.center-top {
+ height: 42px;
+ line-height: 41px;
+ background: #f2f5fb;
+ border-bottom: 1px solid #eee;
+ text-align: left;
+ padding: 0 10px;
+ font-size: 12px;
+ color: #3391f3;
+}
+.center-top span {
+ margin-right: 10px;
+}
+.attr {
+ padding: 0px 15px 15px 15px;
+}
+.attr-item {
+ text-align: left;
+ margin-top: 12px;
+ font-size: 14px;
+}
+.attr-item .text {
+ padding: 0 0 5px 5px;
+}
+.attr2 {
+ display: flex;
+}
+.attr2 > div {
+ flex: 1;
+}
+.tips {
+ position: absolute;
+ font-size: 26px;
+ letter-spacing: 6px;
+ left: 0px;
+ right: 0px;
+ top: 150px;
+ width: 500px;
+ margin: auto;
+ color: #c5c5c5;
+}
+.col-line {
+ line-height: 25px;
+ font-weight: bold;
+ border-bottom: 1px solid rgb(218 218 218);
+}
+.drag-container ::v-deep(.el-col) {
+ width: 100%;
+}
+.drag-center ::v-deep(.el-form-item__label) {
+ line-height: 0 !important;
+}
+.drag-center ::v-deep(.el-scrollbar__wrap) {
+ overflow-x: hidden;
+}
+.drag-center ::v-deep(.el-form-item) {
+ margin-bottom: 10px;
+}
+.drag-center ::v-deep(.el-date-editor) {
+ width: 100%;
+}
+.drag-center ::v-deep(.el-checkbox) {
+ margin-right: 15px;
+}
+.drag-center ::v-deep(.el-checkbox__label) {
+ padding-left: 5px;
+}
+.drag-center ::v-deep(.hello > div) {
+ z-index: 500 !important;
+}
+.drag-center ::v-deep(th),
+.drag-center ::v-deep(td) {
+ padding: 6px 0;
+}
+.example {
+ margin-top: 8px;
+ > div {
+ cursor: pointer;
+ padding: 14px 20px;
+ border-top: 1px solid #eee;
+ font-size: 13px;
+ color: #646465;
+ position: relative;
+ }
+ > div:hover {
+ background: rgb(231, 231, 231);
+ }
+ i {
+ position: absolute;
+ right: 20px;
+ }
+}
+.btns {
+ padding: 8px 0;
+ display: flex;
+ > div {
+ flex: 1;
+ }
+ .btns-left {
+ padding-top: 8px;
+ color: black;
+ font-weight: bold;
+ }
+ .btns-right {
+ text-align: right;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormPreview.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormPreview.vue"
new file mode 100644
index 0000000..7d8aa93
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolFormDraggable/VolFormPreview.vue"
@@ -0,0 +1,206 @@
+<template>
+ <div style="padding: 15px 20px 15px 5px">
+ <div class="pre-text">{{ text }}</div>
+ <vol-form
+ ref="form"
+ :labelWidth="80"
+ :load-key="false"
+ :formFields="options.fields"
+ :formRules="options.formOptions"
+ >
+ </vol-form>
+ <div class="tables">
+ <div
+ class="table-item"
+ v-for="(item, index) in options.tables"
+ :key="index"
+ >
+ <div class="table-header">
+ <div class="header-text">
+ {{ item.name }}
+ </div>
+ <div class="header-btns">
+ <el-button
+ type="primary"
+ size="small"
+ :key="bindex"
+ plain
+ @click="tableBtnClick(item, bindex, index)"
+ :icon="btnItem.icon"
+ v-for="(btnItem, bindex) in item.buttons"
+ >
+ {{ btnItem.name }}
+ </el-button>
+ </div>
+ </div>
+ <vol-table
+ :url="item.url"
+ :load-key="false"
+ :index="true"
+ :ref="'table' + index"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :max-height="250"
+ :pagination-hide="item.pagination"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </div>
+ </div>
+
+ <div class="tables" style="padding-bottom: 10px">
+ <el-tabs
+ v-model="tabsModel"
+ v-show="options.tabs.length"
+ @tab-click="() => {}"
+ >
+ <el-tab-pane
+ style="padding: 0"
+ class="table-item"
+ v-for="(item, index) in options.tabs"
+ :label="item.name"
+ :name="index"
+ :key="index"
+ >
+ <div class="table-header">
+ <div class="header-text">
+ {{ item.name }}
+ </div>
+ <div class="header-btns">
+ <el-button
+ type="primary"
+ size="small"
+ :key="bindex"
+ :icon="btnItem.icon"
+ plain
+ @click="tabsTableBtnClick(item, bindex, index)"
+ v-for="(btnItem, bindex) in item.buttons"
+ >
+ {{ btnItem.name }}
+ </el-button>
+ </div>
+ </div>
+ <vol-table
+ :url="item.url"
+ :load-key="false"
+ :index="true"
+ :ref="'tabsTable' + index"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :max-height="250"
+ :pagination-hide="item.pagination"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+
+ <div class="form-btns">
+ <el-button type="primary" @click="submit" icon="el-icon-check" size="small"
+ >鎻愪氦</el-button
+ >
+ <el-button
+ type="primary"
+ @click="reset"
+ plain
+ icon="el-icon-refresh-right"
+ size="small"
+ >閲嶇疆</el-button
+ >
+ <el-button
+ type="primary"
+ @click="download"
+ plain
+ icon="el-icon-refresh-right"
+ size="small"
+ >涓嬭浇浠g爜</el-button
+ >
+ </div>
+ </div>
+</template>
+
+<script>
+import VolTable from "./../VolTable";
+import VolBox from "./../VolBox";
+import VolForm from "./../VolForm";
+import downloadForm from "./DownloadForm";
+export default {
+ props: {
+ options: {
+ type: Object,
+ default: () => {
+ return { fields: {}, formOptions: [], tables: [], tabs: [] };
+ },
+ },
+ },
+ data() {
+ return {
+ text: "",
+ tabsModel: 0,
+ };
+ },
+ created() {},
+ methods: {
+ tableBtnClick(item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["table" + index].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["table" + index].delRow();
+ return;
+ }
+ },
+ tabsTableBtnClick(item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["tabsTable" + index].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["tabsTable" + index].delRow();
+ return;
+ }
+ },
+ submit() {},
+ reset() {
+ this.$refs.form.reset();
+ this.$Message.success("琛ㄥ崟宸查噸缃�");
+ },
+ download() {
+ downloadForm.call(this);
+ },
+ },
+ components: {
+ "vol-table": VolTable,
+ "vol-box": VolBox,
+ "vol-form": VolForm,
+ },
+};
+
+VolForm;
+</script>
+<style lang="less" scoped>
+.form-btns {
+ text-align: center;
+}
+.tables {
+ padding-left: 15px;
+ .table-item {
+ padding: 10px;
+ }
+ .table-header {
+ display: flex;
+ margin-bottom: 8px;
+ }
+ .header-text {
+ position: relative;
+ bottom: -9px;
+ flex: 1;
+ font-weight: bold;
+ }
+ .header-btns {
+ text-align: right;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolHeader.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolHeader.vue"
new file mode 100644
index 0000000..cbe64e7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolHeader.vue"
@@ -0,0 +1,67 @@
+<template>
+ <div class="v-header">
+ <div class="v-left-text">
+ <!-- <i size="20" :class="icon" class="h-icon"/> -->
+ <span>{{ title || text }}</span>
+ </div>
+ <div class="content">
+ <slot name="content"></slot>
+ </div>
+ <div class="v-right-content">
+ <slot></slot>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ icon: {
+ type: String,
+ default: ''
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ text: {
+ type: String,
+ default: '鏈畾涔夊悕绉�'
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.v-header {
+ display: flex;
+ border-bottom: 1px solid #dcdee2;
+ .v-left-text {
+ margin-top: 3px;
+ padding-bottom: 6px;
+ font-weight: bold;
+ font-size: 15px;
+ color: #484848;
+ white-space: nowrap;
+ border-bottom: 2px solid #676767;
+ margin-bottom: -1px;
+ letter-spacing: 1px;
+ > span {
+ position: relative;
+ top: 2px;
+ }
+ }
+ .content {
+ line-height: 25px;
+ padding-left: 10px;
+ padding: 6px 0 0 10px;
+ }
+ .v-right-content {
+ flex: 1;
+ text-align: right;
+ }
+ .h-icon {
+ position: relative;
+ top: 2px;
+ margin-right: 3px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue"
new file mode 100644
index 0000000..af51360
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue"
@@ -0,0 +1,1873 @@
+<template>
+ <!-- 2021.11.18绉婚櫎voltable鏂规硶@cell-mouse-leave="rowEndEdit" -->
+ <div
+ class="vol-table"
+ :class="[
+ textInline ? 'text-inline' : '',
+ fxRight ? 'fx-right' : '',
+ isChrome ? 'chrome' : '',
+ ]"
+ >
+ <div class="mask" v-show="loading"></div>
+ <div class="message" v-show="loading">鍔犺浇涓�.....</div>
+ <el-table
+ :show-summary="summary"
+ :summary-method="getSummaryData"
+ :row-key="rowKey"
+ :key="randomTableKey"
+ lazy
+ stripe
+ :load="loadTreeChildren"
+ @select="userSelect"
+ @select-all="userSelect"
+ @selection-change="selectionChange"
+ @row-dblclick="rowDbClick"
+ @row-click="rowClick"
+ @header-click="headerClick"
+ :highlight-current-row="highlightCurrentRow"
+ ref="table"
+ class="v-table"
+ @sort-change="sortChange"
+ tooltip-effect="dark"
+ :height="realHeight"
+ :max-height="realMaxHeight"
+ :data="url ? rowData : tableData"
+ border
+ :row-class-name="initIndex"
+ :cell-style="getCellStyle"
+ style="width: 100%"
+ :scrollbar-always-on="true"
+ >
+ <el-table-column
+ v-if="ck"
+ type="selection"
+ :fixed="fixed"
+ :selectable="selectable"
+ width="55"
+ ></el-table-column>
+ <el-table-column
+ v-if="columnIndex"
+ type="index"
+ :fixed="fixed"
+ width="55"
+ ></el-table-column>
+
+ <!-- 2020.10.10绉婚櫎table绗竴琛屽己鍒舵帓搴� -->
+ <el-table-column
+ v-for="(column, cindex) in filterColumns"
+ :prop="column.field"
+ :label="column.title"
+ :min-width="column.width"
+ :formatter="formatter"
+ :fixed="column.fixed"
+ :key="column.field + cindex"
+ :align="column.align"
+ :sortable="column.sort ? 'custom' : false"
+ :show-overflow-tooltip="true"
+ >
+ <template #header>
+ <span
+ v-if="(column.require || column.required) && column.edit"
+ class="column-required"
+ >*</span
+ >{{ column.title }}
+ </template>
+
+ <template #default="scope">
+ <!-- 2022.01.08澧炲姞澶氳〃澶达紝鐜板湪鍙敮鎸佸父鐢ㄥ姛鑳芥覆鏌擄紝涓嶆敮鎸佺紪杈戝姛鑳�(娑夊強鍒扮粍浠堕噸鍐�) -->
+ <el-table-column
+ style="border: none"
+ v-for="columnChildren in filterChildrenColumn(column.children)"
+ :key="columnChildren.field"
+ :min-width="columnChildren.width"
+ :class-name="columnChildren.class"
+ :prop="columnChildren.field"
+ :align="columnChildren.align"
+ :label="columnChildren.title"
+ >
+ <template #default="scopeChildren">
+ <a
+ href="javascript:void(0)"
+ style="text-decoration: none"
+ @click="link(scopeChildren.row, columnChildren, $event)"
+ v-if="column.link"
+ v-text="scopeChildren.row[columnChildren.field]"
+ ></a>
+ <div
+ v-else-if="columnChildren.formatter"
+ @click="
+ columnChildren.click &&
+ columnChildren.click(
+ scopeChildren.row,
+ columnChildren,
+ scopeChildren.$index
+ )
+ "
+ v-html="
+ columnChildren.formatter(
+ scopeChildren.row,
+ columnChildren,
+ scopeChildren.$index
+ )
+ "
+ ></div>
+ <div v-else-if="column.bind">
+ {{ formatter(scopeChildren.row, columnChildren, true) }}
+ </div>
+ <span v-else-if="column.type == 'date'">{{
+ formatterDate(scopeChildren.row, columnChildren)
+ }}</span>
+ <template v-else>
+ {{ scopeChildren.row[columnChildren.field] }}
+ </template>
+ </template>
+ </el-table-column>
+ <!-- 2020.06.18澧炲姞render娓叉煋鑷畾涔夊唴瀹� -->
+ <table-render
+ v-if="column.render && typeof column.render == 'function'"
+ :row="scope.row"
+ key="rd-01"
+ :index="scope.$index"
+ :column="column"
+ :render="column.render"
+ ></table-render>
+ <!-- 鍚敤鍙屽嚮缂栬緫鍔熻兘锛屽甫缂栬緫鍔熻兘鐨勪笉浼氭覆鏌撲笅鎷夋鏂囨湰鑳屾櫙棰滆壊 -->
+ <!-- @click="rowBeginEdit(scope.$index,cindex)" -->
+ <!-- 2021.09.21澧炲姞缂栬緫鏃跺readonly灞炴�у垽鏂� -->
+ <template
+ v-else-if="
+ column.edit &&
+ !column.readonly &&
+ ['file', 'img', 'excel'].indexOf(column.edit.type) != -1
+ "
+ >
+ <div style="display: flex; align-items: center" @click.stop>
+ <i
+ style="
+ padding: 3px;
+ margin-right: 10px;
+ color: #8f9293;
+ cursor: pointer;
+ "
+ @click="showUpload(scope.row, column)"
+ class="el-icon-upload"
+ ></i>
+ <img
+ v-show="column.edit.type == 'img'"
+ v-for="(file, imgIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )"
+ :key="imgIndex"
+ :onerror="defaultImg"
+ @click="viewImg(scope.row, column, file.path, $event)"
+ class="table-img"
+ :src="file.path"
+ />
+ <a
+ style="margin-right: 8px"
+ v-show="column.edit.type != 'img'"
+ class="t-file"
+ v-for="(file, fIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )"
+ :key="fIndex"
+ @click="dowloadFile(file)"
+ >{{ file.name }}</a
+ >
+ </div>
+ </template>
+ <div
+ v-else-if="
+ column.edit &&
+ !column.readonly &&
+ (column.edit.keep || edit.rowIndex == scope.$index)
+ "
+ class="edit-el"
+ >
+ <div @click.stop class="e-item">
+ <div>
+ <!-- 2020.07.24澧炲姞鏃ユ湡onChange浜嬩欢 -->
+ <el-date-picker
+ clearable
+ size="default"
+ style="width: 100%"
+ v-if="['date', 'datetime'].indexOf(column.edit.type) != -1"
+ v-model="scope.row[column.field]"
+ @change="
+ (val) => {
+ column.onChange &&
+ column.onChange(scope.row, column, val);
+ }
+ "
+ :type="column.edit.type"
+ :placeholder="column.placeholder || column.title"
+ :disabledDate="(val) => getDateOptions(val, column)"
+ :value-format="getDateFormat(column)"
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ </el-date-picker>
+ <el-time-picker
+ clearable
+ size="default"
+ style="width: 100%"
+ v-else-if="column.edit.type == 'time'"
+ v-model="scope.row[column.field]"
+ @change="
+ (val) => {
+ column.onChange &&
+ column.onChange(scope.row, column, val);
+ }
+ "
+ :placeholder="column.placeholder || column.title"
+ :value-format="column.format || 'HH:mm:ss'"
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ </el-time-picker>
+ <el-switch
+ v-else-if="column.edit.type == 'switch'"
+ v-model="scope.row[column.field]"
+ active-color="#0f84ff"
+ inactive-color="rgb(194 194 194)"
+ @change="
+ (val) => {
+ switchChange(val, scope.row, column);
+ }
+ "
+ :active-value="
+ typeof scope.row[column.field] == 'boolean'
+ ? true
+ : typeof scope.row[column.field] == 'string'
+ ? '1'
+ : 1
+ "
+ :inactive-value="
+ typeof scope.row[column.field] == 'boolean'
+ ? false
+ : typeof scope.row[column.field] == 'string'
+ ? '0'
+ : 0
+ "
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ </el-switch>
+ <template
+ v-else-if="
+ ['select', 'selectList'].indexOf(column.edit.type) != -1
+ "
+ >
+ <el-select-v2
+ style="width: 100%"
+ :size="size"
+ v-if="column.bind.data.length >= select2Count"
+ v-model="scope.row[column.field]"
+ filterable
+ :multiple="column.edit.type == 'select' ? false : true"
+ :placeholder="column.placeholder || column.title"
+ :autocomplete="column.autocomplete"
+ :options="column.bind.data"
+ @change="
+ column.onChange && column.onChange(scope.row, column)
+ "
+ clearable
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ <template #default="{ item }">
+ {{ item.label }}
+ </template>
+ </el-select-v2>
+
+ <el-select
+ size="default"
+ style="width: 100%"
+ v-else
+ v-model="scope.row[column.field]"
+ :filterable="
+ column.filter || column.bind.data.length > 10
+ ? true
+ : false
+ "
+ :multiple="column.edit.type == 'select'"
+ :placeholder="column.placeholder || column.title"
+ :autocomplete="column.autocomplete"
+ @change="
+ column.onChange && column.onChange(scope.row, column)
+ "
+ clearable
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ <el-option
+ v-for="item in column.bind.data"
+ :key="item.key"
+ v-show="!item.hidden"
+ :disabled="item.disabled"
+ :label="item.value"
+ :value="item.key"
+ >{{ item.value }}
+ </el-option>
+ </el-select>
+ </template>
+ <el-input
+ v-else-if="column.edit.type == 'textarea'"
+ type="textarea"
+ :placeholder="column.placeholder || column.title"
+ v-model="scope.row[column.field]"
+ :disabled="initColumnDisabled(scope.row, column)"
+ >
+ </el-input>
+ <input
+ class="table-input"
+ v-else-if="!column.summary && !column.onKeyPress"
+ v-model.lazy="scope.row[column.field]"
+ :disabled="initColumnDisabled(scope.row, column)"
+ />
+ <el-input
+ v-else
+ @change="inputKeyPress(scope.row, column, $event)"
+ @input="inputKeyPress(scope.row, column, $event)"
+ @keyup.enter="inputKeyPress(scope.row, column, $event)"
+ size="default"
+ v-model="scope.row[column.field]"
+ :placeholder="column.placeholder || column.title"
+ :disabled="initColumnDisabled(scope.row, column)"
+ ></el-input>
+ </div>
+ <div
+ class="extra"
+ v-if="column.extra && edit.rowIndex == scope.$index"
+ >
+ <a
+ :style="column.extra.style"
+ style="text-decoration: none"
+ @click="extraClick(scope.row, column)"
+ >
+ <i v-if="column.extra.icon" :class="[column.extra.icon]" />
+ {{ column.extra.text }}
+ </a>
+ </div>
+ </div>
+ </div>
+ <!--娌℃湁缂栬緫鍔熻兘鐨勭洿鎺ユ覆鏌撴爣绛�-->
+ <template v-else>
+ <a
+ href="javascript:void(0)"
+ style="text-decoration: none"
+ @click="link(scope.row, column, $event)"
+ v-if="column.link"
+ v-text="scope.row[column.field]"
+ ></a>
+ <img
+ v-else-if="column.type == 'img'"
+ v-for="(file, imgIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )"
+ :key="imgIndex"
+ :onerror="defaultImg"
+ @click="viewImg(scope.row, column, file.path, $event)"
+ class="table-img"
+ :src="file.path"
+ />
+ <a
+ style="margin-right: 8px"
+ v-else-if="column.type == 'file' || column.type == 'excel'"
+ class="t-file"
+ v-for="(file, fIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )"
+ :key="fIndex"
+ @click="dowloadFile(file)"
+ >{{ file.name }}</a
+ >
+ <span v-else-if="column.type == 'date'">{{
+ formatterDate(scope.row, column)
+ }}</span>
+ <div
+ v-else-if="column.formatter"
+ @click="formatterClick(scope.row, column, $event)"
+ v-html="column.formatter(scope.row, column)"
+ ></div>
+ <!-- 2021.11.18淇table鏁版嵁婧愯缃负normal鍚庣偣鍑昏$event缂哄け鐨勯棶棰� -->
+ <div
+ v-else-if="column.bind && (column.normal || column.edit)"
+ @click="formatterClick(scope.row, column, $event)"
+ :style="column.getStyle && column.getStyle(scope.row, column)"
+ >
+ {{ formatter(scope.row, column, true) }}
+ </div>
+ <div
+ v-else-if="column.click && !column.bind"
+ @click="formatterClick(scope.row, column)"
+ >
+ {{ scope.row[column.field] }}
+ </div>
+ <div
+ @click="
+ () => {
+ column.click && formatterClick(scope.row, column);
+ }
+ "
+ v-else-if="column.bind"
+ >
+ <el-tag
+ v-if="useTag"
+ :class="[isEmptyTag(scope.row, column)]"
+ :type="getColor(scope.row, column)"
+ :effect="column.effect"
+ >{{ formatter(scope.row, column, true) }}</el-tag
+ >
+ <template v-else>{{
+ formatter(scope.row, column, true)
+ }}</template>
+ </div>
+
+ <span v-else>{{ formatter(scope.row, column, true) }}</span>
+ </template>
+ </template>
+ </el-table-column>
+ </el-table>
+ <template v-if="!paginationHide">
+ <div class="block pagination" key="pagination-01" style="display: flex">
+ <div style="flex: 1"></div>
+ <el-pagination
+ key="pagination-02"
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="paginations.page"
+ :page-sizes="paginations.sizes"
+ :page-size="paginations.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="paginations.total"
+ ></el-pagination>
+ </div>
+ </template>
+ </div>
+
+ <VolBox
+ v-model="uploadModel"
+ title="涓婁紶"
+ :height="228"
+ :width="500"
+ :padding="15"
+ lazy
+ >
+ <!-- 涓婁紶鍥剧墖銆乪xcel鎴栧叾浠栨枃浠躲�佹枃浠舵暟閲忋�佸ぇ灏忛檺鍒堕兘鍙互锛屽弬鐓olupload缁勪欢api -->
+ <div style="height: 200px; display: flex; align-items: center">
+ <VolUpload
+ style="text-align: center"
+ :autoUpload="currentColumn.edit.autoUpload"
+ :multiple="currentColumn.edit.multiple"
+ :url="uploadUrl"
+ :max-file="currentColumn.edit.maxFile"
+ :img="currentColumn.edit.type == 'img'"
+ :excel="currentColumn.edit.type == 'excel'"
+ :fileTypes="
+ currentColumn.edit.fileTypes ? currentColumn.edit.fileTypes : []
+ "
+ :fileInfo="fileInfo"
+ :upload-after="uploadAfter"
+ >
+ <div>{{ currentColumn.message }}</div>
+ </VolUpload>
+ </div>
+ <template #footer>
+ <div style="text-align: center">
+ <el-button type="default" size="small" @click="uploadModel = false"
+ >鍏抽棴</el-button
+ >
+ <el-button type="primary" size="small" @click="saveUpload"
+ >淇濆瓨</el-button
+ >
+ </div>
+ </template>
+ </VolBox>
+</template>
+<script>
+import VolTableRender from "./VolTable/VolTableRender";
+let _errMsg;
+import { defineComponent, defineAsyncComponent } from "vue";
+export default defineComponent({
+ //https://github.com/element-plus/element-plus/issues/1483
+ //娌℃湁鍘熷厛鐨剆election灞炴�т簡锛岀湅issue涓婁娇鐢╯elect/selectall鑾峰彇
+ //鐩戝惉鏁扮粍闀垮害锛屽鏋滃垹闄や簡鏁版嵁锛岀幇鍦ㄥ彧鑳借杩竻闄ゆ墍鏈夐�変腑鐨勮
+ watch: {
+ "tableData.length": {
+ handler(newLen, oldLen) {
+ this.watchRowSelectChange(newLen, oldLen);
+ },
+ },
+ "rowData.length": {
+ handler(newLen, oldLen) {
+ this.watchRowSelectChange(newLen, oldLen);
+ },
+ },
+ },
+ components: {
+ "table-render": VolTableRender,
+ VolUpload: defineAsyncComponent(() =>
+ import("@/components/basic/VolUpload.vue")
+ ),
+ VolBox: defineAsyncComponent(() => import("@/components/basic/VolBox.vue")),
+ },
+ props: {
+ rowKey: {
+ // 鏍戝舰缁撴瀯鐨勪富閿瓧娈碉紝濡傛灉璁剧疆鍊奸粯璁や細寮�鍚爲褰able锛涙敞鎰弐owKey瀛楁鐨勫�煎繀椤绘槸鍞竴锛�2021.05.02锛�
+ typeof: String,
+ default: undefined,
+ },
+ loadTreeChildren: {
+ // 鏍戝舰缁撴瀯鍔犺浇瀛愯妭鐐�
+ type: Function,
+ default: (tree, treeNode, resolve) => {
+ return resolve([]);
+ },
+ },
+ textInline: {
+ // 琛ㄦ牸鍐呭瓒呭嚭鍚庢槸鍚︽崲琛屾樉绀猴紙2020.01.16锛�
+ type: Boolean,
+ default: true,
+ },
+ tableData: {
+ // 琛ㄦ暟鎹簮,閰嶇疆浜唘rl灏变笉鐢ㄤ紶杩欎釜鍙傛暟浜�
+ type: Array,
+ default: () => {
+ return [];
+ },
+ },
+ columns: {
+ type: Array,
+ default: [],
+ },
+ height: {
+ type: Number,
+ default: 0,
+ },
+ maxHeight: {
+ type: Number,
+ default: 0,
+ },
+ linkView: {
+ type: Function,
+ default: function () {
+ return 1;
+ },
+ },
+ pagination: {
+ type: Object,
+ default: function () {
+ return { total: 0, size: 30, sortName: "" };
+ },
+ },
+ url: {
+ type: String,
+ default: "",
+ },
+ paginationHide: {
+ type: Boolean,
+ default: true,
+ },
+ color: {
+ type: Boolean,
+ default: true,
+ },
+ index: {
+ // 鏄惁鍒涘缓绱㈠紩鍙�,濡傛灉闇�瑕佽〃鏍肩紪杈戝姛鑳斤紝杩欓噷闇�瑕佽缃负true
+ type: Boolean,
+ default: false,
+ },
+ allowEmpty: {
+ // 琛ㄦ牸鏁版嵁涓虹┖鏃舵槸鍚﹂粯璁や负--
+ type: Boolean,
+ default: true,
+ },
+ defaultLoadPage: {
+ // 浼犲叆浜唘rl锛屾槸鍚﹂粯璁ゅ姞杞借〃鏍兼暟鎹�
+ type: Boolean,
+ default: true,
+ },
+ loadKey: {
+ // 鏄惁鑷姩浠庡悗鍙板姞杞芥暟鎹簮
+ type: Boolean,
+ default: true,
+ },
+ single: {
+ type: Boolean, // 鏄惁鍗曢��
+ default: false,
+ },
+ doubleEdit: {
+ type: Boolean, // 鏄惁鍙屽嚮鍚敤缂栬緫鍔熻兘
+ default: true,
+ },
+ beginEdit: {
+ // 缂栬緫寮�濮�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ },
+ },
+ endEditBefore: {
+ // 缁撴潫缂栬緫鍓�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ },
+ },
+ endEditAfter: {
+ // 缁撴潫缂栬緫鍓�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ },
+ },
+ ck: {
+ // 鏄惁鏄剧ずcheckbox
+ type: Boolean,
+ default: true,
+ },
+ columnIndex: {
+ // 鏄惁鏄剧ず琛屽彿(2020..11.1)
+ type: Boolean,
+ default: true,
+ },
+ highlightCurrentRow: {
+ //澧炲姞閫変腑琛岄珮浜樉绀�(2022.10.07)
+ type: Boolean,
+ default: true,
+ },
+ select2Count: {
+ //瓒呭嚭鏁伴噺鏄剧ずselect2缁勪欢
+ type: Number,
+ default: 500,
+ },
+ selectable: {
+ type: Function,
+ default: (row, index) => {
+ return true;
+ },
+ },
+ },
+ data() {
+ return {
+ fixed: false, //鏄浐瀹氳鍙蜂笌checkbox
+ clickEdit: true, //2021.07.17璁剧疆涓虹偣鍑昏缁撴潫缂栬緫
+ randomTableKey: 1,
+ visiblyColumns: [],
+ key: "",
+ realHeight: 0,
+ realMaxHeight: 0,
+ enableEdit: false, // 鏄惁鍚〃鏍肩敤缂栬緫鍔熻兘
+ empty: this.allowEmpty ? "" : "--",
+ defaultImg: 'this.src="' + require("@/assets/imgs/error.png") + '"',
+ loading: false,
+ footer: {},
+ total: 0,
+ formatConfig: {},
+ // defaultColor: "",
+ // 2020.09.06璋冩暣table鍒楁暟鎹簮鐨勮儗鏅鑹�
+ colors: ["", "warning", "success", "danger", "info"],
+ rule: {
+ phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
+ decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/,
+ number: /(^[\-0-9][0-9]*([0-9]+)?)$/,
+ },
+ columnNames: [],
+ rowData: [],
+ paginations: {
+ sort: "",
+ order: "desc",
+ Foots: "",
+ total: 0,
+ // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+ sizes: [30, 60, 100, 120],
+ size: 30, // 榛樿鍒嗛〉澶у皬
+ Wheres: [],
+ page: 1,
+ rows: 30,
+ },
+ errorFiled: "",
+ edit: { columnIndex: -1, rowIndex: -1 }, // 褰撳墠鍙屽嚮缂栬緫鐨勮涓庡垪鍧愭爣
+ editStatus: {},
+ summary: false, // 鏄惁鏄剧ず鍚堣
+ // 鐩墠鍙敮鎸佷粠鍚庡彴杩斿洖鐨剆ummaryData鏁版嵁
+ summaryData: [],
+ summaryIndex: {},
+ remoteColumns: [], // 闇�瑕佹瘡娆″埛鏂版垨鍒嗛〉鍚庝粠鍚庡彴鍔犺浇瀛楀吀鏁版嵁婧愮殑鍒楅厤缃�
+ cellStyleColumns: {}, // 鏈夎儗鏅鑹茬殑閰嶇疆
+ fxRight: false, //鏄惁鏈夊彸杈瑰浐瀹氳〃澶�
+ selectRows: [], //褰撳墠閫変腑鐨勮
+ isChrome: false,
+ //vol-table甯︽暟鎹簮鐨勫崟鍏冩牸鏄惁鍚敤tag鏍囩(涓嬫媺妗嗙瓑鍗曞厓鏍间互tag鏍囩鏄剧ず)
+ //2023.04.02鏇存柊voltable涓巑ain.js
+ useTag: true,
+ currentRow: {},
+ currentColumn: [],
+ fileInfo: [],
+ uploadUrl: "",
+ uploadModel: false,
+ };
+ },
+ created() {
+ try {
+ this.useTag = this.$global.table.useTag;
+ } catch (error) {
+ console.log(error.message);
+ }
+ //2021.06.19鍒ゆ柇璋锋瓕鍐呮牳娴忚閲嶆柊璁$畻table楂樺害
+ // if (
+ // navigator.userAgent.indexOf('Chrome') != -1 ||
+ // navigator.userAgent.indexOf('Edge') != -1
+ // ) {
+ // this.isChrome = true;
+ // }
+ this.realHeight = this.getHeight();
+ this.realMaxHeight = this.getMaxHeight();
+ this.fxRight = this.columns.some((x) => {
+ return x.fixed == "right";
+ });
+ //2021.09.21绉婚櫎寮哄埗鍥哄畾琛屽彿涓巆heckbox鍒�
+ if (
+ this.columns.some((x) => {
+ return x.fixed && x.fixed != "right";
+ })
+ ) {
+ this.fixed = true;
+ }
+ //2022.04.06浼樺寲table鍚堣鍥哄畾鍒楁樉绀�
+ // if (
+ // this.columns.some((x) => {
+ // return x.summary;
+ // })
+ // ) {
+ // this.columns.forEach((x) => {
+ // if (x.fixed && x.fixed != 'right') {
+ // x.fixed = false;
+ // }
+ // });
+ // this.fixed = false;
+ // }
+
+ // 浠庡悗鍙板姞涓嬫媺妗嗙殑[鏄惁鍚敤鐨刔鏁版嵁婧�
+ let keys = [];
+ let columnBind = [];
+ this.summaryData.push("鍚堣");
+ if (this.columnIndex) {
+ this.summaryData.push(" ");
+ }
+ this.columns.forEach((x, _index) => {
+ if (x.cellStyle) {
+ this.cellStyleColumns[x.field] = x.cellStyle;
+ }
+ if (!x.hidden) {
+ // this.summaryIndex[x.field] = _index;
+ // 2020.10.11淇姹傚拰鍒楅敊浣嶇殑闂
+ this.summaryData.push("");
+ this.summaryIndex[x.field] = this.summaryData.length - 1;
+ }
+ // 姹傚拰
+ if (x.summary && !this.summary) {
+ this.summary = true;
+ }
+ if (x.bind && x.bind.key && (!x.bind.data || x.bind.data.length == 0)) {
+ // 鍐欏叆杩滅▼
+ if (!x.bind.data) x.bind.data = [];
+ if (x.bind.remote) {
+ this.remoteColumns.push(x);
+ } else if (this.loadKey) {
+ keys.push(x.bind.key);
+ x.bind.valueTyoe = x.type;
+ columnBind.push(x.bind);
+ }
+ }
+ });
+ if (keys.length > 0) {
+ this.http
+ .post("/api/Sys_Dictionary/GetVueDictionary", keys)
+ .then((dic) => {
+ dic.forEach((x) => {
+ if (x.data.length > this.select2Count) {
+ x.data.forEach((item) => {
+ item.label = item.value;
+ item.value = item.key;
+ });
+ }
+ columnBind.forEach((c) => {
+ // 杞崲鏁版嵁婧愮殑绫诲瀷涓庡垪鐨勭被鍨嬩竴鑷�(2020.04.04)
+ if (
+ c.key == x.dicNo &&
+ (c.valueTyoe == "int" || c.valueTyoe == "sbyte")
+ ) {
+ x.data.forEach((d) => {
+ // 2020.09.01澧炲姞瀵规暟瀛楃被鍨嬬殑浜屾鍒ゆ柇
+ if (!isNaN(d.key)) {
+ d.key = ~~d.key;
+ }
+ });
+ }
+ if (c.key == x.dicNo) c.data.push(...x.data);
+ });
+ });
+ });
+ }
+
+ this.paginations.sort = this.pagination.sortName;
+ // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+ Object.assign(this.paginations, this.pagination);
+ if (this.pagination.size) {
+ this.paginations.rows = this.pagination.size;
+ }
+ this.enableEdit = this.columns.some((x) => {
+ return x.hasOwnProperty("edit");
+ });
+ let keyColumn = this.columns.find((x) => {
+ return x.isKey;
+ });
+ if (keyColumn) {
+ this.key = keyColumn.field;
+ }
+ this.defaultLoadPage && this.load();
+ },
+ computed: {
+ filterColumns() {
+ return this.columns.filter((x, index) => {
+ if (!x.field) {
+ x.field = x.title + index;
+ }
+ return !x.hidden;
+ });
+ },
+ },
+ methods: {
+ watchRowSelectChange(newLen, oldLen) {
+ if (newLen < oldLen && this.selectRows.length) {
+ this.selectRows = [];
+ this.$refs.table.clearSelection();
+ }
+ },
+ switchChange(val, row, column) {
+ //杩欓噷鍦ㄥ垵濮嬪寲鐨勬椂鍊欎篃浼氳Е鍙慶hange浜嬩欢
+ if (Object.keys(row).length <= 1) {
+ return;
+ }
+ if (column.onChange) {
+ column.onChange(val, row, column);
+ }
+ },
+ inputKeyPress(row, column, $event, $e) {
+ column.onKeyPress && column.onKeyPress(row, column, $event);
+ this.getInputSummaries(null, null, $event, column);
+ },
+ extraClick(row, column) {
+ column.extra.click &&
+ column.extra.click(
+ row,
+ column,
+ this.url ? this.rowData : this.tableData
+ );
+ },
+ headerClick(column, event) {
+ if (this.clickEdit && this.edit.rowIndex != -1) {
+ if (
+ this.rowEndEdit(
+ this.url
+ ? this.rowData[this.edit.rowIndex]
+ : this.tableData[this.edit.rowIndex],
+ column
+ )
+ ) {
+ this.edit.rowIndex = -1;
+ }
+ }
+ // this.edit.rowIndex = -1;
+ },
+ rowDbClick(row, column, event) {
+ //2021.05.23澧炲姞鍙屽嚮琛屼簨浠�
+ this.$emit("rowDbClick", { row, column, event });
+ },
+ rowClick(row, column, event) {
+ //2022.02.20澧炲姞鐐瑰嚮鏃惰〃鏍煎弬鏁板垽鏂�
+ if (!column) {
+ return;
+ }
+ //姝e湪缂栬緫鏃讹紝绂佹鍑哄彂rowClick浜嬩欢
+ if (this.edit.rowIndex == -1) {
+ this.$emit("rowClick", { row, column, event });
+ }
+ // 鐐瑰嚮琛屼簨浠�(2020.11.07)
+
+ if (!this.doubleEdit) {
+ return;
+ }
+ // 鐐瑰嚮鍏朵粬琛屾椂锛屽鏋滅偣鍑荤殑琛屼笌姝e湪缂栬緫鐨勮鐩稿悓锛屼繚鎸佺紪杈戠姸鎬�
+ if (this.clickEdit && this.edit.rowIndex != -1) {
+ if (row.elementIndex == this.edit.rowIndex) {
+ // 鐐瑰嚮鐨勫崟鍏冩牸濡傛灉涓嶅彲浠ョ紪杈戯紝鐩存帴缁撴潫缂栬緫
+ // 2020.10.12淇缁撴潫缂栬緫鏃讹紝element table楂樼増鏈睘鎬ц幏鍙栦笉鍒扮殑闂
+ let _col = this.columns.find((x) => {
+ return x.field == ((event && event.property) || column.property);
+ });
+ if (_col && (!_col.edit || _col.readonly)) {
+ if (this.rowEndEdit(row, event)) {
+ this.edit.rowIndex = -1;
+ }
+ }
+ return;
+ }
+ if (this.rowEndEdit(row, event && event.property ? event : column)) {
+ this.edit.rowIndex = -1;
+ }
+ //褰撴鍦ㄧ紪杈戯紝涓旂偣鍑诲埌鍏朵粬琛屾椂锛屽湪鍘熺紪杈戠殑琛岀粨鏉熺紪杈戝悗锛岃Е鍙戞柊琛岀殑rowClick浜嬩欢
+ //姝e湪缂栬緫鏃讹紝绂佹鍑哄彂rowClick浜嬩欢
+ if (this.edit.rowIndex == -1) {
+ this.$emit("rowClick", { row, column, event });
+ }
+ }
+ this.rowBeginEdit(row, column);
+ },
+ dowloadFile(file) {
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken(),
+ },
+ this.http.ipAddress
+ );
+ },
+ getFilePath(pathSring, column) {
+ // 鑾峰彇琛ㄧ殑鍥剧墖涓庢枃浠舵樉绀�
+ if (!pathSring) return [];
+ // 澧炲姞鍥剧墖鑷畾涔夋搷浣�
+ // 杩斿洖鏍煎紡蹇呴』鏄痆{name:"鏂囦欢鍚�",path:"鍥剧墖鍏ㄨ矾寰勬垨base64鏍煎紡"}]
+ if (column.formatter) {
+ return column.formatter(pathSring);
+ }
+ let filePath;
+ if (column.base64 && pathSring.indexOf("data") != -1) {
+ filePath = ("," + pathSring)
+ .split(",data")
+ .filter((x) => {
+ return x;
+ })
+ .map((m) => {
+ return "data" + m;
+ });
+ } else {
+ filePath = pathSring.replace(/\\/g, "/").split(",");
+ }
+
+ let fileInfo = [];
+ for (let index = 0; index < filePath.length; index++) {
+ let file = filePath[index];
+ // 2020.12.19澧炲姞base64鍥剧墖鏄剧ず
+ if (column.base64) {
+ fileInfo.push({
+ name: "",
+ path:
+ (file.indexOf("data") == -1 ? "data:image/png;base64," : "") +
+ file,
+ });
+ } else if (file.indexOf(".") != -1) {
+ let splitFile = file.split("/");
+ if (splitFile.length > 0) {
+ fileInfo.push({
+ name: splitFile[splitFile.length - 1],
+ path: this.base.isUrl(file) ? file : this.http.ipAddress + file,
+ });
+ }
+ }
+ }
+ return fileInfo;
+ },
+ // 閲嶇疆table
+ reset() {
+ if (this.tableData && this.tableData.length > 0) {
+ this.tableData.splice(0);
+ }
+ if (this.rowData && this.rowData.length > 0) {
+ this.rowData.splice(0);
+ }
+ if (!this.paginationHide) {
+ this.paginations.page = 1;
+ // this.paginations.rows = 30;
+ if (this.paginations.wheres && this.paginations.wheres.length > 0) {
+ this.paginations.wheres.splice(0);
+ }
+ }
+ this.errorFiled = "";
+ this.edit.columnIndex = -1;
+ this.edit.rowIndex = -1;
+ },
+ getHeight() {
+ // 娌℃湁瀹氫箟楂樺害涓庢渶澶ч珮搴︼紝浣跨敤table榛樿鍊�
+ if (!this.height && !this.maxHeight) {
+ return null;
+ }
+ // 瀹氫箟浜嗘渶澶ч珮搴﹀垯涓嶄娇鐢ㄩ珮搴�
+ if (this.maxHeight) {
+ return null;
+ }
+ // 浣跨敤褰撳墠瀹氫箟鐨勯珮搴�
+ return this.height;
+ },
+ getMaxHeight() {
+ // 娌℃湁瀹氫箟楂樺害涓庢渶澶ч珮搴︼紝浣跨敤table榛樿鍊�
+ if (!this.height && !this.maxHeight) {
+ return null;
+ }
+ // 瀹氫箟浜嗘渶澶ч珮搴︿娇鐢ㄦ渶澶ч珮搴�
+ if (this.maxHeight) {
+ return this.maxHeight;
+ }
+ // 涓嶄娇鐢ㄦ渶澶ч珮搴�
+ return null;
+ },
+ getSelectedOptions(column) {
+ if (column.bind && column.bind.data && column.bind.data.length > 0) {
+ return column.bind.data;
+ }
+ return [];
+ },
+ formatterClick(row, column, event) {
+ if (column.click) {
+ column.click(row, column, event);
+ event.stopPropagation && event.stopPropagation();
+ } else {
+ this.rowClick(row, column, event);
+ }
+ },
+ initIndex({ row, rowIndex }) {
+ if (this.index) {
+ row.elementIndex = rowIndex;
+ }
+ // if (rowIndex%2!==0) {
+ // return "even-row";
+ // }
+ return;
+ },
+ toggleEdit(event) {},
+ setEditStatus(status) {
+ // this.columns.forEach((x) => {
+ // if (x.hasOwnProperty("edit")) {
+ // this.$set(x.edit, "status", status);
+ // }
+ // });
+ },
+ // 閫氳繃button鎸夐挳鍚敤缂栬緫
+ beginWithButtonEdit(scope) {
+ // url?rowData:tableData
+ this.rowBeginEdit(scope.row, this.columns[scope.$index]);
+ },
+ rowBeginEdit(row, column) {
+ if (this.edit.rowIndex != -1) {
+ return;
+ }
+ let _row = this.columns.find((x) => x.field == column.property);
+ if (_row) {
+ if (_row.readonly) {
+ return;
+ }
+ if (
+ //涓嶈兘缂栬緫鐨勫瓧娈点�乻witch锛岀偣鍑讳笉寮�鍚惎缂栬緫鍔熻兘
+ !_row.edit ||
+ (_row.edit.keep && _row.edit.type == "switch")
+ ) {
+ return;
+ }
+ }
+ if (!this.enableEdit) return;
+ _errMsg = "";
+ // 缂栬緫鍓�
+ this.columns
+ .filter((x) => {
+ return x.bind && x.bind.data && x.bind.data.length;
+ })
+ .forEach((column) => {
+ let val = row[column.field];
+ if (typeof column.bind.data[0].key == "string") {
+ if (typeof val == "number") {
+ row[column.field] = row[column.field] + "";
+ }
+ } else {
+ if (typeof val == "string" && val) {
+ let _val = val * 1;
+ if (_val + "" === val) {
+ row[column.field] = _val;
+ }
+ }
+ }
+ });
+ if (!this.beginEdit(row, column, row.elementIndex)) return;
+ if (row.hasOwnProperty("elementIndex")) {
+ if (this.edit.rowIndex == row.elementIndex) {
+ return;
+ }
+ this.edit.rowIndex = row.elementIndex;
+ }
+ },
+ rowEndEdit(row, column, event) {
+ if (this.clickEdit && event) {
+ return true;
+ }
+ if (!this.enableEdit) {
+ if (!this.errorFiled) {
+ if (
+ this.edit.rowIndex != -1 &&
+ !this.endEditAfter(row, column, this.edit.rowIndex)
+ ) {
+ return false;
+ }
+ this.edit.rowIndex = -1;
+ }
+ return true;
+ }
+ if (!this.doubleEdit && event) {
+ return true;
+ }
+ let _row = this.url
+ ? this.rowData[this.edit.rowIndex]
+ : this.tableData[this.edit.rowIndex];
+ // 缁撴潫缂栬緫鍓�
+ if (!this.endEditBefore(_row, column, this.edit.rowIndex)) return false;
+ if (this.edit.rowIndex != -1) {
+ //2022.06.26淇琛ㄦ牸鍐呭鍒囨崲鍚庤鏁颁笉涓�鑷存椂涓嶈兘缂栬緫鐨勯棶棰�
+ if (this.edit.rowIndex - 1 > (this.rowData || this.tableData).length) {
+ this.edit.rowIndex = -1;
+ return;
+ }
+ let row = (this.url ? this.rowData : this.tableData)[
+ this.edit.rowIndex
+ ];
+ for (let index = 0; index < this.columns.length; index++) {
+ const _column = this.columns[index];
+ if (_column.edit) {
+ if (!this.validateRow(row, _column)) {
+ return;
+ }
+ }
+ }
+ }
+ if (!this.endEditAfter(_row, column, this.edit.rowIndex)) return false;
+ this.edit.rowIndex = -1;
+ return true;
+ },
+ validateRow(row, option1) {
+ if (!this.validateColum(option1, row)) {
+ this.errorFiled = option1.field;
+ // 2022.05.06 淇敼閿欒淇℃伅閲嶅鐨勯棶棰�
+ this.$message.error(option1.title + _errMsg);
+ return false;
+ }
+ this.errorFiled = "";
+ return true;
+ },
+ validateColum(option, data) {
+ if (option.hidden || option.bind) return true;
+ let val = data[option.field];
+ if (option.require || option.required) {
+ if (val != "0" && (val === "" || val === undefined)) {
+ if (!this.errorFiled) {
+ _errMsg = "涓嶈兘涓虹┖";
+ }
+ return false;
+ }
+ }
+ if (!option.edit) {
+ return true;
+ }
+ let editType = option.edit.type;
+ // 楠岃瘉鏁板瓧
+ if (editType == "int" || editType == "decimal" || editType == "number") {
+ if (val == "" || val == undefined) return true;
+ if (editType == "decimal") {
+ if (!this.rule.decimal.test(val)) {
+ _errMsg = "鍙兘鏄暟瀛�";
+ return false;
+ }
+ } else if (!this.rule.decimal.test(val)) {
+ _errMsg = "鍙兘鏄暟瀛�";
+ return false;
+ }
+ if (
+ option.edit.min != undefined &&
+ typeof option.edit.min === "number" &&
+ val < option.edit.min
+ ) {
+ _errMsg = "涓嶈兘灏忎簬" + option.edit.min;
+ return false;
+ }
+ if (
+ option.edit.max != undefined &&
+ typeof option.edit.max === "number" &&
+ val > option.edit.max
+ ) {
+ _errMsg = "涓嶈兘澶т簬" + option.edit.max;
+ return false;
+ }
+ return true;
+ }
+
+ // 楠岃瘉瀛楃涓�
+ if (val && (editType == "text" || editType == "string")) {
+ if (
+ option.edit.min != undefined &&
+ typeof option.edit.min === "number" &&
+ val.length < option.edit.min
+ ) {
+ _errMsg = "鑷冲皯" + option.edit.min + "涓瓧绗�";
+ return false;
+ }
+ if (
+ option.edit.max != undefined &&
+ typeof option.edit.max === "number" &&
+ val.length > option.edit.max
+ ) {
+ _errMsg = "鏈�澶�" + option.edit.max + "涓瓧绗�";
+ return false;
+ }
+ }
+ return true;
+ },
+ delRow() {
+ let rows = this.getSelected();
+ if (rows.length == 0) return this.$Message.error("璇烽�夋嫨瑕佸垹闄ょ殑琛�!");
+
+ let data = this.url ? this.rowData : this.tableData;
+ let indexArr = this.getSelectedIndex();
+ if (indexArr.length == 0) {
+ return this.$Message.error(
+ "鍒犻櫎鎿嶄綔蹇呴』璁剧疆VolTable鐨勫睘鎬ndex='true'"
+ );
+ }
+ // if (indexArr.length == 0 || !this.key) {
+ // return this.$message.error(
+ // "璇疯缃甶ndex=true灞炴�ф垨鎸嘽olumns鐨勫瓧娈典负key"
+ // );
+ // }
+ if (indexArr.length == 0) {
+ // let keyValues=[]
+ // rows.forEach(x=>{
+ // if (x[this.key]) {
+ // }
+ // keyValues.push(x[this.key])
+ // })
+ // data.find(x=>)
+ } else {
+ for (let i = data.length - 1; i >= 0; i--) {
+ if (indexArr.indexOf(i) != -1) {
+ data.splice(i, 1);
+ }
+ }
+ }
+ this.edit.rowIndex = -1;
+ return rows;
+ },
+ addRow(row) {
+ if (!row) {
+ row = {};
+ }
+ this.columns.forEach((x) => {
+ // 2022.05.06 娣诲姞琛屾椂锛屽鏋滃垪鏈夌紪杈戝睘鎬э紝璁剧疆寮�鍚紪杈�(閬垮厤鍏抽棴缂栬緫鍚庯紝鏃犳硶鍐嶆鍚敤缂栬緫)??
+ //x.readonly = false;
+ if (!row.hasOwnProperty(x.field)) {
+ if (x.edit && x.edit.type == "switch") {
+ row[x.field] = x.type == "bool" ? false : 0;
+ } else if (!row.hidden) {
+ // 2020.09.06娣诲姞琛屾椂锛岃缃粯璁ゅ瓧娈�
+ row[x.field] = undefined;
+ }
+ }
+ });
+ if (!this.url) {
+ this.tableData.push(row);
+ return;
+ }
+ this.rowData.push(row);
+ },
+ viewImg(row, column, url, $event) {
+ $event.stopPropagation();
+ this.base.previewImg(url);
+ // window.open(row[column.field]);
+ },
+ link(row, column, $e) {
+ $e.stopPropagation();
+ this.$props.linkView(row, column);
+ },
+ getSelected() {
+ return this.selectRows;
+ },
+ getSelectedIndex() {
+ if (!this.index) {
+ // 鍙湁璁剧疆浜嗗睘鎬ndex鎵嶆湁绱㈠紩琛�
+ return [];
+ }
+ let indexArr = this.selectRows.map((x) => {
+ return x.elementIndex;
+ });
+ return indexArr || [];
+ },
+ GetTableDictionary(rows) {
+ // 鍒嗛〉鎴栧埛鏂版垨閲嶆柊缁戝畾鏁版嵁婧�
+ if (this.remoteColumns.length == 0 || !rows || rows.length == 0) return;
+ let remoteInfo = {};
+ for (let index = 0; index < this.remoteColumns.length; index++) {
+ const column = this.remoteColumns[index];
+ // column.bind.data.splice(0);
+ let key = column.bind.key;
+ let data = [];
+ rows.forEach((row) => {
+ if (row[column.field] || row[column.field] == "0") {
+ if (data.indexOf(row[column.field]) == -1) {
+ data.push(row[column.field]);
+ }
+ }
+ });
+ if (data.length > 0) {
+ remoteInfo[key] = data;
+ }
+ }
+ if (remoteInfo.length == 0) return;
+ // ha= Object.assign([], ha, hb)
+ this.http
+ .post("/api/Sys_Dictionary/GetTableDictionary", remoteInfo)
+ .then((dic) => {
+ dic.forEach((x) => {
+ this.remoteColumns.forEach((column) => {
+ if (column.bind.key == x.key) {
+ column.bind.data = Object.assign([], column.bind.data, x.data);
+ // column.bind.data.push(...x.data);
+ }
+ });
+ });
+ this.$emit("dicInited", dic);
+ });
+ },
+ load(query, isResetPage) {
+ // isResetPage閲嶇疆鍒嗛〉鏁版嵁
+ if (!this.url) return;
+ if (isResetPage) {
+ this.resetPage();
+ }
+ let param = {
+ page: this.paginations.page,
+ rows: this.paginations.rows,
+ sort: this.paginations.sort,
+ order: this.paginations.order,
+ wheres: [], // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+ };
+ let status = true;
+ // 鍚堝苟鏌ヨ淇℃伅(鍖呮煡璇㈠垎椤点�佹帓搴忋�佹煡璇㈡潯浠剁瓑)
+ if (query) {
+ param = Object.assign(param, query);
+ }
+ /* 鏌ヨ鍓嶅鐞�(濡傛灉闇�瑕佹煡璇㈡潯浠讹紝瀹炵幇缁勪欢鏂规硶loadBefore鏂规硶鍗冲彲:
+ loadBefore=(param, callBack)=>{
+ param.wheres = [{ name: "PhoneNo", value: "13419098211" }];
+ callBack(true);
+ })
+ */
+ this.$emit("loadBefore", param, (result) => {
+ status = result;
+ });
+ if (!status) return;
+
+ if (param.wheres && param.wheres instanceof Array) {
+ param.wheres = JSON.stringify(param.wheres);
+ }
+ this.loading = true;
+ this.http.post(this.url, param).then(
+ (data) => {
+ //2021.06.04淇tree涓嶅埛鏂扮殑闂
+ if (this.rowKey) {
+ this.randomTableKey++;
+ this.rowData.splice(0);
+ }
+ this.loading = false;
+ // 鏌ヨ杩斿洖缁撴灉鍚庡鐞�
+ // 2020.10.30澧炲姞鏌ヨ鍚庤繑鍥炴墍鏈夌殑鏌ヨ淇℃伅
+ this.$emit(
+ "loadAfter",
+ data.rows || [],
+ (result) => {
+ status = result;
+ },
+ data
+ );
+ if (!status) return;
+ this.GetTableDictionary(data.rows);
+ this.rowData = data.rows || [];
+ this.paginations.total = data.total;
+ // 鍚堣
+ this.getSummaries(data);
+ // this.$nextTick(() => {
+ // this.$refs.table.doLayout();
+ // });
+ },
+ (error) => {
+ this.loading = false;
+ // this.$Message.error(error || "缃戠粶寮傚父");
+ }
+ );
+ }, // 鑾峰彇缁熻
+ getSummaries(data) {
+ if (!this.summary || !data.summary) return;
+ this.summaryData.splice(0);
+ // 寮�鍚簡琛屽彿鐨勶紝+1
+ if (this.columnIndex) {
+ this.summaryData.push("");
+ }
+ // 濡傛灉鏈塩heckbox锛屽簲璇ョ畻浣滄槸绗竴琛�
+ if (this.ck) {
+ this.summaryData.push("");
+ }
+
+ this.columns.forEach((col) => {
+ if (col.children && col.children.length) {
+ col.children.forEach((item) => {
+ this.getColumnSummaries(item, data);
+ });
+ } else {
+ this.getColumnSummaries(col, data);
+ }
+ });
+ if (this.summaryData.length > 0 && this.summaryData[0] == "") {
+ this.summaryData[0] = "鍚堣";
+ }
+ },
+ getColumnSummaries(col, data) {
+ if (!col.hidden) {
+ if (data.summary.hasOwnProperty(col.field)) {
+ let sum = data.summary[col.field];
+ if (sum) {
+ sum =
+ (sum * 1.0).toFixed(col.numberLength || 2).replace(".00", "") *
+ 1.0;
+ }
+ this.summaryData.push(sum);
+ } else {
+ this.summaryData.push("");
+ }
+ }
+ },
+ getInputChangeSummaries() {},
+ handleSizeChange(val) {
+ this.paginations.size = val;
+ this.paginations.rows = val;
+ this.load();
+ },
+ handleCurrentChange(val) {
+ this.paginations.page = val;
+ this.load();
+ },
+ sortChange(sort) {
+ this.paginations.sort = sort.prop;
+ this.paginations.order = sort.order == "ascending" ? "asc" : "desc";
+ this.load();
+ },
+ resetPage() {
+ // 閲嶇疆鏌ヨ鍒嗛〉
+ // this.paginations.rows = 30;
+ this.paginations.page = 1;
+ },
+ selectionChange(selection) {
+ // console.log(selection);
+ // 閫夋嫨琛屼簨浠�,鍙湁鍗曢�夋墠瑙﹀彂
+ this.selectRows = selection;
+ if (this.single) {
+ if (selection.length == 1) {
+ this.$emit("rowChange", selection[0]);
+ }
+ if (selection.length > 1) {
+ let _row = selection[selection.length - 1];
+ this.$refs.table.toggleRowSelection(selection[0]);
+ this.selectRows = [_row];
+ }
+ }
+ // 灏唖electionchange鏆撮湶鍑哄幓
+ this.$emit("selectionChange", selection);
+ },
+ getColor(row, column) {
+ let val = row[column.field];
+ if (column.getColor && typeof column.getColor === "function") {
+ let _color = column.getColor(row, column);
+ if (_color) {
+ return _color;
+ }
+ }
+ if (!val && val != "0") {
+ return "";
+ }
+ if (!this.formatConfig[column.field]) {
+ this.formatConfig[column.field] = [val];
+ return this.colors[0];
+ }
+ let index = this.formatConfig[column.field].indexOf(val);
+ if (index != -1) {
+ return this.colors[index];
+ }
+ if (this.formatConfig[column.field].length > 5) {
+ return "";
+ }
+
+ if (index == -1) {
+ this.formatConfig[column.field].push(val);
+ index = this.formatConfig[column.field].length - 1;
+ }
+ return this.colors[index];
+ },
+ formatterDate(row, column) {
+ return (row[column.field] || "").substr(0, 10);
+ },
+ formatter(row, column, template) {
+ if (!template) return row[column.property];
+ let val = row[column.field];
+ if (!val && val != 0) return val;
+ // 鏄惁鍊�
+ if (column.edit && column.edit.type == "switch") {
+ return val ? "鏄�" : "鍚�";
+ }
+ if (!column.bind || !column.bind.data) {
+ return row[column.field];
+ }
+
+ if (
+ column.edit &&
+ (column.edit.type == "selectList" || column.edit.type == "treeSelect")
+ ) {
+ if (!Array.isArray(val)) {
+ row[column.field] = val.split(",");
+ } else {
+ val = val.join(",");
+ }
+ return this.getSelectFormatter(column, val);
+ }
+ // 缂栬緫澶氶�塼able鏄剧ず
+ if (
+ column.bind.type == "selectList" ||
+ column.bind.type == "checkbox" ||
+ column.bind.type == "treeSelect"
+ ) {
+ // if (typeof val === 'string' && val.indexOf(',') != -1) {
+ return this.getSelectFormatter(column, val + "");
+ // }
+ }
+ let source = column.bind.data.filter((x) => {
+ // return x.key != "" && x.key == val;
+ // 2020.06.06淇鍗曠嫭浣跨敤table缁勪欢鏃�,key涓烘暟瀛�0鏃惰浆鎹㈡垚鏂囨湰澶辫触鐨勯棶棰�
+ return x.key !== "" && x.key !== undefined && x.key + "" === val + "";
+ });
+ if (source && source.length > 0) val = source[0].label || source[0].value;
+ return val;
+ },
+ getSelectFormatter(column, val) {
+ // 缂栬緫澶氶�塼able鏄剧ず
+ let valArr = val.split(",");
+ for (let index = 0; index < valArr.length; index++) {
+ (column.bind.orginData && column.bind.orginData.length
+ ? column.bind.orginData
+ : column.bind.data
+ ).forEach((x) => {
+ // 2020.06.06淇鏁版嵁婧愪负selectList鏃�,key涓烘暟瀛�0鏃朵笉鑳借浆鎹㈡枃鏈殑闂
+ if (
+ x.key !== "" &&
+ x.key !== undefined &&
+ x.key + "" == valArr[index] + ""
+ ) {
+ valArr[index] = x.label || x.value;
+ }
+ });
+ }
+ return valArr.join(",");
+ },
+ onChange(scope, val, event, column) {
+ // 2020.09.03淇onChange涓嶈Е鍙戠殑闂
+ let row = scope.row;
+ if (column.onChange && !column.onChange(row, val, event)) {
+ return;
+ }
+ // 杈撳叆妗嗘眰鍜屽疄鏃惰绠�
+ this.getInputSummaries(scope, val, event, column);
+ },
+ // input杈撳叆瀹炴椂姹傚拰
+ getInputSummaries(scope, val, event, column) {
+ // column鍒楄缃簡summary灞炴�х殑鎵嶈绠楀��
+ if (!column.summary) return;
+ let sum = 0;
+ // let _index = 0;
+ (this.url ? this.rowData : this.tableData).forEach((x, index) => {
+ if (x.hasOwnProperty(column.field) && !isNaN(x[column.field])) {
+ // _index = index;
+ sum += x[column.field] * 1;
+ }
+ });
+ if (sum) {
+ if (column.summary == "avg") {
+ sum = sum / (this.rowData.length || this.tableData.length || 1);
+ }
+ sum =
+ (sum * 1.0).toFixed(column.numberLength || 2).replace(".00", "") *
+ 1.0;
+ }
+ this.summaryData[this.summaryIndex[column.field]] = sum;
+ },
+ getSummaryData({ columns, data }) {
+ return this.summaryData;
+ },
+ getCellStyle(row) {
+ // 2020.12.13澧炲姞璁剧疆鍗曞厓鏍奸鑹�
+ if (row.column.property) {
+ return (
+ this.cellStyleColumns[row.column.property] &&
+ this.cellStyleColumns[row.column.property](
+ row.row,
+ row.rowIndex,
+ row.columnIndex
+ )
+ );
+ }
+ },
+ compareDate(date1, date2) {
+ if (!date2) {
+ return true;
+ }
+ return (
+ date1.valueOf() <
+ (typeof date2 == "number" ? date2 : new Date(date2).valueOf())
+ );
+ },
+ getDateOptions(date, item) {
+ //2021.07.17璁剧疆鏃堕棿鍙�夎寖鍥�
+ if ((!item.min && !item.max) || !date) {
+ return false;
+ }
+ if (item.min && item.min.indexOf(" ") == -1) {
+ //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+ item.min = item.min + " 00:00:000";
+ }
+ return (
+ this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+ );
+ },
+ getDateFormat(column) {
+ //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+ return column.edit.type == "date" ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss";
+ },
+ userSelect(selection, row) {
+ this.selectRows = selection;
+ if (!this.single) {
+ this.$emit("rowChange", { row, selection });
+ }
+ },
+ isEmptyTag(row, column) {
+ if (!row[column.field] && row[column.field] != "0") {
+ return "empty-tag";
+ }
+ return "";
+ },
+ filterChildrenColumn(children) {
+ if (!children) {
+ return [];
+ }
+ return children.filter((x) => {
+ return !x.hidden;
+ });
+ },
+ initColumnDisabled(row, column) {
+ return column.getDisabled && column.getDisabled(row, column);
+ },
+ showUpload(row, column) {
+ this.fileInfo = (row[column.field] || "")
+ .split(",")
+ .filter((x) => {
+ return x;
+ })
+ .map((item) => {
+ return { path: item, name: "" };
+ });
+ this.currentRow = row;
+ this.currentColumn = column;
+ if (this.currentColumn.edit.autoUpload === undefined) {
+ this.currentColumn.edit.autoUpload = true;
+ }
+ if (this.currentColumn.edit.multiple === undefined) {
+ this.currentColumn.edit.multiple = false;
+ }
+
+ if (this.currentColumn.edit.url === undefined) {
+ this.uploadUrl =
+ "api/" +
+ (this.url || "").replace("/api", "api").split("/")[1] +
+ "/upload";
+ } else {
+ this.uploadUrl = this.currentColumn.edit.url;
+ }
+ this.uploadModel = true;
+ },
+ uploadAfter(result, files) {
+ this.currentColumn.uploadAfter &&
+ this.currentColumn.uploadAfter(result, files);
+ return true;
+ },
+ saveUpload() {
+ //鐢熸垚淇濆瓨鍚庤繑鍥炵殑璺緞
+ let arr = this.fileInfo.map((x) => {
+ if (x.path) {
+ return x.path;
+ }
+ return result.data + x.name;
+ });
+
+ this.currentRow[this.currentColumn.field] = arr.join(",");
+ this.uploadModel = false;
+ return true;
+ },
+ },
+});
+</script>
+<style lang="less" scoped>
+.vol-table {
+ position: relative;
+ .mask {
+ opacity: 0.2;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: #d0d0d0;
+ z-index: 100;
+ }
+ .message {
+ text-align: center;
+ color: #635c5c;
+ font-size: 15px;
+ font-weight: 600;
+ background: #eee;
+ transform: translateY(-50%);
+ top: 50%;
+ position: absolute;
+ z-index: 200;
+ left: 0;
+ right: 0;
+ width: 150px;
+ margin: 0 auto;
+ line-height: 40px;
+ border-radius: 4px;
+ border: 1px solid #a09e9e;
+ }
+}
+.e-item {
+ display: flex;
+ > div:first-child {
+ flex: 1;
+ }
+}
+.vol-table ::v-deep(.el-pager .number) {
+ padding: 0 7px;
+ border-radius: 5px;
+ border: 1px solid #e6e6e6;
+ margin-left: 8px;
+ font-weight: 500;
+ min-width: 28px;
+}
+.vol-table ::v-deep(.el-pager .number.active) {
+ background: #ed4014;
+ color: #fff;
+}
+.vol-table .t-file {
+ color: #1e8cff;
+ cursor: pointer;
+ border-bottom: 1px solid;
+ padding-bottom: 2px;
+}
+.vol-table .empty-tag {
+ border: none;
+ background: none;
+}
+.v-table ::v-deep(.el-date-editor .el-icon-date),
+.v-table ::v-deep(.el-date-editor .el-icon-time) {
+ width: 10px;
+}
+
+.column-required {
+ position: relative;
+ color: #f20303;
+ font-size: 14px;
+ top: 2px;
+ right: 2px;
+}
+</style>
+
+<style scoped>
+/* .v-table ::v-deep(.even-row){
+ background: rgb(245,247,250);
+} */
+.pagination {
+ text-align: right;
+ padding: 2px 28px;
+ border: 1px solid #eee;
+ border-top: 0px;
+}
+/* .v-table ::v-deep(.el-input .el-input__inner) {
+ padding: 0 7px;
+} */
+.v-table ::v-deep(.el-table__header th) {
+ /* padding: 0px !important; */
+ background-color: #f8f8f9 !important;
+ font-size: 13px;
+ height: 46px;
+ color: #616161;
+}
+
+.v-table ::v-deep(.el-table__header th.is-sortable) {
+ padding: 3px !important;
+}
+.vol-table.text-inline ::v-deep(.el-table__body .cell),
+.vol-table.text-inline ::v-deep(.el-table__header-wrapper .cell) {
+ word-break: inherit !important;
+ white-space: nowrap !important;
+}
+/* .v-table ::v-deep(.el-table__body td) {
+ padding: 9px 0 !important;
+} */
+
+.v-table ::v-deep(.el-table__footer td) {
+ padding: 7px 0 !important;
+}
+
+.vol-table ::v-deep(.el-table-column--selection .cell) {
+ display: inline;
+}
+.vol-table.text-inline ::v-deep(.el-table th > .cell) {
+ white-space: nowrap !important;
+}
+
+.vol-table .table-img {
+ height: 40px;
+ border-radius: 5px;
+ margin-right: 10px;
+ width: 40px;
+ object-fit: cover;
+}
+.vol-table .table-img:hover {
+ cursor: pointer;
+}
+
+.vol-table ::v-deep(.cell) {
+ padding: 2px 10px;
+}
+.vol-table ::v-deep(.cell .el-tag) {
+ padding: 5px 9px;
+}
+.table-input {
+ color: rgb(104, 103, 103);
+ padding: 3px 10px;
+ height: 32px;
+ line-height: 32px;
+ width: 100%;
+ border-radius: 4px;
+ border: 1px solid #dcdcdc;
+}
+.table-input:focus {
+ outline: 1px solid #49a3fd;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue"
new file mode 100644
index 0000000..4c7d696
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue"
@@ -0,0 +1,880 @@
+<template>
+ <div class="upload-container">
+ <div>
+ <div class="input-btns" style="margin-bottom: 10px">
+ <input
+ ref="input"
+ type="file"
+ style="display: none"
+ @change="handleChange"
+ :multiple="multiple"
+ />
+ <div v-if="img" class="upload-img">
+ <!-- v-for="(file,index) in fileInfo.length>0?fileInfo: files" -->
+ <div v-for="(file, index) in files" :key="index" class="img-item">
+ <div class="operation">
+ <div class="action">
+ <i class="el-icon-view view" @click="previewImg(index)"></i>
+ <i class="el-icon-delete remove" @click="removeFile(index)"></i>
+ </div>
+ <div class="mask"></div>
+ </div>
+
+ <img :src="getImgSrc(file, index)" :onerror="errorImg" />
+ </div>
+ <div
+ v-show="!autoUpload || (autoUpload && files.length < maxFile)"
+ class="img-selector"
+ :class="getSelector()"
+ >
+ <div class="selector" @click="handleClick">
+ <i class="el-icon-camera-solid"></i>
+ </div>
+ <div
+ v-if="!autoUpload"
+ class="s-btn"
+ :class="{ readonly: changed }"
+ @click="upload"
+ >
+ <div>{{ loadText }}</div>
+ </div>
+ </div>
+ </div>
+ <el-button v-else @click="handleClick"
+ >閫夋嫨{{ img ? '鍥剧墖' : '鏂囦欢' }}</el-button
+ >
+
+ <el-button
+ v-if="!autoUpload && !img"
+ type="info"
+ :disabled="changed"
+ @click="upload(true)"
+ :loading="loadingStatus"
+ >涓婁紶鏂囦欢</el-button
+ >
+ </div>
+ <slot></slot>
+ <div v-if="desc">
+ <el-alert
+ :title="getText() + '鏂囦欢澶у皬涓嶈秴杩�' + (maxSize || 50) + 'M'"
+ type="info"
+ show-icon
+ >
+ </el-alert>
+ </div>
+ <slot name="content"></slot>
+ <div v-if="!img">
+ <ul class="upload-list" v-show="fileList">
+ <li class="list-file" v-for="(file, index) in files" :key="index">
+ <a>
+ <span @click="fileOnClick(index, file)">
+ <i :class="format(file)"></i>
+ {{ file.name }}
+ </span>
+ </a>
+ <span @click="removeFile(index)" class="file-remove">
+ <i class="el-icon-close"></i>
+ </span>
+ </li>
+ </ul>
+ </div>
+ <slot name="tip"></slot>
+ </div>
+ </div>
+</template>
+<script>
+let OSS = require('ali-oss');
+export default {
+ components: {},
+ props: {
+ desc: {
+ //鏄惁鏄剧ず榛樿浠嬬粛
+ //鏄惁澶氶��
+ type: Boolean,
+ default: false
+ },
+ fileInfo: {
+ //鐢ㄤ簬鎺ユ敹涓婁紶鐨勬枃浠讹紝涔熷彲浠ュ姞浠ラ粯璁ゅ�硷紝鏄剧ず宸蹭笂浼犵殑鏂囦欢锛岀敤鎴蜂笂浼犲悗浼氳鐩栭粯璁ゅ��
+ type: Array,
+ default: () => {
+ return [];
+ } //鏍煎紡[{name:'1.jpg',path:'127.0.01/1.jpg'}]
+ },
+ downLoad: {
+ //鏄惁鍙互鐐瑰嚮鏂囦欢涓嬭浇
+ type: Boolean,
+ default: true
+ },
+ multiple: {
+ //鏄惁澶氶��
+ type: Boolean,
+ default: false
+ },
+ maxFile: {
+ //鏈�澶氬彲閫夋枃浠舵暟閲忥紝蹇呴』multiple=true锛屾墠浼氱敓鏁�
+ type: Number,
+ default: 5
+ },
+ maxSize: {
+ //鏂囦欢闄愬埗澶у皬3M
+ type: Number,
+ default: 50
+ },
+
+ autoUpload: {
+ //閫夋嫨鏂囦欢鍚庢槸鍚﹁嚜鍔ㄤ笂浼�
+ type: Boolean,
+ default: true
+ },
+ img: {
+ //鍥剧墖绫诲瀷 img>excel>fileTypes涓夌鏂囦欢绫诲瀷浼樺厛绾�
+ type: Boolean,
+ default: false
+ },
+ excel: {
+ //excel鏂囦欢
+ type: Boolean,
+ default: false
+ },
+ fileTypes: {
+ //鎸囧畾涓婁紶鏂囦欢鐨勭被鍨�
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ url: {
+ //涓婁紶鐨剈rl
+ type: String,
+ default: ''
+ },
+ uploadBefore: {
+ //杩斿洖false浼氫腑姝㈡墽琛�
+ //涓婁紶鍓�
+ type: Function,
+ default: (files) => {
+ return true;
+ }
+ },
+ uploadAfter: {
+ //杩斿洖false浼氫腑姝㈡墽琛�
+ //涓婁紶鍚�
+ type: Function,
+ default: (result, files) => {
+ return true;
+ }
+ },
+ onChange: {
+ //閫夋嫨鏂囦欢鏃� //杩斿洖false浼氫腑姝㈡墽琛�
+ type: Function,
+ default: (files) => {
+ return true;
+ }
+ },
+ // clear: {
+ // //涓婁紶瀹屾垚鍚庢槸鍚︽竻绌烘枃浠跺垪琛�
+ // type: Boolean,
+ // default: true
+ // },
+ fileList: {
+ //鏄惁鏄剧ず閫夋嫨鐨勬枃浠跺垪琛�
+ type: Boolean,
+ default: true
+ },
+ fileClick: {
+ //鐐瑰嚮鏂囦欢浜嬩欢
+ type: Function,
+ default: (index, file, files) => {
+ return true;
+ }
+ },
+ removeBefore: {
+ //绉婚櫎鏂囦欢浜嬩欢
+ type: Function,
+ default: (index, file, files) => {
+ return true;
+ }
+ },
+ append: {
+ //姝ゅ睘鎬у凡搴熷純锛屽鏂囦欢涓婁紶锛岄粯璁よ拷鍔犳枃浠�
+ type: Boolean,
+ default: false
+ },
+ compress: {
+ //寮�鍚浘鐗囧帇缂�,鍚庨潰鏍规嵁闇�瑕佸啀瀹屽杽
+ type: Boolean,
+ default: true
+ },
+ compressMinSize: {
+ //鍘嬬缉鐨勬渶灏忔瘮渚�
+ type: Number,
+ default: 0.1
+ }
+ },
+ data() {
+ return {
+ errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"',
+ changed: false, //鎵嬪姩涓婁紶鎴愬姛鍚庣姝㈤噸澶嶄笂浼狅紝蹇呴』閲嶆柊閫夋嫨
+ model: true,
+ files: [],
+ bigImg: '',
+ imgTypes: ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'jfif'],
+ loadingStatus: false,
+ loadText: '涓婁紶鏂囦欢'
+ };
+ },
+ created() {
+ //榛樿鏈夊浘鐗囩殑绂佹涓婁紶鎿嶄綔
+ if (this.fileInfo) {
+ this.changed = true;
+ }
+ this.cloneFile(this.fileInfo);
+ },
+ watch: {
+ fileInfo: {
+ handler(files) {
+ this.cloneFile(files);
+ },
+ deep: true
+ }
+ },
+ methods: {
+ cloneFile(files) {
+ this.files = files.map((x) => {
+ return {
+ name: x.name || this.getFileName(x.path),
+ path: x.path
+ };
+ });
+ },
+ getFileName(path) {
+ if (!path) {
+ return '鏈畾涔夋枃浠跺悕';
+ }
+ let _index = path.lastIndexOf('/');
+ return path.substring(_index + 1);
+ },
+ previewImg(index) {
+ //鏌ョ湅澶у浘棰勮妯″紡寰呭畬
+ this.base.previewImg(this.getImgSrc(this.files[index]));
+ // window.open(this.getImgSrc((this.files.length>0?this.files:this.fileInfo)[index]));
+ },
+ getSelector() {
+ if (this.autoUpload) {
+ return 'auto-selector';
+ }
+ return 'submit-selector';
+ },
+ getImgSrc(file, index) {
+ if (file.hasOwnProperty('path')) {
+ if (this.base.isUrl(file.path)) {
+ return file.path;
+ }
+ //2020.12.27澧炲姞base64鍥剧墖鎿嶄綔
+ if (file.path.indexOf('/9j/') != -1) {
+ return 'data:image/jpeg;base64,' + file.path;
+ }
+ if (file.path.substr(0, 1) == '/') {
+ file.path = file.path.substr(1);
+ }
+ return this.http.ipAddress + file.path;
+ }
+ return window.URL.createObjectURL(file);
+ },
+ fileOnClick(index, file) {
+ if (!this.fileClick(index, file, this.files)) {
+ return;
+ }
+ //鐐瑰嚮涓嶄笅杞�
+ if (!this.downLoad) {
+ return;
+ }
+ if (!file.path) {
+ this.$message.error('璇峰厛涓婁紶鏂囦欢');
+ return;
+ }
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken()
+ },
+ this.http.ipAddress
+ );
+ },
+ getText() {
+ if (this.img) {
+ return '鍙兘涓婁紶鍥剧墖,';
+ } else if (this.excel) {
+ return '鍙兘涓婁紶excel鏂囦欢,';
+ }
+ },
+ handleClick() {
+ this.$refs.input.click();
+ },
+ handleChange(e) {
+ //this.compress寮�鍚浘鐗囧帇缂�,鍚庨潰鏍规嵁闇�瑕佸啀瀹屽杽
+ // this.clearFiles();
+ var result = this.checkFile(e.target.files);
+ if (!result) {
+ return;
+ }
+
+ this.changed = false;
+ //濡傛灉浼犲叆浜咶ileInfo闇�瑕佽嚜琛屽鐞嗙Щ闄ileInfo
+ if (!this.onChange(e.target.files)) {
+ return;
+ }
+ for (let index = 0; index < e.target.files.length; index++) {
+ const element = e.target.files[index];
+ element.input = true;
+ }
+ if (!this.multiple) {
+ this.files.splice(0);
+ }
+ this.files.push(...e.target.files);
+
+ this.$refs.input.value = null;
+ if (this.autoUpload && result) {
+ this.upload(false);
+ }
+ },
+ removeFile(index) {
+ //濡傛灉浼犲叆浜咶ileInfo闇�瑕佽嚜琛屽鐞嗙Щ闄ileInfo
+ //t绉婚櫎鏂囦欢
+ let removeFile = this.files[index];
+ //鍒犻櫎鐨勮繕娌′笂浼犵殑鏂囦欢
+ if (removeFile.input) {
+ this.files.splice(index, 1);
+ } else {
+ this.fileInfo.splice(index, 1);
+ }
+ if (!this.removeBefore(index, removeFile, this.fileInfo)) {
+ return;
+ }
+ },
+ clearFiles() {
+ this.files.splice(0);
+ },
+ getFiles() {
+ return this.files;
+ },
+ convertToFile(dataurl, filename) {
+ let arr = dataurl.split(',');
+ let mime = arr[0].match(/:(.*?);/)[1];
+ let suffix = mime.split('/')[1];
+ let bstr = atob(arr[1]);
+ let n = bstr.length;
+ let u8arr = new Uint8Array(n);
+ while (n--) {
+ u8arr[n] = bstr.charCodeAt(n);
+ }
+ // new File杩斿洖File瀵硅薄 绗竴涓弬鏁版槸 ArraryBuffer 鎴� Bolb 鎴朅rrary 绗簩涓弬鏁版槸鏂囦欢鍚�
+ // 绗笁涓弬鏁版槸 瑕佹斁鍒版枃浠朵腑鐨勫唴瀹圭殑 MIME 绫诲瀷
+ return new File([u8arr], `${filename}.${suffix}`, {
+ type: mime,
+ input: true
+ });
+ },
+ async compressImg(file) {
+ let fileSize = file.size / 1024 / 1024;
+ let read = new FileReader();
+ read.readAsDataURL(file);
+ return new Promise((resolve, reject) => {
+ read.onload = (e) => {
+ let img = new Image();
+ img.src = e.target.result;
+ let _this = this;
+ img.onload = function() {
+ //榛樿鎸夋瘮渚嬪帇缂�
+ let w = this.width;
+ let h = this.height;
+ let canvas = document.createElement('canvas');
+ let ctx = canvas.getContext('2d');
+ canvas.setAttribute('width', w);
+ canvas.setAttribute('height', h);
+ ctx.drawImage(this, 0, 0, w, h);
+ let rate = 0.3;
+ if (fileSize > 2) {
+ rate = 0.1;
+ } else if (fileSize > 1) {
+ rate = 0.1;
+ }
+ if (_this.compressMinSize > rate) {
+ rate = _this.compressMinSize;
+ }
+ // rate=1;
+ let base64 = canvas.toDataURL('image/jpeg', rate);
+ resolve(_this.convertToFile(base64, file.name));
+ };
+ };
+ });
+ },
+ async uploadOSS() {
+ this.http.get('api/alioss/getAccessToken', {}, false).then(async (x) => {
+ if (!x.status) return this.$Message.error(x.message);
+ let client = new OSS({
+ // yourRegion濉啓Bucket鎵�鍦ㄥ湴鍩熴�備互鍗庝笢1锛堟澀宸烇級涓轰緥锛孯egion濉啓涓簅ss-cn-hangzhou銆�
+ region: x.data.region,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勪复鏃惰闂瘑閽ワ紙AccessKey ID鍜孉ccessKey Secret锛夈��
+ accessKeyId: x.data.accessKeyId,
+ accessKeySecret: x.data.accessKeySecret,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勫畨鍏ㄤ护鐗岋紙SecurityToken锛夈��
+ stsToken: x.data.securityToken,
+ // 濉啓Bucket鍚嶇О銆�
+ bucket: x.data.bucket
+ });
+ console.log(this.files);
+ for (let index = 0; index < this.files.length; index++) {
+ const file = this.files[index];
+ if (file.input) {
+ let result = await client.put(
+ x.data.bucketFolder + '/' + x.data.unique + file.name,
+ file
+ );
+ file.path = result.url;
+ file.newName = x.data.unique + file.name;
+ }
+ }
+
+ this.fileInfo.splice(0);
+ // }
+ let _files = this.files.map((file) => {
+ return {
+ name: file.newName || file.name,
+ path: file.path
+ };
+ });
+ this.fileInfo.push(..._files);
+ //2021.09.25淇鏂囦欢涓婁紶鍚庝笉鑳藉悓鏃朵笅杞界殑闂
+ this.files = _files;
+ });
+ return;
+ },
+ async upload(vail) {
+ if (vail && !this.checkFile()) return false;
+ if (!this.url) {
+ return this.$message.error('娌℃湁閰嶇疆濂経rl');
+ }
+ if (!this.files || this.files.length == 0) {
+ return this.$message.error('璇烽�夋嫨鏂囦欢');
+ }
+ //澧炲姞涓婁紶鏃惰嚜瀹氫箟鍙傛暟锛屽悗鍙颁娇鐢ㄨ幏鍙朥tilities.HttpContext.Current.Request.Query["瀛楁"]
+ let params={};
+ if (!this.uploadBefore(this.files,params)) {
+ return;
+ }
+ let paramText="";
+ if (Object.keys(params).length) {
+ paramText="?1=1";
+ for (const key in params) {
+ let value=params[key];
+ if(typeof(value)=='object'){
+ value=JSON.stringify(value)
+ }
+ paramText+=`&${key}=${value}`
+ }
+ }
+
+ this.loadingStatus = true;
+ this.loadText = '涓婁紶涓�..';
+ if (window.oss && window.oss.ali.use) {
+ await this.uploadOSS();
+ this.loadingStatus = false;
+ this.loadText = '涓婁紶鏂囦欢';
+ if (!this.uploadAfter({status:true}, this.files)) {
+ this.changed = false;
+ return;
+ } else {
+ this.changed = true;
+ }
+ this.$message.success('涓婁紶鎴愬姛');
+ return;
+ }
+
+ var forms = new FormData();
+ for (let index = 0; index < this.files.length; index++) {
+ let file = this.files[index];
+ if (file.input) {
+ let name = file.name.split('.');
+ name = name[name.length - 1].toLocaleLowerCase();
+ let isImg = this.imgTypes.indexOf(name) != -1;
+ if (isImg && (name == 'jpg' || name == 'jpeg')) {
+ //>200KB鐨勫紑鍚帇缂�
+ if (isImg && file.size / 1024 / 1024 > 0.2) {
+ console.log('鍘嬬缉鍓�' + file.size);
+ file = await this.compressImg(file);
+ file.compress = true;
+ this.files[index] = file;
+ this.files[index].input = true;
+ console.log('鍘嬬缉鍚�' + file.size);
+ }
+ }
+ forms.append('fileInput', file, file.name);
+ }
+ }
+ // forms.append("fileInput", this.files);
+
+ this.http
+ .post(this.url+paramText, forms, this.autoUpload ? '姝e湪涓婁紶鏂囦欢' : '')
+ .then(
+ (x) => {
+ // this.$refs.uploadFile.clearFiles();
+ this.loadingStatus = false;
+ this.loadText = '涓婁紶鏂囦欢';
+ if (!this.uploadAfter(x, this.files)) {
+ this.changed = false;
+ return;
+ } else {
+ this.changed = true;
+ }
+ this.$message.success(x.message);
+ this.changed = x.status;
+ if (!x.status) {
+ // this.files = null;
+ return;
+ }
+ //鍗曢�夋竻闄や互鍓嶇殑鏁版嵁
+ // if (!this.multiple) {
+ this.fileInfo.splice(0);
+ // }
+ let _files = this.files.map((file) => {
+ return {
+ name: file.name,
+ path: file.path || x.data + file.name
+ };
+ });
+ this.fileInfo.push(..._files);
+ //2021.09.25淇鏂囦欢涓婁紶鍚庝笉鑳藉悓鏃朵笅杞界殑闂
+ this.files = _files;
+ },
+ (error) => {
+ this.loadText = '涓婁紶鏂囦欢';
+ this.loadingStatus = false;
+ }
+ );
+ },
+ format(file, checkFileType) {
+ const format =
+ file.name
+ .split('.')
+ .pop()
+ .toLocaleLowerCase() || '';
+ let fileIcon = 'el-icon-document';
+ if (this.fileTypes.length > 0 && checkFileType != undefined) {
+ if (this.fileTypes.indexOf(format) != -1) {
+ return true;
+ }
+ return false;
+ }
+ if (
+ checkFileType &&
+ !(checkFileType instanceof Array) &&
+ checkFileType != 'img' &&
+ checkFileType != 'excel'
+ ) {
+ if (checkFileType.indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ if (checkFileType == 'img' || this.imgTypes.indexOf(format) > -1) {
+ if (checkFileType == 'img') {
+ if (this.imgTypes.indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ fileIcon = 'el-icon-picture-outline';
+ }
+ if (
+ ['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv'].indexOf(
+ format
+ ) > -1
+ ) {
+ fileIcon = 'el-icon-document';
+ }
+ if (['mp3', 'wav', 'wma', 'ogg', 'aac', 'flac'].indexOf(format) > -1) {
+ fileIcon = 'el-icon-document';
+ }
+ if (['doc', 'txt', 'docx', 'pages', 'epub', 'pdf'].indexOf(format) > -1) {
+ fileIcon = 'el-icon-document';
+ }
+ if (
+ checkFileType == 'excel' ||
+ ['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1
+ ) {
+ if (checkFileType == 'excel') {
+ if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ fileIcon = 'el-icon-document';
+ }
+ return fileIcon;
+ },
+ beforeUpload() {},
+ checkFile(inputFiles) {
+ const files = this.files;
+
+ if (
+ this.multiple &&
+ files.length + (inputFiles || []).length > (this.maxFile || 5)
+ ) {
+ this.$message.error(
+ '鏈�澶氬彧鑳介�夈��' +
+ (this.maxFile || 5) +
+ '銆�' +
+ (this.img ? '寮犲浘鐗�' : '涓枃浠�') +
+ ''
+ );
+ return false;
+ }
+ if (!inputFiles) {
+ inputFiles = this.files.filter((x) => {
+ return x.input;
+ });
+ }
+ let names = [];
+ for (let index = 0; index < inputFiles.length; index++) {
+ const file = inputFiles[index];
+ if (names.indexOf(file.name) != -1) {
+ file.name = '(' + index + ')' + file.name;
+ }
+ names.push(file.name);
+ if (this.img && !this.format(file, 'img')) {
+ this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸鍥剧墖鏍煎紡');
+ return false;
+ }
+ if (this.excel && !this.format(file, 'excel')) {
+ this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸excel鏂囦欢');
+ return false;
+ }
+ if (
+ this.fileTypes &&
+ this.fileTypes.length > 0 &&
+ !this.format(file, this.fileTypes)
+ ) {
+ this.$message.error(
+ '閫夋嫨鐨勬枃浠躲��' +
+ file.name +
+ '銆戝彧鑳芥槸銆�' +
+ this.fileTypes.join(',') +
+ '銆戞牸寮�'
+ );
+ return false;
+ }
+ if (file.size > (this.maxSize || 50) * 1024 * 1024) {
+ this.$message.error(
+ '閫夋嫨鐨勬枃浠躲��' +
+ file.name +
+ '銆戜笉鑳借秴杩�:' +
+ (this.maxSize || 50) +
+ 'M'
+ );
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.upload-list {
+ padding-left: 0;
+ list-style: none;
+ .list-file {
+ line-height: 20px;
+ padding: 4px;
+ color: #515a6e;
+ border-radius: 4px;
+ transition: background-color 0.2s ease-in-out;
+ overflow: hidden;
+ position: relative;
+
+ font-size: 13px;
+ .file-remove {
+ display: none;
+ right: 0;
+ // margin-left: 50px;
+ color: #0e9286;
+ }
+ }
+ .list-file:hover {
+ cursor: pointer;
+ .file-remove {
+ display: initial;
+ }
+ color: #2d8cf0;
+ }
+}
+.upload-container {
+ display: inline-block;
+ width: 100%;
+ // padding: 10px;
+
+ // min-height: 250px;
+ border-radius: 5px;
+ .alert {
+ margin-top: 43px;
+ }
+ .button-group > * {
+ float: left;
+ margin-right: 10px;
+ }
+ .file-info > span {
+ margin-right: 20px;
+ }
+}
+.upload-img {
+ display: inline-block;
+ .img-item:hover .operation {
+ display: block;
+ }
+ .img-item,
+ .img-selector {
+ position: relative;
+ cursor: pointer;
+ margin: 0 10px 10px 0;
+ float: left;
+ width: 65px;
+ height: 65px;
+ border: 1px solid #c7c7c7;
+ overflow: hidden;
+ border-radius: 5px;
+ box-sizing: content-box;
+ img {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+
+ .operation {
+ display: none;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ .action {
+ opacity: 0.6;
+ text-align: center;
+ background: #151515de;
+ font-size: 14px;
+ position: absolute;
+ z-index: 90;
+ width: 100%;
+ bottom: 3px;
+ bottom: 0;
+ color: #ded5d5;
+ padding-right: 7px;
+ padding-bottom: 3px;
+ line-height: 20px;
+ .el-icon-view {
+ margin: 0 10px;
+ }
+ }
+ .mask {
+ opacity: 0.6;
+ background: #9e9e9e;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ }
+ }
+ }
+ .img-selector {
+ font-size: 50px;
+ text-align: center;
+ i {
+ position: relative;
+ font-size: 40px;
+ color: #6f6f6f;
+ }
+ }
+
+ .auto-selector {
+ .selector {
+ line-height: 64px;
+ }
+ }
+ .selector {
+ color: #a0a0a0;
+ }
+ .submit-selector {
+ .s-btn {
+ line-height: 22px;
+ font-size: 12px;
+ top: -6px;
+ // padding: 2px;
+ position: relative;
+ background: #2db7f5;
+ color: white;
+ }
+ .selector {
+ line-height: 50px;
+ }
+ .readonly {
+ background: #8c8c8c;
+ }
+ }
+}
+.big-model {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ .m-img {
+ }
+ .mask {
+ position: absolute;
+ opacity: 0.6;
+ background: #eee;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ }
+}
+
+.auto-upload {
+ z-index: 9999999;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ .j-content {
+ text-align: center;
+ font-size: 17px;
+ top: 40%;
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ right: 0;
+ width: 240px;
+ /* height: 100%; */
+ margin: auto;
+ background: white;
+ /* bottom: 30px; */
+ line-height: 50px;
+ border-radius: 6px;
+ border: 1px solid #d2d2d2;
+ }
+ .mask {
+ cursor: pointer;
+ opacity: 0.6;
+ width: 100%;
+ height: 100%;
+ background: #101010;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/KindEditor.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/KindEditor.vue"
new file mode 100644
index 0000000..8c8e704
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/KindEditor.vue"
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/VolWangEditor.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/VolWangEditor.vue"
new file mode 100644
index 0000000..d3813ae
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/editor/VolWangEditor.vue"
@@ -0,0 +1,154 @@
+<template>
+ <div class="hello" ref="volWangEditor"></div>
+</template>
+
+<script>
+import E from "wangeditor";
+export default {
+ props: {
+ url: {
+ //涓婁紶鍥剧墖鐨剈rl
+ type: String,
+ default: "",
+ },
+ upload: {
+ //涓婁紶鏂规硶
+ type: Function,
+ // (file, insertImgFn) => {}
+ default: null,
+ },
+ uploadCount: {
+ //鏈�澶氬彲浠ヤ笂浼�(鍥剧墖)鐨勬暟閲�
+ type: Number,
+ default: 3,
+ },
+ modelValue: "",
+ width: {
+ type: String,
+ default: "100%",
+ },
+ height: {
+ type: Number,
+ default: 250,
+ },
+ minWidth: {
+ type: Number,
+ default: 650,
+ },
+ minHeight: {
+ type: Number,
+ default: 100,
+ },
+ },
+ name: "wang-editor",
+ data() {
+ return {
+ lastHtml: "",
+ change: false,
+ editor: null,
+ init: false,
+ };
+ },
+ watch: {
+ modelValue(newVal, val) {
+ if (
+ (newVal !== val &&
+ this.lastHtml !== "" &&
+ val === this.lastHtml &&
+ this.editor.txt.html() === this.lastHtml) ||
+ this.editor.txt.html() === ""
+ ) {
+ this.editor.txt.html(newVal);
+ }
+ this.lastHtml = newVal;
+ },
+ },
+ destroyed() {
+ this.editor = null;
+ },
+ mounted() {
+ this.editor = null;
+ let editor = new E(this.$refs.volWangEditor);
+ this.editor = editor;
+ let $this = this;
+ editor.config.zIndex = 500;
+ editor.config.height = this.height;
+ editor.config.onchange = (html) => {
+ if (!this.init && this.lastHtml === "") {
+ this.lastHtml = html;
+ this.init = true;
+ }
+ this.$emit("update:modelValue", html);
+ };
+ // editor.config.uploadFileName = "fileInput";
+ // //璁剧疆header
+ // editor.config.uploadImgHeaders = {
+ // Accept: "application/json",
+ // Authorization: this.$store.getters.getToken(),
+ // };
+ //涓婁紶鍦板潃
+ editor.config.uploadImgServer = this.http.ipAddress + this.url;
+ // console.log(editor.config.uploadImgServer);
+ editor.config.customUploadImg = function (resultFiles, insertImgFn) {
+ // 鑷畾涔変笂浼�
+ if ($this.upload) {
+ console.log("璋冪敤鑷畾涔夌殑涓婁紶鏂规硶");
+ console.log(resultFiles);
+ // resultFiles 鏄� input 涓�変腑鐨勬枃浠跺垪琛�
+ // insertImgFn 鏄幏鍙栧浘鐗� url 鍚庯紝鎻掑叆鍒扮紪杈戝櫒鐨勬柟娉�
+ //鏈夊彲鑳戒細涓婁紶澶氬紶鍥剧墖,涓婁紶澶氬紶鍥剧墖灏遍渶瑕佽繘琛岄亶鍘�
+ resultFiles.map((item) => {
+ // _this.getUploadImg(item, insertImgFn);
+ $this.upload(item, insertImgFn);
+ });
+ } else {
+ let formData = new FormData();
+ let nameArr = [];
+ resultFiles.forEach(function (file) {
+ formData.append("fileInput", file, file.name);
+ nameArr.push(file.name);
+ });
+ if (!$this.url) {
+ $this.$message.error("鏈厤缃畊rl");
+ return;
+ }
+ $this.http.post($this.url, formData, true).then((x) => {
+ if (!x.status) {
+ return $this.$message.error(x.message);
+ }
+ nameArr.forEach(m=>{
+ insertImgFn($this.http.ipAddress + x.data + m);
+ })
+ // let imgs = nameArr
+ // .map((m) => {
+ // return $this.http.ipAddress + x.data + m;
+ // })
+ // .join(",");
+ // insertImgFn(imgs);
+ });
+ }
+ };
+ editor.create();
+ editor.txt.html(this.modelValue);
+ },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+h1,
+h2 {
+ font-weight: normal;
+}
+ul {
+ list-style-type: none;
+ padding: 0;
+}
+li {
+ display: inline-block;
+ margin: 0 10px;
+}
+a {
+ color: #42b983;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/401.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/401.vue"
new file mode 100644
index 0000000..33e44fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/401.vue"
@@ -0,0 +1,19 @@
+<template>
+ <div style="height: 100%">
+ <redirect-error :text="text" message="璇锋眰纭鏄惁閰嶇疆鏉冮檺" :errorNumber="errorNumber"></redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError,
+ },
+ data() {
+ return {
+ errorNumber: "401",
+ text: "鎶辨瓑锛屾偍娌℃湁鏉冮檺杩涜姝ゆ搷浣渵",
+ };
+ },
+};
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/404.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/404.vue"
new file mode 100644
index 0000000..bd6db8f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/404.vue"
@@ -0,0 +1,21 @@
+<template>
+ <div style="height:100%;">
+ <redirect-error :text="text" :errorNumber="errorNumber"></redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError
+ },
+ data() {
+ return {
+ errorNumber:'404',
+ text: "鎶辨瓑锛岄〉闈㈠ソ鍍忓幓鐏槦浜唦"
+ };
+ }
+};
+</script>
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/Message.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/Message.vue"
new file mode 100644
index 0000000..8952162
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/Message.vue"
@@ -0,0 +1,39 @@
+<template>
+ <div class="middle-box">
+ <div class="text-center animated fadeInDown">
+ <i style="font-size: 50px;color: #67c23a;margin-top:40px;" class="el-icon-circle-check"></i>
+ <div style="font-size: 20px;margin-top: 10px;" class="error-desc">{{ text }}</div>
+ </div>
+ </div>
+</template>
+ <script>
+export default {
+ props: {
+ text: {
+ type: String,
+ default: "鎿嶄綔鎴愬姛锛�",
+ },
+ },
+ methods: {
+ },
+};
+</script>
+<style lang="less" scoped>
+body {
+ background-color: #fff;
+}
+.middle-box {
+ text-align: center;
+ padding-top: 80px;
+ height: 100%;
+ // background: #eee;
+ h1 {
+ font-size: 140px;
+ font-weight: 100;
+ }
+ .back {
+ padding: 10px;
+ }
+}
+</style>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/RedirectError.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/RedirectError.vue"
new file mode 100644
index 0000000..5457065
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/RedirectError.vue"
@@ -0,0 +1,59 @@
+<template>
+ <div class="middle-box">
+ <div class="text-center animated fadeInDown">
+ <h1>{{ errorNumber }}</h1>
+ <h3 class="font-bold">{{message}}</h3>
+ <slot></slot>
+ <div class="error-desc">{{ text }}</div>
+ <div class="back">
+ <el-button type="primary" @click="backHome" icon="md-arrow-round-back"
+ >杩斿洖棣栭〉</el-button >
+ </div>
+ </div>
+ </div>
+</template>
+ <script>
+import { Script } from "vm";
+export default {
+ props: {
+ errorNumber: {
+ type: String,
+ default: "500",
+ },
+ message: {
+ type: String,
+ default: "椤甸潰鏈壘鍒帮紒",
+ },
+ text: {
+ type: String,
+ default: "鍞�...濂藉儚鍑轰簡鐐归棶棰榽",
+ },
+ },
+ methods: {
+ backHome: function () {
+ this.$router.push({
+ path: "/home",
+ });
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+body {
+ background-color: #fff;
+}
+.middle-box {
+ text-align: center;
+ padding-top: 80px;
+ height: 100%;
+ // background: #eee;
+ h1 {
+ font-size: 140px;
+ font-weight: 100;
+ }
+ .back {
+ padding: 10px;
+ }
+}
+</style>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/coding.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/coding.vue"
new file mode 100644
index 0000000..5569483
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/redirect/coding.vue"
@@ -0,0 +1,25 @@
+<template>
+ <div style="height:100%;">
+ <redirect-error :text="text" :errorNumber="errorNumber">
+ <div>
+ <router-link to="SellOrder">
+ <Button>鐐瑰嚮鏌ョ湅[娴嬭瘯瀹屾暣绀轰緥]</Button>
+ </router-link>
+ </div>
+ </redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError
+ },
+ data() {
+ return {
+ errorNumber: "鐢ㄤ緥姝e湪鏁寸悊涓�",
+ text: "璇︾粏鐢ㄤ緥鍦ㄦ鍑嗗涓�,鐩墠鍙弬鑰僛娴嬭瘯瀹屾暣绀轰緥]鐨勪娇鐢ㄦ柟娉�"
+ };
+ }
+};
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node.vue"
new file mode 100644
index 0000000..5cd8e3d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node.vue"
@@ -0,0 +1,99 @@
+<template>
+ <div ref="node" class="node-item" :style="nodeContainerStyle" @click="clickNode" @mouseup="changeNodeSite"
+ :class="nodeContainerClass">
+ <!-- 鏈�宸︿晶鐨勯偅鏉$珫绾� -->
+ <div class="ef-node-left"></div>
+ <!-- 鑺傜偣绫诲瀷鐨勫浘鏍� -->
+ <div class="ef-node-left-ico flow-node-drag">
+ <i :class="nodeIcoClass"></i>
+ </div>
+ <!-- 鑺傜偣鍚嶇О -->
+ <div class="ef-node-text" :show-overflow-tooltip="true">
+ {{ node.name }}
+ </div>
+ <i @click.stop="delNode" v-if="node.type == 'node' && !disabled" style="display: none" class="el-icon-delete"></i>
+ <!-- 鑺傜偣鐘舵�佸浘鏍� -->
+ <div class="ef-node-right-ico">
+ <i class="el-icon-circle-check el-node-state-success" v-show="node.state === 'success'"></i>
+ <i class="el-icon-circle-close el-node-state-error" v-show="node.state === 'error'"></i>
+ <i class="el-icon-warning-outline el-node-state-warning" v-show="node.state === 'warning'"></i>
+ <i class="el-icon-loading el-node-state-running" v-show="node.state === 'running'"></i>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ node: Object,
+ activeElement: Object,
+ disabled: {
+ typeof: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {}
+ },
+ computed: {
+ nodeContainerClass() {
+ return {
+ 'ef-node-container': true,
+ 'ef-node-active': this.activeElement.type == 'node' ? this.activeElement.nodeId === this.node.id : false
+ }
+ },
+ // 鑺傜偣瀹瑰櫒鏍峰紡
+ nodeContainerStyle() {
+ return {
+ top: this.node.top,
+ left: this.node.left
+ }
+ },
+ nodeIcoClass() {
+ var nodeIcoClass = {}
+ nodeIcoClass[this.node.ico] = true
+ // 娣诲姞璇lass鍙互鎺ㄦ嫿杩炵嚎鍑烘潵锛寁iewOnly 鍙互鎺у埗鑺傜偣鏄惁杩愯缂栬緫
+ nodeIcoClass['flow-node-drag'] = this.node.viewOnly ? false : true
+ return nodeIcoClass
+ }
+ },
+ methods: {
+ // 鐐瑰嚮鑺傜偣
+ clickNode() {
+ this.$emit('clickNode', this.node.id)
+ },
+ // 榧犳爣绉诲姩鍚庢姮璧�
+ changeNodeSite() {
+ // 閬垮厤鎶栧姩
+ if (this.node.left == this.$refs.node.style.left && this.node.top == this.$refs.node.style.top) {
+ return;
+ }
+ this.$emit('changeNodeSite', {
+ nodeId: this.node.id,
+ left: this.$refs.node.style.left,
+ top: this.$refs.node.style.top,
+ })
+ }, delNode() {
+ this.$emit("delNode");
+ },
+ }
+}
+</script>
+<style scoped>
+/* .node-item{
+ position: relative;
+} */
+.node-item:hover .el-icon-delete {
+ display: inline-block !important;
+}
+
+.el-icon-delete {
+ cursor: pointer;
+ position: relative;
+ top: -18px;
+ padding-left: 5px;
+ right: -16px;
+ color: #f61313;
+ height: 20px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_filter.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_filter.vue"
new file mode 100644
index 0000000..83a80fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_filter.vue"
@@ -0,0 +1,201 @@
+<template>
+ <div class="node-filter-container">
+ <!-- <div class="add-btn">
+ <span class="name">鏉′欢璁剧疆</span> <el-button @click="addItem" link><i>+</i>娣诲姞瀛楁</el-button>
+ </div> -->
+ <!-- {{ $store.getters.data().flowTable.WorkTable }} -->
+ <div class="ef-node-pmenu-item" style="display: flex;">
+ <div style="flex:1;">
+ <span class="name"><i class="el-icon-news"></i>鏉′欢璁剧疆</span>
+ </div>
+ <div><el-button link size="small" @click="addItem" type="primary" v-if="!disabled">
+ + 娣诲姞瀛楁</el-button></div>
+ </div>
+
+ <div>
+ <table>
+ <tr>
+ <td>瀛楁</td>
+ <td style="width:90px">鏉′欢</td>
+ <td class="value">鍊�</td>
+ <td style="width: 40px;" v-if="!disabled">鎿嶄綔</td>
+ </tr>
+ <tr v-for="(item, index) in filters" :key="index">
+
+ <td><el-select @change="(field) => { fieldChange(field, index) }" size="small" v-model="item.field"
+ placeholder="璇烽�夋嫨" :disabled="disabled">
+ <el-option v-for="data in fieldsOptions" :key="data.field" :label="data.name"
+ :value="data.field" />
+ </el-select></td>
+ <td><el-select size="small" v-model="item.filterType" placeholder="璇烽�夋嫨" :disabled="disabled">
+ <el-option v-for="data in filterType" :key="data.value" :label="data.name"
+ :value="data.value" />
+ </el-select></td>
+ <td>
+ <template v-if="item.data">
+ <el-select v-if="item.data.length >= 300" multiple size="small" v-model="item.value"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="data in item.data" :key="data.key" :label="data.value"
+ :value="data.key" :disabled="disabled" />
+ </el-select>
+ <el-select-v2 style="width: 100%;" v-else multiple size="small" :options="item.data"
+ v-model="item.value" placeholder="璇烽�夋嫨" :disabled="disabled">
+ </el-select-v2>
+ </template>
+ <el-input v-else v-model="item.value" size="small" :disabled="disabled"></el-input>
+ </td>
+ <td @click="delItem(index)" class="item-del" v-if="!disabled"><i class="el-icon-delete"></i></td>
+ </tr>
+ </table>
+ </div>
+ <!-- <div>
+ <label>鑷畾涔塻ql</label>
+ <div><el-input type="textarea" v-model="customSql"></el-input></div>
+ </div> -->
+ </div>
+</template>
+
+<script>
+let _this = this;
+export default {
+ props: {
+ tableName: {
+ type: String,
+ default: ""
+ },
+ filters: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ disabled:{
+ typeof:Boolean,
+ default:false
+ }
+ },
+ data() {
+ return {
+ filter: this.$store.getters.data().flowTable,
+ customSql: "",
+ value: "",
+ //{ field: "鍚嶇О", value: "", filterType: "=" },
+ // filters: [],
+ fieldsOptions: [
+
+ ],
+ t: [],
+ filterType: [{ name: "绛変簬(=)", value: "=" },
+ { name: "涓嶇瓑浜�(!=)", value: "!=" },
+ { name: "澶т簬(>)", value: ">" },
+ { name: "澶т簬绛変簬(>=)", value: ">=" },
+ { name: "灏忎簬(<)", value: "<" },
+ { name: "灏忎簬绛変簬(<=)", value: "<=" },
+ { name: "鍖呮嫭(in)", value: "in" },
+ // { name: "涓嶅寘鎷�(not in)", value: "notin" },
+ { name: "妯$硦鍖归厤(like)", value: "like" },
+ { name: "鎴栬��(or)", value: "or" }
+ ]
+ }
+ },
+ methods: {
+ delItem(index) {
+ this.$confirm('纭瑕佸垹闄ゅ瓧閰嶇疆鏉′欢閰嶇疆鍚�?', '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ this.filters.splice(index, 1);
+ });
+ },
+ addItem() {
+ this.filters.push({ field: "", value: "", filterType: "", data: null })
+ },
+ fieldChange(field, index) {
+ let option = this.fieldsOptions.find(x => { return x.field == field });
+ this.filters[index].field = option.field;
+ this.filters[index].value = option.data ? [] : null;
+ this.filters[index].data = option.data;;
+ },
+ convertOptions(result) {
+
+ },
+ getOptions(tableName) {
+ const url = 'api/Sys_WorkFlow/getFields?table=' + tableName;
+ this.http.post(url, {}, false).then(result => {
+ result.forEach(c => {
+ if (c.data && c.data.length < 300) {
+ c.data = c.data.map(x => {
+ return {
+ value: x.key,
+ label: x.value,
+ key: x.key
+ }
+ })
+ }
+ })
+ _this.fieldsOptions = result;
+ })
+ }
+ },
+ watch: {
+ 'filter.WorkTable': {
+ handler(newvalue, oldvalue) {
+ if (newvalue) {
+ this.getOptions(newvalue);
+ } else {
+ // this.fieldsOptions.splice(0)
+ }
+ }
+ }
+ // deep:true,
+ // filter(newVal,oldVal){
+ // alert(1)
+ // }
+ },
+ created() {
+ _this = this;
+ },
+}
+</script>
+
+<style lang="less" scoped>
+.node-filter-container {
+ margin-top: 15px;
+
+ table {
+ width: 100%;
+ padding-left: 6px;
+
+ td {
+ font-size: 13px;
+ padding: 5px;
+
+ }
+
+ tr:first-child {
+ font-size: 12px;
+ font-weight: bolder;
+ }
+
+ .item-del {
+ text-align: center;
+ color: rgb(226, 4, 4);
+ cursor: pointer;
+ }
+
+ .value {
+ width: 150px;
+ }
+ }
+
+ .add-btn {
+ text-align: right;
+ padding-right: 10px;
+ border-bottom: 1px solid #e8e8e8;
+ padding-bottom: 5px;
+ }
+
+ .node-filter-item {}
+}</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_form.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_form.vue"
new file mode 100644
index 0000000..f942239
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_form.vue"
@@ -0,0 +1,350 @@
+<template>
+ <div>
+ <div class="ef-node-form">
+ <div class="ef-node-pmenu-item">
+ <div style="flex:1;">
+ <span class="name"><i class="el-icon-news"></i>鑺傜偣灞炴��</span>
+ <!-- <span @click="nameClick(1)" :class="{ active: index === 1 }" class="name">瀹℃壒鏉′欢</span> -->
+ </div>
+ <!-- <div><el-button link size="small" type="primary" @click="save"><i class="el-icon-check"></i>
+ 淇濆瓨閰嶇疆</el-button></div> -->
+ </div>
+ <div class="ef-node-form-body">
+ <div class="form-info">
+ <VolForm ref="form" style="padding:0 10px;" :label-width="130" :loadKey="false" :formFields="node"
+ :formRules="formRules" :disabled="disabled">
+ </VolForm>
+ </div>
+ <div>
+ <node-filter :filters="node.filters" :disabled="disabled" :tableName="tableName" ref="filter">
+ </node-filter>
+ </div>
+ </div>
+ <!-- <div class="el-node-form-tag"></div>-->
+ </div>
+ </div>
+</template>
+
+<script>
+// import { cloneDeep } from 'lodash'
+import VolForm from '@/components/basic/VolForm.vue';
+import nodeFilter from './node_filter.vue';
+export default {
+ components: {
+ VolForm,
+ 'node-filter': nodeFilter
+ },
+ props: {
+ disabled:{
+ typeof:Boolean,
+ default:false
+ }
+ // node: {
+ // type: Object,
+ // default: () => {
+ // return {
+ // name: '',
+ // auditType: 1,//瀹℃牳绫诲瀷
+ // userId: null,
+ // roleId: null,
+ // deptId: null,
+ // auditRefuse: null,//瀹℃牳鏈�氳繃
+ // auditBack: null, //椹冲洖
+ // auditMethod: 0,//瀹℃壒鏂瑰紡(浼氱)
+ // stepValue: null,
+ // sendMail: 0,
+ // filters: [] //瀛楁杩囨护鏉′欢
+ // }
+ // }
+ // }
+ },
+ created() {
+ this.http.get('api/Sys_WorkFlow/getNodeDic').then((result) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.dataKey && !option.data.length) {
+ option.data = result[option.dataKey] || [];
+ }
+ });
+ });
+ });
+ },
+ data() {
+ return {
+ tableName: "",
+ index: 1,
+ visible: true,
+ // node 鎴� line
+ type: 'node',
+ node: {},
+ line: {},
+ data: {},
+
+ node: {
+ name: '',
+ auditType: 1,//瀹℃牳绫诲瀷
+ userId: null,
+ roleId: null,
+ deptId: null,
+ auditRefuse: null,//瀹℃牳鏈�氳繃
+ auditBack: null, //椹冲洖
+ auditMethod: 0,//瀹℃壒鏂瑰紡(浼氱)
+ // nodeValue: null,
+ sendMail: 0,
+ filters: []
+ },
+ formRules: [
+ [
+ {
+ title: '鑺傜偣鍚嶇О',
+ field: 'name',
+ required: true,
+ colSize: 12
+ }],
+ [
+ {
+ dataKey: '',
+ title: '瀹℃壒绫诲瀷',
+ required: true,
+ hidden: false,
+ field: 'auditType',
+ data: [
+ { key: 1, value: '鎸夌敤鎴峰鎵�' },
+ { key: 2, value: '鎸夎鑹插鎵�' },
+ { key: 3, value: '鎸夐儴闂ㄥ鎵�' }
+ ],
+ type: 'select',
+ onChange: this.nodeTypeChange,
+ colSize: 12
+ }
+ ],
+ [
+ {
+ dataKey: 'users',
+ hidden: false,
+ title: '瀹℃壒鐢ㄦ埛',
+ required: true,
+ field: 'userId',
+ data: [],
+ type: 'selectList',
+ colSize: 12
+ }
+ ,
+ {
+ dataKey: 'roles',
+ hidden: true,
+ title: '瑙掕壊淇℃伅',
+ required: true,
+ field: 'roleId',
+
+ data: [],
+ type: 'select',
+ colSize: 12
+ }
+ ,
+ {
+ dataKey: 'dept',
+ hidden: true,
+ title: '閮ㄩ棬淇℃伅',
+ required: true,
+ field: 'deptId',
+ data: [],
+ type: 'select',
+ colSize: 12
+ }
+ ], [
+ {
+ dataKey: '',
+ title: '瀹℃壒鏈�氳繃',
+ required: false,
+ field: 'auditRefuse',
+ hidden: false,
+ data: [
+ { key: 1, value: '杩斿洖涓婁竴鑺傜偣' },
+ { key: 2, value: '娴佺▼閲嶆柊寮�濮�' },
+ { key: 0, value: '娴佺▼缁撴潫' },
+ ],
+ type: 'select',
+ colSize: 6
+ }
+ ,
+ {
+ dataKey: '',
+ title: '瀹℃壒椹冲洖',
+ required: false,
+ hidden: false,
+ field: 'auditBack',
+ data: [
+ { key: 1, value: '杩斿洖涓婁竴鑺傜偣' },
+ { key: 2, value: '娴佺▼閲嶆柊寮�濮�' },
+ { key: 0, value: '娴佺▼缁撴潫' },
+ ],
+ type: 'select',
+ colSize: 6
+
+ }
+ ],
+ [
+ {
+ dataKey: '',
+ title: '瀹℃牳鍚庡彂閫侀偖浠堕�氱煡',
+ required: false,
+ hidden: false,
+ field: 'sendMail',
+ data: [
+ { key: 1, value: '鏄�' },
+ { key: 0, value: '鍚�' },
+ ],
+ type: 'switch'
+ },
+ {
+ dataKey: '',
+ title: '鍚敤浼氱',
+ required: false,
+ hidden: false,
+ field: 'auditMethod',//瀹℃壒鏂瑰紡
+ data: [
+ { key: 1, value: '鏄�' },
+ { key: 0, value: '鍚�' }
+ ],
+ type: 'switch'
+ }
+ ],
+ ],
+ }
+ },
+ methods: {
+ nameClick(index) {
+ this.index = index;
+ },
+ /**
+ * 琛ㄥ崟淇敼锛岃繖閲屽彲浠ユ牴鎹紶鍏ョ殑ID杩涜涓氬姟淇℃伅鑾峰彇
+ * @param data
+ * @param id
+ */
+ nodeInit(data, id, tableName) {
+ this.tableName = tableName;
+ this.type = 'node'
+ this.data = data;
+ // this.tableName=data.
+ data.nodeList.filter((node) => {
+ if (node.id === id) {
+ this.formRules.forEach(options => {
+ options.forEach(c => {
+ if (c.field != 'name') {
+ c.hidden = node.type == 'start' || node.type == 'end';
+ }
+ })
+ })
+ if (!node.filters) {
+ node.filters = [];
+ }
+ this.node = node;// cloneDeep(node)
+ if (node.type != 'start' && node.type != 'end') {
+ this.nodeTypeChange(node.auditType);
+ }
+ }
+ })
+ // data.nodeList.filter((node) => {
+ // if (node.id === id) {
+ // let _node = cloneDeep(node);
+ // _node.roleId = _node.roleId || null;
+ // _node.userId = _node.userId || null;
+ // _node.nodeType = (_node.nodeType || 1) * 1;
+ // if (!node.filters) {
+ // node.filters = [];
+ // }
+ // _node.filters = node.filters;
+ // this.nodeTypeChange(_node.nodeType);
+ // Object.assign(this.node, _node);
+ // }
+ // });
+ },
+ nodeTypeChange(value) {
+ // { key: 1, value: '鎸夌敤鎴峰鎵�' },
+ // { key: 2, value: '鎸夎鑹插鎵�' },
+ // { key: 3, value: '鎸夐儴闂ㄥ鎵�' }
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'userId') {
+ option.hidden = value != 1;
+ } else if (option.field == 'roleId') {
+ option.hidden = value != 2;
+ } else if (option.field == 'deptId') {
+ option.hidden = value != 3;
+ }
+ });
+ });
+ },
+ lineInit(line) {
+ this.type = 'line'
+ this.line = line
+ },
+ // 淇敼杩炵嚎
+ saveLine() {
+ this.$emit('setLineLabel', this.line.from, this.line.to, this.line.label)
+ },
+ save() {
+ this.data.nodeList.filter((node) => {
+ if (node.id === this.node.id) {
+ node.name = this.node.name;
+ node.left = this.node.left;
+ node.top = this.node.top;
+ node.ico = this.node.ico;
+ node.state = this.node.state;
+ node.stepValue = this.node.stepValue;
+ this.$emit('repaintEverything', this.node);
+ }
+
+ });
+ this.$message.success('淇濆瓨鎴愬姛')
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.el-node-form-tag {
+ position: absolute;
+ top: 50%;
+ margin-left: -15px;
+ height: 40px;
+ width: 15px;
+ background-color: #fbfbfb;
+ border: 1px solid rgb(220, 227, 232);
+ border-right: none;
+ z-index: 0;
+}
+
+.btns {
+ text-align: center;
+ padding: 10px;
+
+ buttton {
+ flex: 1;
+ }
+}
+
+.ef-node-pmenu-item {
+ display: flex;
+
+ .name {
+ cursor: pointer;
+ margin-right: 15px;
+ }
+
+ .active {
+ color: #0659e8;
+ }
+}
+
+.form-info ::v-deep(.vol-form-item) {
+ display: flex;
+
+ .el-form-item:nth-child(2),
+ .el-form-item:nth-child(3),
+ .el-form-item:nth-child(4) {
+ margin-left: 12px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_menu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_menu.vue"
new file mode 100644
index 0000000..b76fa81
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/node_menu.vue"
@@ -0,0 +1,126 @@
+<template>
+ <div class="flow-menu" ref="tool">
+ <div v-for="menu in menuList" :key="menu.id">
+ <div class="ef-node-pmenu-item"><i class="el-icon-notebook-2"></i>鑺傜偣閰嶇疆</div>
+ <ul v-show="menu.open" class="ef-node-menu-ul">
+ <draggable @end="end" @start="move" v-model="menu.children" :options="draggableOptions">
+ <li v-for="subMenu in menu.children" class="ef-node-menu-li" :key="subMenu.id" :type="subMenu.type">
+ <i :class="subMenu.ico"></i> {{ subMenu.name }}
+ </li>
+ </draggable>
+ </ul>
+ </div>
+ </div>
+</template>
+<script>
+import { VueDraggableNext as draggable } from "vue-draggable-next";
+
+var mousePosition = {
+ left: -1,
+ top: -1
+}
+
+export default {
+ data() {
+ return {
+ activeNames: '1',
+ // draggable閰嶇疆鍙傛暟鍙傝�� https://www.cnblogs.com/weixin186/p/10108679.html
+ draggableOptions: {
+ preventOnFilter: false,
+ sort: false,
+ disabled: false,
+ ghostClass: 'tt',
+ // 涓嶄娇鐢℉5鍘熺敓鐨勯厤缃�
+ forceFallback: true,
+ // 鎷栨嫿鐨勬椂鍊欐牱寮�
+ // fallbackClass: 'flow-node-draggable'
+ },
+ // 榛樿鎵撳紑鐨勫乏渚ц彍鍗曠殑id
+ defaultOpeneds: ['1', '2'],
+ menuList: [
+ {
+ id: '1',
+ type: 'group',
+ name: '寮�濮嬭妭鐐�',
+ ico: 'el-icon-video-play',
+ open: true,
+ children: [
+ {
+ id: '0',
+ type: 'start',
+ name: '娴佺▼寮�濮�',
+ ico: 'el-icon-time',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ },
+ {
+ id: '1',
+ type: 'end',
+ name: '娴佺▼缁撴潫',
+ ico: 'el-icon-switch-button',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ }, {
+ id: '2',
+ type: 'node',
+ name: '娴佺▼鑺傜偣',
+ ico: 'el-icon-news',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ }
+ ]
+ }],
+
+ nodeMenu: {}
+ }
+ },
+ components: {
+ draggable
+ },
+ created() {
+ /**
+ * 浠ヤ笅鏄负浜嗚В鍐冲湪鐏嫄娴忚鍣ㄤ笂鎺ㄦ嫿鏃跺脊鍑簍ab椤靛埌鎼滅储闂
+ * @param event
+ */
+ if (this.isFirefox()) {
+ document.body.ondrop = function (event) {
+ // 瑙e喅鐏嫄娴忚鍣ㄦ棤娉曡幏鍙栭紶鏍囨嫋鎷界粨鏉熺殑鍧愭爣闂
+ mousePosition.left = event.layerX
+ mousePosition.top = event.clientY - 50
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ },
+ methods: {
+ // 鏍规嵁绫诲瀷鑾峰彇宸︿晶鑿滃崟瀵硅薄
+ getMenuByType(type) {
+ for (let i = 0; i < this.menuList.length; i++) {
+ let children = this.menuList[i].children;
+ for (let j = 0; j < children.length; j++) {
+ if (children[j].type === type) {
+ return children[j]
+ }
+ }
+ }
+ },
+ // 鎷栨嫿寮�濮嬫椂瑙﹀彂
+ move(evt, a, b, c) {
+ var type = evt.item.attributes.type.nodeValue
+ this.nodeMenu = this.getMenuByType(type)
+ },
+ // 鎷栨嫿缁撴潫鏃惰Е鍙�
+ end(evt, e) {
+ this.$emit('addNode', evt, this.nodeMenu, mousePosition)
+ },
+ // 鏄惁鏄伀鐙愭祻瑙堝櫒
+ isFirefox() {
+ var userAgent = navigator.userAgent
+ if (userAgent.indexOf("Firefox") > -1) {
+ return true
+ }
+ return false
+ }
+ }
+}
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/panel.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/panel.vue"
new file mode 100644
index 0000000..84d29bc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/components/workflow/panel.vue"
@@ -0,0 +1,612 @@
+<!-- 瀹℃牳娴佺▼鎻掍欢鍩轰簬https://gitee.com/xiaoka2017/easy-flow淇敼-->
+<!--鎰熻阿钀岀骇灏忚彍楦� / easy-flow -->
+<template>
+ <div v-if="easyFlowVisible" class="flow-panel">
+
+ <div style="display: flex;height: 100%;position: relative;">
+ <el-scrollbar style="height: 100%;border-right: 1px solid rgb(220, 227, 232);">
+ <div style="width: 220px;">
+ <div class="ef-node-pmenu-item"><i class="el-icon-warning-outline"></i>鍩虹淇℃伅</div>
+ <VolForm ref="form" style="padding: 10px;" :label-width="180" :loadKey="true" :formFields="formFields"
+ :disabled="disabled" :formRules="formRules"></VolForm>
+ <node-menu @addNode="addNode" ref="nodeMenu" v-if="!disabled"></node-menu>
+ </div>
+ </el-scrollbar>
+ <div class="tools">
+ <el-button circle @click="zoomAdd"><i class="el-icon-zoom-in"></i></el-button>
+ <el-button circle @click="zoomSub"><i class="el-icon-zoom-out"></i></el-button>
+ </div>
+ <div style="flex: 1;" id="efContainer" ref="efContainer" class="container efContainer" v-flowDrag>
+ <template :key="node.id" v-for="node in data.nodeList">
+ <flow-node :id="node.id" @delNode="deleteNode(node.id)" :node="node" :activeElement="activeElement"
+ :disabled="disabled" @changeNodeSite="changeNodeSite" @nodeRightMenu="nodeRightMenu"
+ @clickNode="clickNode">
+ </flow-node>
+ </template>
+ <!-- 缁欑敾甯冧竴涓粯璁ょ殑瀹藉害鍜岄珮搴� -->
+ <div style="position:absolute;top: 3000px;left: 4000px;"> </div>
+ </div>
+ <!-- 鍙充晶琛ㄥ崟 -->
+ <div style="width: 400px;border-left: 1px solid #dce3e8;background-color: #FBFBFB">
+ <el-scrollbar style="height: 100%;padding-bottom: 10px;">
+ <flow-node-form @delNode="deleteNode" ref="nodeForm" @setLineLabel="setLineLabel" :disabled="disabled"
+ @repaintEverything="repaintEverything"></flow-node-form>
+ </el-scrollbar>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { VueDraggableNext as draggable } from "vue-draggable-next";
+// import { jsPlumb } from 'jsplumb'
+// 浣跨敤淇敼鍚庣殑jsplumb
+import './jsplumb'
+import { easyFlowMixin } from './mixins'
+import flowNode from './node'
+import nodeMenu from './node_menu'
+import FlowNodeForm from './node_form'
+import lodash from 'lodash'
+// import { getDataA } from './data_A'
+import VolForm from '@/components/basic/VolForm.vue';
+export default {
+ props: {
+ disabled: {
+ typeof: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ formFields: {
+ WorkName: '',
+ WorkTable: '',
+ WorkTableName: '',
+ Weight: 1,
+ AuditingEdit: 0,
+ Remark: ''
+ },
+ formRules: [
+ [
+ {
+ dataKey: '娴佺▼鍚嶇О',
+ title: '娴佺▼鍚嶇О',
+ field: 'WorkName',
+ required: true
+ }],
+ [{
+ dataKey: '',
+ title: '娴佺▼瀹炰緥',
+ required: true,
+ field: 'WorkTable',
+ data: [],
+ readonly: false,
+ type: 'select',
+ onChange: (value, item) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'WorkTable') {
+ this.formFields.WorkTableName = option.data.find((x) => {
+ return x.key == value;
+ }).value;
+ }
+ });
+ });
+ }
+ }],
+ [{
+ title: '鏉冮噸(鐩稿悓鏉′欢鏉冮噸澶т紭鍏�)',
+ field: 'Weight',
+ type: "number",
+ }
+ ],
+
+ [{
+ title: '瀹℃牳涓暟鎹槸鍚﹀彲浠ョ紪杈�',
+ field: 'AuditingEdit',
+ type: "switch",
+ data: [{ key: 0, value: "鍚�" }, { key: 1, value: "鏄�" }]
+ }
+ ],
+ [{
+ title: '澶囨敞',
+ field: 'Remark'
+ }
+ ]
+ ],
+ // jsPlumb 瀹炰緥
+ jsPlumb: null,
+ // 鎺у埗鐢诲竷閿�姣�
+ easyFlowVisible: true,
+ // 鏄惁鍔犺浇瀹屾瘯鏍囧織浣�
+ loadEasyFlowFinish: false,
+ // 鏁版嵁
+ data: {},
+ // 婵�娲荤殑鍏冪礌銆佸彲鑳芥槸鑺傜偣銆佸彲鑳芥槸杩炵嚎
+ activeElement: {
+ // 鍙�夊�� node 銆乴ine
+ type: undefined,
+ // 鑺傜偣ID
+ nodeId: undefined,
+ // 杩炵嚎ID
+ sourceId: undefined,
+ targetId: undefined
+ },
+ zoom: 1
+ }
+ },
+ // 涓�浜涘熀纭�閰嶇疆绉诲姩璇ユ枃浠朵腑
+ mixins: [easyFlowMixin],
+ components: {
+ draggable, flowNode, nodeMenu, FlowNodeForm, VolForm
+ },
+ directives: {
+ 'flowDrag': {
+ mounted(el, binding, vnode, oldNode) {
+ if (!binding) {
+ return
+ }
+ el.onmousedown = (e) => {
+ if (e.button == 2) {
+ // 鍙抽敭涓嶇
+ return
+ }
+ // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅師濮嬭窛绂诲彲瑙嗗尯鐨勯珮搴�
+ let disX = e.clientX
+ let disY = e.clientY
+ el.style.cursor = 'move'
+
+ document.onmousemove = function (e) {
+ // 绉诲姩鏃剁姝㈤粯璁や簨浠�
+ e.preventDefault()
+ const left = e.clientX - disX
+ disX = e.clientX
+ el.scrollLeft += -left
+
+ const top = e.clientY - disY
+ disY = e.clientY
+ el.scrollTop += -top
+ }
+
+ document.onmouseup = function (e) {
+ el.style.cursor = 'auto'
+ document.onmousemove = null
+ document.onmouseup = null
+ }
+ }
+ }
+ }
+ },
+ mounted() {
+ this.jsPlumb = jsPlumb.getInstance()
+ // this.$nextTick(() => {
+ // // 榛樿鍔犺浇娴佺▼A鐨勬暟鎹�佸湪杩欓噷鍙互鏍规嵁鍏蜂綋鐨勪笟鍔¤繑鍥炵鍚堟祦绋嬫暟鎹牸寮忕殑鏁版嵁鍗冲彲
+ // this.dataReload(getDataA())
+ // })
+ },
+ created() {
+ this.http.get('api/Sys_WorkFlow/getTableInfo').then((result) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'WorkTable') {
+ option.data = result;
+ }
+ });
+ });
+ });
+ this.$store.getters.data().flowTable = this.formFields;
+ },
+ methods: {
+ // 杩斿洖鍞竴鏍囪瘑
+ getUUID() {
+ return Math.random().toString(36).substr(3, 10)
+ },
+ jsPlumbInit() {
+ this.jsPlumb.ready(() => {
+ // 瀵煎叆榛樿閰嶇疆
+ this.jsPlumb.importDefaults(this.jsplumbSetting)
+ // 浼氫娇鏁翠釜jsPlumb绔嬪嵆閲嶇粯銆�
+ this.jsPlumb.setSuspendDrawing(false, true);
+ // 鍒濆鍖栬妭鐐�
+ this.loadEasyFlow()
+ // 鍗曠偣鍑讳簡杩炴帴绾�, https://www.cnblogs.com/ysx215/p/7615677.html
+ this.jsPlumb.bind('click', (conn, originalEvent) => {
+ this.activeElement.type = 'line'
+ this.activeElement.sourceId = conn.sourceId
+ this.activeElement.targetId = conn.targetId
+ this.$refs.nodeForm.lineInit({
+ from: conn.sourceId,
+ to: conn.targetId,
+ label: conn.getLabel()
+ })
+ this.deleteElement();
+ })
+ // 杩炵嚎
+ this.jsPlumb.bind("connection", (evt) => {
+ let from = evt.source.id
+ let to = evt.target.id
+ if (this.loadEasyFlowFinish) {
+ this.data.lineList.push({ from: from, to: to })
+ }
+ })
+
+ // 鍒犻櫎杩炵嚎鍥炶皟
+ this.jsPlumb.bind("connectionDetached", (evt) => {
+ this.deleteLine(evt.sourceId, evt.targetId)
+ })
+
+ // 鏀瑰彉绾跨殑杩炴帴鑺傜偣
+ this.jsPlumb.bind("connectionMoved", (evt) => {
+ this.changeLine(evt.originalSourceId, evt.originalTargetId)
+ })
+
+ // 杩炵嚎鍙冲嚮
+ this.jsPlumb.bind("contextmenu", (evt) => {
+ console.log('contextmenu', evt)
+ })
+
+ // 杩炵嚎
+ this.jsPlumb.bind("beforeDrop", (evt) => {
+ let from = evt.sourceId
+ let to = evt.targetId
+ if (from === to) {
+ this.$message.error('鑺傜偣涓嶆敮鎸佽繛鎺ヨ嚜宸�')
+ return false
+ }
+ if (this.hasLine(from, to)) {
+ this.$message.error('璇ュ叧绯诲凡瀛樺湪,涓嶅厑璁搁噸澶嶅垱寤�')
+ return false
+ }
+ if (this.hashOppositeLine(from, to)) {
+ this.$message.error('涓嶆敮鎸佷袱涓妭鐐逛箣闂磋繛绾垮洖鐜�');
+ return false
+ }
+ this.$message.success('杩炴帴鎴愬姛')
+ setTimeout(() => { this.setLineLabel(from, to, 'x') }, 50)
+ return true
+ })
+
+ // beforeDetach
+ this.jsPlumb.bind("beforeDetach", (evt) => {
+ console.log('beforeDetach', evt)
+ })
+ this.jsPlumb.setContainer(this.$refs.efContainer)
+ })
+ },
+ // 鍔犺浇娴佺▼鍥�
+ loadEasyFlow() {
+ // 鍒濆鍖栬妭鐐�
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.userId && node.userId != '') {
+ // userId涓烘暟鍊肩被鍨�
+ if (typeof node.userId == 'number'){
+ node.userId = [node.userId]
+ } else {
+ node.userId = node.userId.split(',').map(Number);
+ }
+ } else {
+ node.userId = []
+ }
+ // 璁剧疆婧愮偣锛屽彲浠ユ嫋鍑虹嚎杩炴帴鍏朵粬鑺傜偣
+ this.jsPlumb.makeSource(node.id, lodash.merge(this.jsplumbSourceOptions, {}))
+ // // 璁剧疆鐩爣鐐癸紝鍏朵粬婧愮偣鎷栧嚭鐨勭嚎鍙互杩炴帴璇ヨ妭鐐�
+ this.jsPlumb.makeTarget(node.id, this.jsplumbTargetOptions)
+ if (!node.viewOnly && !this.disabled) {
+ this.jsPlumb.draggable(node.id, {
+ containment: 'parent',
+ stop: function (el) {
+ // 鎷栨嫿鑺傜偣缁撴潫鍚庣殑瀵硅皟
+ console.log('鎷栨嫿缁撴潫: ', el)
+ }
+ })
+ }
+ }
+ // 鍒濆鍖栬繛绾�
+ for (var i = 0; i < this.data.lineList.length; i++) {
+ let line = this.data.lineList[i]
+ var connParam = {
+ source: line.from,
+ target: line.to,
+ label: this.disabled ? null : (line.label ? line.label : 'x'),
+ connector: line.connector ? line.connector : '',
+ anchors: line.anchors ? line.anchors : undefined,
+
+ paintStyle: line.paintStyle ? line.paintStyle : undefined,
+ }
+ this.jsPlumb.connect(connParam, this.jsplumbConnectOptions)
+ }
+ this.$nextTick(function () {
+ this.loadEasyFlowFinish = true
+ })
+ },
+ // 璁剧疆杩炵嚎鏉′欢
+ setLineLabel(from, to, label) {
+ var conn = this.jsPlumb.getConnections({
+ source: from,
+ target: to
+ })[0]
+ if (!label || label === '') {
+ conn.removeClass('flowLabel ')
+ conn.addClass('emptyFlowLabel')
+ } else {
+ conn.addClass('flowLabel')
+ }
+ conn.setLabel({
+ label: 'x' //label,
+ })
+ this.data.lineList.forEach(function (line) {
+ if (line.from == from && line.to == to) {
+ line.label = 'x'// label
+ }
+ })
+
+ },
+ // 鍒犻櫎婵�娲荤殑鍏冪礌
+ deleteElement() {
+ if (this.disabled)
+ return
+ if (this.activeElement.type === 'node') {
+ this.deleteNode(this.activeElement.nodeId)
+ } else if (this.activeElement.type === 'line') {
+ this.$confirm('纭畾鍒犻櫎鎵�鐐瑰嚮鐨勭嚎鍚�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ var conn = this.jsPlumb.getConnections({
+ source: this.activeElement.sourceId,
+ target: this.activeElement.targetId
+ })[0]
+ this.jsPlumb.deleteConnection(conn)
+ }).catch(() => {
+ })
+ }
+ },
+ // 鍒犻櫎绾�
+ deleteLine(from, to) {
+ this.data.lineList = this.data.lineList.filter(function (line) {
+ if (line.from == from && line.to == to) {
+ return false
+ }
+ return true
+ })
+ },
+ // 鏀瑰彉杩炵嚎
+ changeLine(oldFrom, oldTo) {
+ this.deleteLine(oldFrom, oldTo)
+ },
+ // 鏀瑰彉鑺傜偣鐨勪綅缃�
+ changeNodeSite(data) {
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.id === data.nodeId) {
+ node.left = data.left
+ node.top = data.top
+ }
+ }
+ },
+ /**
+ * 鎷栨嫿缁撴潫鍚庢坊鍔犳柊鐨勮妭鐐�
+ * @param evt
+ * @param nodeMenu 琚坊鍔犵殑鑺傜偣瀵硅薄
+ * @param mousePosition 榧犳爣鎷栨嫿缁撴潫鐨勫潗鏍�
+ */
+ addNode(evt, nodeMenu, mousePosition) {
+ if (nodeMenu.type == 'start' && this.data.nodeList.some(x => { return x.type == 'start' })) {
+ this.$message.error('銆愭祦绋嬬粨鏉熴�戣妭鐐瑰凡瀛樺湪,鍙湁閫夋嫨涓�涓祦绋嬪紑濮嬭妭鐐�');
+ return
+ }
+ if (nodeMenu.type == 'end' && this.data.nodeList.some(x => { return x.type == 'end' })) {
+ this.$message.error('銆愭祦绋嬬粨鏉熴�戣妭鐐瑰凡瀛樺湪,鍙湁閫夋嫨涓�涓祦绋嬪紑濮嬭妭鐐�');
+ return
+ }
+ var screenX = evt.originalEvent.clientX, screenY = evt.originalEvent.clientY
+ let efContainer = this.$refs.efContainer
+ var containerRect = efContainer.getBoundingClientRect()
+ var left = screenX, top = screenY
+ // 璁$畻鏄惁鎷栧叆鍒板鍣ㄤ腑
+ if (left < containerRect.x || left > containerRect.width + containerRect.x || top < containerRect.y || containerRect.y > containerRect.y + containerRect.height) {
+ this.$message.error("璇锋妸鑺傜偣鎷栧叆鍒扮敾甯冧腑")
+ return
+ }
+ left = left - containerRect.x + efContainer.scrollLeft
+ top = top - containerRect.y + efContainer.scrollTop
+ // 灞呬腑
+ left -= 85
+ top -= 16
+ var nodeId = this.getUUID()
+ // 鍔ㄦ�佺敓鎴愬悕瀛�
+ var origName = nodeMenu.name
+ var nodeName = origName
+ var index = 1
+ while (index < 10000) {
+ var repeat = false
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.name === nodeName) {
+ nodeName = origName + index
+ repeat = true
+ }
+ }
+ if (repeat) {
+ index++
+ continue
+ }
+ break
+ }
+ var node = {
+ id: nodeId,
+ name: nodeName,
+ type: nodeMenu.type,
+ left: left + 'px',
+ top: top + 'px',
+ ico: nodeMenu.ico,
+ state: 'success'
+ }
+ /**
+ * 杩欓噷鍙互杩涜涓氬姟鍒ゆ柇銆佹槸鍚﹁兘澶熸坊鍔犺鑺傜偣
+ */
+ this.data.nodeList.push(node)
+ this.$nextTick(function () {
+ this.jsPlumb.makeSource(nodeId, this.jsplumbSourceOptions)
+ this.jsPlumb.makeTarget(nodeId, this.jsplumbTargetOptions)
+ this.jsPlumb.draggable(nodeId, {
+ containment: 'parent',
+ stop: function (el) {
+ // 鎷栨嫿鑺傜偣缁撴潫鍚庣殑瀵硅皟
+ console.log('鎷栨嫿缁撴潫: ', el)
+ }
+ })
+ })
+ },
+ /**
+ * 鍒犻櫎鑺傜偣
+ * @param nodeId 琚垹闄よ妭鐐圭殑ID
+ */
+ deleteNode(nodeId) {
+ this.$confirm('纭畾瑕佸垹闄よ妭鐐�' + nodeId + '?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ closeOnClickModal: false
+ }).then(() => {
+ /**
+ * 杩欓噷闇�瑕佽繘琛屼笟鍔″垽鏂紝鏄惁鍙互鍒犻櫎
+ */
+ this.data.nodeList = this.data.nodeList.filter(function (node) {
+ if (node.id === nodeId) {
+ // 浼垹闄わ紝灏嗚妭鐐归殣钘忥紝鍚﹀垯浼氬鑷翠綅缃敊浣�
+ // node.show = false
+ return false
+ }
+ return true
+ })
+ this.$nextTick(function () {
+ this.jsPlumb.removeAllEndpoints(nodeId);
+ })
+ }).catch(() => {
+ })
+ return true
+ },
+ clickNode(nodeId) {
+ this.activeElement.type = 'node'
+ this.activeElement.nodeId = nodeId
+ this.$refs.nodeForm.nodeInit(this.data, nodeId, this.formFields.WorkTable)
+ },
+ // 鏄惁鍏锋湁璇ョ嚎
+ hasLine(from, to) {
+ for (var i = 0; i < this.data.lineList.length; i++) {
+ var line = this.data.lineList[i]
+ if (line.from === from && line.to === to) {
+ return true
+ }
+ }
+ return false
+ },
+ // 鏄惁鍚湁鐩稿弽鐨勭嚎
+ hashOppositeLine(from, to) {
+ return this.hasLine(to, from)
+ },
+ nodeRightMenu(nodeId, evt) {
+ this.menu.show = true
+ this.menu.curNodeId = nodeId
+ this.menu.left = evt.x + 'px'
+ this.menu.top = evt.y + 'px'
+ },
+ repaintEverything(node) {
+ let _node = this.data.nodeList.find((x) => {
+ return x.id == node.id;
+ });
+ Object.assign(_node, node);
+ console.log(_node);
+ this.jsPlumb.repaint();
+ },
+ // 鍔犺浇娴佺▼鍥�
+ dataReload(data, isAdd) {
+ this.easyFlowVisible = false
+ this.data.nodeList = []
+ this.data.lineList = []
+ this.$nextTick(() => {
+ data = lodash.cloneDeep(data)
+ this.easyFlowVisible = true
+ this.data = data
+ this.$nextTick(() => {
+ this.jsPlumb = jsPlumb.getInstance()
+ this.$nextTick(() => {
+ this.jsPlumbInit()
+ })
+ })
+ })
+ this.formRules.forEach(options => {
+ options.forEach(option => {
+ if (option.field == "WorkTable") {
+ option.readonly = !isAdd;
+ }
+ })
+ })
+ },
+ zoomAdd() {
+ if (this.zoom >= 1) {
+ return
+ }
+ this.zoom = this.zoom + 0.1
+ this.$refs.efContainer.style.zoom = this.zoom;
+ // this.jsPlumb.setZoom(this.zoom)
+ },
+ zoomSub() {
+ if (this.zoom <= 0) {
+ return
+ }
+ this.zoom = this.zoom - 0.1;
+ if (this.zoom < 0.3) {
+ this.zoom = 0.3;
+ }
+ this.$refs.efContainer.style.zoom = this.zoom;
+ // this.jsPlumb.setZoom(this.zoom)
+ }
+ }
+}
+</script>
+<style scoped lang="less">
+@import './index.css';
+
+.flow-panel {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+}
+
+.flow-panel ::v-deep(.el-form-item__label) {
+ margin-bottom: -2px !important;
+ text-align: left;
+ padding: 0 !important;
+ justify-content: flex-start;
+}
+
+.flow-panel ::v-deep(.el-form-item) {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 7px !important;
+
+}
+
+.ef-node-menu-form {
+ padding: 0px;
+}
+
+::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 0px;
+ background: #e0e3e7;
+ height: 20px;
+}
+
+::-webkit-scrollbar-track {
+ background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/addrouters.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/addrouters.vue"
new file mode 100644
index 0000000..28ed38f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/addrouters.vue"
@@ -0,0 +1,351 @@
+<template>
+ <div>
+ <vol-box
+ v-model="showDetialBox"
+ :lazy="true"
+ :width="width"
+ :padding="15"
+ title="璺敱閰嶇疆"
+ :footer="true"
+ >
+ <el-row height="50">
+ <el-col :span="24">
+ <div class="grid-content right-text">
+ <!-- <el-link type="primary" @click="deleteNode">绉婚櫎鑺傜偣</el-link> -->
+ <el-link type="primary" @click="addNode">娣诲姞鑺傜偣</el-link>
+ </div>
+ <div class="grid-content right-text"></div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="6">
+ <div
+ class="grid-content"
+ style="font-weight: bold; font-size: 18px; margin-left: 5%"
+ >
+ <el-form :rules="routeTypeRules" :model="routerType">
+ <el-form-item label="璺敱绫诲瀷" label-width="120" prop="type">
+ <el-select
+ v-model="routerType.type"
+ filterable
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in routerTypes"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ <span style="float: left">{{ item.value }}</span>
+ <span
+ style="float: right; color: #8492a6; font-size: 13px"
+ >{{ item.key }}</span
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ </div>
+ </el-col>
+ </el-row>
+ <div style="overflow-x: auto">
+ <el-row style="margin-top: 3%">
+ <el-col :span="24">
+ <el-steps align-center :active="routers.length">
+ <el-step
+ v-for="(router, index) in routers"
+ :title="getTitle(index)"
+ :key="index"
+ icon=""
+ description="111"
+ style="min-width: 280px"
+ >
+ <template v-slot:description="{}">
+ <div>
+ <el-form
+ :rules="rules"
+ class="demo-ruleForm"
+ :model="router"
+ label-width="110px"
+ style="margin-top: 1%"
+ ref="router"
+ >
+ <el-form-item
+ label="浣嶇疆缂栧彿"
+ placeholder="璇烽�夋嫨浣嶇疆缂栧彿"
+ prop="positionCode"
+ >
+ <el-select
+ filterable
+ v-model="router.positionCode"
+ @change="deviceCodeChange"
+ >
+ <el-option
+ v-for="deviceCode in filterDeviceCodes"
+ :key="deviceCode.key"
+ :label="deviceCode.key"
+ :value="deviceCode.key"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item
+ v-show="
+ index == routers.length - 1 &&
+ !router.positionCode.includes('SC')
+ "
+ label="瀛愪綅缃紪鍙�"
+ prop="childPositionCode"
+ >
+ <el-select
+ filterable
+ v-model="router.childPositionCode"
+ @change="childDeviceCodeChange"
+ >
+ <el-option
+ v-for="childDeviceCode in filterChildDeviceCodes"
+ :key="childDeviceCode.key"
+ :label="childDeviceCode.key"
+ :value="childDeviceCode.key"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item
+ v-show="
+ router.positionCode.includes('SC') ||
+ router.childPositionCode.includes('SC')
+ "
+ label="鍫嗗灈鏈鸿"
+ prop="sCRow"
+ >
+ <el-input v-model="router.sCRow"></el-input>
+ </el-form-item>
+ <el-form-item
+ v-show="
+ router.positionCode.includes('SC') ||
+ router.childPositionCode.includes('SC')
+ "
+ label="鍫嗗灈鏈哄垪"
+ prop="sCColumn"
+ >
+ <el-input v-model="router.sCColumn"></el-input>
+ </el-form-item>
+ <el-form-item
+ v-show="
+ router.positionCode.includes('SC') ||
+ router.childPositionCode.includes('SC')
+ "
+ label="鍫嗗灈鏈哄眰"
+ prop="sCLayer"
+ >
+ <el-input v-model="router.sCLayer"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ </template>
+ </el-step>
+ </el-steps>
+ </el-col>
+ </el-row>
+ </div>
+ <template #footer>
+ <div>
+ <el-button plain type="danger" @click="save"
+ ><i class="el-icon-check"></i>淇� 瀛�</el-button
+ >
+ <el-button type="primary" size="mini" @click="showDetialBox = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+ </div>
+</template>
+
+ <script>
+import VolBox from "@/components/basic/VolBox.vue";
+import { el } from "element-plus/es/locale";
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ width: 1200,
+ active: 0,
+ showDetialBox: false,
+ routerTypes: [],
+ routerType: { type: "" },
+ deviceCodes: [],
+ filterDeviceCodes: [],
+ childDeviceCodes: [],
+ filterChildDeviceCodes: [],
+ routers: [
+ {
+ positionCode: "",
+ childPositionCode: "",
+ sCRow: "",
+ sCColumn: "",
+ sCLayer: "",
+ },
+ {
+ positionCode: "",
+ childPositionCode: "",
+ sCRow: "",
+ sCColumn: "",
+ sCLayer: "",
+ },
+ ],
+ rules: {
+ positionCode: [
+ { required: true, message: "璇烽�夋嫨浣嶇疆缂栧彿", trigger: "change" },
+ ],
+ },
+ routeTypeRules: {
+ type: [
+ { required: true, message: "璇烽�夋嫨璺敱绫诲瀷", trigger: "change" },
+ ],
+ },
+ };
+ },
+ methods: {
+ open() {
+ this.routerTypes = [];
+ this.routerType = { type: "" };
+ this.deviceCode = "";
+ this.deviceCodes = [];
+ this.filterDeviceCodes = [];
+ this.childDeviceCodes = [];
+ this.filterChildDeviceCodes = [];
+ this.routers = [
+ {
+ positionCode: "",
+ childPositionCode: "",
+ sCRow: "",
+ sCColumn: "",
+ sCLayer: "",
+ },
+ {
+ positionCode: "",
+ childPositionCode: "",
+ sCRow: "",
+ sCColumn: "",
+ sCLayer: "",
+ },
+ ];
+ this.showDetialBox = true;
+ this.getData();
+ },
+ getData() {
+ this.http.post("/api/Router/GetBaseRouterInfo", {}, true).then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.routerTypes = x.data.routerTypes;
+ this.deviceCodes = x.data.deviceCodes;
+ x.data.areaInfos.forEach((v) => {
+ this.deviceCodes.push(v);
+ });
+ this.filterDeviceCodes = this.deviceCodes;
+ this.childDeviceCodes = this.deviceCodes;
+ this.filterChildDeviceCodes = this.deviceCodes;
+ });
+ },
+ addNode() {
+ this.routers.push({
+ positionCode: "",
+ childPositionCode: "",
+ childPosiDeviceCode: "",
+ sCRow: "",
+ sCColumn: "",
+ sCLayer: "",
+ });
+ },
+ deleteNode() {
+ this.routers.splice(this.routers.length - 1, 1);
+ },
+ getTitle(index) {
+ if (index === 0) {
+ return "璧风偣";
+ } else if (index === this.routers.length - 1) {
+ return "缁堢偣";
+ } else {
+ return "瀛愯妭鐐�" + index;
+ }
+ },
+ save() {
+ this.$refs.router.forEach((x) => {
+ console.log(x);
+ x.validate((valid) => {
+ if (!valid) {
+ return false;
+ }
+ });
+ });
+ this.http
+ .post(
+ "/api/Router/AddRouters?routerType=" + this.routerType.type,
+ this.routers,
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.$emit("parentCall", ($vue) => {
+ $vue.refresh();
+ });
+ this.showDetialBox = false;
+ });
+ },
+ deviceCodeChange(value) {
+ var positionCodes = [];
+ this.routers.forEach((x) => {
+ if (x.positionCode && x.positionCode != "") {
+ positionCodes.push(x.positionCode);
+ }
+ });
+ this.filterDeviceCodes = this.deviceCodes.filter(
+ (x) => !positionCodes.includes(x.key)
+ );
+ },
+ childDeviceCodeChange(value) {
+ var positionCodes = [];
+ this.routers.forEach((x) => {
+ if (x.childPositionCode && x.childPositionCode != "") {
+ positionCodes.push(x.childPositionCode);
+ }
+ });
+ this.filterChildDeviceCodes = this.childDeviceCodes.filter(
+ (x) => !positionCodes.includes(x.key)
+ );
+ },
+ },
+ created() {},
+};
+</script>
+
+ <style scoped>
+.el-col {
+ border-radius: 4px;
+}
+.grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+}
+.content-text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.left-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+}
+.right-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+</style>
+ <style>
+.el-step.is-center .el-step__description {
+ padding-left: 5%;
+ padding-right: 5%;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/routerview.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/routerview.vue"
new file mode 100644
index 0000000..7ad2ff8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/extend/routerview.vue"
@@ -0,0 +1,96 @@
+<template>
+ <div>
+ <vol-box
+ v-model="showDetialBox"
+ :lazy="true"
+ width="1200px"
+ :padding="15"
+ title="瀹屾暣璺敱鏌ョ湅"
+ >
+ <div
+ style="margin-bottom: 1%"
+ v-for="(item, index) in routerDatas"
+ :key="index"
+ >
+ <el-row>
+ <el-col>
+ <div
+ class="grid-content right-text"
+ style="font-weight: bold; font-size: 18px"
+ >
+ <span>{{ item.type == "Out" ? "鍑哄簱璺敱" : "鍏ュ簱璺敱" }}</span>
+ </div>
+ </el-col>
+ </el-row>
+ <el-steps :active="item.routes.length" align-center simple>
+ <el-step
+ v-for="itemRouter in item.routes"
+ :key="itemRouter"
+ :title="itemRouter"
+ icon=""
+ ></el-step>
+ </el-steps>
+ </div>
+ </vol-box>
+ </div>
+</template>
+
+ <script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ active: 0,
+ showDetialBox: false,
+ routerDatas: [],
+ };
+ },
+ methods: {
+ open() {
+ this.showDetialBox = true;
+ this.getData();
+ },
+ getData() {
+ this.http.post("/api/Router/GetAllWholeRouters", {}, true).then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.routerDatas = x.data;
+ });
+ },
+ },
+ created() {},
+};
+</script>
+
+ <style scoped>
+.el-col {
+ border-radius: 4px;
+}
+.grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+}
+.content-text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.left-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+}
+</style>
+ <style>
+.el-table .warning-row {
+ background: #fcf1e2;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.el-table .error-row {
+ background: #fde2e2;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/quartzJob/extend/importDevicePro.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/quartzJob/extend/importDevicePro.vue"
new file mode 100644
index 0000000..66b521c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/quartzJob/extend/importDevicePro.vue"
@@ -0,0 +1,116 @@
+<template>
+ <div>
+ <vol-box
+ v-model="showDetialBox"
+ :lazy="true"
+ :height="350"
+ :width="600"
+ :padding="15"
+ title="璁惧鍗忚淇℃伅-瀵煎叆"
+ >
+ <upload-excel
+ ref="upload_excel"
+ :url="url"
+ :template="template"
+ ></upload-excel>
+ </vol-box>
+ </div>
+</template>
+
+ <script>
+import VolBox from "@/components/basic/VolBox.vue";
+import UploadExcel from "@/components/basic/UploadExcel.vue";
+export default {
+ components: { VolBox, UploadExcel },
+ data() {
+ return {
+ showDetialBox: false,
+ url: "",
+ template: {
+ url: "", //妯℃澘涓嬭浇璺緞锛屽鏋滄病鏈夋ā鏉胯矾寰勶紝鍒欎笉鏄剧ず涓嬭浇妯℃澘鍔熻兘
+ fileName: "璁惧鍗忚淇℃伅瀵煎叆妯℃澘", //涓嬭浇妯℃澘鐨勬枃浠跺悕
+ },
+ };
+ },
+ methods: {
+ open() {
+ this.template.url = `${this.http.ipAddress}api/DeviceProtocol/DownLoadTemplate`;
+ this.url = `${this.http.ipAddress}api/DeviceProtocol/GetImportData`;
+ this.showDetialBox = true;
+ this.$nextTick(() => {
+ this.$refs.upload_excel.upload = this.upload;
+ console.log(this.$refs.upload_excel);
+ });
+ },
+ upload() {
+ console.log("upload");
+ let _url = this.url;
+ if (!_url) {
+ return this.$Message.error("娌℃湁閰嶇疆濂経rl");
+ }
+
+ if (!this.$refs.upload_excel.file) {
+ return this.$Message.error("璇烽�夋嫨鏂囦欢");
+ }
+ var formData = new FormData();
+ formData.append("fileInput", this.$refs.upload_excel.file);
+ if (!this.$refs.upload_excel.importExcelBefore(formData)) {
+ return;
+ }
+ this.$refs.upload_excel.loadingStatus = true;
+ this.http.post(_url, formData).then(
+ (x) => {
+ // this.$refs.uploadFile.clearFiles();
+ this.$refs.upload_excel.loadingStatus = false;
+ this.$refs.upload_excel.file = null;
+ if (x.status) {
+ this.$emit("parentCall", ($vue) => {
+ $vue.$refs.detail.rowData.push(...x.data);
+ });
+ }
+
+ this.message = x.message;
+ this.resultClass = x.status ? "v-r-success" : "v-r-error";
+ },
+ (error) => {
+ this.$refs.upload_excel.loadingStatus = false;
+ }
+ );
+ },
+ },
+ created() {},
+};
+</script>
+
+ <style scoped>
+.el-col {
+ border-radius: 4px;
+}
+.grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+}
+.content-text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.left-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+}
+</style>
+ <style>
+.el-table .warning-row {
+ background: #fcf1e2;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.el-table .error-row {
+ background: #fde2e2;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/system/Sys_User/Sys_UserGridHeader.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/system/Sys_User/Sys_UserGridHeader.vue"
new file mode 100644
index 0000000..f6f59be
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/system/Sys_User/Sys_UserGridHeader.vue"
@@ -0,0 +1,85 @@
+<template>
+ <div>
+ <vol-box
+ v-model="model"
+ :padding="30"
+ title="淇敼瀵嗙爜"
+ :width="500"
+ :height="250"
+ >
+ <el-alert type="success">
+ <h3>
+ <span>甯愬彿锛歿{ row.userName }}</span>
+ <span>鐢ㄦ埛锛歿{ row.userTrueName }}</span>
+ </h3>
+ </el-alert>
+ <div>
+ <el-input
+ placeholder="璇疯緭鍏ュ瘑鐮�"
+ v-model="password"
+ size="large"
+ style="width: 100%; margin-top: 15px"
+ />
+ </div>
+ <template #footer>
+ <el-button
+ type="primary"
+ @click="savePwd()"
+ >淇敼瀵嗙爜</el-button
+ >
+ <el-button
+ @click="model = false"
+ >鍏抽棴</el-button
+ >
+ </template>
+ </vol-box>
+ </div>
+</template>
+<script>
+import { defineComponent, defineAsyncComponent } from "vue";
+export default defineComponent({
+ components: {
+ VolBox: defineAsyncComponent(() => import("@/components/basic/VolBox.vue"))
+ },
+ data() {
+ return {
+ row: {},
+ password: "",
+ model: false,
+ };
+ },
+ methods: {
+ open(row) {
+ this.password = "";
+ this.row = row;
+ this.model = true;
+ },
+ savePwd() {
+ if (!this.password) return this.$Message.error("璇疯緭瀵嗙爜");
+ if (this.password.length < 6)
+ return this.$Message.error("瀵嗙爜闀垮害鑷冲皯6浣�");
+ let url =
+ "/api/user/modifyUserPwd?password=" +
+ this.password +
+ "&userName=" +
+ this.row.UserName;
+ this.http.post(url, {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message.error(x.message);
+ }
+ this.model = false;
+ this.$Message.success(x.message);
+ });
+ },
+ },
+ created() {},
+})
+</script>
+<style lang="less" scoped>
+h3 {
+ font-weight: 500;
+ > span:last-child {
+ margin-left: 30px;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskExecuteDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskExecuteDetail.vue"
new file mode 100644
index 0000000..ced7068
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskExecuteDetail.vue"
@@ -0,0 +1,259 @@
+<template>
+ <div>
+ <vol-box
+ v-model="showDetialBox"
+ :lazy="true"
+ width="1200px"
+ :padding="15"
+ title="浠诲姟璇︽儏"
+ >
+ <el-row height="50">
+ <el-col :span="24">
+ <div class="grid-content right-text">
+ <el-link type="primary" @click="switchView">鍒囨崲瑙嗗浘</el-link>
+ </div>
+ </el-col>
+ </el-row>
+ <div :style="{ height: height }">
+ <div v-if="viewType == 1">
+ <el-row height="50">
+ <el-col :span="8">
+ <div
+ class="grid-content content-text"
+ style="font-weight: bold; font-size: 18px"
+ >
+ <span>浠诲姟缂栧彿锛歿{ row.taskNum }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div
+ class="grid-content content-text"
+ style="font-weight: bold; font-size: 18px"
+ >
+ <span>鎵樼洏缂栧彿锛歿{ row.palletCode }}</span>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div
+ class="grid-content content-text"
+ style="font-weight: bold; font-size: 18px"
+ >
+ <span>浠诲姟鐘舵�侊細{{ row.taskState }}</span>
+ </div>
+ </el-col>
+ </el-row>
+ <div style="height: 100px; margin-top: 3%">
+ <el-steps :active="active" align-center finish-status="success">
+ <el-step
+ v-for="item in steps"
+ :key="item.title"
+ :title="item.title"
+ :description="item.description"
+ ></el-step>
+ </el-steps>
+ </div>
+ <el-row height="50" v-show="previousShow || nextShow">
+ <el-col :span="8">
+ <div v-show="previousShow" class="grid-content content-text">
+ <el-button type="danger" @click="previous"
+ >鍥炴粴鍒颁笂涓�姝�</el-button
+ >
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div v-show="recoveryShow" class="grid-content content-text">
+ <el-button type="primary" @click="recovery">浠诲姟鎸傝捣鎭㈠</el-button>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div v-show="nextShow" class="grid-content content-text">
+ <el-button type="warning" @click="next">璺宠浆鍒颁笅涓�姝�</el-button>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <div v-else>
+ <el-table
+ :data="tableData"
+ style="width: 100%"
+ :row-class-name="tableRowClassName"
+ >
+ <el-table-column type="index" width="50"> </el-table-column>
+ <el-table-column prop="taskNum" label="浠诲姟鍙�" width="90">
+ </el-table-column>
+ <el-table-column prop="taskState" label="浠诲姟鐘舵��" width="90">
+ </el-table-column>
+ <el-table-column prop="currentAddress" label="褰撳墠浣嶇疆" width="90">
+ </el-table-column>
+ <el-table-column prop="nextAddress" label="涓嬩竴浣嶇疆" width="90">
+ </el-table-column>
+ <el-table-column prop="isManual" label="鏄惁浜哄伐鎿嶄綔" width="120">
+ </el-table-column>
+ <el-table-column prop="isNormal" label="鏄惁姝e父" width="90">
+ </el-table-column>
+ <el-table-column prop="description" label="鎻忚堪"> </el-table-column>
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" width="180">
+ </el-table-column>
+ <el-table-column prop="remark" label="澶囨敞" width="180">
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </vol-box>
+ </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ active: 0,
+ showDetialBox: false,
+ row: {},
+ steps: [],
+ viewType: 1,
+ height: "200px",
+ tableData: [],
+ previousShow: false,
+ nextShow: false,
+ recoveryShow: true,
+ };
+ },
+ methods: {
+ open(row) {
+ this.row = row;
+ this.showDetialBox = true;
+ if (this.viewType == 1) {
+ this.getSteps();
+ } else {
+ this.getDetailDatas();
+ }
+
+ this.$emit("parentCall", ($vue) => {
+ var previousButton = $vue.buttons.find((x) => x.value == "Previous");
+ this.previousShow = previousButton != null;
+
+ var nextButton = $vue.buttons.find((x) => x.value == "Next");
+ this.nextShow = nextButton != null;
+ });
+ },
+ getSteps() {
+ this.http
+ .post(
+ "/api/TaskExecuteDetail/GetDetailInfo?taskNum=" + this.row.taskNum,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.steps = x.data.list;
+ this.active = x.data.active;
+ });
+ },
+ getDetailDatas() {
+ this.http
+ .post(
+ "/api/TaskExecuteDetail/GetDetailDatas?taskNum=" + this.row.taskNum,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.tableData = x.data;
+ });
+ },
+ previous() {
+ this.http
+ .post(
+ "/api/Task/RollbackTaskStatusToLast?taskNum=" + this.row.taskNum,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getSteps();
+ });
+ },
+ recovery(){
+ this.http
+ .post(
+ "/api/Task/TaskStatusRecovery?taskNum=" + this.row.taskNum,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getSteps();
+ });
+ },
+ next() {
+ this.http
+ .post(
+ "/api/Task/UpdateTaskStatusToNext?taskNum=" + this.row.taskNum,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getSteps();
+ });
+ },
+ switchView() {
+ this.viewType = this.viewType == 1 ? 2 : 1;
+ if (this.viewType == 2) {
+ this.height = "600px";
+ this.getDetailDatas();
+ } else {
+ this.height = "200px";
+ }
+ },
+ tableRowClassName({ row, rowIndex }) {
+ if (!row.isNormal) {
+ return "error-row";
+ } else if (row.isManual) {
+ return "warning-row";
+ }
+ return "success-row";
+ },
+ },
+ created() {},
+};
+</script>
+
+<style scoped>
+.el-col {
+ border-radius: 4px;
+}
+.grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+}
+.content-text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.right-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+</style>
+<style>
+.el-table .warning-row {
+ background: #fcf1e2;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.el-table .error-row {
+ background: #fde2e2;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue"
new file mode 100644
index 0000000..efcfdd9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/AgingLibrary.vue"
@@ -0,0 +1,102 @@
+<template>
+ <el-row>
+ <el-col :span="3">
+
+ <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker>
+ </el-col>
+ <el-col :span="21">
+ <device-line v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+
+<script setup>
+import { onMounted, reactive, toRefs } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLine from "@/components/DeviceLine.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+
+const intToBitArrayFromBinaryString = (num, numBits) => {
+ let binaryString = num.toString(2).padStart(numBits, '0');
+ return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1');
+};
+
+// 鐩戝惉璁惧鏁版嵁鍙樺寲
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ console.log(eventData)
+ if (eventData.deviceName === "闄堝寲鍏ュ簱杈撻�佺嚎" || eventData.deviceName === "闄堝寲鍏ュ簱杈撻�佺嚎") {
+
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode)
+ if (device) {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ device.data = eventData.data
+ }
+ else {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ }
+ }
+ });
+ eventBus.on('stackerData', eventData => {
+ if (eventData.deviceName.indexOf("闄堝寲") != -1) {
+ if (Stackers.length == 0) {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ else {
+ const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName);
+ if (Stacker) {
+ Stacker.data = eventData.data
+ }
+ else {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ }
+ }
+ })
+});
+</script>
+<style scoped>
+.Stackerbox {
+ width: 220px;
+ float: left;
+}
+
+.Linebox {
+ width: 500px;
+ float: left;
+}
+
+.box1 {
+ float: left;
+}
+
+.card-body {
+ text-align: center;
+ border-radius: 6%;
+}
+
+.Stacker {
+ background-color: burlywood;
+}
+
+.lis {
+ float: left;
+ width: 233px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/FormationLibrary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/FormationLibrary.vue"
new file mode 100644
index 0000000..3d46097
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/FormationLibrary.vue"
@@ -0,0 +1,49 @@
+<template>
+ <el-row>
+ <el-col :span="24">
+ <device-line v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+
+<script setup>
+import { onMounted, reactive, toRefs } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLine from "@/components/DeviceLine.vue";
+
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+
+const intToBitArrayFromBinaryString = (num, numBits) => {
+ let binaryString = num.toString(2).padStart(numBits, '0');
+ return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1');
+};
+
+// 鐩戝惉璁惧鏁版嵁鍙樺寲
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ if (eventData.deviceName === "鍖栨垚鍏ュ簱杈撻�佺嚎") {
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode)
+ if (device) {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ device.data = eventData.data
+
+ }
+ else {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ }
+ }
+ });
+});
+</script>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Staticlibrary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Staticlibrary.vue"
new file mode 100644
index 0000000..96bc5cc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Staticlibrary.vue"
@@ -0,0 +1,96 @@
+<template>
+ <el-row>
+ <el-col :span="3">
+ <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker>
+ </el-col>
+ <el-col :span="21">
+ <device-line v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+
+<script setup>
+import { onMounted, reactive, toRefs } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLine from "@/components/DeviceLine.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+
+const intToBitArrayFromBinaryString = (num, numBits) => {
+ let binaryString = num.toString(2).padStart(numBits, '0');
+ return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1');
+};
+
+// 鐩戝惉璁惧鏁版嵁鍙樺寲
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ console.log(eventData)
+ if (eventData.deviceName === "闈欑疆杈撻�佺嚎") {
+
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode)
+ if (device) {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ device.data = eventData.data
+ }
+ else {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ }
+ }
+ });
+ eventBus.on('stackerData', eventData => {
+ if (eventData.deviceName.indexOf("闈欑疆") != -1) {
+ if (Stackers.length == 0) {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ else {
+ const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName);
+ if (Stacker) {
+ Stacker.data = eventData.data
+ }
+ else {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ }
+ }
+ })
+});
+</script>
+<style scoped>
+.Stackerbox {
+ width: 220px;
+ float: left;
+}
+
+.Linebox {
+ width: 500px;
+ float: left;
+}
+
+.box1 {
+ float: left;
+}
+
+.card-body {
+ text-align: center;
+ border-radius: 6%;
+}
+
+.Stacker {
+ background-color: burlywood;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Twoletters.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Twoletters.vue"
new file mode 100644
index 0000000..4a17acb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Twoletters.vue"
@@ -0,0 +1,48 @@
+<template>
+ <el-row>
+ <el-col :span="24">
+ <device-line v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+
+<script setup>
+import { onMounted, reactive, toRefs } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLine from "@/components/DeviceLine.vue";
+
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+
+const intToBitArrayFromBinaryString = (num, numBits) => {
+ let binaryString = num.toString(2).padStart(numBits, '0');
+ return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1');
+};
+
+// 鐩戝惉璁惧鏁版嵁鍙樺寲
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ if (eventData.deviceName === "浜屽皝杈撻�佺嚎") {
+
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode)
+ if (device) {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ device.data = eventData.data
+ }
+ else {
+ const number = eventData.data.commandWrite.writeInteractiveSignal;
+ const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8)
+ eventData.data.writeInteractiveSignal = writeInteractiveSignal;
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode });
+ }
+ }
+ }
+ });
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Volume.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Volume.vue"
new file mode 100644
index 0000000..e6efdac
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/Volume.vue"
@@ -0,0 +1,58 @@
+<template>
+ <el-row>
+ <el-col :span="3">
+ <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker>
+ </el-col>
+ <el-col :span="21">
+ <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+<script setup>
+import { onMounted, ref, reactive, toRaw } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLineVo from "@/components/DeviceLineVo.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+var i = 0;
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+const num = reactive([])
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ if (eventData.deviceName.indexOf("鍒嗗") != -1) {
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode)
+ if (device) {
+ device.data = eventData.data
+ } else {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ }
+ }
+ })
+ eventBus.on('stackerData', eventData => {
+ // if (eventData.deviceName == "鍒嗗3鍙峰爢鍨涙満"||eventData.deviceName == "鍒嗗2鍙峰爢鍨涙満") {
+ console.log(eventData.deviceName)
+ if (eventData.deviceName.indexOf("鍒嗗") != -1) {
+ if (Stackers.length == 0) {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ else {
+ const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName);
+ if (Stacker) {
+ Stacker.data = eventData.data
+ }
+ else {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ }
+ }
+ })
+})
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/baozhuang.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/baozhuang.vue"
new file mode 100644
index 0000000..dc57889
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/baozhuang.vue"
@@ -0,0 +1,42 @@
+<template>
+ <el-row>
+ <el-col :span="21">
+ <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+<script setup>
+import { onMounted, ref, reactive, toRaw } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLineVo from "@/components/DeviceLineVo.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+var i=0;
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+const num = reactive([])
+onMounted(() => {
+ eventBus.on('stackerData', eventData => {
+ if (eventData.deviceName === "鍖呰鍑哄簱杈撻�佺嚎") {
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode)
+ if(device){
+ device.data = eventData.data
+ }else{
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ }
+
+ }
+ })
+
+})
+
+</script>
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/hightemperature.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/hightemperature.vue"
new file mode 100644
index 0000000..fa614eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/hightemperature.vue"
@@ -0,0 +1,60 @@
+<template>
+ <el-row>
+ <el-col :span="3">
+ <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker>
+ </el-col>
+ <el-col :span="21">
+ <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+<script setup>
+import { onMounted, ref, reactive, toRaw } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLineVo from "@/components/DeviceLineVo.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+var i = 0;
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+const num = reactive([])
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ // console.log(eventData)
+ console.log(eventData)
+
+ if (eventData.deviceName.indexOf("鑰佸寲") != -1) {
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode)
+ if (device) {
+ device.data = eventData.data
+ } else {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ }
+
+ }
+ })
+ eventBus.on('stackerData', eventData => {
+ if (eventData.deviceName.indexOf("鑰佸寲") != -1) {
+ if (Stackers.length == 0) {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ else {
+ const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName);
+ if (Stacker) {
+ Stacker.data = eventData.data
+ }
+ else {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ }
+ }
+ })
+})
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/roomtemperature.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/roomtemperature.vue"
new file mode 100644
index 0000000..2e660c2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/Craftlibrary/roomtemperature.vue"
@@ -0,0 +1,61 @@
+<template>
+ <el-row>
+ <el-col :span="3">
+ <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker>
+ </el-col>
+ <el-col :span="21">
+ <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" />
+ </el-col>
+ </el-row>
+</template>
+<script setup>
+import { onMounted, ref, reactive, toRaw } from "vue";
+import eventBus from "@/uitils/eventBus";
+import DeviceLineVo from "@/components/DeviceLineVo.vue";
+import DeviceStacker from "@/components/DeviceStacker.vue";
+// 鍫嗗灈鏈�
+const Stackers = reactive([]);
+var i = 0;
+// 璁惧鍒楄〃锛堜慨鏀归噸澶嶈澶囧悕绉帮級
+const devices = reactive([]);
+const num = reactive([])
+onMounted(() => {
+ eventBus.on('locationData', eventData => {
+ // console.log(eventData)
+
+ console.log(eventData)
+
+ if (eventData.deviceName.indexOf("甯告俯") != -1) {
+ if (devices.length <= 0) {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ else {
+ const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode)
+ if (device) {
+ device.data = eventData.data
+ } else {
+ devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode });
+ }
+ }
+
+ }
+ })
+ eventBus.on('stackerData', eventData => {
+ if (eventData.deviceName.indexOf("甯告俯") != -1) {
+ if (Stackers.length == 0) {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ else {
+ const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName);
+ if (Stacker) {
+ Stacker.data = eventData.data
+ }
+ else {
+ Stackers.push({ deviceName: eventData.deviceName, data: eventData.data });
+ }
+ }
+ }
+ })
+})
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/indexLibrary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/indexLibrary.vue"
new file mode 100644
index 0000000..1daa868
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Devicestatus/indexLibrary.vue"
@@ -0,0 +1,48 @@
+<template>
+
+ <!--瀵艰埅鍖� -->
+ <div class="nav-bar">
+ <RouterLink class="navlink" to="/AgingLibrary" >闄堝寲搴�</RouterLink>
+ <RouterLink class="navlink" to="/FormationLibrary" >鍖栨垚搴�</RouterLink>
+ <RouterLink class="navlink" to="/StaticLibrary" >闈欑疆搴�</RouterLink>
+ <RouterLink class="navlink" to="/Twoletters" >浜屽皝</RouterLink>
+ <RouterLink class="navlink" to="/Volume" >鍒嗗搴�</RouterLink>
+ <RouterLink class="navlink" to="/highTemperature" >鑰佸寲搴�</RouterLink>
+ <RouterLink class="navlink" to="/roomTemperature" >甯告俯搴�</RouterLink>
+ <RouterLink class="navlink" to="/Baozhuang" >鍖呰</RouterLink>
+ </div>
+ <!--娉ㄦ剰浜嬮」-->
+ <div class="area">
+ <RouterView :key="$route.fullPath" ></RouterView>
+ </div>
+</template>
+<script setup>
+ import { RouterView,RouterLink } from 'vue-router';
+
+</script>
+<style>
+.nav-bar {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ height: 50px;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #ccc;
+}
+.navlink {
+ width: 100px;
+ height: 100%;
+ text-decoration:none;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ color: rgb(0, 195, 255);
+ }
+.navlink:hover{
+ background-color: rgb(0, 195, 255);
+ color: #ffffff;
+}
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue"
new file mode 100644
index 0000000..6c406ac
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue"
@@ -0,0 +1,51 @@
+<template>
+ <div class="title"></div>
+ <el-container>
+ <!-- <el-header>鏃ュ織</el-header> -->
+ <el-main>
+ <el-card v-for="(log, index) in logs" :key="index" class="log-card" :style="{ color: log.color }">
+ <div :style="{ color: log.color }">{{ log.logEntry }}</div>
+ <div :style="{ color: log.color }">{{ log.time }}</div>
+ </el-card>
+ </el-main>
+ </el-container>
+</template>
+
+<script>
+import { ref, onMounted } from 'vue'
+import eventBus from "@/uitils/eventBus";
+
+export default {
+ setup() {
+ const logs = ref([]);
+ onMounted(() => {
+ eventBus.on('Logs', eventData => {
+ if (logs.value.length > 500) {
+ logs.value = [];
+ }
+ const logEntry = "鏃ュ織淇℃伅锛�" + eventData.log
+ const time = "鏃堕棿锛�" + eventData.time
+ logs.value.unshift({ logEntry: logEntry, time: time, color: eventData.color });
+
+ // logs.value.unshift(logEntry);
+ });
+ });
+ return {
+ logs
+ }
+ }
+}
+</script>
+
+<style scoped>
+.title {
+ line-height: 70vh;
+ text-align: center;
+ font-size: 28px;
+ color: orange;
+}
+
+.log-card {
+ margin-bottom: 10px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Index.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Index.vue"
new file mode 100644
index 0000000..5095cc7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Index.vue"
@@ -0,0 +1,720 @@
+<template>
+ <div id="vol-container" :class="['vol-theme-' + theme]">
+ <div class="vol-aside" :style="{ width: menuWidth + 'px' }">
+ <div class="header" :style="{ width: menuWidth - 1 + 'px' }">
+ <img v-show="!isCollapse" v-bind:src="logo" />
+ <i @click="toggleLeft" class="el-icon-s-fold collapse-menu" />
+ </div>
+ <div class="vol-menu">
+ <el-scrollbar style="height: 100%">
+ <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false"
+ :isCollapse="isCollapse" :list="menuOptions"></VolMenu>
+ </el-scrollbar>
+ </div>
+ </div>
+ <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
+ <div class="vol-header">
+ <div class="project-name">WCS</div>
+ <div class="header-text">
+ <!-- <div class="h-link">
+ <a
+ href="javascript:void(0)"
+ @click="to(item)"
+ v-for="(item, index) in links.filter((c) => {
+ return !c.icon;
+ })"
+ :key="index"
+ >
+ <span v-if="!item.icon"> {{ item.text }}</span>
+ <i v-else :class="item.icon"></i>
+ </a>
+ </div> -->
+ </div>
+ <div class="header-info">
+ <div class="h-link">
+ <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+ return c.icon;
+ })" :key="index">
+ <span> {{ item.text }}</span>
+ </a>
+
+ </div>
+ <div>
+ <img class="user-header" :src="userImg" :onerror="errorImg" />
+ </div>
+ <div class="user">
+ <span>{{ userName }}</span>
+ <span id="index-date"></span>
+ </div>
+ <div class="settings">
+ <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" />
+ </div>
+ </div>
+ </div>
+ <div class="vol-path">
+ <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)"
+ type="border-card" class="header-navigation" v-model="selectId" :strtch="false">
+ <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0"
+ :key="navIndex" :label="item.name">
+ <span style="display: none">{{ navIndex }}</span>
+ </el-tab-pane>
+ </el-tabs>
+ <!-- 鍙抽敭鑿滃崟 -->
+ <div v-show="contextMenuVisible">
+ <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu">
+ <li v-show="visibleItem.all">
+ <el-button link @click="closeTabs()">
+ <i class="el-icon-close"></i>
+ {{
+ navigation.length == 2 ? "鍏抽棴鑿滃崟" : "鍏抽棴鎵�鏈�"
+ }}</el-button>
+ </li>
+ <li v-show="visibleItem.left">
+ <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>鍏抽棴宸﹁竟</el-button>
+ </li>
+ <li v-show="visibleItem.right">
+ <el-button link @click="closeTabs('right')">
+ <i class="el-icon-right"></i>鍏抽棴鍙宠竟</el-button>
+ </li>
+ <li v-show="visibleItem.other">
+ <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>鍏抽棴鍏朵粬
+ </el-button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="vol-main" id="vol-main">
+ <el-scrollbar style="height: 100%" v-if="permissionInited">
+ <loading v-show="$store.getters.isLoading()"></loading>
+ <router-view v-slot="{ Component }">
+ <keep-alive>
+ <component :is="Component" :key="$route.name"
+ v-if="!$route.meta || ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" />
+ </keep-alive>
+ <component :is="Component" :key="$route.name" v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" />
+ </router-view>
+ </el-scrollbar>
+ </div>
+ </div>
+ <el-drawer title="閫夋嫨涓婚" v-model="drawer_model" direction="rtl" destroy-on-close>
+ <div class="theme-selector">
+ <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index"
+ :style="{ background: item.color }">
+ <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px"
+ class="t-left"></div>
+ <div class="t-right"></div>
+ </div>
+ </div>
+ </el-drawer>
+
+ <el-drawer title="娑堟伅鍒楄〃" v-model="messageModel" direction="rtl" destroy-on-close>
+ <Message :list="messageList"></Message>
+ </el-drawer>
+ </div>
+</template>
+<style lang="less" scoped>
+@import "./index/index.less";
+</style>
+<script>
+import loading from "@/components/basic/RouterLoading";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import Message from "./index/Message.vue";
+import MessageConfig from "./index/MessageConfig.js";
+var imgUrl = require("@/assets/imgs/wms_x.png");
+var $this;
+var $interval;
+var $indexDate;
+import {
+ defineComponent,
+ reactive,
+ ref,
+ watch,
+ onMounted,
+ getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "@/../src/api/http.js";
+import useSignalr from '../uitils/signalr.js';
+export default defineComponent({
+ components: {
+ VolMenu,
+ loading,
+ Message,
+ },
+
+ data() {
+ return {
+ allTabs: true,
+ leftTabs: true,
+ rightTabs: true,
+ otherTabs: true,
+ menuLeft: 0,
+ menuTop: 0,
+ // contextMenuVisible: false, // 鍙抽敭鍏抽棴鏄�/闅�
+ };
+ },
+ setup(props, context) {
+ // 鑾峰彇鍏ㄥ眬灞炴�у拰鏂规硶
+ const { proxy } = getCurrentInstance();
+
+ // 鑿滃崟瀵艰埅榛樿瀹藉害
+ const menuWidth = ref(200);
+ const contextMenuVisible = ref(false);
+ const isCollapse = ref(false);
+ const drawer_model = ref(false);
+ const messageModel = ref(false);
+ const theme_color = ref([
+ { name: "blue", color: "rgb(45, 140, 240)" },
+ { name: "blue2", color: "rgb(45, 140, 240)", leftColor: "#0068d6" },
+ { name: "red", color: "rgb(237, 64, 20)" },
+ { name: "red2", color: "rgb(237, 64, 20)", leftColor: "#a90000" },
+ { name: "dark", color: "#272929" },
+ { name: "orange", color: "#ff9900" },
+ { name: "orange2", color: "#ff9900", leftColor: "rgb(232 141 5)" },
+ { name: "green", color: "rgb(25, 190, 107)" },
+ { name: "green2", color: "rgb(25, 190, 107)", leftColor: "#019e4f" },
+ { name: "white", color: "#fff" },
+ ]);
+ const links = ref([
+ // {
+ // text: "妗嗘灦瑙嗛",
+ // path: "https://www.cctalk.com/m/group/90268531",
+ // id: -3,
+ // },
+ // { text: "澶у睆鏁版嵁", path: "/bigdata", id: -3 },
+ // {
+ // text: "妗嗘灦鏂囨。",
+ // path: "http://v2.volcore.xyz/document/guide",
+ // id: -2,
+ // }, {
+ // text: "妗嗘灦浼佷笟鐗�",
+ // path: "http://pro.volcore.xyz/",
+ // id: 10,
+ // },
+ { text: "涓汉涓績", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
+ {
+ text: "瀹夊叏閫�鍑�",
+ path: "/login",
+ id: -4,
+ icon: "el-icon-switch-button",
+ },
+ ]);
+ const errorImg = ref(
+ 'this.src="' + require("@/assets/imgs/error-img.png") + '"'
+ );
+ const selectId = ref("1");
+ // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
+ const selectMenuIndex = ref("0");
+ //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
+ const currentMenuId = ref(0);
+ const userName = ref("--");
+ const userInfo = ref({});
+ const visibleItem = reactive({
+ left: false,
+ right: false,
+ all: false,
+ other: false,
+ });
+ const userImg = ref("");
+ const navigation = reactive([
+ { orderNo: "0", id: "1", name: "棣栭〉", path: "/home" },
+ ]);
+ const logo = ref(imgUrl);
+ const theme = ref("blue2");
+ const menuOptions = ref([]);
+ const permissionInited = ref(false);
+ const messageList = reactive([]);
+ let _config = getCurrentInstance().appContext.config.globalProperties;
+ let router = useRouter();
+ const toggleLeft = () => {
+ isCollapse.value = !isCollapse.value;
+ menuWidth.value = isCollapse.value ? 63 : 200;
+ };
+ //2021.08.28寮�鏀炬墜鍔ㄦ姌鍙犺彍鍗曟柟娉�
+ _config.menu = {
+ show() {
+ toggleLeft();
+ },
+ hide() {
+ toggleLeft();
+ },
+ };
+ const changeTheme = (name) => {
+ if (theme.value != name) {
+ theme.value = name;
+ }
+ localStorage.setItem("vol3_theme", name);
+ };
+ const to = (item) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ if (item.path.indexOf("http") != -1) {
+ window.open(item.path);
+ return;
+ }
+ if (typeof item == "string" || item.path == "/login") {
+ if (item == "/login" || item.path == "/login") {
+ //纭鏄惁閫�鍑�
+ store.commit("clearUserInfo", "");
+ window.location.href = "/";
+ return;
+ }
+ router.push({ path: item });
+ return;
+ }
+ if (item.path == "#") return;
+ open(item);
+ };
+ const open = (item, useRoute) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let _index = navigation.findIndex((x) => {
+ return x.path == item.path;
+ });
+ if (_index == -1) {
+ navigation.push({
+ // orderNo: String(navigation.length),// 搴忓彿
+ id: item.id + "",
+ name: item.name || item.text || "鏃犳爣棰�",
+ path: item.path,
+ query: item.query, //2021.03.20淇鑷畾涔変簩娆℃墦寮�$tabs鏃跺弬鏁颁涪澶辩殑闂
+ });
+ //鏂版墦寮�鐨則ab绉昏嚦鏈�鍚庝竴涓�夐」
+ selectId.value = navigation.length - 1 + "";
+ } else {
+ selectId.value = _index + "";
+ }
+ if (useRoute === undefined) {
+ //闈炴爣鍑嗚彍鍗曪紝璁板綍鏈�鍚庝竴娆¤烦杞殑椤甸潰锛岀敤浜庡埛鏂�
+ setItem(item);
+ router.push(item);
+ // this.$router.push(item);
+ }
+ currentMenuId.value = item.id * 1;
+ // tab鑿滃崟缁戝畾鍙抽敭浜嬩欢
+ proxy.$nextTick(function (e) {
+ proxy.bindRightClickMenu(true);
+ });
+ };
+ const close = (path) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let index = navigation.findIndex((x) => {
+ return x.path == path;
+ });
+ if (index == -1) {
+ return _config.$Message.error("鏈壘鍒拌彍鍗�");
+ }
+ removeNav(index);
+ };
+ const setItem = (item) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ localStorage.setItem(
+ window.location.origin + "_tabs",
+ JSON.stringify(item)
+ );
+ };
+ const getItem = () => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let nav = localStorage.getItem(window.location.origin + "_tabs");
+ return nav ? JSON.parse(nav) : null;
+ };
+ const selectNav = (item) => {
+ //鍗囩骇element姝e紡鐗堜慨鏀�
+ selectId.value = item.props.name;
+ let _path = navigation[item.index].path;
+ currentMenuId.value = (
+ menuOptions.value.find((c) => {
+ return c.path == _path;
+ }) || { id: 0 }
+ ).id;
+
+ router.push({
+ path: navigation[item.index].path,
+ query: navigation[item.index].query,
+ });
+ };
+
+ const removeNav = (_index) => {
+ return new Promise(() => {
+ //鍏抽棴鐨勫綋鍓嶉」,璺宠浆鍒板墠涓�涓〉闈�
+ if (selectId.value == _index + "") {
+ console.log(navigation[_index - 1]);
+ setItem(navigation[_index - 1]);
+ router.push({
+ path: navigation[_index - 1].path,
+ //2022.06.27淇tabs浜屾鍒囨崲鍚庡弬鏁颁涪澶辩殑闂
+ query: navigation[_index - 1].query,
+ });
+ navigation.splice(_index, 1);
+ selectId.value = selectId.value - 1 + "";
+ return;
+ }
+ if (_index < selectId.value) {
+ selectId.value = selectId.value - 1 + "";
+ }
+ navigation.splice(_index, 1);
+ currentMenuId.value = (
+ menuOptions.value.find((c) => {
+ return c.path == navigation[selectId.value * 1].path;
+ }) || { id: 0 }
+ ).id;
+ });
+ };
+
+ const getSelectMenuName = (id) => {
+ return menuOptions.value.find(function (x) {
+ return x.id == id;
+ });
+ };
+ const onSelect = (treeId) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ var item = getSelectMenuName(treeId);
+ open(item, false);
+ };
+
+ /**
+ * 鏄剧ず鍙抽敭鑿滃崟
+ * @param {*} e 浜嬩欢瀵硅薄
+ */
+ const openTabsMenu = function (e) {
+ e.preventDefault(); // 闃叉榛樿鑿滃崟寮瑰嚭
+ let tabId = e.target.id.split("-")[1] * 1;
+
+ //璁板綍褰撳墠閫変腑鐨勮彍鍗昳ndex
+ selectMenuIndex.value =
+ document.getElementById("pane-" + tabId).children[0].textContent * 1;
+ //鍙湁棣栭〉鏃朵笉鏄剧ず
+ if (navigation.length == 1) {
+ return;
+ }
+
+ //棣栭〉璁剧疆鏄剧ず鍏抽棴鍙宠竟鑿滃崟
+ if (!selectMenuIndex.value) {
+ visibleItem.all = false;
+ visibleItem.right = true;
+ visibleItem.left = false;
+ visibleItem.other = false;
+ } else {
+ visibleItem.all = true;
+ //涓嶆槸鏈�鍚庝竴涓樉绀哄叧闂彸杈硅彍鍗�
+ visibleItem.right = selectMenuIndex.value != navigation.length - 1;
+ //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴宸﹁竟
+ visibleItem.left = navigation.length != 2;
+ //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴鍏朵粬
+ visibleItem.other = navigation.length != 2;
+ }
+ contextMenuVisible.value = true;
+ // 璁剧疆鍙抽敭鑿滃崟鏄剧ず鐨勪綅缃�
+ proxy.menuLeft =
+ e.target.getBoundingClientRect().left - (isCollapse.value ? 63 : 198); //-e.target.clientWidth
+ proxy.menuTop = 36;
+ };
+
+ /**
+ * 鍏抽棴鍙抽敭鑿滃崟
+ */
+ const closeTabsMenu = () => {
+ contextMenuVisible.value = false;
+ };
+ const toHome = () => {
+ open({
+ text: navigation[0].name,
+ path: navigation[0].path,
+ });
+ };
+ /**
+ * 鍏抽棴鍏跺畠鏍囩椤�
+ * @param {*} par 鍏抽棴绫诲瀷(left,right,other)
+ */
+ const closeTabs = (value) => {
+ let _menuId = navigation[selectId.value * 1].id;
+ let currnetIndex = selectId.value * 1; // navigation.findIndex(c => { return c.id == selectId.value });
+ switch (value) {
+ case "left": {
+ // 鍒犻櫎宸︿晶tab鏍囩
+ navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+ break;
+ }
+ case "right": {
+ // 鍒犻櫎鍙充晶tab鏍囩
+ if (selectMenuIndex.value == 0) {
+ navigation.splice(currnetIndex); // 鍒犻櫎鍙充晶tab鏍囩
+ toHome();
+ } else {
+ navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩
+ if (selectMenuIndex.value < currnetIndex) {
+ navigation.splice(
+ selectMenuIndex.value,
+ currnetIndex - selectMenuIndex.value
+ );
+ }
+ }
+ break;
+ }
+ case "other": {
+ // 鍒犻櫎鍏朵粬鎵�鏈塼ab鏍囩
+ navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩(杩欓噷蹇呴』鎸夌収鍙斥啋宸﹂『搴忓垹闄�)
+ navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+ break;
+ }
+ default: {
+ //鍏抽棴鎵�鏈�
+ navigation.splice(1, navigation.length);
+ toHome();
+ break;
+ }
+ }
+ selectId.value =
+ navigation.findIndex((c) => {
+ return c.id == _menuId;
+ }) + "";
+ closeTabsMenu();
+ };
+
+ watch(
+ () => contextMenuVisible.value,
+ (newVal, oldVal) => {
+ // 鐩戣
+ if (newVal) {
+ document.body.addEventListener("click", closeTabsMenu);
+ } else {
+ document.body.removeEventListener("click", closeTabsMenu);
+ }
+ }
+ );
+
+ /**
+ * 绯荤粺鍒涘缓寮�濮�
+ */
+ const created = () => {
+ let _theme = localStorage.getItem("vol3_theme");
+ if (_theme) {
+ theme.value = _theme;
+ }
+
+ let _userInfo = store.getters.getUserInfo();
+ if (_userInfo) {
+ userName.value = _userInfo.userName;
+ if (_userInfo.img) {
+ userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
+ }
+ }
+ Object.assign(_config.$tabs, { open: open, close: close });
+
+ http.get("api/Sys_Menu/getTreeMenu", {}, true).then((data) => {
+ data.push({ id: "1", name: "棣栭〉", url: "/home" }); // 涓轰簡鑾峰彇閫変腑id浣跨敤
+ data.forEach((d) => {
+ d.path = (d.url || "").replace("/Manager", "");
+ d.to = (d.url || "").replace("/Manager", "");
+ if (!d.icon || d.icon.substring(0, 3) != "el-") {
+ d.icon = "el-icon-menu";
+ }
+ });
+ store.dispatch("setPermission", data);
+ menuOptions.value = data;
+ permissionInited.value = true;
+
+ //寮�鍚秷鎭帹閫侊紙main.js涓缃槸鍚﹀紑鍚痵ignalR锛�2022.05.05
+ if (_config.$global.signalR) {
+ MessageConfig(http, (result) => {
+ messageList.unshift(result);
+ // console.log(result)
+ });
+ }
+
+ const { startSignalr } = useSignalr()
+ startSignalr()
+
+ //褰撳墠鍒锋柊鏄笉鏄椤�
+ if (router.currentRoute.value.path != navigation[0].path) {
+ //鏌ユ壘绯荤粺鑿滃崟
+ let item = menuOptions.value.find((x) => {
+ return x.path == router.currentRoute.value.path; //this.$route.path;
+ });
+ if (item) return onSelect(item.id);
+ //鏌ユ壘椤堕儴蹇嵎杩炴帴
+ item = links.value.find((x) => {
+ return x.path == router.currentRoute.value.path; //this.$route.path;
+ });
+ //鏌ユ壘鏈�鍚庝竴娆¤烦杞殑椤甸潰
+ if (!item) {
+ item = getItem();
+ }
+ if (item) {
+ return open(item, false);
+ }
+ }
+ selectId.value = "1";
+ });
+ };
+ created();
+ return {
+ menuWidth,
+ isCollapse,
+ drawer_model,
+ theme_color,
+ errorImg,
+ userInfo,
+ userName,
+ userImg,
+ selectId,
+ selectMenuIndex,
+ navigation,
+ links,
+ onSelect,
+ openTabsMenu,
+ selectNav,
+ getSelectMenuName,
+ removeNav,
+ logo,
+ theme,
+ menuOptions,
+ permissionInited,
+ changeTheme,
+ to,
+ toggleLeft,
+ messageModel,
+ messageList,
+ contextMenuVisible,
+ visibleItem,
+ closeTabsMenu,
+ closeTabs,
+ currentMenuId,
+ };
+ },
+ /**
+ * 鎸傝浇閽╁瓙鍑芥暟
+ */
+ mounted() {
+ let _date = showTime();
+ $indexDate = document.getElementById("index-date");
+ $indexDate.innerText = _date;
+ $interval = setInterval(function () {
+ $indexDate.innerText = showTime();
+ }, 1000);
+
+ this.bindRightClickMenu(true);
+ },
+
+ methods: {
+ /**
+ * 缁戝畾鍙抽敭浜嬩欢
+ * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+ * @param {*} $event 浜嬩欢
+ */
+ bindRightClickMenu(enable) {
+ if (!enable) return;
+ let that = this;
+ // 浣跨敤鍘熺敓js 涓哄崟涓猟om缁戝畾榧犳爣鍙冲嚮浜嬩欢
+ that.$nextTick(() => {
+ let tab_top_dom = Object.assign(
+ [],
+ document.getElementsByClassName("el-tabs__item is-top")
+ );
+ tab_top_dom.forEach((item, index) => {
+ item.oncontextmenu = that.openTabsMenu;
+ });
+ });
+ },
+ },
+
+ /**
+ * 閿�姣侀挬瀛愬嚱鏁�
+ */
+ destroyed() {
+ $this = null;
+ clearInterval($interval);
+ },
+});
+const week = new Array(
+ "鏄熸湡涓�",
+ "鏄熸湡浜�",
+ "鏄熸湡涓�",
+ "鏄熸湡鍥�",
+ "鏄熸湡浜�",
+ "鏄熸湡鍏�",
+ "鏄熸湡鏃�"
+);
+function showTime() {
+ let date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+ let hour = date.getHours();
+ let minutes = date.getMinutes();
+ let second = date.getSeconds();
+
+ return (
+ year +
+ "." +
+ (month < 10 ? "0" + month : month) +
+ "." +
+ (day < 10 ? "0" + day : day) + //202.08.08淇鏃ユ湡澶╂暟灏忎簬10鏃舵坊鍔�0
+ "" +
+ " " +
+ (hour < 10 ? "0" + hour : hour) +
+ ":" +
+ (minutes < 10 ? "0" + minutes : minutes) +
+ ":" +
+ (second < 10 ? "0" + second : second) +
+ " " + //2020.08.30淇棣栭〉鏃ユ湡鏄熸湡澶╀笉鏄剧ず鐨勯棶棰�
+ (week[date.getDay() - 1] || week[6])
+ );
+}
+</script>
+
+<style lang="less" scoped>
+.vol-container .vol-path ::v-deep(.el-tabs__content) {
+ padding: 0;
+}
+
+.contextMenu {
+ width: 120px;
+ margin: 0;
+ border: 1px solid #eaeaea;
+ background: #fff;
+ z-index: 30000;
+ position: absolute;
+ list-style-type: none;
+ padding: 5px 0;
+ border-radius: 4px;
+ font-size: 14px;
+ color: #333;
+ box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%);
+
+ i,
+ button {
+ font-size: 14px !important;
+ }
+}
+
+.contextMenu li {
+ margin: 0;
+ padding: 5px 17px;
+}
+
+.contextMenu li:hover {
+ background: #fafafa;
+ cursor: pointer;
+}
+
+.contextMenu li button {
+ color: #626060;
+ font-size: 14px;
+ letter-spacing: 1px;
+}
+
+.el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child,
+.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) {
+ padding: 0;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-top) {
+ padding: 0 15px;
+}
+</style>
+<style>
+.horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out,
+ 0s padding-right ease-in-out;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Login.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Login.vue"
new file mode 100644
index 0000000..83c86c7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Login.vue"
@@ -0,0 +1,386 @@
+<template>
+ <div class="login-container">
+ <div class="project-name">WIDESEA_WMS</div>
+ <div class="login-form">
+ <div class="form-user" @keypress="loginPress">
+ <div class="login-text">
+ <div>
+ <div>娆㈣繋鐧诲綍...</div>
+ <div class="login-line"></div>
+ </div>
+ <div style="flex:1;"></div>
+ </div>
+ <div class="login-text-small">WELCOME TO LOGIN</div>
+ <div class="item">
+ <div class="input-icon el-icon-user"></div>
+ <input type="text" v-focus v-model="userInfo.userName" placeholder="璇疯緭鍏ヨ处鍙�" />
+ </div>
+ <div class="item">
+ <div class="input-icon el-icon-lock"></div>
+ <input type="password" v-focus v-model="userInfo.password" placeholder="璇疯緭鍏ュ瘑鐮�" />
+ </div>
+ <div class="item">
+ <div class="input-icon el-icon-mobile"></div>
+
+ <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="杈撳叆楠岃瘉鐮�" />
+ <div class="code" @click="getVierificationCode">
+ <img v-show="codeImgSrc != ''" :src="codeImgSrc" />
+ </div>
+ </div>
+ </div>
+ <div class="loging-btn">
+ <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long>
+ <span v-if="!loading">鐧诲綍</span>
+ <span v-else>姝e湪鐧诲綍...</span>
+ </el-button>
+ </div>
+
+ <!-- 璐﹀彿淇℃伅 -->
+ <!-- <div class="account-info">
+ <p>婕旂ず璐﹀彿锛歛dmin666 瀵嗙爜:123456</p>
+ <p>鏈湴璐﹀彿锛歛dmin 瀵嗙爜:123456</p>
+ <p><a href="https://jq.qq.com/?_wv=1027&k=Sqstuy0M" style="text-decoration: none"
+ target="_blank">QQ3缇�:743852316</a>
+
+ <a href="http://v2.volcore.xyz/document/guide" style="text-decoration: none" target="_blank">妗嗘灦鏂囨。</a>
+ </p>
+ </div> -->
+ <!-- 閾炬帴浣嶇疆 -->
+ <!-- <div class="app-link" >
+ <a href="#" style="text-decoration: none">绉诲姩绔壂鐮�</a>
+ <a>
+ <i class="el-icon-chat-dot-round"></i> 灏忕▼搴�
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/wechat.jpg" /></a>
+ <a>
+ <i class="el-icon-apple"></i>
+ Android
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/Android.png" /></a>
+ <a>
+ <i class="el-icon-document"></i>
+ H5
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/H5.png" /></a>
+ </div> -->
+ </div>
+
+ <!-- 椤甸潰搴曢儴 -->
+ <!-- <div class="login-footer">
+ <a style="text-decoration: none" href="https://beian.miit.gov.cn/" target="_blank">浜琁CP澶�19056538鍙�-1</a>
+
+
+ <a href="https://dotnet9.com/" style="text-decoration: none" target="blank">Dotnet9</a>
+ <a href="https://space.bilibili.com/525836469" style="text-decoration: none" target="blank">NET瑙嗛鏁欑▼(寰蒋MVP-ACE褰曞埗)</a>
+ <a href="https://www.cctalk.com/m/group/90268531" style="text-decoration: none" target="blank">VOL妗嗘灦瑙嗛</a>
+ <a href="http://120.48.115.252:9990" style="text-decoration: none" target="blank">瑙嗛婕旂ず鍦板潃</a>
+ </div> -->
+
+ <img class="login-bg" src="/static/login_bg.png" />
+ </div>
+</template>
+
+
+<script >
+import {
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance
+} from 'vue';
+import { useRouter, useRoute } from 'vue-router';
+import store from '../store/index';
+import http from '@/../src/api/http.js';
+export default defineComponent({
+ setup(props, context) {
+ store.commit('clearUserInfo', '');
+ const loading = ref(false);
+ const codeImgSrc = ref('');
+ const userInfo = reactive({
+ userName: 'admin',
+ password: '123456',
+ verificationCode: '1234',
+ UUID: undefined
+ });
+
+ const getVierificationCode = () => {
+ http.get('/api/User/getVierificationCode').then((x) => {
+ codeImgSrc.value = 'data:image/png;base64,' + x.img;
+ userInfo.UUID = x.uuid;
+ });
+ };
+ getVierificationCode();
+
+ let appContext = getCurrentInstance().appContext;
+ let $message = appContext.config.globalProperties.$message;
+ let router = useRouter();
+
+ const login = () => {
+ if (!userInfo.userName) return $message.error('璇疯緭鍏ョ敤鎴峰悕');
+ if (!userInfo.password) return $message.error('璇疯緭鍏ュ瘑鐮�');
+ if (!userInfo.verificationCode) {
+ return $message.error('璇疯緭鍏ラ獙璇佺爜');
+ }
+ loading.value = true;
+ http.post('/api/User/login', userInfo, '姝e湪鐧诲綍....').then((result) => {
+ if (!result.status) {
+ loading.value = false;
+ getVierificationCode();
+ return $message.error(result.message);
+ }
+ $message.success('鐧诲綍鎴愬姛,姝e湪璺宠浆!');
+ store.commit('setUserInfo', result.data);
+ router.push({ path: '/' });
+ });
+ };
+ const loginPress = (e) => {
+ if (e.keyCode == 13) {
+ login();
+ }
+ };
+ const openUrl = (url) => {
+ window.open(url, '_blank');
+ };
+ return {
+ loading,
+ codeImgSrc,
+ getVierificationCode,
+ login,
+ userInfo,
+ loginPress,
+ openUrl
+ };
+ },
+ directives: {
+ focus: {
+ inserted: function (el) {
+ el.focus();
+ }
+ }
+ }
+});
+</script>
+<style lang="less" scoped>
+.login-container {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ background: rgb(246, 247, 252);
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.login-form {
+ align-items: center;
+ width: 50%;
+ display: flex;
+ flex-direction: column;
+ // margin-right: 150px;
+ z-index: 999;
+
+ .form-user {
+ // margin: 25px 0;
+
+ .item {
+ border-radius: 5px;
+ border: 1px solid #ececec;
+ display: flex;
+ margin-bottom: 30px;
+ background: #ffff;
+ height: 45px;
+ padding-left: 20px;
+ display: flex;
+
+ .code {
+ position: relative;
+ cursor: pointer;
+ width: 74px;
+ padding: 5px 10px 0 0;
+ }
+
+ .input-icon {
+ line-height: 45px;
+ color: #7a7a7a;
+ padding-right: 20px;
+ }
+ }
+ }
+
+ input:-webkit-autofill {
+ box-shadow: 0 0 0px 1000px white inset;
+ -webkit-box-shadow: 0 0 0px 1000px white inset !important;
+ }
+
+ input {
+ background: white;
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ color: #323233;
+ line-height: inherit;
+ text-align: left;
+ border: 0;
+ outline: none;
+ font-size: 16px;
+ line-height: 20px;
+ }
+}
+
+.form-user,
+.loging-btn {
+ width: 400px;
+}
+
+.loging-btn {
+ box-shadow: 2px 4px 11px #a4c2ff;
+ margin-top: 10px;
+
+ button {
+ padding: 21px;
+ font-size: 14px !important;
+ width: 100%;
+ }
+}
+
+.login-text {
+ font-weight: bolder;
+ font-size: 20px;
+ letter-spacing: 2px;
+
+ position: relative;
+ display: flex;
+
+ .login-line {
+ z-index: -1;
+ padding: 5px;
+ position: relative;
+ top: -8px;
+ width: 100%;
+ background-image: linear-gradient(to right, #6598ff, white);
+ }
+}
+
+.login-text-small {
+ margin-bottom: 20px;
+ font-size: 13px;
+ color: #7d7c7c;
+}
+
+.login-bg {
+ left: 0;
+ position: absolute;
+ height: 100%;
+ width: 50%;
+ z-index: 0;
+}
+
+.project-name {
+ position: absolute;
+ top: 40px;
+ left: 40px;
+ z-index: 9999;
+ font-weight: bolder;
+ background-image: linear-gradient(to right, #1850c1, #9c009c);
+ -webkit-background-clip: text;
+ color: transparent;
+ font-size: 25px;
+}
+</style>
+<style lang="less" scoped>
+.app-link {
+ // font-weight: bolder;
+ text-align: center;
+ padding-top: 5px;
+ font-size: 12px;
+ width: 400px;
+ padding-left: 40px;
+ display: flex;
+
+ a {
+ flex: 1;
+ position: relative;
+ cursor: pointer;
+ width: 70px;
+ color: #666666;
+ margin: 2px 10px 0 0;
+ }
+
+ img {
+ display: none;
+ }
+
+ a:hover {
+ color: #0545f6 !important;
+
+ img {
+ display: block;
+ position: absolute;
+ z-index: 999999999;
+ top: -130px;
+ width: 120px;
+ left: -22px;
+
+ border: 1px solid #b1b1b1;
+ }
+ }
+}
+
+.login-footer {
+ position: absolute;
+ width: 50%;
+ bottom: 0.5rem;
+ font-size: 12px;
+ text-align: center;
+ padding-bottom: 10px;
+ color: #4f4f4f;
+
+ a {
+ margin-right: 10px;
+ font-size: 12px;
+ color: #4f4f4f;
+ }
+
+ div {
+ margin-bottom: 5px;
+ }
+
+ a:hover {
+ cursor: pointer;
+ color: #0540e3 !important;
+ }
+}
+
+.account-info {
+ font-size: 12px;
+ color: #636363;
+ margin-top: 15px;
+}
+</style>
+
+<style lang="less" scoped>
+@media screen and (max-width: 700px) {
+
+ .login-bg,
+ .account-info,
+ .app-link,
+ .login-footer,
+ .project-name {
+ display: none;
+ }
+
+ .login-container {
+ padding: 2rem;
+ justify-content: center;
+ }
+
+ .login-form {
+ width: 100%;
+ }
+
+ .form-user,
+ .loging-btn {
+ width: 100%;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/Dt_needBarcode.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/Dt_needBarcode.vue"
new file mode 100644
index 0000000..287deaa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/Dt_needBarcode.vue"
@@ -0,0 +1,93 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/basicinfo/Dt_needBarcode.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'areaID',
+ footer: "Foots",
+ cnName: '鍦ㄩ�旀暟鎹�',
+ name: 'basicinfo/dt_needBarcode',
+ url: "/dt_needBarcode/",
+ sortName: "AreaCode"
+ });
+ const editFormFields = ref({
+ "id":"",
+ "toArea": "",
+ "fromArea": "",
+ "barcodeType": "",
+ "productLine": "",
+ "inLineNum": "",
+ "cacheNum":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍦ㄩ�旀暟閲�", "field": "inLineNum", type: "text" },
+ { "title": "鍙紦瀛樻暟閲�", "field": "cacheNum", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({
+ "iD":"",
+ "toArea": "",
+ "fromArea": "",
+ "barcodeType": "",
+ "productLine": "",
+ "inLineNum": "",
+ "cacheNum":""
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "鐩爣搴撳尯", "field": "toArea", type: "text" },
+ { "title": "鏉ユ簮搴撳尯", "field": "fromArea", type: "text" },
+ { "title": "鎵樼洏绫诲瀷", "field": "barcodeType", type: "text" },
+ ],
+ [
+ { "title": "鎵�灞炰骇绾�", "field": "productLine", type: "text" },
+ { "title": "鍦ㄩ�旀暟閲�", "field": "inLineNum", type: "text" },
+ { "title": "鍙紦瀛樻暟閲�", "field": "cacheNum", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'iD', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'toArea', title: '鐩爣搴撳尯', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
+ { field: 'fromArea', title: '鏉ユ簮搴撳尯', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'barcodeType', title: '鎵樼洏绫诲瀷', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'productLine', title: '鎵�灞炰骇绾�', type: 'string', sort: true, width: 110, align: 'left',bind: { key: "ProductionLine", data: [] } },
+ { field: 'inLineNum', title: '鍦ㄩ�旀暟閲�', type: 'int', sort: true, width: 110, align: 'left' },
+ { field: 'cacheNum', title: '鍙紦瀛樻暟閲�', type: 'int', sort: true, width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/router.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/router.vue"
new file mode 100644
index 0000000..319e35e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/router.vue"
@@ -0,0 +1,265 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/basicinfo/router.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "id",
+ footer: "Foots",
+ cnName: "璺敱閰嶇疆淇℃伅",
+ name: "router",
+ url: "/Router/",
+ sortName: "createDate",
+ });
+ const editFormFields = ref({
+ // name: "",
+ // jobGroup: "",
+ // assemblyName: "",
+ // className: "",
+ // intervalSecond: "",
+ // beginTime: "",
+ // endTime: "",
+ // remark: "",
+ });
+ const editFormOptions = ref([
+ // [
+ // {
+ // title: "浠诲姟鍚嶇О",
+ // required: true,
+ // field: "name",
+ // type: "string",
+ // },
+ // {
+ // title: "浠诲姟鍒嗙粍",
+ // required: true,
+ // field: "jobGroup",
+ // type: "select",
+ // dataKey: "deviceType",
+ // data: [],
+ // },
+ // {
+ // title: "绋嬪簭闆嗗悕绉�",
+ // required: true,
+ // field: "assemblyName",
+ // type: "string",
+ // type: "select",
+ // dataKey: "jobAssembly",
+ // data: [],
+ // },
+ // {
+ // title: "浠诲姟鎵�鍦ㄧ被",
+ // required: true,
+ // field: "className",
+ // type: "string",
+ // type: "select",
+ // dataKey: "jobClassName",
+ // data: [],
+ // },
+ // ],
+ // [
+ // {
+ // title: "闂撮殧鏃堕棿",
+ // required: true,
+ // field: "intervalSecond",
+ // type: "number",
+ // },
+ // {
+ // title: "寮�濮嬫椂闂�",
+ // field: "beginTime",
+ // type: "datetime",
+ // },
+ // {
+ // title: "缁撴潫鏃堕棿",
+ // field: "endTime",
+ // type: "datetime",
+ // },
+ // {
+ // title: "澶囨敞",
+ // field: "remark",
+ // type: "string",
+ // },
+ // ],
+ ]);
+ const searchFormFields = ref({
+ startPosi: "",
+ nextPosi: "",
+ // assemblyName: "",
+ // className: "",
+ });
+ const searchFormOptions = ref([
+ [
+ {
+ title: "璧风偣浣嶇疆",
+ field: "startPosi",
+ type: "like",
+ },
+ {
+ title: "缁堢偣浣嶇疆",
+ field: "nextPosi",
+ type: "like",
+ },
+ // {
+ // title: "绋嬪簭闆嗗悕绉�",
+ // field: "assemblyName",
+ // type: "like",
+ // },
+ // {
+ // title: "浠诲姟鎵�鍦ㄧ被",
+ // field: "className",
+ // type: "like",
+ // },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "startPosi",
+ title: "璧风偣浣嶇疆",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "nextPosi",
+ title: "缁堢偣浣嶇疆",
+ type: "string",
+ width: 180,
+ align: "left",
+ },
+ {
+ field: "inOutType",
+ title: "璺敱绫诲瀷",
+ type: "string",
+ width: 180,
+ align: "left",
+ },
+ {
+ field: "childPosi",
+ title: "瀛愪綅缃�",
+ type: "string",
+ width: 200,
+ align: "left",
+ },
+ {
+ field: "childPosiDeviceCode",
+ title: "瀛愪綅缃墍灞炶澶�",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "srmRow",
+ title: "鍫嗗灈鏈哄彇璐�/鏀捐揣琛�",
+ type: "int",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "srmColumn",
+ title: "鍫嗗灈鏈哄彇璐�/鏀捐揣鍒�",
+ type: "int",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "srmLayer",
+ title: "鍫嗗灈鏈哄彇璐�/鏀捐揣灞�",
+ type: "int",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "depth",
+ title: "娣卞害",
+ type: "int",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "isEnd",
+ title: "鏄惁鏄渶缁堢偣",
+ type: "bool",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/builder/coder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/builder/coder.vue"
new file mode 100644
index 0000000..ea9b52a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/builder/coder.vue"
@@ -0,0 +1,658 @@
+<template>
+ <div class="builder-container">
+ <vol-box
+ ref="add"
+ :width="850"
+ :height="450"
+ title="鏂板缓閰嶇疆淇℃伅"
+ padding="10px"
+ v-model="addModel"
+ >
+ <div style="padding: 30px 30px 10px 34px">
+ <el-alert type="warning" :closable="false">
+ 1銆佸鏋滃彧鏄垱寤虹洰褰曪紝鐖剁骇id濉�0,鍏朵粬闅忎究濉啓;
+ <br />
+ 2銆佸鏋滄槸鐢熸垚浠g爜锛岀埗绾d濉啓銆愪唬鐮佺敓鎴愰厤缃�戝垪琛ㄩ〉闈㈢殑id
+ </el-alert>
+ </div>
+ <div class="addModel" style="padding-right: 30px">
+ <vol-form
+ ref="addForm"
+ :formRules="addOptions"
+ :formFields="layOutOptins.fields"
+ >
+ </vol-form>
+ </div>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="small" @click="add"
+ ><i class="el-icon-plus"></i> 纭� 瀹�</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+ <div class="builder-left">
+ <div class="module-name">浠g爜鐢熸垚閰嶇疆</div>
+ <div class="builder-tree">
+ <el-scrollbar style="height: 100%; width: 200px">
+ <!-- :onOpenChange="onOpenChange" -->
+ <VolMenu :list="tree" :onSelect="onSelect"></VolMenu>
+ </el-scrollbar>
+ </div>
+ </div>
+ <div class="builder-content">
+ <div style="height: 100%">
+ <el-scrollbar style="height: 100%">
+ <div class="coder-container">
+ <div class="coder-item" style="padding-top: 7px">
+ <VolHeader icon="ios-chatbubbles" text="浠g爜鐢熸垚鍣�">
+ <template #content>
+ <div style="color: red; font-size: 13px">
+ 鍒犻櫎宸︿晶閰嶇疆鑿滃崟:鍒犻櫎琛�->淇濆瓨->鍒犻櫎鑿滃崟
+ </div>
+ </template>
+ <div class="action">
+ <span @click="save"> <i class="el-icon-check"></i>淇濆瓨 </span>
+ <span @click="addVisible()">
+ <i class="el-icon-plus"></i>鏂板缓
+ </span>
+ <span @click="ceateVuePage(0)">
+ <i class="el-icon-document"></i>鐢熸垚Vue椤甸潰
+ </span>
+ <!-- <span @click="ceateVuePage(1)">
+ <i class="el-icon-document"></i>鐢熸垚app椤甸潰
+ </span> -->
+ <span @click="ceateModel">
+ <i class="el-icon-tickets"></i>鐢熸垚Model
+ </span>
+ <span @click="createService">
+ <i class="el-icon-document"></i>鐢熸垚涓氬姟绫�
+ </span>
+ <span @click="delTree">
+ <i class="el-icon-delete"></i>鍒犻櫎鑿滃崟
+ </span>
+ </div>
+ </VolHeader>
+ <div class="config">
+ <vol-form
+ :label-width="90"
+ ref="form"
+ :formRules="layOutOptins.options"
+ :formFields="layOutOptins.fields"
+ ></vol-form>
+ </div>
+ </div>
+ <el-alert type="warning" :closable="false">
+ 1銆佸鏋滈渶瑕佷慨鏀硅〃缁撴瀯锛岃鍦ㄦ暟鎹簱淇敼锛屽啀鐐瑰悓姝ヨ〃缁撴瀯->鐢熸垚vue椤甸潰->鐢熸垚model銆�
+ 2銆佷慨鏀圭紪杈戣鍚庨渶瑕佺偣鍑荤敓鎴恗odel銆佺敓鎴恦ue椤甸潰
+ </el-alert>
+ <div class="coder-item">
+ <VolHeader
+ icon="md-podium"
+ style="border-bottom: 0"
+ text="琛ㄧ粨鏋�"
+ >
+ <template #content>
+ <div style="color: red; font-size: 13px">
+ 鏁版嵁搴撹〃缁撴瀯鍙戠敓鍙樺寲鏃惰鐐广�愬悓姝ヨ〃缁撴瀯銆�
+ </div></template
+ >
+
+ <div class="action">
+ <span
+ style="color: rgb(23, 156, 216)"
+ class="ivu-icon ivu-icon-ios-folder"
+ @click="help"
+ >浠g爜鐢熸垚鍣ㄥ弬鏁版枃妗�</span
+ >
+ <span @click="delRow" class="ivu-icon ivu-icon-md-close"
+ >鍒犻櫎琛屾暟鎹�</span
+ >
+ <span @click="syncTable" class="ivu-icon ivu-icon-md-sync"
+ >鍚屾琛ㄧ粨鏋�</span
+ >
+ </div>
+ </VolHeader>
+
+ <div class="grid-container" style="padding-bottom: 20px">
+ <vol-table
+ ref="table"
+ :paginationHide="true"
+ :tableData="data"
+ :height="tableHeight"
+ :columns="layOutOptins.columns"
+ :color="false"
+ :index="true"
+ :allowEmpty="true"
+ :clickEdit="true"
+ ></vol-table>
+ </div>
+ </div>
+ </div>
+ </el-scrollbar>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import builderData from './builderData';
+import VolForm from '@/components/basic/VolForm.vue';
+import VolTable from '@/components/basic/VolTable.vue';
+import VolBox from '@/components/basic/VolBox.vue';
+import VolHeader from '@/components/basic/VolHeader.vue';
+import VolMenu from '@/components/basic/VolElementMenu.vue';
+export default {
+ components: {
+ VolForm: VolForm,
+ VolTable: VolTable,
+ VolBox: VolBox,
+ VolHeader: VolHeader,
+ VolMenu
+ },
+ data() {
+ return {
+ more: {
+ addChild: 'addChild',
+ ceateController: 'ceateController',
+ addRow: 'addRow',
+ delRow: 'delRow',
+ delTree: 'delTree'
+ },
+ addModel: false,
+ helpModel: false,
+ tableHeight: 500,
+ addOptions: builderData.form.addOptions,
+ layOutOptins: {
+ fields: builderData.form.fields,
+ options: builderData.form.options,
+ columns: builderData.columns
+ },
+ tableInfo: null,
+ data: [],
+ tree: []
+ };
+ },
+ watch: {
+ 'layOutOptins.fields.vuePath'(val) {
+ localStorage.setItem('vuePath', val);
+ },
+ deep: true
+ //localStorage.setItem("vuePath", this.layOutOptins.fields.vuePath || "");
+ },
+ methods: {
+ changeMore(funName) {
+ this[funName]();
+ },
+ help() {
+ window.open('http://v2.volcore.xyz/document/coder');
+ // this.helpModel = true;
+ },
+ addVisible(pid) {
+ this.addModel = true;
+ this.$refs.form.reset();
+ this.data.splice(0);
+ if (pid) {
+ this.layOutOptins.fields.parentId = pid;
+ }
+ },
+ delTree() {
+ let tableId = this.layOutOptins.fields.table_Id;
+ if (!tableId) return this.$message.error('璇烽�夋嫨鑺傜偣');
+ let tigger = false;
+ this.$confirm('鍒犻櫎璀﹀憡?', '纭瑕佸垹闄ゅ悧', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ if (tigger) return;
+ tigger = true;
+ this.http
+ .post('/api/builder/delTree?table_Id=' + tableId, {}, true)
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.error('鍒犻櫎鎴愬姛,璇峰埛鏂伴〉闈�');
+ // for (let index = 0; index < this.tree.length; index++) {
+ // if (this.tree[index].id == tableId) {
+ // this.tree.splice(index, 1);
+ // }
+ // }
+ });
+ });
+ },
+ add() {
+ this.$refs.form.validate(() => {
+ // this.layOutOptins.fields.tableName =
+ // this.layOutOptins.fields.tableName.slice(0, 1).toUpperCase() +
+ // this.layOutOptins.fields.tableName.slice(1);
+ if (!this.layOutOptins.fields.tableTrueName) {
+ this.layOutOptins.fields.tableTrueName = this.layOutOptins.fields.tableName;
+ }
+
+ let queryParam =
+ 'parentId=' +
+ this.layOutOptins.fields.parentId +
+ '&tableName=' +
+ this.layOutOptins.fields.tableName +
+ '&columnCNName=' +
+ this.layOutOptins.fields.columnCNName +
+ '&nameSpace=' +
+ this.layOutOptins.fields.namespace +
+ '&foldername=' +
+ this.layOutOptins.fields.folderName +
+ '&isTreeLoad=false';
+ this.http
+ .post('/api/builder/LoadTableInfo?' + queryParam, {}, true)
+ .then((x) => {
+ if (!x.status) {
+ this.$message.error(x.message);
+ return;
+ }
+ let hasTree = this.tree.some((t) => {
+ return t.id == x.data.table_Id;
+ });
+ if (!hasTree) {
+ this.tree.push({
+ id: x.data.table_Id,
+ pId: x.data.parentId,
+ parentId: x.data.parentId,
+ name: x.data.columnCNName,
+ orderNo: x.data.orderNo
+ });
+ }
+ if (!x.data.tableTrueName) {
+ x.data.tableTrueName = x.data.tableName;
+ }
+ this.addModel = false;
+ this.tableInfo = x.data;
+ this.$refs.form.reset(x.data);
+ this.data = x.data.tableColumns;
+ });
+ });
+ },
+ addChild() {
+ // this.$message.info("寮�鍙戜腑");
+ let id = this.layOutOptins.fields.table_Id;
+ if (!id) {
+ return this.$message.error('璇烽�変腑鑺傜偣');
+ }
+ this.addVisible(id);
+ },
+ addRow() {
+ this.data.push({});
+ },
+ delRow() {
+ let tigger = false;
+ this.$confirm('鍒犻櫎璀﹀憡?', '纭瑕佸垹闄ら�夋嫨鐨勬暟鎹悧', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ if (tigger) return;
+ tigger = true;
+ this.$refs.table.delRow();
+ });
+ },
+ validateTableInfo(callback) {
+ this.$refs.form.validate(() => {
+ if (!this.tableInfo) {
+ this.$message.error('璇峰厛鍔犺浇鏁版嵁');
+ return false;
+ }
+ if (this.data && this.data.length > 0) {
+ let keyInfo = this.data.find((x) => {
+ return x.isKey;
+ });
+ if (!keyInfo) {
+ this.$message.error('璇峰嬀閫夎缃富閿�');
+ return false;
+ }
+ if (keyInfo.isNull == 1) {
+ this.$message.error('涓婚敭銆愬彲涓虹┖銆戝繀椤昏缃负鍚�');
+ return false;
+ }
+ if (
+ keyInfo.columnType != 'int' &&
+ keyInfo.columnType != 'bigint' &&
+ !this.layOutOptins.fields.sortName
+ ) {
+ this.$message.error('涓婚敭闈炶嚜澧炵被鍨�,璇疯缃笂闈㈣〃鍗曠殑銆愭帓搴忓瓧娈点��');
+ return false;
+ }
+ }
+
+ for (const key in this.tableInfo) {
+ if (this.layOutOptins.fields.hasOwnProperty(key)) {
+ let newVal = this.layOutOptins.fields[key];
+ this.tableInfo[key] = newVal;
+ }
+ }
+ callback();
+ });
+ },
+ ceateVuePage(isApp) {
+ this.validateTableInfo(() => {
+ let vuePath;
+ if (!isApp) {
+ vuePath = localStorage.getItem('vuePath');
+ if (!vuePath) {
+ return this.$message.error(
+ '璇峰厛璁剧疆Vue椤圭洰瀵瑰簲Views鐨勭粷瀵硅矾寰�,鐒跺悗鍐嶄繚瀛�!'
+ );
+ }
+ } else {
+ vuePath = localStorage.getItem('appPath');
+ if (!vuePath) {
+ return this.$message.error('璇峰厛璁剧疆app璺緞,鐒跺悗鍐嶄繚瀛�!');
+ }
+ }
+
+ let url = `/api/builder/createVuePage?vuePath=${vuePath}&v3=1&app=${isApp ||
+ 0}`;
+ this.http.post(url, this.tableInfo, true).then((x) => {
+ this.$Message.info(x);
+ });
+ });
+ },
+ createService() {
+ this.validateTableInfo(() => {
+ let queryParam =
+ 'tableName=' +
+ this.layOutOptins.fields.tableName +
+ '&nameSpace=' +
+ this.layOutOptins.fields.namespace +
+ '&foldername=' +
+ this.layOutOptins.fields.folderName;
+ this.http
+ .post(
+ '/api/builder/CreateServices?' + queryParam,
+ this.tableInfo,
+ true
+ )
+ .then((x) => {
+ this.$Message.info(x);
+ });
+ });
+ },
+ ceateModel() {
+ this.validateTableInfo(() => {
+ this.http
+ .post('/api/builder/CreateModel', this.tableInfo, true)
+ .then((x) => {
+ this.$message.info(x);
+ });
+ });
+ },
+ syncTable() {
+ if (!this.layOutOptins.fields.tableName)
+ return this.$Message.error('璇烽�夋ā鍧�');
+ this.http
+ .post(
+ '/api/builder/syncTable?tableName=' +
+ this.layOutOptins.fields.tableName,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) {
+ return this.$Message.error(x.message);
+ }
+ this.$Message.info(x.message);
+ this.loadTableInfo(this.layOutOptins.fields.table_Id);
+ });
+ },
+ ceateApiController() {},
+ ceateController() {},
+ checkSortName() {},
+ save() {
+ localStorage.setItem('vuePath', this.layOutOptins.fields.vuePath || '');
+ localStorage.setItem('appPath', this.layOutOptins.fields.appPath || '');
+
+ if (
+ this.tableInfo &&
+ this.tableInfo.tableColumns &&
+ this.tableInfo.tableColumns.length &&
+ this.tableInfo.tableColumns.filter((x) => {
+ return x.isKey == 1;
+ }).length > 1
+ ) {
+ return this.$Message.error('琛ㄧ粨鏋勫彧鑳藉嬀閫変竴涓富閿瓧娈�');
+ }
+ this.validateTableInfo(() => {
+ this.http.post('/api/builder/Save', this.tableInfo, true).then((x) => {
+ if (!x.status) {
+ this.$Message.error(x.message);
+ return;
+ }
+ this.$Message.info(x.message);
+ this.tree.forEach((x) => {
+ if (x.id == this.layOutOptins.fields.table_Id) {
+ x.name = this.layOutOptins.fields.columnCNName;
+ x.parentId = this.layOutOptins.fields.parentId;
+ }
+ });
+ this.tableInfo = x.data;
+ x.data.vuePath = this.layOutOptins.fields.vuePath;
+ x.data.appPath = this.layOutOptins.fields.appPath;
+ this.$refs.form.reset(x.data);
+ // this.layOutOptins.fields.vuePath = localStorage.getItem("vuePath");
+ this.data = x.data.tableColumns;
+ // this.$Message.info(x);
+ });
+ });
+ },
+ onSelect(node) {
+ this.loadTableInfo(node);
+ },
+ onOpenChange(node) {
+ if (node.length == 0) return;
+ this.loadTableInfo(node.length == 1 ? node[0] : node[node.length - 1]);
+ },
+ loadTableInfo(id) {
+ // localStorage.setItem("vuePath", this.layOutOptins.fields.vuePath || "");
+ this.http
+ .post(
+ '/api/builder/LoadTableInfo?table_Id=' + id + '&isTreeLoad=true',
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.data.tableTrueName) {
+ x.data.tableTrueName = x.data.tableName;
+ }
+ //2021.01.09澧炲姞浠g爜鐢熸垚鍣ㄨ缃畉able鎺掑簭鍔熻兘
+ const _fields = [
+ 'sortable',
+ 'isNull',
+ 'isReadDataset',
+ 'isColumnData',
+ 'isDisplay'
+ ];
+ x.data.tableColumns.forEach((item) => {
+ for (let index = 0; index < _fields.length; index++) {
+ item[_fields[index]] = item[_fields[index]] || 0;
+ }
+ });
+ this.tableInfo = x.data;
+
+ this.$refs.form.reset(x.data);
+ this.data = x.data.tableColumns;
+ });
+ },
+ getVuePath(key) {
+ let vuePath = localStorage.getItem(key);
+ if (!vuePath || vuePath == 'null' || vuePath == 'undefined') {
+ vuePath = '';
+ }
+ return vuePath;
+ }
+ },
+ mounted() {},
+ created() {
+ let clientHeight = document.documentElement.clientHeight - 170;
+ this.tableHeight = clientHeight < 400 ? 400 : clientHeight;
+ this.http
+ .post('/api/Sys_Dictionary/GetBuilderDictionary', {}, true)
+ .then((dic) => {
+ let column = this.layOutOptins.columns.find((x) => {
+ return x.field == 'dropNo';
+ });
+ if (!column) return;
+
+ let data = [{ key: '', value: '' }];
+ for (let index = 0; index < dic.length; index++) {
+ data.push({ key: dic[index], value: dic[index] });
+ }
+
+ column.bind.data = data;
+ });
+
+ builderData.form.fields.vuePath = this.getVuePath('vuePath');
+ builderData.form.fields.appPath = this.getVuePath('appPath');
+ this.http.post('/api/builder/GetTableTree', {}, false).then((x) => {
+ this.tree = JSON.parse(x.list);
+ if (!x.nameSpace) {
+ return this.$message.error(
+ '鏈幏鍙栧悗鍙伴」鐩被搴撴墍鍦ㄥ懡鍚嶇┖闂�,璇风‘璁ょ洰褰曟垨璋冭瘯Sys_TableInfoService绫籊etTableTree鏂规硶'
+ );
+ }
+ let nameSpace = JSON.parse(x.nameSpace);
+ let nameSpaceArr = [];
+ for (let index = 0; index < nameSpace.length; index++) {
+ nameSpaceArr.push({
+ key: nameSpace[index],
+ value: nameSpace[index]
+ });
+ }
+
+ //鍒濆鍖栭」鐩懡浠ょ┖闂�
+ this.layOutOptins.options.forEach((option) => {
+ option.forEach((item) => {
+ if (item.field == 'namespace') {
+ item.data.push(...nameSpaceArr);
+ }
+ });
+ });
+ this.addOptions.forEach((option) => {
+ option.forEach((item) => {
+ if (item.field == 'namespace') {
+ item.data.push(...nameSpaceArr);
+ }
+ });
+ });
+ });
+ }
+};
+</script>
+<style scoped>
+.builder-tree {
+ position: absolute;
+ top: 41px;
+ bottom: 0;
+}
+.builder-tree >>> .ivu-menu {
+ text-align: left;
+ width: 200px !important;
+}
+.builder-container {
+ widows: 100%;
+ /* padding: 20px; */
+ position: absolute;
+ top: 0px;
+ left: 0;
+ right: 0;
+ display: inline-block;
+ bottom: 0;
+}
+.grid-container >>> tr:hover {
+ cursor: pointer;
+}
+.builder-left {
+ position: relative;
+ width: 201px;
+ height: 100%;
+ border-right: 2px solid #dcd6d6;
+}
+.builder-content {
+ position: absolute;
+ top: 0px;
+ left: 200px;
+ display: inline-block;
+ bottom: 0;
+ right: 0px;
+}
+.builder-content .ivu-alert {
+ position: relative;
+ display: flex;
+ padding: 12px 18px 12px 38px;
+}
+.builder-content .ivu-alert-icon {
+ top: 10px;
+}
+.builder-content .action {
+ text-align: right;
+ line-height: 33px;
+ padding-right: 26px;
+}
+.builder-content .action i {
+ top: 0px;
+ position: relative;
+}
+.builder-content .action > span {
+ padding: 0px 6px;
+ font-size: 12px;
+ letter-spacing: 1px;
+ color: #5a5f5e;
+}
+.builder-content .action > span:hover {
+ cursor: pointer;
+ color: black;
+}
+.builder-content .config {
+ /* border: 1px solid #e9e8e8; */
+ padding: 15px 15px 0px 15px;
+ border-radius: 3px;
+ background: #ffffff;
+ margin-bottom: 10px;
+}
+.builder-container .config >>> .ivu-form > .ivu-form-item {
+ display: none;
+}
+.coder-container {
+ background: #eee;
+}
+.coder-container .coder-item {
+ background: white;
+ padding: 0px 15px;
+}
+.module-name {
+ color: #2d8cf0;
+ font-size: 13px;
+ line-height: 39px;
+ padding-left: 15px;
+ border: 1px solid #abdcff;
+ background-color: #f0faff;
+}
+.module-name >>> .ivu-alert-icon {
+ top: 12px;
+}
+.help {
+ margin-left: 15px;
+ top: 2px;
+ position: relative;
+ border-bottom: 1px solid;
+}
+.help:hover {
+ color: #f56c6c;
+ cursor: pointer;
+}
+.more {
+ text-align: left;
+ position: relative;
+ top: 2px;
+}
+.addModel {
+ padding: 10px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata.vue"
new file mode 100644
index 0000000..2759b12
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata.vue"
@@ -0,0 +1,258 @@
+
+<template>
+ <div id="big-data-container" class="big-data-container">
+ <div class="head">
+ <h1>澶у睆鏁版嵁缁熻鍒嗘瀽鏄剧ず</h1>
+ </div>
+ <div class="data-container">
+ <div class="data-left">
+ <div class="data-left-item">
+ <div class="title">鍟嗗搧閿�閲忓垎绫�</div>
+ <div id="chart-vleft-1" style="height: calc(100% - 30px)"></div>
+ <div class="data-foot-line"></div>
+ </div>
+ <div class="data-left-item">
+ <div class="title">鏈湀鍟嗗搧閿�閲�</div>
+ <div id="chart-vleft-3" style="height: calc(100% - 30px)"></div>
+
+ <div class="data-foot-line"></div>
+ </div>
+ <div class="data-left-item">
+ <div class="title">7鏃ヨ鍗曢攢閲�</div>
+ <div id="chart-vleft-2" style="height: calc(100% - 30px)"></div>
+ <div class="data-foot-line"></div>
+ </div>
+ </div>
+ <div class="data-center">
+ <!-- <div class="title">涓棿浣嶇疆</div> -->
+ <div class="center-top-num">
+ <div class="item">
+ <div class="text">绱閿�閲�</div>
+ <div class="num">220,000</div>
+ </div>
+ <div class="item">
+ <div class="text">绱閿�鍞噾棰�</div>
+ <div class="num">58,000,000</div>
+ </div>
+ <div class="item">
+ <div class="text">璐拱鐢ㄦ埛浜烘暟</div>
+ <div class="num">15,000</div>
+ </div>
+ <div class="data-foot-line"></div>
+ </div>
+ <div
+ class="center-top"
+ style="height: 260px; padding-top: 25px; overflow: hidden"
+ >
+ <!-- <div class="title">鐢ㄦ埛娲昏穬淇℃伅-1</div> -->
+ <div id="chart-vgauge-1" style="height: 400px"></div>
+ <!-- <iview-circle :size="200" style="padding: 8px 0;"></iview-circle> -->
+ <div class="data-foot-line"></div>
+ </div>
+ <div class="title">璁㈠崟閿�鍞粺璁�</div>
+ <div id="chart-vcenter" style="height:400px;" class="chart-vcenter"></div>
+ </div>
+ <div class="data-right">
+ <div class="data-right-item">
+ <div class="title">閿�鍞儏鍐佃蛋鍔�</div>
+ <div id="chart-vright-1" style="height: calc(100% - 30px)"></div>
+ <div class="data-foot-line"></div>
+ </div>
+ <div class="data-right-item" style="height: 220px; padding-top: 25px">
+ <!-- <div class="title">鐢ㄦ埛娲昏穬淇℃伅</div> -->
+ <!-- <iview-circle></iview-circle> -->
+ <div id="chart-vgauge-2" style="height: 300px"></div>
+ <div class="data-foot-line"></div>
+ </div>
+ <div class="data-right-item right-3">
+ <div class="title">鍟嗗搧閿�鍞帓琛�</div>
+ <div id="chart-vright-3" class="right-item">
+ <div class="item">
+ <div class="top">鎺掑悕</div>
+ <div class="pro-name">鍟嗗搧鍚嶇О</div>
+ <div class="num">閿�閲�</div>
+ <div class="num">閿�鍞噾棰�</div>
+ </div>
+ <div class="item">
+ <div class="top top-1">
+ <span>1</span>
+ </div>
+ <div class="pro-name">鍗″笣涔愰硠楸�</div>
+ <div class="num">2,200</div>
+ <div class="num">360,00</div>
+ </div>
+ <div class="item">
+ <div class="top top-2">
+ <span>2</span>
+ </div>
+ <div class="pro-name">鏄ュ鐢稵鎭�</div>
+ <div class="num">1,700</div>
+ <div class="num">24,500</div>
+ </div>
+ <div class="item">
+ <div class="top top-3">
+ <span>3</span>
+ </div>
+ <div class="pro-name">鐢峰コ鍚屾浼戦棽闉�</div>
+ <div class="num">1,120</div>
+ <div class="num">12,700</div>
+ </div>
+ </div>
+ <div class="boxfoot"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+var echarts = require("echarts");
+let $chartLeft1,
+ $chartLeft2,
+ $chartLeft3,
+ $chartCenter,
+ $chartRight1,
+ $chartGauge1,
+ $chartGauge2;
+import {
+ chartLeft1,
+ chartLeft2,
+ chartLeft3,
+ chartRight1,
+ gauge,
+} from "./bigdata/chart-options";
+// import IviewCircle from "./bigdata/IviewCircle";
+import "./bigdata/layout.less";
+export default {
+ components: {
+ // "iview-circle": IviewCircle
+ },
+ data() {
+ return {};
+ },
+ created() {
+ console.log("chart");
+ },
+ mounted() {
+ if ($chartLeft1) {
+ $chartLeft1.dispose();
+ $chartLeft2.dispose();
+ $chartLeft3.dispose();
+ $chartCenter.dispose();
+ $chartRight1.dispose();
+ $chartGauge1.dispose();
+ $chartGauge2.dispose();
+ }
+ $chartLeft1 = echarts.init(document.getElementById("chart-vleft-1"));
+ $chartLeft1.setOption(chartLeft1, true);
+
+ $chartLeft2 = echarts.init(document.getElementById("chart-vleft-2"));
+ $chartLeft2.setOption(chartLeft2, true);
+
+ $chartLeft3 = echarts.init(document.getElementById("chart-vleft-3"));
+ $chartLeft3.setOption(chartLeft3, true);
+
+ $chartCenter = echarts.init(document.getElementById("chart-vcenter"));
+ $chartCenter.setOption(chartRight1, true);
+
+ $chartRight1 = echarts.init(document.getElementById("chart-vright-1"));
+ $chartRight1.setOption(chartRight1, true);
+
+ $chartGauge1 = echarts.init(document.getElementById("chart-vgauge-1"));
+ $chartGauge1.setOption(gauge, true);
+
+ $chartGauge2 = echarts.init(document.getElementById("chart-vgauge-2"));
+ $chartGauge2.setOption(gauge);
+ },
+ destroyed() {
+ $chartLeft1 = null;
+ $chartLeft2 = null;
+ $chartLeft3 = null;
+ $chartCenter = null;
+ $chartRight1 = null;
+ $chartGauge1 = null;
+ $chartGauge2 = null;
+ },
+};
+</script>
+<style scoped>
+/* .chart-center {
+ display: flex;
+ border: 1px solid #0000ff;
+ height: 200px;
+ flex-direction: column;
+ margin-top: 20px;
+}
+.chart-center .item {
+ text-align: center;
+ border: 1px solid #00c1b3;
+ flex: 1;
+} */
+.right-3 {
+ display: flex;
+ flex-direction: column;
+ /* margin-top: 20px; */
+}
+
+.right-3 .right-item {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+
+.right-3 .item {
+ text-align: left;
+ border-bottom: 1px solid #549069;
+ flex: 1;
+ display: flex;
+ padding: 5px 10px;
+ margin: 0 10px;
+ font-size: 14px;
+ line-height: 30px;
+}
+
+.right-3 .item:last-child {
+ border-bottom: 0;
+}
+
+.right-3 .item > div {
+ color: white;
+}
+
+.right-3 .top {
+ width: 60px;
+ position: relative;
+}
+
+.right-3 .top span {
+ position: absolute;
+ width: 20px;
+ line-height: 20px;
+ top: 5px;
+ text-align: center;
+ border-radius: 5px;
+}
+
+.right-3 .top-1 span {
+ background: #e80d0d;
+}
+
+.right-3 .top-2 span {
+ background: #00c935;
+}
+
+.right-3 .top-3 span {
+ background: #0083f4;
+}
+
+.right-3 .num {
+ width: 88px;
+}
+
+.right-3 .pro-name {
+ flex: 1;
+}
+</style>
+
+
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/IviewCircle.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/IviewCircle.vue"
new file mode 100644
index 0000000..c166d91
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/IviewCircle.vue"
@@ -0,0 +1,102 @@
+<template>
+ <div class="demo-Circle">
+ <div style>
+ <i-circle
+ :size="size"
+ :trail-width="4"
+ :stroke-width="5"
+ :percent="75"
+ stroke-linecap="square"
+ stroke-color="#43a3fb"
+ >
+ <div class="demo-Circle-custom">
+ <h1>1500</h1>
+ <p>鏄ㄦ棩娲昏穬鐢ㄦ埛鏁伴噺</p>
+ <span>
+ 鍗犳瘮
+ <i>{{1500/20000}}%</i>
+ </span>
+ </div>
+ </i-circle>
+ </div>
+ <div style>
+ <i-circle
+ :size="size"
+ :trail-width="4"
+ :stroke-width="5"
+ :percent="75"
+ stroke-linecap="square"
+ stroke-color="#43a3fb"
+ >
+ <div class="demo-Circle-custom">
+ <h1>12000</h1>
+ <p>涓婃湀娲昏穬鐢ㄦ埛鏁伴噺</p>
+ <span>
+ 鍗犳瘮
+ <i>{{12000/150000}}%</i>
+ </span>
+ </div>
+ </i-circle>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props:{
+ size:{
+ type:Number,
+ default:150
+ }
+ }
+}
+</script>
+<style scoped>
+.demo-Circle {
+ display: flex;
+}
+.demo-Circle > div {
+ flex: 1;
+ text-align: center;
+}
+.demo-Circle > div:first-child{
+ padding-left:10%;
+}
+
+.demo-Circle > div:last-child{
+ padding-right:10%;
+}
+</style>
+<style lang="less" scoped>
+.demo-Circle-custom {
+ & h1 {
+ color:#ffffff;
+ font-size: 28px;
+ font-weight: normal;
+ }
+ & p {
+ color: #ece8e8;
+ font-size: 14px;
+ margin: 10px 0 15px;
+ }
+ & span {
+ display: block;
+ padding-top: 15px;
+ color: wheat;
+ font-size: 14px;
+ &:before {
+ content: "";
+ display: block;
+ width: 50px;
+ height: 1px;
+ margin: 0 auto;
+ background: #e0e3e6;
+ position: relative;
+ top: -15px;
+ }
+ }
+ & span i {
+ font-style: normal;
+ color: white;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/head_bg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/head_bg.png"
new file mode 100644
index 0000000..a2e45f6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/head_bg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/layout.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/layout.less"
new file mode 100644
index 0000000..3f6cffd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/layout.less"
@@ -0,0 +1,197 @@
+
+.big-data-container {
+ position: absolute;
+ overflow: hidden;
+ height: 100%;
+ width: 100%;
+ background-color: #1400a8;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 1200 800'%3E%3Cdefs%3E%3CradialGradient id='a' cx='0' cy='800' r='800' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%230e0077'/%3E%3Cstop offset='1' stop-color='%230e0077' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='b' cx='1200' cy='800' r='800' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%2314057c'/%3E%3Cstop offset='1' stop-color='%2314057c' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='c' cx='600' cy='0' r='600' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%230d0524'/%3E%3Cstop offset='1' stop-color='%230d0524' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='d' cx='600' cy='800' r='600' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%231400a8'/%3E%3Cstop offset='1' stop-color='%231400a8' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='e' cx='0' cy='0' r='800' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23000000'/%3E%3Cstop offset='1' stop-color='%23000000' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='f' cx='1200' cy='0' r='800' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23130733'/%3E%3Cstop offset='1' stop-color='%23130733' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect fill='url(%23a)' width='1200' height='800'/%3E%3Crect fill='url(%23b)' width='1200' height='800'/%3E%3Crect fill='url(%23c)' width='1200' height='800'/%3E%3Crect fill='url(%23d)' width='1200' height='800'/%3E%3Crect fill='url(%23e)' width='1200' height='800'/%3E%3Crect fill='url(%23f)' width='1200' height='800'/%3E%3C/svg%3E");
+ background-attachment: fixed;
+ background-size: cover;
+ .head {
+ height: 75px;
+ /* height: 1.05rem; */
+ background: url(./head_bg.png) no-repeat center center;
+ background-size: 100% 100%;
+ position: relative;
+ z-index: 100;
+ }
+}
+
+.head h1 {
+ margin: 0;
+ color: #fff;
+ text-align: center;
+ /* font-size: .4rem; */
+ /* line-height: .8rem; */
+ line-height: 71px;
+}
+
+.data-container {
+ /* margin: 5px 15px;
+ height:100%; */
+
+ margin: 0px 15px;
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 76px;
+ bottom: 0;
+}
+
+.data-container > div {
+ float: left;
+ /* border: 1px solid white; */
+ height: 100%;
+}
+
+.data-center {
+ padding: 0 0.9rem;
+ width: 40%;
+ display: flex;
+ flex-direction: column;
+ // .center-top{
+ // height: 210px;
+ // background: red;
+ // }
+.chart-center{
+ flex: 1;
+}
+}
+.chart-center{
+ width: 100%;
+display: flex;
+// background: white;
+}
+.data-left,
+.data-right {
+ width: 30%;
+ display: flex;
+
+ flex-direction: column;
+}
+
+.data-left-item,
+.data-right-item,.center-top,.center-top-num,.chart-center {
+ border: 1px solid rgba(25, 186, 139, 0.17);
+ padding: 0 0.2rem 0.4rem 0.15rem;
+ background: rgba(255, 255, 255, 0.04);
+ background-size: 100% auto;
+ position: relative;
+ margin-bottom: 0.15rem;
+ z-index: 10;
+}
+
+.data-foot-line {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ left: 0;
+}
+
+.data-foot-line:before,
+.data-foot-line:after {
+ position: absolute;
+ width: 10px;
+ height:10px;
+ content: "";
+ border-bottom: 2px solid #02a6b5;
+ bottom: 0;
+}
+
+.boxall:before,
+.data-foot-line:before {
+ border-left: 2px solid #02a6b5;
+ left: 0;
+}
+
+.boxall:after,
+.data-foot-line:after {
+ border-right: 2px solid #02a6b5;
+ right: 0;
+}
+
+.boxall:before,
+.boxall:after {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ content: "";
+ border-top: 2px solid #02a6b5;
+ top: 0;
+}
+
+.data-left-item:before,
+.data-right-item:before,
+.center-top-num:before,
+.center-top:before{
+ border-left: 2px solid #02a6b5;
+ left: 0;
+ position: absolute;
+ width: 10px;
+ height:10px;
+ content: "";
+ border-top: 2px solid #02a6b5;
+ top: 0;
+}
+
+.data-left-item:after,
+.data-right-item:after,
+.center-top-num:after,
+.center-top:after {
+ border-right: 2px solid #02a6b5;
+ right: 0;
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ content: "";
+ border-top: 2px solid #02a6b5;
+ top: 0;
+}
+
+.data-left,
+.data-right {
+ /* display: flex; */
+}
+
+.data-left > .data-left-item,
+.data-right > .data-right-item {
+ flex: 1;
+ margin-bottom: 0.9rem;
+}
+
+.data-center .title,
+.data-left > .data-left-item .title,
+.data-right > .data-right-item .title {
+ /* font-size: .2rem; */
+ font-size: 1rem;
+ padding: 7px 0;
+ color: #fff;
+ text-align: center;
+ /* line-height: .5rem; */
+}
+
+.data-center .chart-center{
+ width: 100%;
+}
+
+.center-top-num{
+ height: 80px;
+ padding-top: 7px;
+ margin-bottom: 0.8rem;
+ display: flex;
+ .item{
+ flex: 1;
+ text-align: center;
+ }
+ .text{
+ color: #fcf0d8;
+ font-size: 14px;
+ }
+ .num{
+ font-size: 34px;
+ 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-weight: bold;
+ color: #67caca;
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/chart.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/chart.vue"
new file mode 100644
index 0000000..3b0695a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/chart.vue"
@@ -0,0 +1,101 @@
+<template>
+ <div class="m-charts">
+ <el-tabs
+ v-model="name"
+ @tab-click="tabClick"
+ type="border-card"
+ style="height: 100%; width: 100%; box-shadow: none"
+ >
+ <el-tab-pane name="bar">
+ <template #label>
+ <span><i class="el-icon-date"></i> 鏌辩姸鍥� </span>
+ </template>
+ <div
+ :style="{ height: heigth + 'px', width: width + 'px' }"
+ id="bar-0001"
+ ></div>
+ </el-tab-pane>
+ <el-tab-pane name="pie" :lazy="false" label="娑堟伅涓績">
+ <template #label>
+ <span><i class="el-icon-date"></i> 楗肩姸鍥� </span>
+ </template>
+ <div
+ :style="{ height: heigth + 'px', width: width + 'px' }"
+ id="pie-0001"
+ ></div>
+ </el-tab-pane>
+ <el-tab-pane name="line" :lazy="false" label="瑙掕壊绠$悊">
+ <template #label>
+ <span><i class="el-icon-date"></i> 鎶樼嚎鍥� </span>
+ </template>
+ <div
+ :style="{ height: heigth + 'px', width: width + 'px' }"
+ id="line-0001"
+ ></div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+<script>
+let echarts = require("echarts");
+import options from "./chartOptions";
+let $bar;
+let $pie;
+let $line;
+export default {
+ mounted() {
+ $bar = echarts.init(document.getElementById("bar-0001"));
+ $bar.setOption(this.options.bar);
+ },
+ created() {
+ this.heigth = document.documentElement.clientHeight - 190;
+ this.width = document.documentElement.clientWidth - 240;
+ },
+ methods: {
+ tabClick(name) {
+ if (name.props.name == "pie") {
+ if (!$pie) {
+ $pie = echarts.init(document.getElementById("pie-0001"));
+ $pie.setOption(this.options.pie);
+
+ }
+ } else if (name.props.name == "line") {
+ if (!$line) {
+ $line = echarts.init(document.getElementById("line-0001"));
+ $line.setOption(this.options.line);
+
+ }
+ }
+ },
+ },
+ data() {
+ return {
+ name: "bar",
+ heigth: 450,
+ width: 1000,
+ options: options,
+ };
+ },
+};
+</script>
+<style lang="less" scoped>
+.m-charts {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #f1f1f1;
+ margin: auto 0;
+ padding: 12px;
+ .m-tabs {
+ background: white;
+ }
+}
+.m-charts ::v-deep(.el-tabs__content) {
+ height: calc(100% - 45px);
+}
+.m-charts ::v-deep(.el-tab-pane) {
+ height: 100%;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/flex.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/flex.vue"
new file mode 100644
index 0000000..e94823a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/flex.vue"
@@ -0,0 +1,386 @@
+<template>
+ <div class="home-contianer">
+ <div>
+ <div class="order-title">
+ <h2>璁㈠崟缁熻</h2>
+ </div>
+ <div
+ data-v-542f4644
+ class="ivu-row"
+ style="padding: 15px; background: white"
+ >
+ <div
+ v-for="item in topColor"
+ :key="item.name"
+ class="ivu-col ivu-col-span-6"
+ style="padding-left: 8px; padding-right: 8px"
+ >
+ <div
+ data-v-542f4644
+ class="ivu-card"
+ :style="{ background: item.background }"
+ >
+ <div class="icon-left">
+ <i :class="item.icon" />
+ </div>
+ <div class="ivu-card-body">
+ <div class="demo-color-name">{{ item.name }}</div>
+ <div class="demo-color-desc">#{{ item.qty }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="numbers">
+
+ <div class="item" v-for="index in 8" :key="index">
+ <div class="number">
+ <!-- {{value}} -->
+ {{index * 1000}}
+ </div>
+ <div>Order total</div>
+ </div>
+ </div>
+
+ <div class="order-title">
+ <h2>璁㈠崟鏌ヨ</h2>
+ </div>
+
+ <div class="order-range">
+ <div
+ class="order-item"
+ v-for="(item, index) in totalRange"
+ :key="index"
+ >
+ <div class="total">
+ <div class="number">
+ {{item.qty}}
+ </div>
+ </div>
+ <div class="name">{{ titleLeft + item.name }}</div>
+ <div class="date">
+ {{ beginDate.replace(/-/g, ".") }} --
+ {{ endDate.replace(/-/g, ".") }}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+
+
+export default {
+ data() {
+ return {
+ beginDate: "",
+ endDate: "",
+ n: 90,
+ topColor: [
+ {
+ name: "璁㈠崟鏁�",
+ desc: "#205",
+ background: "rgb(25, 190, 107)",
+ icon: "el-icon-shopping-cart-full",
+ qty: 6000,
+ key: "total",
+ },
+ {
+ name: "宸蹭粯娆�",
+ desc: "#412",
+ background: "rgb(45, 183, 245)",
+ icon: "el-icon-wallet",
+ qty: 7100,
+ key: "total",
+ },
+ {
+ name: "寰呭彂璐�",
+ desc: "#412",
+ background: "#f2b458",
+ icon: "el-icon-shopping-cart-1",
+ qty: 500,
+ key: "hasPay",
+ },
+ {
+ name: "閰嶉�佷腑",
+ desc: "#412",
+ background: "rgb(84, 110, 122)",
+ icon: "el-icon-shopping-cart-2",
+ qty: 800,
+ key: "notShip",
+ },
+ {
+ name: "宸插畬鎴�",
+ desc: "#412",
+ background: "rgb(45, 183, 245)",
+ icon: "el-icon-set-up",
+ qty: 1880,
+ key: "completed",
+ },
+ {
+ name: "閫�璐ц鍗�",
+ desc: "#12",
+ background: "rgb(237, 64, 20)",
+ icon: "el-icon-data-analysis",
+ qty: 2290,
+ key: "refund",
+ },
+ ],
+ totalRange: [
+ {
+ name: "璁㈠崟鏁�",
+ desc: "#205",
+ background: "rgb(25, 190, 107)",
+ icon: "ios-cart",
+ qty: 1290,
+ key: "total",
+ },
+ {
+ name: "宸蹭粯娆�",
+ desc: "#412",
+ background: "rgb(45, 183, 245)",
+ icon: "ios-cash",
+ qty: 3450,
+ key: "total",
+ },
+ {
+ name: "寰呭彂璐�",
+ desc: "#412",
+ background: "rgb(255, 153, 0)",
+ icon: "md-bus",
+ qty: 200,
+ key: "hasPay",
+ },
+ {
+ name: "閰嶉�佷腑",
+ desc: "#412",
+ background: " rgb(84, 110, 122)",
+ icon: "md-pin",
+ qty: 7000,
+ key: "notShip",
+ },
+ {
+ name: "浜ゆ槗瀹屾垚",
+ desc: "#412",
+ background: "rgb(45, 183, 245)",
+ icon: "ios-help-buoy",
+ qty: 8900,
+ key: "completed",
+ },
+ {
+ name: "閫�璐ц鍗�",
+ desc: "#12",
+ background: "rgb(237, 64, 20)",
+ icon: "ios-navigate",
+ qty: 2450,
+ key: "refund",
+ },
+ ],
+ value1: "1",
+ titleLeft: "",
+ dateNow: "",
+ };
+ },
+ methods: {
+ getDate() {
+ var date = new Date();
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ var day = date.getDate();
+ var hour = date.getHours();
+ var minutes = date.getMinutes();
+ var second = date.getSeconds();
+ this.beginDate =
+ year +
+ "-" +
+ (month < 10 ? "0" + month : month) +
+ "-" +
+ (day < 10 ? "0" + day : day);
+ this.endDate = this.beginDate;
+ this.dateNow = this.beginDate;
+ },
+ search() {
+ if (this.dateNow == this.beginDate && this.dateNow == this.endDate) {
+ this.titleLeft = "浠婃棩";
+ } else {
+ this.titleLeft = "褰撴湡";
+ }
+ },
+ },
+ created() {
+ this.getDate();
+ },
+ mounted() {},
+};
+</script>
+<style scoped>
+.home-contianer {
+ background: #efefef;
+ width: 100%;
+ height: 100%;
+ /* padding: 20px; */
+}
+
+.ivu-card-body {
+ text-align: center;
+ padding: 20px 5px;
+ /* padding-left: 80px; */
+ font-size: 16px;
+}
+.demo-color-name {
+ color: #fff;
+ font-size: 14px;
+}
+.demo-color-desc {
+ color: white;
+ /* opacity: 0.7; */
+ font-size: 20px;
+ margin-top: 2px;
+}
+.ivu-card {
+ box-shadow: 0 3px 13px rgba(117, 114, 114, 0.47);
+ display: flex;
+ position: relative;
+ padding-top: 10px;
+ border-radius: 5px;
+}
+.ivu-card .icon-left {
+ width: 85px;
+}
+.ivu-card .ivu-card-body {
+ flex: 1;
+}
+.ivu-card .icon-left {
+ text-align: center;
+ border-right: 1px solid;
+ padding: 8px 0px;
+ height: 100%;
+
+ font-size: 50px;
+ color: white;
+}
+.ivu-row {
+ border-bottom: 2px dotted #eee;
+ padding: 15px;
+ margin-bottom: 15px;
+ display: flex;
+}
+
+.ivu-row > div {
+ flex: 1;
+}
+
+.h5-desc {
+ padding-top: 10px;
+}
+</style>
+
+<style lang="less" scoped>
+.jn-day-total {
+ display: flex;
+ padding: 15px;
+ background: white;
+ .date-text {
+ line-height: 36px;
+ padding: 0 15px;
+ }
+ .date {
+ margin-right: 20px;
+ }
+ .btn {
+ margin-left: 10px;
+ }
+}
+.order-title {
+ h2 {
+ padding: 7px 15px;
+ font-weight: 500;
+ background: white;
+ border-bottom: 1px dotted #d4d4d4;
+ }
+}
+
+.order-range {
+ padding: 0 15px;
+ background: white;
+ background: white;
+ display: flex;
+ // flex-direction: row-reverse;
+}
+
+.order-range .order-item {
+ box-shadow: 0 3px 13px rgba(117, 114, 114, 0.47);
+ flex: 1;
+ border-radius: 6px;
+ font-size: 14px;
+ text-align: center;
+ border: 1px solid #e6e6e6;
+ margin: 7px;
+}
+
+.order-range .total {
+ color: white;
+ font-size: 50px;
+ font-weight: bold;
+ line-height: 100px;
+ background: #55ce80;
+ font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
+ "Microsoft YaHei", "寰蒋闆呴粦", Arial, sans-serif;
+}
+.order-range .number {
+ transition: transform 0.8s;
+}
+.order-range .number:hover {
+ cursor: pointer;
+ transform: scale(1.2);
+}
+.order-range .name {
+ font-size: 20px;
+ padding: 10px;
+}
+
+.order-range .date {
+ padding: 1px 0 20px 0;
+ color: #9e9e9e;
+ font-size: 13px;
+}
+</style>
+
+
+<style lang="less" scoped>
+.numbers {
+ margin-bottom: 15px;
+ border-radius: 5px;
+ border: 1px solid #eaeaea;
+ background: white;
+ display: flex;
+
+ padding: 20px 0px;
+ .item {
+ flex: 1;
+ text-align: center;
+ border-right: 1px solid #e5e5e5;
+ }
+ .item > 銆�div:first-child {
+ word-break: break-all;
+ color: #282727;
+ font-size: 30px;
+ // padding-bottom: 12px;
+ }
+ .item > 銆�div:last-child {
+ font-size: 13px;
+ color: #777;
+ }
+ .item:last-child {
+ border-right: none;
+ }
+ .number {
+ cursor: pointer;
+ transition: transform 0.8s;
+ }
+ .number:hover {
+ transform: scale(1.2);
+ color: #03c10b !important;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/formChart.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/formChart.vue"
new file mode 100644
index 0000000..25d4f10
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/charts/formChart.vue"
@@ -0,0 +1,118 @@
+<template>
+ <div class="c-container">
+ <div class="item">
+ <div class="left">
+ <VolHeader
+ icon="md-apps"
+ text="鏌辩姸鍥�"
+ style="padding-left: 10px; margin-bottom: 5px"
+ ></VolHeader>
+ <div style="height: calc(100% - 45px)" :id="bar"></div>
+ </div>
+ <div class="right">
+ <VolHeader
+ icon="md-apps"
+ text="鍩虹琛ㄥ崟"
+ style="padding-left: 10px; margin-bottom: 20px"
+ ></VolHeader>
+ <VolForm
+ style="padding-right: 30px"
+ ref="myform1"
+ :loadKey="true"
+ :label-width="80"
+ :formFields="formFields1"
+ :formRules="formRules1"
+ ></VolForm>
+ </div>
+ </div>
+
+ <div class="item">
+ <div class="left">
+ <VolHeader
+ icon="md-apps"
+ text="琛ㄥ崟灞炴�у瓧娈靛彧璇�"
+ style="padding-left: 10px; margin-bottom: 20px"
+ ></VolHeader>
+ <VolForm
+ style="padding-right: 30px"
+ ref="myform1"
+ :loadKey="true"
+ :formFields="formFields2"
+ :formRules="formRules2"
+ ></VolForm>
+ </div>
+ <div class="right">
+ <VolHeader
+ icon="md-apps"
+ text="楗肩姸鍥捐〃"
+ style="padding-left: 10px"
+ ></VolHeader>
+ <div style="height: calc(100% - 30px)" :id="pie"></div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import VolHeader from '@/components/basic/VolHeader.vue';
+import VolForm from '@/components/basic/VolForm.vue';
+let echarts = require('echarts');
+import options from './chartOptions';
+import {
+ formFields1,
+ formRules1,
+ formFields2,
+ formRules2
+} from './formOptions';
+export default {
+ components: { VolForm, VolHeader },
+ data() {
+ return {
+ formFields1: formFields1,
+ formRules1: formRules1,
+ formFields2: formFields2,
+ formRules2: formRules2,
+ bar: 'b-' + ~~(Math.random(10000, 100000) * 100000),
+ pie: 'p-' + ~~(Math.random(10000, 100000) * 100000),
+ options: options
+ };
+ },
+ mounted() {
+ let $bar = echarts.init(document.getElementById(this.bar));
+ $bar.setOption(this.options.bar);
+
+ this.options.pie.legend.top = 50;
+ this.options.pie.legend.right = 80;
+ this.options.pie.legend.orient = 'vertical';
+ let $pie = echarts.init(document.getElementById(this.pie));
+ $pie.setOption(this.options.pie);
+ }
+};
+</script>
+<style lang="less" scoped>
+.c-container {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ background: #f1f1f1;
+ display: flex;
+ flex-direction: column;
+ padding: 3px;
+ .item {
+ flex:1;
+ height:0;
+ display: flex;
+ > div {
+ flex: 1;
+ width: 0;
+ // margin: 10px;
+ background: #fff;
+ }
+ .left {
+ margin: 4px;
+ }
+ .right {
+ margin: 4px;
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/Message.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/Message.vue"
new file mode 100644
index 0000000..2c77447
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/Message.vue"
@@ -0,0 +1,45 @@
+<template>
+ <div class="message-container">
+ <div class="item" v-for="(item, index) in list" :key="index">
+ <div class="title">{{ item.title }}({{ item.date }})</div>
+ <div class="content">{{ item.message }}</div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ list: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ created() {
+ if (!this.list.length) {
+ this.list.push({
+ title: '娑堟伅娴嬭瘯鏍囬',
+ message: '娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭',
+ date: '2022-05-02 03:10'
+ });
+ }
+ }
+};
+</script>
+<style scoped lang="less">
+.message-container {
+ .title {
+ padding-bottom: 10px;
+ }
+ .item {
+ border-bottom: 1px solid #eee;
+ padding: 10px 20px;
+ }
+ .content {
+ color: #7e7e7e;
+ font-size: 13px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/index.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/index.less"
new file mode 100644
index 0000000..c872e91
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/index/index.less"
@@ -0,0 +1,644 @@
+.vol-aside {
+ height: 100%;
+ position: absolute;
+ float: left;
+ overflow: hidden;
+}
+
+.vol-menu {
+ border: 0 !important;
+}
+
+.vol-aside .tac {
+ text-align: left;
+}
+
+.vol-aside .header {
+ text-align: center;
+ position: absolute;
+ height: 60px;
+ position: relative;
+ line-height: 60px;
+}
+
+.vol-aside .vol-menu {
+ position: absolute;
+ width: 100%;
+ top: 60px;
+ bottom: 0;
+ background: white;
+ border-right: 1px solid #e3e3e3;
+}
+
+.vol-aside .vol-menu ::v-deep(.ivu-menu) {
+ text-align: left;
+ position: unset;
+ width: 100% !important;
+}
+
+.vol-aside .vol-menu ::v-deep(.is-horizontal) {
+ display: none !important;
+}
+
+.vol-aside .vol-menu ::v-deep(.is-vertical) {
+ width: 2px;
+ right: -1px;
+}
+
+.vol-container {
+ min-width: 800px;
+ right: 0;
+ display: inline-block;
+ position: absolute;
+ margin: 0;
+ box-sizing: border-box;
+ height: 100%;
+}
+
+.vol-container .vol-path {
+ position: relative;
+ width: 100%;
+ display: inline-block;
+ border-bottom: 1px solid #eee;
+}
+
+.vol-container .vol-path span {
+ position: relative;
+ margin-right: 10px;
+ color: #969696;
+}
+
+.vol-header {
+ height: 61px;
+ width: 100%;
+ position: relative;
+ display: flex;
+ border-bottom: 1px solid #eee;
+}
+
+.vol-main {
+ border-left: 1px solid #eee;
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ top: 95px;
+ margin: 0;
+ overflow: auto;
+}
+
+.header {
+ padding: 5px;
+}
+
+.header img {
+ height: 100%;
+ margin-right: 25px;
+}
+
+.header-info {
+ padding-right: 20px;
+ display: inline-block;
+ // position: absolute;
+ height: 100%;
+}
+
+.header-info > div {
+ float: left;
+ height: 100%;
+}
+
+.user-header {
+ background: white;
+ height: 52px;
+ width: 52px;
+ border-radius: 50%;
+ margin-right: 0px;
+ top: 4px;
+ left: 7px;
+ position: relative;
+ border: 1px solid #dfdfdf;
+}
+
+.project-name {
+ line-height: 60px;
+ padding: 0 50px 0 20px;
+ color: #fff;
+ font-size: 16px;
+ letter-spacing: 1px;
+}
+
+.header-text {
+ vertical-align: middle;
+ height: 100%;
+ // position: absolute;
+ flex: 1;
+ text-align: left;
+ font-size: 15px;
+ left: 21px;
+ line-height: 60px;
+ letter-spacing: 1px;
+}
+
+.vol-header .user {
+ text-align: left;
+ padding: 0 12px;
+ position: relative;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ // height: 60px;
+ justify-content: center;
+ span:last-child {
+ font-size: 12px;
+ }
+}
+
+.vol-header .settings {
+ padding-top: 10px;
+ color: #d4d2d2;
+}
+
+.vol-header .user span {
+ position: relative;
+}
+
+.header-info:hover {
+ cursor: pointer;
+}
+
+.header-navigation {
+ cursor: pointer;
+ box-shadow: none;
+ border-bottom: 1px solid #eee;
+ height: 34px;
+ /* overflow: hidden; */
+ line-height: 35px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: initial;
+ margin-top: -1px;
+}
+
+.el-tabs--border-card {
+ border: none;
+}
+
+.header-navigation ::v-deep(.el-tabs__item) {
+ height: 34px;
+ font-size: 14px;
+ line-height: 34px;
+ padding-bottom: 6px;
+ color: #525252 !important;
+ position: relative;
+ margin: 0 4px;
+ border: 1px solid #e2e2e2;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ // border-bottom: 0px;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-active) {
+ color: #1a81ea !important;
+}
+
+.header-navigation ::v-deep(.el-tabs__nav-prev),
+.header-navigation ::v-deep(.el-tabs__nav-next) {
+ line-height: 35px;
+ padding-left: 4px;
+}
+
+.vol-header .user span:first-child {
+ font-size: 15px;
+ font-weight: bolder;
+}
+
+.h-link {
+ line-height: 59px;
+}
+
+.h-link a {
+ font-size: 14px;
+ text-decoration: none;
+ padding: 0px 15px;
+ /* height: 60px; */
+ display: inline-block;
+}
+
+img[src=''],
+img:not([src]) {
+ opacity: 0;
+}
+
+//榛戣壊
+.vol-theme-dark {
+ .header {
+ background: #101010;
+ }
+
+ .header-text {
+ color: white;
+ }
+
+ .vol-header {
+ background-color: #272929;
+ }
+
+ .h-link a:hover {
+ background: #0c0202;
+ }
+
+ a {
+ color: #f2f2f2;
+ }
+
+ .h-link a:hover {
+ color: #dfdfdf;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link .actived a {
+ color: white !important;
+ }
+
+ .vol-header .user {
+ color: #ececec;
+ }
+
+ .vol-header .settings {
+ color: #d4d2d2;
+ }
+
+ .vol-aside .vol-menu {
+ background: black;
+ }
+}
+
+.vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) {
+ background: #2e333b;
+ color: white;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-submenu) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *) {
+ color: #d6d6d6;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item) {
+ color: #eee;
+ background: #1f1f1f;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+.vol-theme-dark .vol-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+ color: #d6d6d6;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title) {
+ background-color: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+ background-color: rgb(25, 25, 25);
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+ color: white;
+}
+
+.vol-theme-red,
+.vol-theme-red2 {
+ .vol-header {
+ background-color: rgb(237, 64, 20);
+ }
+
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .h-link a:hover {
+ background: #d71212;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-red {
+ .header {
+ background-color: rgb(237, 64, 20);
+ }
+}
+
+.vol-theme-red2 {
+ .header {
+ background-color: #a90000;
+ }
+}
+
+.vol-theme-orange,
+.vol-theme-orange2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(255, 153, 0);
+ }
+
+ .h-link a:hover {
+ background: #c97901;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-orange {
+ .header {
+ background: rgb(255, 153, 0);
+ }
+}
+
+.vol-theme-orange2 {
+ .header {
+ background-color: rgb(232, 141, 5);
+ }
+}
+
+//缁胯壊
+.vol-theme-green,
+.vol-theme-green2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(25, 190, 107);
+ }
+
+ .h-link a:hover {
+ background: #329103;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-green {
+ .header {
+ background: rgb(25, 190, 107);
+ }
+}
+
+.vol-theme-green2 {
+ .header {
+ background-color: rgb(1, 158, 79);
+ }
+}
+
+//钃濊壊
+.vol-theme-blue,
+.vol-theme-blue2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(45, 140, 240);
+ }
+
+ .h-link a:hover {
+ background: #0170e3;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-blue {
+ .header {
+ background-color: rgb(45, 140, 240);
+ }
+}
+
+.vol-theme-blue2 {
+ .header {
+ background-color: rgb(0, 104, 214);
+ }
+}
+
+//鐧借壊
+.vol-theme-white {
+ .header {
+ background-color: #434956;
+ }
+
+ .h-link a:hover {
+ background: #eeeeee;
+ }
+
+ .h-link a {
+ color: #211f1f;
+ }
+
+ .header-navigation {
+ // box-shadow: -7px 11px 10px -13px #678aa7;
+ border-bottom: 1px solid #eee;
+ height: 32px;
+ overflow: hidden;
+ line-height: 32px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: 400;
+ }
+
+ .vol-aside .vol-menu {
+ background: #353941;
+ }
+}
+
+.vol-theme-white .project-name {
+ color: #505050;
+}
+
+.vol-theme-white .vol-aside::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+ background: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+ background: #353941;
+ color: #d6d6d6;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+ background: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title) {
+ background-color: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+ background-color: rgb(47, 46, 46);
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title),
+.vol-theme-white .vol-aside ::v-deep(.el-menu-item),
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+ color: #bababa;
+}
+
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) {
+// background: #363e4f;
+// color: white;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-submenu),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+// background: #515a6e;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu) {
+// background: #515a6e;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1 *) {
+// color: #d6d6d6;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item) {
+// color: #eee;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1.is-active) {
+// background: #59647b;
+// color: #fff;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+// background: #6a758c;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+// background-color: #525865;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+// color: white;
+// }
+
+// .vol-theme-red ::v-deep(.el-menu-item.is-active),
+// .vol-theme-red2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #d71212;
+// }
+// .vol-theme-blue ::v-deep(.el-menu-item.is-active),
+// .vol-theme-blue2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #2d8cf0;
+// }
+// .vol-theme-orange ::v-deep(.el-menu-item.is-active),
+// .vol-theme-orange2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #ff9900;
+// }
+
+// .vol-theme-green ::v-deep(.el-menu-item.is-active),
+// .vol-theme-green2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #19be6b;
+// }
+
+.theme-selector {
+ height: 100%;
+ padding-left: 16px;
+
+ .item {
+ cursor: pointer;
+ width: 60px;
+ height: 60px;
+ border-radius: 5px;
+ margin-bottom: 17px;
+ border: 1px solid #d4d2d2;
+ float: left;
+ margin-right: 13px;
+ }
+}
+
+.collapse-menu {
+ font-size: 21px;
+ color: #fff;
+ line-height: 60px;
+ position: absolute;
+ top: 0;
+ right: 5px;
+ cursor: pointer;
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue"
new file mode 100644
index 0000000..65f1f75
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceInfo.vue"
@@ -0,0 +1,365 @@
+
+ <template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/quartzJob/deviceInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "id",
+ footer: "Foots",
+ cnName: "璁惧淇℃伅",
+ name: "deviceInfo",
+ url: "/DeviceInfo/",
+ sortName: "createDate",
+ });
+ const editFormFields = ref({
+ deviceCode: "",
+ deviceName: "",
+ deviceType: "",
+ deviceStatus: "",
+ deviceIp: "",
+ devicePort: "",
+ devicePlcType: "",
+ deviceRemark: "",
+ });
+ const editFormOptions = ref([
+ [
+ {
+ title: "璁惧缂栧彿",
+ required: true,
+ field: "deviceCode",
+ type: "string",
+ },
+ {
+ title: "璁惧鍚嶇О",
+ required: true,
+ field: "deviceName",
+ type: "string",
+ },
+ {
+ title: "璁惧绫诲瀷",
+ required: true,
+ field: "deviceType",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "璁惧鐘舵��",
+ required: true,
+ field: "deviceStatus",
+ type: "select",
+ dataKey: "deviceStatus",
+ data: [],
+ },
+ ],
+ [
+ { title: "璁惧IP", required: true, field: "deviceIp", type: "string" },
+ {
+ title: "璁惧绔彛",
+ required: true,
+ field: "devicePort",
+ type: "string",
+ },
+ {
+ title: "PLC绫诲瀷",
+ required: true,
+ field: "devicePlcType",
+ type: "select",
+ dataKey: "devicePlcType",
+ data: [],
+ },
+ {
+ title: "澶囨敞",
+ field: "deviceRemark",
+ type: "string",
+ },
+ ],
+ ]);
+ const searchFormFields = ref({
+ deviceCode: "",
+ deviceType: "",
+ deviceStatus: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "璁惧缂栧彿", field: "deviceCode" },
+ {
+ title: "璁惧绫诲瀷",
+ field: "deviceType",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "璁惧鐘舵��",
+ field: "deviceStatus",
+ type: "select",
+ dataKey: "deviceStatus",
+ data: [],
+ },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceCode",
+ title: "璁惧缂栧彿",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "deviceName",
+ title: "璁惧鍚嶇О",
+ type: "string",
+ link: true,
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "deviceType",
+ title: "璁惧绫诲瀷",
+ type: "string",
+ width: 150,
+ align: "left",
+ bind: { key: "deviceType", data: [] },
+ },
+ {
+ field: "deviceStatus",
+ title: "璁惧鐘舵��",
+ type: "string",
+ width: 90,
+ align: "left",
+ bind: { key: "deviceStatus", data: [] },
+ },
+ {
+ field: "deviceIp",
+ title: "璁惧IP",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "devicePort",
+ title: "璁惧绔彛",
+ type: "int",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "devicePlcType",
+ title: "PLC绫诲瀷",
+ type: "string",
+ width: 120,
+ align: "left",
+ bind: { key: "devicePlcType", data: [] },
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "deviceRemark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "璁惧鍗忚淇℃伅",
+ table: "DeviceProtocol",
+ columns: [
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceId",
+ title: "璁惧涓婚敭",
+ type: "string",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceChildCode",
+ title: "璁惧瀛愮紪鍙�",
+ type: "string",
+ edit: { type: "" },
+ width: 150,
+ require: true,
+ align: "left",
+ sortable: true,
+ },
+ {
+ field: "deviceProDataBlock",
+ title: "鍗忚鏁版嵁鍧�",
+ type: "string",
+ width: 100,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "deviceProOffset",
+ title: "鍋忕Щ閲�",
+ type: "decimal",
+ width: 90,
+ edit: { type: "number" },
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceProDataType",
+ title: "鏁版嵁绫诲瀷",
+ type: "string",
+ width: 90,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "deviceProDataLength",
+ title: "鏁版嵁闀垮害",
+ type: "int",
+ width: 90,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "deviceProParamName",
+ title: "鍙傛暟鍚嶇О",
+ type: "string",
+ width: 150,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "deviceProParamType",
+ title: "鍙傛暟绫诲瀷",
+ type: "string",
+ width: 150,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "deviceProParamDes",
+ title: "鍙傛暟璇存槑",
+ type: "string",
+ width: 130,
+ require: true,
+ align: "left",
+ edit: { type: "" },
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ sortable: true,
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ ],
+ sortName: "createDate",
+ key: "id",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocol.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocol.vue"
new file mode 100644
index 0000000..6d3ea40
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocol.vue"
@@ -0,0 +1,229 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/quartzJob/deviceProtocol.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "id",
+ footer: "Foots",
+ cnName: "璁惧鍗忚淇℃伅",
+ name: "deviceProtocol",
+ url: "/DeviceProtocol/",
+ sortName: "id",
+ });
+ const editFormFields = ref({
+ deviceCode: "",
+ deviceName: "",
+ deviceType: "",
+ deviceStatus: "",
+ deviceIp: "",
+ devicePort: "",
+ devicePlcType: "",
+ deviceRemark: "",
+ });
+ const editFormOptions = ref([
+ [
+ {
+ title: "璁惧缂栧彿",
+ required: true,
+ field: "deviceCode",
+ type: "string",
+ },
+ {
+ title: "璁惧鍚嶇О",
+ required: true,
+ field: "deviceName",
+ type: "string",
+ },
+ {
+ title: "璁惧绫诲瀷",
+ required: true,
+ field: "deviceType",
+ type: "string",
+ },
+ {
+ title: "璁惧鐘舵��",
+ required: true,
+ field: "deviceStatus",
+ type: "string",
+ },
+ ],
+ [
+ { title: "璁惧IP", required: true, field: "deviceIp", type: "string" },
+ {
+ title: "璁惧绔彛",
+ required: true,
+ field: "devicePort",
+ type: "string",
+ },
+ {
+ title: "PLC绫诲瀷",
+ required: true,
+ field: "devicePlcType",
+ type: "string",
+ },
+ {
+ title: "澶囨敞",
+ field: "deviceRemark",
+ type: "string",
+ },
+ ],
+ ]);
+ const searchFormFields = ref({
+ deviceCode: "",
+ deviceType: "",
+ deviceStatus: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "璁惧缂栧彿", field: "deviceCode" },
+ { title: "璁惧绫诲瀷", field: "deviceType" },
+ { title: "璁惧鐘舵��", field: "deviceStatus" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceId",
+ title: "璁惧涓婚敭",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "deviceChildCode",
+ title: "璁惧瀛愮紪鍙�",
+ type: "string",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "deviceProDataBlock",
+ title: "鍗忚鏁版嵁鍧�",
+ type: "string",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "deviceProOffset",
+ title: "鍋忕Щ閲�",
+ type: "decimal",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "deviceProDataType",
+ title: "鏁版嵁绫诲瀷",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "deviceProDataLength",
+ title: "鏁版嵁闀垮害",
+ type: "int",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "deviceProParamName",
+ title: "鍙傛暟鍚嶇О",
+ type: "string",
+ width: 200,
+ align: "left",
+ },
+ {
+ field: "deviceProParamType",
+ title: "鍙傛暟绫诲瀷",
+ type: "string",
+ width: 180,
+ align: "left",
+ },
+ {
+ field: "deviceProParamDes",
+ title: "鍙傛暟璇存槑",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "deviceProRemark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocolDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocolDetail.vue"
new file mode 100644
index 0000000..6dd1be7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/deviceProtocolDetail.vue"
@@ -0,0 +1,207 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/quartzJob/deviceProtocolDetail.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "id",
+ footer: "Foots",
+ cnName: "璁惧鍗忚鏄庣粏淇℃伅",
+ name: "deviceProtocolDetail",
+ url: "/DeviceProtocolDetail/",
+ sortName: "createDate",
+ });
+ const editFormFields = ref({
+ deviceType: "",
+ deviceProParamName: "",
+ protocolDetailType: "",
+ protocalDetailValue: "",
+ protocolDetailDes: "",
+ });
+ const editFormOptions = ref([
+ [
+ {
+ title: "璁惧绫诲瀷",
+ required: true,
+ field: "deviceType",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "鍙傛暟鍚嶇О",
+ required: true,
+ field: "deviceProParamName",
+ type: "string",
+ },
+ {
+ title: "鏄庣粏绫诲瀷",
+ required: true,
+ field: "protocolDetailType",
+ type: "string",
+ },
+ {
+ title: "鏄庣粏鍙栧��",
+ required: true,
+ field: "protocalDetailValue",
+ type: "string",
+ },
+ ],
+ [
+ {
+ title: "鏄庣粏璇存槑",
+ field: "protocolDetailDes",
+ type: "textarea",
+ },
+ ],
+ ]);
+ const searchFormFields = ref({
+ deviceType: "",
+ deviceProParamName: "",
+ protocolDetailType: "",
+ });
+ const searchFormOptions = ref([
+ [
+ {
+ title: "璁惧绫诲瀷",
+ field: "deviceType",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "鍙傛暟鍚嶇О",
+ field: "deviceProParamName",
+ type: "like",
+ },
+ {
+ title: "鏄庣粏绫诲瀷",
+ field: "protocolDetailType",
+ type: "like",
+ },
+ {
+ title: "鏄庣粏鍙栧��",
+ field: "protocalDetailValue",
+ type: "like",
+ },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deviceType",
+ title: "璁惧绫诲瀷",
+ type: "string",
+ width: 180,
+ align: "left",
+ bind: { key: "deviceType", data: [] },
+ },
+ {
+ field: "deviceProParamName",
+ title: "璁惧鍗忚鍙傛暟鍚嶇О",
+ type: "string",
+ width: 180,
+ align: "left",
+ },
+ {
+ field: "protocolDetailType",
+ title: "璁惧鍗忚鏄庣粏绫诲瀷",
+ type: "string",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "protocalDetailValue",
+ title: "璁惧鍗忚鏄庣粏鍙栧��",
+ type: "string",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "protocolDetailDes",
+ title: "璁惧鍗忚鏄庣粏璇存槑",
+ type: "string",
+ width: 350,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/dispatchInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/dispatchInfo.vue"
new file mode 100644
index 0000000..3e88503
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/quartzJob/dispatchInfo.vue"
@@ -0,0 +1,247 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/quartzJob/dispatchInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "id",
+ footer: "Foots",
+ cnName: "璋冨害鏈嶅姟閰嶇疆淇℃伅",
+ name: "dispatchInfo",
+ url: "/DispatchInfo/",
+ sortName: "createDate",
+ });
+ const editFormFields = ref({
+ name: "",
+ jobGroup: "",
+ assemblyName: "",
+ className: "",
+ intervalSecond: "",
+ beginTime: "",
+ endTime: "",
+ remark: "",
+ });
+ const editFormOptions = ref([
+ [
+ {
+ title: "浠诲姟鍚嶇О",
+ required: true,
+ field: "name",
+ type: "string",
+ },
+ {
+ title: "浠诲姟鍒嗙粍",
+ required: true,
+ field: "jobGroup",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "绋嬪簭闆嗗悕绉�",
+ required: true,
+ field: "assemblyName",
+ type: "string",
+ type: "select",
+ dataKey: "jobAssembly",
+ data: [],
+ },
+ {
+ title: "浠诲姟鎵�鍦ㄧ被",
+ required: true,
+ field: "className",
+ type: "string",
+ type: "select",
+ dataKey: "jobClassName",
+ data: [],
+ },
+ ],
+ [
+ {
+ title: "闂撮殧鏃堕棿",
+ required: true,
+ field: "intervalSecond",
+ type: "number",
+ },
+ {
+ title: "寮�濮嬫椂闂�",
+ field: "beginTime",
+ type: "datetime",
+ },
+ {
+ title: "缁撴潫鏃堕棿",
+ field: "endTime",
+ type: "datetime",
+ },
+ {
+ title: "澶囨敞",
+ field: "remark",
+ type: "string",
+ },
+ ],
+ ]);
+ const searchFormFields = ref({
+ name: "",
+ jobGroup: "",
+ assemblyName: "",
+ className: "",
+ });
+ const searchFormOptions = ref([
+ [
+ {
+ title: "浠诲姟鍚嶇О",
+ field: "name",
+ type: "like",
+ },
+ {
+ title: "浠诲姟鍒嗙粍",
+ field: "jobGroup",
+ type: "select",
+ dataKey: "deviceType",
+ data: [],
+ },
+ {
+ title: "绋嬪簭闆嗗悕绉�",
+ field: "assemblyName",
+ type: "like",
+ },
+ {
+ title: "浠诲姟鎵�鍦ㄧ被",
+ field: "className",
+ type: "like",
+ },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "id",
+ title: "Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "name",
+ title: "浠诲姟鍚嶇О",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "jobGroup",
+ title: "浠诲姟鍒嗙粍",
+ type: "string",
+ width: 180,
+ align: "left",
+ bind: { key: "deviceType", data: [] },
+ },
+ {
+ field: "assemblyName",
+ title: "绋嬪簭闆嗗悕绉�",
+ type: "string",
+ width: 180,
+ align: "left",
+ },
+ {
+ field: "className",
+ title: "浠诲姟鎵�鍦ㄧ被",
+ type: "int",
+ width: 200,
+ align: "left",
+ },
+ {
+ field: "intervalSecond",
+ title: "鎵ц闂撮殧鏃堕棿",
+ type: "int",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "beginTime",
+ title: "寮�濮嬫椂闂�",
+ type: "datetime",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "endTime",
+ title: "缁撴潫鏃堕棿",
+ type: "int",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission.vue"
new file mode 100644
index 0000000..dd62254
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission.vue"
@@ -0,0 +1,359 @@
+<template>
+ <div class="role-container">
+ <div class="role-tree-left flex-col">
+ <div class="title"><i class="el-icon-user"></i>瑙掕壊鍒楄〃</div>
+ <el-scrollbar class="el-role-list">
+ <el-tree
+ :data="tree"
+ @node-click="nodeClick"
+ node-key="id"
+ :default-expanded-keys="openKeys"
+ :expand-on-click-node="false"
+ style="padding: 5px 0; margin-right: 2px"
+ >
+ <template #default="{ data }">
+ <div class="action-group">
+ <div class="action-text">
+ {{ data.roleName }}
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+ <div class="role-tree-right flex-col">
+ <div class="title">
+ <div><i class="el-icon-folder-opened"></i>鑿滃崟鏉冮檺</div>
+ <el-button type="primary" @click="save">淇濆瓨</el-button>
+ </div>
+ <el-scrollbar class="el-role-list">
+ <el-tree
+ @check-change="leftCheckChange"
+ @check="nodeCheck"
+ :data="roleTree"
+ :show-checkbox="false"
+ style="padding: 15px"
+ node-key="id"
+ default-expand-all
+ :expand-on-click-node="false"
+ >
+ <template #default="{ data }">
+ <div class="action-group">
+ <div
+ class="action-text"
+ :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }"
+ >
+ <el-checkbox v-model="data.leftCk" @change="allChange(data)">{{
+ // data.text + (data.isApp ? "(app)" : "")
+ data.text
+ }}</el-checkbox>
+ </div>
+ <div class="action-item">
+ <el-checkbox
+ v-for="(item, index) in data.actions"
+ :key="index"
+ v-model="item.checked"
+ @change="actionChange(data, item.checked)"
+ >{{ item.text }}</el-checkbox
+ >
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+ </div>
+</template>
+
+<script>
+import { defineComponent, ref, reactive, getCurrentInstance } from "vue";
+import http from "@/../src/api/http.js";
+export default defineComponent({
+ setup() {
+ const selectId = ref(-1);
+ const checked = ref(false);
+ const tree = reactive([]);
+ const list = reactive([]);
+ const roles = reactive([]);
+ const roleList = reactive([]);
+ const roleTree = reactive([]);
+ const openKeys = reactive([]);
+
+ const leftCheckChange = (node, selected) => {
+ node.actions.forEach((x, index) => {
+ x.checked = selected;
+ });
+ };
+ const nodeCheck = (node, data) => {
+ let rootData = roleList.find((x) => {
+ return x.id === node.pid;
+ });
+ if (rootData && rootData.actions.length) {
+ rootData.actions[0].checked =
+ node.actions.some((x) => {
+ return x.checked;
+ }) ||
+ data.halfCheckedNodes.some((x) => {
+ return x.id === node.pid;
+ });
+ }
+ };
+
+ const allChange = (data) => {
+ data.actions.forEach((item) => {
+ item.checked = data.leftCk;
+ });
+ if (!data.children) {
+ return;
+ }
+ setChildrenChecked(data, data.leftCk);
+ };
+ const setChildrenChecked = (data, ck) => {
+ data.children.forEach((item) => {
+ item.leftCk = ck;
+ item.actions.forEach((c) => {
+ c.checked = ck;
+ });
+ if (item.children) {
+ setChildrenChecked(item, ck);
+ }
+ });
+ };
+ const actionChange = (data, ck) => {
+ ck =
+ data.actions.filter((x) => {
+ return x.checked;
+ }).length == data.actions.length;
+ data.leftCk = ck;
+ };
+
+ const load = () => {
+ const url = "api/Sys_Role/getUserChildRoles";
+ http.post(url, {}, true).then((result) => {
+
+ if (!result.status) return;
+ list.splice(0);
+ list.push(...result.data);
+ list.forEach((x) => {
+ if (x.parentId == 0) {
+ x.lv = 1;
+ x.children = [];
+ tree.push(x);
+ getTree(x.id, x);
+ }
+ });
+ openKeys.push(tree[0].id);
+ selectId.value = openKeys[0];
+ });
+ };
+ const getTree = (id, data) => {
+ list.forEach((x) => {
+ if (x.parentId == id) {
+ x.lv = data.lv + 1;
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ getTree(x.id, x);
+ }
+ });
+ };
+ const nodeClick = (node, selected) => {
+ selectId.value = node.id;
+ getUserRole(node);
+ };
+ const getUserRole = (item) => {
+ selectId.value = item.id;
+ roleList.forEach((x) => {
+ x.actions.forEach((a) => {
+ a.checked = false;
+ });
+ });
+ let url = `/api/Sys_Role/getUserTreePermission?roleId=${item.id}`;
+ http.post(url, {}, true).then((result) => {
+ if (!result.status) return;
+ result.data.forEach((item) => {
+ if (item.actions.length == 0) return;
+ let sourceItem = roleList.find((f) => f.id == item.id);
+ if (!sourceItem) return;
+ item.actions.forEach((actions) => {
+ sourceItem.actions.forEach((soure) => {
+ if (soure.value == actions.value) {
+ soure.checked = true;
+ }
+ });
+ });
+ });
+ });
+ };
+
+ const getRoleTree = (id, data, isRootId) => {
+ roleList.forEach((x) => {
+ if (x.pid == id) {
+ x.lv = data.lv + 1;
+ if (isRootId) {
+ x.rootId = id;
+ }
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ getRoleTree(x.id, x, isRootId);
+ }
+ });
+ };
+
+ const getCurrentTreePermission = () => {
+ let url = "/api/Sys_Role/getCurrentTreePermission";
+ http.post(url, {}, true).then((result) => {
+ if (!result.status) return;
+ roleList.splice(0);
+ roles.splice(0);
+ roleList.push(...result.data.tree);
+ roles.push(...result.data.roles);
+ roleList.forEach((x) => {
+ if (x.pid == 0) {
+ x.lv = 1;
+ x.children = [];
+ roleTree.push(x);
+ getRoleTree(x.id, x);
+ }
+ });
+ });
+ };
+ let $message =
+ getCurrentInstance().appContext.config.globalProperties.$message;
+ const save = () => {
+ if (selectId.value <= 0) {
+ return $message.error("璇烽�夋嫨瑙掕壊!");
+ }
+ let userPermissions = [];
+ roleList.forEach((x) => {
+ let checkedPermission = x.actions.filter((f) => {
+ return f.checked;
+ });
+ if (checkedPermission.length > 0) {
+ let actions = checkedPermission.map((m) => {
+ return { text: m.text, value: m.value };
+ });
+ userPermissions.push({
+ id: x.id,
+ actions: actions,
+ });
+ }
+ });
+ let url = `api/Sys_Role/SavePermission?roleId=${selectId.value}`;
+ http.post(url, userPermissions, true).then((result) => {
+ $message[result.status ? "success" : "error"](result.message);
+ });
+ };
+
+ load();
+ getCurrentTreePermission();
+ return {
+ list,
+ nodeClick,
+ checked,
+ tree,
+ selectId,
+ openKeys,
+ getUserRole,
+ roles,
+ roleList,
+ getCurrentTreePermission,
+ leftCheckChange,
+ nodeCheck,
+ roleTree,
+ allChange,
+ actionChange,
+ save,
+ };
+ },
+});
+</script>
+<style lang="less" scoped>
+.role-container {
+ position: absolute;
+ background: #f6f6f6;
+ height: 100%;
+ width: 100%;
+ padding: 10px;
+ display: flex;
+ .flex-col {
+ display: flex;
+ flex-direction: column;
+ }
+ .role-tree-left {
+ border: 1px solid #f2f2f2;
+ background: #fff;
+ width: 230px;
+ margin-right: 10px;
+ .title {
+ i {
+ margin-left: 10px;
+ }
+ }
+ }
+ .role-tree-right {
+ background: #fff;
+ border: 1px solid #f2f2f2;
+ width: 0;
+ flex: 1;
+ .title {
+ display: flex;
+ i {
+ margin-left: 10px;
+ }
+ div {
+ flex: 1;
+ }
+ }
+ .action-group {
+ display: flex;
+ // line-height: 32px;
+ justify-content: center;
+ align-items: center;
+ label {
+ float: left;
+ }
+ .action-text {
+ line-height: 33px;
+ label {
+ margin-right: 5px;
+ }
+ }
+ }
+ }
+ .title {
+ padding: 10px;
+ background: rgb(246 250 255);
+ font-weight: bold;
+ font-size: 14px;
+ letter-spacing: 2px;
+ }
+ .el-role-list {
+ flex: 1;
+ height: 0;
+ overflow-x: hidden;
+ }
+}
+.role-tree-left ::v-deep(.el-tree-node__content) {
+ cursor: pointer;
+ height: auto;
+ padding: 5px;
+ margin: 2px 10px;
+ font-size: 15px;
+}
+.role-tree-left ::v-deep(.el-tree-node__content:hover) {
+ background: #f4f4f4;
+ border-radius: 20px;
+}
+.role-tree-left ::v-deep(.is-current > .el-tree-node__content:first-child) {
+ background: #f2f2f2;
+ border-radius: 20px;
+}
+.role-tree-right ::v-deep(.el-tree-node__content) {
+ margin-bottom: 5px;
+ height: auto;
+}
+.role-tree-right ::v-deep(.el-checkbox__label) {
+ position: relative;
+ top: 2px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission/RoleTree.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission/RoleTree.vue"
new file mode 100644
index 0000000..9ae4e6b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Permission/RoleTree.vue"
@@ -0,0 +1,152 @@
+<template>
+ <div class="com-el-tree">
+
+ <div class="m-title"><i class="el-icon-warning-outline"></i>瑙掕壊鍒楄〃</div>
+
+ <el-scrollbar style="height: 100%; width: 200px" class="el-role-tree">
+ <el-tree
+ :data="tree"
+ @node-click="nodeClick"
+ node-key="id"
+ :default-expanded-keys="openKeys"
+ :expand-on-click-node="false"
+ style="padding: 5px 0; margin-right: 2px"
+ >
+ <template #default="{ node, data }">
+ <div class="action-group">
+ <div
+ class="action-text"
+ :class="{
+ actived: data.id == selectId,
+ 'node-text': data.parentId !== 0,
+ }"
+ :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }"
+ >
+ <Icon
+ v-if="data.parentId !== 0"
+ :type="data.id == selectId ? 'ios-paper' : 'ios-paper-outline'"
+ />
+ {{ data.roleName }}
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ // roles: {
+ // type: Object,
+ // default: () => {
+ // return [];
+ // }
+ // },
+ onChange: {
+ type: Function,
+ default: (treeId) => {},
+ },
+ },
+ data() {
+ return {
+ selectId: -1,
+ checked: false,
+ openKeys: [],
+ data: [],
+ tree: [],
+ };
+ },
+ created() {
+ this.load();
+ },
+ methods: {
+ load() {
+ this.http.post("/api/Sys_Role/getUserChildRoles", {}, true).then((result) => {
+ if (!result.status) return this.$message.error(result.message);
+ this.data.splice(0);
+ this.data = result.data;
+ this.data.forEach((x) => {
+ if (x.parentId == 0) {
+ x.lv = 1;
+ x.children = [];
+ this.tree.push(x);
+ this.getTree(x.id, x);
+ }
+ });
+ this.openKeys.push(this.tree[0].id);
+ this.selectId = this.openKeys[0];
+ //榛樿鍔犺浇绗竴涓爲褰㈣彍鍗曚笅闈㈢殑鏁版嵁
+
+ //this.onChange(this.selectId);
+ });
+ },
+ getTree(id, data) {
+ this.data.forEach((x) => {
+ if (x.parentId == id) {
+ x.lv = data.lv + 1;
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ this.getTree(x.id, x);
+ }
+ });
+ },
+ nodeClick(node, selected) {
+ // console.log(node);
+ this.selectId = node.id;
+ //缂撳瓨褰撳墠閫変腑鐨勮妭鐐�
+ // this.$store.getters.data().treeDemo1.treeId = node.id;
+ this.onChange(node);
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+.com-el-tree {
+ //2020.06.03澧炲姞宸︿晶tree鍥哄畾瀹藉害
+ width: 200px;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ border-radius: 3px;
+ background: white;
+ .el-role-tree {
+ flex: 1;
+ // border-right: 1px solid #eee;
+ }
+ .actived {
+ }
+ .action-text {
+ font-size: 14px;
+ }
+}
+.role-list {
+ color: white;
+ line-height: 40px;
+ padding: 0 13px;
+ font-size: 16px;
+ top: 2px;
+ width: 200px;
+}
+.m-title {
+ line-height: 30px;
+ font-size: 15px;
+ background: #66b1ff0f;
+ font-weight: bold;
+ padding: 6px 16px;
+ border-bottom: 1px solid #eee;
+ i {
+ padding-right: 5px;
+ }
+}
+.com-el-tree ::v-dee(.el-tree-node) {
+ padding: 3px 0;
+}
+.com-el-tree ::v-dee(.el-scrollbar .el-scrollbar__thumb) {
+ width: 0 !important;
+}
+</style>
+<style scoped>
+
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue"
new file mode 100644
index 0000000..5ceafd6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue"
@@ -0,0 +1,325 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Dictionary.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_Dictionary.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "dicId",
+ footer: "Foots",
+ cnName: "瀛楀吀鏁版嵁",
+ name: "Sys_Dictionary",
+ url: "/Sys_Dictionary/",
+ sortName: "dicId",
+ });
+ const editFormFields = ref({
+ dicNo: "",
+ dicName: "",
+ parentId: "",
+ orderNo: "",
+ enable: "",
+ dbSql: "",
+ remark: "",
+ systemType: 1,
+ });
+ const editFormOptions = ref([
+ [
+ { title: "瀛楀吀缂栧彿", required: true, field: "dicNo" },
+ { title: "瀛楀吀鍚嶇О", required: true, field: "dicName" },
+ { title: "鐖剁骇ID", required: true, field: "parentId", type: "number" },
+ ],
+ [
+ { title: "鎺掑簭鍙�", field: "orderNo", type: "number" },
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍚敤",
+ required: true,
+ field: "enable",
+ type: "select",
+ },
+ ],
+ [
+ { title: "sql璇彞", field: "dbSql", colSize: 8, type: "textarea" },
+ { title: "澶囨敞", field: "remark", type: "textarea" },
+ ],
+ ]);
+ const searchFormFields = ref({
+ dicNo: "",
+ dicName: "",
+ parentId: "",
+ enable: "",
+ createDate: "",
+ modifyDate: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "瀛楀吀缂栧彿", field: "dicNo" },
+ { title: "瀛楀吀鍚嶇О", field: "dicName", type: "textarea" },
+ { title: "鐖剁骇ID", field: "parentId", type: "number" },
+ ],
+ [
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍚敤",
+ field: "enable",
+ type: "select",
+ },
+ { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+ { title: "淇敼鏃堕棿", field: "modifyDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "dicId",
+ title: "瀛楀吀ID",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "dicNo",
+ title: "瀛楀吀缂栧彿",
+ type: "string",
+ width: 90,
+ require: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "dicName",
+ title: "瀛楀吀鍚嶇О",
+ type: "string",
+ link: true,
+ width: 140,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "parentId",
+ title: "鐖剁骇ID",
+ type: "int",
+ width: 90,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "config",
+ title: "閰嶇疆椤�",
+ type: "string",
+ width: 300,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "dbSql",
+ title: "sql璇彞",
+ type: "string",
+ width: 200,
+ align: "left",
+ },
+ {
+ field: "dBServer",
+ title: "DBServer",
+ type: "string",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "orderNo",
+ title: "鎺掑簭鍙�",
+ type: "int",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "enable",
+ title: "鏄惁鍚敤",
+ type: "byte",
+ bind: { key: "enable", data: [] },
+ width: 90,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 130,
+ hidden: true,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 150,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 130,
+ hidden: true,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 150,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+ ]);
+ const detail = ref({
+ cnName: "瀛楀吀鏄庣粏",
+ table: "Sys_DictionaryList",
+ columns: [
+ {
+ field: "dicList_ID",
+ title: "DicList_ID",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "dicId",
+ title: "鏁版嵁婧怚D",
+ type: "int",
+ width: 90,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "dicValue",
+ title: "鏁版嵁婧怴alue",
+ type: "string",
+ width: 90,
+ edit: { type: "text" },
+ align: "left",
+ },
+ {
+ field: "dicName",
+ title: "鏁版嵁婧怲ext",
+ type: "string",
+ width: 90,
+ edit: { type: "text" },
+ align: "left",
+ },
+ {
+ field: "orderNo",
+ title: "鎺掑簭鍙�",
+ type: "int",
+ width: 90,
+ edit: { type: "text" },
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 90,
+ edit: { type: "text" },
+ align: "left",
+ },
+
+ {
+ field: "createID",
+ title: "CreateID",
+ type: "int",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 130,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 90,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 130,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 90,
+ align: "left",
+ sort: true,
+ },
+ ],
+ sortName: "dicId",
+ key: "dicId",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_DictionaryList.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_DictionaryList.vue"
new file mode 100644
index 0000000..02427fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_DictionaryList.vue"
@@ -0,0 +1,65 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_DictionaryList.js姝ゅ缂栧啓
+ -->
+<template>
+ <div>
+ <view-grid :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+ </div>
+</template>
+
+<script>
+ import extend from "@/extension/system/Sys_DictionaryList.js";
+ var vueParam = {
+ data() {
+ return {
+ table: {
+ key: 'DicList_ID',
+ footer: "Foots",
+ cnName: '瀛楀吀鏄庣粏',
+ name: 'Sys_DictionaryList',
+ url: "/Sys_DictionaryList/",
+ sortName: "DicList_ID"
+ },
+ extend: extend,
+ editFormFields: {"DicValue":"","DicName":"","OrderNo":"","Remark":"","Enable":""},
+ editFormOptions: [[{"columnType":"string","title":"鏁版嵁婧怴alue","field":"DicValue","type":"text"},
+ {"columnType":"string","title":"鏁版嵁婧怲ext","field":"DicName","type":"text"},
+ {"columnType":"int","title":"鎺掑簭鍙�","field":"OrderNo","type":"text"},
+ {"columnType":"int","title":"澶囨敞","field":"Remark","type":"text"},
+ {"columnType":"byte","dataKey":"enable","title":"鏄惁鍙敤","field":"Enable","type":"switch"}]],
+ searchFormFields: {},
+ searchFormOptions: [],
+ columns: [{field:'DicList_ID',title:'DicList_ID',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'Dic_ID',title:'鏁版嵁婧怚D',type:'int',width:90,readonly:true,align:'left',sortable:true},
+ {field:'DicValue',title:'鏁版嵁婧怴alue',type:'string',width:90,align:'left'},
+ {field:'DicName',title:'鏁版嵁婧怲ext',type:'string',width:90,align:'left'},
+ {field:'OrderNo',title:'鎺掑簭鍙�',type:'int',width:90,align:'left'},
+ {field:'Remark',title:'澶囨敞',type:'int',width:90,align:'left'},
+ {field:'Enable',title:'鏄惁鍙敤',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
+ {field:'CreateID',title:'CreateID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Creator',title:'鍒涘缓浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'CreateDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
+ {field:'ModifyID',title:'ModifyID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Modifier',title:'淇敼浜�',type:'string',width:130,align:'left'},
+ {field:'ModifyDate',title:'淇敼鏃堕棿',type:'datetime',width:90,align:'left',sortable:true}],
+ detail: {
+ cnName:"#detailCnName",
+ columns: [],
+ sortName: "#detailSortName"
+ }
+ };
+ }
+ };
+ export default vueParam;
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Log.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Log.vue"
new file mode 100644
index 0000000..9742628
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Log.vue"
@@ -0,0 +1,70 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Log.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/Sys_Log.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Id',
+ footer: "Foots",
+ cnName: '绯荤粺鏃ュ織',
+ name: 'Sys_Log',
+ url: "/Sys_Log/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({});
+ const editFormOptions = ref([]);
+ const searchFormFields = ref({"BeginDate":"","Url":"","LogType":[],"Success":[],"UserIP":"","ServiceIP":"","Role_Id":""});
+ const searchFormOptions = ref([[{"title":"璇锋眰鍦板潃","field":"Url","type":"text"},{"title":"鐢ㄦ埛IP","field":"UserIP","type":"text"},{"title":"鏈嶅姟鍣↖P","field":"ServiceIP","type":"text"}],[{"title":"寮�濮嬫椂闂�","field":"BeginDate","type":"datetime"},{"dataKey":"restatus","data":[],"title":"鍝嶅簲鐘舵��","field":"Success","type":"selectList"},{"dataKey":"roles","data":[],"title":"瑙掕壊ID","field":"Role_Id","type":"select"}],[{"dataKey":"log","data":[],"title":"鏃ュ織绫诲瀷","field":"LogType","colSize":12,"type":"checkbox"}]]);
+ const columns = ref([{field:'Id',title:'Id',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'BeginDate',title:'寮�濮嬫椂闂�',type:'datetime',width:140,align:'left',sortable:true},
+ {field:'UserName',title:'鐢ㄦ埛鍚嶇О',type:'string',width:90,align:'left'},
+ {field:'Url',title:'璇锋眰鍦板潃',type:'string',width:110,align:'left'},
+ {field:'LogType',title:'鏃ュ織绫诲瀷',type:'string',bind:{ key:'log',data:[]},width:80,align:'left'},
+ {field:'Success',title:'鍝嶅簲鐘舵��',type:'int',bind:{ key:'restatus',data:[]},width:80,align:'left'},
+ {field:'ElapsedTime',title:'鏃堕暱',type:'int',width:60,align:'left'},
+ {field:'RequestParameter',title:'璇锋眰鍙傛暟',type:'string',width:70,align:'left'},
+ {field:'ResponseParameter',title:'鍝嶅簲鍙傛暟',type:'string',width:70,align:'left'},
+ {field:'ExceptionInfo',title:'寮傚父淇℃伅',type:'string',width:70,align:'left'},
+ {field:'UserIP',title:'鐢ㄦ埛IP',type:'string',width:90,align:'left'},
+ {field:'ServiceIP',title:'鏈嶅姟鍣↖P',type:'string',width:90,hidden:true,align:'left'},
+ {field:'BrowserType',title:'娴忚鍣ㄧ被鍨�',type:'string',width:90,align:'left'},
+ {field:'User_Id',title:'鐢ㄦ埛ID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Role_Id',title:'瑙掕壊ID',type:'int',bind:{ key:'roles',data:[]},width:90,hidden:true,align:'left'},
+ {field:'EndDate',title:'缁撴潫鏃堕棿',type:'datetime',width:150,hidden:true,align:'left',sortable:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue"
new file mode 100644
index 0000000..93feed5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue"
@@ -0,0 +1,618 @@
+<template>
+ <div class="menu-container">
+ <!-- <el-input/> -->
+ <vol-box :width="940" :mask="true" :height="500" title="鍥炬爣鍒楄〃" v-model="model">
+ <Icons :onSelect="onSelect"></Icons>
+ <template #footer>
+ <el-button type="primary" size="mini" @click="model = false">纭� 璁�</el-button>
+ </template>
+ </vol-box>
+ <vol-box :width="600" :mask="true" :height="270" title="鍏朵粬鏉冮檺" v-model="actionModel">
+ <vol-form ref="actionForm" :formRules="actionOptions" :formFields="actionFields">
+ <template #header>
+ <div>
+ <el-alert show-icon type="success">
+ 閰嶇疆鐨勫叾浠栨潈闄�
+ <br />1銆佹坊鍔犳柊鐨勬潈闄愬悗璇峰湪vue椤圭洰涓璫onfig鏂囦欢澶逛笅buttns.js娣诲姞姝ゆ潈闄愮殑鎸夐挳銆�
+ <br />2銆佸鏋滄潈闄愬彧鍦ㄦ煇灏戞暟鍑犱釜鍔熻兘涓娇鐢�,鍦╲ue鐨勫搴旈〉闈㈡墿灞昬xtension鏂囦欢鎵惧埌瀵瑰簲js,娣诲姞鍒癳l-buttons瀵硅薄涓�,鏍煎紡鍚宑onfig鏂囦欢澶逛笅buttns.js涓�鏍枫��
+ </el-alert>
+ </div>
+ </template>
+ </vol-form>
+ <template #footer>
+ <el-button type="primary" size="mini" @click="otherAction">纭� 璁�</el-button>
+ </template>
+ </vol-box>
+
+ <!-- v-if="tree.length" -->
+ <div class="menu-left">
+ <div class="m-title"><i class="el-icon-warning-outline"></i>鑿滃崟鍒楄〃</div>
+ <el-scrollbar style="height: 100%; width: 200px">
+ <VolMenu :onSelect="getTreeItem" :list="tree" :isCollapse="false"></VolMenu>
+ </el-scrollbar>
+ </div>
+ <div class="menu-right">
+ <el-scrollbar style="height: 100%">
+ <el-alert title="鑿滃崟閰嶇疆璇存槑" type="warning" :closable="false" show-icon>
+ <div>
+ 1銆佸鏋滄槸鐢ㄤ唬鐮佺敓鍣ㄧ敓鎴愮殑Vue椤甸潰,Url涓篤ue椤圭洰涓璼rc->router->viewGrid.js瀵瑰簲琛ㄥ悕鐨刾ath灞炴��
+ </div>
+ <div style="padding-top: 5px">
+ 2銆� 濡傛灉鍙槸寤轰竴绾ц彍鍗曟垨绌鸿彍鍗晆rl涓嶇敤濉啓,銆愯鍥�/琛ㄥ悕銆戝~鍐�.鎴栬��/
+ </div>
+ </el-alert>
+ <div style="padding: 0px 30px 0 20px">
+ <vol-form class="form-content" ref="form" :formRules="options" :formFields="fields">
+ </vol-form>
+ <div>
+ <div class="auth-group">
+ <label style="width: 100px">鏉冮檺鎸夐挳锛�</label>
+ <div class="ck">
+ <el-checkbox-group v-model="actions">
+ <el-checkbox v-for="(item, index) in action" :key="index" :label="item.value">{{ item.text + "(" +
+ item.value + ")" }}</el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ </div>
+ <div style="padding-left: 100px">
+ <el-button @click="handleCheckAll" size="mini" type="success" plain><i class="el-icon-check"></i>鍏�
+ 閫�</el-button>
+ <el-button @click="actionModel = true" size="mini" type="primary" plain><i
+ class="el-icon-plus"></i>鍏朵粬鏉冮檺</el-button>
+ </div>
+ <div class="m-btn">
+ <el-button type="primary" @click="save"><i class="el-icon-check"></i>淇濆瓨</el-button>
+ <el-button type="success" @click="add"><i class="el-icon-plus"></i>鏂板缓</el-button>
+ <el-button type="warning" @click="addChild"><i class="el-icon-plus"></i>娣诲姞瀛愮骇</el-button>
+ <el-button type="primary" plain @click="addBrother"><i class="el-icon-circle-plus"></i> 娣诲姞鍚岀骇</el-button>
+ <el-button type="warning" plain @click="delMenu"><i class="el-icon-delete"></i> 鍒犻櫎鑿滃崟</el-button>
+ </div>
+ </div>
+ </el-scrollbar>
+ </div>
+ </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+import Icons from "@/components/basic/Icons.vue";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import {
+ defineComponent,
+ reactive,
+ ref,
+ toRefs,
+ onMounted,
+ h,
+ resolveComponent,
+} from "vue";
+
+import http from "@/api/http";
+export default defineComponent({
+ components: {
+ VolForm: VolForm,
+ VolBox: VolBox,
+ Icons: Icons,
+ VolMenu,
+ },
+ methods: {
+ otherAction() {
+ this.$refs.actionForm.validate(() => {
+ let exist = this.action.some((x) => {
+ return (
+ x.text == this.actionFields.name ||
+ x.value == this.actionFields.value
+ );
+ });
+ if (exist) {
+ return this.$message.error("鏉冮檺鍚嶇О鎴栨潈闄愬�煎凡瀛樺湪");
+ }
+ this.actionModel = false;
+ this.action.push({
+ text: this.actionFields.name,
+ value: this.actionFields.value,
+ });
+ });
+ },
+ handleCheckAll() {
+ if (this.actions == this.action.length) {
+ this.checkAll = false;
+ } else {
+ this.checkAll = !this.checkAll;
+ }
+ if (this.checkAll) {
+ this.actions = this.action.map((x) => {
+ return x.value;
+ });
+ } else {
+ this.actions = [];
+ }
+ },
+ checkAllGroupChange(data) {
+ if (data.length === this.action.length) {
+ this.checkAll = true;
+ } else if (data.length > 0) {
+ this.checkAll = false;
+ } else {
+ this.checkAll = false;
+ }
+ },
+ add(obj) {
+ this.$refs.form.reset(
+ Object.assign({ enable: 1 }, obj || { parentId: 0 })
+ );
+ this.icon = "";
+ // this.actions = [];
+ //2020.08.07鏂板缓鑿滃崟鏃讹紝榛樿閫変腑鏌ヨ鎸夐挳鏉冮檺
+ this.actions = ["Search"];
+ },
+ addChild() {
+ if (!this.isSelect()) return;
+ this.add({ parentId: this.fields.menuId });
+ },
+ addBrother() {
+ if (!this.isSelect()) return;
+ this.add({ parentId: this.fields.parentId });
+ },
+ delMenu() {
+ //2020.08.07澧炲姞鑿滃崟鍒犻櫎鍔熻兘
+ if (this.fields.menuId == 0) {
+ return this.$Message.error("璇烽�夋嫨鑿滃崟");
+ }
+
+ let tigger = false;
+ this.$confirm(
+ "纭瑕佸垹闄ゃ��" + this.fields.menuName + "銆戣彍鍗曞悧锛�",
+ "璀﹀憡",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ center: true,
+ }
+ ).then(() => {
+ if (tigger) return;
+ tigger = true;
+ let menuId = this.fields.menuId;
+ this.http
+ .post("/api/Sys_Menu/delMenu?menuId=" + menuId, {}, "姝e湪鍒犻櫎鏁版嵁....")
+ .then((x) => {
+ if (!x.status) return this.$Message.error(x.message);
+ this.$refs.form.reset();
+ this.$Message.info(x.message);
+ this.initTree();
+ });
+ });
+ },
+ save() {
+ this.$refs.form.validate(() => {
+ this.fields.auth = "";
+ if (this.actions) {
+ this.fields.auth = this.action.filter((x) => {
+ return this.actions.indexOf(x.value) != -1;
+ });
+ }
+ if (
+ this.fields.auth &&
+ this.fields.auth instanceof Array &&
+ this.fields.auth.length > 0
+ ) {
+ this.fields.auth = JSON.stringify(this.fields.auth);
+ } else {
+ this.fields.auth = "";
+ }
+ this.http.post("/api/Sys_Menu/save", this.fields, true).then((x) => {
+ if (!x.status) {
+ this.$Message.error(x.message);
+ return;
+ }
+
+ this.$Message.info(x.message);
+ if (this.fields.menuId) {
+ this.tree.forEach((t) => {
+ if (t.id == this.fields.menuId) {
+ t.name = this.fields.menuName;
+ t.orderNo = this.fields.orderNo;
+ t.parentId = this.fields.parentId;
+ }
+ });
+ return;
+ }
+ this.fields.menuId = x.data.menuId;
+ this.fields.createDate = x.data.createDate;
+ this.tree.push({
+ id: x.data.menuId,
+ name: this.fields.menuName,
+ orderNo: this.fields.orderNo,
+ parentId: this.fields.parentId,
+ });
+ console.log(this.tree)
+ });
+ });
+ },
+ isSelect() {
+ let id = this.fields.menuId;
+ if (!id) {
+ this.$message.error("璇烽�夋嫨鑺傜偣");
+ return false;
+ }
+ return true;
+ },
+ onSelect(icon) {
+ this.fields.icon = icon;
+ this.$message.info(icon);
+ },
+ onOpenChange(node) {
+ if (node.length == 0) return;
+ this.getTreeItem(node[node.length > 1 ? node.length - 1 : 0]);
+ }
+ },
+ created(){
+
+ },
+ setup() {
+ const tree = ref([]);
+ const actionValues = ref([]);
+ const action = ref([
+ { text: "鏌ヨ", value: "Search" },
+ { text: "鏂板缓", value: "Add" },
+ { text: "鍒犻櫎", value: "Delete" },
+ { text: "缂栬緫", value: "Update" },
+ { text: "瀵煎叆", value: "Import" },
+ { text: "瀵煎嚭", value: "Export" },
+ // { text: "涓婁紶", value: "Upload" },
+ // { text: "瀹℃牳", value: "Audit" },
+ ]);
+ const actions = ref([]);
+ actionValues.value = action.value.map((x) => {
+ return x.value;
+ });
+ const initTree = () => {
+ http.post("/api/Sys_Menu/getMenu", {}, true).then((x) => {
+ x.forEach(item => {
+ item.icon = 'el-icon-menu';
+ })
+
+ tree.value = x;
+ });
+ };
+ onMounted(() => {
+ initTree();
+ });
+ const actionModel = ref(false);
+ const checkAll = ref(false);
+ const model = ref(false);
+
+ const fields = ref({
+ menuId: 0,
+ parentId: 0,
+ menuName: "",
+ tableName: "",
+ url: "",
+ auth: "",
+ icon: "",
+ orderNo: "",
+ enable: 1,
+ createDate: "",
+ creator: "",
+ modifyDate: "",
+ });
+
+ const actionFields = ref({
+ name: "",
+ value: "",
+ });
+ const actionOptions = ref([
+ [
+ {
+ title: "鏉冮檺鍚嶇О",
+ field: "name",
+ placeholder: "鏉冮檺鍚嶇О,濡傦細鏂板",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "鏉� 闄� 鍊�",
+ field: "value",
+ placeholder: "鏉冮檺鍊�,濡傦細Add",
+ required: true,
+ },
+ ],
+ ]);
+
+ const options = ref([
+ [
+ {
+ title: "鑿� 鍗� ID",
+ field: "menuId",
+ placeholder: "鑿滃崟ID",
+ min: 0,
+ disabled: true,
+ },
+ {
+ title: "鐖� 绾� ID",
+ required: true,
+ type: "number",
+ min: 0,
+ field: "parentId",
+ // min: 0, max: 50
+ },
+ {
+ title: "鑿滃崟鍚嶇О",
+ field: "menuName",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "瑙嗗浘/琛ㄥ悕",
+ field: "tableName",
+ placeholder: "涓庝唬鐮佺敓鎴愬櫒浣跨敤鐨勫悕绉扮浉鍚�",
+ required: true,
+ },
+ {
+ title: "(璺敱)Url",
+ field: "url",
+ placeholder: "瑙�:涓婇潰鑿滃崟閰嶇疆璇存槑",
+ },
+ {
+ title: "鎺掑簭鍙�",
+ field: "orderNo",
+ type: "number",
+ min: 0,
+ placeholder: "鍊艰秺澶ф樉绀鸿秺闈犲墠",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "鏄惁鍚敤",
+ field: "enable",
+ required: true,
+ type: "select",
+ colSize: 4,
+ data: [
+ { key: 1, value: "鍚敤" },
+ { key: 2, value: "鍚敤涓嶆樉绀�" },
+ { key: 0, value: "绂佺敤" },
+ ],
+ },
+ // {
+ // // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+ // title: "鑿滃崟绫诲瀷",
+ // field: "menuType",
+ // required: true,
+ // type: "select",
+ // colSize: 4,
+ // data: [
+ // { key: 1, value: "WCS鑿滃崟" },
+ // { key: 0, value: "WMS鑿滃崟" },
+ // { key: 99, value: "鍏辩敤" }
+ // ],
+ // },
+ {
+ title: "鍥炬爣Icon",
+ field: "icon",
+ render: (h) => {
+ return h("div", {}, [
+ h("i", {
+ style: {
+ "font-size": "25px",
+ margin: "0px 9px",
+ position: "relative",
+ top: "4px",
+ },
+ class: [fields.value.icon],
+ }),
+ h(
+ resolveComponent("el-button"),
+ {
+ size: "small",
+ style: { padding: "0px 9px" },
+ type: "primary",
+ plain: true,
+ onClick: () => {
+ model.value = true;
+ },
+ },
+ "閫夋嫨鍥炬爣"
+ ),
+ ]);
+ },
+ },
+ ],
+ ]);
+ const refForm = ref();
+ const getTreeItem = (node) => {
+ http.post("api/Sys_Menu/getTreeItem?menuId=" + node, {}, true).then((x) => {
+ try {
+ fields.value.icon = x.icon;
+ if (x.auth) {
+ x.auth = JSON.parse(x.auth);
+ action.value.splice(8, action.value.length);
+
+ actions.value = x.auth.map((element) => {
+ if (actionValues.value.indexOf(element.value) == -1) {
+ action.value.push(element);
+ }
+ return element.value;
+ });
+ } else {
+ action.value.splice(8, action.value.length);
+ x.auth = [];
+ fields.value.icon = "";
+ actions.value = [];
+ }
+ } catch (error) {
+ console.log("鑿滃崟鍔熻兘鏉冮檺杞崲鎴怞SON澶辫触:" + x.auth);
+ x.auth = [];
+ // this.icon = "";
+ actions.value = [];
+ }
+ refForm.value.reset(x);
+ });
+ };
+ return {
+ tree,
+ initTree,
+ action,
+ actions,
+ actionValues,
+ actionModel,
+ checkAll,
+ model,
+ fields,
+ actionFields,
+ actionOptions,
+ options,
+ form: refForm,
+ getTreeItem
+ };
+ },
+ data() {
+ return {};
+ },
+});
+</script>
+
+<style lang="less" scoped>
+.on-icon {
+ line-height: 20px;
+ position: relative;
+
+ .remove {
+ display: none;
+ color: red;
+ right: 7px;
+ position: absolute;
+ top: -14px;
+ font-size: 13px;
+ }
+}
+
+.on-icon:hover {
+ cursor: pointer;
+
+ .remove {
+ display: block;
+ }
+}
+
+.action {
+ width: 100%;
+ display: flex;
+
+ margin-bottom: 15px;
+
+ .ivu-checkbox-wrapper {
+ margin-right: 20px;
+ }
+
+ .ck {
+ line-height: 33px;
+ display: inline-block;
+ display: flex;
+
+ label:first-child {
+ min-width: 58px;
+ float: left;
+ margin-top: 1px;
+ }
+
+ >div {
+ float: left;
+ }
+ }
+}
+
+.menu-container {
+ display: flex;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ padding: 8px;
+ background: #f7f7f7;
+
+ .menu-left {
+ height: 100%;
+ width: 201px;
+ border: 1px solid #eee;
+ display: flex;
+ background: white;
+ flex-direction: column;
+
+ .module-name {
+ border-radius: 0px;
+ /* height: 5%; */
+ line-height: 21px;
+ margin-bottom: 0;
+ }
+ }
+
+ .menu-right {
+ flex: 1;
+ border-radius: 3px;
+ border: 1px solid #eee;
+ background: white;
+ margin-left: 9px;
+ margin-right: 3px;
+ }
+}
+
+.m-btn {
+ margin-top: 20px;
+ text-align: center;
+}
+
+.m-title {
+ line-height: 40px;
+ font-size: 15px;
+ background: #66b1ff0f;
+ font-weight: bold;
+ padding: 6px 16px;
+ border-bottom: 1px solid #eee;
+
+ i {
+ padding-right: 5px;
+ }
+}
+
+.form-content {
+ margin-top: 30px;
+}
+
+.menu-left ::v-deep(.el-scrollbar__bar.is-vertical) {
+ width: 2px;
+}
+
+.auth-group {
+ display: flex;
+
+ label {
+ display: inline-block;
+ width: 100px;
+ text-align: right;
+ color: #797979;
+ font-size: 14px;
+ }
+
+ .ck {
+ flex: 1;
+ }
+
+ .el-checkbox {
+ min-width: 105px;
+ width: auto !important;
+ margin-right: 5px;
+ display: inline-block;
+ padding-bottom: 10px;
+ }
+}
+
+.auth-group ::v-deep(.el-checkbox__label) {
+ padding-left: 4px;
+}
+</style>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role.vue"
new file mode 100644
index 0000000..538b0a7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role.vue"
@@ -0,0 +1,217 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Role.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_Role.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "roleId",
+ footer: "Foots",
+ cnName: "瑙掕壊绠$悊",
+ name: "Sys_Role",
+ url: "/Sys_Role/",
+ sortName: "roleId",
+ });
+ const editFormFields = ref({
+ parentId: [],
+ roleName: "",
+ deptId: "",
+ enable: "",
+ // creater: "",
+ // createDate: "",
+ // modifier: "",
+ // modifyDate: "",
+ });
+ const editFormOptions = ref([
+ [
+ {
+ dataKey: "tree_roles",
+ data: [],
+ title: "鐖剁骇ID",
+ required: true,
+ field: "parentId",
+ type: "cascader",
+ },
+ { title: "瑙掕壊鍚嶇О", required: true, field: "roleName" },
+ ],
+ [
+ { title: "閮ㄩ棬ID", field: "deptId" },
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍚敤",
+ field: "enable",
+ type: "switch",
+ },
+ ],
+ // [
+ // { title: "鍒涘缓浜�", field: "creater", disabled: true },
+ // {
+ // title: "鍒涘缓鏃堕棿",
+ // field: "createDate",
+ // disabled: true,
+ // type: "datetime",
+ // },
+ // ],
+ // [
+ // { title: "淇敼浜�", field: "modifier", disabled: true },
+ // { title: "淇敼鏃堕棿", field: "modifyDate", disabled: true },
+ // ],
+ ]);
+ const searchFormFields = ref({
+ roleName: "",
+ deptId: "",
+ enable: "",
+ createDate: "",
+ modifyDate: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "瑙掕壊鍚嶇О", field: "roleName", type: "text" },
+ { title: "閮ㄩ棬ID", field: "deptId", type: "text" },
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍚敤",
+ field: "enable",
+ type: "select",
+ },
+ ],
+ [
+ { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+ { title: "淇敼鏃堕棿", field: "modifyDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "roleId",
+ title: "瑙掕壊ID",
+ type: "int",
+ width: 70,
+ readonly: true,
+ require: true,
+ align: "left",
+ sortable: true,
+ },
+ {
+ field: "parentId",
+ title: "鐖剁骇ID",
+ type: "int",
+ bind: { key: "tree_roles", data: [] },
+ width: 70,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "roleName",
+ title: "瑙掕壊鍚嶇О",
+ type: "string",
+ link: true,
+ width: 90,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "deptId",
+ title: "閮ㄩ棬ID",
+ type: "int",
+ width: 90,
+ // hidden: true,
+ align: "left",
+ },
+ // {
+ // field: "deptName",
+ // title: "閮ㄩ棬鍚嶇О",
+ // type: "string",
+ // width: 90,
+ // align: "left",
+ // },
+ {
+ field: "enable",
+ title: "鏄惁鍚敤",
+ type: "byte",
+ bind: { key: "enable", data: [] },
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "orderNo",
+ title: "鎺掑簭",
+ type: "int",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 130,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 90,
+ readonly: true,
+ align: "left",
+ sortable: true,
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 130,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 90,
+ readonly: true,
+ align: "left",
+ sortable: true,
+ },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role1.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role1.vue"
new file mode 100644
index 0000000..19ed48a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_Role1.vue"
@@ -0,0 +1,72 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Role.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/Sys_Role1.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Role_Id',
+ footer: "Foots",
+ cnName: '瑙掕壊绠$悊',
+ name: 'Sys_Role',
+ url: "/Sys_Role/",
+ sortName: "Role_Id"
+ });
+ const editFormFields = ref({"ParentId":[],"RoleName":"","DeptName":"","Enable":"","Creator":"","CreateDate":"","Modifier":"","ModifyDate":""});
+ const editFormOptions = ref([[{"dataKey":"tree_roles","data":[],"title":"鐖剁骇ID","required":true,"field":"ParentId","type":"cascader"},
+ {"title":"瑙掕壊鍚嶇О","required":true,"field":"RoleName"}],
+ [{"title":"閮ㄩ棬鍚嶇О","field":"DeptName"},
+ {"dataKey":"enable","data":[],"title":"鏄惁鍚敤","field":"Enable","type":"switch"}],
+ [{"title":"鍒涘缓浜�","field":"Creator","disabled":true},
+ {"title":"鍒涘缓鏃堕棿","field":"CreateDate","disabled":true,"type":"datetime"}],
+ [{"title":"淇敼浜�","field":"Modifier","disabled":true},
+ {"title":"淇敼鏃堕棿","field":"ModifyDate","disabled":true}]]);
+ const searchFormFields = ref({"RoleName":"","DeptName":"","Enable":"","CreateDate":"","ModifyDate":""});
+ const searchFormOptions = ref([[{"title":"瑙掕壊鍚嶇О","field":"RoleName","type":"text"},{"title":"閮ㄩ棬鍚嶇О","field":"DeptName","type":"text"},{"dataKey":"enable","data":[],"title":"鏄惁鍚敤","field":"Enable","type":"select"}],[{"title":"鍒涘缓鏃堕棿","field":"CreateDate","type":"datetime"},{"title":"淇敼鏃堕棿","field":"ModifyDate","type":"datetime"}]]);
+ const columns = ref([{field:'Role_Id',title:'瑙掕壊ID',type:'int',width:70,readonly:true,require:true,align:'left',sortable:true},
+ // {field:'ParentId',title:'鐖剁骇ID',type:'int',bind:{ key:'tree_roles',data:[]},width:70,require:true,align:'left'},
+ {field:'RoleName',title:'瑙掕壊鍚嶇О',type:'string',link:true,width:90,require:true,align:'left'},
+ {field:'Dept_Id',title:'閮ㄩ棬ID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'DeptName',title:'閮ㄩ棬鍚嶇О',type:'string',width:90,align:'left'},
+ {field:'Enable',title:'鏄惁鍚敤',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
+ {field:'OrderNo',title:'鎺掑簭',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Creator',title:'鍒涘缓浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'CreateDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
+ {field:'Modifier',title:'淇敼浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'ModifyDate',title:'淇敼鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_User.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_User.vue"
new file mode 100644
index 0000000..21530cd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/Sys_User.vue"
@@ -0,0 +1,369 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_User.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "user_Id",
+ footer: "Foots",
+ cnName: "鐢ㄦ埛绠$悊",
+ name: "Sys_User",
+ url: "/User/",
+ sortName: "user_Id",
+ });
+ const editFormFields = ref({
+ systemType: "0",
+ userName: "",
+ userTrueName: "",
+ role_Id: [],
+ deptIds: "",
+ enable: "",
+ gender: "",
+ remark: "",
+ headImageUrl: "",
+ });
+ const editFormOptions = ref([
+ [{ title: "甯愬彿", required: true, field: "userName"}],
+ [{ title: "濮撳悕", required: true, field: "userTrueName", type: "text" }],
+ [
+ {
+ dataKey: "tree_roles",
+ data: [],
+ title: "瑙掕壊",
+ required: true,
+ field: "role_Id",
+ type: "cascader",
+ },
+ ],
+ [
+ {
+ dataKey: "缁勭粐鏈烘瀯",
+ data: [],
+ title: "缁勭粐鏋勬灦",
+ field: "deptIds",
+ colSize: 12,
+ type: "treeSelect",
+ },
+ ],
+ [
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍙敤",
+ required: true,
+ field: "enable",
+ type: "select",
+ },
+ ],
+ [
+ {
+ dataKey: "gender",
+ data: [],
+ title: "鎬у埆",
+ field: "gender",
+ type: "select",
+ },
+ ],
+ [{ title: "澶囨敞", field: "remark", colSize: 12, type: "textarea" }],
+ [{ title: "澶村儚", field: "headImageUrl", type: "img" }],
+ ]);
+ const searchFormFields = ref({
+ systemType: "0",
+ userName: "",
+ userTrueName: "",
+ gender: "",
+ deptName: "",
+ role_Id: [],
+ token: "",
+ appType: [],
+ createDate: "",
+ isRegregisterPhone: "",
+ phoneNo: "",
+ enable: "",
+ lastLoginDate: "",
+ address: "",
+ email: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "甯愬彿", field: "userName" },
+ { title: "濮撳悕", field: "userTrueName" },
+ {
+ dataKey: "gender",
+ data: [],
+ title: "鎬у埆",
+ field: "gender",
+ type: "select",
+ },
+ ],
+ [
+ {
+ dataKey: "enable",
+ data: [],
+ title: "鏄惁鍙敤",
+ field: "enable",
+ type: "select",
+ },
+ { title: "娉ㄥ唽鏃堕棿", field: "createDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "user_Id",
+ title: "User_Id",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "userName",
+ title: "甯愬彿",
+ type: "string",
+ link: true,
+ width: 120,
+ readonly: true,
+ require: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "userTrueName",
+ title: "濮撳悕",
+ type: "string",
+ width: 120,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "gender",
+ title: "鎬у埆",
+ type: "int",
+ bind: { key: "gender", data: [] },
+ width: 80,
+ align: "left",
+ },
+ {
+ field: "headImageUrl",
+ title: "澶村儚",
+ type: "img",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "dept_Id",
+ title: "涓嶇敤",
+ type: "int",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "deptName",
+ title: "涓嶇敤",
+ type: "string",
+ width: 150,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "role_Id",
+ title: "瑙掕壊",
+ type: "int",
+ bind: { key: "tree_roles", data: [] },
+ width: 130,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "roleName",
+ title: "涓嶇敤",
+ type: "string",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "token",
+ title: "Token",
+ type: "string",
+ width: 180,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "appType",
+ title: "绫诲瀷",
+ type: "int",
+ bind: { key: "ut", data: [] },
+ width: 150,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "deptIds",
+ title: "缁勭粐鏋勬灦",
+ type: "string",
+ bind: { key: "缁勭粐鏈烘瀯", data: [] },
+ width: 140,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "createDate",
+ title: "娉ㄥ唽鏃堕棿",
+ type: "datetime",
+ width: 150,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "phoneNo",
+ title: "鎵嬫満鍙�",
+ type: "string",
+ width: 150,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "tel",
+ title: "Tel",
+ type: "string",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 130,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "enable",
+ title: "鏄惁鍙敤",
+ type: "byte",
+ bind: { key: "enable", data: [] },
+ width: 90,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 130,
+ hidden: true,
+ readonly: true,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "auditStatus",
+ title: "瀹℃牳鐘舵��",
+ type: "int",
+ bind: { key: "audit", data: [] },
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "auditor",
+ title: "瀹℃牳浜�",
+ type: "string",
+ width: 90,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "auditDate",
+ title: "瀹℃牳鏃堕棿",
+ type: "datetime",
+ width: 150,
+ hidden: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "lastModifyPwdDate",
+ title: "鏈�鍚庡瘑鐮佷慨鏀规椂闂�",
+ type: "datetime",
+ width: 150,
+ hidden: true,
+ align: "left",
+ sort: true,
+ },
+ {
+ field: "address",
+ title: "鍦板潃",
+ type: "string",
+ width: 190,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "email",
+ title: "Email",
+ type: "string",
+ width: 140,
+ hidden: true,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 180,
+ hidden: true,
+ align: "left",
+ },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue"
new file mode 100644
index 0000000..32eb1d3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue"
@@ -0,0 +1,317 @@
+<template>
+ <VolBox :width="500" :height="270" v-model="modifyOptions.model" title="淇敼瀵嗙爜">
+ <div style="padding:10px;20px;">
+ <VolForm ref="pwd" :formRules="modifyOptions.data" :formFields="modifyOptions.fields"></VolForm>
+ </div>
+ <template #footer>
+ <div style="text-align: center;">
+ <el-button type="primary" size="mini" icon="md-checkmark-circle" long @click="savePwd">淇濆瓨</el-button>
+ </div>
+ </template>
+ </VolBox>
+ <div class="user-info">
+ <div class="left">
+ <div>
+ <img class="header-img" :src="userInfo.img" :onerror="errorImg" />
+ <div class="text">
+ <p class="name">
+ <span style="font-size: 13px">{{ userInfo.userName }}</span>
+ </p>
+ <p class="date">
+ <span>娉ㄥ唽鏃ユ湡锛歿{ userInfo.createDate }}</span>
+ </p>
+ <p>
+ <el-button type="error" @click="modifyPwd" size="small" icon="md-lock" long>淇敼瀵嗙爜</el-button>
+ <!-- <el-button
+ style="padding: 3px 16px"
+ @click="modifyImg"
+ type="primary"
+ size="mini"
+ ghost
+ >淇敼澶村儚</el-button
+ > -->
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="right">
+ <vol-form ref="form" :load-key="true" :width="500" :formRules="editFormOptions" :formFields="editFormFields">
+ <div class="footer">
+ <!-- <el-button
+ style="margin-top: 2px"
+ type="primary"
+ size="small"
+ icon="md-checkmark-circle"
+ long
+ @click="modifyInfo"
+ >淇濆瓨</el-button
+ > -->
+ </div>
+ </vol-form>
+ </div>
+
+ </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: {
+ VolForm,
+ VolBox,
+ },
+ methods: {
+ modifyImg() {
+ this.$message.info("淇敼澶村儚");
+ },
+ modifyEmail() {
+ this.$message.info("淇敼閭");
+ },
+ modifyPhone() {
+ this.$message.info("淇敼鐢佃瘽");
+ },
+ modifyPwd() {
+ this.modifyOptions.model = true;
+ },
+ savePwd() {
+ if (!this.$refs.pwd.validate()) return;
+ if (
+ this.modifyOptions.fields.newPwd != this.modifyOptions.fields.newPwd1
+ ) {
+ return this.$message.error("涓ゆ瀵嗙爜涓嶄竴鑷�");
+ }
+ let url =
+ "/api/User/modifyPwd?oldPwd=" +
+ this.modifyOptions.fields.oldPwd +
+ "&newPwd=" +
+ this.modifyOptions.fields.newPwd;
+ this.http.post(url, {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message.error(x.message);
+ }
+ this.modifyOptions.model = false;
+ this.$Message.success(x.message);
+ this.$refs.pwd.reset();
+ });
+ },
+ modifyInfo() {
+ this.$message.info("淇敼涓汉淇℃伅");
+ },
+ },
+ created() {
+ this.http.post("/api/Sys_User/getCurrentUserInfo", {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message(x.message);
+ }
+ x.data.createDate = (x.data.createDate || "").replace("T", " ");
+ x.data.gender = x.data.gender + "";
+ this.$refs.form.reset(x.data);
+ this.userInfo.img = this.base.getImgSrc(
+ x.data.headImageUrl,
+ this.http.ipAddress
+ );
+ this.userInfo.createDate = x.data.createDate;
+ this.userInfo.userName = x.data.userTrueName;
+ this.userInfo.phoneNo = x.data.phoneNo;
+ this.userInfo.email = x.data.email;
+ // this.editFormFields = x.data;
+ });
+ },
+ data() {
+ return {
+ errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"',
+ modifyOptions: {
+ model: false,
+ fields: { oldPwd: "", newPwd: "", newPwd1: "" },
+ data: [
+ [
+ {
+ columnType: "string",
+ required: true,
+ title: "鏃у瘑鐮�",
+ field: "oldPwd",
+ },
+ ],
+ [
+ {
+ type: "password",
+ required: true,
+ title: "鏂板瘑鐮�",
+ field: "newPwd",
+ },
+ ],
+ [
+ {
+ type: "password",
+ required: true,
+ title: "纭瀵嗙爜",
+ field: "newPwd1",
+ },
+ ],
+ ],
+ },
+ binging: [{}],
+ userInfo: {
+ img: "",
+ createDate: "--",
+ userName: "--",
+ email: "",
+ phoneNo: "",
+ },
+ editFormFields: {
+ roleName: "",
+ userName: "",
+ userTrueName: "",
+ address: "",
+ gender: "",
+ remark: "",
+ },
+ editFormOptions: [
+ [
+ {
+ columnType: "string",
+ title: "鐢ㄦ埛鍚�",
+ field: "userName",
+ disabled: true,
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "瑙掕壊",
+ field: "roleName",
+ disabled: true,
+ type: "text",
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "鐪熷疄濮撳悕",
+ field: "userTrueName",
+ required: true,
+ disabled: true,
+ type: "text",
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "鍦板潃",
+ field: "address",
+ disabled: true,
+ type: "text",
+ },
+ ],
+ [
+ {
+ dataKey: "gender",
+ title: "鎬у埆",
+ field: "gender",
+ disabled: true,
+ data: [],
+ type: "select",
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "澶囨敞",
+ field: "remark",
+ disabled: true,
+ colSize: 12,
+ type: "textarea",
+ },
+ ],
+ ],
+ };
+ },
+};
+</script>
+<style scoped>
+.binding-group {
+ width: 100%;
+ padding-bottom: 20px;
+}
+
+.binding-group>>>.ivu-cell-link {
+ text-align: left;
+}
+
+.binding-group>>>.ivu-card-body {
+ padding: 0 16px;
+}
+
+.binding-group>>>.ivu-cell-title {
+ line-height: 24px;
+ font-size: 12px;
+}
+</style>
+
+<style lang="less" scoped>
+img[src=""],
+img:not([src]) {
+ opacity: 0;
+}
+
+.user-info {
+ box-shadow: #d6d6d6 0px 4px 21px;
+ position: absolute;
+ transform: translateY(-40%);
+ top: 40%;
+ /* position: relative; */
+ margin: 0 auto;
+ left: 0;
+ width: 950px;
+ right: 0;
+ text-align: center;
+ padding: 0px;
+ padding: 20px;
+
+ .text {
+ padding: 5px;
+
+ .name {
+ font-weight: bolder;
+ font-size: 15px;
+ font-weight: 900;
+ }
+
+ >p {
+ padding-top: 5px;
+ }
+ }
+
+ .header-img {
+ height: 150px;
+ width: 150px;
+ border-radius: 50%;
+ margin-right: 0px;
+ top: 4px;
+ position: relative;
+ border: 3px solid #dfdfdf;
+ }
+
+ >div {
+ float: left;
+ // height: 480px;
+ padding-top: 10px;
+ }
+
+ .left {
+ width: 320px;
+ border-right: 1px solid #eee;
+ // box-shadow: #d6d6d6 7px 4px 20px;
+ // flex: 1;
+ }
+
+ .right {
+ padding-left: 30px;
+ width: 570px;
+ // background: #fefefe;
+ // flex: 3;
+ }
+}
+</style>
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/system/Sys_Department.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/system/Sys_Department.vue"
new file mode 100644
index 0000000..0ee20af
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/system/Sys_Department.vue"
@@ -0,0 +1,71 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/system/Sys_Department.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/system/Sys_Department.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'DepartmentId',
+ footer: "Foots",
+ cnName: '缁勭粐鏋舵瀯',
+ name: 'system/Sys_Department',
+ url: "/Sys_Department/",
+ sortName: "CreateDate"
+ });
+ const editFormFields = ref({"DepartmentName":"","DepartmentCode":"","ParentId":[],"Remark":""});
+ const editFormOptions = ref([[{"title":"缁勭粐鍚嶇О","required":true,"field":"DepartmentName"}],
+ [{"title":"缁勭粐缂栧彿","field":"DepartmentCode"}],
+ [{"dataKey":"缁勭粐鏈烘瀯","data":[],"title":"涓婄骇缁勭粐","field":"ParentId","type":"cascader"}],
+ [{"title":"澶囨敞","field":"Remark","type":"textarea"}]]);
+ const searchFormFields = ref({"DepartmentName":"","DepartmentCode":"","Creator":"","CreateDate":""});
+ const searchFormOptions = ref([[{"title":"缁勭粐鍚嶇О","field":"DepartmentName","type":"like"},{"title":"缁勭粐缂栧彿","field":"DepartmentCode"},{"title":"鍒涘缓浜�","field":"Creator"},{"title":"鍒涘缓鏃堕棿","field":"CreateDate","type":"datetime"}]]);
+ const columns = ref([{field:'DepartmentId',title:'DepartmentId',type:'guid',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'DepartmentName',title:'缁勭粐鍚嶇О',type:'string',link:true,width:180,require:true,align:'left',sort:true},
+ {field:'DepartmentCode',title:'缁勭粐缂栧彿',type:'string',width:90,align:'left'},
+ {field:'ParentId',title:'涓婄骇缁勭粐',type:'guid',bind:{ key:'缁勭粐鏈烘瀯',data:[]},width:110,hidden:true,align:'left'},
+ {field:'DepartmentType',title:'缁勭粐绫诲瀷',type:'string',width:110,hidden:true,align:'left'},
+ {field:'Enable',title:'鏄惁鍙敤',type:'int',width:110,hidden:true,align:'left'},
+ {field:'Remark',title:'澶囨敞',type:'string',width:100,align:'left'},
+ {field:'CreateID',title:'CreateID',type:'int',width:100,hidden:true,align:'left'},
+ {field:'Creator',title:'鍒涘缓浜�',type:'string',width:90,align:'left'},
+ {field:'CreateDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:145,align:'left',sort:true},
+ {field:'ModifyID',title:'ModifyID',type:'int',width:100,hidden:true,align:'left'},
+ {field:'Modifier',title:'淇敼浜�',type:'string',width:90,align:'left'},
+ {field:'ModifyDate',title:'淇敼鏃堕棿',type:'datetime',width:140,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/test.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/test.vue"
new file mode 100644
index 0000000..64786be
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/system/test.vue"
@@ -0,0 +1,18 @@
+<template>
+
+</template>
+
+<script>
+export default {
+ props:{
+ list: {
+ type: Array,
+ default: [],
+ },
+ }
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue"
new file mode 100644
index 0000000..bffac18
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue"
@@ -0,0 +1,252 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/taskinfo/task.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "taskId",
+ footer: "Foots",
+ cnName: "浠诲姟淇℃伅",
+ name: "task",
+ url: "/Task/",
+ sortName: "CreateDate",
+ });
+ const editFormFields = ref({
+ taskNum:"",
+ palletCode: "",
+ roadway: "",
+ taskType:"",
+ taskState:"",
+ wmsId:"",
+ sourceAddress: "",
+ targetAddress: "",
+ currentAddress: "",
+ nextAddress: "",
+ creater: "",
+ createDate: "",
+ grade: ""
+ });
+ const editFormOptions = ref([[{ title: "浼樺厛绾�", field: "grade", type: "int" },]]);
+ const searchFormFields = ref({
+ taskNum: "",
+ palletCode: "",
+ roadway: "",
+ sourceAddress: "",
+ targetAddress: "",
+ currentAddress: "",
+ nextAddress: "",
+ creater: "",
+ createDate: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+ { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
+ {
+ title: "浠诲姟绫诲瀷",
+ field: "taskType",
+ type: "selectList",
+ dataKey: "taskType",
+ data: [],
+ },
+ {
+ title: "浠诲姟鐘舵��",
+ field: "taskState",
+ type: "selectList",
+ dataKey: "taskState",
+ data: [],
+ },
+ ],
+ [
+ { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
+ { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
+ { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "like" },
+ { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "like" },
+ ],
+ [
+ { title: "宸烽亾鍙�", field: "roadway", type: "like" },
+ { title: "鍒涘缓浜�", field: "creater", type: "like" },
+ { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "taskId",
+ title: "TaskId",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "taskNum",
+ title: "浠诲姟鍙�",
+ type: "int",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "palletCode",
+ title: "鎵樼洏缂栧彿",
+ type: "string",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "roadway",
+ title: "宸烽亾鍙�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "taskType",
+ title: "浠诲姟绫诲瀷",
+ type: "int",
+ width: 90,
+ align: "left",
+ bind: { key: "taskType", data: [] },
+ },
+ {
+ field: "taskState",
+ title: "浠诲姟鐘舵��",
+ type: "int",
+ width: 150,
+ align: "left",
+ bind: { key: "taskState", data: [] },
+ },
+ {
+ field: "sourceAddress",
+ title: "璧峰鍦板潃",
+ type: "int",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "targetAddress",
+ title: "鐩爣鍦板潃",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "currentAddress",
+ title: "褰撳墠浣嶇疆",
+ type: "string",
+ width: 110,
+ align: "left",
+ },
+ {
+ field: "nextAddress",
+ title: "涓嬩竴浣嶇疆",
+ type: "string",
+ width: 110,
+ align: "left",
+ },
+ {
+ field: "exceptionMessage",
+ title: "寮傚父淇℃伅",
+ type: "string",
+ width: 90,
+ align: "left",
+ hidden: true,
+ },
+ {
+ field: "grade",
+ title: "浼樺厛绾�",
+ type: "int",
+ width: 60,
+ align: "left",
+ },
+ {
+ field: "dispatchertime",
+ title: "浠诲姟涓嬪彂鏃堕棿",
+ type: "datetime",
+ width: 110,
+ align: "left",
+ },
+ {
+ field: "wmsId",
+ title: "WMS浠诲姟涓婚敭",
+ type: "int",
+ width: 120,
+ align: "left",
+ hidden: true,
+ },
+
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 150,
+ align: "left",
+ },
+
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ hidden: true,
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue"
new file mode 100644
index 0000000..a043770
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue"
@@ -0,0 +1,246 @@
+
+<template>
+ <view-grid
+ ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend"
+ >
+ </view-grid>
+</template>
+ <script>
+import extend from "@/extension/taskinfo/task_Hty.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: "taskId",
+ footer: "Foots",
+ cnName: "浠诲姟淇℃伅",
+ name: "task_Hty",
+ url: "/Task_Hty/",
+ sortName: "CreateDate",
+ });
+ const editFormFields = ref({});
+ const editFormOptions = ref([]);
+ const searchFormFields = ref({
+ taskNum: "",
+ palletCode: "",
+ roadway: "",
+ sourceAddress: "",
+ targetAddress: "",
+ currentAddress: "",
+ nextAddress: "",
+ creater: "",
+ createDate: "",
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+ { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
+ {
+ title: "浠诲姟绫诲瀷",
+ field: "taskType",
+ type: "selectList",
+ dataKey: "taskType",
+ data: [],
+ },
+ {
+ title: "浠诲姟鐘舵��",
+ field: "taskState",
+ type: "selectList",
+ dataKey: "taskState",
+ data: [],
+ },
+ ],
+ [
+ { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
+ { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
+ { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "like" },
+ { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "like" },
+ ],
+ [
+ { title: "宸烽亾鍙�", field: "roadway", type: "like" },
+ { title: "鐢熶骇浜х嚎", field: "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+ { title: "鍒涘缓浜�", field: "creater", type: "like" },
+ { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([
+ {
+ field: "taskId",
+ title: "TaskId",
+ type: "int",
+ width: 90,
+ hidden: true,
+ readonly: true,
+ require: true,
+ align: "left",
+ },
+ {
+ field: "taskNum",
+ title: "浠诲姟鍙�",
+ type: "int",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "palletCode",
+ title: "鎵樼洏缂栧彿",
+ type: "string",
+ width: 200,
+ align: "left",
+ },
+ {
+ field: "roadway",
+ title: "宸烽亾鍙�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "taskType",
+ title: "浠诲姟绫诲瀷",
+ type: "int",
+ width: 90,
+ align: "left",
+ bind: { key: "taskType", data: [] },
+ },
+ {
+ field: "taskState",
+ title: "浠诲姟鐘舵��",
+ type: "int",
+ width: 150,
+ align: "left",
+ bind: { key: "taskState", data: [] },
+ },
+ {
+ field: "sourceAddress",
+ title: "璧峰鍦板潃",
+ type: "int",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "targetAddress",
+ title: "鐩爣鍦板潃",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "currentAddress",
+ title: "褰撳墠浣嶇疆",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "nextAddress",
+ title: "涓嬩竴浣嶇疆",
+ type: "string",
+ width: 120,
+ align: "left",
+ },
+ {
+ field: "productionLine",
+ title: "浜х嚎",
+ type: "string",
+ width: 70,
+ align: "left",
+ bind: { key: "ProductionLine", data: [] }
+ },
+ {
+ field: "exceptionMessage",
+ title: "寮傚父淇℃伅",
+ type: "string",
+ width: 90,
+ align: "left",
+ hidden: true,
+ },
+ {
+ field: "grade",
+ title: "浼樺厛绾�",
+ type: "int",
+ width: 60,
+ align: "left",
+ },
+ {
+ field: "dispatchertime",
+ title: "浠诲姟涓嬪彂鏃堕棿",
+ type: "datetime",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "wMSId",
+ title: "WMS浠诲姟涓婚敭",
+ type: "int",
+ width: 120,
+ align: "left",
+ hidden: true,
+ },
+
+ {
+ field: "createDate",
+ title: "鍒涘缓鏃堕棿",
+ type: "datetime",
+ width: 150,
+ align: "left",
+ },
+ {
+ field: "modifyDate",
+ title: "淇敼鏃堕棿",
+ type: "datetime",
+ width: 160,
+ align: "left",
+ },
+ {
+ field: "creater",
+ title: "鍒涘缓浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "modifier",
+ title: "淇敼浜�",
+ type: "string",
+ width: 90,
+ align: "left",
+ },
+ {
+ field: "remark",
+ title: "澶囨敞",
+ type: "string",
+ width: 100,
+ align: "left",
+ hidden: true,
+ },
+ ]);
+ const detail = ref({
+ cnName: "",
+ table: "",
+ columns: [],
+ sortName: "",
+ key: "",
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/yarn.lock" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/yarn.lock"
new file mode 100644
index 0000000..538daa3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/yarn.lock"
@@ -0,0 +1,11095 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@achrinza/node-ipc@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz"
+ integrity sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==
+ dependencies:
+ "@node-ipc/js-queue" "2.0.3"
+ event-pubsub "4.3.0"
+ js-message "1.0.7"
+
+"@ampproject/remapping@^2.2.0":
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz"
+ integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.25.9":
+ version "7.26.2"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0":
+ version "7.26.2"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.2.tgz"
+ integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
+ version "7.24.3"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.24.3.tgz"
+ integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.24.2"
+ "@babel/generator" "^7.24.1"
+ "@babel/helper-compilation-targets" "^7.23.6"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helpers" "^7.24.1"
+ "@babel/parser" "^7.24.1"
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.1"
+ "@babel/types" "^7.24.0"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.24.1", "@babel/generator@^7.25.9":
+ version "7.26.2"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.2.tgz"
+ integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==
+ dependencies:
+ "@babel/parser" "^7.26.2"
+ "@babel/types" "^7.26.0"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^3.0.2"
+
+"@babel/helper-annotate-as-pure@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz"
+ integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==
+ dependencies:
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz"
+ integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.9.6":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz"
+ integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==
+ dependencies:
+ "@babel/compat-data" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz"
+ integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ semver "^6.3.1"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz"
+ integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ regexpu-core "^6.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3":
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz"
+ integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+
+"@babel/helper-member-expression-to-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz"
+ integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.8.3":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz"
+ integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-module-imports@~7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
+"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.25.9":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz"
+ integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/helper-optimise-call-expression@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz"
+ integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==
+ dependencies:
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz"
+ integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
+
+"@babel/helper-remap-async-to-generator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz"
+ integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-wrap-function" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/helper-replace-supers@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz"
+ integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/helper-simple-access@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz"
+ integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz"
+ integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
+"@babel/helper-validator-option@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz"
+ integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
+
+"@babel/helper-wrap-function@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz"
+ integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==
+ dependencies:
+ "@babel/template" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helpers@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.24.1.tgz"
+ integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
+ dependencies:
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.1"
+ "@babel/types" "^7.24.0"
+
+"@babel/parser@^7.23.9", "@babel/parser@^7.24.1", "@babel/parser@^7.25.9", "@babel/parser@^7.26.2", "@babel/parser@^7.7.0":
+ version "7.26.2"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz"
+ integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==
+ dependencies:
+ "@babel/types" "^7.26.0"
+
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz"
+ integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz"
+ integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz"
+ integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz"
+ integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/plugin-transform-optional-chaining" "^7.25.9"
+
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz"
+ integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/plugin-proposal-class-properties@^7.8.3":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz"
+ integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-proposal-decorators@^7.8.3":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz"
+ integrity sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/plugin-syntax-decorators" "^7.25.9"
+
+"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
+ version "7.21.0-placeholder-for-preset-env.2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz"
+ integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
+
+"@babel/plugin-syntax-decorators@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz"
+ integrity sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-import-assertions@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz"
+ integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-syntax-import-attributes@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz"
+ integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.8.3":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz"
+ integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.0"
+
+"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz"
+ integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-arrow-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz"
+ integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-async-generator-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz"
+ integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-remap-async-to-generator" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/plugin-transform-async-to-generator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz"
+ integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-remap-async-to-generator" "^7.25.9"
+
+"@babel/plugin-transform-block-scoped-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz"
+ integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-block-scoping@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz"
+ integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-class-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz"
+ integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-class-static-block@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz"
+ integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-classes@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz"
+ integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz"
+ integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/template" "^7.25.9"
+
+"@babel/plugin-transform-destructuring@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz"
+ integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-dotall-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz"
+ integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-duplicate-keys@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz"
+ integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz"
+ integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-dynamic-import@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz"
+ integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-exponentiation-operator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz"
+ integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-export-namespace-from@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz"
+ integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-for-of@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz"
+ integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+
+"@babel/plugin-transform-function-name@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz"
+ integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/plugin-transform-json-strings@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz"
+ integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz"
+ integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-logical-assignment-operators@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz"
+ integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-member-expression-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz"
+ integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-modules-amd@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz"
+ integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-modules-commonjs@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz"
+ integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-simple-access" "^7.25.9"
+
+"@babel/plugin-transform-modules-systemjs@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz"
+ integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/plugin-transform-modules-umd@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz"
+ integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz"
+ integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-new-target@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz"
+ integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz"
+ integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-numeric-separator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz"
+ integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-object-rest-spread@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz"
+ integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/plugin-transform-parameters" "^7.25.9"
+
+"@babel/plugin-transform-object-super@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz"
+ integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
+
+"@babel/plugin-transform-optional-catch-binding@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz"
+ integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-optional-chaining@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz"
+ integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+
+"@babel/plugin-transform-parameters@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz"
+ integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-private-methods@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz"
+ integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-private-property-in-object@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz"
+ integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-property-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz"
+ integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-regenerator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz"
+ integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ regenerator-transform "^0.15.2"
+
+"@babel/plugin-transform-regexp-modifiers@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz"
+ integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-reserved-words@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz"
+ integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-runtime@^7.11.0":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz"
+ integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ babel-plugin-polyfill-corejs2 "^0.4.10"
+ babel-plugin-polyfill-corejs3 "^0.10.6"
+ babel-plugin-polyfill-regenerator "^0.6.1"
+ semver "^6.3.1"
+
+"@babel/plugin-transform-shorthand-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz"
+ integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-spread@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz"
+ integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+
+"@babel/plugin-transform-sticky-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz"
+ integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-template-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz"
+ integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-typeof-symbol@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz"
+ integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-unicode-escapes@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz"
+ integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-unicode-property-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz"
+ integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-unicode-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz"
+ integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-unicode-sets-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz"
+ integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/preset-env@^7.11.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.26.0.tgz"
+ integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==
+ dependencies:
+ "@babel/compat-data" "^7.26.0"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9"
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9"
+ "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
+ "@babel/plugin-syntax-import-assertions" "^7.26.0"
+ "@babel/plugin-syntax-import-attributes" "^7.26.0"
+ "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
+ "@babel/plugin-transform-arrow-functions" "^7.25.9"
+ "@babel/plugin-transform-async-generator-functions" "^7.25.9"
+ "@babel/plugin-transform-async-to-generator" "^7.25.9"
+ "@babel/plugin-transform-block-scoped-functions" "^7.25.9"
+ "@babel/plugin-transform-block-scoping" "^7.25.9"
+ "@babel/plugin-transform-class-properties" "^7.25.9"
+ "@babel/plugin-transform-class-static-block" "^7.26.0"
+ "@babel/plugin-transform-classes" "^7.25.9"
+ "@babel/plugin-transform-computed-properties" "^7.25.9"
+ "@babel/plugin-transform-destructuring" "^7.25.9"
+ "@babel/plugin-transform-dotall-regex" "^7.25.9"
+ "@babel/plugin-transform-duplicate-keys" "^7.25.9"
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9"
+ "@babel/plugin-transform-dynamic-import" "^7.25.9"
+ "@babel/plugin-transform-exponentiation-operator" "^7.25.9"
+ "@babel/plugin-transform-export-namespace-from" "^7.25.9"
+ "@babel/plugin-transform-for-of" "^7.25.9"
+ "@babel/plugin-transform-function-name" "^7.25.9"
+ "@babel/plugin-transform-json-strings" "^7.25.9"
+ "@babel/plugin-transform-literals" "^7.25.9"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.25.9"
+ "@babel/plugin-transform-member-expression-literals" "^7.25.9"
+ "@babel/plugin-transform-modules-amd" "^7.25.9"
+ "@babel/plugin-transform-modules-commonjs" "^7.25.9"
+ "@babel/plugin-transform-modules-systemjs" "^7.25.9"
+ "@babel/plugin-transform-modules-umd" "^7.25.9"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9"
+ "@babel/plugin-transform-new-target" "^7.25.9"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9"
+ "@babel/plugin-transform-numeric-separator" "^7.25.9"
+ "@babel/plugin-transform-object-rest-spread" "^7.25.9"
+ "@babel/plugin-transform-object-super" "^7.25.9"
+ "@babel/plugin-transform-optional-catch-binding" "^7.25.9"
+ "@babel/plugin-transform-optional-chaining" "^7.25.9"
+ "@babel/plugin-transform-parameters" "^7.25.9"
+ "@babel/plugin-transform-private-methods" "^7.25.9"
+ "@babel/plugin-transform-private-property-in-object" "^7.25.9"
+ "@babel/plugin-transform-property-literals" "^7.25.9"
+ "@babel/plugin-transform-regenerator" "^7.25.9"
+ "@babel/plugin-transform-regexp-modifiers" "^7.26.0"
+ "@babel/plugin-transform-reserved-words" "^7.25.9"
+ "@babel/plugin-transform-shorthand-properties" "^7.25.9"
+ "@babel/plugin-transform-spread" "^7.25.9"
+ "@babel/plugin-transform-sticky-regex" "^7.25.9"
+ "@babel/plugin-transform-template-literals" "^7.25.9"
+ "@babel/plugin-transform-typeof-symbol" "^7.25.9"
+ "@babel/plugin-transform-unicode-escapes" "^7.25.9"
+ "@babel/plugin-transform-unicode-property-regex" "^7.25.9"
+ "@babel/plugin-transform-unicode-regex" "^7.25.9"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.25.9"
+ "@babel/preset-modules" "0.1.6-no-external-plugins"
+ babel-plugin-polyfill-corejs2 "^0.4.10"
+ babel-plugin-polyfill-corejs3 "^0.10.6"
+ babel-plugin-polyfill-regenerator "^0.6.1"
+ core-js-compat "^3.38.1"
+ semver "^6.3.1"
+
+"@babel/preset-modules@0.1.6-no-external-plugins":
+ version "0.1.6-no-external-plugins"
+ resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz"
+ integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/runtime-corejs2@^7.0.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.26.0.tgz"
+ integrity sha512-AQKSxUdaM7uTEGFmLZj1LOgX3LaLdt4udjqywaVdN6R5P2KAgqtBkDW4TS2ySRYNqcKmEe8Xv96jegHJNNb7Gg==
+ dependencies:
+ core-js "^2.6.12"
+ regenerator-runtime "^0.14.0"
+
+"@babel/runtime-corejs3@^7.11.2":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz"
+ integrity sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==
+ dependencies:
+ core-js-pure "^3.30.2"
+ regenerator-runtime "^0.14.0"
+
+"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.1.tgz"
+ integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.23.9", "@babel/template@^7.24.0", "@babel/template@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz"
+ integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
+ dependencies:
+ "@babel/code-frame" "^7.25.9"
+ "@babel/parser" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/traverse@^7.23.9", "@babel/traverse@^7.24.1", "@babel/traverse@^7.25.9", "@babel/traverse@^7.7.0":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.9.tgz"
+ integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==
+ dependencies:
+ "@babel/code-frame" "^7.25.9"
+ "@babel/generator" "^7.25.9"
+ "@babel/parser" "^7.25.9"
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.25.9"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
+"@babel/types@^7.22.15", "@babel/types@^7.23.9", "@babel/types@^7.24.0", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz"
+ integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
+"@ctrl/tinycolor@^3.4.1":
+ version "3.6.1"
+ resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz"
+ integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
+
+"@element-plus/icons-vue@^2.1.0", "@element-plus/icons-vue@^2.3.1":
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz"
+ integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
+
+"@floating-ui/core@^1.0.0":
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.0.tgz"
+ integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==
+ dependencies:
+ "@floating-ui/utils" "^0.2.1"
+
+"@floating-ui/dom@^1.0.1":
+ version "1.6.3"
+ resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.3.tgz"
+ integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==
+ dependencies:
+ "@floating-ui/core" "^1.0.0"
+ "@floating-ui/utils" "^0.2.0"
+
+"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.1.tgz"
+ integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==
+
+"@hapi/address@2.x.x":
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz"
+ integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+
+"@hapi/bourne@1.x.x":
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz"
+ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
+
+"@hapi/hoek@^8.3.0", "@hapi/hoek@8.x.x":
+ version "8.5.1"
+ resolved "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz"
+ integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
+
+"@hapi/joi@^15.0.1":
+ version "15.1.1"
+ resolved "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz"
+ integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
+ dependencies:
+ "@hapi/address" "2.x.x"
+ "@hapi/bourne" "1.x.x"
+ "@hapi/hoek" "8.x.x"
+ "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+ version "3.1.6"
+ resolved "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz"
+ integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
+ dependencies:
+ "@hapi/hoek" "^8.3.0"
+
+"@intervolga/optimize-cssnano-plugin@^1.0.5":
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz"
+ integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==
+ dependencies:
+ cssnano "^4.0.0"
+ cssnano-preset-default "^4.0.0"
+ postcss "^7.0.0"
+
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz"
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+ dependencies:
+ string-width "^5.1.2"
+ string-width-cjs "npm:string-width@^4.2.0"
+ strip-ansi "^7.0.1"
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+ wrap-ansi "^8.1.0"
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.5"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
+ integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@microsoft/signalr@^6.0.4":
+ version "6.0.25"
+ resolved "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.25.tgz"
+ integrity sha512-8AzrpxS+E0yn1tXSlv7+UlURLmSxTQDgbvOT0pGKXjZT7MkhnDP+/GLuk7veRtUjczou/x32d9PHhYlr2NBy6Q==
+ dependencies:
+ abort-controller "^3.0.0"
+ eventsource "^1.0.7"
+ fetch-cookie "^0.11.0"
+ node-fetch "^2.6.7"
+ ws "^7.4.5"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@node-ipc/js-queue@2.0.3":
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz"
+ integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==
+ dependencies:
+ easy-stack "1.0.1"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@one-ini/wasm@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/@one-ini/wasm/-/wasm-0.1.1.tgz"
+ integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
+
+"@pkgjs/parseargs@^0.11.0":
+ version "0.11.0"
+ resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
+ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+
+"@popperjs/core@^2.11.8", "@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
+ version "2.11.8"
+ resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
+"@soda/friendly-errors-webpack-plugin@^1.7.1":
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz"
+ integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==
+ dependencies:
+ chalk "^3.0.0"
+ error-stack-parser "^2.0.6"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+
+"@soda/get-current-script@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz"
+ integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==
+
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
+"@types/body-parser@*":
+ version "1.19.5"
+ resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz"
+ integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/connect-history-api-fallback@*":
+ version "1.5.4"
+ resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz"
+ integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/node" "*"
+
+"@types/connect@*":
+ version "3.4.38"
+ resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz"
+ integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
+ dependencies:
+ "@types/node" "*"
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz"
+ integrity sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+ "@types/send" "*"
+
+"@types/express@*":
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/@types/express/-/express-5.0.0.tgz"
+ integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^5.0.0"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/glob@^7.1.1":
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/http-errors@*":
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz"
+ integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
+
+"@types/http-proxy@^1.17.5":
+ version "1.17.15"
+ resolved "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.15.tgz"
+ integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
+ version "7.0.15"
+ resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz"
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
+
+"@types/lodash-es@*", "@types/lodash-es@^4.17.6":
+ version "4.17.12"
+ resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz"
+ integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*", "@types/lodash@^4.14.182":
+ version "4.17.0"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.0.tgz"
+ integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==
+
+"@types/mime@^1":
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz"
+ integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
+
+"@types/minimatch@*":
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz"
+ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
+
+"@types/minimist@^1.2.0":
+ version "1.2.5"
+ resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz"
+ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
+
+"@types/node@*":
+ version "18.19.29"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-18.19.29.tgz"
+ integrity sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==
+ dependencies:
+ undici-types "~5.26.4"
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.4"
+ resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz"
+ integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
+
+"@types/q@^1.5.1":
+ version "1.5.8"
+ resolved "https://registry.npmmirror.com/@types/q/-/q-1.5.8.tgz"
+ integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
+
+"@types/qs@*":
+ version "6.9.17"
+ resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.17.tgz"
+ integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==
+
+"@types/range-parser@*":
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz"
+ integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
+
+"@types/send@*":
+ version "0.17.4"
+ resolved "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz"
+ integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
+"@types/serve-static@*":
+ version "1.15.7"
+ resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz"
+ integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
+ dependencies:
+ "@types/http-errors" "*"
+ "@types/node" "*"
+ "@types/send" "*"
+
+"@types/source-list-map@*":
+ version "0.1.6"
+ resolved "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.6.tgz"
+ integrity sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==
+
+"@types/tapable@^1":
+ version "1.0.12"
+ resolved "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.12.tgz"
+ integrity sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==
+
+"@types/uglify-js@*":
+ version "3.17.5"
+ resolved "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.17.5.tgz"
+ integrity sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/web-bluetooth@^0.0.16":
+ version "0.0.16"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
+ integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
+
+"@types/webpack-dev-server@^3.11.0":
+ version "3.11.6"
+ resolved "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz"
+ integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==
+ dependencies:
+ "@types/connect-history-api-fallback" "*"
+ "@types/express" "*"
+ "@types/serve-static" "*"
+ "@types/webpack" "^4"
+ http-proxy-middleware "^1.0.0"
+
+"@types/webpack-sources@*":
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.3.tgz"
+ integrity sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==
+ dependencies:
+ "@types/node" "*"
+ "@types/source-list-map" "*"
+ source-map "^0.7.3"
+
+"@types/webpack@^4", "@types/webpack@^4.0.0":
+ version "4.41.40"
+ resolved "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.40.tgz"
+ integrity sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==
+ dependencies:
+ "@types/node" "*"
+ "@types/tapable" "^1"
+ "@types/uglify-js" "*"
+ "@types/webpack-sources" "*"
+ anymatch "^3.0.0"
+ source-map "^0.6.0"
+
+"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz"
+ integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==
+
+"@vue/babel-helper-vue-transform-on@1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz"
+ integrity sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==
+
+"@vue/babel-plugin-jsx@^1.0.3":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz"
+ integrity sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==
+ dependencies:
+ "@babel/helper-module-imports" "~7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-jsx" "^7.23.3"
+ "@babel/template" "^7.23.9"
+ "@babel/traverse" "^7.23.9"
+ "@babel/types" "^7.23.9"
+ "@vue/babel-helper-vue-transform-on" "1.2.2"
+ "@vue/babel-plugin-resolve-type" "1.2.2"
+ camelcase "^6.3.0"
+ html-tags "^3.3.1"
+ svg-tags "^1.0.0"
+
+"@vue/babel-plugin-resolve-type@1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz"
+ integrity sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/helper-module-imports" "~7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/parser" "^7.23.9"
+ "@vue/compiler-sfc" "^3.4.15"
+
+"@vue/babel-plugin-transform-vue-jsx@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz"
+ integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+ html-tags "^2.0.0"
+ lodash.kebabcase "^4.1.1"
+ svg-tags "^1.0.0"
+
+"@vue/babel-preset-app@^4.5.19":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz"
+ integrity sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==
+ dependencies:
+ "@babel/core" "^7.11.0"
+ "@babel/helper-compilation-targets" "^7.9.6"
+ "@babel/helper-module-imports" "^7.8.3"
+ "@babel/plugin-proposal-class-properties" "^7.8.3"
+ "@babel/plugin-proposal-decorators" "^7.8.3"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-jsx" "^7.8.3"
+ "@babel/plugin-transform-runtime" "^7.11.0"
+ "@babel/preset-env" "^7.11.0"
+ "@babel/runtime" "^7.11.0"
+ "@vue/babel-plugin-jsx" "^1.0.3"
+ "@vue/babel-preset-jsx" "^1.2.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+ core-js "^3.6.5"
+ core-js-compat "^3.6.5"
+ semver "^6.1.0"
+
+"@vue/babel-preset-jsx@^1.2.4":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz"
+ integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==
+ dependencies:
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+ "@vue/babel-sugar-composition-api-inject-h" "^1.4.0"
+ "@vue/babel-sugar-composition-api-render-instance" "^1.4.0"
+ "@vue/babel-sugar-functional-vue" "^1.4.0"
+ "@vue/babel-sugar-inject-h" "^1.4.0"
+ "@vue/babel-sugar-v-model" "^1.4.0"
+ "@vue/babel-sugar-v-on" "^1.4.0"
+
+"@vue/babel-sugar-composition-api-inject-h@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz"
+ integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-composition-api-render-instance@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz"
+ integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-functional-vue@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz"
+ integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-inject-h@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz"
+ integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-v-model@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz"
+ integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+ camelcase "^5.0.0"
+ html-tags "^2.0.0"
+ svg-tags "^1.0.0"
+
+"@vue/babel-sugar-v-on@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz"
+ integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+ camelcase "^5.0.0"
+
+"@vue/cli-overlay@^4.5.19":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz"
+ integrity sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==
+
+"@vue/cli-plugin-babel@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz"
+ integrity sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==
+ dependencies:
+ "@babel/core" "^7.11.0"
+ "@vue/babel-preset-app" "^4.5.19"
+ "@vue/cli-shared-utils" "^4.5.19"
+ babel-loader "^8.1.0"
+ cache-loader "^4.1.0"
+ thread-loader "^2.1.3"
+ webpack "^4.0.0"
+
+"@vue/cli-plugin-eslint@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz"
+ integrity sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.19"
+ eslint-loader "^2.2.1"
+ globby "^9.2.0"
+ inquirer "^7.1.0"
+ webpack "^4.0.0"
+ yorkie "^2.0.0"
+
+"@vue/cli-plugin-router@^4.5.19", "@vue/cli-plugin-router@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.19.tgz"
+ integrity sha512-3icGzH1IbVYmMMsOwYa0lal/gtvZLebFXdE5hcQJo2mnTwngXGMTyYAzL56EgHBPjbMmRpyj6Iw9k4aVInVX6A==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.19"
+
+"@vue/cli-plugin-unit-mocha@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.19.tgz"
+ integrity sha512-cGFOIzTu8ncQIpM2qVStPnEhru0TBQyW4RaynHmMm1wkZ82gUBy/cg9c8op3PJwpzIb3rq9UyH6RsT0a0bjs2Q==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.19"
+ jsdom "^15.2.1"
+ jsdom-global "^3.0.2"
+ mocha "^6.2.2"
+ mochapack "^1.1.15"
+
+"@vue/cli-plugin-vuex@^4.5.19", "@vue/cli-plugin-vuex@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz"
+ integrity sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==
+
+"@vue/cli-service@^3.0.0 || ^4.0.0-0", "@vue/cli-service@~4.5.0":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.19.tgz"
+ integrity sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==
+ dependencies:
+ "@intervolga/optimize-cssnano-plugin" "^1.0.5"
+ "@soda/friendly-errors-webpack-plugin" "^1.7.1"
+ "@soda/get-current-script" "^1.0.0"
+ "@types/minimist" "^1.2.0"
+ "@types/webpack" "^4.0.0"
+ "@types/webpack-dev-server" "^3.11.0"
+ "@vue/cli-overlay" "^4.5.19"
+ "@vue/cli-plugin-router" "^4.5.19"
+ "@vue/cli-plugin-vuex" "^4.5.19"
+ "@vue/cli-shared-utils" "^4.5.19"
+ "@vue/component-compiler-utils" "^3.1.2"
+ "@vue/preload-webpack-plugin" "^1.1.0"
+ "@vue/web-component-wrapper" "^1.2.0"
+ acorn "^7.4.0"
+ acorn-walk "^7.1.1"
+ address "^1.1.2"
+ autoprefixer "^9.8.6"
+ browserslist "^4.12.0"
+ cache-loader "^4.1.0"
+ case-sensitive-paths-webpack-plugin "^2.3.0"
+ cli-highlight "^2.1.4"
+ clipboardy "^2.3.0"
+ cliui "^6.0.0"
+ copy-webpack-plugin "^5.1.1"
+ css-loader "^3.5.3"
+ cssnano "^4.1.10"
+ debug "^4.1.1"
+ default-gateway "^5.0.5"
+ dotenv "^8.2.0"
+ dotenv-expand "^5.1.0"
+ file-loader "^4.2.0"
+ fs-extra "^7.0.1"
+ globby "^9.2.0"
+ hash-sum "^2.0.0"
+ html-webpack-plugin "^3.2.0"
+ launch-editor-middleware "^2.2.1"
+ lodash.defaultsdeep "^4.6.1"
+ lodash.mapvalues "^4.6.0"
+ lodash.transform "^4.6.0"
+ mini-css-extract-plugin "^0.9.0"
+ minimist "^1.2.5"
+ pnp-webpack-plugin "^1.6.4"
+ portfinder "^1.0.26"
+ postcss-loader "^3.0.0"
+ ssri "^8.0.1"
+ terser-webpack-plugin "^1.4.4"
+ thread-loader "^2.1.3"
+ url-loader "^2.2.0"
+ vue-loader "^15.9.2"
+ vue-style-loader "^4.1.2"
+ webpack "^4.0.0"
+ webpack-bundle-analyzer "^3.8.0"
+ webpack-chain "^6.4.0"
+ webpack-dev-server "^3.11.0"
+ webpack-merge "^4.2.2"
+ optionalDependencies:
+ vue-loader-v16 "npm:vue-loader@^16.1.0"
+
+"@vue/cli-shared-utils@^4.5.19":
+ version "4.5.19"
+ resolved "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.19.tgz"
+ integrity sha512-JYpdsrC/d9elerKxbEUtmSSU6QRM60rirVubOewECHkBHj+tLNznWq/EhCjswywtePyLaMUK25eTqnTSZlEE+g==
+ dependencies:
+ "@achrinza/node-ipc" "9.2.2"
+ "@hapi/joi" "^15.0.1"
+ chalk "^2.4.2"
+ execa "^1.0.0"
+ launch-editor "^2.2.1"
+ lru-cache "^5.1.1"
+ open "^6.3.0"
+ ora "^3.4.0"
+ read-pkg "^5.1.1"
+ request "^2.88.2"
+ semver "^6.1.0"
+ strip-ansi "^6.0.0"
+
+"@vue/compiler-core@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz"
+ integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==
+ dependencies:
+ "@babel/parser" "^7.23.9"
+ "@vue/shared" "3.4.21"
+ entities "^4.5.0"
+ estree-walker "^2.0.2"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-dom@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz"
+ integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==
+ dependencies:
+ "@vue/compiler-core" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/compiler-sfc@^3.0.0", "@vue/compiler-sfc@^3.0.0-beta.14", "@vue/compiler-sfc@^3.4.15", "@vue/compiler-sfc@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz"
+ integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==
+ dependencies:
+ "@babel/parser" "^7.23.9"
+ "@vue/compiler-core" "3.4.21"
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/compiler-ssr" "3.4.21"
+ "@vue/shared" "3.4.21"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.7"
+ postcss "^8.4.35"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz"
+ integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==
+ dependencies:
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2":
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz"
+ integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==
+ dependencies:
+ consolidate "^0.15.1"
+ hash-sum "^1.0.2"
+ lru-cache "^4.1.2"
+ merge-source-map "^1.1.0"
+ postcss "^7.0.36"
+ postcss-selector-parser "^6.0.2"
+ source-map "~0.6.1"
+ vue-template-es2015-compiler "^1.9.0"
+ optionalDependencies:
+ prettier "^1.18.2 || ^2.0.0"
+
+"@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.5.1":
+ version "6.6.1"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz"
+ integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==
+
+"@vue/preload-webpack-plugin@^1.1.0":
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
+ integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==
+
+"@vue/reactivity@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.21.tgz"
+ integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==
+ dependencies:
+ "@vue/shared" "3.4.21"
+
+"@vue/runtime-core@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz"
+ integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==
+ dependencies:
+ "@vue/reactivity" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/runtime-dom@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz"
+ integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==
+ dependencies:
+ "@vue/runtime-core" "3.4.21"
+ "@vue/shared" "3.4.21"
+ csstype "^3.1.3"
+
+"@vue/server-renderer@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz"
+ integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==
+ dependencies:
+ "@vue/compiler-ssr" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/shared@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.21.tgz"
+ integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
+
+"@vue/test-utils@^2.0.0-0":
+ version "2.4.5"
+ resolved "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.4.5.tgz"
+ integrity sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==
+ dependencies:
+ js-beautify "^1.14.9"
+ vue-component-type-helpers "^2.0.0"
+
+"@vue/web-component-wrapper@^1.2.0":
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz"
+ integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==
+
+"@vueuse/core@^9.1.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz"
+ integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.16"
+ "@vueuse/metadata" "9.13.0"
+ "@vueuse/shared" "9.13.0"
+ vue-demi "*"
+
+"@vueuse/metadata@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz"
+ integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==
+
+"@vueuse/shared@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz"
+ integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==
+ dependencies:
+ vue-demi "*"
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abab@^2.0.0, abab@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
+abbrev@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz"
+ integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
+
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
+accepts@~1.3.4, accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+ dependencies:
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
+
+acorn-globals@^4.3.2:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-4.3.4.tgz"
+ integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
+ dependencies:
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
+
+acorn-globals@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-7.0.1.tgz"
+ integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
+ dependencies:
+ acorn "^8.1.0"
+ acorn-walk "^8.0.2"
+
+acorn-jsx@^5.2.0:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-walk@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz"
+ integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
+
+acorn-walk@^7.1.1:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+acorn-walk@^8.0.2:
+ version "8.3.2"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz"
+ integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.1.0, acorn@^8.8.2:
+ version "8.11.3"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
+acorn@^6.0.1:
+ version "6.4.2"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
+acorn@^6.4.1:
+ version "6.4.2"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
+acorn@^7.1.0:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^7.1.1:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+address@^1.1.2, address@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz"
+ integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+agentkeepalive@^3.4.1:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz"
+ integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==
+ dependencies:
+ humanize-ms "^1.2.1"
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv@>=5.0.0:
+ version "6.12.6"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ali-oss@^6.17.1:
+ version "6.20.0"
+ resolved "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.20.0.tgz"
+ integrity sha512-TzFXgGlw81sy2JvcCveSYsa2b2+6kv+HA6WTc+cXg6bu8nUAmVPfncRGbn3x2getSOniOFA+TyGy3V4l3Fks+Q==
+ dependencies:
+ address "^1.2.2"
+ agentkeepalive "^3.4.1"
+ bowser "^1.6.0"
+ copy-to "^2.0.1"
+ dateformat "^2.0.0"
+ debug "^4.3.4"
+ destroy "^1.0.4"
+ end-or-error "^1.0.1"
+ get-ready "^1.0.0"
+ humanize-ms "^1.2.0"
+ is-type-of "^1.4.0"
+ js-base64 "^2.5.2"
+ jstoxml "^2.0.0"
+ lodash "^4.17.21"
+ merge-descriptors "^1.0.1"
+ mime "^2.4.5"
+ platform "^1.3.1"
+ pump "^3.0.0"
+ qs "^6.4.0"
+ sdk-base "^2.0.1"
+ stream-http "2.8.2"
+ stream-wormhole "^1.0.4"
+ urllib "2.41.0"
+ utility "^1.18.0"
+ xml2js "^0.6.2"
+
+alphanum-sort@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz"
+ integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==
+
+ansi-colors@^3.0.0, ansi-colors@3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.3.tgz"
+ integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+
+ansi-escapes@^4.2.1:
+ version "4.3.2"
+ resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-html-community@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
+ integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz"
+ integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
+
+ansi-regex@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
+
+ansi-regex@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+any-promise@^1.0.0, any-promise@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.0, anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+arch@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz"
+ integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz"
+ integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz"
+ integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
+
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz"
+ integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+ dependencies:
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
+
+array-equal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/array-equal/-/array-equal-1.0.2.tgz"
+ integrity sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==
+
+array-flatten@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz"
+ integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz"
+ integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz"
+ integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz"
+ integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
+
+array.prototype.reduce@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz"
+ integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-array-method-boxes-properly "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ is-string "^1.0.7"
+
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz"
+ integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
+ is-shared-array-buffer "^1.0.2"
+
+asn1.js@^4.10.1:
+ version "4.10.1"
+ resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-4.10.1.tgz"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.6"
+ resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz"
+ integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@^1.0.0, assert-plus@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz"
+ integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
+
+assert@^1.1.1:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/assert/-/assert-1.5.1.tgz"
+ integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==
+ dependencies:
+ object.assign "^4.1.4"
+ util "^0.10.4"
+
+assertion-error@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz"
+ integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz"
+ integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/async-each/-/async-each-1.0.6.tgz"
+ integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==
+
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async-validator@^4.2.5:
+ version "4.2.5"
+ resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz"
+ integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
+
+async@^2.6.4:
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+ dependencies:
+ lodash "^4.17.14"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^9.8.6:
+ version "9.8.8"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz"
+ integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==
+ dependencies:
+ browserslist "^4.12.0"
+ caniuse-lite "^1.0.30001109"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ picocolors "^0.2.1"
+ postcss "^7.0.32"
+ postcss-value-parser "^4.1.0"
+
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz"
+ integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
+
+aws4@^1.8.0:
+ version "1.13.2"
+ resolved "https://registry.npmmirror.com/aws4/-/aws4-1.13.2.tgz"
+ integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==
+
+axios@^0.21.1:
+ version "0.21.4"
+ resolved "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+babel-eslint@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz"
+ integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.7.0"
+ "@babel/traverse" "^7.7.0"
+ "@babel/types" "^7.7.0"
+ eslint-visitor-keys "^1.0.0"
+ resolve "^1.12.0"
+
+babel-loader@^8.1.0:
+ version "8.4.1"
+ resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.4.1.tgz"
+ integrity sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==
+ dependencies:
+ find-cache-dir "^3.3.1"
+ loader-utils "^2.0.4"
+ make-dir "^3.1.0"
+ schema-utils "^2.6.5"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-polyfill-corejs2@^0.4.10:
+ version "0.4.12"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz"
+ integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==
+ dependencies:
+ "@babel/compat-data" "^7.22.6"
+ "@babel/helper-define-polyfill-provider" "^0.6.3"
+ semver "^6.3.1"
+
+babel-plugin-polyfill-corejs3@^0.10.6:
+ version "0.10.6"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz"
+ integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.6.2"
+ core-js-compat "^3.38.0"
+
+babel-plugin-polyfill-regenerator@^0.6.1:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz"
+ integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.6.3"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+base64-js@^1.0.2:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz"
+ integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
+ integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
+ dependencies:
+ tweetnacl "^0.14.3"
+
+bfj@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz"
+ integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^8.0.3"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz"
+ integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz"
+ integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
+
+bluebird@^3.1.1, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0:
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.1.tgz"
+ integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==
+
+bn.js@^4.1.0:
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.1.tgz"
+ integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==
+
+bn.js@^4.11.9:
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.1.tgz"
+ integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==
+
+bn.js@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz"
+ integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+
+body-parser@1.20.3:
+ version "1.20.3"
+ resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz"
+ integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.13.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz"
+ integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+bootstrap@^5.3.3:
+ version "5.3.3"
+ resolved "https://registry.npmmirror.com/bootstrap/-/bootstrap-5.3.3.tgz"
+ integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==
+
+bowser@^1.6.0:
+ version "1.9.4"
+ resolved "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz"
+ integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz"
+ integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
+
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
+browser-stdout@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz"
+ integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
+
+browserify-aes@^1.0.4, browserify-aes@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz"
+ integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==
+ dependencies:
+ bn.js "^5.2.1"
+ randombytes "^2.1.0"
+ safe-buffer "^5.2.1"
+
+browserify-sign@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.3.tgz"
+ integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==
+ dependencies:
+ bn.js "^5.2.1"
+ browserify-rsa "^4.1.0"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.5"
+ hash-base "~3.0"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.7"
+ readable-stream "^2.3.8"
+ safe-buffer "^5.2.1"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.24.0, browserslist@^4.24.2, "browserslist@>= 4.21.0":
+ version "4.24.2"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz"
+ integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
+ dependencies:
+ caniuse-lite "^1.0.30001669"
+ electron-to-chromium "^1.5.41"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.1"
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
+buffer-json@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz"
+ integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz"
+ integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
+
+buffer@^4.3.0:
+ version "4.9.2"
+ resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
+ integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cacache@^12.0.2, cacache@^12.0.3:
+ version "12.0.4"
+ resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cache-loader@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz"
+ integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==
+ dependencies:
+ buffer-json "^2.0.0"
+ find-cache-dir "^3.0.0"
+ loader-utils "^1.2.3"
+ mkdirp "^0.5.1"
+ neo-async "^2.6.1"
+ schema-utils "^2.0.0"
+
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
+call-me-maybe@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz"
+ integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz"
+ integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz"
+ integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz"
+ integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camel-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz"
+ integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001669:
+ version "1.0.30001680"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz"
+ integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==
+
+case-sensitive-paths-webpack-plugin@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
+ integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz"
+ integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
+
+chai@^4.1.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/chai/-/chai-4.4.1.tgz"
+ integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.3"
+ deep-eql "^4.1.3"
+ get-func-name "^2.0.2"
+ loupe "^2.3.6"
+ pathval "^1.1.1"
+ type-detect "^4.0.8"
+
+chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-error@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/check-error/-/check-error-1.0.3.tgz"
+ integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
+ dependencies:
+ get-func-name "^2.0.2"
+
+check-types@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz"
+ integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
+
+chokidar@^2.0.0, chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz"
+ integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz"
+ integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.5.tgz"
+ integrity sha512-xq7ICKB4TMHUx7Tz1L9O2SGKOhYMOTR32oir45Bq28/AQTpHogKgHcoYFSdRbMtddl+ozNXfXY9jWcgYKmde0w==
+ dependencies:
+ inherits "^2.0.4"
+ safe-buffer "^5.2.1"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-css@4.2.x:
+ version "4.2.4"
+ resolved "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz"
+ integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==
+ dependencies:
+ source-map "~0.6.0"
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz"
+ integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-highlight@^2.1.4:
+ version "2.1.11"
+ resolved "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz"
+ integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==
+ dependencies:
+ chalk "^4.0.0"
+ highlight.js "^10.7.1"
+ mz "^2.4.0"
+ parse5 "^5.1.1"
+ parse5-htmlparser2-tree-adapter "^6.0.0"
+ yargs "^16.0.0"
+
+cli-spinners@^2.0.0:
+ version "2.9.2"
+ resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz"
+ integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+clipboardy@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz"
+ integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==
+ dependencies:
+ arch "^2.1.1"
+ execa "^1.0.0"
+ is-wsl "^2.1.1"
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz"
+ integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
+ integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0, color-convert@^1.9.3:
+ version "1.9.3"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@^1.0.0, color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.6.0:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
+ integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.0.0:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/color/-/color-3.2.1.tgz"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
+combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz"
+ integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
+
+commander@^2.18.0:
+ version "2.20.3"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@~2.19.0:
+ version "2.19.0"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz"
+ integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
+commander@2.17.x:
+ version "2.17.1"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
+component-emitter@^1.2.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz"
+ integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
+
+compressible@~2.0.18:
+ version "2.0.18"
+ resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression@^1.7.4:
+ version "1.7.5"
+ resolved "https://registry.npmmirror.com/compression/-/compression-1.7.5.tgz"
+ integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==
+ dependencies:
+ bytes "3.1.2"
+ compressible "~2.0.18"
+ debug "2.6.9"
+ negotiator "~0.6.4"
+ on-headers "~1.0.2"
+ safe-buffer "5.2.1"
+ vary "~1.1.2"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+config-chain@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz"
+ integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+connect-history-api-fallback@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+console-browserify@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz"
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
+
+consolidate@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz"
+ integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
+ dependencies:
+ bluebird "^3.1.1"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz"
+ integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-type@^1.0.2, content-type@~1.0.4, content-type@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.npmmirror.com/cookie/-/cookie-0.7.1.tgz"
+ integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
+
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz"
+ integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
+
+copy-to@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz"
+ integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==
+
+copy-webpack-plugin@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz"
+ integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==
+ dependencies:
+ cacache "^12.0.3"
+ find-cache-dir "^2.1.0"
+ glob-parent "^3.1.0"
+ globby "^7.1.1"
+ is-glob "^4.0.1"
+ loader-utils "^1.2.3"
+ minimatch "^3.0.4"
+ normalize-path "^3.0.0"
+ p-limit "^2.2.1"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ webpack-log "^2.0.0"
+
+core-js-compat@^3.38.0, core-js-compat@^3.38.1, core-js-compat@^3.6.5:
+ version "3.39.0"
+ resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.39.0.tgz"
+ integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==
+ dependencies:
+ browserslist "^4.24.2"
+
+core-js-pure@^3.30.2:
+ version "3.36.1"
+ resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.36.1.tgz"
+ integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==
+
+core-js@^2.6.12:
+ version "2.6.12"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
+core-js@^3.6.5:
+ version "3.36.1"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-3.36.1.tgz"
+ integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==
+
+core-util-is@^1.0.2, core-util-is@~1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+
+core-util-is@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz"
+ integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
+
+cosmiconfig@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+create-ecdh@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.5.3"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.4, create-hmac@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-env@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz"
+ integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.5:
+ version "6.0.6"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz"
+ integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+crypto-browserify@^3.11.0:
+ version "3.12.1"
+ resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz"
+ integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==
+ dependencies:
+ browserify-cipher "^1.0.1"
+ browserify-sign "^4.2.3"
+ create-ecdh "^4.0.4"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ diffie-hellman "^5.0.3"
+ hash-base "~3.0.4"
+ inherits "^2.0.4"
+ pbkdf2 "^3.1.2"
+ public-encrypt "^4.0.3"
+ randombytes "^2.1.0"
+ randomfill "^1.0.4"
+
+css-color-names@^0.0.4, css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz"
+ integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-loader@*, css-loader@^3.5.3:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/css-loader/-/css-loader-3.6.0.tgz"
+ integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
+ dependencies:
+ camelcase "^5.3.1"
+ cssesc "^3.0.0"
+ icss-utils "^4.1.1"
+ loader-utils "^1.2.3"
+ normalize-path "^3.0.0"
+ postcss "^7.0.32"
+ postcss-modules-extract-imports "^2.0.0"
+ postcss-modules-local-by-default "^3.0.2"
+ postcss-modules-scope "^2.2.0"
+ postcss-modules-values "^3.0.0"
+ postcss-value-parser "^4.1.0"
+ schema-utils "^2.7.0"
+ semver "^6.3.0"
+
+css-parse@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/css-parse/-/css-parse-2.0.0.tgz"
+ integrity sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==
+ dependencies:
+ css "^2.0.0"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-select@^4.1.3:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz"
+ integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^6.0.1"
+ domhandler "^4.3.1"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
+
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css-what@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
+
+css@^2.0.0:
+ version "2.2.4"
+ resolved "https://registry.npmmirror.com/css/-/css-2.2.4.tgz"
+ integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
+ dependencies:
+ inherits "^2.0.3"
+ source-map "^0.6.1"
+ source-map-resolve "^0.5.2"
+ urix "^0.1.0"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz"
+ integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.3"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz"
+ integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz"
+ integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.0.0, cssnano@^4.1.10:
+ version "4.1.11"
+ resolved "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz"
+ integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.8"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
+csso@^4.0.2:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+cssom@^0.4.1:
+ version "0.4.4"
+ resolved "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
+cssstyle@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-3.0.0.tgz"
+ integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==
+ dependencies:
+ rrweb-cssom "^0.6.0"
+
+csstype@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+cyclist@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz"
+ integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz"
+ integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
+ dependencies:
+ assert-plus "^1.0.0"
+
+data-urls@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/data-urls/-/data-urls-1.1.0.tgz"
+ integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
+ dependencies:
+ abab "^2.0.0"
+ whatwg-mimetype "^2.2.0"
+ whatwg-url "^7.0.0"
+
+data-urls@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/data-urls/-/data-urls-4.0.0.tgz"
+ integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==
+ dependencies:
+ abab "^2.0.6"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.0"
+
+data-view-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz"
+ integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz"
+ integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-offset@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz"
+ integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+dateformat@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz"
+ integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==
+
+dayjs@^1.11.3:
+ version "1.11.10"
+ resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz"
+ integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
+
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
+ integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^2.2.0:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@4:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@3.2.6:
+ version "3.2.6"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.6.tgz"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
+decimal.js@^10.4.3:
+ version "10.4.3"
+ resolved "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+
+decode-uri-component@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
+deep-eql@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.3.tgz"
+ integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
+ dependencies:
+ type-detect "^4.0.0"
+
+deep-equal@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz"
+ integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
+ dependencies:
+ is-arguments "^1.1.1"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.5.1"
+
+deep-is@~0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deepmerge@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
+ integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
+
+default-gateway@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz"
+ integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+ dependencies:
+ execa "^1.0.0"
+ ip-regex "^2.1.0"
+
+default-gateway@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz"
+ integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==
+ dependencies:
+ execa "^3.3.0"
+
+default-user-agent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz"
+ integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==
+ dependencies:
+ os-name "~1.0.3"
+
+defaults@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz"
+ integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
+ dependencies:
+ clone "^1.0.2"
+
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+ dependencies:
+ define-data-property "^1.0.1"
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz"
+ integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz"
+ integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/del/-/del-4.1.1.tgz"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ globby "^6.1.0"
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz"
+ integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+des.js@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz"
+ integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@^1.0.4, destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+detect-node@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
+diff@3.5.0:
+ version "3.5.0"
+ resolved "https://registry.npmmirror.com/diff/-/diff-3.5.0.tgz"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+digest-header@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz"
+ integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==
+
+dir-glob@^2.0.0:
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz"
+ integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+ dependencies:
+ path-type "^3.0.0"
+
+dir-glob@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz"
+ integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+ dependencies:
+ path-type "^3.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz"
+ integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
+
+dns-packet@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz"
+ integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
+ dependencies:
+ buffer-indexof "^1.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-converter@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domelementtype@1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domexception@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/domexception/-/domexception-1.0.1.tgz"
+ integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
+ dependencies:
+ webidl-conversions "^4.0.2"
+
+domexception@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz"
+ integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
+ dependencies:
+ webidl-conversions "^7.0.0"
+
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^2.5.2, domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+dotenv-expand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz"
+ integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^8.2.0:
+ version "8.6.0"
+ resolved "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz"
+ integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+easy-stack@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz"
+ integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
+ integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+echarts@^5.0.2:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/echarts/-/echarts-5.5.0.tgz"
+ integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==
+ dependencies:
+ tslib "2.3.0"
+ zrender "5.5.0"
+
+editorconfig@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz"
+ integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
+ dependencies:
+ "@one-ini/wasm" "0.1.1"
+ commander "^10.0.0"
+ minimatch "9.0.1"
+ semver "^7.5.3"
+
+ee-first@~1.1.1, ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+ejs@^2.6.1:
+ version "2.7.4"
+ resolved "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz"
+ integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
+
+electron-to-chromium@^1.5.41:
+ version "1.5.62"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.62.tgz"
+ integrity sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==
+
+element-plus@^2.2.14:
+ version "2.6.3"
+ resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.6.3.tgz"
+ integrity sha512-U4L/mr+1r+EmAUYUHrs0V/8hHMdBGP07rPymSC72LZCN4jK1UwygQYICegTQ5us4mxeqBvW6wfoEfo003fwCqw==
+ dependencies:
+ "@ctrl/tinycolor" "^3.4.1"
+ "@element-plus/icons-vue" "^2.3.1"
+ "@floating-ui/dom" "^1.0.1"
+ "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
+ "@types/lodash" "^4.14.182"
+ "@types/lodash-es" "^4.17.6"
+ "@vueuse/core" "^9.1.0"
+ async-validator "^4.2.5"
+ dayjs "^1.11.3"
+ escape-html "^1.0.3"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ lodash-unified "^1.0.2"
+ memoize-one "^6.0.0"
+ normalize-wheel-es "^1.2.0"
+
+elliptic@^6.5.3, elliptic@^6.5.5:
+ version "6.6.1"
+ resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.6.1.tgz"
+ integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz"
+ integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+encodeurl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+end-or-error@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz"
+ integrity sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==
+
+enhanced-resolve@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz"
+ integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^4.4.0, entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.6:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz"
+ integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+ dependencies:
+ stackframe "^1.3.4"
+
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
+ version "1.23.3"
+ resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz"
+ integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.1"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.2"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.6"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
+es-array-method-boxes-properly@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz"
+ integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.2.1, es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+ dependencies:
+ es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz"
+ integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escalade@^3.1.1, escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
+
+escape-html@^1.0.3, escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5, escape-string-regexp@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escodegen@^1.11.1:
+ version "1.14.3"
+ resolved "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+escodegen@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz"
+ integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^5.2.0"
+ esutils "^2.0.2"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-loader@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz"
+ integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==
+ dependencies:
+ loader-fs-cache "^1.0.0"
+ loader-utils "^1.0.2"
+ object-assign "^4.0.1"
+ object-hash "^1.1.4"
+ rimraf "^2.6.1"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz"
+ integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+"eslint@>= 1.6.0 < 7.0.0", "eslint@>= 4.12.1", "eslint@>=1.6.0 <7.0.0":
+ version "6.8.0"
+ resolved "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz"
+ integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^1.4.3"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.1.2"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^7.0.0"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.3"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^6.1.2"
+ strip-ansi "^5.2.0"
+ strip-json-comments "^3.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.1.2:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz"
+ integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.1.0"
+
+esprima@^4.0.0, esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0, esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+event-pubsub@4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz"
+ integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+eventsource@^1.0.7:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.2.tgz"
+ integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==
+
+eventsource@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz"
+ integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz"
+ integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^3.3.0:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz"
+ integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ p-finally "^2.0.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz"
+ integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+express@^4.16.3, express@^4.17.1:
+ version "4.21.1"
+ resolved "https://registry.npmmirror.com/express/-/express-4.21.1.tgz"
+ integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.3"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.7.1"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.3.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.3"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.10"
+ proxy-addr "~2.0.7"
+ qs "6.13.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.19.0"
+ serve-static "1.16.2"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz"
+ integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz"
+ integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extsprintf@^1.2.0, extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz"
+ integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^2.2.6:
+ version "2.2.7"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-glob@^3.0.3:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.17.1"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
+ dependencies:
+ reusify "^1.0.4"
+
+faye-websocket@^0.11.3, faye-websocket@^0.11.4:
+ version "0.11.4"
+ resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+fetch-cookie@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz"
+ integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==
+ dependencies:
+ tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0"
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+file-loader@*, file-loader@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz"
+ integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
+ dependencies:
+ loader-utils "^1.2.3"
+ schema-utils "^2.5.0"
+
+filesize@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz"
+ integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.3.1.tgz"
+ integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz"
+ integrity sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-cache-dir@^3.0.0, find-cache-dir@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz"
+ integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^3.0.0, find-up@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flat@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/flat/-/flat-4.1.1.tgz"
+ integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==
+ dependencies:
+ is-buffer "~2.0.3"
+
+flatted@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz"
+ integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0, follow-redirects@^1.14.0:
+ version "1.15.6"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz"
+ integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
+
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz"
+ integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+
+foreground-child@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz"
+ integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^4.0.1"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz"
+ integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+formstream@^1.1.0:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz"
+ integrity sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==
+ dependencies:
+ destroy "^1.0.4"
+ mime "^2.5.2"
+ pause-stream "~0.0.11"
+
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz"
+ integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz"
+ integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz"
+ integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+function-bind@^1.1.1, function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+function.prototype.name@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz"
+ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
+ integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
+
+functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-func-name@^2.0.1, get-func-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.2.tgz"
+ integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+get-ready@^1.0.0, get-ready@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz"
+ integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz"
+ integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz"
+ integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
+ dependencies:
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz"
+ integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz"
+ integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz"
+ integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.0.tgz"
+ integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz"
+ integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==
+
+glob@^10.3.3:
+ version "10.3.12"
+ resolved "https://registry.npmmirror.com/glob/-/glob-10.3.12.tgz"
+ integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^2.3.6"
+ minimatch "^9.0.1"
+ minipass "^7.0.4"
+ path-scurry "^1.10.2"
+
+glob@^7.0.3, glob@^7.1.3, glob@^7.1.4:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.2:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.6:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@7.1.3:
+ version "7.1.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.1.3.tgz"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globalthis@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.npmmirror.com/globby/-/globby-10.0.2.tgz"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz"
+ integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz"
+ integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "^2.0.0"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+globby@^9.2.0:
+ version "9.2.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz"
+ integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^1.0.2"
+ dir-glob "^2.2.2"
+ fast-glob "^2.2.6"
+ glob "^7.1.3"
+ ignore "^4.0.3"
+ pify "^4.0.1"
+ slash "^2.0.0"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+ version "4.2.11"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+growl@1.10.5:
+ version "1.10.5"
+ resolved "https://registry.npmmirror.com/growl/-/growl-1.10.5.tgz"
+ integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
+
+gzip-size@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^4.0.1"
+
+handle-thing@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz"
+ integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1, has-proto@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz"
+ integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+
+has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+ dependencies:
+ has-symbols "^1.0.3"
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz"
+ integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz"
+ integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz"
+ integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz"
+ integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/has/-/has-1.0.4.tgz"
+ integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==
+
+hash-base@^3.0.0, hash-base@~3.0, hash-base@~3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.4.tgz"
+ integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash-sum@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
+ integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==
+
+hash-sum@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz"
+ integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0, he@1.2.0, he@1.2.x:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+highlight.js@^10.7.1:
+ version "10.7.3"
+ resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz"
+ integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
+ integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz"
+ integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz"
+ integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz"
+ integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==
+
+html-encoding-sniffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz"
+ integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+html-encoding-sniffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz"
+ integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
+ dependencies:
+ whatwg-encoding "^2.0.0"
+
+html-entities@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz"
+ integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+
+html-minifier@^3.2.3:
+ version "3.5.21"
+ resolved "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz"
+ integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
+ dependencies:
+ camel-case "3.0.x"
+ clean-css "4.2.x"
+ commander "2.17.x"
+ he "1.2.x"
+ param-case "2.1.x"
+ relateurl "0.2.x"
+ uglify-js "3.4.x"
+
+html-tags@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz"
+ integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==
+
+html-tags@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz"
+ integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
+html-webpack-plugin@^3.2.0, html-webpack-plugin@>=2.26.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz"
+ integrity sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==
+ dependencies:
+ html-minifier "^3.2.3"
+ loader-utils "^0.2.16"
+ lodash "^4.17.3"
+ pretty-error "^2.0.2"
+ tapable "^1.0.0"
+ toposort "^1.0.0"
+ util.promisify "1.0.0"
+
+htmlparser2@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz"
+ integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
+
+http-proxy-middleware@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz"
+ integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==
+ dependencies:
+ "@types/http-proxy" "^1.17.5"
+ http-proxy "^1.18.1"
+ is-glob "^4.0.1"
+ is-plain-obj "^3.0.0"
+ micromatch "^4.0.2"
+
+http-proxy-middleware@0.19.1:
+ version "0.19.1"
+ resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz"
+ integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
+ dependencies:
+ http-proxy "^1.17.0"
+ is-glob "^4.0.0"
+ lodash "^4.17.11"
+ micromatch "^3.1.10"
+
+http-proxy@^1.17.0, http-proxy@^1.18.1:
+ version "1.18.1"
+ resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz"
+ integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz"
+ integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==
+
+https-proxy-agent@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+humanize-ms@^1.2.0, humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz"
+ integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@^0.4.15:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.3, iconv-lite@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+iconv-lite@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+icss-utils@^4.0.0, icss-utils@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz"
+ integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+ dependencies:
+ postcss "^7.0.14"
+
+ieee754@^1.1.4:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz"
+ integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==
+
+ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.3:
+ version "4.0.6"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.1:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz"
+ integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz"
+ integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==
+ dependencies:
+ import-from "^2.1.0"
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz"
+ integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz"
+ integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==
+ dependencies:
+ resolve-from "^3.0.0"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz"
+ integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==
+
+infer-owner@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz"
+ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+
+ini@^1.3.4:
+ version "1.3.8"
+ resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+inquirer@^7.0.0, inquirer@^7.1.0:
+ version "7.3.3"
+ resolved "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz"
+ integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.19"
+ mute-stream "0.0.8"
+ run-async "^2.4.0"
+ rxjs "^6.6.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
+internal-ip@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz"
+ integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
+ dependencies:
+ default-gateway "^4.2.0"
+ ipaddr.js "^1.9.0"
+
+internal-slot@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz"
+ integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
+ dependencies:
+ es-errors "^1.3.0"
+ hasown "^2.0.0"
+ side-channel "^1.0.4"
+
+interpret@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz"
+ integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
+
+ip@^1.1.0, ip@^1.1.5:
+ version "1.1.9"
+ resolved "https://registry.npmmirror.com/ip/-/ip-1.1.9.tgz"
+ integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==
+
+ipaddr.js@^1.9.0, ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz"
+ integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==
+
+is-absolute-url@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz"
+ integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
+is-accessor-descriptor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz"
+ integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==
+ dependencies:
+ hasown "^2.0.0"
+
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz"
+ integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz"
+ integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-buffer@~2.0.3:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-class-hotfix@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz"
+ integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz"
+ integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
+is-data-descriptor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz"
+ integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==
+ dependencies:
+ hasown "^2.0.0"
+
+is-data-view@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz"
+ integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
+ dependencies:
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.7"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.7.tgz"
+ integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==
+ dependencies:
+ is-accessor-descriptor "^1.0.1"
+ is-data-descriptor "^1.0.1"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz"
+ integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==
+ dependencies:
+ is-accessor-descriptor "^1.0.1"
+ is-data-descriptor "^1.0.1"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz"
+ integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
+
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+ integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz"
+ integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz"
+ integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
+ dependencies:
+ is-path-inside "^2.1.0"
+
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
+ dependencies:
+ path-is-inside "^1.0.2"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
+ integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
+
+is-plain-obj@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz"
+ integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-potential-custom-element-name@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz"
+ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz"
+ integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
+ dependencies:
+ call-bind "^1.0.7"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz"
+ integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-type-of@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz"
+ integrity sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==
+ dependencies:
+ core-util-is "^1.0.2"
+ is-class-hotfix "~0.0.6"
+ isstream "~0.1.2"
+
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
+ dependencies:
+ which-typed-array "^1.1.14"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz"
+ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz"
+ integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==
+
+is-wsl@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz"
+ integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
+ integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz"
+ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+
+jackspeak@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-2.3.6.tgz"
+ integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
+javascript-stringify@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz"
+ integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
+
+js-base64@^2.5.2:
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz"
+ integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
+
+js-beautify@^1.14.9:
+ version "1.15.1"
+ resolved "https://registry.npmmirror.com/js-beautify/-/js-beautify-1.15.1.tgz"
+ integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==
+ dependencies:
+ config-chain "^1.1.13"
+ editorconfig "^1.0.4"
+ glob "^10.3.3"
+ js-cookie "^3.0.5"
+ nopt "^7.2.0"
+
+js-cookie@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz"
+ integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
+
+js-message@1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz"
+ integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@3.13.1:
+ version "3.13.1"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.13.1.tgz"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz"
+ integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
+
+jsdom-global@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/jsdom-global/-/jsdom-global-3.0.2.tgz"
+ integrity sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==
+
+jsdom@^15.2.1:
+ version "15.2.1"
+ resolved "https://registry.npmmirror.com/jsdom/-/jsdom-15.2.1.tgz"
+ integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^7.1.0"
+ acorn-globals "^4.3.2"
+ array-equal "^1.0.0"
+ cssom "^0.4.1"
+ cssstyle "^2.0.0"
+ data-urls "^1.1.0"
+ domexception "^1.0.1"
+ escodegen "^1.11.1"
+ html-encoding-sniffer "^1.0.2"
+ nwsapi "^2.2.0"
+ parse5 "5.1.0"
+ pn "^1.1.0"
+ request "^2.88.0"
+ request-promise-native "^1.0.7"
+ saxes "^3.1.9"
+ symbol-tree "^3.2.2"
+ tough-cookie "^3.0.1"
+ w3c-hr-time "^1.0.1"
+ w3c-xmlserializer "^1.1.2"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^7.0.0"
+ ws "^7.0.0"
+ xml-name-validator "^3.0.0"
+
+jsdom@>=10.0.0:
+ version "21.1.2"
+ resolved "https://registry.npmmirror.com/jsdom/-/jsdom-21.1.2.tgz"
+ integrity sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==
+ dependencies:
+ abab "^2.0.6"
+ acorn "^8.8.2"
+ acorn-globals "^7.0.0"
+ cssstyle "^3.0.0"
+ data-urls "^4.0.0"
+ decimal.js "^10.4.3"
+ domexception "^4.0.0"
+ escodegen "^2.0.0"
+ form-data "^4.0.0"
+ html-encoding-sniffer "^3.0.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.1"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.4"
+ parse5 "^7.1.2"
+ rrweb-cssom "^0.6.0"
+ saxes "^6.0.0"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.1.2"
+ w3c-xmlserializer "^4.0.0"
+ webidl-conversions "^7.0.0"
+ whatwg-encoding "^2.0.0"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.1"
+ ws "^8.13.0"
+ xml-name-validator "^4.0.0"
+
+jsesc@^3.0.2, jsesc@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz"
+ integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz"
+ integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
+
+json5@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.2, json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz"
+ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsprim@^1.2.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz"
+ integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.4.0"
+ verror "1.10.0"
+
+jstoxml@^2.0.0:
+ version "2.2.9"
+ resolved "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz"
+ integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==
+
+killable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz"
+ integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
+
+kind-of@^3.0.2:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^3.0.3:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz"
+ integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+klona@^2.0.4:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz"
+ integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
+
+launch-editor-middleware@^2.2.1:
+ version "2.9.1"
+ resolved "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.9.1.tgz"
+ integrity sha512-4wF6AtPtaIENiZdH/a+3yW8Xni7uxzTEDd1z+gH00hUWBCSmQknFohznMd9BWhLk8MXObeB5ir69GbIr9qFW1w==
+ dependencies:
+ launch-editor "^2.9.1"
+
+launch-editor@^2.2.1, launch-editor@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.9.1.tgz"
+ integrity sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==
+ dependencies:
+ picocolors "^1.0.0"
+ shell-quote "^1.8.1"
+
+less-loader@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.npmmirror.com/less-loader/-/less-loader-7.3.0.tgz"
+ integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==
+ dependencies:
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+"less@^3.5.0 || ^4.0.0", less@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz"
+ integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz"
+ integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+loader-fs-cache@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz"
+ integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==
+ dependencies:
+ find-cache-dir "^0.1.1"
+ mkdirp "^0.5.1"
+
+loader-runner@^2.3.1, loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz"
+ integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^1.0.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+ integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^1.1.0:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+ integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^1.2.3:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+ integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^2.0.0, loader-utils@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz"
+ integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash-es@*, lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash-unified@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz"
+ integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lodash.defaultsdeep@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz"
+ integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
+
+lodash.kebabcase@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz"
+ integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==
+
+lodash.mapvalues@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz"
+ integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
+ integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
+
+lodash.transform@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz"
+ integrity sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash@*, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^2.2.0, log-symbols@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+loglevel@^1.6.8:
+ version "1.9.2"
+ resolved "https://registry.npmmirror.com/loglevel/-/loglevel-1.9.2.tgz"
+ integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==
+
+loupe@^2.3.6:
+ version "2.3.7"
+ resolved "https://registry.npmmirror.com/loupe/-/loupe-2.3.7.tgz"
+ integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
+ dependencies:
+ get-func-name "^2.0.1"
+
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz"
+ integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==
+
+lru-cache@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.2.0.tgz"
+ integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^4.1.2:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.30.7:
+ version "0.30.8"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz"
+ integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+make-dir@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz"
+ integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz"
+ integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
+ dependencies:
+ object-visit "^1.0.0"
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
+memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz"
+ integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+merge-descriptors@^1.0.1, merge-descriptors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz"
+ integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
+
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
+micromatch@^3.1.10:
+ version "3.1.10"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.2, micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.4, mime@^2.4.5, mime@^2.5.2:
+ version "2.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
+ integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mini-css-extract-plugin@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz"
+ integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==
+ dependencies:
+ loader-utils "^1.1.0"
+ normalize-url "1.9.1"
+ schema-utils "^1.0.0"
+ webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
+ integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
+
+minimatch@^3.0.4, minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^9.0.1:
+ version "9.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz"
+ integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.4.tgz"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@9.0.1:
+ version "9.0.1"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz"
+ integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+minipass@^3.1.1:
+ version "3.3.6"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz"
+ integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
+ dependencies:
+ yallist "^4.0.0"
+
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-7.0.4.tgz"
+ integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mitt@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz"
+ integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+mkdirp@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mkdirp@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.4.tgz"
+ integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==
+ dependencies:
+ minimist "^1.2.5"
+
+mocha@^6.2.2, "mocha@>=4 <=7":
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/mocha/-/mocha-6.2.3.tgz"
+ integrity sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==
+ dependencies:
+ ansi-colors "3.2.3"
+ browser-stdout "1.3.1"
+ debug "3.2.6"
+ diff "3.5.0"
+ escape-string-regexp "1.0.5"
+ find-up "3.0.0"
+ glob "7.1.3"
+ growl "1.10.5"
+ he "1.2.0"
+ js-yaml "3.13.1"
+ log-symbols "2.2.0"
+ minimatch "3.0.4"
+ mkdirp "0.5.4"
+ ms "2.1.1"
+ node-environment-flags "1.0.5"
+ object.assign "4.1.0"
+ strip-json-comments "2.0.1"
+ supports-color "6.0.0"
+ which "1.3.1"
+ wide-align "1.1.3"
+ yargs "13.3.2"
+ yargs-parser "13.1.2"
+ yargs-unparser "1.6.0"
+
+mochapack@^1.1.15:
+ version "1.1.15"
+ resolved "https://registry.npmmirror.com/mochapack/-/mochapack-1.1.15.tgz"
+ integrity sha512-/gOsgJk3CWlNiOdef7hrNhp37VpatB9IiWzSCxS2p8pG21R7NAKJBBsU5T0eUWT9oz1NQhyubXdQgh51U7oVZA==
+ dependencies:
+ "@babel/runtime-corejs2" "^7.0.0"
+ chalk "^2.4.2"
+ chokidar "^2.0.0"
+ glob-parent "5.1.0"
+ globby "^10.0.1"
+ interpret "^1.2.0"
+ is-glob "^4.0.1"
+ loader-utils "^1.2.3"
+ lodash "^4.17.15"
+ memory-fs "^0.4.1"
+ minimatch "^3.0.4"
+ nodent-runtime "^3.2.1"
+ normalize-path "^3.0.0"
+ progress "^2.0.3"
+ source-map-support "^0.5.13"
+ toposort "^2.0.2"
+ yargs "14.0.0"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz"
+ integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@^2.0.0, ms@^2.1.1, ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"
+ integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+mz@^2.4.0, mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nanoid@^3.3.7:
+ version "3.3.7"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+needle@^3.1.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz"
+ integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==
+ dependencies:
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
+negotiator@~0.6.4:
+ version "0.6.4"
+ resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz"
+ integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
+
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+no-case@^2.2.0:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz"
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+ dependencies:
+ lower-case "^1.1.1"
+
+node-environment-flags@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz"
+ integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+ semver "^5.7.0"
+
+node-fetch@^2.6.7:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-releases@^2.0.18:
+ version "2.0.18"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz"
+ integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
+
+nodent-runtime@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz"
+ integrity sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==
+
+nopt@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/nopt/-/nopt-7.2.0.tgz"
+ integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==
+ dependencies:
+ abbrev "^2.0.0"
+
+normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz"
+ integrity sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz"
+ integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+normalize-url@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz"
+ integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+normalize-wheel-es@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz"
+ integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz"
+ integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
+ dependencies:
+ path-key "^2.0.0"
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz"
+ integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==
+
+nwsapi@^2.2.0, nwsapi@^2.2.4:
+ version "2.2.7"
+ resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.7.tgz"
+ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz"
+ integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-hash@^1.1.4:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz"
+ integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
+
+object-inspect@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+
+object-keys@^1.0.11, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz"
+ integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz"
+ integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+object.assign@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.0.tgz"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz"
+ integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==
+ dependencies:
+ array.prototype.reduce "^1.0.6"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+ gopd "^1.0.1"
+ safe-array-concat "^1.1.2"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz"
+ integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/object.values/-/object.values-1.2.0.tgz"
+ integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+obuf@^1.0.0, obuf@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz"
+ integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+open@^6.3.0:
+ version "6.4.0"
+ resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz"
+ integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==
+ dependencies:
+ is-wsl "^1.1.0"
+
+opener@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
+opn@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz"
+ integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optionator@^0.8.1, optionator@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+ora@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz"
+ integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==
+
+os-name@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz"
+ integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==
+ dependencies:
+ osx-release "^1.0.0"
+ win-release "^1.0.0"
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
+osx-release@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz"
+ integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==
+ dependencies:
+ minimist "^1.1.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
+p-finally@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz"
+ integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
+
+p-limit@^2.0.0, p-limit@^2.2.1:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-retry@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz"
+ integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+ dependencies:
+ retry "^0.12.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+param-case@2.1.x:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz"
+ integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==
+ dependencies:
+ no-case "^2.2.0"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.7:
+ version "5.1.7"
+ resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.7.tgz"
+ integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==
+ dependencies:
+ asn1.js "^4.10.1"
+ browserify-aes "^1.2.0"
+ evp_bytestokey "^1.0.3"
+ hash-base "~3.0"
+ pbkdf2 "^3.1.2"
+ safe-buffer "^5.2.1"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz"
+ integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parse5-htmlparser2-tree-adapter@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz"
+ integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
+ dependencies:
+ parse5 "^6.0.1"
+
+parse5@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
+parse5@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parse5@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz"
+ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+ dependencies:
+ entities "^4.4.0"
+
+parse5@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.0.tgz"
+ integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz"
+ integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz"
+ integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz"
+ integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz"
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz"
+ integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
+
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-scurry@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.2.tgz"
+ integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==
+ dependencies:
+ lru-cache "^10.2.0"
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
+path-to-regexp@0.1.10:
+ version "0.1.10"
+ resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz"
+ integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pathval@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz"
+ integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+
+pause-stream@~0.0.11:
+ version "0.0.11"
+ resolved "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz"
+ integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
+ dependencies:
+ through "~2.3"
+
+pbkdf2@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picocolors@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz"
+ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
+ integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz"
+ integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz"
+ integrity sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==
+ dependencies:
+ find-up "^1.0.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+platform@^1.3.1:
+ version "1.3.6"
+ resolved "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz"
+ integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
+
+pn@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/pn/-/pn-1.1.0.tgz"
+ integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
+
+pnp-webpack-plugin@^1.6.4:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz"
+ integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==
+ dependencies:
+ ts-pnp "^1.1.6"
+
+portfinder@^1.0.26:
+ version "1.0.32"
+ resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz"
+ integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
+ dependencies:
+ async "^2.6.4"
+ debug "^3.2.7"
+ mkdirp "^0.5.6"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz"
+ integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
+
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
+postcss-calc@^7.0.1:
+ version "7.0.5"
+ resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz"
+ integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
+ dependencies:
+ postcss "^7.0.27"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.0.2"
+
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-load-config@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz"
+ integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ import-cwd "^2.0.0"
+
+postcss-loader@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz"
+ integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
+ dependencies:
+ loader-utils "^1.1.0"
+ postcss "^7.0.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^1.0.0"
+
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz"
+ integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
+ dependencies:
+ postcss "^7.0.5"
+
+postcss-modules-local-by-default@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz"
+ integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
+ dependencies:
+ icss-utils "^4.1.1"
+ postcss "^7.0.32"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz"
+ integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
+
+postcss-modules-values@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz"
+ integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
+ dependencies:
+ icss-utils "^4.0.0"
+ postcss "^7.0.6"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz"
+ integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
+ dependencies:
+ dot-prop "^5.2.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
+ version "6.0.16"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz"
+ integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-svgo@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz"
+ integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^7.0.0:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.1:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.14:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.27:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.32:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.36:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.5:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.6:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^8.4.35:
+ version "8.4.38"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz"
+ integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.0"
+ source-map-js "^1.2.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz"
+ integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz"
+ integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==
+
+"prettier@^1.18.2 || ^2.0.0":
+ version "2.8.8"
+ resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz"
+ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+pretty-error@^2.0.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz"
+ integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
+ dependencies:
+ lodash "^4.17.20"
+ renderkid "^2.0.4"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
+ integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz"
+ integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
+
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+ dependencies:
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
+psl@^1.1.28, psl@^1.1.33:
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz"
+ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
+public-encrypt@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz"
+ integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz"
+ integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz"
+ integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
+
+qs@^6.12.3, qs@^6.4.0:
+ version "6.13.1"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.13.1.tgz"
+ integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==
+ dependencies:
+ side-channel "^1.0.6"
+
+qs@~6.5.2:
+ version "6.5.3"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz"
+ integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+
+qs@6.13.0:
+ version "6.13.0"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
+ dependencies:
+ side-channel "^1.0.6"
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz"
+ integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz"
+ integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==
+
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.5.2:
+ version "2.5.2"
+ resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+read-pkg@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6, "readable-stream@1 || 2":
+ version "2.3.8"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.6:
+ version "3.6.2"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regenerate-unicode-properties@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz"
+ integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+regenerator-transform@^0.15.2:
+ version "0.15.2"
+ resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz"
+ integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz"
+ integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+ dependencies:
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
+
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpu-core@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.1.1.tgz"
+ integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.2.0"
+ regjsgen "^0.8.0"
+ regjsparser "^0.11.0"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.1.0"
+
+regjsgen@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.8.0.tgz"
+ integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
+
+regjsparser@^0.11.0:
+ version "0.11.2"
+ resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.11.2.tgz"
+ integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==
+ dependencies:
+ jsesc "~3.0.2"
+
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz"
+ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
+ integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
+
+renderkid@^2.0.4:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz"
+ integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==
+ dependencies:
+ css-select "^4.1.3"
+ dom-converter "^0.2.0"
+ htmlparser2 "^6.1.0"
+ lodash "^4.17.21"
+ strip-ansi "^3.0.1"
+
+repeat-element@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
+request-promise-core@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz"
+ integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==
+ dependencies:
+ lodash "^4.17.19"
+
+request-promise-native@^1.0.7:
+ version "1.0.9"
+ resolved "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz"
+ integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
+ dependencies:
+ request-promise-core "1.1.4"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
+
+request@^2.34, request@^2.88.0, request@^2.88.2:
+ version "2.88.2"
+ resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz"
+ integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz"
+ integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz"
+ integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
+
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2:
+ version "1.22.8"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz"
+ integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz"
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz"
+ integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz"
+ integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==
+
+rimraf@^2.5.4:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^2.6.1:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@2.6.3:
+ version "2.6.3"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rrweb-cssom@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz"
+ integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==
+
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz"
+ integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.6.0:
+ version "6.6.7"
+ resolved "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-array-concat@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz"
+ integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@>=5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz"
+ integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-regex "^1.1.4"
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz"
+ integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
+ dependencies:
+ ret "~0.1.10"
+
+safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4, sax@>=0.6.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz"
+ integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
+
+sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+saxes@^3.1.9:
+ version "3.1.11"
+ resolved "https://registry.npmmirror.com/saxes/-/saxes-3.1.11.tgz"
+ integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
+ dependencies:
+ xmlchars "^2.1.1"
+
+saxes@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz"
+ integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
+ dependencies:
+ xmlchars "^2.2.0"
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
+ dependencies:
+ "@types/json-schema" "^7.0.5"
+ ajv "^6.12.4"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz"
+ integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+sdk-base@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz"
+ integrity sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==
+ dependencies:
+ get-ready "~1.0.0"
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz"
+ integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
+
+selfsigned@^1.10.8:
+ version "1.10.14"
+ resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz"
+ integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==
+ dependencies:
+ node-forge "^0.10.0"
+
+semver@^5.0.1:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.5.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.6.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.7.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.5.3:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.npmmirror.com/send/-/send-0.19.0.tgz"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
+serve-index@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz"
+ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
+serve-static@1.16.2:
+ version "1.16.2"
+ resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.16.2.tgz"
+ integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+ dependencies:
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.19.0"
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz"
+ integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+
+set-function-length@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+set-function-name@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz"
+ integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz"
+ integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
+
+side-channel@^1.0.4, side-channel@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz"
+ integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
+signal-exit@^3.0.0:
+ version "3.0.7"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+signal-exit@^3.0.2:
+ version "3.0.7"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+signal-exit@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
+ integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+ dependencies:
+ is-arrayish "^0.3.1"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz"
+ integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+sockjs-client@^1.5.0:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz"
+ integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==
+ dependencies:
+ debug "^3.2.7"
+ eventsource "^2.0.2"
+ faye-websocket "^0.11.4"
+ inherits "^2.0.4"
+ url-parse "^1.5.10"
+
+sockjs@^0.3.21:
+ version "0.3.24"
+ resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz"
+ integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
+ dependencies:
+ faye-websocket "^0.11.3"
+ uuid "^8.3.2"
+ websocket-driver "^0.7.4"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz"
+ integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+sortablejs@^1.14.0:
+ version "1.15.2"
+ resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.2.tgz"
+ integrity sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-js@^1.0.2, source-map-js@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz"
+ integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+
+source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.13, source-map-support@~0.5.12:
+ version "0.5.21"
+ resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+spdx-correct@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz"
+ integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz"
+ integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.17"
+ resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz"
+ integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==
+
+spdy-transport@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz"
+ integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
+ dependencies:
+ debug "^4.1.0"
+ detect-node "^2.0.4"
+ hpack.js "^2.1.6"
+ obuf "^1.1.2"
+ readable-stream "^3.0.6"
+ wbuf "^1.7.3"
+
+spdy@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
+ dependencies:
+ debug "^4.1.0"
+ handle-thing "^2.0.0"
+ http-deceiver "^1.2.7"
+ select-hose "^2.0.0"
+ spdy-transport "^3.0.0"
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+sshpk@^1.7.0:
+ version "1.18.0"
+ resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.18.0.tgz"
+ integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stackframe@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz"
+ integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz"
+ integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+statuses@^1.3.1, "statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+stealthy-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz"
+ integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2, stream-http@2.8.2:
+ version "2.8.2"
+ resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz"
+ integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz"
+ integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
+
+stream-wormhole@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz"
+ integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz"
+ integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
+
+string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+"string-width@^1.0.2 || 2":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string.prototype.trim@^1.2.9:
+ version "1.2.9"
+ resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz"
+ integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimend@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz"
+ integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz"
+ integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz"
+ integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz"
+ integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz"
+ integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz"
+ integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==
+
+strip-json-comments@^3.0.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+strip-json-comments@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
+ integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+stylus-loader@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/stylus-loader/-/stylus-loader-3.0.2.tgz"
+ integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==
+ dependencies:
+ loader-utils "^1.0.2"
+ lodash.clonedeep "^4.5.0"
+ when "~3.6.x"
+
+stylus@^0.54.7, stylus@>=0.52.4:
+ version "0.54.8"
+ resolved "https://registry.npmmirror.com/stylus/-/stylus-0.54.8.tgz"
+ integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==
+ dependencies:
+ css-parse "~2.0.0"
+ debug "~3.1.0"
+ glob "^7.1.6"
+ mkdirp "~1.0.4"
+ safer-buffer "^2.1.2"
+ sax "~1.2.4"
+ semver "^6.3.0"
+ source-map "^0.7.3"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-color@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.0.0.tgz"
+ integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+svgo@^1.0.0:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+symbol-tree@^3.2.2, symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+table@^5.2.3:
+ version "5.4.6"
+ resolved "https://registry.npmmirror.com/table/-/table-5.4.6.tgz"
+ integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4:
+ version "1.4.6"
+ resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz"
+ integrity sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
+
+terser@^4.1.2:
+ version "4.8.1"
+ resolved "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz"
+ integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
+thread-loader@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz"
+ integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==
+ dependencies:
+ loader-runner "^2.3.1"
+ loader-utils "^1.1.0"
+ neo-async "^2.6.0"
+
+through@^2.3.6, through@~2.3:
+ version "2.3.8"
+ resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+timers-browserify@^2.0.4:
+ version "2.0.12"
+ resolved "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz"
+ integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz"
+ integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
+ integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz"
+ integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz"
+ integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+toposort@^1.0.0:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz"
+ integrity sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz"
+ integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
+
+"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.3.tgz"
+ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.2.0"
+ url-parse "^1.5.3"
+
+tough-cookie@^2.3.3:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-3.0.1.tgz"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz"
+ integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==
+ dependencies:
+ punycode "^2.1.0"
+
+tr46@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-4.1.1.tgz"
+ integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
+ dependencies:
+ punycode "^2.3.0"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-pnp@^1.1.6:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz"
+ integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
+
+tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.1.0, tslib@^2.3.0, tslib@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
+ integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz"
+ integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
+ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz"
+ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz"
+ integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@^4.0.0, type-detect@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typed-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz"
+ integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz"
+ integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz"
+ integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-length@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz"
+ integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz"
+ integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
+
+typescript@*:
+ version "4.8.4"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-4.8.4.tgz"
+ integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
+
+uglify-js@3.4.x:
+ version "3.4.10"
+ resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz"
+ integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
+ dependencies:
+ commander "~2.19.0"
+ source-map "~0.6.1"
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
+unescape@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz"
+ integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz"
+ integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz"
+ integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz"
+ integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz"
+ integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz"
+ integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+universalify@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz"
+ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
+unpipe@~1.0.0, unpipe@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz"
+ integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz"
+ integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+update-browserslist-db@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz"
+ integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.0"
+
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz"
+ integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz"
+ integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
+
+url-loader@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz"
+ integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==
+ dependencies:
+ loader-utils "^1.2.3"
+ mime "^2.4.4"
+ schema-utils "^2.5.0"
+
+url-parse@^1.5.10, url-parse@^1.5.3:
+ version "1.5.10"
+ resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+url@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.npmmirror.com/url/-/url-0.11.4.tgz"
+ integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==
+ dependencies:
+ punycode "^1.4.1"
+ qs "^6.12.3"
+
+urllib@2.41.0:
+ version "2.41.0"
+ resolved "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz"
+ integrity sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==
+ dependencies:
+ any-promise "^1.3.0"
+ content-type "^1.0.2"
+ debug "^2.6.9"
+ default-user-agent "^1.0.0"
+ digest-header "^1.0.0"
+ ee-first "~1.1.1"
+ formstream "^1.1.0"
+ humanize-ms "^1.2.0"
+ iconv-lite "^0.4.15"
+ ip "^1.1.5"
+ pump "^3.0.0"
+ qs "^6.4.0"
+ statuses "^1.3.1"
+ utility "^1.16.1"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+util.promisify@~1.0.0, util.promisify@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util@^0.10.4:
+ version "0.10.4"
+ resolved "https://registry.npmmirror.com/util/-/util-0.10.4.tgz"
+ integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+ dependencies:
+ inherits "2.0.3"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz"
+ integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
+
+utility@^1.16.1, utility@^1.18.0:
+ version "1.18.0"
+ resolved "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz"
+ integrity sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==
+ dependencies:
+ copy-to "^2.0.1"
+ escape-html "^1.0.3"
+ mkdirp "^0.5.1"
+ mz "^2.7.0"
+ unescape "^1.0.1"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
+uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz"
+ integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+vendors@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz"
+ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+vue-component-type-helpers@^2.0.0:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-2.0.7.tgz"
+ integrity sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==
+
+vue-demi@*:
+ version "0.14.7"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz"
+ integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==
+
+vue-draggable-next@^2.0.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/vue-draggable-next/-/vue-draggable-next-2.2.1.tgz"
+ integrity sha512-EAMS1IRHF0kZO0o5PMOinsQsXIqsrKT1hKmbICxG3UEtn7zLFkLxlAtajcCcUTisNvQ6TtCB5COjD9a1raNADw==
+
+vue-hot-reload-api@^2.3.0:
+ version "2.3.4"
+ resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
+ integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+
+"vue-loader-v16@npm:vue-loader@^16.1.0":
+ version "16.8.3"
+ resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz"
+ integrity sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==
+ dependencies:
+ chalk "^4.1.0"
+ hash-sum "^2.0.0"
+ loader-utils "^2.0.0"
+
+vue-loader@^15.9.2:
+ version "15.11.1"
+ resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz"
+ integrity sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==
+ dependencies:
+ "@vue/component-compiler-utils" "^3.1.0"
+ hash-sum "^1.0.2"
+ loader-utils "^1.1.0"
+ vue-hot-reload-api "^2.3.0"
+ vue-style-loader "^4.1.0"
+
+vue-router@^4.0.0-0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.3.0.tgz"
+ integrity sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==
+ dependencies:
+ "@vue/devtools-api" "^6.5.1"
+
+vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz"
+ integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
+ dependencies:
+ hash-sum "^1.0.2"
+ loader-utils "^1.0.2"
+
+vue-template-compiler@^2.0.0:
+ version "2.7.16"
+ resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
+ integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.2.0"
+
+vue-template-es2015-compiler@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
+ integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
+
+vue@*, "vue@^2 || ^3.0.0-0", "vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.2, vue@^3.2.37, vue@3.4.21:
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.4.21.tgz"
+ integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
+ dependencies:
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/compiler-sfc" "3.4.21"
+ "@vue/runtime-dom" "3.4.21"
+ "@vue/server-renderer" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+vuex@^4.0.0-0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz"
+ integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.11"
+
+w3c-hr-time@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz"
+ integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
+ dependencies:
+ domexception "^1.0.1"
+ webidl-conversions "^4.0.2"
+ xml-name-validator "^3.0.0"
+
+w3c-xmlserializer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz"
+ integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
+ dependencies:
+ xml-name-validator "^4.0.0"
+
+wangeditor@^4.7.6:
+ version "4.7.15"
+ resolved "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz"
+ integrity sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ "@babel/runtime-corejs3" "^7.11.2"
+ tslib "^2.1.0"
+
+watchpack-chokidar2@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz"
+ integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+ version "1.7.5"
+ resolved "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz"
+ integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.1"
+
+wbuf@^1.1.0, wbuf@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz"
+ integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webidl-conversions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
+ integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
+
+webpack-bundle-analyzer@^3.8.0:
+ version "3.9.0"
+ resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz"
+ integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+ bfj "^6.1.1"
+ chalk "^2.4.1"
+ commander "^2.18.0"
+ ejs "^2.6.1"
+ express "^4.16.3"
+ filesize "^3.6.1"
+ gzip-size "^5.0.0"
+ lodash "^4.17.19"
+ mkdirp "^0.5.1"
+ opener "^1.5.1"
+ ws "^6.0.0"
+
+webpack-chain@^6.4.0:
+ version "6.5.1"
+ resolved "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz"
+ integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==
+ dependencies:
+ deepmerge "^1.5.2"
+ javascript-stringify "^2.0.1"
+
+webpack-dev-middleware@^3.7.2:
+ version "3.7.3"
+ resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz"
+ integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.4"
+ mkdirp "^0.5.1"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
+
+webpack-dev-server@^3.11.0:
+ version "3.11.3"
+ resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz"
+ integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==
+ dependencies:
+ ansi-html-community "0.0.8"
+ bonjour "^3.5.0"
+ chokidar "^2.1.8"
+ compression "^1.7.4"
+ connect-history-api-fallback "^1.6.0"
+ debug "^4.1.1"
+ del "^4.1.1"
+ express "^4.17.1"
+ html-entities "^1.3.1"
+ http-proxy-middleware "0.19.1"
+ import-local "^2.0.0"
+ internal-ip "^4.3.0"
+ ip "^1.1.5"
+ is-absolute-url "^3.0.3"
+ killable "^1.0.1"
+ loglevel "^1.6.8"
+ opn "^5.5.0"
+ p-retry "^3.0.1"
+ portfinder "^1.0.26"
+ schema-utils "^1.0.0"
+ selfsigned "^1.10.8"
+ semver "^6.3.0"
+ serve-index "^1.9.1"
+ sockjs "^0.3.21"
+ sockjs-client "^1.5.0"
+ spdy "^4.0.2"
+ strip-ansi "^3.0.1"
+ supports-color "^6.1.0"
+ url "^0.11.0"
+ webpack-dev-middleware "^3.7.2"
+ webpack-log "^2.0.0"
+ ws "^6.2.1"
+ yargs "^13.3.2"
+
+webpack-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz"
+ integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+ dependencies:
+ ansi-colors "^3.0.0"
+ uuid "^3.3.2"
+
+webpack-merge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz"
+ integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
+ dependencies:
+ lodash "^4.17.15"
+
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", webpack@^4.0.0, "webpack@^4.0.0 || ^5.0.0", "webpack@^4.1.0 || ^5.0.0-0", webpack@^4.4.0, webpack@>=2, "webpack@>=2.0.0 <5.0.0", webpack@>=4.0.0:
+ version "4.47.0"
+ resolved "https://registry.npmmirror.com/webpack/-/webpack-4.47.0.tgz"
+ integrity sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.5.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.3"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.3"
+ watchpack "^1.7.4"
+ webpack-sources "^1.4.1"
+
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-encoding@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz"
+ integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
+ dependencies:
+ iconv-lite "0.6.3"
+
+whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-mimetype@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz"
+ integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
+
+whatwg-url@^12.0.0, whatwg-url@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-12.0.1.tgz"
+ integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==
+ dependencies:
+ tr46 "^4.1.1"
+ webidl-conversions "^7.0.0"
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+when@~3.6.x:
+ version "3.6.4"
+ resolved "https://registry.npmmirror.com/when/-/when-3.6.4.tgz"
+ integrity sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz"
+ integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
+
+which-typed-array@^1.1.14, which-typed-array@^1.1.15:
+ version "1.1.15"
+ resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz"
+ integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+which@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.3.tgz"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+win-release@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz"
+ integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==
+ dependencies:
+ semver "^5.0.1"
+
+word-wrap@~1.2.3:
+ version "1.2.5"
+ resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/write/-/write-1.0.3.tgz"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+ws@^6.0.0:
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/ws/-/ws-6.2.3.tgz"
+ integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^6.2.1:
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/ws/-/ws-6.2.3.tgz"
+ integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^7.0.0, ws@^7.4.5:
+ version "7.5.9"
+ resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
+ws@^8.13.0:
+ version "8.16.0"
+ resolved "https://registry.npmmirror.com/ws/-/ws-8.16.0.tgz"
+ integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==
+
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xml-name-validator@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
+ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+
+xml2js@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz"
+ integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlchars@^2.1.1, xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^13.1.1:
+ version "13.1.2"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^13.1.2, yargs-parser@13.1.2:
+ version "13.1.2"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^20.2.2:
+ version "20.2.9"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs-unparser@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz"
+ integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==
+ dependencies:
+ flat "^4.1.0"
+ lodash "^4.17.15"
+ yargs "^13.3.0"
+
+yargs@^13.3.0:
+ version "13.3.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yargs@^13.3.2:
+ version "13.3.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yargs@^16.0.0:
+ version "16.2.0"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yargs@13.3.2:
+ version "13.3.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yargs@14.0.0:
+ version "14.0.0"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-14.0.0.tgz"
+ integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==
+ dependencies:
+ cliui "^5.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.1"
+
+yorkie@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz"
+ integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==
+ dependencies:
+ execa "^0.8.0"
+ is-ci "^1.0.10"
+ normalize-path "^1.0.0"
+ strip-indent "^2.0.0"
+
+zrender@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz"
+ integrity sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==
+ dependencies:
+ tslib "2.3.0"
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin"
new file mode 100644
index 0000000..de5cb5b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin"
new file mode 100644
index 0000000..b027bcb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin"
new file mode 100644
index 0000000..7279242
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.strings.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2"
new file mode 100644
index 0000000..fe150a6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2"
new file mode 100644
index 0000000..4e88137
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo"
new file mode 100644
index 0000000..2194815
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj"
new file mode 100644
index 0000000..cf2a881
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_IBasicInfoRepository\WIDESEAWCS_IBasicInfoRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj"
new file mode 100644
index 0000000..0ce811f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_IBasicInfoService\WIDESEAWCS_IBasicInfoService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_QuartzJob\WIDESEAWCS_QuartzJob.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj"
new file mode 100644
index 0000000..132c02c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj"
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj"
new file mode 100644
index 0000000..7459335
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj"
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <Version>1.0.0</Version>
+ <Description>宸ヤ笟璁惧閫氳</Description>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="HslCommunication" Version="11.6.4" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj"
new file mode 100644
index 0000000..31d0330
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj"
@@ -0,0 +1,38 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <Version>1.0.2</Version>
+ <Description>鏇存柊鎺ュ彛璁块棶鎺堟潈闂</Description>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Autofac" Version="8.0.0" />
+ <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
+ <PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
+ <PackageReference Include="AutoMapper" Version="13.0.1" />
+ <PackageReference Include="Magicodes.IE.EPPlus" Version="2.7.5.1" />
+ <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />
+ <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.29" />
+ <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
+ <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ <PackageReference Include="OfficeOpenXml.Core.ExcelPackage" Version="1.0.0" />
+ <PackageReference Include="SkiaSharp" Version="2.88.8" />
+ <PackageReference Include="SqlSugarCore" Version="5.1.4.152" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.5" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.5.0" />
+ <PackageReference Include="System.Linq.Dynamic.Core" Version="1.3.0" />
+ <PackageReference Include="System.Net.Http" Version="4.3.4" />
+ <PackageReference Include="System.Security.Cryptography.Pkcs" Version="6.0.3" />
+ <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="ServiceExtensions\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj"
new file mode 100644
index 0000000..07c29eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj"
@@ -0,0 +1,42 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <Version>1.0.4</Version>
+ <Description>娣诲姞鍗曠偣鐧诲綍锛�
+淇鍗曡〃鏁版嵁淇敼-淇敼浜轰慨鏀规椂闂撮棶棰�</Description>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Autofac" Version="8.0.0" />
+ <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
+ <PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
+ <PackageReference Include="AutoMapper" Version="13.0.1" />
+ <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5" />
+ <PackageReference Include="Magicodes.IE.EPPlus" Version="2.7.5.1" />
+ <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />
+ <PackageReference Include="Masuit.Tools.Core" Version="2024.5.0" />
+ <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.29" />
+ <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.2" />
+ <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
+ <PackageReference Include="MoYu.Pure" Version="4.9.5.5" />
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ <PackageReference Include="OfficeOpenXml.Core.ExcelPackage" Version="1.0.0" />
+ <PackageReference Include="SkiaSharp" Version="2.88.8" />
+ <PackageReference Include="SqlSugarCore" Version="5.1.4.152" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.2" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.5" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.5.0" />
+ <PackageReference Include="System.Linq.Dynamic.Core" Version="1.3.0" />
+ <PackageReference Include="System.Net.Http" Version="4.3.4" />
+ <PackageReference Include="System.Security.Cryptography.Pkcs" Version="6.0.3" />
+ <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="ServiceExtensions\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.g.targets"
new file mode 100644
index 0000000..e3a49e3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.g.targets"
@@ -0,0 +1,9 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj"
new file mode 100644
index 0000000..cc0b784
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj"
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="BasicInfo\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj"
new file mode 100644
index 0000000..c159328
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj"
new file mode 100644
index 0000000..9413718
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj"
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_ISystemServices\WIDESEAWCS_ISystemServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/WIDESEAWCS_IProcessService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/WIDESEAWCS_IProcessService.csproj"
new file mode 100644
index 0000000..75b2aa7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/WIDESEAWCS_IProcessService.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ISystemServices\WIDESEAWCS_ISystemServices.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_ProcessParameters\WIDESEAWCS_IProcessRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/obj/WIDESEAWCS_IProcessService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/obj/WIDESEAWCS_IProcessService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_IProcessService/obj/WIDESEAWCS_IProcessService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj"
new file mode 100644
index 0000000..c2103f2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj"
new file mode 100644
index 0000000..17032f0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_SystemRepository\WIDESEAWCS_SystemRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj"
new file mode 100644
index 0000000..3732ca9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj"
new file mode 100644
index 0000000..2850c69
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_TaskInfoRepository\WIDESEAWCS_TaskInfoRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/WIDESEAWCS_ITaskInfo_HtyRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/WIDESEAWCS_ITaskInfo_HtyRepository.csproj"
new file mode 100644
index 0000000..57231eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/WIDESEAWCS_ITaskInfo_HtyRepository.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/obj/WIDESEAWCS_ITaskInfo_HtyRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/obj/WIDESEAWCS_ITaskInfo_HtyRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyRepository/obj/WIDESEAWCS_ITaskInfo_HtyRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/WIDESEAWCS_ITaskInfo_HtyService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/WIDESEAWCS_ITaskInfo_HtyService.csproj"
new file mode 100644
index 0000000..73d877a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/WIDESEAWCS_ITaskInfo_HtyService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_TaskInfo_HtyRepository\WIDESEAWCS_TaskInfo_HtyRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/obj/WIDESEAWCS_ITaskInfo_HtyService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/obj/WIDESEAWCS_ITaskInfo_HtyService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfo_HtyService/obj/WIDESEAWCS_ITaskInfo_HtyService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
new file mode 100644
index 0000000..2ee5dd7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
@@ -0,0 +1,18 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Common\WIDESEAWCS_Common.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/WIDESEAWCS_IProcessRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/WIDESEAWCS_IProcessRepository.csproj"
new file mode 100644
index 0000000..c159328
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/WIDESEAWCS_IProcessRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_ProcessParameters.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_ProcessParameters.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_ProcessParameters.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/WIDESEAWCS_ProcessRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/WIDESEAWCS_ProcessRepository.csproj"
new file mode 100644
index 0000000..b8815cc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/WIDESEAWCS_ProcessRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ProcessParameters\WIDESEAWCS_IProcessRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/WIDESEAWCS_ProcessService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/WIDESEAWCS_ProcessService.csproj"
new file mode 100644
index 0000000..bff2f37
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/WIDESEAWCS_ProcessService.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_IProcessService\WIDESEAWCS_IProcessService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_QuartzJob\WIDESEAWCS_QuartzJob.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/obj/WIDESEAWCS_ProcessService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/obj/WIDESEAWCS_ProcessService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessService/obj/WIDESEAWCS_ProcessService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj"
new file mode 100644
index 0000000..d9a8d3a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj"
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <Description>鏂板鍫嗗灈鏈哄皝瑁�</Description>
+ <Version>2.0.0</Version>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Quartz" Version="3.11.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Communicator\WIDESEAWCS_Communicator.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
new file mode 100644
index 0000000..0d73571
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
@@ -0,0 +1,248 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34728.123
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Server", "WIDESEAWCS_Server\WIDESEAWCS_Server.csproj", "{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Tasks", "WIDESEAWCS_Tasks\WIDESEAWCS_Tasks.csproj", "{294E4915-0241-4C8C-BA99-7588B945863A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_QuartzJob", "WIDESEAWCS_QuartzJob\WIDESEAWCS_QuartzJob.csproj", "{6236BFFF-173D-44A8-9FC3-7C001EA30347}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Model", "WIDESEAWCS_Model\WIDESEAWCS_Model.csproj", "{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_DTO", "WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj", "{C2D3D138-9109-481B-8BEB-A27597890B2C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Core", "WIDESEAWCS_Core\WIDESEAWCS_Core.csproj", "{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Communicator", "WIDESEAWCS_Communicator\WIDESEAWCS_Communicator.csproj", "{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Common", "WIDESEAWCS_Common\WIDESEAWCS_Common.csproj", "{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repository", "Repository", "{4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{A12315CA-9D81-412C-A09B-B23D95CFFE16}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System", "System", "{93EFF637-042E-4DD0-A74B-7F0CF998CF96}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TaskInfo", "TaskInfo", "{684035E2-174F-47CE-AA5C-36624C7E26F3}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System", "System", "{6295C9FB-DAC4-4C07-97C5-C0332ABDD13D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TaskInfo", "TaskInfo", "{D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ISystemRepository", "WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj", "{F302E6D6-5A95-4D22-8DC2-21BE2CB30275}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_SystemRepository", "WIDESEAWCS_SystemRepository\WIDESEAWCS_SystemRepository.csproj", "{5777BDEC-4726-4425-85F2-A090524F692D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ITaskInfoRepository", "WIDESEAWCS_ITaskInfoRepository\WIDESEAWCS_ITaskInfoRepository.csproj", "{09D05F35-CEA2-48D9-86D0-FB95982BA511}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_TaskInfoRepository", "WIDESEAWCS_TaskInfoRepository\WIDESEAWCS_TaskInfoRepository.csproj", "{35054AA5-CF40-4F38-9414-C76742C29382}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ISystemServices", "WIDESEAWCS_ISystemServices\WIDESEAWCS_ISystemServices.csproj", "{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_SystemServices", "WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj", "{A14242DD-DA06-4DC3-8598-1761AA7C76D1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ITaskInfoService", "WIDESEAWCS_ITaskInfoService\WIDESEAWCS_ITaskInfoService.csproj", "{7279A2AE-8D1F-4E66-A73A-01AF7927A336}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_TaskInfoService", "WIDESEAWCS_TaskInfoService\WIDESEAWCS_TaskInfoService.csproj", "{83F18A31-5983-4587-A0B2-414BF70E50B5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F3797CD6-35D2-40F6-8CAF-39A7130697A7}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BasicInfo", "BasicInfo", "{5CC8AEFF-2F75-4053-9569-73419839875A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BasicInfo", "BasicInfo", "{9CB2F821-BB23-48E5-88E8-C326477733C0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicInfoRepository", "WIDESEAWCS_IBasicInfoRepository\WIDESEAWCS_IBasicInfoRepository.csproj", "{266D07B7-3648-4F3D-818A-89EDA7D84C58}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoRepository", "WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj", "{206FDF79-9BF3-433A-B7FF-627287BBD760}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicInfoService", "WIDESEAWCS_IBasicInfoService\WIDESEAWCS_IBasicInfoService.csproj", "{8C2CC25B-DE5D-433E-A550-63864C7A716D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoService", "WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj", "{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProcessParameters", "ProcessParameters", "{396F6843-C06A-4856-B0AF-769542C83000}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IProcessRepository", "WIDESEAWCS_ProcessParameters\WIDESEAWCS_IProcessRepository.csproj", "{D33C3BD0-2C88-4875-B47E-7BDD908C3342}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ProcessRepository", "WIDESEAWCS_ProcessRepository\WIDESEAWCS_ProcessRepository.csproj", "{A099C81C-73ED-4AF0-80A0-C12FB8B87394}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ITaskInfo_HtyRepository", "WIDESEAWCS_ITaskInfo_HtyRepository\WIDESEAWCS_ITaskInfo_HtyRepository.csproj", "{17EADC05-D1F1-4440-8B86-56B21E19DC93}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_TaskInfo_HtyRepository", "WIDESEAWCS_TaskInfo_HtyRepository\WIDESEAWCS_TaskInfo_HtyRepository.csproj", "{3E3522C6-5A03-4333-9602-B13243334887}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_TaskInfo_HtyService", "WIDESEAWCS_TaskInfo_HtyService\WIDESEAWCS_TaskInfo_HtyService.csproj", "{978A638E-EDA8-43B7-A1C2-104A790A0C10}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ITaskInfo_HtyService", "WIDESEAWCS_ITaskInfo_HtyService\WIDESEAWCS_ITaskInfo_HtyService.csproj", "{61271216-85F8-4425-BAFB-1BEE4A35F5F9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_SignalR", "WIDESEAWCS_SignalR\WIDESEAWCS_SignalR.csproj", "{59D26679-7299-4251-A58E-3AC3C6FA717E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProcessParameters", "ProcessParameters", "{2DA6F051-80D7-4BA4-AB6B-98261C3EE7B9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_ProcessService", "WIDESEAWCS_ProcessService\WIDESEAWCS_ProcessService.csproj", "{2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_IProcessService", "WIDESEAWCS_IProcessService\WIDESEAWCS_IProcessService.csproj", "{4975C9B8-E205-41F5-A38A-19496A4B85CF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {294E4915-0241-4C8C-BA99-7588B945863A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {294E4915-0241-4C8C-BA99-7588B945863A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {294E4915-0241-4C8C-BA99-7588B945863A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {294E4915-0241-4C8C-BA99-7588B945863A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6236BFFF-173D-44A8-9FC3-7C001EA30347}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6236BFFF-173D-44A8-9FC3-7C001EA30347}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6236BFFF-173D-44A8-9FC3-7C001EA30347}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6236BFFF-173D-44A8-9FC3-7C001EA30347}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C2D3D138-9109-481B-8BEB-A27597890B2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C2D3D138-9109-481B-8BEB-A27597890B2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C2D3D138-9109-481B-8BEB-A27597890B2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C2D3D138-9109-481B-8BEB-A27597890B2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}.Release|Any CPU.Build.0 = Release|Any CPU
+ {861C4D0B-A478-48DB-A0FA-AE70F5BA210A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {861C4D0B-A478-48DB-A0FA-AE70F5BA210A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {861C4D0B-A478-48DB-A0FA-AE70F5BA210A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {861C4D0B-A478-48DB-A0FA-AE70F5BA210A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5777BDEC-4726-4425-85F2-A090524F692D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5777BDEC-4726-4425-85F2-A090524F692D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5777BDEC-4726-4425-85F2-A090524F692D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5777BDEC-4726-4425-85F2-A090524F692D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {09D05F35-CEA2-48D9-86D0-FB95982BA511}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {09D05F35-CEA2-48D9-86D0-FB95982BA511}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {09D05F35-CEA2-48D9-86D0-FB95982BA511}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {09D05F35-CEA2-48D9-86D0-FB95982BA511}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35054AA5-CF40-4F38-9414-C76742C29382}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35054AA5-CF40-4F38-9414-C76742C29382}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35054AA5-CF40-4F38-9414-C76742C29382}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35054AA5-CF40-4F38-9414-C76742C29382}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A14242DD-DA06-4DC3-8598-1761AA7C76D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A14242DD-DA06-4DC3-8598-1761AA7C76D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A14242DD-DA06-4DC3-8598-1761AA7C76D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A14242DD-DA06-4DC3-8598-1761AA7C76D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7279A2AE-8D1F-4E66-A73A-01AF7927A336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7279A2AE-8D1F-4E66-A73A-01AF7927A336}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7279A2AE-8D1F-4E66-A73A-01AF7927A336}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7279A2AE-8D1F-4E66-A73A-01AF7927A336}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83F18A31-5983-4587-A0B2-414BF70E50B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83F18A31-5983-4587-A0B2-414BF70E50B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83F18A31-5983-4587-A0B2-414BF70E50B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83F18A31-5983-4587-A0B2-414BF70E50B5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Release|Any CPU.Build.0 = Release|Any CPU
+ {206FDF79-9BF3-433A-B7FF-627287BBD760}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {206FDF79-9BF3-433A-B7FF-627287BBD760}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {206FDF79-9BF3-433A-B7FF-627287BBD760}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {206FDF79-9BF3-433A-B7FF-627287BBD760}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D33C3BD0-2C88-4875-B47E-7BDD908C3342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D33C3BD0-2C88-4875-B47E-7BDD908C3342}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D33C3BD0-2C88-4875-B47E-7BDD908C3342}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D33C3BD0-2C88-4875-B47E-7BDD908C3342}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A099C81C-73ED-4AF0-80A0-C12FB8B87394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A099C81C-73ED-4AF0-80A0-C12FB8B87394}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A099C81C-73ED-4AF0-80A0-C12FB8B87394}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A099C81C-73ED-4AF0-80A0-C12FB8B87394}.Release|Any CPU.Build.0 = Release|Any CPU
+ {17EADC05-D1F1-4440-8B86-56B21E19DC93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {17EADC05-D1F1-4440-8B86-56B21E19DC93}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {17EADC05-D1F1-4440-8B86-56B21E19DC93}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {17EADC05-D1F1-4440-8B86-56B21E19DC93}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E3522C6-5A03-4333-9602-B13243334887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E3522C6-5A03-4333-9602-B13243334887}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E3522C6-5A03-4333-9602-B13243334887}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E3522C6-5A03-4333-9602-B13243334887}.Release|Any CPU.Build.0 = Release|Any CPU
+ {978A638E-EDA8-43B7-A1C2-104A790A0C10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {978A638E-EDA8-43B7-A1C2-104A790A0C10}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {978A638E-EDA8-43B7-A1C2-104A790A0C10}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {978A638E-EDA8-43B7-A1C2-104A790A0C10}.Release|Any CPU.Build.0 = Release|Any CPU
+ {61271216-85F8-4425-BAFB-1BEE4A35F5F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {61271216-85F8-4425-BAFB-1BEE4A35F5F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {61271216-85F8-4425-BAFB-1BEE4A35F5F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {61271216-85F8-4425-BAFB-1BEE4A35F5F9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {59D26679-7299-4251-A58E-3AC3C6FA717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59D26679-7299-4251-A58E-3AC3C6FA717E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59D26679-7299-4251-A58E-3AC3C6FA717E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59D26679-7299-4251-A58E-3AC3C6FA717E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4975C9B8-E205-41F5-A38A-19496A4B85CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4975C9B8-E205-41F5-A38A-19496A4B85CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4975C9B8-E205-41F5-A38A-19496A4B85CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4975C9B8-E205-41F5-A38A-19496A4B85CF}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {93EFF637-042E-4DD0-A74B-7F0CF998CF96} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+ {684035E2-174F-47CE-AA5C-36624C7E26F3} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+ {6295C9FB-DAC4-4C07-97C5-C0332ABDD13D} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+ {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+ {F302E6D6-5A95-4D22-8DC2-21BE2CB30275} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
+ {5777BDEC-4726-4425-85F2-A090524F692D} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
+ {09D05F35-CEA2-48D9-86D0-FB95982BA511} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
+ {35054AA5-CF40-4F38-9414-C76742C29382} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
+ {9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0} = {6295C9FB-DAC4-4C07-97C5-C0332ABDD13D}
+ {A14242DD-DA06-4DC3-8598-1761AA7C76D1} = {6295C9FB-DAC4-4C07-97C5-C0332ABDD13D}
+ {7279A2AE-8D1F-4E66-A73A-01AF7927A336} = {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}
+ {83F18A31-5983-4587-A0B2-414BF70E50B5} = {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}
+ {5CC8AEFF-2F75-4053-9569-73419839875A} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+ {9CB2F821-BB23-48E5-88E8-C326477733C0} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+ {266D07B7-3648-4F3D-818A-89EDA7D84C58} = {5CC8AEFF-2F75-4053-9569-73419839875A}
+ {206FDF79-9BF3-433A-B7FF-627287BBD760} = {5CC8AEFF-2F75-4053-9569-73419839875A}
+ {8C2CC25B-DE5D-433E-A550-63864C7A716D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
+ {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
+ {396F6843-C06A-4856-B0AF-769542C83000} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
+ {D33C3BD0-2C88-4875-B47E-7BDD908C3342} = {396F6843-C06A-4856-B0AF-769542C83000}
+ {A099C81C-73ED-4AF0-80A0-C12FB8B87394} = {396F6843-C06A-4856-B0AF-769542C83000}
+ {17EADC05-D1F1-4440-8B86-56B21E19DC93} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
+ {3E3522C6-5A03-4333-9602-B13243334887} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
+ {978A638E-EDA8-43B7-A1C2-104A790A0C10} = {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}
+ {61271216-85F8-4425-BAFB-1BEE4A35F5F9} = {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}
+ {2DA6F051-80D7-4BA4-AB6B-98261C3EE7B9} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
+ {2FC9015D-41AF-4B8E-941B-A3CBAEA19EDF} = {2DA6F051-80D7-4BA4-AB6B-98261C3EE7B9}
+ {4975C9B8-E205-41F5-A38A-19496A4B85CF} = {2DA6F051-80D7-4BA4-AB6B-98261C3EE7B9}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {C9A356D5-D4FE-414B-B982-6C97792BE6C6}
+ EndGlobalSection
+EndGlobal
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml"
new file mode 100644
index 0000000..36847ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+ <PropertyGroup>
+ <DeleteExistingFiles>false</DeleteExistingFiles>
+ <ExcludeApp_Data>false</ExcludeApp_Data>
+ <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+ <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+ <LastUsedPlatform>Any CPU</LastUsedPlatform>
+ <PublishProvider>FileSystem</PublishProvider>
+ <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
+ <WebPublishMethod>FileSystem</WebPublishMethod>
+ <_TargetId>Folder</_TargetId>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj"
new file mode 100644
index 0000000..fa406f4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj"
@@ -0,0 +1,100 @@
+锘�<Project Sdk="Microsoft.NET.Sdk.Web">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <GenerateDocumentationFile>False</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceInfo.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceProtocol.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceProtocolDetail.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DispatchInfo.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_Router.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_Task.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_TaskExecuteDetail.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Dictionary.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_DictionaryList.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Menu.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Role.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_RoleAuth.tsv" />
+ <Content Remove="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_User.tsv" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Remove="index.html" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <EmbeddedResource Include="index.html">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceInfo.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceProtocol.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DeviceProtocolDetail.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_DispatchInfo.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_Router.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_Task.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Dt_TaskExecuteDetail.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Dictionary.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_DictionaryList.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Menu.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Role.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_RoleAuth.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Include="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_User.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </EmbeddedResource>
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ProcessService\WIDESEAWCS_ProcessService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_QuartzJob\WIDESEAWCS_QuartzJob.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SignalR\WIDESEAWCS_SignalR.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" />
+ <ProjectReference Include="..\WIDESEAWCs_TaskInfoService\WIDESEAWCs_TaskInfoService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_Tasks\WIDESEAWCS_Tasks.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Content Update="nlog.config">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Update="wwwroot\swg-login.html">
+ <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+ </Content>
+ <Content Update="wwwroot\WIDESEAWCS_DB.DBSeed.Json\Sys_Tenant.tsv">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/favicon.ico"
new file mode 100644
index 0000000..a3a7999
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/logo.jpg.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/logo.jpg.jpg"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Release/net6.0/publish/wwwroot/logo.jpg.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/favicon.ico"
new file mode 100644
index 0000000..a3a7999
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/logo.jpg.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/logo.jpg.jpg"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/PubTmp/Out/wwwroot/logo.jpg.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/WIDESEAWCS_Server.csproj.CopyComplete" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/WIDESEAWCS_Server.csproj.CopyComplete"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Release/net6.0/WIDESEAWCS_Server.csproj.CopyComplete"
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.g.targets"
new file mode 100644
index 0000000..e3a49e3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.g.targets"
@@ -0,0 +1,9 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/favicon.ico"
new file mode 100644
index 0000000..a3a7999
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj"
new file mode 100644
index 0000000..9b75270
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/obj/WIDESEAWCS_SignalR.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/obj/WIDESEAWCS_SignalR.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SignalR/obj/WIDESEAWCS_SignalR.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj"
new file mode 100644
index 0000000..e29c7fd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj"
new file mode 100644
index 0000000..dd102f5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ISystemServices\WIDESEAWCS_ISystemServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj"
new file mode 100644
index 0000000..297907e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj"
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_ITaskInfoRepository\WIDESEAWCS_ITaskInfoRepository.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj"
new file mode 100644
index 0000000..6901939
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj"
@@ -0,0 +1,16 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_ITaskInfoService\WIDESEAWCS_ITaskInfoService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_TaskInfo_HtyService\WIDESEAWCS_TaskInfo_HtyService.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/WIDESEAWCS_TaskInfo_HtyRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/WIDESEAWCS_TaskInfo_HtyRepository.csproj"
new file mode 100644
index 0000000..87b41a7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/WIDESEAWCS_TaskInfo_HtyRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ITaskInfo_HtyRepository\WIDESEAWCS_ITaskInfo_HtyRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/obj/WIDESEAWCS_TaskInfo_HtyRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/obj/WIDESEAWCS_TaskInfo_HtyRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyRepository/obj/WIDESEAWCS_TaskInfo_HtyRepository.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/WIDESEAWCS_TaskInfo_HtyService.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/WIDESEAWCS_TaskInfo_HtyService.csproj"
new file mode 100644
index 0000000..3d67f10
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/WIDESEAWCS_TaskInfo_HtyService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ITaskInfo_HtyService\WIDESEAWCS_ITaskInfo_HtyService.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/obj/WIDESEAWCS_TaskInfo_HtyService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/obj/WIDESEAWCS_TaskInfo_HtyService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfo_HtyService/obj/WIDESEAWCS_TaskInfo_HtyService.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj"
new file mode 100644
index 0000000..4a857da
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj"
@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEAWCS_ProcessRepository\WIDESEAWCS_ProcessRepository.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_QuartzJob\WIDESEAWCS_QuartzJob.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SignalR\WIDESEAWCS_SignalR.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_TaskInfoService\WIDESEAWCS_TaskInfoService.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="ConveyorCZLineJob\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.g.targets"
new file mode 100644
index 0000000..171871c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.browserslistrc" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.browserslistrc"
new file mode 100644
index 0000000..214388f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.browserslistrc"
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not dead
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.eslintrc.cjs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.eslintrc.cjs"
new file mode 100644
index 0000000..2029d6d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.eslintrc.cjs"
@@ -0,0 +1,19 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ 'extends': [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended',
+ '@vue/eslint-config-typescript',
+ '@vue/eslint-config-prettier/skip-formatting'
+ ],
+ rules: {
+ 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
+ },
+ parserOptions: {
+ ecmaVersion: 'latest'
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.gitignore" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.gitignore"
new file mode 100644
index 0000000..403adbc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/.gitignore"
@@ -0,0 +1,23 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/README.md" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/README.md"
new file mode 100644
index 0000000..06bd587
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/README.md"
@@ -0,0 +1,29 @@
+# vol.vue3
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Run your unit tests
+```
+npm run test:unit
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/build.bat" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/build.bat"
new file mode 100644
index 0000000..10da9ff
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/build.bat"
@@ -0,0 +1 @@
+npm run build
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/env.d.ts" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/env.d.ts"
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/env.d.ts"
@@ -0,0 +1 @@
+/// <reference types="vite/client" />
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/install.bat" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/install.bat"
new file mode 100644
index 0000000..be01f16
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/install.bat"
@@ -0,0 +1 @@
+npm cache clear --force & npm install
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/node_modules.zip" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/node_modules.zip"
new file mode 100644
index 0000000..bdd51fa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/node_modules.zip"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/favicon.ico"
new file mode 100644
index 0000000..9215c89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/el.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/el.png"
new file mode 100644
index 0000000..a166689
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/el.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon1.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon1.png"
new file mode 100644
index 0000000..da63666
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon2.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon2.png"
new file mode 100644
index 0000000..d8370b6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon2.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon3.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon3.png"
new file mode 100644
index 0000000..c8adbc2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon3.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon4.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon4.png"
new file mode 100644
index 0000000..da73fe6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/imgs/icon4.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/login_bg.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/login_bg.png"
new file mode 100644
index 0000000..0e50abc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/login_bg.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/qq.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/qq.png"
new file mode 100644
index 0000000..5366a39
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/static/qq.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/run.bat" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/run.bat"
new file mode 100644
index 0000000..b896a08
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/run.bat"
@@ -0,0 +1 @@
+npm run dev
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/App.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/App.vue"
new file mode 100644
index 0000000..6090b55
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/App.vue"
@@ -0,0 +1,63 @@
+<template>
+ <div id="nav"></div>
+ <el-config-provider :locale="locale">
+ <router-view />
+ </el-config-provider>
+</template>
+<script>
+import { ElConfigProvider } from "element-plus";
+import zhCn from "element-plus/es/locale/lang/zh-cn";
+export default {
+ name: "vol_app",
+ components: {
+ [ElConfigProvider.name]: ElConfigProvider, //娣诲姞缁勪欢
+ },
+ data() {
+ return {
+ locale: zhCn,
+ };
+ },
+};
+</script>
+<style lang="stylus">
+#app {
+ font-family: Avenir, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ height: 100%;
+ width: 100%;
+}
+
+.el-alert--error.is-light {
+ border: 1px solid #ffe0e0;
+}
+
+.el-alert--error.is-light {
+ color: #f74444 !important;
+}
+
+.el-alert--warning.is-light {
+ border: 1px solid #ffe6c1;
+}
+
+.el-alert--info.is-light {
+ border: 1px solid #e6e5e5;
+}
+
+.el-alert--info .el-alert__description {
+ color: #6b6b6b !important;
+}
+
+.el-alert--warning.is-light {
+ background-color: #fdf6ec;
+ color: #d68409 !important;
+}
+
+.el-alert--success.is-light {
+ border: 1px solid #cdf7b8;
+}
+
+.el-alert--success.is-light .el-alert__description {
+ color: #3baf02 !important;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/css/common.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/css/common.less"
new file mode 100644
index 0000000..ac7a179
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/css/common.less"
@@ -0,0 +1,75 @@
+*{
+ box-sizing:border-box;
+ -moz-box-sizing:border-box; /* Firefox */
+ -webkit-box-sizing:border-box; /* Safari */
+}
+.el-pager li{
+ font-weight: 100;
+ margin-right: 9px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ min-width: 28px;
+}
+.el-pager li.active,.el-pager li:hover{
+ background: #ed4014;
+ color: white;
+}
+.el-pagination__editor.el-input .el-input__inner{
+ height: 23px;
+}
+
+
+.animated {
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ }
+
+ @media (print), (prefers-reduced-motion) {
+ .animated {
+ -webkit-animation: unset !important;
+ animation: unset !important;
+ -webkit-transition: none !important;
+ transition: none !important;
+ }
+ }
+
+ @-webkit-keyframes fadeInDown {
+ from {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ @keyframes fadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ .fadeInDown {
+ -webkit-animation-name: fadeInDown;
+ animation-name: fadeInDown;
+ }
+ .ivu-message{
+ z-index: 999999999 !important;
+ }
+ .ivu-form-item-content{
+ text-align: left;
+ }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf"
new file mode 100644
index 0000000..91b74de
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff"
new file mode 100644
index 0000000..02b9a25
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/default_header.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/default_header.png"
new file mode 100644
index 0000000..8a28a9d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/default_header.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png"
new file mode 100644
index 0000000..efe8ccb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png"
new file mode 100644
index 0000000..efe8ccb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/favicon.ico" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/favicon.ico"
new file mode 100644
index 0000000..9215c89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/favicon.ico"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/01.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/01.jpg"
new file mode 100644
index 0000000..e0b3351
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/01.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/02.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/02.jpg"
new file mode 100644
index 0000000..980d84c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/02.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/03.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/03.jpg"
new file mode 100644
index 0000000..60e1e4c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/03.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/04.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/04.jpg"
new file mode 100644
index 0000000..69a4fb9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/04.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/05.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/05.jpg"
new file mode 100644
index 0000000..324d403
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/05.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/06.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/06.jpg"
new file mode 100644
index 0000000..e7e56f7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/06.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/07.jpg" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/07.jpg"
new file mode 100644
index 0000000..00797c6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/h5/07.jpg"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/log.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/log.png"
new file mode 100644
index 0000000..8397330
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/log.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/logo.png"
new file mode 100644
index 0000000..165d86a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/imgs/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/logo.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/logo.png"
new file mode 100644
index 0000000..f3d2503
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/assets/logo.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue"
new file mode 100644
index 0000000..1ccf5c7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue"
@@ -0,0 +1,10 @@
+<template>
+ <div style="text-align: center;font-size: 16px;padding: 20px;">姝e湪鍔犺浇璧勬簮...</div>
+</template>
+<script>
+export default {
+ created() {
+ // console.log('loading')
+ }
+};
+</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue"
new file mode 100644
index 0000000..431d6c5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue"
@@ -0,0 +1,59 @@
+<template>
+ <el-alert
+ :title="'褰撳墠閫変腑' + auditParam.rows + '鏉¤褰曞緟瀹℃牳..'"
+ type="success"
+ :closable="false"
+ >
+ </el-alert>
+ <div class="item">
+ <label>瀹℃牳缁撴灉锛�</label>
+ <el-radio-group v-model="auditParam.status">
+ <el-radio
+ v-for="item in auditParam.data"
+ :key="item.status"
+ :label="item.status"
+ >
+ <span>{{ item.text }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+ <div class="item">
+ <label style="margin-right: 13px;">澶� 娉細</label>
+ <el-input
+ v-model="auditParam.reason"
+ type="textarea"
+ style="margin-right: 13px;"
+ :autosize="{ minRows: 4, maxRows: 10 }"
+ placeholder="瀹℃牳澶囨敞..."
+ ></el-input>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ auditParam: {
+ type: Object,
+ default: () => {
+ return {
+ auditParam: {
+ rows: 0,
+ model: false,
+ status: -1,
+ reason: "",
+ data: [], //[{ text: "閫氳繃", status: 1 }, { text: "鎷掔粷", status: 2 }]
+ },
+ };
+ },
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+.item{
+ margin-top: 20px;
+ display: flex;
+ > label{
+ width: 86px;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue"
new file mode 100644
index 0000000..e5e6a79
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue"
@@ -0,0 +1,3 @@
+<template>
+ <div></div>
+</template>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue"
new file mode 100644
index 0000000..3885ed5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue"
@@ -0,0 +1,3 @@
+<template>
+ <div id="test"></div>
+</template>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue"
new file mode 100644
index 0000000..afd4250
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue"
@@ -0,0 +1,345 @@
+<template>
+ <div data-v-394040b0 class="icons">
+ <div
+ @click="select(index)"
+ v-for="(item, index) in icons"
+ :key="index"
+ class="icons-item"
+ >
+ <i
+ :class="[item, selectIndex == index ? 'active' : '']"
+ style="font-size: 32px"
+ ></i>
+ <p>{{ item }}</p>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ onSelect: {
+ type: Function,
+ default: () => {
+ return "";
+ },
+ },
+ },
+ methods: {
+ select(index) {
+ this.selectIndex = index;
+ this.onSelect(index < 0 ? "" : this.icons[index]);
+ },
+ },
+ data() {
+ return {
+ selectIndex: -1,
+ icons: [
+ //ivu-icon ivu-icon-ios-add
+ "el-icon-platform-eleme",
+ "el-icon-eleme",
+ "el-icon-delete-solid",
+ "el-icon-delete",
+ "el-icon-s-tools",
+ "el-icon-setting",
+ "el-icon-user-solid",
+ "el-icon-user",
+ "el-icon-phone",
+ "el-icon-phone-outline",
+ "el-icon-more",
+ "el-icon-more-outline",
+ "el-icon-star-on",
+ "el-icon-star-off",
+ "el-icon-s-goods",
+ "el-icon-goods",
+ "el-icon-warning",
+ "el-icon-warning-outline",
+ "el-icon-question",
+ "el-icon-info",
+ "el-icon-remove",
+ "el-icon-circle-plus",
+ "el-icon-success",
+ "el-icon-error",
+ "el-icon-zoom-in",
+ "el-icon-zoom-out",
+ "el-icon-remove-outline",
+ "el-icon-circle-plus-outline",
+ "el-icon-circle-check",
+ "el-icon-circle-close",
+ "el-icon-s-help",
+ "el-icon-help",
+ "el-icon-minus",
+ "el-icon-plus",
+ "el-icon-check",
+ "el-icon-close",
+ "el-icon-picture",
+ "el-icon-picture-outline",
+ "el-icon-picture-outline-round",
+ "el-icon-upload",
+ "el-icon-upload2",
+ "el-icon-download",
+ "el-icon-camera-solid",
+ "el-icon-camera",
+ "el-icon-video-camera-solid",
+ "el-icon-video-camera",
+ "el-icon-message-solid",
+ "el-icon-bell",
+ "el-icon-s-cooperation",
+ "el-icon-s-order",
+ "el-icon-s-platform",
+ "el-icon-s-fold",
+ "el-icon-s-unfold",
+ "el-icon-s-operation",
+ "el-icon-s-promotion",
+ "el-icon-s-home",
+ "el-icon-s-release",
+ "el-icon-s-ticket",
+ "el-icon-s-management",
+ "el-icon-s-open",
+ "el-icon-s-shop",
+ "el-icon-s-marketing",
+ "el-icon-s-flag",
+ "el-icon-s-comment",
+ "el-icon-s-finance",
+ "el-icon-s-claim",
+ "el-icon-s-custom",
+ "el-icon-s-opportunity",
+ "el-icon-s-data",
+ "el-icon-s-check",
+ "el-icon-s-grid",
+ "el-icon-menu",
+ "el-icon-share",
+ "el-icon-d-caret",
+ "el-icon-caret-left",
+ "el-icon-caret-right",
+ "el-icon-caret-bottom",
+ "el-icon-caret-top",
+ "el-icon-bottom-left",
+ "el-icon-bottom-right",
+ "el-icon-back",
+ "el-icon-right",
+ "el-icon-bottom",
+ "el-icon-top",
+ "el-icon-top-left",
+ "el-icon-top-right",
+ "el-icon-arrow-left",
+ "el-icon-arrow-right",
+ "el-icon-arrow-down",
+ "el-icon-arrow-up",
+ "el-icon-d-arrow-left",
+ "el-icon-d-arrow-right",
+ "el-icon-video-pause",
+ "el-icon-video-play",
+ "el-icon-refresh",
+ "el-icon-refresh-right",
+ "el-icon-refresh-left",
+ "el-icon-finished",
+ "el-icon-sort",
+ "el-icon-sort-up",
+ "el-icon-sort-down",
+ "el-icon-rank",
+ "el-icon-loading",
+ "el-icon-view",
+ "el-icon-c-scale-to-original",
+ "el-icon-date",
+ "el-icon-edit",
+ "el-icon-edit-outline",
+ "el-icon-folder",
+ "el-icon-folder-opened",
+ "el-icon-folder-add",
+ "el-icon-folder-remove",
+ "el-icon-folder-delete",
+ "el-icon-folder-checked",
+ "el-icon-tickets",
+ "el-icon-document-remove",
+ "el-icon-document-delete",
+ "el-icon-document-copy",
+ "el-icon-document-checked",
+ "el-icon-document",
+ "el-icon-document-add",
+ "el-icon-printer",
+ "el-icon-paperclip",
+ "el-icon-takeaway-box",
+ "el-icon-search",
+ "el-icon-monitor",
+ "el-icon-attract",
+ "el-icon-mobile",
+ "el-icon-scissors",
+ "el-icon-umbrella",
+ "el-icon-headset",
+ "el-icon-brush",
+ "el-icon-mouse",
+ "el-icon-coordinate",
+ "el-icon-magic-stick",
+ "el-icon-reading",
+ "el-icon-data-line",
+ "el-icon-data-board",
+ "el-icon-pie-chart",
+ "el-icon-data-analysis",
+ "el-icon-collection-tag",
+ "el-icon-film",
+ "el-icon-suitcase",
+ "el-icon-suitcase-1",
+ "el-icon-receiving",
+ "el-icon-collection",
+ "el-icon-files",
+ "el-icon-notebook-1",
+ "el-icon-notebook-2",
+ "el-icon-toilet-paper",
+ "el-icon-office-building",
+ "el-icon-school",
+ "el-icon-table-lamp",
+ "el-icon-house",
+ "el-icon-no-smoking",
+ "el-icon-smoking",
+ "el-icon-shopping-cart-full",
+ "el-icon-shopping-cart-1",
+ "el-icon-shopping-cart-2",
+ "el-icon-shopping-bag-1",
+ "el-icon-shopping-bag-2",
+ "el-icon-sold-out",
+ "el-icon-sell",
+ "el-icon-present",
+ "el-icon-box",
+ "el-icon-bank-card",
+ "el-icon-money",
+ "el-icon-coin",
+ "el-icon-wallet",
+ "el-icon-discount",
+ "el-icon-price-tag",
+ "el-icon-news",
+ "el-icon-guide",
+ "el-icon-male",
+ "el-icon-female",
+ "el-icon-thumb",
+ "el-icon-cpu",
+ "el-icon-link",
+ "el-icon-connection",
+ "el-icon-open",
+ "el-icon-turn-off",
+ "el-icon-set-up",
+ "el-icon-chat-round",
+ "el-icon-chat-line-round",
+ "el-icon-chat-square",
+ "el-icon-chat-dot-round",
+ "el-icon-chat-dot-square",
+ "el-icon-chat-line-square",
+ "el-icon-message",
+ "el-icon-postcard",
+ "el-icon-position",
+ "el-icon-turn-off-microphone",
+ "el-icon-microphone",
+ "el-icon-close-notification",
+ "el-icon-bangzhu",
+ "el-icon-time",
+ "el-icon-odometer",
+ "el-icon-crop",
+ "el-icon-aim",
+ "el-icon-switch-button",
+ "el-icon-full-screen",
+ "el-icon-copy-document",
+ "el-icon-mic",
+ "el-icon-stopwatch",
+ "el-icon-medal-1",
+ "el-icon-medal",
+ "el-icon-trophy",
+ "el-icon-trophy-1",
+ "el-icon-first-aid-kit",
+ "el-icon-discover",
+ "el-icon-place",
+ "el-icon-location",
+ "el-icon-location-outline",
+ "el-icon-location-information",
+ "el-icon-add-location",
+ "el-icon-delete-location",
+ "el-icon-map-location",
+ "el-icon-alarm-clock",
+ "el-icon-timer",
+ "el-icon-watch-1",
+ "el-icon-watch",
+ "el-icon-lock",
+ "el-icon-unlock",
+ "el-icon-key",
+ "el-icon-service",
+ "el-icon-mobile-phone",
+ "el-icon-bicycle",
+ "el-icon-truck",
+ "el-icon-ship",
+ "el-icon-basketball",
+ "el-icon-football",
+ "el-icon-soccer",
+ "el-icon-baseball",
+ "el-icon-wind-power",
+ "el-icon-light-rain",
+ "el-icon-lightning",
+ "el-icon-heavy-rain",
+ "el-icon-sunrise",
+ "el-icon-sunrise-1",
+ "el-icon-sunset",
+ "el-icon-sunny",
+ "el-icon-cloudy",
+ "el-icon-partly-cloudy",
+ "el-icon-cloudy-and-sunny",
+ "el-icon-moon",
+ "el-icon-moon-night",
+ "el-icon-dish",
+ "el-icon-dish-1",
+ "el-icon-food",
+ "el-icon-chicken",
+ "el-icon-fork-spoon",
+ "el-icon-knife-fork",
+ "el-icon-burger",
+ "el-icon-tableware",
+ "el-icon-sugar",
+ "el-icon-dessert",
+ "el-icon-ice-cream",
+ "el-icon-hot-water",
+ "el-icon-water-cup",
+ "el-icon-coffee-cup",
+ "el-icon-cold-drink",
+ "el-icon-goblet",
+ "el-icon-goblet-full",
+ "el-icon-goblet-square",
+ "el-icon-goblet-square-full",
+ "el-icon-refrigerator",
+ "el-icon-grape",
+ "el-icon-watermelon",
+ "el-icon-cherry",
+ "el-icon-apple",
+ "el-icon-pear",
+ "el-icon-orange",
+ "el-icon-coffee",
+ "el-icon-ice-tea",
+ "el-icon-ice-drink",
+ "el-icon-milk-tea",
+ "el-icon-potato-strips",
+ "el-icon-lollipop",
+ "el-icon-ice-cream-square",
+ "el-icon-ice-cream-round",
+ ],
+ };
+ },
+};
+</script>
+
+
+<style lang="less" scoped>
+.icons-item {
+ float: left;
+ margin: 6px 6px 6px 0;
+ width: 115px;
+ text-align: center;
+ list-style: none;
+ cursor: pointer;
+ height: 100px;
+ color: #5c6b77;
+ transition: all 0.2s ease;
+ position: relative;
+ padding-top: 10px;
+}
+.active {
+ border: 1px solid;
+ background: #f44336;
+ color: white;
+ font-size: 32px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue"
new file mode 100644
index 0000000..2ef4ab8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue"
@@ -0,0 +1,126 @@
+<template>
+ <div class="qk-search" :class="[formLen == 1 ? 'form-1' : '', hasDate ? 'date-form' : 'qk-form']">
+ <vol-form ref="searchForm" size="default" labelPosition="left" :load-key="false" :label-width="labelWidth"
+ :formRules="formOptions" :formFields="searchFormFields" :select2Count="select2Count">
+ </vol-form>
+ </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+export default {
+ components: {
+ VolForm
+ },
+ props: {
+ select2Count: {
+ type: Number,
+ default: 2000
+ },
+ labelWidth: {
+ type: Number,
+ default: 100
+ },
+ searchFormOptions: {
+ type: Array,
+ default: () => {
+ return []
+ },
+ },
+ searchFormFields: {
+ type: Object,
+ default: () => {
+ return {};
+ },
+ },
+ tiggerPress: {
+ type: Function,
+ default: () => { },
+ },
+ queryFields: { //蹇嵎鏌ヨ鐨勫瓧娈�
+ type: Array,
+ default: () => {
+ return []
+ },
+ }
+ },
+ methods: {
+
+ },
+ data() {
+ return {
+ formLen: 1,
+ formOptions: [],
+ hasDate: false
+ }
+ },
+ created() {
+ let ops = [];
+ if (this.queryFields.length) {
+ for (let index = 0; index < this.queryFields.length; index++) {
+ const field = this.queryFields[index];
+ this.searchFormOptions.forEach(options => {
+ options.forEach(x => {
+ if (field == x.field) {
+ ops.push(x);
+ }
+ })
+ })
+ }
+ // this.formOptions.push(ops);
+ this.formLen = ops.length;
+ }
+ else if (this.searchFormOptions.length) {
+ ops.push(this.searchFormOptions[0][0]);
+ // this.formOptions.push([this.searchFormOptions[0][0]]);
+ }
+ ops.forEach(x => {
+ if (!x.onKeyPress) {
+ x.onKeyPress = ($event) => {
+ if ($event && $event.keyCode == 13) {
+ this.$emit('tiggerPress', $event)
+ }
+ }
+ }
+ })
+ this.formOptions.push(ops);
+ //tiggerPress
+ this.hasDate = ops.some(x => { return (x.type == 'date' || x.type == 'datetime') && x.range == true })
+ },
+};
+</script>
+<style lang="less" scoped>
+.qk-search ::v-deep(.el-form-item__label) {
+ // display: none;
+ width: auto !important;
+ margin-left: 10px;
+}
+
+.form-1::v-deep(.el-form-item__label) {
+ display: none;
+}
+
+.qk-search {
+ overflow: hidden;
+ height: 38px;
+ position: relative;
+ top: 1px;
+ right: -5px;
+}
+
+.qk-search ::v-deep(.el-form-item) {
+ width: auto !important;
+}
+
+.qk-search ::v-deep(.el-input--large .el-input__wrapper) {
+ padding: 0px 15px;
+}
+
+.qk-form ::v-deep(.el-form-item__content) {
+ width: 140px;
+}
+
+.date-form ::v-deep(.v-date-range) {
+ width: 205px;
+ margin-top: 1px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue"
new file mode 100644
index 0000000..134a454
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue"
@@ -0,0 +1,105 @@
+<template>
+ <div class="router-loading" style="background: #eeeeee5c;">
+ <div class="spanner">
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ <span></span>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {};
+ }
+};
+</script>
+<style scoped>
+.router-loading {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ font-size: 100px;
+ text-align: center;
+ padding-top: 200px;
+ color: #808080;
+ z-index: 9999;
+}
+.spanner {
+ width: 100px;
+ height: 100px;
+ position: relative;
+ margin: 0 auto;
+}
+.router-loading span {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #66b1ff;
+ position: absolute;
+ animation: r_load 1.04s ease infinite;
+}
+@keyframes r_load {
+ 0% {
+ transform: scale(1.2);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.3);
+ opacity: 0.5;
+ }
+}
+.router-loading span:nth-child(1) {
+ left: 0;
+ top: 50%;
+ margin-top: -10px;
+ animation-delay: 0.13s;
+}
+.router-loading span:nth-child(2) {
+ left: 14px;
+ top: 14px;
+ animation-delay: 0.26s;
+}
+.router-loading span:nth-child(3) {
+ left: 50%;
+ top: 0;
+ margin-left: -10px;
+ animation-delay: 0.39s;
+}
+.router-loading span:nth-child(4) {
+ top: 14px;
+ right: 14px;
+ animation-delay: 0.52s;
+}
+.router-loading span:nth-child(5) {
+ right: 0;
+ top: 50%;
+ margin-top: -10px;
+ animation-delay: 0.65s;
+}
+.router-loading span:nth-child(6) {
+ right: 14px;
+ bottom: 14px;
+ animation-delay: 0.78s;
+}
+.router-loading span:nth-child(7) {
+ bottom: 0;
+ left: 50%;
+ margin-left: -10px;
+ animation-delay: 0.91s;
+}
+.router-loading span:nth-child(8) {
+ bottom: 14px;
+ left: 14px;
+ animation-delay: 1.04s;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue"
new file mode 100644
index 0000000..d013206
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue"
@@ -0,0 +1,215 @@
+<template>
+ <div class="upload-container">
+ <a :href="template.url" ref="template"></a>
+ <div class="button-group">
+ <el-upload style="float: left" ref="uploadFile" :max-size="maxSize" :on-change="clearMsg"
+ :before-upload="beforeUpload" :action="url">
+ <el-button size="small"><i class="el-icon-folder-opened"></i>閫夋嫨鏂囦欢</el-button>
+ </el-upload>
+ <el-button v-if="template.url && (template.showDowloadTemplate || template.showDowloadTemplate === undefined)"
+ style="margin-left: 10px" type="primary" size="small" @click="dowloadTemplate" :loading="loadingStatus">
+ <i class="el-icon-bottom"></i>
+ 涓嬭浇妯℃澘</el-button>
+ <el-button type="success" size="small" @click="upload" :loading="loadingStatus">
+ <i class="el-icon-top"></i>
+ 涓婁紶鏂囦欢</el-button>
+ </div>
+ <div class="alert">
+ <el-alert title="涓婁紶璇存槑" type="warning" :closable="false" show-icon>鍙兘涓婁紶excel鏂囦欢,鏂囦欢澶у皬涓嶈秴杩噞{ maxSize }}M</el-alert>
+ </div>
+
+ <div v-if="file">
+ <h3>鏂囦欢鍒楄〃</h3>
+ <div class="file-info">
+ <span>鏂囦欢鍚嶏細{{ file.name }}</span>
+ <span>澶у皬{{ (file.size / 1024).toFixed(2) }}KB</span>
+ </div>
+ </div>
+ <div v-show="message" class="v-r-message">
+ <h3 class="title">涓婁紶缁撴灉</h3>
+ <div class="text" :class="resultClass" v-html="message"></div>
+ </div>
+ <slot></slot>
+ </div>
+</template>
+<script>
+//鐩墠鍙敮鎸佸崟涓狤xcel涓婁紶锛屽叾浠栧姛鑳藉紑鍙戜腑...
+export default {
+ components: {},
+ props: {
+ url: {
+ type: String,
+ default: ''
+ },
+ template: {
+ //涓嬭浇妯℃澘閰嶇疆
+ type: Object,
+ default: () => {
+ return {
+ showDowloadTemplate: true,
+ url: '', //妯℃澘涓嬭浇璺緞锛屽鏋滄病鏈夋ā鏉胯矾寰勶紝鍒欎笉鏄剧ず涓嬭浇妯℃澘鍔熻兘
+ fileName: '鏈畾涔夋枃浠跺悕' //涓嬭浇妯℃澘鐨勬枃浠跺悕
+ };
+ }
+ },
+ importExcelBefore: {
+ type: Function,
+ default: (file) => {
+ return true;
+ }
+ }
+ },
+ data() {
+ return {
+ maxSize: 100,
+ model: true,
+ file: null,
+ loadingStatus: false,
+ message: '',
+ resultClass: ''
+ };
+ },
+ methods: {
+ clearMsg() {
+ this.message = '';
+ },
+ reset() {
+ this.file = null;
+ this.message = '';
+ this.resultClass = '';
+ },
+ getFileType() {
+ let fileName =
+ this.file.name
+ .split('.')
+ .pop()
+ .toLocaleLowerCase() || '';
+ if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(fileName) == -1) {
+ this.$Message.error('鍙兘閫夋嫨excel鏂囦欢');
+ return false;
+ }
+ return true;
+ },
+ beforeUpload(file) {
+ this.file = file;
+ if (!this.getFileType()) {
+ return false;
+ }
+ return false;
+ },
+ upload() {
+ let _url = this.url;
+ if (!_url) {
+ return this.$Message.error('娌℃湁閰嶇疆濂経rl');
+ }
+
+ if (!this.file) {
+ return this.$Message.error('璇烽�夋嫨鏂囦欢');
+ }
+ var formData = new FormData();
+ formData.append('fileInput', this.file);
+ if (!this.importExcelBefore(formData)) {
+ return;
+ }
+ this.loadingStatus = true;
+ this.http.post(_url, formData, true, { headers: { 'Content-Type': 'multipart/form-data' } }).then(
+ (x) => {
+ // this.$refs.uploadFile.clearFiles();
+ this.loadingStatus = false;
+ this.file = null;
+ if (x.status) {
+ this.$emit('importExcelAfter', x);
+ }
+
+ this.message = x.message;
+ this.resultClass = x.status ? 'v-r-success' : 'v-r-error';
+ },
+ (error) => {
+ this.loadingStatus = false;
+ }
+ );
+ },
+ getUrl(url) {
+ if (url.startsWith("http")) {
+ return url;
+ }
+ return this.http.ipAddress + url
+ },
+ dowloadTemplate() {
+ let url = this.getUrl(this.template.url);
+
+ let xmlResquest = new XMLHttpRequest();
+ xmlResquest.open('GET', url, true);
+ xmlResquest.setRequestHeader('Content-type', 'application/json');
+ xmlResquest.setRequestHeader(
+ 'Authorization',
+ this.$store.getters.getToken()
+ );
+ let fileName = this.template.fileName + '.xlsx';
+ let elink = this.$refs.template;
+ xmlResquest.responseType = 'blob';
+ let $_vue = this;
+ this.loadingStatus = true;
+ xmlResquest.onload = function (oEvent) {
+ $_vue.loadingStatus = false;
+ if (xmlResquest.response.type == 'application/json') {
+ return $_vue.message.error('鏈壘鍒颁笅杞芥枃浠�');
+ }
+ let content = xmlResquest.response;
+ elink.download = fileName;
+ let blob = new Blob([content]);
+ elink.href = URL.createObjectURL(blob);
+ elink.click();
+ };
+ xmlResquest.send();
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.upload-container {
+ min-height: 270px !important;
+ display: inline-block;
+ width: 100%;
+ padding: 10px;
+ border: 1px dashed #989898;
+ min-height: 250px;
+ border-radius: 5px;
+
+ .alert {
+ margin-top: 12px;
+ }
+
+ .el-button-group>* {
+ display: flex;
+ }
+
+ h3 {
+ margin: 9px 0px;
+ }
+
+ .file-info>span {
+ margin-right: 20px;
+ }
+
+ .v-r-message {
+ margin-top: 10px;
+
+ .title {
+ margin-bottom: 2px;
+ }
+
+ >.text {
+ font-size: 13px;
+ }
+
+ .v-r-success {
+ color: #02b702;
+ }
+
+ .v-r-error {
+ color: #dc0909;
+ }
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue"
new file mode 100644
index 0000000..d1fcb48
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue"
@@ -0,0 +1,46 @@
+<template>
+ <vol-table
+ :tableData="tableData"
+ :columns="columns"
+ :height="411"
+ :pagination-hide="true"
+ :load-key="false"
+ :text-inline="false"
+ :ck="false"
+ ></vol-table>
+</template>
+<script>
+import VolTable from '@/components/basic/VolTable.vue';
+import {
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance
+} from 'vue';
+export default defineComponent({
+ components: {
+ VolTable
+ },
+ props: {
+ tableData: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ setup() {
+ const columns = reactive([
+ { title: '鑺傜偣', field: 'stepName' },
+ { title: '瀹℃壒浜�', field: 'auditor' },
+ { title: '瀹℃壒缁撴灉', field: 'auditStatus' },
+ { title: '瀹℃壒鏃堕棿', field: 'auditDate',width:150 },
+ { title: '澶囨敞', field: 'remark' }
+ ]);
+ return {
+ columns
+ }
+ }
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less"
new file mode 100644
index 0000000..7b68b2a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less"
@@ -0,0 +1,193 @@
+.view-container {
+ // padding: 15px;
+ background: white;
+ .grid-search {
+ padding-top: 15px;
+ //padding: 15px 15px 0 15px;
+ }
+ .grid-container,
+ .grid-body {
+ padding: 0 15px;
+ }
+ .view-header {
+ padding-left: 15px;
+ padding-right: 15px;
+ }
+ .fs-line {
+ height: 9px;
+ background: #f1f1f1;
+ margin-top: -10px;
+ margin-bottom: 10px;
+ }
+}
+.view-header {
+ height: 45px;
+ position: relative;
+ padding-bottom: 11px;
+ display: flex;
+ .search-line {
+ min-width: 150px;
+ }
+ .search-line > div {
+ margin-left: 5px;
+ margin-right: 10px;
+ }
+ .search-line > div > div {
+ width: 200px;
+ text-align: left;
+ }
+ .search-line > div:first-child {
+ flex: 1;
+ }
+ .search-line > div .ivu-select-dropdown {
+ max-height: 300px;
+ }
+ .btn-group {
+ white-space: nowrap;
+ button {
+ margin-left: 10px;
+ // padding: 5px 16px;
+ }
+ }
+ .btn-group .ivu-dropdown-item {
+ text-align: left !important;
+ }
+ .btn-group .ivu-dropdown-item:not(:last-child) {
+ border-bottom: 1px dotted #eee;
+ }
+ .desc-text {
+ margin-top: 5px;
+ font-weight: bold;
+ margin-bottom: 3px;
+ font-size: 14px;
+ color: #313131;
+ white-space: nowrap;
+ border-bottom: 2px solid #646565;
+ i {
+ font-size: 16px;
+ position: relative;
+ top: 1px;
+ margin-right: 2px;
+ }
+ }
+ .search-box {
+ background: #fefefe;
+ margin-top: 45px;
+ border: 1px solid #ececec;
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ right: 0;
+ padding: 25px 40px;
+ padding-bottom: 0;
+ box-shadow: 0px 7px 18px -12px #bdc0bb;
+ }
+ .notice {
+ font-size: 13px;
+ color: #6b6b6b;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ position: relative;
+ top: 12px;
+ flex: 1;
+ left: 10px;
+ margin-right: 20px;
+ }
+}
+
+.table-info-cell-title {
+ background-color: #f5f5f5 !important;
+}
+.box-com .vol-edit-content{
+ > div.item {
+ // margin-bottom: 10px;
+ padding: 15px 17px 0 8px;
+ margin-bottom: 12px;
+ background: white;
+ }
+ > div.form-item {
+ padding: 16px 16px 0px 5px;
+ //box-shadow: 0 1px 7px rgb(199, 199, 199);
+ }
+ > div.table-item {
+ padding: 0 10px;
+ border-top: 1.5px solid #eaeaea;
+ }
+ .v-text {
+ line-height: 27px;
+ }
+ .form-text {
+ position: relative;
+ border-bottom: 1px solid #eee;
+ font-size: 14px;
+ margin-bottom: 14px;
+ }
+}
+
+.form-closex {
+ text-align: right;
+ padding-bottom: 24px;
+}
+.form-closex button {
+ margin-left: 10px;
+ padding: 4px 13px;
+}
+.toolbar {
+ padding: 3px 0px;
+ width: 100%;
+ display: flex;
+ .title {
+ line-height: 29px;
+ border-bottom: none;
+ font-size: 13px;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ .icon {
+ color: #009688;
+ font-size: 18px;
+ }
+
+ i {
+ line-height: 29px;
+ border-bottom: none;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ position: relative;
+ margin-top: -4px;
+ font-size: 14px;
+ }
+ }
+ .btns {
+ line-height: 28px;
+ flex: 1;
+ text-align: right;
+ button {
+ // border: none;
+ // margin-left:15px;
+ border: 0px;
+ padding: 0px 9px;
+ color: #292929;
+ }
+ button:hover{
+ color: #0089f6;
+ }
+ }
+}
+.vol-edit-content ::v-deep(.form-lang){
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+.vol-edit-box{
+ display: flex;
+}
+.vol-edit-content{
+ flex: 1;
+ width: 0;
+}
+.vol-edit-box-right{
+ height: 100%;
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue"
new file mode 100644
index 0000000..c66cf97
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue"
@@ -0,0 +1,536 @@
+<template>
+ <div class="layout-container">
+ <a :href="exportHref" ref="export"></a>
+ <!--寮�鍚噿鍔犺浇2020.12.06 -->
+ <vol-box :on-model-close="closeCustomModel" v-model="viewModel" :height="520" :width="500" :padding="0" :lazy="true"
+ title="璁剧疆">
+ <template #content>
+ <custom-column :view-columns="viewColumns"></custom-column>
+ </template>
+ <template #footer>
+ <div style="text-align: center">
+ <el-button type="default" size="small" @click="closeCustomModel"><i class="el-icon-close"></i>鍙栨秷</el-button>
+ <el-button type="success" size="small" @click="initViewColumns(true)"><i
+ class="el-icon-refresh"></i>閲嶇疆</el-button>
+ <el-button type="primary" size="small" @click="saveColumnConfig"><i class="el-icon-check"></i>纭畾</el-button>
+ </div>
+ </template>
+ </vol-box>
+ <ViewGridAudit @auditClick="saveAudit" :option="table" ref="audit">
+
+ </ViewGridAudit>
+
+ <!--瀵煎叆excel鍔熻兘-->
+ <!--2020.10.31娣诲姞瀵煎叆鍓嶇殑鏂规硶-->
+ <!--寮�鍚噿鍔犺浇2020.12.06 -->
+ <!-- 2022.01.08澧炲姞鏄庣粏琛ㄥ鍏ュ垽鏂� -->
+ <vol-box v-if="upload.url" v-model="upload.excel" :height="350" :width="600" :lazy="true"
+ :title="(boxModel ? detailOptions.cnName : table.cnName) + '-瀵煎叆'">
+ <UploadExcel ref="upload_excel" @importExcelAfter="importExcelAfter" :importExcelBefore="importExcelBefore"
+ :url="upload.url" :template="upload.template"></UploadExcel>
+ </vol-box>
+ <!--澶撮儴鑷畾涔夌粍浠�-->
+ <component :is="dynamicComponent.gridHeader" ref="gridHeader" @parentCall="parentCall"></component>
+ <!--涓荤晫闈㈡煡璇笌table琛ㄥ崟甯冨眬-->
+ <div class="view-container">
+ <!-- 2020.09.11澧炲姞鍥哄畾鏌ヨ琛ㄥ崟 -->
+ <!--鏌ヨ鏉′欢-->
+ <div class="grid-search">
+ <div :class="[fiexdSearchForm ? 'fiexd-search-box' : 'search-box']" v-show="searchBoxShow">
+ <!-- 2020.09.13澧炲姞formFileds鎷煎啓閿欒鍏煎澶勭悊 -->
+ <vol-form ref="searchForm" :load-key="false" style="padding: 0 15px" :label-width="labelWidth"
+ :formRules="searchFormOptions" :formFields="searchFormFields" :select2Count="select2Count">
+ <template #footer>
+ <div v-if="!fiexdSearchForm" class="form-closex">
+ <el-button size="small" type="primary" plain @click="search">
+ <i class="el-icon-search" />鏌ヨ
+ </el-button>
+
+ <el-button size="small" type="success" plain @click="resetSearch">
+ <i class="el-icon-refresh-right" />閲嶇疆
+ </el-button>
+ <el-button size="small" plain @click="searchBoxShow = !searchBoxShow">
+ <i class="el-icon-switch-button" />鍏抽棴
+ </el-button>
+ </div>
+ </template>
+ </vol-form>
+ <div v-if="fiexdSearchForm" class="fs-line"></div>
+ </div>
+ <div class="view-header">
+ <div class="desc-text">
+ <i class="el-icon-s-grid" />
+ <span>{{ table.cnName }}</span>
+ </div>
+ <div class="notice">
+ <a class="text" v-html="text || extend.text"></a>
+ </div>
+ <!--蹇�熸煡璇㈠瓧娈�-->
+ <div class="search-line" v-if="!fiexdSearchForm && !searchBoxShow">
+ <QuickSearch v-if="singleSearch" :searchFormOptions="searchFormOptions" :searchFormFields="searchFormFields"
+ :select2Count="select2Count" :label-width="labelWidth" :queryFields="queryFields"
+ @tiggerPress="quickSearchKeyPress"></QuickSearch>
+ </div>
+ <!--鎿嶄綔鎸夐挳缁�-->
+ <!-- 2020.11.29澧炲姞鏌ヨ鐣岄潰hidden灞炴�� -->
+
+ <div class="btn-group">
+ <template :key="bIndex" v-for="(btn, bIndex) in buttons.slice(0, maxBtnLength)">
+ <el-dropdown size="small" v-if="btn.data" :split-button="false">
+ <el-button :color="btn.color" :dark="false" :type="btn.type" :plain="btn.plain">
+ {{ btn.name }}<i class="el-icon-arrow-down el-icon--right"></i></el-button>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item v-for="(item, index) in btn.data" :key="index">
+ <div @click="onClick(item.onClick)">
+ <i :class="item.icon"></i>
+ {{ item.name }}
+ </div>
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ <el-button v-else :type="btn.type" size="small" :color="btn.color" :dark="false" :class="btn.class"
+ :plain="btn.plain" v-show="!btn.hidden" @click="onClick(btn.onClick)">
+ <i :class="btn.icon"></i> {{ btn.name }}
+ </el-button>
+ </template>
+ <el-button type="default" style="padding: 0px 10px" size="small" :plain="true" v-if="showCustom"
+ @click="showCustomModel">
+ <i class="el-icon-s-grid"></i>
+ </el-button>
+ <el-dropdown size="small" @click="changeDropdown" v-if="buttons.length > maxBtnLength">
+ <el-button type="primary" plain size="small">
+ 鏇村<i class="el-icon-arrow-down el-icon--right"></i>
+ </el-button>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item @click="changeDropdown(item.name)" :name="item.name" v-show="!item.hidden" v-for="(item, dIndex) in buttons.slice(
+ maxBtnLength,
+ buttons.length
+ )" :key="dIndex">
+ <i :class="item.icon"></i> {{ item.name }}</el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </div>
+ </div>
+
+ <!-- 鍒嗗壊浣嶇疆 -->
+ <vol-box v-if="boxInit" v-model="boxModel" :title="boxOptions.title" :width="boxOptions.width"
+ :height="boxOptions.height" :modal="boxOptions.modal" :draggable="boxOptions.draggable" :padding="0"
+ :on-model-close="onGridModelClose" @fullscreen="fullscreen">
+ <!--鏄庣粏澶撮儴鑷畾涔夌粍浠�-->
+ <template #content>
+ <div class="box-com vol-edit-box">
+ <div class="vol-edit-content">
+ <component :is="dynamicComponent.modelHeader" ref="modelHeader" @parentCall="parentCall"></component>
+ <!-- <div v-show="isBoxAudit" class="flow-step">
+ <div v-for="(item, index) in workFlowSteps" :key="index">
+ {{ item.stepName }}
+ </div>
+ </div> -->
+ <div class="item form-item">
+ <vol-form ref="form" :editor="editor" :load-key="false" :label-width="boxOptions.labelWidth"
+ :formRules="editFormOptions" :formFields="editFormFields" :select2Count="select2Count"></vol-form>
+ </div>
+ <!--鏄庣粏body鑷畾涔夌粍浠�-->
+ <component :is="dynamicComponent.modelBody" ref="modelBody" @parentCall="parentCall"></component>
+ <div v-show="hasDetail" v-if="detail.columns && detail.columns.length > 0"
+ class="grid-detail table-item item">
+ <div class="toolbar">
+ <div class="title form-text">
+ <span>
+ <i class="el-icon-menu" />
+ {{ detail.cnName }}
+ </span>
+ </div>
+ <!--鏄庣粏琛ㄦ牸鎸夐挳-->
+ <div class="btns" v-show="!isBoxAudit">
+ <el-button v-for="(btn, bIndex) in detailOptions.buttons" :key="bIndex" :plain="btn.plain"
+ v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)" @click="onClick(btn.onClick)"
+ size="small"><i :class="btn.icon"></i>{{ btn.name }}</el-button>
+ </div>
+ </div>
+ <vol-table ref="detail" @loadBefore="loadInternalDetailTableBefore" @loadAfter="loadDetailTableAfter"
+ @rowChange="detailRowOnChange" @rowClick="detailRowOnClick" :url="detailOptions.url"
+ :load-key="false" :index="true" :tableData="detailOptions.data" :columns="detailOptions.columns"
+ :pagination="detailOptions.pagination" :height="detailOptions.height" :single="detailOptions.single"
+ :pagination-hide="detailOptions.paginationHide" :defaultLoadPage="detailOptions.load"
+ :beginEdit="detailOptions.beginEdit" :endEditBefore="detailOptions.endEditBefore"
+ :endEditAfter="detailOptions.endEditAfter" :double-edit="detailOptions.doubleEdit"
+ :column-index="detailOptions.columnIndex" :ck="detailOptions.ck"
+ :text-inline="detailOptions.textInline" :select2Count="select2Count" :selectable="detailSelectable"
+ :spanMethod="detailSpanMethod"></vol-table>
+ </div>
+ <component :is="dynamicComponent.modelFooter" ref="modelFooter" @parentCall="parentCall"></component>
+ </div>
+ <div class="vol-edit-box-right">
+ <component :is="dynamicComponent.modelRight" ref="modelRight" @parentCall="parentCall"></component>
+ </div>
+ </div>
+ </template>
+ <template #footer>
+ <div style="text-align: center;" v-show="isBoxAudit">
+ <el-button size="small" type="primary" plain @click="onGridModelClose(false)">
+ <i class="el-icon-close">鍏抽棴</i>
+ </el-button>
+ <el-button size="small" type="primary" v-show="auditParam.showViewButton"
+ @click="auditParam.model = true">
+ <i class="el-icon-view">瀹℃壒</i>
+ </el-button>
+ </div>
+ <div v-show="!isBoxAudit">
+ <el-button v-for="(btn, bIndex) in boxButtons" :key="bIndex" :type="btn.type" size="small"
+ :plain="btn.plain" v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
+ :disabled="btn.hasOwnProperty('disabled') && !!btn.disabled" @click="onClick(btn.onClick)">
+ <i :class="btn.icon"></i>{{ btn.name }}
+ </el-button>
+ <el-button size="small" type="primary" plain @click="onGridModelClose(false)">
+ <i class="el-icon-close">鍏抽棴</i>
+ </el-button>
+ </div>
+ </template>
+ </vol-box>
+ </div>
+ <!--body鑷畾涔夌粍浠�-->
+ <div class="grid-body">
+ <component :is="dynamicComponent.gridBody" ref="gridBody" @parentCall="parentCall"></component>
+ </div>
+
+ <!--table琛ㄦ牸-->
+ <div class="grid-container">
+ <!-- 2021.05.02澧炲姞鏍戝舰缁撴瀯 rowKey -->
+ <vol-table ref="table" :single="single" :rowKey="rowKey" :loadTreeChildren="loadTreeTableChildren"
+ @loadBefore="loadTableBefore" @loadAfter="loadTableAfter" @rowChange="rowOnChange" @rowClick="rowOnClick"
+ @rowDbClick="rowOnDbClick" @selectionChange="selectionOnChange" :tableData="[]" :linkView="linkData"
+ :columns="columns" :pagination="pagination" :height="height" :max-height="tableMaxHeight"
+ :pagination-hide="paginationHide" :url="url" :load-key="false" :defaultLoadPage="load"
+ :double-edit="doubleEdit" :index="doubleEdit" :beginEdit="tableBeginEdit" :endEditBefore="tableEndEditBefore"
+ :column-index="columnIndex" :text-inline="textInline" :ck="ck" :select2Count="select2Count"
+ :selectable="selectable" :spanMethod="spanMethod" :lazy="lazy" :defaultExpandAll="defaultExpandAll"
+ :expandRowKeys="expandRowKeys" :rowParentField="rowParentField"></vol-table>
+ </div>
+ </div>
+
+ <!--footer鑷畾涔夌粍浠�-->
+ <component :is="dynamicComponent.gridFooter" ref="gridFooter" @parentCall="parentCall"></component>
+ </div>
+</template>
+
+<script lang="jsx">
+const _const = {
+ EDIT: 'update',
+ ADD: 'Add',
+ VIEW: 'view',
+ PAGE: 'getPageData',
+ AUDIT: 'audit',
+ DEL: 'del',
+ EXPORT: 'Export', //瀵煎嚭鎿嶄綔杩斿洖鍔犲瘑鍚庣殑璺緞
+ DOWNLOAD: 'DownLoadFile', //瀵煎嚭鏂囦欢
+ DOWNLOADTEMPLATE: 'DownLoadTemplate', //涓嬭浇瀵煎叆妯℃澘
+ IMPORT: 'Import', //瀵煎叆(瀵煎叆琛ㄧ殑Excel鍔熻兘)
+ UPLOAD: 'Upload' //涓婁紶鏂囦欢
+};
+import Empty from '@/components/basic/Empty.vue';
+
+import VolTable from '@/components/basic/VolTable.vue';
+import VolForm from '@/components/basic/VolForm.vue';
+import {
+ defineAsyncComponent,
+ defineComponent,
+ ref,
+ shallowRef,
+ toRaw
+} from 'vue';
+var vueParam = {
+ emits: ['parentCall'],
+ components: {
+ 'vol-form': VolForm,
+ 'vol-table': VolTable,
+ VolBox: defineAsyncComponent(() => import('@/components/basic/VolBox.vue')),
+ QuickSearch: defineAsyncComponent(() =>
+ import('@/components/basic/QuickSearch.vue')
+ ),
+ Audit: defineAsyncComponent(() => import('@/components/basic/Audit.vue')),
+ UploadExcel: defineAsyncComponent(() =>
+ import('@/components/basic/UploadExcel.vue')
+ ),
+ 'custom-column': defineAsyncComponent(() =>
+ import('./ViewGridCustomColumn.vue')
+ ),
+ 'vol-header': defineAsyncComponent(() => import('./../VolHeader.vue')),
+ ViewGridAudit: defineAsyncComponent(() => import('./ViewGridAudit.vue'))
+ },
+ props: {},
+ setup(props) {
+ //2021.07.17璋冩暣鎵╁睍缁勪欢缁勪欢
+ const dynamicCom = {
+ gridHeader: Empty,
+ gridBody: Empty,
+ gridFooter: Empty,
+ modelHeader: Empty,
+ modelBody: Empty,
+ modelRight: Empty,
+ modelFooter: Empty
+ };
+ //鍚堝苟鎵╁睍缁勪欢
+ if (props.extend.components) {
+ for (const key in props.extend.components) {
+ if (props.extend.components[key]) {
+ dynamicCom[key] = toRaw(props.extend.components[key]);
+ }
+ }
+ }
+ const dynamicComponent = shallowRef(dynamicCom);
+ return { dynamicComponent };
+ },
+ data() {
+ return {
+ isBoxAudit: false,
+ formFieldsType: [],
+ workFlowSteps: [],
+ //鏍戝舰缁撴瀯鐨勪富閿瓧娈碉紝濡傛灉璁剧疆鍊奸粯璁や細寮�鍚爲褰able锛涙敞鎰弐owKey瀛楁鐨勫�煎繀椤绘槸鍞竴锛�2021.05.02锛�
+ rowKey: undefined,
+ fiexdSearchForm: false, //2020.09.011鏄惁鍥哄畾鏌ヨ琛ㄥ崟锛宼rue鏌ヨ琛ㄥ崟灏嗗浐瀹氭樉绀哄湪琛ㄥ崟鐨勬渶涓婇潰
+ _inited: false,
+ doubleEdit: false, //2021.03.19鏄惁寮�鍚煡璇㈢晫闈㈣〃鏍煎弻鍑荤紪杈�
+ single: false, //琛ㄦ槸鍚﹀崟閫�
+ const: _const, //澧炲垹鏀规煡瀵煎叆瀵煎嚭绛夊搴旂殑action
+ boxInit: false, //鏂板缓鎴栫紪杈戠殑寮瑰嚭妗嗗垵鍖栫姸鎬侊紝榛樿涓嶅仛鍒濆鍖栵紝鐐瑰嚮鏂板缓鎴栫紪杈戞墠鍒濆鍖栧脊鍑烘
+ searchBoxShow: false, //楂樼骇鏌ヨ(鐣岄潰鏌ヨ鍚庣殑涓嬫媺妗嗙偣鍑昏Е鍙�)
+ singleSearch: {}, //蹇�熸煡璇㈠瓧娈�
+ exportHref: '',
+ currentAction: _const.ADD, //褰撴柊寤烘垨缂栬緫鏃讹紝璁板綍褰撳墠鐨勭姸鎬�:濡傚綋鍓嶆搷浣滄槸鏂板缓
+ currentRow: {}, //褰撳墠缂栬緫鎴栨煡鐪嬫暟鎹殑琛�
+ closable: false,
+ boxModel: false, //寮瑰嚭鏂板缓銆佺紪杈戞
+ width: 700, //寮瑰嚭妗嗘煡鐪嬭〃鏁版嵁缁撴瀯
+ labelWidth: 100, //楂樼骇鏌ヨ鐨勬爣绛惧搴�
+ viewModel: false, //鏌ョ湅琛ㄧ粨鏋勭殑寮瑰嚭妗�
+ viewColumns: [], //鏌ョ湅琛ㄧ粨鏋勭殑鍒楁暟鎹�
+ viewColumnsClone: [],
+ showCustom: true, //鏄惁鏄剧ず鑷畾涔夐厤缃垪鎸夐挳2022.05.27
+ // viewData: [], //鏌ョ湅琛ㄧ粨鏋勪俊鎭�
+ maxBtnLength: 8, //鐣岄潰鎸夐挳鏈�澶氭樉绀虹殑涓暟锛岃秴杩囩殑鏁伴噺閮芥樉绀哄湪鏇村涓�
+ buttons: [], //鏌ヨ鐣岄潰鎸夐挳 濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�(濡�:Sys_User.js涓璪uttons娣诲姞鍏朵粬鎸夐挳)
+ splitButtons: [],
+ uploadfiled: [], //涓婁紶鏂囦欢鍥剧墖鐨勫瓧娈�
+ boxButtons: [], //寮瑰嚭妗嗘寜閽� 濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�
+ dicKeys: [], //褰撳墠鐣岄潰鎵�鏈夌殑涓嬫媺妗嗗瓧鍏哥紪鍙峰強鏁版嵁婧�
+ hasKeyField: [], //鏈夊瓧鍏告暟鎹簮鐨勫瓧娈�
+ keyValueType: { _dinit: false },
+ url: '', //鐣岄潰琛ㄦ煡璇㈢殑鏁版嵁婧愮殑url
+ hasDetail: false, //鏄惁鏈変粠琛�(鏄庣粏)琛ㄦ牸鏁版嵁
+ initActivated: false,
+ load: true, //鏄惁榛樿鍔犺浇琛ㄦ暟鎹�
+ activatedLoad: false, //椤甸潰瑙﹀彂actived鏃舵槸鍚﹀埛鏂伴〉闈㈡暟鎹�
+ // summary: false, //鏌ヨ鐣岄潰table鏄惁鏄剧ず鍚堣
+ //闇�瑕佷粠杩滅▼缁戝畾鏁版嵁婧愮殑瀛楀吀缂栧彿,濡傛灉瀛楀吀鏁版嵁婧愮殑鏌ヨ缁撴灉杈冨锛岃鍦╫nInit涓皢瀛楀吀缂栧彿娣诲姞杩涙潵
+ //鍙鑷畾sql鏈夋晥
+ remoteKeys: [],
+ columnIndex: true, //2020.11.01鏄惁鏄剧ず琛屽彿
+ ck: true, //2020.11.01鏄惁鏄剧ずcheckbox
+ continueAdd: false, //2021.04.11鏂板缓鏃舵槸鍚﹀彲浠ヨ繛缁柊寤烘搷浣�
+ continueAddName: '淇濆瓨鍚庣户缁坊鍔�', //2021.04.11鎸夐挳鍚嶇О
+ // detailUrl: "",
+ detailOptions: {
+ paginationHide: false,//鏄惁闅愯棌鏄庣粏琛ㄥ垎椤�2023.10.23
+ //寮瑰嚭妗嗕粠琛�(鏄庣粏)瀵硅薄
+ //浠庤〃閰嶇疆
+ buttons: [], //寮瑰嚭妗嗕粠琛ㄨ〃鏍兼搷浣滄寜閽�,鐩墠鏈夊垹闄よ锛屾坊鍔犺锛屽埛鏂版搷浣滐紝濡傞渶瑕佸叾浠栨搷浣滄寜閽紝鍙湪琛ㄥ搴旂殑.js涓坊鍔�
+ cnName: '', //浠庤〃鍚嶇О
+ key: '', //浠庤〃涓婚敭鍚�
+ data: [], //鏁版嵁婧�
+ columns: [], //浠庤〃鍒椾俊鎭�
+ edit: true, //鏄庣粏鏄惁鍙互缂栬緫
+ single: false, //鏄庣粏琛ㄦ槸鍚﹀崟閫�
+ load: false, //
+ delKeys: [], //褰撶紪杈戞椂鍒犻櫎褰撳墠鏄庣粏鐨勮涓婚敭鍊�
+ url: '', //浠庤〃鍔犺浇鏁版嵁鐨剈rl
+ pagination: { total: 0, size: 100, sortName: '' }, //浠庤〃鍒嗛〉閰嶇疆鏁版嵁
+ height: 0, //榛樿浠庤〃楂樺害
+ textInline: true, //鏄庣粏琛ㄨ鍐呭鏄剧ず鍦ㄤ竴琛屼笂锛屽鏋滈渶瑕佹崲琛屾樉绀猴紝璇疯缃负false
+ doubleEdit: true, //浣跨敤鍙屽嚮缂栬緫
+ clickEdit: false, //鏄惁寮�鍚偣鍑诲崟鍏冩牸缂栬緫锛岀偣鍑诲叾浠栬鏃剁粨鏉熺紪杈�
+ currentReadonly: false, //褰撳墠鐢ㄦ埛娌℃湁缂栬緫鎴栨柊寤烘潈闄愭椂锛岃〃鍗曞彧璇�(鍙敤浜庡垽鏂敤鎴锋槸鍚︽湁缂栬緫鎴栨柊寤烘潈闄�)
+ //寮�鍚紪杈戞椂
+ beginEdit: (row, column, index) => {
+ return true;
+ },
+ //缁撴潫缂栬緫鍓�
+ endEditBefore: (row, column, index) => {
+ return true;
+ },
+ //缁撴潫缂栬緫鍚�
+ endEditAfter: (row, column, index) => {
+ return true;
+ },
+ columnIndex: false, //2020.11.01鏄庣粏鏄惁鏄剧ず琛屽彿
+ ck: true //2020.11.01鏄庣粏鏄惁鏄剧ずcheckbox
+ },
+ auditParam: {
+ //瀹℃牳瀵硅薄
+ rows: 0, //褰撳墠閫変腑瀹℃牳鐨勮鏁�
+ model: false, //瀹℃牳寮瑰嚭妗�
+ value: -1, //瀹℃牳缁撴灉
+ status: -1,
+ reason: '', //瀹℃牳鍘熷洜
+ height: 500,
+ showViewButton: true,
+ auditHis: [],
+ showAction: false, //鏄惁鏄剧ず瀹℃壒鎿嶄綔(褰撳墠鑺傜偣涓虹敤鎴峰鎵规椂鏄剧ず)
+ //瀹℃牳閫夐」(鍙嚜琛屽啀娣诲姞)
+ data: [
+ { text: '閫氳繃', value: 1 },
+ { text: '鎷掔粷', value: 2 },
+ { text: '椹冲洖', value: 3 }
+ ]
+ },
+ upload: {
+ //瀵煎叆涓婁紶excel瀵硅薄
+ excel: false, //瀵煎叆鐨勫脊鍑烘鏄惁鏄剧ず
+ url: '', //瀵煎叆鐨勮矾寰�,濡傛灉娌℃湁鍊硷紝鍒欎笉娓叉煋瀵煎叆鍔熻兘
+ template: {
+ //涓嬭浇妯℃澘瀵硅薄
+ url: '', //涓嬭浇妯℃澘璺緞
+ fileName: '' //妯℃澘涓嬭浇鐨勪腑鏂囧悕
+ },
+ init: false //鏄惁鏈夊鍏ユ潈闄愶紝鏈夋墠娓叉煋瀵煎叆缁勪欢
+ },
+ height: 0, //琛ㄩ珮搴�
+ tableHeight: 0, //鏌ヨ椤甸潰table鐨勯珮搴�
+ tableMaxHeight: 0, //鏌ヨ椤甸潰table鐨勬渶澶ч珮搴�
+ textInline: true, //table鍐呭瓒呭嚭鍚庢槸鍚︿笉鎹㈣2020.01.16
+ pagination: { total: 0, size: 30, sortName: '' }, //浠庡垎椤甸厤缃暟鎹�
+ boxOptions: {
+ title: '', //寮瑰嚭妗嗘樉绀虹殑鏍囬2022.08.01
+ saveClose: true,
+ labelWidth: 100,
+ height: 0,
+ width: 0,
+ summary: false, //寮瑰嚭妗嗘槑缁唗able鏄惁鏄剧ず鍚堣
+ draggable: false, //2022.09.12寮瑰嚭妗嗘嫋鍔ㄥ姛鑳�
+ modal: true //2022.09.12寮瑰嚭妗嗚儗鏅伄缃╁眰
+ }, //saveClose鏂板缓鎴栫紪杈戞垚鍔熷悗鏄惁鍏抽棴寮瑰嚭妗�//寮瑰嚭妗嗙殑鏍囩瀹藉害labelWidth
+ editor: {
+ uploadImgUrl: '', //涓婁紶璺緞
+ upload: null //涓婁紶鏂规硶
+ },
+ numberFields: [],
+ //2022.09.26澧炲姞鑷畾涔夊鍑烘枃浠跺悕
+ downloadFileName: null,
+ select2Count: 2000, //瓒呭嚭500鏁伴噺鏄剧ずselect2缁勪欢
+ paginationHide: false,//鏄殣钘忓垎椤�(2023.10.11)
+ queryFields: [],//蹇嵎鏌ヨ瀛楁2024.01.18澧炲姞澶氫釜蹇嵎鏌ヨ瀛楁
+ lazy: true,//鏍戝舰琛ㄦ牸鏄惁榛樿寤惰繜鍔犺浇
+ defaultExpandAll: false,//鏍戝舰琛ㄦ牸鏄惁灞曞紑鎵�鏈�
+ expandRowKeys: [],//榛樿灞曞紑琛岀殑涓婚敭鍊�2024.09.03
+ paginationHide: false,//鏄惁闅愯棌鍒嗛〉
+ rowParentField: "", //鏍戝舰琛ㄦ牸鐖剁骇id
+ text: ""//鐣岄潰涓婃爣棰樺悗鏄剧ず鐨勬枃鏈紝鍙互鏄痟tml鏍囩
+ };
+ },
+ methods: {},
+ activated() {
+ this.initFlowQuery();
+ //2020.06.25澧炲姞activated鏂规硶
+ this.onActivated && this.onActivated();
+ if (!this._inited) {
+ this._inited = true;
+ return;
+ }
+ if (this.activatedLoad) {
+ this.refresh();
+ }
+ },
+ mounted() {
+ this.mounted();
+ // this.$refs.searchForm.forEach()
+ },
+ unmounted() {
+ this.destroyed();
+ },
+ created: function () {
+ //鍚堝苟鑷畾涔変笟鍔℃墿灞曟柟娉�
+ Object.assign(this, this.extend.methods);
+ //濡傛灉娌℃湁鎸囧畾鎺掑簭瀛楁锛屽垯鐢ㄤ富閿綔涓洪粯璁ゆ帓搴忓瓧娈�
+ this.pagination.sortName = this.table.sortName || this.table.key;
+ this.initBoxButtons(); //鍒濆鍖栧脊鍑烘涓庢槑缁嗚〃鏍兼寜閽�
+ this.initAuditColumn();
+ this.onInit(); //鍒濆鍖栧墠锛屽鏋滈渶瑕佸仛鍏朵粬澶勭悊鍦ㄦ墿灞曟柟娉曚腑瑕嗙洊姝ゆ柟娉�
+ this.getButtons();
+ //鍒濆鍖栬嚜瀹氫箟琛ㄦ牸鍒�
+ this.initViewColumns();
+ //鍒濆缂栬緫妗嗙瓑鏁版嵁
+ this.initBoxHeightWidth();
+ this.initDicKeys(); //鍒濆涓嬫鏁版嵁婧�
+ this.onInited(); //鍒濆鍖栧悗锛屽鏋滈渶瑕佸仛鍏朵粬澶勭悊鍦ㄦ墿灞曟柟娉曚腑瑕嗙洊姝ゆ柟娉�
+ },
+ beforeUpdate: function () { },
+ updated: function () { }
+};
+
+import props from './props.js';
+import methods from './methods.jsx';
+
+//鍚堝苟灞炴��
+vueParam.props = Object.assign(vueParam.props, props);
+//鍚堝苟鏂规硶
+vueParam.methods = Object.assign(
+ vueParam.methods,
+ methods,
+ props.extend.methods
+);
+export default defineComponent(vueParam);
+</script>
+<style lang="less" scoped>
+@import './ViewGrid.less';
+</style>
+<style lang="less" scoped>
+.btn-group ::v-deep(.ivu-select-dropdown) {
+ padding: 0px !important;
+ right: 3px;
+}
+
+.btn-group ::v-deep(.ivu-select-dropdown .ivu-dropdown-menu) {
+ min-width: 100px;
+ right: -2px;
+ position: absolute;
+ background: white;
+ width: 130px;
+ border-radius: 5px;
+ border: 1px solid #e7e5e5;
+}
+
+.vertical-center-modal ::v-deep(.srcoll-content) {
+ padding: 0;
+}
+
+.view-model-content {
+ background: #eee;
+}
+
+.grid-detail ::v-deep(.v-table .el-table__header th) {
+ height: 44px;
+}
+</style>
+<style lang="less" scoped>
+.grid-search {
+ position: relative;
+
+ .search-box {
+ background: #fefefe;
+ margin-top: 33px;
+ border: 1px solid #eae8e8;
+ position: absolute;
+ z-index: 999;
+ left: 15px;
+ right: 15px;
+ padding: 25px 20px;
+ padding-bottom: 0;
+ border-top: 0;
+ box-shadow: 0 7px 18px -12px #bdc0bb;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue"
new file mode 100644
index 0000000..0a72596
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue"
@@ -0,0 +1,427 @@
+<template>
+ <vol-box :footer="false" v-model="model" :height="height" :width="width" :padding="0" :lazy="true" title="瀹℃牳">
+
+ <div class="audit-model-content" :style="{ height: height - 100 + 'px' }">
+ <el-descriptions class="desc-top" :column="3" size="default" :border="true">
+ <el-descriptions-item v-for="(item, index) in formData" :key="index">
+ <template #label>
+ <div class="cell-item">
+ {{ item.name }}
+ </div>
+ </template>
+ {{ item.value }}
+ </el-descriptions-item>
+ </el-descriptions>
+ <el-radio-group v-show="hasFlow" style="padding-left: 15px;" v-model="activeName" class="ml-4">
+ <el-radio label="audit" size="large">瀹℃牳</el-radio>
+ <el-radio label="log" size="large">瀹℃牳璁板綍</el-radio>
+ </el-radio-group>
+ <div v-show="activeName == 'audit' || !hasFlow" class="audit-content">
+ <div class="fx-left" v-if="hasFlow">
+ <div class="v-steps">
+ <div v-for="(item, index) in workFlowSteps" :key="index">
+ <div class="step-item" :class="{'step-item-ad':item.auditId||item.stepAttrType=='start'}" v-if="item.stepAttrType == 'start'">
+ <div class="left-item">
+ <div>娴佺▼寮�濮�</div>
+ <div class="left-date">{{ item.createDate }}</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ <div class="step-text">鍙戣捣浜猴細{{ item.creator }}</div>
+ </div>
+ </div>
+ <div class="step-item" v-else-if="item.stepAttrType == 'end'">
+ <div class="left-item">
+ <div>娴佺▼缁撴潫</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ </div>
+ </div>
+ <div v-else :class="{ 'step-current': item.isCurrent }" class="step-item">
+ <div class="left-item">
+ <div>瀹℃壒鏃堕棿</div>
+ <div class="left-date">{{ item.auditDate || '寰呭鎵�' }}</div>
+ </div>
+ <div class="right-item">
+ <div class="step-line"></div>
+ <i class="step-circle"></i>
+ <div class="step-title">
+ {{ item.stepName }}
+ </div>
+ <div class="step-text">瀹℃壒浜猴細{{ item.auditor }}</div>
+ <div class="step-text">
+ 鐘� 鎬侊細 {{ getAuditStatus(item.auditStatus) }}
+ </div>
+ <div class="step-text">澶� 娉細 {{ item.remark || '-' }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="fx-right" :style="{ width: !hasFlow ? '100%' : '400px' }" v-if="isCurrentUser || !hasFlow">
+
+ <div v-if="!hasFlow">
+ <el-alert :title="'褰撳墠閫変腑銆�' + rowLen + '銆戞潯璁板綍寰呭鏍�..'" type="success" :closable="false" />
+ </div>
+ <div class="rd">
+ <span>瀹℃壒锛�</span>
+ <el-radio-group style="margin-left:15px" v-model="auditParam.value">
+ <el-radio v-for="item in auditParam.data" :key="item.value" :label="item.value">
+ <span>{{ item.text }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+ <el-input style="padding-top: 10px;" v-model="auditParam.reason" type="textarea"
+ :autosize="{ minRows: 4, maxRows: 10 }" placeholder="璇疯緭鍏ュ娉�..."></el-input>
+ <div class="btn">
+ <el-button type="primary" @click="auditClick" icon="Check">瀹℃壒</el-button>
+ </div>
+ </div>
+ </div>
+ <div v-show="activeName == 'log'">
+ <vol-table :tableData="tableData" :columns="columns" :height="height - 250" :pagination-hide="true"
+ :load-key="false" :text-inline="false" :ck="false"></vol-table>
+ </div>
+ </div>
+ </vol-box>
+</template>
+<script>
+import VolTable from '@/components/basic/VolTable.vue';
+import VolBox from '@/components/basic/VolBox.vue';
+import http from '@/../src/api/http.js';
+import { defineComponent, ref, reactive, getCurrentInstance } from 'vue';
+export default defineComponent({
+ components: {
+ VolTable,
+ VolBox
+ },
+ props: {
+ option: { //鐢熸垚vue鏂囦欢鐨則able鍙傛暟
+ type: Object,
+ default: {
+ key: '',
+ cnName: '',
+ name: '',
+ url: ""
+ }
+ }
+ },
+ setup(props, { emit }) {
+ const height = ref(500);
+ const width = ref(820);
+ const model = ref(false)
+ const workFlowSteps = reactive([]);
+
+ const hasFlow = ref(false)
+ const formData = reactive([]);
+
+ const auditParam = reactive({
+ //瀹℃牳瀵硅薄
+ rows: 0, //褰撳墠閫変腑瀹℃牳鐨勮鏁�
+ model: false, //瀹℃牳寮瑰嚭妗�
+ value: -1, //瀹℃牳缁撴灉
+ reason: '', //瀹℃牳鍘熷洜
+ //瀹℃牳閫夐」(main.js閲岄潰鍙互娣诲姞鍏朵粬閫夐」)
+ data: []
+ })
+ const { proxy } = getCurrentInstance();
+ auditParam.data = proxy.$global.audit.data;
+ const tableData = reactive([]);
+ const columns = reactive([
+ { title: '鑺傜偣', field: 'stepName', width: 100 },
+ { title: '瀹℃壒浜�', field: 'auditor', width: 80 },
+ { title: '瀹℃壒缁撴灉', field: 'auditStatus', width: 70, bind: { data: [] } },
+ { title: '瀹℃壒鏃堕棿', field: 'auditDate', width: 145 },
+ { title: '澶囨敞', field: 'remark', width: 120 }
+ ]);
+
+ const isCurrentUser = ref(null);
+ const activeName = ref('audit')
+
+ const auditDic = reactive([]);
+ const getAuditStatus = (key) => {
+ return (auditDic.find(x => { return x.key === key + '' }) || { value: key }).value;
+ }
+ const rowLen = ref(0)
+ let currentRows = []
+ const getAuditInfo = (option) => {
+ const table = option.table; //props.option.url.replaceAll('/', '');
+ const url = `api/Sys_WorkFlow/getSteps?tableName=${table}`
+ // let ids = currentRows.map(x => { return x[props.option.key] });
+ let ids = currentRows.map(x => { return x[option.key] });
+ // ['498043c1-fbd0-4a35-a870-523823912a9b']
+ http.post(url, ids, true).then(result => {
+ if (!result.status) {
+ proxy.$message.error(result.message);
+ return;
+ }
+
+ hasFlow.value = !!(result.list || []).length;
+ if (!hasFlow.value) {
+
+ let auditStatus = Object.keys(currentRows[0]).find(x => { return x.toLowerCase() === 'auditstatus' });
+
+ let checkStatus = currentRows.every((x) => {
+ return proxy.$global.audit.status.some(c => { return c === x[auditStatus] || !x[auditStatus] })
+ });
+ if (!checkStatus) {
+ proxy.$message.error('鍙兘閫夋嫨寰呭鎵规垨瀹℃牳涓殑鏁版嵁');
+ return;
+ }
+ rowLen.value = currentRows.length;
+ model.value = true;
+ width.value = 430;
+ height.value = 350;
+ isCurrentUser.value = true;
+ //娌℃湁瀹℃壒娴佺▼鐨勬暟鎹彧鏄剧ず
+ return;
+ }
+ model.value = true;
+ height.value = document.body.clientHeight * 0.95;
+ width.value = 820;
+ if (!auditDic.length) {
+ auditDic.push(...(result.auditDic || []))
+ columns.forEach(item => {
+ if (item.field == 'auditStatus') {
+ item.bind.data = auditDic;
+ }
+ })
+ }
+ isCurrentUser.value = result.list.some(x => { return x.isCurrentUser })
+ workFlowSteps.length = 0;
+ workFlowSteps.push(...result.list);
+ tableData.length = 0;
+ tableData.push(...result.log)
+ formData.length = 0;
+ formData.push(...(result.form || []))
+ })
+ }
+ //
+
+ const auditClick = () => {
+ if (auditParam.value == -1) {
+ proxy.$message.error('璇烽�夋嫨瀹℃壒椤�');
+ return;
+ }
+
+ if (!isFlow.value) {
+ emit("auditClick", auditParam, currentRows, (result) => {
+ if (result.status) {
+ model.value = false;
+ tableData.length = 0;
+ }
+ });
+ return;
+ }
+ //鎴戠殑娴佺▼涓偣鍑诲鎵�
+ //淇濆瓨瀹℃牳
+ let keys = currentRows.map(x => { return x[currentOption.key] });
+ let url = `api/${currentOption.table}/audit?auditReason=${auditParam.reason}&auditStatus=${auditParam.value}`
+ http.post(url, keys, '瀹℃牳涓�....').then((x) => {
+ if (!x.status) {
+ proxy.$message.error(x.message);
+ return;
+ }
+ model.value = false;
+ proxy.$parent.search()
+ proxy.$message.success(x.message)
+ });
+ }
+ const isFlow = ref(false);
+ let currentOption = {};
+ const open = (rows, flow) => {
+ isFlow.value = !!flow;
+ currentRows = rows;
+ activeName.value = 'audit'
+ auditParam.reason = '';
+ auditParam.value = -1;
+
+ if (flow) {
+ currentOption = {
+ table: rows[0].WorkTable,
+ key: "WorkTableKey"// rows[0].WorkTableKey
+ }
+ } else {
+ currentOption = {
+ table: props.option.url.replaceAll('/', ''),
+ key: props.option.key
+ }
+ }
+ getAuditInfo(currentOption);
+
+ }
+
+ return {
+ columns,
+ height,
+ width,
+ model,
+ workFlowSteps,
+ getAuditInfo,
+ getAuditStatus,
+ activeName,
+ reactive,
+ tableData,
+ auditParam,
+ auditClick,
+ open,
+ isCurrentUser,
+ hasFlow,
+ rowLen,
+ formData,
+ isFlow
+ }
+ }
+});
+</script>
+
+<style lang="less" scoped>
+.audit-model-content {
+ padding: 10px;
+}
+
+.step-item {
+ background: #fff;
+ display: flex;
+}
+
+.left-item {
+ min-width: 180px;
+ text-align: right;
+ padding-right: 25px;
+ padding-top: 8px;
+
+ .left-date {
+ font-size: 13px;
+ padding-top: 7px;
+ color: #6c6c6c;
+ }
+}
+
+.right-item {
+ cursor: pointer;
+ position: relative;
+ border-bottom: 1px solid #f3f3f3;
+ padding: 5px 0 5px 5px;
+}
+
+.left-item,
+.right-item {
+ padding-bottom: 10px;
+}
+
+.right-item:last-child {
+ border-bottom: 0;
+}
+
+.step-line {
+ top: 16px;
+ left: -10px;
+ width: 1px;
+ height: 100%;
+ position: absolute;
+ background-color: #ebedf0;
+}
+
+.step-circle {
+ position: absolute;
+ top: 17px;
+ left: -9px;
+ z-index: 2;
+ font-size: 12px;
+ line-height: 1;
+ transform: translate(-50%, -50%);
+ width: 7px;
+ height: 7px;
+ background-color: #a1a1a1;
+ border-radius: 50%;
+}
+
+.right-item::before {
+ content: '';
+}
+
+.step-content {
+ padding-top: 2px;
+ font-size: 14px;
+ color: #828282;
+ line-height: 1.5;
+}
+
+.step-title {
+ font-weight: bold;
+ padding-top: 3px;
+}
+
+.step-text {
+ font-size: 13px;
+ color: #999999;
+ padding-top: 6px;
+}
+
+.step-current {
+ * {
+ color: #2f95ff !important;
+ }
+
+ .step-circle {
+ background: #2f95ff !important;
+ }
+
+ // border-radius: 5px;
+ // border: 1px solid #d6eaff;
+ font-size: 13px;
+ padding-top: 6px;
+ // background-color: #eff7ffd9;
+ color: black;
+}
+
+.audit-content {
+ // background: #f9f9f9;
+ padding: 10px;
+ border-radius: 4px;
+ display: flex;
+
+ .fx-left {
+ flex: 1;
+ width: 0;
+
+ .rd {
+ display: flex;
+ align-items: baseline;
+ }
+ }
+
+ .fx-right {
+ // width: 400px;
+
+ .btn {
+ margin-top: 10px;
+ text-align: center;
+ }
+ }
+
+}
+
+.cell-item {
+ font-weight: 500;
+}
+
+.desc-top {
+ padding: 5px 10px 0 10px;
+}
+.step-item-ad{
+ *{
+ color: #9f9898 !important;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue"
new file mode 100644
index 0000000..97feb80
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue"
@@ -0,0 +1,95 @@
+<template>
+ <el-alert
+ title="鎷栧姩鍒楀悕鍙皟鏁磋〃鏍煎垪鏄剧ず椤哄簭"
+ type="success"
+ :show-icon="false"
+ >
+ </el-alert>
+ <div class="view-column view-column-title">
+ <div class="view-column-index">#</div>
+ <div class="view-column-left">鍒楀悕</div>
+ <div class="view-column-right">鏄惁鏄剧ず</div>
+ </div>
+ <draggable
+ class="list-group"
+ tag="transition-group"
+ :component-data="componentData"
+ :list="viewColumns"
+ v-bind="dragOptions"
+ item-key="order"
+ >
+ <transition-group class="drag-center-item">
+ <div
+ class="view-column"
+ v-for="(column, index) in viewColumns"
+ :key="index"
+ >
+ <div class="view-column-index">{{ index + 1 }}</div>
+ <div class="view-column-left">{{ column.title }}</div>
+ <div class="view-column-right">
+ <el-checkbox v-model="column.show">
+ <div style="height: 100%; width: 250px"></div
+ ></el-checkbox>
+ </div>
+ </div>
+ </transition-group>
+ </draggable>
+</template>
+<script>
+import { VueDraggableNext } from 'vue-draggable-next';
+import { defineComponent, ref, reactive } from 'vue';
+
+export default defineComponent({
+ props: {
+ viewColumns: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ components: {
+ draggable: VueDraggableNext
+ },
+ data() {
+ return {};
+ },
+ setup(props, context) {
+ const dragOptions = reactive({
+ animation: 200,
+ group: 'description',
+ disabled: false,
+ ghostClass: 'ghost'
+ });
+ const componentData = reactive({
+ tag: 'ul',
+ type: 'transition-group'
+ });
+ return { dragOptions, componentData };
+ }
+});
+</script>
+<style lang="less" scoped>
+.view-column {
+ cursor: pointer;
+ display: flex;
+ padding: 10px;
+ border-bottom: 1px solid #f3f3f3;
+ .view-column-index {
+ width: 50px;
+ }
+ .view-column-left {
+ width: 120px;
+ padding: 0 10px;
+ }
+ .view-column-right {
+ flex: 1;
+ }
+}
+.view-column-title {
+ font-weight: bold;
+}
+.view-column:last-child {
+ border-bottom: 0;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridDetail.vue"
new file mode 100644
index 0000000..5f3ae0d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridDetail.vue"
@@ -0,0 +1,283 @@
+<template>
+ <div class="layout-container">
+ <div class="view-container">
+ <div class="grid-search">
+ <div class="fiexd-search-box" v-show="true">
+ <vol-form ref="searchForm" style="padding: 0 15px" :label-width="100" :formRules="searchFormOptions"
+ :formFields="searchFormFields">
+ </vol-form>
+ <div v-if="fiexdSearchForm" class="fs-line"></div>
+ </div>
+ <div class="view-header">
+ <div class="desc-text">
+ <i class="el-icon-s-grid" />
+ <span>{{ title }}</span>
+ </div>
+ <div class="notice">
+ <a class="text" title="{{title}}"></a>
+ </div>
+
+ <div class="btn-group">
+ <template :key="bIndex" v-for="(btn, bIndex) in Mybuttons.slice(0, 6)">
+ <el-button :type="btn.type" size="small" :dark="btn.dark" :plain="btn.plain"
+ @click="changeDropdown(btn.name)">
+ <i :class="btn.icon"></i>
+ {{ btn.name }}
+ </el-button>
+ </template>
+ <el-dropdown size="small" @click="changeDropdown"
+ v-if="Mybuttons.length > 5">
+ <el-button type="primary" plain size="small">
+ 鏇村<i class="el-icon-arrow-down el-icon--right"></i>
+ </el-button>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item @click="changeDropdown(item.name)" :name="item.name"
+ v-show="!item.hidden" v-for="(item, dIndex) in Mybuttons.slice(6)" :key="dIndex">
+ <i :class="item.icon"></i>
+ {{ item.name }}
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </div>
+ </div>
+ </div>
+
+ <div class="grid-container">
+ <el-table ref="table" stripe :data="tableData" :height="heigth" style="width: 100%" border
+ @selection-change="selectionChange">
+ <el-table-column type="selection" width="55" />
+ <el-table-column prop="order_id" label="涓婚敭" v-if="false"></el-table-column>
+ <el-table-column type="expand">
+ <template #default="props">
+ <h4>鏄庣粏鏁版嵁</h4>
+ <div m="4">
+ <el-table stripe :data="props.row.boxingInfoDetails" max-height="400"
+ style="width: 100%" border>
+ <el-table-column label="搴忓彿" type="index" fixed="left" width="55"></el-table-column>
+ <el-table-column :key="index" v-for="(item, index) in detailColumns"
+ :label="item.title" :prop="item.field" :width="item.width"
+ show-overflow-tooltip></el-table-column>
+ </el-table>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column v-for="(item, index) in columns" :key="index" :label="item.title"
+ :prop="item.field" sortable="true" show-overflow-tooltip>
+ <template #default="scope" v-if="item.type == 'tag'">
+ <el-tag size="small">
+ {{ getDictionary(scope.row, item) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ </el-table>
+ <template v-if="true">
+ <div class="block pagination" key="pagination-01" style="display: flex">
+ <div style="flex: 1"></div>
+ <el-pagination key="pagination-02" @size-change="handleSizeChange"
+ @current-change="handleCurrentChange" :current-page="currentPage1.page"
+ :page-sizes="currentPage1.sizes" :page-size="currentPage1.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="currentPage1.total"></el-pagination>
+ </div>
+ </template>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import VolForm from "../VolForm.vue";
+import VolBox from "../VolBox.vue";
+import VolTable from "../VolTable.vue";
+import buttons from "@/api/buttons";
+import methodss from './methodsDetail.jsx';
+export default {
+ components: {
+ 'vol-form': VolForm,
+ 'vol-table': VolTable,
+ 'vol-box': VolBox
+ },
+
+ name: 'CustomTableComponent',
+ data() {
+ return {
+ tableData: [],
+ Mybuttons: [],
+ currentPage1: {
+ sort: "",
+ order: "desc",
+ Foots: "",
+ total: 0,
+ // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+ sizes: [30, 60, 100, 120],
+ size: 30, // 榛樿鍒嗛〉澶у皬
+ Wheres: [],
+ page: 1,
+ rows: 30,
+ },
+ selectRows: [],
+ };
+ },
+ props: {
+ url: String,
+ title: String,
+ columns: {
+ type: Array,
+ default: []
+ },
+ detailColumns: Array,
+ searchFormOptions: Object,
+ searchFormFields: Array,
+ dropdownItems: Array,
+ heigth: String,
+ table: String,
+ },
+ methods: {
+ ...methodss.methods,
+ ...methodss.data,
+ changeDropdown(btnName, v1) {
+ let button = this.dropdownItems.filter((x) => {
+ return x.name == btnName
+ })
+ if (button && button.length > 0) {
+ button[0].onClick.apply(this)
+ }
+ },
+ handleSizeChange(val) {
+ this.currentPage1.pageSize = val;
+ },
+ handleCurrentChange(val) {
+ this.currentPage1.currentPage = val;
+ },
+
+ getPageData() {
+ // 鑾峰彇鍒嗛〉鏁版嵁
+ var query = this.getSearchParameters();
+ let param = {
+ page: this.currentPage1.page,
+ rows: this.currentPage1.rows,
+ sort: this.currentPage1.sort,
+ order: this.currentPage1.order,
+ wheres: "", // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+ };
+ param = Object.assign(param, query);
+ param.wheres = JSON.stringify(param.wheres);
+ this.http.post(this.url, param, "鏌ヨ涓�").then((x) => {
+ this.tableData = x.rows;
+ this.currentPage1.total = x.total;
+ });
+ },
+ search() {
+ this.getPageData();
+ },
+
+ getSearchParameters() {
+ //鑾峰彇鏌ヨ鍙傛暟
+ let query = { wheres: [] };
+ for (const key in this.searchFormFields) {
+ let value = this.searchFormFields[key];
+ if (this.emptyValue(value)) continue;
+
+ if (typeof value == "number") {
+ value = value + "";
+ }
+ let displayType = this.getSearchItem(key);
+
+ //鑱旂骇鍙繚鐣欓�変腑鑺傜偣鐨勬渶鍚庝竴涓��
+ if (displayType == "cascader") {
+ //鏌ヨ涓嬮潰鎵�鏈夌殑瀛愯妭鐐癸紝濡傦細閫変腑鐨勬槸鐖惰妭鐐癸紝搴旇鏌ヨ涓嬮潰鎵�鏈夌殑鑺傜偣鏁版嵁--寰呭畬
+ value = value.length ? value[value.length - 1] + "" : "";
+ }
+ //2021.05.02澧炲姞鍖洪棿鏌ヨ
+ if (
+ typeof value == "string" ||
+ ["date", "datetime", "range"].indexOf(displayType) == -1
+ ) {
+ query.wheres.push({
+ name: key,
+ value:
+ typeof value == "string" ? (value + "").trim() : value.join(","),
+ displayType: displayType,
+ });
+ continue;
+ }
+ for (let index = 0; index < value.length; index++) {
+ if (!this.emptyValue(value[index])) {
+ query.wheres.push({
+ name: key,
+ value: (value[index] + "").trim(),
+ displayType: (() => {
+ if (["date", "datetime", "range"].indexOf(displayType) != -1) {
+ return index ? "lessorequal" : "thanorequal";
+ }
+ return displayType;
+ })(),
+ });
+ }
+ }
+ }
+ return query;
+ },
+
+ getSearchItem(field) {
+ //鑾峰彇鏌ヨ鐨勫弬鏁�
+ let data;
+ for (let index = 0; index < this.searchFormOptions.length; index++) {
+ if (data) return data.type;
+ const item = this.searchFormOptions[index];
+ data = item.find((x) => {
+ return x.field == field;
+ });
+ }
+
+ return (data || {}).type;
+ },
+
+ emptyValue(value) {
+ if (typeof value == "string" && value.trim() === "") {
+ return true;
+ }
+ if (value instanceof Array && !value.length) {
+ return true;
+ }
+ return value === null || value === undefined || value === "";
+ },
+
+
+ filterPermission(tableName, permission) {
+ //2021.03.19鍒ゆ柇鏄惁鏈夋煇涓〃鐨勬寜閽潈闄�
+ //:["Search","Add","Delete","Update","Import","Export","Upload","Audit"]
+ const _result = (this.$store.state.permission || []).find((x) => {
+ return x.url == '/' + tableName
+ })
+ return _result
+ },
+ getButtons() {
+ console.log(buttons);
+ buttons.forEach(element => {
+ this.dropdownItems.push(element);
+ });
+ }
+ },
+ created() {
+ this.getPageData();
+ let permission = this.filterPermission(this.table);
+ console.log(permission);
+ this.getButtons();
+ this.Mybuttons = this.dropdownItems.filter(item => permission.permission.includes(item.value));
+ }
+};
+</script>
+
+<style>
+@import "./ViewGrid.less";
+
+.pagination {
+ text-align: right;
+ padding: 2px 28px;
+ border: 1px solid #eee;
+ border-top: 0px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.jsx"
new file mode 100644
index 0000000..e937987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.jsx"
@@ -0,0 +1,1721 @@
+import detailMethods from './detailMethods.js'
+//涓氬姟澶勭悊鏂规硶,鍏ㄩ儴鍙互鐢卞紑鍙戣鐩�
+import serviceFilter from './serviceFilter.js'
+let methods = {
+ //褰撴坊鍔犳墿灞曠粍浠秅ridHeader/gridBody/gridFooter鍙婃槑缁唌odelHeader/modelBody/modelFooter鏃讹紝
+ //濡傛灉瑕佽幏鍙栫埗绾ue瀵硅薄,璇蜂娇鐢ㄦ鏂规硶杩涜鍥炶皟
+ parentCall(fun) {
+ if (typeof fun != 'function') {
+ return console.log('鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄')
+ }
+ fun(this)
+ },
+ getCurrentAction() {
+ if (this.currentReadonly) {
+ return ''
+ }
+ return '--' + (this.currentAction == this.const.ADD ? '鏂板' : '缂栬緫')
+ },
+ quickSearchKeyPress($event) {
+ //鏌ヨ瀛楁涓篿nput鏃讹紝鎸夊洖杞︽煡璇�
+ if ($event.keyCode == 13) {
+ // if (this.searchFormFields[this.singleSearch.field] != '') {
+ this.search()
+ //}
+ }
+ },
+ getButtons() {
+ //鐢熸垚ViewGrid鐣岄潰鐨勬搷浣滄寜閽強鏇村閫夐」
+ let searchIndex = this.buttons.findIndex((x) => {
+ return x.value == 'Search'
+ })
+ //娣诲姞楂樼骇鏌ヨ
+ let hasOneFormItem = this.searchFormOptions.length == 1 && this.searchFormOptions[0].length == 1
+ if (searchIndex != -1 && !hasOneFormItem) {
+ this.buttons.splice(searchIndex + 1, 0, {
+ icon: this.fiexdSearchForm ? 'el-icon-refresh-left' : 'el-icon-search',
+ name: this.fiexdSearchForm ? '閲嶇疆' : '楂樼骇鏌ヨ',
+ plain: true,
+ type: this.buttons[searchIndex].type,
+ onClick: () => {
+ if (this.fiexdSearchForm) {
+ return this.resetSearch()
+ }
+ this.searchBoxShow = !this.searchBoxShow
+ }
+ })
+ }
+ if (hasOneFormItem) {
+ this.fiexdSearchForm = false
+ }
+ this.maxBtnLength += searchIndex == -1 ? 0 : 1
+ // if (this.buttons.length <= this.maxBtnLength) {
+ // return this.buttons;
+ // }
+ // let btns = this.buttons.slice(0, this.maxBtnLength);
+ // btns[this.maxBtnLength - 1].last = true;
+ // return btns;
+ },
+ extendBtn(btns, source) {
+ //btns鏉冮檺鎸夐挳锛宻ource涓烘墿灞曟寜閽�
+ if (!btns || !(source && source instanceof Array)) {
+ return
+ }
+ //source閫氳繃鍦ㄨ〃鐨勬墿灞昷s鏂囦欢涓璪uttons瀵瑰簲鎸夐挳鐨勫睘鎬ndex鍐冲畾鎸夐挳鎵�鏀句綅缃�
+ source.forEach((x) => {
+ //閫氳繃鎸夐挳鐨処ndex灞炴�э紝鏀惧埌鎸囧畾鐨勪綅缃�
+ btns.splice(x.index == undefined ? btns.length : x.index, 0, x)
+ })
+ // if (this.extend.buttons.view) {
+ // this.extend.buttons.view.forEach((x) => {
+ // //閫氳繃鎸夐挳鐨処ndex灞炴�э紝鏀惧埌鎸囧畾鐨勪綅缃�
+ // this.buttons.splice(x.index == undefined ? this.buttons.length : x.index, 0, x);
+ // })
+ // }
+ },
+ initBoxButtons() {
+ //鍒濆鍖朧iewGird涓庡脊鍑烘/鏄庣粏琛ㄦ寜閽�
+ let path = this.$route.path
+ //閫氳繃鑿滃崟鑾峰彇鐢ㄦ埛鎵�瀵瑰簲鑿滃崟闇�瑕佹樉绀虹殑鎸夐挳
+ let permissionButtons = this.permission.getButtons(
+ path,
+ null,
+ this.extend.tableAction,
+ this.table.name
+ )
+ if (permissionButtons) {
+ //2020.03.31娣诲姞娣辨嫹璐濇寜閽粍
+ permissionButtons.forEach((p) => {
+ let _obj = {}
+ for (const key in p) {
+ _obj[key] = p[key]
+ }
+ this.buttons.push(_obj)
+ })
+ // this.buttons.push(...permissionButtons);
+ }
+ if (!this.extend) {
+ this.extend = {}
+ }
+ if (!this.extend.buttons) {
+ this.extend.buttons = {}
+ }
+ //鏌ヨ鐣岄潰鎵╁睍鎸夐挳(鎵╁睍鎸夐挳鍙嚜琛岄�氳繃璁剧疆鎸夐挳鐨処ndex灞炴�ф樉绀哄埌鍏蜂綋浣嶇疆)
+ if (this.extend.buttons.view) {
+ this.extendBtn(this.buttons, this.extend.buttons.view)
+ }
+
+ //寮瑰嚭妗嗘寜閽�
+ let boxButtons = []
+
+ let saveBtn = this.buttons.some((x) => {
+ if (
+ x.value &&
+ (x.value.toLowerCase() == this.const.ADD.toLowerCase() ||
+ x.value.toLowerCase() == this.const.EDIT.toLowerCase())
+ )
+ return true
+ })
+ this.currentReadonly = !saveBtn
+ //浠庤〃琛ㄦ牸鎿嶄綔鎸夐挳
+ let detailGridButtons = {
+ name: '鍒锋柊',
+ type: 'info',
+ icon: 'el-icon-refresh',
+ onClick() {
+ //濡傛灉鏄庣粏琛ㄥ綋鍓嶇殑鐘舵�佷负鏂板缓鏃讹紝绂佹鍒锋柊
+ if (this.currentAction == this.const.ADD) {
+ return
+ }
+ this.refreshRow()
+ }
+ }
+
+ let importExcel = this.buttons.some((x) => {
+ if (x.value == this.const.IMPORT) return true
+ })
+ //濡傛灉鏈夊鍏ユ潈闄�,鍒欓渶瑕佸垵濮嬪寲瀵煎叆缁勪欢
+ if (importExcel) {
+ this.upload.url = this.getUrl(this.const.IMPORT)
+ //瀹氫箟涓嬭浇妯℃澘鐨勬枃浠跺悕
+ this.upload.template.fileName = this.table.cnName
+ //瀹氫箟涓嬭浇妯℃澘鐨刄rl璺緞
+ this.upload.template.url =
+ this.http.ipAddress + this.getUrl(this.const.DOWNLOADTEMPLATE, true)
+ }
+
+ // disabled
+ //濡傛灉褰撳墠瑙掕壊娌℃湁缂栬緫鎴栨柊寤哄姛鑳斤紝鏌ョ湅鏄庣粏鏃跺瓧娈佃缃叏閮ㄥ彧璇�
+ //鍙湁鏄庣粏琛紝灏嗘槑缁嗚〃涔熻缃负涓嶅彲鑳界紪杈戯紝骞朵笖涓嶆樉绀烘坊鍔犺銆佸垹闄よ
+ if (!saveBtn) {
+ this.editFormOptions.forEach((row) => {
+ row.forEach((x) => {
+ x.disabled = true
+ })
+ })
+ //娌℃湁鏂板缂栬緫鏉冮檺鐨勶紝寮瑰嚭妗嗛兘璁剧疆涓哄彧璇�
+ this.detail.columns.forEach((column) => {
+ if (column.hasOwnProperty('edit')) {
+ column.readonly = true
+ // row['edit'] = false;
+ }
+ })
+ //寮瑰嚭妗嗘墿灞曟寜閽�
+ this.extendBtn(boxButtons, this.extend.buttons.box)
+ //寮瑰嚭寮规鎸夐挳(2020.04.21),娌℃湁缂栬緫鎴栨柊寤烘潈闄愭椂锛屼篃鍙互閫氳繃buttons灞炴�ф坊鍔犺嚜瀹氫箟寮瑰嚭妗嗘寜閽�
+ this.boxButtons.push(...boxButtons)
+ this.detailOptions.buttons.push(detailGridButtons)
+ this.detailOptions.buttons.forEach((button) => {
+ if (!button.hasOwnProperty('hidden')) {
+ button.hidden = false
+ }
+ })
+ //寮瑰嚭妗嗘墿灞曟槑缁嗚〃鎸夐挳
+ this.extendBtn(this.detailOptions.buttons, this.extend.buttons.detail)
+
+ return boxButtons
+ }
+
+ this.detailOptions.edit = true
+ boxButtons.push(
+ ...[
+ {
+ name: '淇� 瀛�',
+ icon: 'el-icon-check',
+ type: 'danger',
+ disabled: false,
+ value: 'save',
+ onClick() {
+ this.save()
+ }
+ }
+ // {
+ // name: '閲� 缃�',
+ // icon: 'el-icon-refresh-right',
+ // type: 'primary',
+ // disabled: false,
+ // onClick() {
+ // this.resetEdit();
+ // }
+ // }
+ ]
+ )
+ //浠庤〃琛ㄦ牸鎿嶄綔鎸夐挳
+ this.detailOptions.buttons.push(
+ ...[
+ {
+ name: '娣诲姞琛�',
+ icon: 'el-icon-plus',
+ type: 'primary',
+ hidden: false,
+ plain: true,
+ onClick() {
+ this.addRow()
+ }
+ },
+ {
+ type: 'danger',
+ plain: true,
+ name: '鍒犻櫎琛�',
+ hidden: false,
+ icon: 'el-icon-delete',
+ onClick() {
+ this.delRow()
+ }
+ },
+ //2022.01.08澧炲姞鏄庣粏琛ㄥ鍏ュ鍑哄姛鑳�
+ //娉ㄦ剰闇�瑕侀噸鍐欏悗鍙版槑缁嗚〃鎺ュ彛鐨勫鍏ヤ笌涓嬭浇妯℃澘銆佸鍑虹殑鏉冮檺,Sys_DictionaryListController.cs/SellOrderListController.cs
+ {
+ type: 'danger',
+ plain: true,
+ name: '瀵煎叆',
+ value: 'import',
+ hidden: false,
+ icon: 'el-icon-upload2',
+ onClick() {
+ this.upload.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.IMPORT}?table=1`
+ this.upload.template.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.DOWNLOADTEMPLATE}`
+ //瀹氫箟涓嬭浇妯℃澘鐨勬枃浠跺悕
+ this.upload.template.fileName = this.detail.cnName
+ this.upload.excel = true
+ }
+ },
+ {
+ type: 'danger',
+ plain: true,
+ name: '瀵煎嚭',
+ value: 'export',
+ icon: 'el-icon-download',
+ hidden: false,
+ onClick() {
+ this.export(true)
+ }
+ }
+ ]
+ )
+ this.detailOptions.buttons.forEach((button) => {
+ if (button.hasOwnProperty('hidden')) {
+ button.hidden = false
+ }
+ })
+ //寮瑰嚭妗嗘墿灞曟寜閽�
+ this.extendBtn(boxButtons, this.extend.buttons.box)
+
+ //寮瑰嚭妗嗘墿灞曟槑缁嗚〃鎸夐挳
+ this.detailOptions.buttons.push(detailGridButtons)
+ this.extendBtn(this.detailOptions.buttons, this.extend.buttons.detail)
+
+ //寮瑰嚭寮规鎸夐挳
+ this.boxButtons.push(...boxButtons)
+ },
+ onClick(click) {
+ click.apply(this)
+ },
+ changeDropdown(btnName, v1) {
+ let button = this.buttons.filter((x) => {
+ return x.name == btnName
+ })
+ if (button && button.length > 0) {
+ button[0].onClick.apply(this)
+ }
+ },
+ emptyValue(value) {
+ if (typeof value == 'string' && value.trim() === '') {
+ return true
+ }
+ if (value instanceof Array && !value.length) {
+ return true
+ }
+ return value === null || value === undefined || value === ''
+ },
+ getSearchParameters() {
+ //鑾峰彇鏌ヨ鍙傛暟
+ // 2020.09.11澧炲姞鍥哄畾鏌ヨ琛ㄥ崟,濡傛灉璁剧疆鍥哄畾浜嗘煡璇㈣〃鍗曪紝鐐瑰嚮鏌ヨ鏃讹紝涓嶅啀鍏抽棴
+ if (!this.fiexdSearchForm) {
+ this.searchBoxShow = false
+ }
+
+ let query = { wheres: [] }
+ for (const key in this.searchFormFields) {
+ let value = this.searchFormFields[key]
+ if (this.emptyValue(value)) continue
+
+ if (typeof value == 'number') {
+ value = value + ''
+ }
+ let displayType = this.getSearchItem(key)
+
+ //鑱旂骇鍙繚鐣欓�変腑鑺傜偣鐨勬渶鍚庝竴涓��
+ if (displayType == 'cascader') {
+ //鏌ヨ涓嬮潰鎵�鏈夌殑瀛愯妭鐐癸紝濡傦細閫変腑鐨勬槸鐖惰妭鐐癸紝搴旇鏌ヨ涓嬮潰鎵�鏈夌殑鑺傜偣鏁版嵁--寰呭畬
+ value = value.length ? value[value.length - 1] + '' : ''
+ } else if (displayType == 'treeSelect') {
+ displayType = 'selectList'
+ }
+ //2021.05.02澧炲姞鍖洪棿鏌ヨ
+ if (typeof value == 'string' || ['date', 'datetime', 'range'].indexOf(displayType) == -1) {
+ query.wheres.push({
+ name: key,
+ value: typeof value == 'string' ? (value + '').trim() : value.join(','),
+ displayType: displayType
+ })
+ continue
+ }
+ for (let index = 0; index < value.length; index++) {
+ if (!this.emptyValue(value[index])) {
+ query.wheres.push({
+ name: key,
+ value: (value[index] + '').trim(),
+ displayType: (() => {
+ if (['date', 'datetime', 'range'].indexOf(displayType) != -1) {
+ return index ? 'lessorequal' : 'thanorequal'
+ }
+ return displayType
+ })()
+ })
+ }
+ }
+ }
+ return query
+ },
+ search() {
+ //鏌ヨ
+ // let query = this.getSearchParameters();
+ // this.$refs.table.load(query, true);
+ this.$refs.table.load(null, true)
+ },
+ loadTableBefore(param, callBack) {
+ //鏌ヨ鍓嶈缃煡璇㈡潯浠跺強鍒嗛〉淇℃伅
+ let query = this.getSearchParameters()
+ if (query) {
+ param = Object.assign(param, query)
+ }
+
+ if (this.$route.query.viewflow && this.$route.query.id) {
+ param.wheres.push({
+ name: this.table.key,
+ value: this.$route.query.id
+ })
+ }
+ // if (this.isViewFlow() && data && data.length) {
+ // let query = JSON.parse(JSON.stringify(this.$route.query));
+ // query.viewflow = 0;
+ // this.$router.replace({ path: this.$route.path, query: query });
+ // this.$nextTick(() => {
+ // this.getWorkFlowSteps(data[0]);
+ // });
+ // }
+ let status = this.searchBefore(param)
+ callBack(status)
+ },
+
+ loadTableAfter(data, callBack, result) {
+ //鏌ヨ鍚�
+ //2020.10.30澧炲姞鏌ヨ鍚庤繑鍥炴墍鏈夌殑鏌ヨ淇℃伅
+ let status = this.searchAfter(data, result)
+ callBack(status)
+ //鑷姩寮瑰嚭妗嗗鎵硅鎯�
+ },
+ loadDetailTableBefore(param, callBack, data) {
+ //鏄庣粏鏌ヨ鍓�
+ //鏂板缓鏃剁姝㈠姞杞芥槑缁�
+ if (this.currentAction == this.const.ADD) {
+ callBack(false)
+ return false
+ }
+ let status = this.searchDetailBefore(param, data)
+ callBack(status)
+ },
+ loadDetailTableAfter(data, callBack, result) {
+ //鏄庣粏鏌ヨ鍚�
+ let status = this.searchDetailAfter(data, result)
+ callBack(status)
+ },
+ getSearchItem(field) {
+ //鑾峰彇鏌ヨ鐨勫弬鏁�
+ let data
+ for (let index = 0; index < this.searchFormOptions.length; index++) {
+ if (data) return data.type
+ const item = this.searchFormOptions[index]
+ data = item.find((x) => {
+ return x.field == field
+ })
+ }
+
+ return (data || {}).type
+ },
+ resetSearch() {
+ //閲嶇疆鏌ヨ瀵硅薄
+ this.resetSearchForm()
+ //2020.10.17澧炲姞閲嶇疆鍚庢柟娉�
+ this.resetSearchFormAfter && this.resetSearchFormAfter()
+ },
+ resetEdit() {
+ //閲嶇疆缂栬緫鐨勬暟鎹�
+ let isEdit = this.currentAction != this.const.ADD
+ //閲嶇疆涔嬪墠
+ if (!this[isEdit ? 'resetUpdateFormBefore' : 'resetAddFormBefore']()) {
+ return
+ }
+ let objKey = {}
+ //缂栬緫鐘舵�佷笅,涓嶉渶瑕侀噸缃富閿�,鍒涘缓鏃堕棿鍒涘缓浜�
+ if (isEdit) {
+ objKey[this.table.key] = this.editFormFields[this.table.key]
+ }
+ this.resetEditForm(objKey)
+ //閲嶇疆涔嬪悗
+
+ if (!this[isEdit ? 'resetUpdateFormAfter' : 'resetAddFormAfter']()) {
+ return
+ }
+ },
+ resetSearchForm(sourceObj) {
+ //閲嶇疆鏌ヨ琛�
+ this.resetForm('searchForm', sourceObj)
+ },
+ resetEditForm(sourceObj) {
+ if (this.hasDetail && this.$refs.detail) {
+ // this.$refs.detail.rowData.splice(0);
+ this.$refs.detail.reset()
+ }
+ this.resetForm('form', sourceObj)
+ if (this.$refs.form && this.$refs.form.$refs.volform) {
+ setTimeout(() => {
+ this.$refs.form.$refs.volform.clearValidate()
+ }, 100)
+ }
+ },
+ getKeyValueType(formData, isEditForm) {
+ try {
+ let keyLeft = (isEditForm ? 'e' : 's') + '_b_'
+ formData.forEach((item) => {
+ item.forEach((x) => {
+ if (this.keyValueType.hasOwnProperty(keyLeft + x.field)) {
+ return true
+ }
+ let data
+ if (x.type == 'switch') {
+ this.keyValueType[x.field] = 1
+ } else if (x.bind && x.bind.data) {
+ data = x.bind.data
+ } else if (x.data) {
+ if (x.data instanceof Array) {
+ data = x.data
+ } else if (x.data.data && x.data.data instanceof Array) {
+ data = x.data.data
+ }
+ }
+ if (data && data.length > 0) {
+ if (!this.keyValueType.hasOwnProperty(x.field)) {
+ this.keyValueType[x.field] = data[0].key
+ }
+ if (!this.keyValueType.hasOwnProperty(keyLeft + x.field)) {
+ this.keyValueType[keyLeft + x.field] = x.type
+ }
+ }
+ })
+ })
+ } catch (error) {
+ console.log(error.message)
+ }
+ },
+ resetForm(formName, sourceObj) {
+ // return;
+ //閲嶇疆琛ㄥ崟鏁版嵁
+ if (this.$refs[formName]) {
+ this.$refs[formName].reset()
+ }
+
+ if (!sourceObj) return
+ let form, keyLeft
+ if (formName == 'searchForm') {
+ form = this.searchFormFields
+ keyLeft = 's' + '_b_'
+ } else {
+ form = this.editFormFields
+ keyLeft = 'e' + '_b_'
+ }
+ //鑾峰彇鏁版嵁婧愮殑data绫诲瀷锛屽惁鍒欏鏋滄暟鎹簮data鐨刱ey鏄暟瀛楋紝閲嶇疆鐨勫�兼槸瀛楃涓插氨鏃犳硶缁戝畾鍊�
+ if (!this.keyValueType._dinit) {
+ this.getKeyValueType(this.editFormOptions, true)
+ this.getKeyValueType(this.searchFormOptions, false)
+ this.keyValueType._dinit = true
+ }
+ var _cascaderParentTree
+ for (const key in form) {
+ if (sourceObj.hasOwnProperty(key)) {
+ let newVal = sourceObj[key]
+ let kv_type = this.keyValueType[keyLeft + key]
+
+ if (
+ kv_type == 'selectList' ||
+ kv_type == 'checkbox' ||
+ kv_type == 'cascader' ||
+ kv_type == 'treeSelect'
+ ) {
+ // 2020.05.31澧炲姞iview缁勪欢Cascader
+ // 2020.11.01澧炲姞iview缁勪欢Cascader琛ㄥ崟閲嶇疆鏃舵煡璇㈡墍鏈夌殑鐖惰妭鐐�
+ if (kv_type == 'cascader' || kv_type == 'treeSelect') {
+ var treeDic = this.dicKeys.find((dic) => {
+ return dic.fileds && dic.fileds.indexOf(key) != -1
+ })
+
+ if (treeDic && treeDic.orginData && treeDic.orginData.length) {
+ let keyIsNum = typeof treeDic.orginData[0].id == 'number'
+
+ if (kv_type == 'cascader') {
+ newVal = keyIsNum ? newVal * 1 || 0 : newVal + ''
+ if (kv_type == 'cascader') {
+ _cascaderParentTree = this.base.getTreeAllParent(newVal, treeDic.orginData)
+ if (_cascaderParentTree) {
+ newVal = _cascaderParentTree.map((x) => {
+ return x.id
+ })
+ }
+ }
+ } else {
+ if (newVal === null || newVal === undefined) {
+ newVal = []
+ } else if (typeof newVal == 'string') {
+ newVal = newVal.split(',')
+ }
+ if (keyIsNum) {
+ if (Array.isArray(newVal)) {
+ newVal = newVal.map((x) => {
+ return x * 1 || 0
+ })
+ }
+ } else if (typeof newVal == 'number') {
+ newVal = [newVal + '']
+ }
+ }
+ } else {
+ newVal = [newVal]
+ }
+ } else if (typeof newVal == 'number') {
+ newVal = [newVal + '']
+ this.$message.error(`澶氶�夋椂鏁版嵁搴撳瓧娈礫${key}]蹇呴』鏄瓧绗︿覆绫诲瀷`)
+ } else if (newVal != '' && newVal != undefined && typeof newVal == 'string') {
+ newVal = newVal.split(',')
+ } else {
+ //if (kv_type == 'checkbox') {
+ newVal = []
+ }
+ } else if (
+ this.keyValueType.hasOwnProperty(key) &&
+ typeof this.keyValueType[key] == 'number' &&
+ newVal * 1 == newVal
+ ) {
+ newVal = newVal * 1
+ } else {
+ if (newVal == null || newVal == undefined) {
+ newVal = ''
+ } else if (this.numberFields.indexOf(key) != -1) {
+ newVal = newVal * 1 || 0
+ } else {
+ newVal += ''
+ }
+ }
+ if (newVal instanceof Array) {
+ if (form[key]) {
+ form[key] = []
+ }
+ form[key] = newVal
+ } else {
+ form[key] = newVal
+ }
+ } else {
+ form[key] = form[key] instanceof Array ? [] : ''
+ }
+ }
+ },
+ onBtnClick(param) {
+ this[param.method](param.data)
+ },
+ refresh() {
+ //鍒锋柊
+ this.search()
+ // this.$refs.table.load();
+ },
+ saveBefore(formData) {
+ return true
+ },
+ saveAfter(formData, result) {
+ return true
+ },
+ save() {
+ //鏂板鎴栫紪杈戞椂淇濆瓨
+ // if (!this.$refs.form.validate()) return;
+ this.$refs.form.validate((result) => {
+ if (result) {
+ this.saveExecute()
+ }
+ })
+ },
+ async saveExecute() {
+ let editFormFields = {}
+ //涓婁紶鏂囦欢浠ラ�楀彿闅斿紑
+ for (const key in this.editFormFields) {
+ if (
+ this.uploadfiled &&
+ this.uploadfiled.length > 0 &&
+ this.uploadfiled.indexOf(key) != -1 &&
+ this.editFormFields[key] instanceof Array
+ ) {
+ let allPath = this.editFormFields[key].map((x) => {
+ return x.path
+ })
+ editFormFields[key] = allPath.join(',')
+ } else if (typeof this.editFormFields[key] == 'function') {
+ try {
+ editFormFields[key] = this.editFormFields[key]()
+ } catch (error) {}
+ } else {
+ //2021.05.30淇涓嬫媺妗嗘竻闄ゆ暟鎹悗鍚庡彴涓嶈兘淇濆瓨鐨勯棶棰�
+ if (
+ this.editFormFields[key] === undefined &&
+ this.dicKeys.some((x) => {
+ return x.fileds && x.fileds.indexOf(key) != -1
+ })
+ ) {
+ editFormFields[key] = null
+ } else {
+ editFormFields[key] = this.editFormFields[key]
+ }
+ }
+ }
+ //灏嗘暟缁勮浆鎹㈡垚string
+ //2020.11.01澧炲姞绾ц仈澶勭悊
+ for (const key in editFormFields) {
+ if (editFormFields[key] instanceof Array) {
+ var iscascader = this.dicKeys.some((x) => {
+ return (
+ x.type == 'cascader' &&
+ x.e_type != 'treeSelect' &&
+ x.fileds &&
+ x.fileds.indexOf(key) != -1
+ )
+ })
+ if (iscascader && editFormFields[key].length) {
+ editFormFields[key] = editFormFields[key][editFormFields[key].length - 1]
+ } else {
+ editFormFields[key] = editFormFields[key].join(',')
+ }
+ }
+ }
+
+ let formData = {
+ mainData: editFormFields,
+ detailData: null,
+ delKeys: null
+ }
+
+ //鑾峰彇鏄庣粏鏁版嵁(鍓嶅彴鏁版嵁鏄庣粏鏈仛鏍¢獙锛屽緟瀹�.鍚庡彴宸茬粡鏍¢獙)
+ if (this.hasDetail) {
+ formData.detailData = this.$refs.detail.rowData
+ const types = ['selectList', 'cascader', 'treeSelect']
+ let _fields = this.detail.columns
+ .filter((c) => {
+ return types.indexOf(c.type) != -1 || types.indexOf(c.edit && c.edit.type) != -1
+ })
+ .map((c) => {
+ return c.field
+ })
+ //2022.06.20澧炲姞淇濆瓨鏃跺鏄庣粏琛ㄤ笅鎷夋澶氶�夌殑鍒ゆ柇
+ if (_fields.length) {
+ formData.detailData = JSON.parse(JSON.stringify(formData.detailData))
+ formData.detailData.forEach((row) => {
+ for (let index = 0; index < _fields.length; index++) {
+ const _field = _fields[index]
+ if (Array.isArray(row[_field])) {
+ row[_field] = row[_field].join(',')
+ }
+ }
+ })
+ }
+ }
+ if (this.detailOptions.delKeys.length > 0) {
+ formData.delKeys = this.detailOptions.delKeys
+ }
+ //淇濆瓨鍓嶆嫤鎴�
+ let _currentIsAdd = this.currentAction == this.const.ADD
+ if (_currentIsAdd) {
+ //2020.12.06澧炲姞鏂板缓鍓嶅紓姝ュ鐞嗘柟娉�
+ //2021.08.16淇寮傛璇硶鍐欓敊鐨勯棶棰�
+ if (!this.addBefore(formData) || !(await this.addBeforeAsync(formData))) return
+ } else {
+ //2020.12.06澧炲姞淇敼鍓嶅紓姝ュ鐞嗘柟娉�
+ if (!this.updateBefore(formData) || !(await this.updateBeforeAsync(formData))) return
+ }
+ let url = this.getUrl(this.currentAction)
+ this.http.post(url, formData, true).then((x) => {
+ //淇濆瓨鍚�
+ if (_currentIsAdd) {
+ if (!this.addAfter(x)) return
+ //杩炵画娣诲姞
+ if (this.continueAdd && x.status) {
+ this.$success(x.message)
+ //鏂板缓
+ this.currentAction = this.const.ADD
+ //2023.07.23澧炲姞杩炵画娣诲姞鍚庢柟娉�
+ let _formFields
+ if (this.continueAddAfter) {
+ _formFields = JSON.parse(JSON.stringify(this.editFormFields))
+ }
+ this.currentRow = {}
+ this.resetAdd()
+ this.refresh()
+ //2023.07.23澧炲姞杩炵画娣诲姞鍚庢柟娉�
+ this.continueAddAfter && this.continueAddAfter(_formFields, formData, x)
+ return
+ }
+ } else {
+ if (!this.updateAfter(x)) return
+ }
+ if (!x.status) return this.$error(x.message)
+ this.$success(x.message || '鎿嶄綔鎴愬姛')
+ //濡傛灉淇濆瓨鎴愬姛鍚庨渶瑕佸叧闂紪杈戞锛岀洿鎺ヨ繑鍥炰笉澶勭悊鍚庨潰
+ if (this.boxOptions.saveClose) {
+ this.boxModel = false
+ //2020.12.27濡傛灉鏄紪杈戜繚瀛樺悗涓嶉噸缃垎椤甸〉鏁帮紝鍒锋柊椤甸潰鏃惰繕鏄樉绀哄綋鍓嶉〉鐨勬暟鎹�
+ this.$refs.table.load(null, _currentIsAdd)
+ //this.refresh();
+ return
+ }
+ let resultRow
+ if (typeof x.data == 'string' && x.data != '') {
+ resultRow = JSON.parse(x.data)
+ } else {
+ resultRow = x.data
+ }
+
+ if (this.currentAction == this.const.ADD) {
+ // this.currentRow=x.data;
+ this.editFormFields[this.table.key] = ''
+ this.currentAction = this.const.EDIT
+ this.currentRow = resultRow.data
+ }
+ this.resetEditForm(resultRow.data)
+ // console.log(resultRow);
+ if (this.hasDetail) {
+ this.detailOptions.delKeys = []
+ if (resultRow.list) {
+ this.$refs.detail.rowData.push(...resultRow.list)
+ }
+ }
+ this.$refs.table.load(null, _currentIsAdd)
+ // this.refresh();
+ })
+ },
+ async delBeforeAsync(delKeys, rows) {
+ return true
+ },
+ async del(rows) {
+ if (rows) {
+ if (!(rows instanceof Array)) {
+ rows = [rows]
+ }
+ } else {
+ rows = this.$refs.table.getSelected()
+ }
+ //鍒犻櫎鏁版嵁
+
+ if (!rows || rows.length == 0) return this.$error('璇烽�夋嫨瑕佸垹闄ょ殑琛�!')
+ let delKeys = rows.map((x) => {
+ return x[this.table.key]
+ })
+ if (!delKeys || delKeys.length == 0) return this.$error('娌℃湁鑾峰彇瑕佸垹闄ょ殑琛屾暟鎹�!')
+ //鍒犻櫎鍓�
+ if (!this.delBefore(delKeys, rows) || !(await this.delBeforeAsync(delKeys, rows))) {
+ return
+ }
+ let tigger = false
+ this.$confirm('纭瑕佸垹闄ら�夋嫨鐨勬暟鎹悧?', '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ if (tigger) return
+ tigger = true
+ let url = this.getUrl(this.const.DEL)
+ this.http.post(url, delKeys, '姝e湪鍒犻櫎鏁版嵁....').then((x) => {
+ if (!x.status) return this.$error(x.message)
+ this.$success(x.message)
+ //鍒犻櫎鍚�
+ if (!this.delAfter(x)) {
+ return
+ }
+ this.refresh()
+ })
+ })
+ },
+ async modelOpenBeforeAsync(row) {
+ return true
+ },
+ async initBox() {
+ //2022.01.08澧炲姞鏂板缓鏃堕殣钘忔槑缁嗚〃瀵煎嚭鍔熻兘
+ this.detailOptions.buttons.forEach((x) => {
+ if (x.value == 'export') {
+ x.hidden = this.currentAction == 'Add'
+ }
+ })
+ //鍒濆鍖栨柊寤恒�佺紪杈戠殑寮瑰嚭妗�
+ if (!(await this.modelOpenBeforeAsync(this.currentRow))) return false
+ this.modelOpenBefore(this.currentRow)
+ if (!this.boxInit) {
+ this.boxInit = true
+ this.boxModel = true
+ // this.detailUrl = this.url;
+ }
+ return true
+ },
+ setEditForm(row) {
+ // if (this.remoteColumns.length == 0 || !rows || rows.length == 0) return;
+ let remoteColumns = this.$refs.table.remoteColumns
+ remoteColumns.forEach((column) => {
+ this.editFormOptions.forEach((option) => {
+ option.forEach((x) => {
+ if (x.field == column.field) {
+ x.data.data = Object.assign([], x.data, column.bind.data)
+ }
+ })
+ })
+ })
+ this.editFormFields
+ //閲嶇疆缂栬緫琛ㄥ崟鏁版嵁
+ this.editFormFields[this.table.key] = row[this.table.key]
+
+ this.resetEditForm(row)
+ this.currentAction = this.const.EDIT
+ this.boxModel = true
+ },
+ async linkData(row, column) {
+ this.boxOptions.title = this.table.cnName + '(缂栬緫)'
+ //鐐瑰嚮table鍗曞厓鏍煎揩鎹烽摼鎺ユ樉绀虹紪杈戞暟鎹�
+ this.currentAction = this.const.EDIT
+ this.currentRow = row
+ if (!(await this.initBox())) return
+ this.resetDetailTable(row)
+ this.setEditForm(row)
+ this.setContinueAdd(false)
+ //璁剧疆杩滅▼鏌ヨ琛ㄥ崟鐨勯粯璁ey/value
+ this.getRemoteFormDefaultKeyValue()
+ //鐐瑰嚮缂栬緫鎸夐挳寮瑰嚭妗嗗悗锛屽彲浠ュ湪姝ゅ鍐欓�昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ this.modelOpenProcess(row)
+ },
+ setContinueAdd(isAdd) {
+ if (!this.continueAdd) return
+ var _button = this.boxButtons.find((x) => {
+ return x.value == 'save'
+ })
+ if (_button) {
+ _button.name = isAdd ? this.continueAddName : '淇� 瀛�'
+ }
+ },
+ resetAdd() {
+ if (this.hasDetail) {
+ this.$refs.detail &&
+ // this.$refs.detail.rowData &&
+ this.$refs.detail.reset()
+ }
+ let obj = {}
+ //濡傛灉鏈塻witch鏍囩锛岄粯璁ら兘璁剧疆涓哄惁
+ this.editFormOptions.forEach((x) => {
+ x.forEach((item) => {
+ if (item.type == 'switch') {
+ obj[item.field] = 0
+ }
+ })
+ })
+ this.resetEditForm(obj)
+ },
+ async add() {
+ this.boxOptions.title = this.table.cnName + '(鏂板缓)'
+ //鏂板缓
+ this.currentAction = this.const.ADD
+ this.currentRow = {}
+ if (!(await this.initBox())) return
+
+ this.resetAdd()
+ this.setContinueAdd(true)
+ // this.resetEditForm();
+ this.boxModel = true
+ //鐐瑰嚮鏂板缓鎸夐挳寮瑰嚭妗嗗悗锛屽彲浠ュ湪姝ゅ鍐欓�昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ this.modelOpenProcess()
+ // this.modelOpenAfter();
+ },
+ async edit(rows) {
+ this.boxOptions.title = '缂栬緫'
+ //缂栬緫
+ this.currentAction = this.const.EDIT
+ if (rows) {
+ if (!(rows instanceof Array)) {
+ rows = [rows]
+ }
+ } else {
+ rows = this.$refs.table.getSelected()
+ }
+ if (rows.length == 0) {
+ return this.$error('璇烽�夋嫨瑕佺紪杈戠殑琛�!')
+ }
+ if (rows.length != 1) {
+ return this.$error('鍙兘閫夋嫨涓�琛屾暟鎹繘琛岀紪杈�!')
+ }
+ //璁板綍褰撳墠缂栬緫鐨勮
+ this.currentRow = rows[0]
+ //鍒濆鍖栧脊鍑烘
+ if (!(await this.initBox())) return
+ this.setContinueAdd(false)
+ //閲嶇疆琛ㄥ崟
+ this.resetDetailTable()
+
+ //璁剧疆褰撳墠鐨勬暟鎹埌琛ㄥ崟涓�
+ this.setEditForm(rows[0])
+ //璁剧疆杩滅▼鏌ヨ琛ㄥ崟鐨勯粯璁ey/value
+ this.getRemoteFormDefaultKeyValue()
+ //鐐瑰嚮缂栬緫鎸夐挳寮瑰嚭妗嗗悗锛屽彲浠ュ湪姝ゅ鍐欓�昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ this.modelOpenProcess(rows[0])
+ // this.modelOpenAfter(rows[0]);
+ },
+ getRemoteFormDefaultKeyValue() {
+ //璁剧疆琛ㄥ崟杩滅▼鏁版嵁婧愮殑榛樿key.value
+ if (this.currentAction != this.const.EDIT || this.remoteKeys.length == 0) return
+ this.editFormOptions.forEach((x, xIndex) => {
+ x.forEach((item, yIndex) => {
+ if (item.remote) {
+ let column = this.columns.find((x) => {
+ return x.bind && x.bind.key == item.dataKey
+ })
+ if (!column) return
+ let key = this.currentRow[item.field]
+ let obj = column.bind.data.find((x) => {
+ return x.key == key
+ })
+ // obj ? obj.value : key濡傛灉娌℃湁鏌ュ埌鏁版嵁婧愶紝鐩存帴浣跨敤鍘熸暟鎹�
+ item.data = [{ key: key, value: obj ? obj.value : key }]
+ this.editFormOptions[xIndex].splice(yIndex, 1, item)
+ // this.$set(item, 'data', [{ key: key + '', value: obj.value }])
+ // item.data = [{ key: key + '', value: obj.value }];
+ }
+ })
+ })
+ },
+ modelOpenProcess(row) {
+ this.$nextTick(() => {
+ this.modelOpenAfter(row)
+ })
+ return
+ // if (!this.$refs.form) {
+ // let timeOut = setTimeout(x => {
+ // this.modelOpenAfter(row);
+ // }, 500)
+ // return;
+ // }
+ // this.modelOpenAfter(row);
+ },
+ import() {
+ //瀵煎叆(涓婁紶excel),寮瑰嚭瀵煎叆缁勪欢UploadExcel.vue
+ this.upload.excel = true
+ this.$refs.upload_excel && this.$refs.upload_excel.reset()
+ },
+ download(url, fileName) {
+ //涓嬭浇瀵煎嚭鐨勬枃浠�
+ let xmlResquest = new XMLHttpRequest()
+ xmlResquest.open('GET', url, true)
+ xmlResquest.setRequestHeader('Content-type', 'application/json')
+ xmlResquest.setRequestHeader('Authorization', this.$store.getters.getToken())
+ let elink = this.$refs.export
+ xmlResquest.responseType = 'blob'
+ xmlResquest.onload = function (oEvent) {
+ if (xmlResquest.status != 200) {
+ this.$error('涓嬭浇鏂囦欢鍑洪敊浜�..')
+ return
+ }
+ let content = xmlResquest.response
+ // let elink = this.$refs.export;//document.createElement("a");
+ elink.download = fileName //+".xlsx";
+ // elink.style.display = "none";
+ let blob = new Blob([content])
+ elink.href = URL.createObjectURL(blob)
+ // document.body.appendChild(elink);
+ elink.click()
+ // document.body.removeChild(elink);
+ }
+ xmlResquest.send()
+ },
+ getFileName(isDetail) {
+ //2021.01.08澧炲姞瀵煎嚭excel鏃惰嚜瀹氫箟鏂囦欢鍚�
+ if (isDetail) {
+ return this.detail.cnName + '.xlsx'
+ }
+ return this.table.cnName + '.xlsx'
+ },
+ export(isDetail) {
+ //瀵煎嚭
+ let url, query, param
+ if (isDetail) {
+ //鏄庣粏琛ㄥ鍑烘椂濡傛灉鏄柊寤虹姸鎬侊紝绂佹瀵煎嚭
+ if (this.currentAction == 'Add') {
+ return
+ }
+ url = `api/${this.detail.table}/${this.const.EXPORT}`
+ param = {
+ wheres: [{ name: this.table.key, value: this.editFormFields[this.table.key] }]
+ }
+ } else {
+ //涓昏〃瀵煎嚭
+ url = this.getUrl(this.const.EXPORT)
+ query = this.getSearchParameters()
+ param = { order: this.pagination.order, wheres: query.wheres || [] }
+ }
+ //2020.06.25澧炲姞瀵煎嚭鍓嶅鐞�
+ if (!isDetail && !this.exportBefore(param)) {
+ return
+ }
+ if (
+ !param.wheres.some((x) => {
+ return x.name == this.table.key
+ })
+ ) {
+ let ids = this.getSelectRows()
+ .map((x) => {
+ return x[this.table.key]
+ })
+ .join(',')
+ //2024.01.13澧炲姞榛樿瀵煎嚭鍕鹃�夌殑鏁版嵁
+ if (ids) {
+ param.wheres.push({
+ name: this.table.key,
+ value: ids,
+ displayType: 'selectList'
+ })
+ }
+ }
+ if (param.wheres && typeof param.wheres == 'object') {
+ param.wheres = JSON.stringify(param.wheres)
+ }
+ let $http = this.http
+ //2022.09.26澧炲姞鑷畾涔夊鍑烘枃浠跺悕
+ let fileName = this.downloadFileName || this.getFileName(isDetail)
+ //2021.01.08浼樺寲瀵煎嚭鍔熻兘
+ $http.post(url, param, '姝e湪瀵煎嚭鏁版嵁....', { responseType: 'blob' }).then((content) => {
+ const blob = new Blob([content])
+ if ('download' in document.createElement('a')) {
+ // 闈濱E涓嬭浇
+ const elink = document.createElement('a')
+ elink.download = fileName
+ elink.style.display = 'none'
+ elink.href = URL.createObjectURL(blob)
+ document.body.appendChild(elink)
+ elink.click()
+ URL.revokeObjectURL(elink.href)
+ document.body.removeChild(elink)
+ } else {
+ // IE10+涓嬭浇
+ navigator.msSaveBlob(blob, fileName)
+ }
+ })
+ //.then(result => {
+ // if (!result.status) {
+ // return this.$error(result.message);
+ // }
+ // let path = this.getUrl(this.const.DOWNLOAD);
+ // path = path[0] == "/" ? path.substring(1) : path;
+ // this.download(
+ // $http.ipAddress + path + "?path=" + result.data,
+ // this.table.cnName + ".xlsx" // filePath
+ // );
+ /// window.open($http.ipAddress + path + "?fileName=" + filePath, "_self");
+ // });
+ },
+ getSelectRows() {
+ //鑾峰彇閫変腑鐨勮
+ return this.$refs.table.getSelected()
+ },
+ getDetailSelectRows() {
+ //鎴栬幏鍙栨槑缁嗛�変腑鐨勮
+ if (!this.$refs.detail) {
+ return []
+ }
+ return this.$refs.detail.getSelected()
+ },
+ audit() {
+ //瀹℃牳寮瑰嚭妗�
+ let rows = this.$refs.table.getSelected()
+ if (rows.length == 0) return this.$error('璇烽�夋嫨瑕佸鏍哥殑琛�!')
+ let auditStatus = Object.keys(rows[0]).find((x) => {
+ return x.toLowerCase() === 'auditstatus'
+ })
+ if (!auditStatus) {
+ return this.$message.error(`琛ㄥ繀椤诲寘鎷鏍稿瓧娈点�怉uditStatus銆�,骞朵笖鏄痠nt绫诲瀷`)
+ }
+ // let checkStatus = rows.every((x) => {
+ // return this.$global.audit.status.some(c => { return c === x[auditStatus] || !x[auditStatus] })
+ // });
+ // if (!checkStatus) return this.$error('鍙兘閫夋嫨寰呭鎵规垨瀹℃牳涓殑鏁版嵁!');
+ this.$refs.audit.open(rows)
+ },
+ saveAudit(params, rows, callback) {
+ //淇濆瓨瀹℃牳
+ let keys = rows.map((x) => {
+ return x[this.table.key]
+ })
+ if (!this.auditBefore(keys, rows)) {
+ return
+ }
+ let url = `${this.getUrl(this.const.AUDIT)}?auditReason=${params.reason}&auditStatus=${
+ params.value
+ }`
+ this.http.post(url, keys, '瀹℃牳涓�....').then((x) => {
+ if (!this.auditAfter(x, keys)) {
+ return
+ }
+ if (!x.status) return this.$error(x.message)
+
+ callback && callback(x)
+ this.$success(x.message)
+ this.refresh()
+ })
+ },
+ viewModelCancel() {
+ //鏌ョ湅琛ㄧ粨鏋�
+ this.viewModel = false
+ },
+ initFormOptions(formOptions, keys, formFields, isEdit) {
+ //鍒濆鍖栨煡璇€�佺紪杈戝璞$殑涓嬫媺妗嗘暟鎹簮銆佸浘鐗囦笂浼犻摼鎺ュ湴鍧�
+ //let defaultOption = { key: "", value: "璇烽�夋嫨" };
+ //鏈変笂浼犵殑瀛楁
+ //2020.05.03鏂板
+ //缂栬緫鏁版嵁婧愮殑绫诲瀷
+ formOptions.forEach((item) => {
+ item.forEach((d) => {
+ if (d.type == 'number') {
+ //2022.08.22浼樺寲琛ㄥ崟绫诲瀷涓簄umber鏃剁殑榛樿鍊�
+ if (formFields[d.field] === '') {
+ formFields[d.field] = undefined
+ }
+ this.numberFields.push(d.field)
+ }
+ if (d.type == 'img' || d.type == 'excel' || d.type == 'file' || d.columnType == 'img') {
+ d.url = this.http.ipAddress + 'api' + this.table.url + 'Upload'
+ this.uploadfiled.push(d.field)
+ }
+ if (!d.dataKey) return true
+ //2022.02.20寮哄埗寮�鍚仈绾у彲浠ラ�夋嫨鏌愪釜鑺傜偣
+ if (d.type == 'cascader' && !d.hasOwnProperty('changeOnSelect')) {
+ //寮哄埗寮�鍚仈绾у彲浠ラ�夋嫨鏌愪釜鑺傜偣
+ d.changeOnSelect = true
+ }
+ //寮�鍚繙绋嬫悳绱�
+ if (d.remote) {
+ this.remoteKeys.push(d.dataKey)
+ d.data = [] //{ dicNo: d.dataKey, data: [] };
+ return true
+ }
+ //2020.05.03澧炲姞缂栬緫琛ㄥ崟瀵筩heckbox鐨勬敮鎸�
+ if (d.type == 'checkbox' && !(formFields[d.field] instanceof Array)) {
+ formFields[d.field] = []
+ }
+ if (keys.indexOf(d.dataKey) == -1) {
+ //2020.05.03澧炲姞璁板綍缂栬緫瀛楁鐨勬暟鎹簮绫诲瀷
+
+ keys.push(d.dataKey)
+ //2020.05.03淇鏌ヨ琛ㄥ崟涓庣紪杈戣〃鍗晅ype绫诲瀷鍙樻垚寮轰竴鑷存�х殑闂
+ //this.dicKeys.push({ dicNo: d.dataKey, data: [], type: d.type });
+ // 2020.11.01澧炲姞iview缁勪欢Cascader鏁版嵁婧愬瓨鍌�
+ let _dic = {
+ dicNo: d.dataKey,
+ data: [],
+ fileds: [d.field],
+ orginData: []
+ }
+ if (d.type == 'cascader') {
+ _dic.type = 'cascader'
+ }
+ if (isEdit) {
+ _dic['e_type'] = d.type
+ }
+ this.dicKeys.push(_dic)
+ } else if (d.type == 'cascader') {
+ this.dicKeys.forEach((x) => {
+ if (x.dicNo == d.dataKey) {
+ x.type = 'cascader'
+ x.fileds.push(d.field)
+ }
+ })
+ }
+ if (d.type != 'cascader') {
+ //2020.01.30绉婚櫎鍐呴儴琛ㄥ崟formOptions鏁版嵁婧愰厤缃牸寮廳ata.data锛屾墍鏈夊弬鏁版敼涓轰笌缁勪欢api鏍煎紡鐩稿悓
+ Object.assign(
+ d,
+ this.dicKeys.filter((f) => {
+ return f.dicNo == d.dataKey
+ })[0],
+ { type: d.type }
+ )
+ }
+ })
+ })
+ },
+ //鍒濆table涓庢槑缁嗚〃鐨勬暟鎹簮鎸囧悜dicKeys瀵硅薄锛屽啀鍘诲悗鍙板姞杞芥暟鎹簮
+ initColumns(scoure, dicKeys, keys) {
+ if (!scoure || !(scoure instanceof Array)) return
+ scoure.forEach((item) => {
+ if (!item.bind || (item.bind.data && item.bind.data.length > 0)) return true
+ let key = item.bind.key || item.bind.dicNo
+ if (this.remoteKeys.indexOf(key) != -1) {
+ item.bind.remote = true
+ return true
+ }
+ if (this.hasKeyField.indexOf(item.field) == -1) {
+ this.hasKeyField.push(item.field)
+ }
+ var dic = dicKeys.filter((x) => {
+ return x.dicNo == key
+ })
+ if (!dic || dic.length == 0) {
+ dicKeys.push({ dicNo: key, data: [], type: item.edit ? item.edit.type : null })
+ dic = [dicKeys[dicKeys.length - 1]]
+ keys.push(key)
+ }
+ //2020.11.01澧炲姞绾ц仈澶勭悊
+ if (dic[0].type == 'cascader' || dic[0].type == 'treeSelect') {
+ if (!dic[0].orginData) {
+ dic[0].orginData = []
+ }
+ if (!dic[0].data) {
+ dic[0].data = []
+ }
+ item.bind = { data: dic[0].data, orginData: dic[0].orginData, type: dic[0].type, key: key }
+ return
+ } else {
+ item.bind = dic[0]
+ }
+ //2020.05.03浼樺寲table鏁版嵁婧恈heckbox涓巗elect绫诲瀷浠庣紪杈戝垪涓�夊彇
+ item.bind.type = item.bind.e_type || 'string'
+ })
+ },
+ bindOptions(dic) {
+ //缁戝畾涓嬫媺妗嗙殑鏁版嵁婧�
+ //缁戝畾鍚庡彴鐨勫瓧鍏告暟鎹�
+ dic.forEach((d) => {
+ if (d.data.length >= (this.select2Count || 500)) {
+ if (
+ !this.dicKeys.some((x) => {
+ return x.dicNo == d.dicNo && (x.type == 'cascader' || x.type == 'treeSelect')
+ })
+ ) {
+ d.data.forEach((item) => {
+ item.label = item.value
+ item.value = item.key
+ })
+ }
+ }
+ this.dicKeys.forEach((x) => {
+ if (x.dicNo != d.dicNo) return true
+ //2020.10.26澧炲姞绾ц仈鏁版嵁婧愮粦瀹氬鐞�
+ if (x.type == 'cascader' || x.type == 'treeSelect') {
+ // x.data=d.data;
+ //鐢熸垚tree缁撴瀯
+ let _data = JSON.parse(JSON.stringify(d.data))
+ //2022.04.04澧炲姞绾ц仈瀛楀吀鏁版嵁婧愬埛鏂板悗table娌℃湁鍙樺寲鐨勯棶棰�
+ this.columns.forEach((column) => {
+ if (column.bind && column.bind.key == d.dicNo) {
+ column.bind.data = d.data
+ }
+ })
+ let arr = this.base.convertTree(_data, (node, data, isRoot) => {
+ if (!node.inited) {
+ node.inited = true
+ node.label = node.value
+ node.value = node.key
+ }
+ })
+ x.data.push(...arr)
+ x.orginData.push(...d.data)
+ //2021.10.17淇鏌ヨ绾ц仈涓嶈兘缁戝畾鏁版嵁婧愮殑闂
+ this.searchFormOptions.forEach((searhcOption) => {
+ searhcOption.forEach((_option) => {
+ if (_option.type == 'cascader' && _option.dataKey == x.dicNo) {
+ _option.data = arr
+ _option.orginData = d.data
+ }
+ })
+ })
+ //2021.10.17淇绾ц仈涓嶈兘浜岀骇鍒锋柊鐨勯棶棰�
+ this.editFormOptions.forEach((editOption) => {
+ editOption.forEach((_option) => {
+ if (
+ (_option.type == 'cascader' || _option.type == 'treeSelect') &&
+ _option.dataKey == x.dicNo
+ ) {
+ _option.data = arr
+ _option.orginData = d.data
+ }
+ })
+ })
+ } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) {
+ let source = d.data,
+ newSource = new Array(source.length)
+ for (let index = 0; index < source.length; index++) {
+ newSource[index] = {
+ //榛樿浠庡瓧鍏告暟鎹鍑烘潵鐨刱ey閮芥槸string绫诲瀷,浣嗗鏋滄暟鎹粠sql涓煡璇㈢殑鍙兘涓洪潪string,鍚︽槸async-validator闇�瑕侀噸缃缃牸寮�
+ key: source['key'] + '', //source[index][x.config.valueField] + "",
+ value: source['value'] //source[index][x.config.textField]
+ }
+ }
+
+ x.data.push(...newSource)
+ } else {
+ //2020.06.06锛屽鏋滄槸selectList鏁版嵁婧愪娇鐢ㄧ殑鑷畾涔塻ql骞朵笖key鏄暟瀛楋紝寮哄埗杞崲鎴愬瓧绗︿覆
+ if (x.e_type == 'selectList' && d.data.length > 0 && typeof d.data[0].key == 'number') {
+ d.data.forEach((c) => {
+ c.key = c.key + ''
+ })
+ }
+ x.data.push(...d.data)
+ }
+ if (
+ this.singleSearch &&
+ this.singleSearch.dataKey &&
+ this.singleSearch.dataKey == x.dicNo
+ ) {
+ this.singleSearch.data.splice(0, 1, ...x.data)
+ }
+ })
+ })
+ },
+ getUrl(action, ingorPrefix) {
+ return 'api' + this.table.url + action
+ //鏄惁蹇界暐鍓嶇紑/ 鑾峰彇鎿嶄綔鐨剈rl
+ // return (!ingorPrefix ? '/' : '') + 'api' + this.table.url + action;
+ },
+ initDicKeys() {
+ //鍒濆鍖栧瓧鍏告暟鎹�
+ let keys = []
+ //2022.04.17浼樺寲閲嶆柊鍔犺浇鏁版嵁婧�
+ this.dicKeys.forEach((item) => {
+ item.data.splice(0)
+ item.orginData && item.orginData.splice(0)
+ })
+ //this.dicKeys.splice(0);
+ //鍒濆鍖栫紪杈戞暟鎹簮,榛樿涓轰竴涓┖鏁扮粍锛屽鏋滆姹傚繀濉缃畉ype=number/decimal鐨勬渶灏忓��
+ this.initFormOptions(this.editFormOptions, keys, this.editFormFields, true)
+ //鍒濆鍖栨煡璇㈡暟鎹簮,榛樿涓轰竴涓┖鏁扮粍
+ this.initFormOptions(this.searchFormOptions, keys, this.searchFormFields, false)
+ //鏌ヨ鏃ユ湡璁剧疆涓哄彲閫夊紑濮嬩笌缁撴灉鏃ユ湡
+ this.searchFormOptions.forEach((item) => {
+ item.forEach((x) => {
+ if (x.type == 'date' || x.type == 'datetime' || x.type == 'month') x.range = true
+ })
+ })
+ //鍒濆鍖杁atatable琛ㄦ暟鎹簮,榛樿涓轰竴涓┖鏁扮粍,dicKeys涓虹晫闈㈡墍鏈夌殑鏁版嵁瀛楀吀缂栧彿
+ this.initColumns(this.columns, this.dicKeys, keys)
+ //2021.05.23榛樿寮�鍚煡璇㈤〉闈㈡墍鏈夊瓧娈垫帓搴�,濡傛灉涓嶉渶瑕佹帓搴忥紝鍦╫nInited閬嶅巻columns璁剧疆sort=false
+ //2021.09.25绉婚櫎寮哄埗鎺掑簭鍔熻兘
+ // this.columns.forEach(x => {
+ // x.sort = x.render ? false : true;
+ // })
+ if (this.detailOptions && this.detailOptions.columns) {
+ this.initColumns(this.detailOptions.columns, this.dicKeys, keys)
+ }
+ //鍒濆鍖栧揩閫熸煡璇㈠瓧娈�,榛樿浣跨敤浠g爜鐢熸垚鍣ㄩ厤缃殑绗竴涓煡璇㈠瓧娈�
+ if (this.searchFormOptions.length > 0) {
+ this.singleSearch = {
+ dataKey: this.searchFormOptions[0][0].dataKey,
+ dicNo: this.searchFormOptions[0][0].dicNo,
+ field: this.searchFormOptions[0][0].field,
+ title: this.searchFormOptions[0][0].title,
+ type: this.searchFormOptions[0][0].type,
+ data: []
+ }
+ // this.singleSearch = this.searchFormOptions[0][0];
+ }
+ if (keys.length == 0) return
+ let $this = this
+ this.http.post('/api/Sys_Dictionary/GetVueDictionary', keys).then((dic) => {
+ $this.bindOptions(dic)
+ //2022.04.04澧炲姞瀛楀吀鍔犺浇瀹屾垚鏂规硶
+ $this.dicInited && $this.dicInited(dic)
+ })
+ },
+ setFiexdColumn(columns, containerWidth) {
+ //璁$畻鏁翠釜table鐨勫搴︼紝鏍规嵁瀹藉害鍐冲畾鏄惁鍚敤绗竴琛屾樉绀虹殑鍒椾负鍥哄畾鍒�
+ //2021.09.21绉婚櫎寮哄埗鍥哄畾绗竴鍒�
+ // let columnsWidth = 0;
+ // columns.forEach(x => {
+ // if (!x.hidden && x.width) {
+ // columnsWidth += x.width;
+ // }
+ // });
+ // //鍚敤绗竴鍒椾负鍥哄畾鍒�
+ // if (columnsWidth > containerWidth) {
+ // let firstColumn = columns.find(x => !x.hidden);
+ // if (firstColumn) {
+ // firstColumn.fixed = true;
+ // }
+ // }
+ },
+ initBoxHeightWidth() {
+ //鍒濆鍖栧脊鍑烘鐨勯珮搴︿笌瀹藉害
+ let clientHeight = document.documentElement.clientHeight
+ //寮瑰嚭妗嗛珮搴﹁嚦灏�250px
+ clientHeight = clientHeight < 250 ? 250 : clientHeight
+ let clientWidth = document.documentElement.clientWidth
+ if (
+ this.editFormOptions.some((x) => {
+ return x.some((item) => {
+ return item.type == 'editor'
+ })
+ })
+ ) {
+ this.editor.uploadImgUrl = this.getUrl('upload')
+ this.boxOptions.height = clientHeight * 0.8
+ this.boxOptions.width = clientWidth * 0.8
+ } else {
+ if (this.boxOptions.height) {
+ //濡傛灉楂樺害涓庡搴﹁秴杩囦簡鑾峰彇鍒扮殑鍙楂樺搴︼紝鍒欒涓洪粯璁ょ殑90%楂樺
+ if (this.boxOptions.height > clientHeight * 0.8) {
+ this.boxOptions.height = clientHeight * 0.8
+ }
+ }
+ if (this.boxOptions.width) {
+ //濡傛灉楂樺害涓庡搴﹁秴杩囦簡鑾峰彇鍒扮殑鍙楂樺搴︼紝鍒欒涓洪粯璁ょ殑90%楂樺
+ if (this.boxOptions.width > clientWidth * 0.8) {
+ this.boxOptions.width = clientWidth * 0.8
+ }
+ }
+ }
+ //璁$畻鏁翠釜table鐨勫搴︼紝鏍规嵁瀹藉害鍐冲畾鏄惁鍚敤绗竴琛屾樉绀虹殑鍒椾负鍥哄畾鍒�
+ let maxTableWidth = clientWidth - 270
+ this.setFiexdColumn(this.columns, maxTableWidth)
+
+ this.height = this.tableHeight || clientHeight - 206
+ this.url = this.getUrl(this.const.PAGE)
+ //璁$畻寮瑰嚭妗嗙殑楂樹笌瀹藉害
+ //濡傛灉鏈夋槑缁嗚〃锛岄珮搴︿笌瀹藉甫璁剧疆涓�0.9/0.82
+ if (this.detail.columns && this.detail.columns.length > 0) {
+ this.hasDetail = true
+ clientWidth = clientWidth * 0.8
+ clientHeight = clientHeight * 0.85
+ if (!this.detailOptions.height) {
+ this.detailOptions.height = clientHeight - this.editFormOptions.length * 36 - 234
+ this.detailOptions.height =
+ this.detailOptions.height < 240 ? 240 : this.detailOptions.height
+ }
+
+ this.detailOptions.columns = this.detail.columns
+ this.detailOptions.pagination.sortName = this.detail.sortName
+ this.detailOptions.cnName = this.detail.cnName
+ this.detailOptions.key = this.detail.key
+ this.detailOptions.url = this.getUrl('getDetailPage')
+ //璁$畻寮瑰嚭妗嗘暣涓猼able鐨勫搴︼紝鏍规嵁瀹藉害鍐冲畾鏄惁鍚敤绗竴琛屾樉绀虹殑鍒椾负鍥哄畾鍒�
+ this.setFiexdColumn(this.detail.columns, clientWidth)
+ } else {
+ let maxColumns = 1 //鏈�澶у垪鏁帮紝鏍规嵁鍒楄绠楀脊妗嗙殑瀹藉害
+ this.editFormOptions.forEach((x) => {
+ if (x.length > maxColumns) maxColumns = x.length
+ })
+ let maxHeightRate = 0.7,
+ maxWidthRate = 0.5
+ maxWidthRate = maxColumns / 10 + 0.3
+ maxHeightRate = (this.editFormOptions.length || 1) * 0.1 + 0.03
+ maxHeightRate = maxHeightRate > 0.9 ? 0.9 : maxHeightRate
+ clientWidth = clientWidth * maxWidthRate
+ clientHeight = clientHeight * maxHeightRate
+ // this.boxOptions.width = clientWidth * maxWidthRate;
+ // this.boxOptions.height = clientHeight * maxHeightRate;
+ }
+ if (!this.boxOptions.height) {
+ this.boxOptions.height = clientHeight + 10
+ }
+ if (!this.boxOptions.width) {
+ this.boxOptions.width = clientWidth + 30
+ }
+ //2023.10.11闅愯棌鍒嗛〉鏃惰皟鏁磋〃鏍奸珮搴�
+ if (this.paginationHide) {
+ this.height = this.height + 37
+ }
+ },
+ rowOnChange(row) {
+ this.rowChange(row)
+ },
+ rowChange(row) {
+ //閫変腑琛宑heckbox琛屼簨浠�
+ },
+ selectionOnChange(rows) {
+ this.selectionChange(rows)
+ },
+ selectionChange(rows) {},
+ rowOnClick({ row, column, event }) {
+ this.rowClick({ row, column, event })
+ },
+ rowClick({ row, column, event }) {
+ // 鐐瑰嚮琛屼簨浠�(2020.11.07)
+ },
+ rowOnDbClick({ row, column, event }) {
+ this.rowDbClick({ row, column, event })
+ },
+ rowDbClick({ row, column, event }) {
+ // 鍙屽嚮鍑昏浜嬩欢(2021.05.23)
+ },
+ $error(message) {
+ this.$message.error(message)
+ // this.$message({
+ // type: 'error',
+ // content: message,
+ // duration: 5
+ // });
+ },
+ $success(message) {
+ this.$message.success(message)
+ },
+ setFiexdSearchForm(visiable) {
+ //2020.09.011澧炲姞鍥哄畾鏌ヨ琛ㄥ崟鍔熻兘,visiable=true榛樿灏嗘煡璇㈣〃鍗曞睍寮�
+ this.fiexdSearchForm = true
+ let refreshBtn = this.buttons.find((x) => x.name == '鍒� 鏂�')
+ if (visiable) {
+ this.searchBoxShow = true
+ }
+ if (refreshBtn) {
+ refreshBtn.name = '閲� 缃�'
+ refreshBtn.onClick = function () {
+ this.resetSearch()
+ }
+ }
+ },
+ tableBeginEdit(row, column, index) {
+ //2021.03.19鏄惁寮�鍚煡璇㈢晫闈㈣〃鏍煎弻鍑荤紪杈戠粨鏉熸柟娉�,杩斿洖false涓嶄細缁撴潫缂栬緫
+ return this.beginEdit(row, column, index)
+ },
+ beginEdit(row, column, index) {
+ //2021.03.19鏄惁寮�鍚煡璇㈢晫闈㈣〃鏍煎弻鍑荤紪杈戠粨鏉熸柟娉�,杩斿洖false涓嶄細缁撴潫缂栬緫
+ return true
+ },
+ tableEndEditBefore(row, column, index) {
+ return this.endEditBefore(row, column, index)
+ },
+ endEditBefore(row, column, index) {
+ //2021.03.19鏄惁寮�鍚煡璇㈢晫闈㈣〃鏍煎弻鍑荤紪杈戠粨鏉熸柟娉�,杩斿洖false涓嶄細缁撴潫缂栬緫
+ return true
+ },
+ filterPermission(tableName, permission) {
+ //2021.03.19鍒ゆ柇鏄惁鏈夋煇涓〃鐨勬寜閽潈闄�
+ //:["Search","Add","Delete","Update","Import","Export","Upload","Audit"]
+ const _result = (this.$store.state.permission || []).find((x) => {
+ return x.url == '/' + tableName
+ })
+ return _result && _result.permission.some((x) => x == permission)
+ },
+ destroyed() {
+ //2021.04.11澧炲姞vue椤甸潰閿�姣佹柟娉�,璺敱蹇呴』璁剧疆keepLive:false锛岃缃柟娉曡锛氬墠绔紑鍙戞枃妗�-銆媅绂佺敤椤甸潰缂撳瓨keepAlive]
+ },
+ loadTreeTableChildren(tree, treeNode, resolve) {
+ this.loadTreeChildren.call(this, tree, treeNode, resolve)
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //鏍戝舰缁撴瀯鍔犺浇瀛愯妭鐐�(2021.05.02),鍦╫nInit涓缃簡rowKey涓婚敭瀛楁鍚庢墠浼氱敓鏁�
+ return resolve([])
+ },
+ importDetailAfter(data) {
+ //2022.01.08澧炲姞鏄庣粏琛ㄥ鍏ュ悗澶勭悊
+ },
+ importExcelAfter(data) {
+ //2022.01.08澧炲姞鏄庣粏琛ㄥ鍏ュ悗鏂规硶鍒ゆ柇
+
+ if (!data.status) {
+ return // this.$message.error(data.message);
+ }
+ //鏄庣粏琛ㄥ鍏�
+ if (this.boxModel) {
+ if (data.data) {
+ data.data = JSON.parse(data.data)
+ } else {
+ data.data = []
+ }
+ data.data.forEach((x) => {
+ x[this.detail.key] = undefined
+ x[this.table.key] = undefined
+ })
+ this.importDetailAfter(data) //澧炲姞鏄庣粏琛ㄥ鍏ュ悗澶勭悊
+ this.$refs.detail.rowData.unshift(...data.data)
+ this.upload.excel = false
+ return
+ }
+ this.importAfter(data)
+ },
+ onGridModelClose(iconClick) {
+ if (this.isBoxAudit) {
+ this.initFormOptionType(false)
+ }
+ this.isBoxAudit = false
+ this.onModelClose(iconClick)
+ },
+ initAuditColumn() {},
+ getWorkFlowSteps(row) {
+ let table = this.table.url.replaceAll('/', '')
+ let url = `api/Sys_WorkFlow/getSteps?tableName=${table}&id=${row[this.table.key]}`
+ this.http.get(url, {}, true).then((result) => {
+ this.workFlowSteps.splice(0)
+ //鏈夊彲鑳芥病鏈夐厤缃鎵规祦绋�
+ if (!result.list || !result.list.length) {
+ result.list = []
+ this.auditParam.showAction = true
+ this.auditParam.height = 240
+ this.auditParam.showViewButton = row.AuditStatus == 0
+ } else {
+ this.auditParam.showAction = result.list.some((c) => {
+ return c.isCurrentUser
+ })
+ this.auditParam.height = 511
+ this.auditParam.showViewButton = true
+ }
+ this.auditParam.reason = ''
+ this.auditParam.status = -1
+ this.auditParam.value = -1
+ if (result.his) {
+ result.his.forEach((item) => {
+ item.auditStatus = this.getAuditStatus(item.auditStatus)
+ })
+ }
+
+ this.auditParam.auditHis = result.his
+ this.workFlowSteps.push(...result.list)
+ this.isBoxAudit = true
+ this.initFormOptionType(true)
+ this.edit(row)
+ this.boxOptions.title = '瀹℃牳'
+ })
+ },
+ initFormOptionType(isReadonly) {
+ this.editFormOptions.forEach((options) => {
+ options.forEach((option) => {
+ if (isReadonly) {
+ if (!option.readonly) {
+ this.formFieldsType.push(option.field)
+ option.readonly = true
+ }
+ } else {
+ if (this.formFieldsType.indexOf(option.field) != -1) {
+ option.readonly = false
+ }
+ }
+ })
+ })
+ },
+ getAuditStatus(status) {
+ let data = this.auditParam.data.find((x) => {
+ return x.value == status
+ })
+ if (!data) {
+ return '-'
+ // return `瀹℃牳鍊间笉姝g‘:${status}`
+ }
+ return data.text
+ },
+ initFlowQuery() {
+ if (this.$route.query.viewflow) {
+ this.$refs.table && this.search()
+ }
+ },
+ fullscreen(full) {
+ //寮瑰嚭妗嗗叏灞忔柟娉�
+ },
+ //鏌ヨ椤甸潰琛ㄦ牸鍚堝苟琛屾垨鍒楋紝瑙乭ttps://element-plus.gitee.io/zh-CN/component/table.html#%E5%90%88%E5%B9%B6%E8%A1%8C%E6%88%96%E5%88%97
+ spanMethod({ row, column, rowIndex, columnIndex }) {},
+ //鏌ヨ椤甸潰琛ㄦ牸鍚堝苟琛屾垨鍒楋紝瑙乭ttps://element-plus.gitee.io/zh-CN/component/table.html#%E5%90%88%E5%B9%B6%E8%A1%8C%E6%88%96%E5%88%97
+ detailSpanMethod({ row, column, rowIndex, columnIndex }) {},
+ getFormOption(field) {
+ if (!field) {
+ return null
+ }
+ for (let index = 0; index < this.editFormOptions.length; index++) {
+ const _options = this.editFormOptions[index]
+ const obj = _options.find((c) => {
+ return c.field == field
+ })
+ if (obj) {
+ return obj
+ }
+ }
+ },
+ setFormReadonly(readonly) {
+ //蹇�熻缃〃鍗曚笌鏄庣粏琛ㄦ槸鍚﹀彧璇�
+ this.editFormOptions.forEach((x) => {
+ x.forEach((ops) => {
+ ops.readonly = !!readonly
+ })
+ })
+ this.detailOptions.columns.forEach((x) => {
+ x.readonly = !!readonly
+ })
+ this.detailOptions.buttons.forEach((x) => {
+ x.hidden = !!readonly
+ })
+ }
+}
+import customColumns from './ViewGridCustomColumn.js'
+//鍚堝苟鎵╁睍鏂规硶
+methods = Object.assign(methods, detailMethods, serviceFilter, customColumns)
+export default methods
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methodsDetail.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methodsDetail.jsx"
new file mode 100644
index 0000000..d795e90
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methodsDetail.jsx"
@@ -0,0 +1,43 @@
+let methods = {
+ add() {
+ this.$Message.success('鐐瑰嚮浜嗘坊鍔犳寜閽�')
+ },
+ edit() {
+ let rows = this.getSelected()
+ if (rows.length == 0) {
+ return this.$Message.error('璇烽�夋嫨瑕佺紪杈戠殑琛�!')
+ }
+ this.$Message.success('鐐瑰嚮浜嗙紪杈戞寜閽�')
+ },
+ del() {
+ let rows = this.getSelected()
+ if (rows.length == 0) {
+ return this.$Message.error('璇烽�夋嫨瑕佸垹闄ょ殑琛�!')
+ }
+ this.$Message.success('鐐瑰嚮浜嗗垹闄ゆ寜閽�')
+ },
+ getSelected() {
+ return this.selectRows
+ },
+
+ selectionChange(selection) {
+ // console.log(selection);
+ // 閫夋嫨琛屼簨浠�,鍙湁鍗曢�夋墠瑙﹀彂
+ this.selectRows = selection
+ if (this.single) {
+ if (selection.length == 1) {
+ this.$emit('rowChange', selection[0])
+ }
+ if (selection.length > 1) {
+ let _row = selection[selection.length - 1]
+ this.$refs.table.toggleRowSelection(selection[0])
+ this.selectRows = [_row]
+ }
+ }
+ // 灏唖electionchange鏆撮湶鍑哄幓
+ this.$emit('selectionChange', selection)
+ }
+}
+export default {
+ methods
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue"
new file mode 100644
index 0000000..4e05a0e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue"
@@ -0,0 +1,200 @@
+<template>
+ <div class="vol-dialog">
+
+ <el-dialog v-model="vmodel" :close-on-click-modal="false" :close-on-press-escape="false" :width="width"
+ :fullscreen="fullscreen" :draggable="draggable" :modal="modal" :before-close="handleClose">
+ <template #header>
+ <i :class="icon"></i> {{ title }}
+ <button class="el-dialog__headerbtn" type="button" style="right: 35px; color: var(--el-color-info)" @click="handleFullScreen">
+ <i class="el-icon el-icon-full-screen"></i>
+ </button>
+ </template>
+ <el-scrollbar :max-height="contentHeight">
+ <div v-if="inited" style="min-height: 50px;" class="srcoll-content" :style="{ padding: padding + 'px' }">
+ <slot name="content"></slot>
+ <slot></slot>
+ </div>
+ </el-scrollbar>
+ <template #footer>
+ <div class="dia-footer" v-if="footer">
+ <slot name="footer"></slot>
+ <el-button type="primary" v-if="!footer" size="mini" @click="handleClose()"><i
+ class="el-icon-close"></i>鍏抽棴</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { defineComponent, ref, watch, watchEffect } from 'vue';
+
+export default defineComponent({
+ props: {
+ modelValue: false,
+ lazy: {
+ //鏄惁寮�鍚噿鍔犺浇2020.12.06
+ type: Boolean,
+ default: false,
+ },
+ icon: {
+ type: String,
+ default: "el-icon-warning-outline",
+ },
+ title: {
+ type: String,
+ default: "鍩烘湰淇℃伅",
+ },
+ height: {
+ type: Number,
+ default: 200,
+ },
+ width: {
+ type: Number,
+ default: 650,
+ },
+ padding: {
+ type: Number,
+ default: 16,
+ },
+ modal: {
+ //鏄惁闇�瑕侀伄缃╁眰
+ type: Boolean,
+ default: true,
+ },
+ draggable: {
+ //鍚敤鍙嫋鎷藉姛鑳�
+ type: Boolean,
+ default: false,
+ },
+ mask: {
+ type: Boolean,
+ default: true,
+ },
+ onModelClose: {
+ //2021.07.11澧炲姞寮瑰嚭妗嗗叧闂簨浠�
+ type: Function,
+ default: (iconClick) => {
+ return true;
+ }
+ },
+ footer:{ //鏄惁鏄剧ず搴曢儴鎸夐挳
+ type: Boolean,
+ default: true
+ }
+
+ },
+ setup(props, context) {
+ const clientHeight = document.body.clientHeight * 0.95 - 60;
+ const inited = ref(true);
+ const vmodel = ref(false);
+ const footer = ref(false);
+ const top = ref(100);
+ vmodel.value = props.modelValue;
+ footer.value = !!context.slots.footer;
+ const contentHeight = ref(200);
+ contentHeight.value = props.height;
+ const handleClose = (done, iconClose) => {
+ let result = props.onModelClose(!!iconClose);
+ if (result === false) return;
+ vmodel.value = false;
+ context.emit("update:modelValue", false);
+ done && done();
+ };
+ const calcHeight = (val) => {
+ // if (props.height > clientHeight) {
+ // if(true){
+ contentHeight.value = clientHeight - 30;
+ return clientHeight / -2 + 'px';
+ // }
+ // contentHeight.value = val || props.height;
+ // return (props.height + 56) / -2 + 'px';
+ };
+ top.value = calcHeight();
+ watch(
+ () => props.modelValue,
+ (newVal, oldVal) => {
+ vmodel.value = newVal;
+ }
+ );
+ watch(
+ () => props.height,
+ (newVal, oldVal) => {
+ top.value = calcHeight();
+ }
+ );
+ const fullscreen=ref(false);
+ const handleFullScreen=()=> {
+ fullscreen.value = !fullscreen.value;
+ context.emit("fullscreen", fullscreen.value);
+ }
+ return {
+ handleClose,
+ inited,
+ vmodel,
+ footer,
+ top,
+ calcHeight,
+ contentHeight,
+ fullscreen,
+ handleFullScreen
+ };
+ }
+});
+</script>
+
+<style lang="less" scoped>
+.dia-footer {
+ text-align: right;
+ width: 100%;
+ border-top: 1px solid #e2e2e2;
+ text-align: right;
+ padding: 6px 8px;
+}
+</style>
+
+<style scoped lang="less">
+.vol-dialog ::v-deep(.el-overlay-dialog) {
+ display: flex !important;
+}
+
+.vol-dialog ::v-deep(.el-dialog) {
+ margin: auto;
+}
+
+.vol-dialog ::v-deep(.el-dialog) {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+.vol-dialog ::v-deep(.el-dialog__header) {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ padding: 0px 13px;
+ line-height: 53px;
+ border-bottom: 1px solid #e6e6e6;
+ height: 50px;
+ color: rgb(79, 79, 79);
+ font-weight: bold;
+ font-size: 14px;
+ margin: 0;
+ // background-image: linear-gradient(135deg, #0cd7bd 10%, #50c3f7);
+}
+
+.vol-dialog ::v-deep(.el-dialog__footer),
+.vol-dialog ::v-deep(.el-dialog__body) {
+ padding: 0;
+}
+
+.vol-dialog ::v-deep(.el-dialog__headerbtn) {
+ top: 0;
+ padding-top: 8px;
+ height: 50px;
+ width: 0;
+ padding-right: 30px;
+ padding-left: 5px;
+}
+.vol-dialog ::v-deep(.el-dialog) {
+ padding: 0;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue"
new file mode 100644
index 0000000..cc544d1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue"
@@ -0,0 +1,236 @@
+<template>
+ <div class="vol-el-menu">
+ <div class="menu-search" v-if="showSearch">
+ <el-select placement="bottom" v-model="searchValue" clearable filterable remote reserve-keyword
+ :placeholder="'璇疯緭鍏ュ叧閿瓧鎼滅储...'" :remote-method="remoteMethod" @change="selectChange" :loading="loading">
+ <template #prefix><i class="el-icon-search"></i></template>
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+ </el-select>
+ </div>
+ <el-menu close="vol-el-menu--vertical" :default-openeds="openedIds" :default-active="defaultActive"
+ :unique-opened="true" @select="select" :collapse="isCollapse" @open="handleOpen" @close="handleClose"
+ @contextmenu.prevent="bindRightClickMenu">
+ <template v-for="item in convertTree(list)">
+ <el-sub-menu :key="item.id" :index="'' + item.id" v-if="item.children.length && (!enable || item.enable == 1)">
+ <template #title>
+ <i class="menu-icon" :class="item.icon"></i>
+ <span> {{ item.name}}</span>
+ </template>
+ <vol-element-menu-child :enable="enable" :list="item.children"></vol-element-menu-child>
+ </el-sub-menu>
+ <template v-else>
+ <el-menu-item class="menu-item-lv1" v-if="!enable || item.enable == 1" :key="item.id" :index="'' + item.id">
+ <i :class="item.icon"></i>
+ <span> {{ item.name }}</span>
+ </el-menu-item>
+ </template>
+ </template>
+ </el-menu>
+ </div>
+</template>
+
+<script>
+import VolElementMenuChild from "./VolElementMenuChild";
+import { useRouter } from "vue-router";
+
+import {
+ defineComponent,
+ reactive,
+ watch,
+ ref,
+ toRef,
+ toRefs,
+ getCurrentInstance,
+ // onMounted,
+} from "vue";
+export default defineComponent({
+ components: {
+ "vol-element-menu-child": VolElementMenuChild,
+ },
+ props: {
+ enable: {
+ type: Boolean,
+ default: false, //鏄惁鍒ゆ柇enable=1
+ },
+ isCollapse: {
+ type: Boolean,
+ default: false,
+ },
+ onSelect: {
+ type: Function,
+ default: (x) => { },
+ },
+ openSelect: {
+ //鎵撳紑鐨勬椂鍊欐槸鍚﹁Е鍙戦�変腑浜嬩欢
+ type: Boolean,
+ default: true,
+ },
+ list: {
+ type: Array,
+ default: [],
+ },
+ rootId: {
+ type: String,
+ default: "0",
+ },
+ currentMenuId: {
+ type: Number,
+ default: 0,
+ },
+ },
+ setup(props) {
+ // const { list } = toRefs(props);
+ // const treeList = ref([]);
+ const getTree = (id, node, data) => {
+ if (!node.children) {
+ node.children = [];
+ }
+ data.forEach((x) => {
+ if (x.parentId == id && !node.children.some((c) => c.id === x.id)) {
+ node.children.push(x);
+ getTree(x.id, x, data);
+ }
+ });
+ };
+ let rootTreeId = !isNaN(props.rootId) ? ~~props.rootId : props.rootId;
+ props.list.forEach((x) => {
+ if (!x.icon || x.icon.substring(0, 3) != "el-") {
+ x.icon = "el-icon-menu";
+ }
+ x.children = [];
+ x.isRoot = x.parentId === rootTreeId;
+ });
+ const convertTree = (data) => {
+ var root_data = [];
+ data.forEach((x) => {
+ if (x.parentId === rootTreeId) {
+ if (!x.hasOwnProperty("enable")) x.enable = 1;
+ root_data.push(x);
+ getTree(x.id, x, data);
+ }
+ });
+ return root_data;
+ };
+ const openedIds = reactive([props.currentMenuId]);
+ const defaultActive = ref(props.currentMenuId + "");
+ let _base = getCurrentInstance().appContext.config.globalProperties.base;
+ watch(
+ () => props.currentMenuId,
+ (newVal, oldVal) => {
+ defaultActive.value = newVal + "";
+ openedIds.splice(0);
+ openedIds.push(
+ ..._base.getTreeAllParent(newVal, props.list).map((c) => {
+ return c.id;
+ })
+ );
+ }
+ );
+ const router = useRouter();
+ let eventSelect = false;
+ const select = (index, _item) => {
+
+ _item = props.list.find((x) => {
+ return x.id == index;
+ });
+
+ if (_item.linkType == 1) {
+ window.open(_item.url || _item.path, '_blank')
+ return;
+ }
+ if (eventSelect) {
+ return;
+ }
+ eventSelect = true;
+ setTimeout(() => {
+ eventSelect = false;
+ }, 20);
+
+
+
+ props.onSelect(index, _item);
+ router.push({ path: _item.path || "", query: _item.query });
+ };
+
+ const handleOpen = (index, path) => {
+ if (props.openSelect) {
+ select(index, path);
+ }
+ };
+ const handleClose = () => { };
+
+ /**
+ * 鑿滃崟瀵艰埅鍙抽敭浜嬩欢
+ * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+ */
+ const bindRightClickMenu = (enable) => {
+ if (!enable) return;
+ };
+ const { proxy } = getCurrentInstance();
+ const loading = ref(false)
+ const searchValue = ref('');
+ const options = ref([]);
+ const remoteMethod = (query) => {
+ if (!query) {
+ options.value.length = 0;
+ return;
+ }
+ options.value = props.list
+ .filter(c => { return (c.enable == 1 || c.enable === undefined) && c.name.indexOf(query) != -1 && (!c.children || !c.children.length) })
+ .map(x => { return { value: x.id, label: x.name } }).slice(0, 7)
+ }
+ const selectChange = (id) => {
+ if (!id) {
+ return;
+ }
+ let index = props.list.findIndex(c => { return c.id === id });
+ if (index === -1) {
+ return;
+ }
+ searchValue.value = "";
+ if(proxy.list.some(c=>{return c.parentId===id})){
+ return;
+ }
+ select(id, props.list[index]);
+ }
+
+ const showSearch=ref(proxy.$global.menuSearch===undefined||proxy.$global.menuSearch)
+ return {
+ // treeList,
+ // list,
+ select,
+ convertTree,
+ handleOpen,
+ handleClose,
+ bindRightClickMenu,
+ openedIds,
+ defaultActive,
+ searchValue,
+ options,
+ remoteMethod,
+ loading,
+ selectChange,
+ showSearch
+ };
+ },
+});
+</script>
+<style lang="less" scoped>
+.vol-el-menu {
+ // box-sizing: content-box;
+ width: 100%;
+
+ .menu-icon {
+ font-size: 18px;
+ margin-right: 6px;
+ }
+}
+
+.menu-search {
+ padding: 6px 10px;
+
+ ::v-deep(.el-input__wrapper) {
+ border-radius: 15px !important;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue"
new file mode 100644
index 0000000..ccea321
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue"
@@ -0,0 +1,56 @@
+<template>
+ <div class="vol-el-menu-item">
+ <template v-for="(item) in list">
+ <template v-if="item.children&&item.children.length">
+ <el-menu-item :key="item.id"
+ :index="'' + item.id"
+ v-if="!item.children.length && (!enable || item.enable == 1)">
+ <template #title></template>
+ <span> {{ item.name }}</span>
+ </el-menu-item>
+ <el-sub-menu :key="item.id"
+ :index="'' + item.id"
+ v-if="item.children.length && (!enable || item.enable == 1)">
+ <template #title>
+ <span> {{ item.name }}</span>
+ </template>
+ <vol-element-menu-child :enable="enable" :list="item.children" />
+ </el-sub-menu>
+ </template>
+ <template v-else>
+ <el-menu-item :key="item.id"
+ :index="'' + item.id"
+ v-if="(!enable || item.enable == 1)">
+ <template #title></template>
+ <span> {{item.name }}</span>
+ </el-menu-item>
+ </template>
+ </template>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "vol-element-menu-child",
+ props: {
+ list: {
+ type: Array,
+ default: [],
+ },
+ enable: {
+ type: Boolean,
+ default: false, //鏄惁鍒ゆ柇enable=1
+ },
+ },
+};
+</script>
+
+<style scoped lang="less">
+.vol-el-menu-item ::v-deep(.el-menu-item) {
+ height: 42px !important;
+ line-height: 42px !important;
+}
+</style>
+
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue"
new file mode 100644
index 0000000..bacb3e6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue"
@@ -0,0 +1,1551 @@
+<template>
+ <el-form
+ style="display: inline-block; width: 100%"
+ :inline="true"
+ ref="volform"
+ @submit.prevent
+ :model="formFields"
+ :label-width="labelWidth"
+ :rules="rules"
+ >
+ <template v-for="(row, findex) in formRules" :key="findex">
+ <div class="vol-form-item">
+ <el-form-item
+ :label="item.title ? item.title + '锛�' : ''"
+ v-show="!item.hidden"
+ v-for="(item, index) in row"
+ :prop="item.field"
+ :key="item.field + index"
+ :style="getColWidth(item)"
+ >
+ <!-- render -->
+ <form-expand
+ v-if="item.render && typeof item.render == 'function'"
+ :render="item.render"
+ :par="12"
+ ></form-expand>
+ <!-- 2021.10.17澧炲姞琛ㄥ崟瀹炴椂鏂规硶璁$畻 -->
+ <span
+ v-else-if="
+ item.readonly && typeof formFields[item.field] == 'function'
+ "
+ >{{ formFields[item.field]() }}</span
+ >
+ <!-- 鍙鍥剧墖鎴栨枃浠� -->
+ <div v-else-if="isReadonlyImgFile(item, formFields)">
+ <div v-if="item.type == 'img'" class="form-imgs">
+ <div
+ class="img-item"
+ v-for="(img, imgIndex) in formFields[item.field]"
+ :key="imgIndex"
+ >
+ <img
+ :src="getSrc(img.path)"
+ @error="handleImageError"
+ :onerror="errorImg"
+ @click="previewImg(img.path)"
+ />
+ </div>
+ </div>
+ <div
+ v-else
+ class="form-file-list"
+ v-for="(file, fileIndex) in formFields[item.field]"
+ :key="fileIndex"
+ >
+ <a @click="dowloadFile(formFields[item.field][fileIndex])">{{
+ file.name
+ }}</a>
+ </div>
+ </div>
+
+ <div v-else :class="{ 'form-item-extra': item.extra }">
+ <!-- 鍙灞炴�� -->
+ <label
+ :style="item.inputStyle"
+ v-if="item.type == 'label'||item.label"
+ class="readonly-input"
+ >{{ getText(formFields, item) }}</label
+ >
+ <!-- 20223.05.13闆嗘垚el-tree-select -->
+ <!-- :filter-method="(value)=>{filterMethod(value,item.data)}" -->
+ <!-- :filterable="true" -->
+ <el-tree-select
+ style="width: 100%"
+ v-else-if="item.type == 'treeSelect'"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ :data="item.data"
+ :multiple="item.multiple"
+ :render-after-expand="false"
+ :show-checkbox="true"
+ :check-strictly="true"
+ check-on-click-node
+ node-key="key"
+ :props="{ label: 'label' }"
+ >
+ <template #default="{data,node }">
+ <!-- <el-checkbox v-model="node.checked"></el-checkbox> -->
+ <!-- {{getNode(node, data)}} -->
+ <!-- {{node.checked}} -->
+ <!-- 杩欓噷杩樻湁鐐归棶棰橈紝鍚庨潰澶勭悊 -->
+ {{ data.label}}</template
+ >
+ </el-tree-select>
+ <template
+ v-else-if="['select', 'selectList'].indexOf(item.type) != -1"
+ >
+ <el-select-v2
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-if="item.data.length > select2Count"
+ v-model="formFields[item.field]"
+ filterable
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :allow-create="item.autocomplete"
+ :options="item.data"
+ @change="
+ (val) => {
+ item.onChange(val, item.data);
+ }
+ "
+ clearable
+ >
+ <template #default="{ item }">
+ {{ item.label }}
+ </template>
+ </el-select-v2>
+ <el-select
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-else-if="item.remote || item.url"
+ v-model="formFields[item.field]"
+ filterable
+ remote
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ clearable
+ @change="
+ (val) => {
+ item.onChange&&item.onChange(val, item.data);
+ }"
+ :remote-method="
+ (val) => {
+ remoteSearch(item, formFields, val);
+ }
+ "
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ <el-select
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ style="width: 100%"
+ :size="size"
+ v-else
+ v-model="formFields[item.field]"
+ filterable
+ :multiple="item.type == 'select' ? false : true"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :allow-create="item.autocomplete"
+ @change="
+ (val) => {
+ item.onChange(val, item.data);
+ }
+ "
+ clearable
+ >
+ <el-option
+ v-show="!item.hidden"
+ :disabled="item.disabled"
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ </template>
+
+ <el-switch
+ v-show="!item.hidden"
+ v-else-if="item.type == 'switch'"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ active-color="#0f84ff"
+ @change="item.onChange"
+ inactive-color="rgb(194 194 194)"
+ :active-value="
+ typeof formFields[item.field] == 'boolean'
+ ? true
+ : typeof formFields[item.field] == 'string'
+ ? '1'
+ : 1
+ "
+ :inactive-value="
+ typeof formFields[item.field] == 'boolean'
+ ? false
+ : typeof formFields[item.field] == 'string'
+ ? '0'
+ : 0
+ "
+ >
+ </el-switch>
+
+ <el-radio-group
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ v-else-if="item.type == 'radio'"
+ @change="item.onChange"
+ >
+ <el-radio
+ v-for="kv in item.data"
+ :disabled="item.readonly || item.disabled"
+ :key="kv.key"
+ :label="kv.key"
+ >{{ kv.value }}</el-radio
+ >
+ </el-radio-group>
+
+ <el-checkbox-group
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ v-else-if="item.type == 'checkbox'"
+ @change="item.onChange"
+ >
+ <el-checkbox
+ v-for="kv in item.data"
+ :key="kv.key"
+ :disabled="item.readonly || item.disabled"
+ :label="kv.key"
+ >{{ kv.value }}</el-checkbox
+ >
+ </el-checkbox-group>
+ <div
+ class="v-date-range"
+ style="display: flex"
+ v-else-if="
+ ['date', 'datetime','month'].indexOf(item.type) != -1 && item.range
+ "
+ >
+ <el-date-picker
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1; width: auto"
+ v-model="formFields[item.field][0]"
+ :type="item.type"
+ :disabledDate="(val) => getDateOptions(val, item)"
+ placeholder="寮�濮嬫椂闂�"
+ @change="
+ (val) => {
+ dateRangeChange(val, item);
+ }
+ "
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ <span style="margin: 0px 5px; font-size: 13px; color: #6f6b6b"
+ >鑷�</span
+ >
+ <el-date-picker
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1; width: auto"
+ v-model="formFields[item.field][1]"
+ placeholder="缁撴潫鏃堕棿"
+ :type="item.type"
+ :disabledDate="(val) => getDateOptions(val, item)"
+ @change="
+ (val) => {
+ dateRangeChange(val, item);
+ }
+ "
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ </div>
+ <!-- v-show涓嶆坊鍔犳牴鑺傜偣灏变細鎶ラ敊娌℃湁鏍圭偣鑺� -->
+ <div
+ v-show="!item.hidden"
+ style="width: 100%"
+ v-else-if="['date', 'datetime', 'year', 'month'].indexOf(item.type) != -1"
+ >
+ <el-date-picker
+ :size="size"
+ clearable
+ :disabled="item.readonly || item.disabled"
+ style="width: 100%"
+ v-model="formFields[item.field]"
+ @change="item.onChange"
+ :type="item.type"
+ :placeholder="
+ item.placeholder ? item.placeholder : '璇烽�夋嫨' + item.title
+ "
+ :disabledDate="(val) => getDateOptions(val, item)"
+ :value-format="getDateFormat(item)"
+ >
+ </el-date-picker>
+ </div>
+
+ <el-time-picker
+ :size="size"
+ v-else-if="item.type == 'time'"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ placeholder="璇烽�夋嫨鏃堕棿"
+ :value-format="item.format || 'YYYY-MM-DD HH:mm:ss'"
+ :format="item.format"
+ style="width: 100%"
+ >
+ </el-time-picker>
+
+ <el-scrollbar
+ style="border: 1px solid #c7d8db; border-radius: 5px"
+ :height="item.height || 150"
+ v-else-if="
+ item.type == 'editor' && (item.readonly || item.disabled)
+ "
+ >
+ <div ref="editor" v-html="formFields[item.field]"></div>
+ </el-scrollbar>
+
+ <vol-wang-editor
+ ref="editor"
+ v-else-if="item.type == 'editor'"
+ :url="item.url || editor.uploadImgUrl"
+ :upload="item.upload || editor.upload"
+ v-model="formFields[item.field]"
+ :height="item.height || 350"
+ ></vol-wang-editor>
+
+ <vol-upload
+ v-show="!item.hidden"
+ v-else-if="isFile(item, formFields)"
+ :desc="item.desc"
+ :multiple="item.multiple"
+ :max-file="item.maxFile"
+ :max-size="item.maxSize"
+ :autoUpload="item.autoUpload"
+ :fileInfo="formFields[item.field]"
+ :url="item.url"
+ :img="item.type == 'img' || item.columnType == 'img'"
+ :excel="item.type == 'excel'"
+ :fileTypes="item.fileTypes ? item.fileTypes : []"
+ :upload-before="item.uploadBefore"
+ :upload-after="item.uploadAfter"
+ :append="item.multiple"
+ :on-change="
+ (files) => {
+ return fileOnChange(files, item);
+ }
+ "
+ :file-click="item.fileClick"
+ :remove-before="item.removeBefore"
+ :downLoad="item.downLoad ? true : false"
+ ></vol-upload>
+ <el-cascader
+ :size="size"
+ clearable
+ style="width: 100%; margin-top: -3px"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ v-else-if="item.type == 'cascader'"
+ :options="item.data"
+ :props="{
+ checkStrictly: item.changeOnSelect || item.checkStrictly
+ }"
+ @change="item.onChange"
+ >
+ </el-cascader>
+ <el-rate
+ :disabled="item.readonly || item.disabled"
+ v-else-if="item.type == 'rate'"
+ @change="
+ (val) => {
+ item.onChange && item.onChange(val);
+ }
+ "
+ :max="item.max"
+ v-model="formFields[item.field]"
+ />
+ <div
+ style="display: flex"
+ v-else-if="item.type == 'range' || item.range"
+ >
+ <el-input
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1"
+ v-model="formFields[item.field][0]"
+ clearable
+ />
+ <span style="margin: 0 5px">-</span>
+ <el-input
+ :size="size"
+ :disabled="item.readonly || item.disabled"
+ style="flex: 1"
+ v-model="formFields[item.field][1]"
+ clearable
+ />
+ </div>
+ <el-input
+ :size="size"
+ clearable
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ :disabled="item.readonly || item.disabled"
+ v-else-if="item.type == 'textarea'"
+ v-model="formFields[item.field]"
+ type="textarea"
+ :autosize="{
+ minRows: item.minRows || 2,
+ maxRows: item.maxRows || 10
+ }"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ @keypress="
+ ($event) => {
+ onKeyPress($event, item);
+ }
+ "
+ @change="($event) => {
+ onKeyPress($event, item);
+ }"
+ @keyup.enter="($event) => {
+ onKeyPress($event, item);
+ }"
+ />
+ <el-input-number
+ :size="size"
+ style="width: 100%"
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ v-else-if="item.type == 'number'"
+ v-model="formFields[item.field]"
+ :min="item.min"
+ :disabled="item.readonly || item.disabled"
+ :max="item.max"
+ controls-position="right"
+ @change="item.onKeyPress"
+ />
+ <el-input
+ :size="size"
+ clearable
+ :input-style="item.inputStyle"
+ v-else-if="item.type == 'password'"
+ type="password"
+ v-model="formFields[item.field]"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ />
+ <!-- 2021.11.18淇el-input娌℃湁榛樿enter浜嬩欢鏃跺洖杞﹀紓甯� -->
+ <el-input
+ :size="size"
+ clearable
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ v-else-if="item.onKeyPress"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ @keypress="
+ ($event) => {
+ onKeyPress($event, item);
+ }
+ "
+ @change="item.onKeyPress"
+ @keyup.enter="item.onKeyPress"
+ @blur="item.blur"
+ @focus="item.focus"
+ ></el-input>
+ <el-input
+ :size="size"
+ clearable
+ v-else
+ :ref="item.field"
+ :input-style="item.inputStyle"
+ :placeholder="item.placeholder ? item.placeholder : item.title"
+ :disabled="item.readonly || item.disabled"
+ v-show="!item.hidden"
+ v-model="formFields[item.field]"
+ @blur="item.blur"
+ @focus="item.focus"
+ ></el-input>
+
+ <div class="form-extra" v-if="item.extra">
+ <form-expand
+ v-if="item.extra.render"
+ :render="item.extra.render"
+ ></form-expand>
+ <a
+ v-else-if="item.extra.click"
+ :style="item.extra.style"
+ @click="item.extra.click(item, formFields[item.field])"
+ >
+ <i v-if="item.extra.icon" :class="item.extra.icon" />
+ {{ item.extra.text }}
+ </a>
+ <a v-else :style="item.extra.style">
+ <i v-if="item.extra.icon" :class="item.extra.icon" />
+ {{ item.extra.text }}
+ </a>
+ </div>
+ </div>
+ </el-form-item>
+ </div>
+ </template>
+ <slot></slot>
+ <div style="width: 100%">
+ <slot name="footer"></slot>
+ </div>
+ </el-form>
+</template>
+<script>
+const rule = {
+ change: [
+ 'checkbox',
+ 'select',
+ 'date',
+ 'datetime',
+ 'drop',
+ 'radio',
+ 'cascader'
+ ], // 2020.05.31澧炲姞绾ц仈绫诲瀷
+ phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
+ decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/,
+ number: /(^[\-0-9][0-9]*([0-9]+)?)$/
+};
+const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password'];
+const types = {
+ int: 'number',
+ byte: 'number',
+ decimal: 'number', // "float",
+ string: 'string',
+ bool: 'boolean',
+ date: 'datetime',
+ date: 'date',
+ mail: 'email'
+};
+//琛ㄥ崟楠岃瘉娉ㄦ剰锛氭瘡娆¢獙璇侀兘蹇呴』鎵цcallback,鍚﹀垯楠岃瘉涓嶆墽琛屽洖璋冩柟娉�
+const colPow = Math.pow(10, 3);
+import FormExpand from './VolForm/VolFormRender';
+import {
+ defineAsyncComponent,
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance,
+ onMounted,
+ watch
+} from 'vue';
+export default defineComponent({
+ components: {
+ FormExpand,
+ 'vol-upload': defineAsyncComponent(() =>
+ import('@/components/basic/VolUpload.vue')
+ ),
+ 'vol-wang-editor': defineAsyncComponent(() =>
+ import('@/components/editor/VolWangEditor.vue')
+ )
+ },
+ props: {
+ loadKey: {
+ // 鏄惁鍔犺浇formRules瀛楁閰嶇疆鐨勬暟鎹簮
+ type: Boolean,
+ default: true
+ },
+ width: {
+ // 琛ㄥ崟瀹藉害
+ type: Number,
+ default: 0
+ },
+ labelWidth: {
+ // 琛ㄥ崟宸﹁竟label鏂囧瓧鏍囩鐨勫搴�
+ type: Number,
+ default: 100
+ },
+ formRules: {
+ // 琛ㄥ崟閰嶇疆瑙勫垯锛屽瀛楁绫诲瀷锛屾槸鍚﹀繀濉�
+ type: Array,
+ default: []
+ },
+ formFields: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ editor: {
+ // 2021.01.16缂栬緫鍣ㄤ俊鎭� {uploadImgUrl:"",upload:null//涓婁紶鏂规硶}
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ size: {
+ type: String, //large / default / small
+ default: 'default'
+ },
+ select2Count: {
+ //瓒呭嚭鏁伴噺鏄剧ずselect2缁勪欢
+ type: Number,
+ default: 2000
+ }
+ },
+ computed: {
+ rules() {
+ let ruleResult = {};
+ this.formRules.forEach((option, xIndex) => {
+ option.forEach((item) => {
+ ruleResult[item.field] = [this.getRule(item, this.formFields)];
+ });
+ });
+ if (this.$refs.volform) {
+ setTimeout(() => {
+ this.$refs.volform.clearValidate();
+ }, 100);
+ }
+ return ruleResult;
+ }
+ },
+ setup(props, context) {
+ const { appContext, proxy } = getCurrentInstance();
+ const remoteCall = ref(true);
+ const span = ref(1);
+ const rangeFields = reactive([]);
+ const volform = ref(null);
+ const numberFields = reactive([]);
+ onMounted(() => {});
+ const initFormRules = (init) => {
+ if (props.loadKey) {
+ initSource();
+ }
+ props.formRules.forEach((row, xIndex) => {
+ if (row.length > span.value) span.value = row.length;
+ let _count = 0,
+ _size = 0;
+ row.forEach((x) => {
+ if (x.colSize > 0) {
+ _size = _size + x.colSize;
+ _count++;
+ }
+ });
+ if (_count > 0 && row.length - _count > 0) {
+ let _cellSize = (12 - _size) / (row.length - _count);
+ row.forEach((x) => {
+ if (!x.colSize) {
+ x.colSize = _cellSize;
+ }
+ });
+ }
+ row.forEach((item, yIndex) => {
+ if (item.type == 'number') {
+ numberFields.push(item.field);
+ }
+ // 鐩墠鍙敮鎸乻elect鍗曢�夎繙绋嬫悳绱紝remote杩滅▼浠庡悗鍙板瓧鍏告暟鎹簮杩涜鎼滅储锛寀rl浠庢寚瀹氱殑url鎼滅储
+ if (item.remote || item.url) {
+ // item.remoteData = [];
+ item.loading = false;
+ item.point = { x: xIndex, y: yIndex };
+ }
+ // 鍒濆鍖栦笂浼犳枃浠朵俊鎭�
+ initUpload(item, init);
+ // 鍒濆鍖栨暟鎹簮绌哄璞�
+ if (item.dataKey) {
+ // 涓嬫媺妗嗛兘寮哄埗璁剧疆涓哄瓧绗︿覆绫诲瀷
+ item.columnType = 'string';
+ if (!item.data) {
+ item.data = [];
+ }
+ }
+
+ if (item.range || item.type == 'range') {
+ if (
+ !(props.formFields[item.field] instanceof Array) ||
+ props.formFields[item.field].length != 2
+ ) {
+ props.formFields[item.field] = ['', ''];
+ }
+ rangeFields.push(item.field);
+ }
+ });
+ });
+ };
+
+ const initSource = () => {
+ let keys = [],
+ binds = [];
+ // 鍒濆鍖栧瓧鍏告暟鎹簮
+ props.formRules.forEach((item) => {
+ item.forEach((x) => {
+ if (x.dataKey && (!x.data || x.data.length == 0) && !x.remote) {
+ x.data = [];
+ binds.push({ key: x.dataKey, data: x.data, type: x.type });
+ if (keys.indexOf(x.dataKey) == -1) {
+ keys.push(x.dataKey);
+ }
+ }
+ });
+ });
+
+ if (keys.length == 0) return;
+ appContext.config.globalProperties.http
+ .post('/api/Sys_Dictionary/GetVueDictionary', keys)
+ .then((dic) => {
+ bindOptions(dic, binds);
+ proxy.$emit('dicInited', dic);
+ });
+ };
+ const bindOptions = (dic, binds) => {
+ dic.forEach((d) => {
+ if (d.data.length > props.select2Count) {
+ if (
+ !binds.some((x) => {
+ return x.key == d.dicNo && x.type == 'cascader';
+ })
+ ) {
+ d.data.forEach((item) => {
+ item.label = item.value;
+ item.value = item.key;
+ });
+ }
+ }
+ binds.forEach((x) => {
+ if (x.key != d.dicNo) return true;
+ // 濡傛灉鏈夋暟鎹殑鍒欎笉鏌ヨ
+ if (x.data.length > 0) return true;
+ //2022.03.13澧炲姞绾ц仈鏁版嵁婧愯嚜鍔ㄨ浆鎹�
+ if (x.type == 'cascader' || x.type == 'treeSelect') {
+ let _data = JSON.parse(JSON.stringify(d.data));
+ let cascaderArr = appContext.config.globalProperties.base.convertTree(
+ _data,
+ (node, data, isRoot) => {
+ if (!node.inited) {
+ node.inited = true;
+ node.label = node.value;
+ node.value = node.key;
+ }
+ }
+ );
+ props.formRules.forEach((option) => {
+ option.forEach((item) => {
+ if (item.dataKey == x.key) {
+ item.orginData = x.data;
+ item.data = cascaderArr;
+ }
+ });
+ });
+ } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) {
+ let source = d.data,
+ newSource = new Array(source.length);
+ for (let index = 0; index < source.length; index++) {
+ newSource[index] = {
+ key: source['key'] + '',
+ value: source['value']
+ };
+ }
+ x.data.push(...newSource);
+ } else {
+ x.data.push(...d.data);
+ }
+ });
+ });
+ };
+
+ const initUpload = (item, init) => {
+ if (!init) return;
+ if (
+ ['img', 'excel', 'file'].indexOf(item.type != -1) ||
+ item.columnType == 'img'
+ ) {
+ // 鍙槸娌¤缃槸鍚﹁嚜鍔ㄤ笂浼犵殑锛岄粯璁ら兘鏄�夋嫨鏂囦欢鍚庤嚜鍔ㄤ笂浼�
+ if (!item.hasOwnProperty('autoUpload')) {
+ item.autoUpload = true;
+ }
+ if (!item.hasOwnProperty('fileList')) {
+ item.fileList = true;
+ }
+ if (!item.hasOwnProperty('downLoad')) {
+ item.downLoad = true;
+ }
+ if (!item.removeBefore) {
+ item.removeBefore = (index, file, files) => {
+ return true;
+ };
+ }
+ if (!item.fileClick) {
+ item.fileClick = (index, file, files) => {
+ return true;
+ };
+ }
+ if (!item.onChange) {
+ item.onChange = (files) => {
+ return true;
+ };
+ }
+ if (!item.uploadAfter) {
+ item.uploadAfter = (result, files) => {
+ return true;
+ };
+ }
+ if (!item.uploadBefore) {
+ item.uploadBefore = (files) => {
+ return true;
+ };
+ }
+ }
+ };
+ const validate =async (callback) => {
+ let result = true;
+ await volform.value.validate((valid) => {
+ if (!valid) {
+ appContext.config.globalProperties.$message.error('鏁版嵁楠岃瘉鏈�氳繃!');
+ result = false;
+ } else if (typeof callback === 'function') {
+ try {
+ callback(valid);
+ } catch (error) {
+ let msg = `琛ㄥ崟楠岃瘉鍥炶皟鏂规硶寮傚父锛�${error.message}`;
+ appContext.config.globalProperties.$message.error(msg);
+ console.log(msg);
+ }
+ }
+ });
+ return result;
+ };
+
+ initFormRules(true);
+ return {
+ remoteCall,
+ span,
+ rangeFields,
+ numberFields,
+ validate,
+ volform
+ // initFormRules,
+ // initSource
+ };
+ },
+ created() {
+ this.formRules.forEach((rules) => {
+ rules.forEach((option) => {
+ if (option.type == 'treeSelect' && option.multiple === undefined) {
+ option.multiple = true;
+ }
+ });
+ });
+ },
+
+ data() {
+ return {
+ // remoteCall: true,
+ defaultImg: new URL('@/assets/imgs/error-img.png', import.meta.url).href
+ // errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"'
+ // span: 1,
+ // rangeFields: [],
+ };
+ },
+ methods: {
+ getColWidth(item) {
+ if (item.itemStyle) {
+ return item.itemStyle;
+ }
+ //2021.08.30 澧炲姞鍔ㄦ�佽绠楄〃鍗曞搴�
+ let _span = 0;
+ this.formRules.forEach((row, xIndex) => {
+ //2022.05.06 杩藉姞琛ㄥ崟涓殣钘忕殑鍏冪礌涓嶅弬涓庡姩鎬佽绠楄〃鍗曞搴�
+ let rowLength = row.filter((item) => {
+ return !item.hidden;
+ }).length;
+ if (rowLength > _span) _span = rowLength;
+ });
+ let rate =
+ Math.round(((item.colSize || 12 / _span) / 0.12) * colPow, 10.0) / colPow;
+ // if (item.colSize) return rate.toFixed(3);
+ // return rate.toFixed(3);
+ return {width:rate.toFixed(3)+'%'};
+ // return (100 - rate).toFixed(3);
+ },
+ previewImg(url) {
+ this.base.previewImg(url, this.http.ipAddress);
+ },
+ getSrc(path) {
+ if (!path) return;
+ if (!this.base.isUrl(path) && path.indexOf('.') != -1) {
+ return this.http.ipAddress + path;
+ }
+ return path;
+ },
+ // 鏄惁涓哄浘鐗囨枃浠剁瓑鏍煎紡骞跺瀛楁鐨勮浆鎹㈡垚鏁扮粍锛歔{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}]
+ isFile(item, formFields) {
+ if (
+ item.type == 'img' ||
+ item.columnType == 'img' ||
+ item.type == 'excel' ||
+ item.type == 'file'
+ ) {
+ this.convertFileToArray(item, formFields);
+ return true;
+ }
+ return false;
+ },
+ isReadonlyImgFile(item, formFields) {
+ if ((item.disabled || item.readonly) && this.isFile(item, formFields)) {
+ return true;
+ }
+ return false;
+ },
+ convertFileToArray(item, formFields) {
+ if (!item.maxFile) {
+ item.maxFile = 1; // 榛樿鍙兘涓婁紶涓�涓枃浠讹紝鍙互鍦╫nInit涓缃�
+ }
+
+ let fileInfo = formFields[item.field];
+ if (fileInfo instanceof Array) {
+ return;
+ }
+ if (fileInfo === null || fileInfo === undefined) {
+ formFields[item.field] = [];
+ return;
+ }
+ // 灏嗕互閫楀彿闅斿紑鐨勬枃浠跺垎鍓叉垚鏁扮粍127.0.0.1/aa/1.jpg,灏�127.0.0.1/aa/2.jpg
+ if (typeof fileInfo === 'string') {
+ if (fileInfo.trim() === '') {
+ formFields[item.field] = [];
+ return;
+ }
+ // 濡傛灉鏂囦欢璺緞鏄瓧绗︿覆锛屽垯浣跨敤锛屾媶鍒�
+ fileInfo = fileInfo.replace(/\\/g, '/');
+ let files = fileInfo.split(',');
+ formFields[item.field] = [];
+ for (let index = 0; index < files.length; index++) {
+ let file = files[index];
+ let splitFile = file.split('/');
+ formFields[item.field].push({
+ name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file,
+ path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file,
+ });
+ }
+ }
+ },
+ dowloadFile(file) {
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken()
+ },
+ this.http.ipAddress
+ );
+ },
+ validatorPhone(ruleOption, value, callback) {
+ if (!ruleOption.required && !value && value != '0') {
+ return callback();
+ }
+ if (!rule.phone.test((value || '').trim())) {
+ return callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'));
+ }
+ callback();
+ },
+ validatorPwd(ruleOption, value, callback) {
+ if (!ruleOption.required && !value && value != '0') {
+ return callback();
+ }
+ if ((value + '').trim().length < 6) {
+ return callback(new Error('瀵嗙爜闀垮害涓嶈兘灏忎簬6浣�'));
+ }
+ callback();
+ },
+ convertArrayValue(data, val) {
+ // 2020.12.13澧炲姞琛ㄥ崟澶氶�夊彧杞崲瀛楀吀
+ // 缂栬緫澶氶�塼able鏄剧ず
+ //2023.04.20淇鍙涓簂abel鏃跺師鏁版嵁琚瓧鍏告浛鎹簡鐨勯棶棰�
+ let valArr = Array.isArray(val)
+ ? val.map((x) => {
+ return x;
+ })
+ : val.split(',');
+ for (let index = 0; index < valArr.length; index++) {
+ var _item = data.find((x) => {
+ return x.key && x.key != '0' && x.key + '' == valArr[index] + '';
+ });
+ if (_item) {
+ valArr[index] = _item.value;
+ }
+ }
+ return valArr.join(',');
+ },
+ getText(formFields, item) {
+ // 2019.10.24淇琛ㄥ崟select缁勪欢涓哄彧璇荤殑灞炴�ф椂娌℃湁缁戝畾鏁版嵁婧�
+ let text = formFields[item.field];
+ if (typeof text === 'function') return text(formFields);
+ if (text === 'null' || text === '' || text === null || text === undefined)
+ return '--';
+ //2021.03.02澧炲姞鍙鏃舵棩鏈熷鐞�
+ if (item.type == 'date') {
+ return text.replace('T', ' ').split(' ')[0];
+ }
+ //2021.03.31淇琛ㄥ崟switch鍙鏃舵病鏈夎浆鎹㈠�肩殑闂
+ if (item.type == 'switch') {
+ return text ? '鏄�' : '鍚�';
+ }
+ if (!item.data) return text;
+ if (item.type == 'selectList' || item.type == 'checkbox') {
+ return this.convertArrayValue(item.data, text);
+ }
+ var _item = item.data.find((x) => {
+ return x.key == text;
+ });
+ return _item ? _item.value : text;
+ },
+ onClear(item, formFields) {
+ // 杩滅▼select鏍囩娓呯┖閫夐」
+ item.data.splice(0);
+ // console.log(2);
+ },
+ onChange(item, value) {
+ if (item.onChange && typeof item.onChange === 'function') {
+ item.onChange(value, item);
+ }
+ },
+ onRemoteChange(item, value) {
+ // 绗簩娆℃墦寮�鏃讹紝榛樿鍊兼垚浜唘ndefined锛屽緟鏌iewgrid涓噸缃唬鐮�
+ if (value == undefined && item.data.length > 0) {
+ this.formFields[item.field] = item.data[0].key;
+ // console.log('undefined');
+ }
+ this.remoteCall = false;
+ if (item.onChange && typeof item.onChange === 'function') {
+ item.onChange(value, item);
+ }
+ },
+ getData(item) {
+ return item.data;
+ },
+
+ // 杩滅▼鎼滅储(鎵撳紑寮瑰嚭妗嗘椂搴旇绂佹鎼滅储)
+ remoteSearch(item, formFields, val) {
+ if (!item.remote && !item.url) {
+ return;
+ }
+ if (
+ val == '' ||
+ (item.data.length == 1 &&
+ (val == item.data[0].key || val == item.data[0].value))
+ ) {
+ return;
+ }
+ // 寮瑰嚭妗嗘垨鍒濆鍖栬〃鍗曟椂缁檇ata璁剧疆鏁扮粍榛樿鍊�2
+ // 2020.09.26淇杩滅▼鎼滅储鑷畾涔塽rl涓嶈捣浣滅敤鐨勯棶棰�
+ let url;
+ if (typeof item.url === 'function') {
+ url = item.url(val, item.dataKey, item);
+ } else {
+ url =
+ (item.url || '/api/Sys_Dictionary/GetSearchDictionary') +
+ '?dicNo=' +
+ item.dataKey +
+ '&value=' +
+ val;
+ }
+ this.http.post(url).then((dicData) => {
+ //this.$set(item, "loading", false);
+ item.loading = false;
+ item.data = dicData;
+ this.formRules[item.point.x].splice(item.point.y, 1, item);
+ });
+ },
+ getObject(date) {
+ if (typeof date === 'object') {
+ return date;
+ }
+ return new Date(date);
+ },
+ reset(sourceObj) {
+ // 閲嶇疆琛ㄥ崟鏃讹紝绂佺敤杩滅▼鏌ヨ
+ this.$refs['volform'].resetFields();
+ if (this.rangeFields.length) {
+ this.rangeFields.forEach((key) => {
+ this.formFields[key].splice(0);
+ this.formFields[key] = [null, null];
+ });
+ }
+ if (!sourceObj) return;
+ for (const key in this.formFields) {
+ if (sourceObj.hasOwnProperty(key)) {
+ this.formFields[key] = sourceObj[key];
+ if (this.numberFields.indexOf(key) != -1) {
+ this.formFields[key] = sourceObj[key] * 1 || 0;
+ }
+ }
+ }
+ // this.remoteCall = true;
+ },
+
+ fileOnChange(files, item) {
+ this.$refs.volform.clearValidate(item.field);
+ if (item.onChange) {
+ return item.onChange(files);
+ }
+ return true;
+ },
+ isReadonly(item) {
+ return item.readonly || item.disabled;
+ },
+ getRule(item, formFields) {
+ //2021.07.17澧炲姞鍙琛ㄥ崟涓嶉獙璇�
+ //range涓巗wtich鏆傛椂涓嶅仛鏍¢獙
+ if (
+ // item.readonly ||
+ // item.disabled ||
+ item.type == 'switch' ||
+ item.type == 'range'
+ )
+ return { required: false };
+ // 鐢ㄦ埛璁剧疆鐨勮嚜瀹氫箟鏂规硶
+ if (item.validator && typeof item.validator === 'function') {
+ return {
+ validator: (rule, val, callback) => {
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ let message = item.validator(rule, val);
+ if (message) return callback(new Error(message + ''));
+ return callback();
+ },
+ required: item.required,
+ trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur'
+ };
+ }
+ if (['img', 'excel', 'file'].indexOf(item.type) != -1) {
+ return {
+ validator: (rule, val, callback) => {
+ //2021.09.05绉婚櫎鏂囦欢涓婁紶榛樿蹇呭~
+ if (
+ item.required &&
+ !this.isReadonly(item) &&
+ (!val || !val.length)
+ ) {
+ return callback(
+ new Error(item.type == 'img' ? '璇蜂笂浼犵収鐗�' : '璇蜂笂浼犳枃浠�')
+ );
+ }
+ return callback();
+ },
+ required: item.required,
+ trigger: 'change'
+ };
+ }
+ // 璁剧疆鏁板瓧鐨勬渶澶у�兼皯鏈�灏忓��
+ if (
+ item.type == 'number' ||
+ item.columnType == 'number' ||
+ item.columnType == 'int' ||
+ item.type == 'decimal'
+ ) {
+ // 濡傛灉鏄繀濉」鐨勬暟瀛楋紝璁剧疆涓�涓粯璁ゆ渶澶т笌鏈�鍊煎皬
+ // if (item.required && typeof item.min !== 'number') {
+ // item.min = -9999999; //item.type == "decimal" ? 0.1 : 1;
+ // }
+
+ return {
+ required: item.required,
+ message: item.title + '鍙兘鏄暟瀛�',
+ title: item.title,
+ trigger: 'blur',
+ min: item.min,
+ max: item.max,
+ type: item.columnType || item.type,
+ validator: (ruleObj, value, callback) => {
+ if (!ruleObj.min && !ruleObj.max) {
+ if (ruleObj.required) {
+ if ((!value && value != '0') || !rule.decimal.test(value)) {
+ return callback(new Error('鍙兘鏄暟瀛�'));
+ }
+ }
+ return callback();
+ }
+ if (this.isReadonly(item)) return callback();
+ if (ruleObj.type == 'number') {
+ if (!rule.number.test(value)) {
+ ruleObj.message = ruleObj.title + '鍙兘鏄暣鏁�';
+ return callback(new Error(ruleObj.message));
+ }
+ } else {
+ if (!rule.decimal.test(value)) {
+ ruleObj.message = ruleObj.title + '鍙兘鏄暟瀛�';
+ return callback(new Error(ruleObj.message));
+ }
+ }
+ if (
+ ruleObj.min !== undefined &&
+ typeof ruleObj.min === 'number' &&
+ value < ruleObj.min
+ ) {
+ ruleObj.message = ruleObj.title + '涓嶈兘灏忎簬' + ruleObj.min;
+ return callback(new Error(ruleObj.message));
+ }
+ if (
+ ruleObj.max !== undefined &&
+ typeof ruleObj.max === 'number' &&
+ value > ruleObj.max
+ ) {
+ ruleObj.message = ruleObj.title + '涓嶈兘澶т簬' + ruleObj.max;
+ return callback(new Error(ruleObj.message));
+ }
+ return callback();
+ }
+ };
+ }
+
+ // 鎵嬫満銆佸瘑鐮侀獙璇�
+ if (item.type == 'password' || item.type == 'phone') {
+ return {
+ validator:
+ item.type == 'phone' ? this.validatorPhone : this.validatorPwd,
+ required: item.required,
+ trigger: 'blur'
+ };
+ }
+
+ if (!item.required && item.type != 'mail') return { required: false };
+
+ if (!item.hasOwnProperty('type')) item.type = 'text';
+
+ if (inputTypeArr.indexOf(item.type) != -1) {
+ let message =
+ item.title +
+ (item.type == 'mail' ? '蹇呴』鏄竴涓偖绠卞湴鍧�' : '涓嶈兘涓虹┖');
+ let type = item.type == 'mail' ? 'email' : types[item.columnType];
+ let _rule = {
+ required: item.required,
+ message: message,
+ trigger: 'blur',
+ type: type,
+ validator: (ruleObj, value, callback) => {
+ if (
+ !this.isReadonly(item) &&
+ (value === '' || value === undefined || value === null)
+ ) {
+ return callback(new Error(ruleObj.message));
+ }
+ return callback();
+ }
+ };
+ if (item.type == 'mail') {
+ _rule.validator = undefined;
+ return _rule;
+ }
+ if (item.min) {
+ _rule.min = item.min;
+ _rule.message = item.title + '鑷冲皯' + item.min + '涓瓧绗�!';
+ }
+ if (item.max) {
+ return [
+ _rule,
+ {
+ max: item.max,
+ required: true,
+ message: item.title + '鏈�澶�' + item.max + '涓瓧绗�!',
+ trigger: 'blur'
+ }
+ ];
+ }
+ return _rule;
+ }
+
+ if (item.type == 'radio') {
+ return {
+ required: item.required,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ type: 'string'
+ };
+ }
+ if (
+ item.type == 'date' ||
+ item.type == 'datetime' ||
+ item.type == 'year' ||
+ item.type == 'month' ||
+ item.type == 'time'
+ ) {
+ return {
+ required: true,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ type: item.range ? 'array' : 'string',
+ validator: (rule, val, callback) => {
+ if (this.isReadonly(item)) return callback();
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ if (!val || (item.range && !val.length)) {
+ return callback(new Error('璇烽�夋嫨鏃ユ湡'));
+ }
+ return callback();
+ }
+ };
+ }
+
+ if (item.type == 'cascader') {
+ return {
+ type: 'array',
+ required: true,
+ min: item.min || 1,
+ // message: "璇烽�夋嫨" + item.title,
+ trigger: 'change',
+ validator: (rule, val, callback) => {
+ if (this.isReadonly(item)) return callback();
+ // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+ let _arr = this.formFields[item.field];
+ if (!_arr || !_arr.length) {
+ return callback(new Error('璇烽�夋嫨' + item.title));
+ }
+ return callback();
+ }
+ };
+ }
+
+ if (
+ ['select', 'selectList', 'checkbox', 'cascader', 'treeSelect'].indexOf(
+ item.type
+ ) != -1
+ ) {
+ let _rule = {
+ type: item.type == 'select' ? 'string' : 'array',
+ required: true,
+ min: item.min || 1,
+ message: '璇烽�夋嫨' + item.title,
+ trigger: 'change',
+ validator: (rule, value, callback) => {
+ if (this.isReadonly(item)) return callback();
+ //2021.11.27淇澶氶�夋病鏈夋彁绀虹殑闂
+ if (value == undefined || value === '') {
+ return callback(new Error(rule.message));
+ } else if (
+ (item.type == 'checkbox' ||
+ item.type == 'selectList' ||
+ item.type == 'treeSelect') &&
+ (!(value instanceof Array) || !value.length)
+ ) {
+ return callback(new Error(rule.message));
+ }
+ return callback();
+ }
+ };
+
+ if (_rule.max) {
+ _rule.nax = item.max;
+ _rule.message = '鏈�澶氬彧鑳介�夋嫨' + item.max + '椤�';
+ }
+ return _rule;
+ }
+ return {};
+ },
+ compareDate(date1, date2) {
+ if (!date2) {
+ return true;
+ }
+ return (
+ date1.valueOf() <
+ (typeof date2 == 'number' ? date2 : new Date(date2).valueOf())
+ );
+ },
+ getDateOptions(date, item) {
+ //2021.07.17璁剧疆鏃堕棿鍙�夎寖鍥�
+ if ((!item.min && !item.max) || !date) {
+ return false;
+ }
+ if (item.min && item.min.indexOf(' ') == -1) {
+ //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+ item.min = item.min + ' 00:00:000';
+ }
+ return (
+ this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+ );
+ },
+ getDateFormat(item) {
+ if(item.format){
+ return item.format;
+ }
+ if (item.type == 'year') {
+ return 'YYYY';
+ }
+ if (item.type == 'month') {
+ return 'YYYY-MM';
+ }
+ // if (item.type=='time') {
+ // return 'HH:mm:ss'
+ // }
+ //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+ return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss';
+ },
+ dateRangeChange(val, item) {
+ if (!val) {
+ this.$emit('update:formFields');
+ return;
+ }
+ item.onChange && item.onChange(val);
+ },
+ onKeyPress($event, item) {
+ if ($event.keyCode == 13) {
+ return;
+ }
+ item.onKeyPress&&item.onKeyPress($event);
+ },
+ filterMethod(value, data) {
+ return data.label.includes(value);
+ },
+ getNode( label,node, data){
+ console.log(label)
+ },
+ getShortcuts() {
+ const end = new Date()
+ return [
+ { name: '浠婂ぉ', value: 0 },
+ { name: '鏄ㄥぉ', value: 1 },
+ { name: '杩戜笁澶�', value: 2 },
+ { name: '杩戜竴鍛�', value: 6 },
+ { name: '杩戜竴鏈�', m: true, value: 1 },
+ { name: '杩戜笁鏈�', m: true, value: 3 },
+ { name: '杩戝崐骞�', m: true, value: 6 },
+ { name: '杩戜竴骞�', m: true, value: 12 }
+ ].map((x) => {
+ return {
+ text: this.$ts(x.name),
+ value: () => {
+ const start = new Date()
+ if (x.m) {
+ start.setMonth(start.getMonth() - x.value)
+ return [start.getTime(), end]
+ }
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * x.value)
+ return [start, end]
+ }
+ }
+ })
+ },
+ handleImageError($e) {
+ $e.target.src = this.defaultImg
+ }
+ }
+});
+</script>
+<style lang="less" scoped>
+.el-form-item {
+ margin-right: 0;
+}
+.el-form-item {
+ .form-imgs {
+ img {
+ float: left;
+ cursor: pointer;
+ object-fit: cover;
+ margin: 0 10px 10px 0;
+ width: 65px;
+ height: 65px;
+ border: 1px solid #c7c7c7;
+ overflow: hidden;
+ border-radius: 5px;
+ box-sizing: content-box;
+ }
+ }
+}
+.el-form-item ::v-deep(.el-form-item__label) {
+ padding: 0 0px 0 4px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.el-form-item ::v-deep(.el-range-separator) {
+ text-align: center;
+ width: 13px;
+ padding: 0px 1px;
+ font-size: 12px;
+}
+.el-form-item ::v-deep(.el-range__close-icon) {
+ margin-right: -10px;
+}
+.form-item-extra {
+ > *:first-child {
+ flex: 1;
+ }
+ display: flex;
+ .form-extra {
+ padding-left: 7px;
+ line-height: 36px;
+ }
+}
+.vol-form-item {
+ width: 100%;
+}
+.vol-form-item ::v-deep(.el-form-item__content) {
+ display: unset !important;
+}
+.vol-form-item ::v-deep(.el-input--large .el-input__inner) {
+ height: 34px !important;
+}
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__increase) {
+ border-top: 1px solid #d4d4d4;
+}
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__decrease) {
+ border-bottom: 1px solid #d4d4d4;
+}
+.vol-form-item ::v-deep(.el-input--large.el-date-editor) {
+ height: 36px;
+}
+.v-date-range ::v-deep(.el-input__prefix) {
+ display: none;
+}
+.v-date-range ::v-deep(.el-input__inner) {
+ padding: 0;
+}
+
+.el-form-item ::v-deep(.el-checkbox) {
+ margin-right: 8px;
+}
+.el-form-item ::v-deep(.el-checkbox .el-checkbox__label) {
+ padding-left: 5px;
+}
+.el-form-item ::v-deep(textarea) {
+ font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
+ 'Microsoft YaHei', '寰蒋闆呴粦', Arial, sans-serif !important;
+}
+.el-form-item ::v-deep(.el-select .el-select__tags > span) {
+ display: flex;
+}
+.el-form-item ::v-deep(.el-select-v2__combobox-input) {
+ height: 30px;
+}
+.el-form-item ::v-deep(.el-select__tags) {
+ overflow: hidden;
+ height: 30px;
+}
+.el-form-item ::v-deep(.el-select-tags-wrapper) {
+ position: absolute;
+}
+
+.el-form-item {
+ vertical-align: top !important;
+}
+.form-file-list {
+ a {
+ color: #3ea9ff;
+ }
+ a:hover {
+ cursor: pointer;
+ color: #0281e7;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue"
new file mode 100644
index 0000000..f4d07ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue"
@@ -0,0 +1,1157 @@
+<template>
+ <div class="drag-container">
+ <!-- @start="onStart" -->
+ <div class="drag-left">
+ <div class="left-title">缁勪欢鍒楄〃</div>
+ <draggable
+ v-model="components"
+ @end="end1"
+ class="left-draggable-item"
+ :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
+ animation="300"
+ @start="onStart"
+ :sort="false"
+ :move="onMove1"
+ >
+ <transition-group>
+ <div
+ :class="item.id == 1 ? 'item forbid' : 'item'"
+ v-for="item in components"
+ :key="item.id"
+ >
+ <i :class="item.icon"></i> {{ item.name }}
+ </div>
+ </transition-group>
+ </draggable>
+ <div class="example">
+ <div @click="example1">绀轰緥涓�<i class="el-icon-arrow-right"></i></div>
+ <div @click="example2">绀轰緥浜�<i class="el-icon-arrow-right"></i></div>
+ <div @click="example3">绀轰緥涓�<i class="el-icon-arrow-right"></i></div>
+ </div>
+ </div>
+
+ <div class="drag-center">
+ <div class="center-top">
+ <span>
+ <!-- <i class="el-icon-warning-outline"></i>楂樻晥鐨勮〃鍗曢厤缃� -->
+ </span>
+ <el-button type="primary" size="mini" plain @click="save"
+ ><i class="el-icon-check"> </i>淇濆瓨</el-button
+ >
+ <el-button type="primary" size="mini" plain @click="preview(true)"
+ ><i class="el-icon-view"> </i>棰勮</el-button
+ >
+ <el-button type="primary" size="mini" plain @click="download"
+ ><i class="el-icon-view"> </i>涓嬭浇</el-button
+ >
+ <el-button type="primary" @click="clearItems" size="mini" plain
+ ><i class="el-icon-delete"> </i>娓呯┖</el-button
+ >
+ <a
+ style="margin-left: 15px"
+ href="http://v2.volcore.xyz/document/api"
+ target="_blank"
+ >璁捐鍣ㄥ熀浜庢鏋秜olform銆乿oltable銆乿olupload銆乿olbox瀹氬埗寮�鍙�</a
+ >
+ </div>
+ <div>
+ <el-alert
+ title="鍏充簬琛ㄥ崟璁捐鍣�"
+ type="success"
+ :show-icon="true"
+ :closable="false"
+ >
+ <div>
+ 1銆佽〃鍗曡璁″櫒鍩轰簬draggable寮�鍙�,涓烘湰妗嗘灦鑷畾涔夐〉闈㈠姛鑳界殑琛ュ厖,妗嗘灦浠嶄互鍙鍖栦唬鐮佺敓鎴愬櫒涓烘牳蹇�
+ </div>
+ <div>
+ 2銆佹敮鎸佸彲瑙嗗寲璁捐1瀵�1銆�1瀵瑰鍙婅〃鍗曚笅鎷夋鑷姩缁戝畾銆乼able鑷姩鍔犺浇鏁版嵁(鍒嗛〉銆佺紪杈�)銆佽嚜鍔ㄤ笂浼犳枃浠躲�佸瘜鏂囨湰缂栬緫
+ </div>
+ </el-alert>
+ </div>
+ <el-scrollbar style="flex: 1">
+ <div class="tips" key="empty" v-show="!currentComponents.length">
+ 璇峰皢宸﹁竟缁勪欢鎷栧叆姝ゅ鍣ㄤ腑
+ </div>
+ <el-form label-position="top">
+ <draggable
+ class="draggable-container"
+ v-model="currentComponents"
+ @end="end2"
+ animation="300"
+ :move="onMove"
+ group="componentsGroup"
+ >
+ <transition-group class="drag-center-item">
+ <div
+ class="item2"
+ :class="{ actived: index === currentIndex }"
+ @click="itemClick(item, index)"
+ :style="{ width: item.width + '%' }"
+ v-for="(item, index) in currentComponents"
+ :key="index"
+ >
+ <i
+ class="el-icon-document-copy"
+ @click.stop="copyItem(item)"
+ ></i>
+ <i class="el-icon-delete" @click.stop="removeItem(index)"> </i>
+ <el-form-item
+ :required="item.required"
+ label-position="top"
+ style="width: 100%"
+ :label="item.type == 'line' ? '' : item.name"
+ >
+ <el-col>
+ <!-- <div></div> -->
+ <!-- {{ item.name }} -->
+ <el-input
+ v-if="item.type == 'text'"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="item.value"
+ :disabled="item.readonly"
+ size="medium"
+ ></el-input>
+ <el-input
+ v-else-if="item.type == 'textarea'"
+ type="textarea"
+ v-model="item.value"
+ :disabled="item.readonly"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ <el-date-picker
+ v-else-if="item.type == 'date'"
+ align="right"
+ v-model="item.value"
+ type="date"
+ :disabled="item.readonly"
+ size="medium"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
+ </el-date-picker>
+ <el-radio-group
+ :disabled="item.readonly"
+ v-else-if="item.type == 'radio'"
+ v-model="item.value"
+ >
+ <el-radio
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-radio>
+ <!-- <el-radio :label="1">鏄�</el-radio>
+ <el-radio :label="0">鍚�</el-radio> -->
+ </el-radio-group>
+
+ <el-checkbox-group
+ v-model="item.values"
+ :disabled="item.readonly"
+ style="width: 100%; display: inline-block"
+ v-else-if="item.type == 'checkbox'"
+ >
+ <el-checkbox
+ v-for="item in item.data"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-checkbox>
+ <!-- <el-checkbox label="澶嶉�夋 A"></el-checkbox>
+ <el-checkbox label="澶嶉�夋 B"></el-checkbox>
+ <el-checkbox label="澶嶉�夋 C"></el-checkbox> -->
+ </el-checkbox-group>
+
+ <el-select
+ style="width: 100%"
+ :disabled="item.readonly"
+ v-model="item.value"
+ size="medium"
+ v-else-if="item.type == 'select'"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <el-select
+ style="width: 100%"
+ :disabled="item.readonly"
+ v-model="item.values"
+ size="medium"
+ :multiple="true"
+ v-else-if="item.type == 'selectList'"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in item.data"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <el-cascader
+ :disabled="item.readonly"
+ style="width: 100%"
+ v-else-if="item.type == 'cascader'"
+ v-model="item.values"
+ :options="item.data"
+ @change="() => {}"
+ ></el-cascader>
+
+ <el-switch
+ :disabled="item.readonly"
+ v-model="item.value"
+ style="width: 100%"
+ v-else-if="item.type == 'switch'"
+ active-color="#13ce66"
+ inactive-color="#0e7ef3"
+ :active-value="1"
+ :inactive-value="0"
+ >
+ </el-switch>
+ <div class="col-line" v-else-if="item.type == 'line'">
+ {{ item.name }}
+ </div>
+
+ <vol-upload
+ v-else-if="
+ item.type == 'img' ||
+ item.type == 'excel' ||
+ item.type == 'file'
+ "
+ :fileInfo="item.fileInfo"
+ :url="item.url"
+ :img="item.type == 'img'"
+ :excel="item.type == 'excel'"
+ :multiple="item.multiple"
+ :max-size="item.maxSize"
+ :max-file="item.maxFile"
+ :autoUpload="item.autoUpload"
+ >
+ </vol-upload>
+ <vol-wang-editor
+ v-else-if="item.type == 'editor'"
+ :url="item.url"
+ v-model="item.value"
+ :height="item.height"
+ ></vol-wang-editor>
+
+ <vol-table
+ v-else-if="item.type == 'table'"
+ :url="item.url"
+ :load-key="true"
+ :index="item.edit"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :height="item.height"
+ :pagination-hide="true"
+ :column-index="item.columnIndex"
+ :ck="item.ck"
+ ></vol-table>
+ <el-button
+ @click="model = true"
+ v-else-if="item.type == 'box'"
+ type="primary"
+ size="small"
+ >{{ item.name }}</el-button
+ >
+ </el-col>
+ </el-form-item>
+ </div>
+ </transition-group>
+ </draggable>
+ </el-form>
+ </el-scrollbar>
+ </div>
+ <div class="drag-right">
+ <div class="left-title">缁勪欢灞炴��</div>
+ <div class="attr" v-show="currentIndex != -1">
+ <div class="attr-item">
+ <div class="text">瀛楁鍚嶇О</div>
+ <el-input size="medium" v-model="currentItem.name" />
+ </div>
+ <div class="attr-item">
+ <div class="text">瀛楁(鍞竴瀛楁)</div>
+ <el-input size="medium" v-model="currentItem.field" />
+ </div>
+ <div class="attr-item" v-show="currentItem.type == 'table'">
+ <div class="text">鍚庡彴杩斿洖鏁版嵁鎺ュ彛鍦板潃</div>
+ <el-input
+ size="medium"
+ placeholder="渚�:api/琛ㄥ悕/getPageData"
+ v-model="currentItem.url"
+ />
+ </div>
+ <div
+ class="attr-item"
+ v-show="
+ currentItem.type != 'table' && currentItem.hasOwnProperty('url')
+ "
+ >
+ <div class="text">涓婁紶鎺ュ彛鍦板潃(鍚庡彴鎺ュ彛)</div>
+ <el-input
+ size="medium"
+ placeholder="鍙敤妗嗘灦鍦板潃:api/琛ㄥ悕/upload"
+ v-model="currentItem.url"
+ />
+ <div class="text" style="margin-top: 10px">鏂囦欢澶у皬闄愬埗(M)</div>
+ <el-input size="medium" v-model="currentItem.maxSize" />
+ <div class="text" style="margin-top: 10px">鏄惁澶氭枃浠朵笂浼�</div>
+ <el-switch
+ v-model="currentItem.multiple"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ <div class="text" style="margin-top: 10px">鏄惁鑷姩涓婁紶</div>
+ <el-switch
+ v-model="currentItem.autoUpload"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ <div class="attr-item" v-show="currentItem.data">
+ <div class="text">鏁版嵁婧�(涓嬫媺妗嗙粦瀹氳缃腑缁存姢)</div>
+
+ <!-- dicList -->
+ <el-select
+ style="width: 100%"
+ v-model="currentItem.key"
+ size="medium"
+ @change="dicChange"
+ placeholder="璇烽�夋嫨鏁版嵁婧愬瓧鍏�"
+ >
+ <el-option
+ v-for="item in dicList"
+ :key="item.key"
+ :label="item.value"
+ :value="item.key"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="attr-item" v-show="currentItem.type != 'table'">
+ <div class="text">鏍囩瀹藉害</div>
+ <el-slider
+ style="width: 90%"
+ :min="20"
+ v-model="colWidth"
+ :step="10"
+ show-stops
+ >
+ </el-slider>
+ </div>
+ <div class="attr-item attr2" v-show="currentItem.type != 'table'">
+ <div>
+ <div class="text">蹇呭~</div>
+ <el-switch
+ v-model="currentItem.required"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+
+ <div>
+ <!-- active-text="鏄�"
+ inactive-text="鍚�" -->
+ <div class="text">鍙</div>
+ <el-switch
+ v-model="currentItem.readonly"
+ style="width: 100%"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ </div>
+ <div v-show="currentItem.type == 'table'">
+ <div class="attr-item">
+ <div class="text">鏄惁浣跨敤閫夐」鍗�(tabs)</div>
+ <div>
+ <el-switch
+ v-model="currentItem.tabs"
+ style="width: 100%"
+ active-text="鏄�"
+ inactive-text="鍚�"
+ active-color="#13ce66"
+ inactive-color="rgb(165 165 165)"
+ :active-value="true"
+ :inactive-value="false"
+ >
+ </el-switch>
+ </div>
+ </div>
+ <div class="attr-item attr2">
+ <el-button
+ style="width: 100%"
+ @click="openTableModel"
+ type="primary"
+ size="medium"
+ >table閰嶇疆</el-button
+ >
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <vol-box
+ v-model="model"
+ :height="300"
+ :width="550"
+ :lazy="true"
+ title="寮瑰嚭妗�"
+ >
+ <template #content>
+ <div>寮瑰嚭妗嗗唴瀹�</div>
+ </template>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="mini" @click="model = false"
+ ><i class="el-icon-close"></i>鐐瑰嚮鍏抽棴</el-button
+ >
+ <el-button size="mini" @click="model = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+
+ <vol-box
+ v-model="previewModel"
+ :height="600"
+ :width="1300"
+ :lazy="true"
+ :padding="1"
+ :close="false"
+ title="棰勮"
+ >
+ <preview style="height:600px" :options="viewFormData"></preview>
+ </vol-box>
+
+ <vol-box
+ v-model="tableModel"
+ :height="600"
+ :width="1300"
+ :lazy="true"
+ :padding="0"
+ :title="currentItem.name"
+ >
+ <template #content>
+ <div style="height:600px" >
+ <el-alert title="鍏充簬table閰嶇疆" type="info" :closable="false" show-icon>
+ 姝ゅtable鏄妗嗘灦voltable鍩烘湰鎿嶄綔鐨勯厤缃�,濡傛灉闇�瑕佷簨浠惰Е鍙戙�佹暟鎹姞杞界瓑鏇村鍔熻兘锛岃鍦ㄧ敓鎴愬悗鐨勪唬鐮佹坊鍔犻渶瑕佺殑鍔熻兘锛屽畬鏁撮厤缃鏂囨。<a
+ href="http://v2.volcore.xyz/document/api"
+ style="color: #1e88e5; margin-left: 9px"
+ target="_blank"
+ >voltable</a
+ >
+ </el-alert>
+ <div class="btns">
+ <div class="btns-left">
+ 琛ㄦ牸榛樿鍔熻兘鎸夐挳锛�
+ <el-checkbox
+ v-for="item in currentItem.buttons"
+ :label="item.name"
+ :key="item.name"
+ >{{ item.name }}</el-checkbox
+ >
+ </div>
+ <div class="btns-right">
+ <el-button type="primary" size="mini" @click="addRow"
+ ><i class="el-icon-plus"></i>娣诲姞瀛楁</el-button
+ >
+ <el-button type="primary" size="mini" @click="delRow"
+ ><i class="el-icon-delete"></i>鍒犻櫎瀛楁</el-button
+ >
+ <el-button type="primary" size="mini" @click="sortRow"
+ ><i class="el-icon-sort"></i>閲嶆柊鎺掑垪</el-button
+ >
+ </div>
+ </div>
+ <vol-table
+ :load-key="true"
+ :tableData="currnetTableData"
+ :columns="currentTableOption"
+ :height="448"
+ ref="table"
+ :index="true"
+ :pagination-hide="true"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </div>
+ </template>
+ <template #footer>
+ <div style="text-align: center">
+ <el-button size="mini" @click="tableModel = false"
+ ><i class="el-icon-close"></i>鍏抽棴</el-button
+ >
+ <el-button type="primary" size="mini" @click="saveConfigOptions"
+ ><i class="el-icon-check"></i>淇濆瓨</el-button
+ >
+ </div>
+ </template>
+ </vol-box>
+</template>
+
+<script>
+import { h, resolveComponent } from "vue";
+// import draggable from "vuedraggable";
+import { VueDraggableNext } from "vue-draggable-next";
+import VolWangEditor from "@/components/editor/VolWangEditor.vue";
+import VolUpload from "./../VolUpload";
+import VolTable from "./../VolTable";
+import VolBox from "./../VolBox";
+import VolFormPreview from "./VolFormPreview";
+import { components, tableOption } from "./options";
+import { options1, options2, options3 } from "./formTemplate";
+import downloadForm from "./DownloadForm";
+export default {
+ props: {
+ userComponents: {
+ type: Array,
+ default: () => {
+ return [];
+ },
+ },
+ },
+ components: {
+ draggable: VueDraggableNext,
+ "vol-upload": VolUpload,
+ "vol-wang-editor": VolWangEditor,
+ "vol-table": VolTable,
+ "vol-box": VolBox,
+ preview: VolFormPreview,
+ },
+ data() {
+ return {
+ options:{},
+ options1: options1,
+ options2: options2,
+ options3: options3,
+ colWidth: 100,
+ currentIndex: -1,
+ currentItem: {},
+ currnetTableData: [],
+ currentTableOption: tableOption,
+ //瀹氫箟瑕佽鎷栨嫿瀵硅薄鐨勬暟缁�
+ components: components,
+ currentComponents: [],
+ dicList: [],
+ model: false,
+ tableModel: false,
+ previewModel: false,
+ viewFormData: { fields: {}, formOptions: [], tables: [] },
+ };
+ },
+ watch: {
+ colWidth(newVal) {
+ if (this.currentIndex != -1) {
+ this.currentComponents[this.currentIndex].width = newVal;
+ }
+ },
+ userComponents: {
+ handler(newVal) {
+ this.currentComponents = newVal;
+ },
+ immediate: true,
+ deep: true,
+ },
+ },
+ created() {
+ this.currentComponents = this.userComponents;
+ this.http
+ .post("api/Sys_Dictionary/GetBuilderDictionary", {}, false)
+ .then((x) => {
+ this.dicList = x.map((c) => {
+ return { key: c, value: c };
+ });
+ });
+ },
+ methods: {
+ getFormOptions(item) {
+ let _option = {};
+ _option.field = item.field;
+ _option.title = item.name;
+ _option.type = item.type;
+ _option.required = item.required;
+ _option.readonly = item.readonly;
+ if (item.type == "line") {
+ _option.title = "";
+ let title = item.name;
+ _option.render = (h) => {
+ return h(
+ "div",
+ {
+ style: {
+ "line-height": "25px",
+ "font-weight": "bold",
+ "margin-left": "15px",
+ "border-bottom": "1px solid #dadada",
+ },
+ },
+ title
+ //涔熷彲浠ュ湪杩欓噷鏀句竴浜涚粍浠讹紝渚嬪锛�
+ // resolveComponent("el-tooltip"),
+ // {
+ // content: "杩欓噷鏄彁绀虹殑鍐呭",
+ // props: { effect: "dark", placement: "top-start" },
+ // style: {},
+ // },
+ // [h("a", { style: { color: "#2a92ff" } }, "鎻愮ず淇℃伅")]
+ );
+ };
+ }
+ if (item.type == "editor") {
+ _option.height = item.height;
+ }
+ if (item.width == 100) {
+ _option.colSize = 12;
+ } else {
+ _option.colSize = (_option.width * 12) / 100;
+ }
+ if (["img", "excel", "file"].indexOf(item.type) != -1) {
+ _option.maxSize = item.maxSize;
+ _option.fileInfo = item.fileInfo;
+ _option.multiple = item.multiple;
+ _option.autoUpload = item.autoUpload;
+ _option.maxFile = item.maxFile;
+ }
+ if (
+ ["img", "excel", "file", "editor", "table"].indexOf(item.type) != -1
+ ) {
+ _option.url = item.url;
+ }
+ if (item.data) {
+ _option.data = item.data;
+ _option.dataKey = item.key;
+ }
+ return _option;
+ },
+ getLineFormOptions(index) {
+ let _index = index;
+ let endIndex = index;
+ let width = 0;
+ let _options = [];
+ for (index; index < this.filterCurrentComponents().length; index++) {
+ const item = this.currentComponents[index];
+ if (item.width + width <= 100) {
+ width = item.width + width;
+ endIndex = index;
+ _options.push(this.getFormOptions(item));
+ }
+ }
+ return { options: _options, index: _index, endIndex: endIndex };
+ },
+ filterCurrentComponents() {
+ return this.currentComponents.filter((x) => {
+ return x.type != "table";
+ });
+ },
+ setSpan() {},
+ preview(isPre) {
+ let _fields = {};
+ let _formOptions = [];
+ let endIndex = -1;
+ this.filterCurrentComponents().forEach((item, index) => {
+ if (item.hasOwnProperty("values")) {
+ _fields[item.field] = [];
+ } else {
+ _fields[item.field] = null;
+ }
+
+ if (item.width == 100) {
+ _formOptions.push([this.getFormOptions(item)]);
+ } else {
+ if (endIndex == -1) {
+ let lineOptions = this.getLineFormOptions(index);
+ endIndex = lineOptions.endIndex;
+ _formOptions.push(lineOptions.options);
+ endIndex--;
+ } else {
+ endIndex--;
+ }
+ }
+ // _fields[item.field] = null;xc
+ // let _option = {};
+ // _option.field = item.field;
+ // _option.title = item.name;
+ // _option.type = item.type;
+ // _option.required = item.required;
+ // _option.readonly = item.readonly;
+ // if (["img", "excel", "file"].indexOf(item.type) != -1) {
+ // _option.maxSize = item.maxSize;
+ // _option.fileInfo = item.fileInfo;
+ // _option.multiple = item.multiple;
+ // _option.autoUpload = item.autoUpload;
+ // _option.maxFile = item.maxFile;
+ // }
+ // if (
+ // ["img", "excel", "file", "editor", "table"].indexOf(item.type) != -1
+ // ) {
+ // _option.url = item.url;
+ // }
+ // if (item.data) {
+ // _option.data = item.data;
+ // _option.dataKey = item.key;
+ // }
+ // _formOptions.push(_option);
+ });
+ this.viewFormData.fields = _fields;
+ // console.log(JSON.stringify(_formOptions))
+ this.viewFormData.formOptions = _formOptions;
+ if (isPre) {
+ this.previewModel = true;
+ }
+ let tableIndex = 0;
+ let keys = [];
+ let tables = this.currentComponents
+ .filter((x) => {
+ return x.type == "table";
+ })
+ .map((m) => {
+ m.pagination = !m.url;
+ if (m.name == "琛ㄦ牸") {
+ tableIndex++;
+ }
+ return {
+ name: m.name + (m.name == "琛ㄦ牸" ? tableIndex : ""),
+ url: m.url,
+ tabs: m.tabs,
+ pagination: m.pagination,
+ buttons: m.buttons,
+ columns: m.columns.map((c) => {
+ let obj = {
+ title: c.title,
+ field: c.field,
+ hidden: !c.show,
+ width: c.width,
+ required: c.required,
+ };
+
+ if (c.dataSource) {
+ obj.bind = { key: c.dataSource, data: [] };
+ }
+ if (c.dataSource) {
+ keys.push(c.dataSource);
+ }
+ if (c.edit) {
+ if (!obj.bind) {
+ obj.bind = { key: "", data: [] };
+ }
+ obj.edit = { type: c.editType };
+ }
+ return obj;
+ }),
+ tableData: [{}, {}, {}],
+ };
+ });
+ this.viewFormData.tables = tables.filter((x) => {
+ return !x.tabs;
+ });
+ this.viewFormData.tabs = tables.filter((x) => {
+ return x.tabs;
+ });
+ this.getDicKeys(keys);
+ this.options = this.viewFormData;
+ },
+ getDicKeys(keys) {
+ if (!keys.length) {
+ return;
+ }
+ this.http
+ .post("api/Sys_Dictionary/GetVueDictionary", keys, true)
+ .then((result) => {
+ result.forEach((c) => {
+ this.viewFormData.tables.forEach((t) => {
+ let _option = t.columns.find((x) => {
+ return x.bind && x.bind.key == c.dicNo;
+ });
+ if (_option) {
+ _option.bind.data = c.data;
+ }
+ });
+ this.viewFormData.tabs.forEach((t) => {
+ let _option = t.columns.find((x) => {
+ return x.bind && x.bind.key == c.dicNo;
+ });
+ if (_option) {
+ _option.bind.data = c.data;
+ }
+ });
+ });
+ });
+ },
+ save() {
+ this.preview(false);
+ this.$emit("save", {
+ daraggeOptions: this.currentComponents,
+ formOptions: this.viewFormData,
+ });
+ },
+ download() {
+ this.preview(false);
+ downloadForm.call(this);
+ },
+ openTableModel() {
+ let dataSource = this.currentTableOption.find((x) => {
+ return x.field == "dataSource";
+ });
+ if (!dataSource.bind.data.length) {
+ dataSource.bind.data = this.dicList;
+ }
+ this.currnetTableData = JSON.parse(
+ JSON.stringify(this.currentItem.columns)
+ );
+ this.tableModel = true;
+ },
+ addRow() {
+ this.currnetTableData.push({ field: this.getField() });
+ },
+ delRow() {
+ this.$confirm("纭瑕佸垹闄ら�夋嫨鐨勬暟鎹悧?", "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ center: true,
+ }).then(() => {
+ this.$refs.table.delRow();
+ });
+ },
+ sortRow() {
+ this.currnetTableData = this.currnetTableData.sort((a, b) => {
+ return a.orderNo - b.orderNo;
+ }); //.reverse();
+ this.$Message.success("鍒楁樉绀洪『搴忓凡閲嶆柊鎺掑垪,鐐瑰嚮棰勮鍙煡鐪�");
+ },
+ saveConfigOptions() {
+ this.currentItem.columns = JSON.parse(
+ JSON.stringify(this.currnetTableData)
+ );
+ this.tableModel = false;
+ },
+ copyItem(item) {
+ let itemClone = JSON.parse(JSON.stringify(item));
+ itemClone.field = "field" + new Date().valueOf();
+ this.currentComponents.push(itemClone);
+ },
+ removeItem(index) {
+ this.currentComponents.splice(index, 1);
+ this.colWidth = 100;
+ this.currentIndex = -1;
+ this.currentItem = {};
+ },
+ clearItems() {
+ this.currentComponents.length = 0;
+ this.colWidth = 100;
+ this.currentIndex = -1;
+ this.currentItem = {};
+ },
+ itemClick(item, index) {
+ this.currentIndex = index;
+ this.colWidth = this.currentComponents[this.currentIndex].width;
+ this.currentItem = this.currentComponents[this.currentIndex];
+ },
+ //寮�濮嬫嫋鎷戒簨浠�
+ onStart(e, e1) {
+ this.drag = true;
+ },
+ getField() {
+ return "field" + new Date().valueOf();
+ },
+ //宸﹁竟寰�鍙宠竟鎷栧姩鏃剁殑浜嬩欢
+ end1(e) {
+ if (1 == 1 && e.from !== e.to) {
+ let obj = JSON.parse(JSON.stringify(this.components[e.oldIndex]));
+ obj.field = this.getField();
+ obj.width = 100;
+ obj.readonly = false;
+ obj.required = false;
+ this.currentComponents.splice(e.newIndex, 1, obj);
+ this.userComponents.splice(0);
+ this.userComponents.push(...this.currentComponents);
+ // this.currentComponents = this.currentComponents.filter((x) => {
+ // return x.hasOwnProperty("field");
+ // });
+ this.colWidth = 100;
+ this.currentIndex = e.newIndex; //this.currentComponents.length - 1;
+ this.currentItem = this.currentComponents[this.currentIndex];
+ }
+ },
+ //鍙宠竟寰�宸﹁竟鎷栧姩鏃剁殑浜嬩欢
+ end2(e) {},
+ onMove1(e, originalEvent) {
+ // this.moveId = e.relatedContext.element.id;
+ return true;
+ },
+ //move鍥炶皟鏂规硶
+ onMove(e, originalEvent) {
+ console.log(JSON.stringify(this.currentComponents));
+ return true;
+ },
+ dicChange(key) {
+ this.http
+ .post("api/Sys_Dictionary/GetVueDictionary", [key], true)
+ .then((result) => {
+ this.currentItem.data = result[0].data;
+ if (result[0].data.length) {
+ if (this.currentItem.type == "select") {
+ this.currentItem.value = result[0].data[0].value;
+ } else {
+ this.currentItem.values = [result[0].data[0].value];
+ }
+ }
+ });
+ },
+ example1() {
+ this.currentComponents = this.options1;
+ },
+ example2() {
+ this.currentComponents = this.options2;
+ },
+ example3() {
+ this.currentComponents = this.options3;
+ },
+ },
+ computed: {
+ tabsTable() {
+ return this.currentComponents.filter((x) => {
+ return x.type == "table" && x.tabs == true;
+ });
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+* {
+ box-sizing: border-box;
+}
+.drag-container {
+ /* padding: 20px; */
+ display: flex;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ box-sizing: border-box;
+}
+.drag-left {
+ width: 250px;
+ display: flex;
+ border-right: 1px solid #eee;
+ flex-direction: column;
+}
+.left-title {
+ height: 42px;
+ text-align: left;
+ border-right: 1px solid #eee;
+ padding: 10px 0 10px 11px;
+ border-bottom: 1px solid #eee;
+}
+.drag-center {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+}
+.left-draggable-item {
+ // flex: 1;
+ display: inline-block;
+ padding: 5px;
+ // border-right: 1px solid #eee;
+}
+
+.left-draggable-item .item {
+ cursor: move;
+ float: left;
+ width: 111px;
+ /* height: 20px; */
+ text-align: center;
+ border: 1px solid #eeeeee;
+ padding: 2px 13px;
+ text-align: left;
+ line-height: 28px;
+ margin: 4px;
+ border-radius: 3px;
+ background: #f0f9eb;
+ font-size: 13px;
+}
+// .drag-center-item {
+// display: inline-block;
+// width: 100%;
+// height: calc(100vh - 122px);
+// padding: 10px;
+// }
+.draggable-container {
+ display: inline-block;
+ width: 100%;
+ height: calc(100vh - 215px);
+ padding: 10px 0;
+}
+
+.item2 {
+ position: relative;
+ cursor: move;
+ padding: 18px 10px 10px 10px;
+ text-align: left;
+ float: left;
+ margin-bottom: 10px;
+}
+.item2 .el-icon-delete,
+.item2 .el-icon-document-copy {
+ position: absolute;
+ right: 10px;
+ top: 2px;
+ padding: 5px;
+ display: none;
+ color: red;
+ cursor: pointer;
+}
+.item2 .el-icon-document-copy {
+ right: 35px;
+}
+.item2:hover,
+.actived {
+ background: #f0f9eb;
+}
+.item:hover {
+ border: 1px dashed #787be8;
+ color: #787be8;
+}
+.item2:hover .el-icon-delete,
+.item2:hover .el-icon-document-copy {
+ display: block;
+}
+
+.drag-right {
+ background: #f7fbff3d;
+ width: 250px;
+ border-left: 1px solid #eee;
+}
+
+.center-top {
+ height: 42px;
+ line-height: 41px;
+ background: #f2f5fb;
+ border-bottom: 1px solid #eee;
+ text-align: left;
+ padding: 0 10px;
+ font-size: 12px;
+ color: #3391f3;
+}
+.center-top span {
+ margin-right: 10px;
+}
+.attr {
+ padding: 0px 15px 15px 15px;
+}
+.attr-item {
+ text-align: left;
+ margin-top: 12px;
+ font-size: 14px;
+}
+.attr-item .text {
+ padding: 0 0 5px 5px;
+}
+.attr2 {
+ display: flex;
+}
+.attr2 > div {
+ flex: 1;
+}
+.tips {
+ position: absolute;
+ font-size: 26px;
+ letter-spacing: 6px;
+ left: 0px;
+ right: 0px;
+ top: 150px;
+ width: 500px;
+ margin: auto;
+ color: #c5c5c5;
+}
+.col-line {
+ line-height: 25px;
+ font-weight: bold;
+ border-bottom: 1px solid rgb(218 218 218);
+}
+.drag-container ::v-deep(.el-col) {
+ width: 100%;
+}
+.drag-center ::v-deep(.el-form-item__label) {
+ line-height: 0 !important;
+}
+.drag-center ::v-deep(.el-scrollbar__wrap) {
+ overflow-x: hidden;
+}
+.drag-center ::v-deep(.el-form-item) {
+ margin-bottom: 10px;
+}
+.drag-center ::v-deep(.el-date-editor) {
+ width: 100%;
+}
+.drag-center ::v-deep(.el-checkbox) {
+ margin-right: 15px;
+}
+.drag-center ::v-deep(.el-checkbox__label) {
+ padding-left: 5px;
+}
+.drag-center ::v-deep(.hello > div) {
+ z-index: 500 !important;
+}
+.drag-center ::v-deep(th),
+.drag-center ::v-deep(td) {
+ padding: 6px 0;
+}
+.example {
+ margin-top: 8px;
+ > div {
+ cursor: pointer;
+ padding: 14px 20px;
+ border-top: 1px solid #eee;
+ font-size: 13px;
+ color: #646465;
+ position: relative;
+ }
+ > div:hover {
+ background: rgb(231, 231, 231);
+ }
+ i {
+ position: absolute;
+ right: 20px;
+ }
+}
+.btns {
+ padding: 8px 0;
+ display: flex;
+ > div {
+ flex: 1;
+ }
+ .btns-left {
+ padding-top: 8px;
+ color: black;
+ font-weight: bold;
+ }
+ .btns-right {
+ text-align: right;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue"
new file mode 100644
index 0000000..7d8aa93
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue"
@@ -0,0 +1,206 @@
+<template>
+ <div style="padding: 15px 20px 15px 5px">
+ <div class="pre-text">{{ text }}</div>
+ <vol-form
+ ref="form"
+ :labelWidth="80"
+ :load-key="false"
+ :formFields="options.fields"
+ :formRules="options.formOptions"
+ >
+ </vol-form>
+ <div class="tables">
+ <div
+ class="table-item"
+ v-for="(item, index) in options.tables"
+ :key="index"
+ >
+ <div class="table-header">
+ <div class="header-text">
+ {{ item.name }}
+ </div>
+ <div class="header-btns">
+ <el-button
+ type="primary"
+ size="small"
+ :key="bindex"
+ plain
+ @click="tableBtnClick(item, bindex, index)"
+ :icon="btnItem.icon"
+ v-for="(btnItem, bindex) in item.buttons"
+ >
+ {{ btnItem.name }}
+ </el-button>
+ </div>
+ </div>
+ <vol-table
+ :url="item.url"
+ :load-key="false"
+ :index="true"
+ :ref="'table' + index"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :max-height="250"
+ :pagination-hide="item.pagination"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </div>
+ </div>
+
+ <div class="tables" style="padding-bottom: 10px">
+ <el-tabs
+ v-model="tabsModel"
+ v-show="options.tabs.length"
+ @tab-click="() => {}"
+ >
+ <el-tab-pane
+ style="padding: 0"
+ class="table-item"
+ v-for="(item, index) in options.tabs"
+ :label="item.name"
+ :name="index"
+ :key="index"
+ >
+ <div class="table-header">
+ <div class="header-text">
+ {{ item.name }}
+ </div>
+ <div class="header-btns">
+ <el-button
+ type="primary"
+ size="small"
+ :key="bindex"
+ :icon="btnItem.icon"
+ plain
+ @click="tabsTableBtnClick(item, bindex, index)"
+ v-for="(btnItem, bindex) in item.buttons"
+ >
+ {{ btnItem.name }}
+ </el-button>
+ </div>
+ </div>
+ <vol-table
+ :url="item.url"
+ :load-key="false"
+ :index="true"
+ :ref="'tabsTable' + index"
+ :tableData="item.tableData"
+ :columns="item.columns"
+ :max-height="250"
+ :pagination-hide="item.pagination"
+ :column-index="true"
+ :ck="true"
+ ></vol-table>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+
+ <div class="form-btns">
+ <el-button type="primary" @click="submit" icon="el-icon-check" size="small"
+ >鎻愪氦</el-button
+ >
+ <el-button
+ type="primary"
+ @click="reset"
+ plain
+ icon="el-icon-refresh-right"
+ size="small"
+ >閲嶇疆</el-button
+ >
+ <el-button
+ type="primary"
+ @click="download"
+ plain
+ icon="el-icon-refresh-right"
+ size="small"
+ >涓嬭浇浠g爜</el-button
+ >
+ </div>
+ </div>
+</template>
+
+<script>
+import VolTable from "./../VolTable";
+import VolBox from "./../VolBox";
+import VolForm from "./../VolForm";
+import downloadForm from "./DownloadForm";
+export default {
+ props: {
+ options: {
+ type: Object,
+ default: () => {
+ return { fields: {}, formOptions: [], tables: [], tabs: [] };
+ },
+ },
+ },
+ data() {
+ return {
+ text: "",
+ tabsModel: 0,
+ };
+ },
+ created() {},
+ methods: {
+ tableBtnClick(item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["table" + index].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["table" + index].delRow();
+ return;
+ }
+ },
+ tabsTableBtnClick(item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["tabsTable" + index].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["tabsTable" + index].delRow();
+ return;
+ }
+ },
+ submit() {},
+ reset() {
+ this.$refs.form.reset();
+ this.$Message.success("琛ㄥ崟宸查噸缃�");
+ },
+ download() {
+ downloadForm.call(this);
+ },
+ },
+ components: {
+ "vol-table": VolTable,
+ "vol-box": VolBox,
+ "vol-form": VolForm,
+ },
+};
+
+VolForm;
+</script>
+<style lang="less" scoped>
+.form-btns {
+ text-align: center;
+}
+.tables {
+ padding-left: 15px;
+ .table-item {
+ padding: 10px;
+ }
+ .table-header {
+ display: flex;
+ margin-bottom: 8px;
+ }
+ .header-text {
+ position: relative;
+ bottom: -9px;
+ flex: 1;
+ font-weight: bold;
+ }
+ .header-btns {
+ text-align: right;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue"
new file mode 100644
index 0000000..cbe64e7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue"
@@ -0,0 +1,67 @@
+<template>
+ <div class="v-header">
+ <div class="v-left-text">
+ <!-- <i size="20" :class="icon" class="h-icon"/> -->
+ <span>{{ title || text }}</span>
+ </div>
+ <div class="content">
+ <slot name="content"></slot>
+ </div>
+ <div class="v-right-content">
+ <slot></slot>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ icon: {
+ type: String,
+ default: ''
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ text: {
+ type: String,
+ default: '鏈畾涔夊悕绉�'
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.v-header {
+ display: flex;
+ border-bottom: 1px solid #dcdee2;
+ .v-left-text {
+ margin-top: 3px;
+ padding-bottom: 6px;
+ font-weight: bold;
+ font-size: 15px;
+ color: #484848;
+ white-space: nowrap;
+ border-bottom: 2px solid #676767;
+ margin-bottom: -1px;
+ letter-spacing: 1px;
+ > span {
+ position: relative;
+ top: 2px;
+ }
+ }
+ .content {
+ line-height: 25px;
+ padding-left: 10px;
+ padding: 6px 0 0 10px;
+ }
+ .v-right-content {
+ flex: 1;
+ text-align: right;
+ }
+ .h-icon {
+ position: relative;
+ top: 2px;
+ margin-right: 3px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolImageViewer.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolImageViewer.vue"
new file mode 100644
index 0000000..84edee3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolImageViewer.vue"
@@ -0,0 +1,34 @@
+<template>
+ <el-image-viewer hide-on-click-modal v-if="showImageViewer" :initial-index="initialIndex" :url-list="imageViewerList"
+ @close="closeViewer"></el-image-viewer>
+</template>
+<script>
+import { ref } from 'vue';
+export default {
+ setup() {
+ const initialIndex = ref(0);
+ const imageViewerList = ref([]);
+ const showImageViewer = ref(false)
+
+ const show = (imgs, index) => {
+ initialIndex.value = index || 0;
+ if (Array.isArray(imgs)) {
+ imageViewerList.value = imgs;
+ } else {
+ imageViewerList.value = [imgs]
+ }
+ showImageViewer.value=true;
+ }
+ const closeViewer=()=>{
+ showImageViewer.value=false;
+ }
+ return {
+ initialIndex,
+ imageViewerList,
+ showImageViewer,
+ closeViewer,
+ show
+ }
+ }
+}
+</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue"
new file mode 100644
index 0000000..3279d39
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue"
@@ -0,0 +1,1793 @@
+<template>
+ <!-- 2021.11.18绉婚櫎voltable鏂规硶@cell-mouse-leave="rowEndEdit" -->
+ <div class="vol-table" :class="[
+ textInline ? 'text-inline' : '',
+ fxRight ? 'fx-right' : '',
+ isChrome ? 'chrome' : '',
+ smallCell ? 'small-table' : ''
+ ]">
+ <div class="mask" v-show="loading"></div>
+ <div class="message" v-show="loading">鍔犺浇涓�.....</div>
+ <el-table :show-summary="summary" :summary-method="getSummaryData" :row-key="rowKey" :key="randomTableKey"
+ :lazy="lazy" :defaultExpandAll="defaultExpandAll" :expand-row-keys="rowKey ? expandRowKeys : undefined" stripe
+ :load="loadTreeChildren" @select="userSelect" @select-all="userSelect" @selection-change="selectionChange"
+ @row-dblclick="rowDbClick" @row-click="rowClick" @header-click="headerClick"
+ :highlight-current-row="highlightCurrentRow" ref="table" class="v-table" @sort-change="sortChange"
+ tooltip-effect="dark" :height="realHeight" :max-height="realMaxHeight" :data="url ? rowData : tableData" border
+ :row-class-name="initIndex" :cell-style="getCellStyle" style="width: 100%" :scrollbar-always-on="true"
+ :span-method="cellSpanMethod" @expand-change="expandChange">
+ <el-table-column v-if="columnIndex" type="index" :fixed="fixed" width="55"></el-table-column>
+ <el-table-column v-if="ck" type="selection" :fixed="fixed" :selectable="selectable" width="55"></el-table-column>
+
+ <!-- 2020.10.10绉婚櫎table绗竴琛屽己鍒舵帓搴� -->
+ <el-table-column v-for="(column, cindex) in filterColumns" :prop="column.field" :label="column.title"
+ :min-width="column.width" :formatter="formatter" :fixed="column.fixed" :key="column.field + cindex"
+ :align="column.align" :sortable="column.sort ? 'custom' : false"
+ :show-overflow-tooltip="column.showOverflowTooltip">
+ <template #header>
+ <span v-if="(column.require || column.required) && column.edit" class="column-required">*</span>{{
+ column.title }}
+ </template>
+
+ <template #default="scope">
+ <!-- 2022.01.08澧炲姞澶氳〃澶达紝鐜板湪鍙敮鎸佸父鐢ㄥ姛鑳芥覆鏌擄紝涓嶆敮鎸佺紪杈戝姛鑳�(娑夊強鍒扮粍浠堕噸鍐�) -->
+ <el-table-column style="border: none" v-for="columnChildren in filterChildrenColumn(column.children)"
+ :key="columnChildren.field" :min-width="columnChildren.width" :class-name="columnChildren.class"
+ :prop="columnChildren.field" :align="columnChildren.align" :label="columnChildren.title">
+ <template #default="scopeChildren">
+ <a href="javascript:void(0);" style="text-decoration: none"
+ @click="link(scopeChildren.row, columnChildren, $event)" v-if="columnChildren.link"
+ v-text="scopeChildren.row[columnChildren.field]"></a>
+ <table-render v-else-if="columnChildren.render && typeof columnChildren.render == 'function'"
+ :row="scopeChildren.row" key="rd-01" :index="scope.$index" :column="columnChildren"
+ :render="columnChildren.render"></table-render>
+ <div v-else-if="columnChildren.formatter" @click="
+ columnChildren.click &&
+ columnChildren.click(
+ scopeChildren.row,
+ columnChildren,
+ scopeChildren.$index
+ )
+ " v-html="columnChildren.formatter(
+ scopeChildren.row,
+ columnChildren,
+ scopeChildren.$index
+ )
+ "></div>
+ <div v-else-if="columnChildren.bind">
+ {{ formatter(scopeChildren.row, columnChildren, true) }}
+ </div>
+ <span v-else-if="columnChildren.type == 'date'">{{
+ formatterDate(scopeChildren.row, columnChildren)
+ }}</span>
+ <template v-else>
+ {{ scopeChildren.row[columnChildren.field] }}
+ </template>
+ </template>
+ </el-table-column>
+ <!-- 2020.06.18澧炲姞render娓叉煋鑷畾涔夊唴瀹� -->
+ <table-render v-if="column.render && typeof column.render == 'function'" :row="scope.row" key="rd-01"
+ :index="scope.$index" :column="column" :render="column.render"></table-render>
+ <!-- 鍚敤鍙屽嚮缂栬緫鍔熻兘锛屽甫缂栬緫鍔熻兘鐨勪笉浼氭覆鏌撲笅鎷夋鏂囨湰鑳屾櫙棰滆壊 -->
+ <!-- @click="rowBeginEdit(scope.$index,cindex)" -->
+ <!-- 2021.09.21澧炲姞缂栬緫鏃跺readonly灞炴�у垽鏂� -->
+ <template
+ v-else-if="column.edit && !column.readonly && ['file', 'img', 'excel'].indexOf(column.edit.type) != -1">
+ <div style="display:flex;align-items: center;" @click.stop>
+ <i v-if="!column.showUpload || column.showUpload(scope.row, column)"
+ style="padding: 3px;margin-right: 10px;color:#8f9293;cursor: pointer;"
+ @click="showUpload(scope.row, column)" class="el-icon-upload"></i>
+ <template v-if="column.edit.type == 'img'">
+ <img v-for="(file, imgIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )" :key="imgIndex" @error="handleImageError"
+ @click="viewImg(scope.row, column, file.path, $event, imgIndex)" class="table-img" :src="file.path" />
+ </template>
+ <a style="margin-right: 8px" v-else class="t-file" v-for="(file, fIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )" :key="fIndex" @click="dowloadFile(file)">{{ file.name }}</a>
+ </div>
+ </template>
+ <div v-else-if="
+ column.edit &&
+ !column.readonly &&
+ (column.edit.keep || edit.rowIndex == scope.$index)
+ " class="edit-el">
+ <div @click.stop class="e-item">
+ <div>
+ <!-- 2020.07.24澧炲姞鏃ユ湡onChange浜嬩欢 -->
+ <el-date-picker clearable size="default" style="width: 100%"
+ v-if="['date', 'datetime'].indexOf(column.edit.type) != -1" v-model="scope.row[column.field]" @change="(val) => {
+ column.onChange &&
+ column.onChange(scope.row, column, val);
+ }
+ " :type="column.edit.type" :placeholder="column.placeholder || column.title"
+ :disabledDate="(val) => getDateOptions(val, column)" :value-format="getDateFormat(column)"
+ :disabled="initColumnDisabled(scope.row, column)">
+ </el-date-picker>
+ <el-time-picker clearable size="default" style="width: 100%" v-else-if="column.edit.type == 'time'"
+ v-model="scope.row[column.field]" @change="(val) => {
+ column.onChange &&
+ column.onChange(scope.row, column, val);
+ }
+ " :placeholder="column.placeholder || column.title" :value-format="column.format || 'HH:mm:ss'"
+ :disabled="initColumnDisabled(scope.row, column)">
+ </el-time-picker>
+ <el-switch v-else-if="column.edit.type == 'switch'" v-model="scope.row[column.field]"
+ active-color="#0f84ff" inactive-color="rgb(194 194 194)" active-text="鏄�" inactive-text="鍚�"
+ inline-prompt @change="(val) => {
+ switchChange(val, scope.row, column);
+ }
+ " :active-value="typeof scope.row[column.field] == 'boolean'
+ ? true
+ : typeof scope.row[column.field] == 'string'
+ ? '1'
+ : 1
+ " :inactive-value="typeof scope.row[column.field] == 'boolean'
+ ? false
+ : typeof scope.row[column.field] == 'string'
+ ? '0'
+ : 0
+ " :disabled="initColumnDisabled(scope.row, column)">
+ </el-switch>
+ <template v-else-if="
+ ['select', 'selectList'].indexOf(column.edit.type) != -1
+ ">
+ <el-select-v2 style="width: 100%" :size="size" v-if="column.bind.data.length >= select2Count"
+ v-model="scope.row[column.field]" filterable :multiple="column.edit.type == 'select' ? false : true"
+ :placeholder="column.placeholder || column.title" :autocomplete="column.autocomplete"
+ :options="column.bind.data" @change="
+ column.onChange && column.onChange(scope.row, column)
+ " clearable :disabled="initColumnDisabled(scope.row, column)">
+ <template #default="{ item }">
+ {{ item.label }}
+ </template>
+ </el-select-v2>
+
+ <el-select size="default" style="width: 100%" v-else v-model="scope.row[column.field]" :filterable="column.filter || column.bind.data.length > 10
+ ? true
+ : false
+ " :multiple="column.edit.type == 'select' ? false : true"
+ :placeholder="column.placeholder || column.title" :allow-create="column.autocomplete" @change="
+ column.onChange && column.onChange(scope.row, column)
+ " clearable :disabled="initColumnDisabled(scope.row, column)">
+ <el-option v-for="item in column.bind.data" :key="item.key" v-show="!item.hidden"
+ :disabled="item.disabled" :label="item.value" :value="item.key">{{ item.value }}
+ </el-option>
+ </el-select>
+ </template>
+ <el-tree-select style="width: 100%"
+ v-else-if="column.edit.type == 'treeSelect' || column.edit.type == 'cascader'"
+ v-model="scope.row[column.field]" :data="column.bind.data"
+ :multiple="column.multiple === undefined ? true : column.multiple" :render-after-expand="false"
+ :show-checkbox="true"
+ :check-strictly="column.checkStrictly === undefined ? true : column.checkStrictly" check-on-click-node
+ node-key="key" @change="column.onChange && column.onChange(scope.row, column)"
+ :props="{ label: 'label' }">
+ <template #default="{ data, node }">
+ {{ data.label }}</template>
+ </el-tree-select>
+ <!-- <div v-else-if="column.edit.type == 'cascader'">4444444</div> -->
+ <!-- <el-cascader
+ clearable
+ style="width: 100%;"
+ v-model="scope.row[column.field]"
+ v-else-if="column.edit.type == 'cascader'"
+ :data="column.bind.data"
+ :props="{
+ checkStrictly: column.changeOnSelect || column.checkStrictly,
+ }"
+ @change="column.onChange && column.onChange(scope.row, column)"
+ >
+ </el-cascader> -->
+ <el-input v-else-if="column.edit.type == 'textarea'" type="textarea"
+ :placeholder="column.placeholder || column.title" v-model="scope.row[column.field]"
+ :disabled="initColumnDisabled(scope.row, column)">
+ </el-input>
+ <input class="table-input" v-else-if="!column.summary && !column.onKeyPress"
+ v-model.lazy="scope.row[column.field]" :placeholder="column.placeholder || column.title"
+ :disabled="initColumnDisabled(scope.row, column)" />
+ <el-input v-else @change="inputKeyPress(scope.row, column, $event)"
+ @input="inputKeyPress(scope.row, column, $event)"
+ @keyup.enter="inputKeyPress(scope.row, column, $event)" size="default"
+ v-model="scope.row[column.field]" :placeholder="column.placeholder || column.title"
+ :disabled="initColumnDisabled(scope.row, column)"></el-input>
+ </div>
+ <div class="extra" v-if="column.extra && edit.rowIndex == scope.$index">
+ <a :style="column.extra.style" style="text-decoration: none" @click="extraClick(scope.row, column)">
+ <i v-if="column.extra.icon" :class="[column.extra.icon]" />
+ {{ column.extra.text }}
+ </a>
+ </div>
+ </div>
+ </div>
+ <!--娌℃湁缂栬緫鍔熻兘鐨勭洿鎺ユ覆鏌撴爣绛�-->
+ <template v-else>
+ <a href="javascript:void(0)" style="text-decoration: none;line-height: 1.3;"
+ @click="link(scope.row, column, $event)" v-if="column.link" v-text="scope.row[column.field]"></a>
+ <img v-else-if="column.type == 'img'" v-for="(file, imgIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )" :key="imgIndex" @error="handleImageError"
+ @click="viewImg(scope.row, column, file.path, $event, imgIndex)" class="table-img" :src="file.path" />
+ <a style="margin-right: 8px" v-else-if="column.type == 'file' || column.type == 'excel'" class="t-file"
+ v-for="(file, fIndex) in getFilePath(
+ scope.row[column.field],
+ column
+ )" :key="fIndex" @click="dowloadFile(file)">{{ file.name }}</a>
+ <span v-else-if="column.type == 'date'">{{
+ formatterDate(scope.row, column)
+ }}</span>
+ <div v-else-if="column.formatter" @click="formatterClick(scope.row, column, $event)"
+ v-html="column.formatter(scope.row, column)"></div>
+ <!-- 2021.11.18淇table鏁版嵁婧愯缃负normal鍚庣偣鍑昏$event缂哄け鐨勯棶棰� -->
+ <div v-else-if="column.bind && (column.normal || column.edit)"
+ @click="formatterClick(scope.row, column, $event)"
+ :style="column.getStyle && column.getStyle(scope.row, column)">
+ {{ formatter(scope.row, column, true) }}
+ </div>
+ <div v-else-if="column.click && !column.bind" @click="formatterClick(scope.row, column)">
+ {{ scope.row[column.field] }}
+ </div>
+ <div @click="() => {
+ column.click && formatterClick(scope.row, column);
+ }
+ " v-else-if="column.bind">
+ <el-tag v-if="useTag" class="cell-tag" :class="[isEmptyTag(scope.row, column)]"
+ :type="getColor(scope.row, column)" :effect="column.effect">{{ formatter(scope.row, column, true)
+ }}</el-tag>
+ <template v-else>{{
+ formatter(scope.row, column, true)
+ }}</template>
+ </div>
+
+ <span v-else>{{ formatter(scope.row, column, true) }}</span>
+ </template>
+ </template>
+ </el-table-column>
+ </el-table>
+ <template v-if="!paginationHide">
+ <div class="block pagination" key="pagination-01" style="display: flex">
+ <div style="flex: 1"></div>
+ <el-pagination key="pagination-02" @size-change="handleSizeChange" @current-change="handleCurrentChange"
+ :current-page="paginations.page" :page-sizes="paginations.sizes" :page-size="paginations.size"
+ layout="total, sizes, prev, pager, next, jumper" :total="paginations.total"></el-pagination>
+ </div>
+ </template>
+ </div>
+
+ <VolBox v-model="uploadModel" title="涓婁紶" :height="228" :width="500" :padding="15" lazy>
+ <!-- 涓婁紶鍥剧墖銆乪xcel鎴栧叾浠栨枃浠躲�佹枃浠舵暟閲忋�佸ぇ灏忛檺鍒堕兘鍙互锛屽弬鐓olupload缁勪欢api -->
+ <div style="height: 200px;display: flex;align-items: center;">
+ <VolUpload style="text-align: center; " :autoUpload="currentColumn.edit.autoUpload"
+ :multiple="currentColumn.edit.multiple" :url="uploadUrl" :max-file="currentColumn.edit.maxFile"
+ :img="currentColumn.edit.type == 'img'" :excel="currentColumn.edit.type == 'excel'"
+ :fileTypes="currentColumn.edit.fileTypes ? currentColumn.edit.fileTypes : []" :fileInfo="fileInfo"
+ :upload-after="uploadAfter" :upload-before="uploadBefore" :append="currentColumn.edit.accept">
+ <div>{{ currentColumn.message }}</div>
+ </VolUpload>
+ </div>
+ <template #footer>
+ <div style="text-align: center; ">
+ <el-button type="default" size="small" @click="uploadModel = false">鍏抽棴</el-button>
+ <el-button type="primary" size="small" @click="saveUpload">淇濆瓨</el-button>
+ </div>
+ </template>
+ </VolBox>
+ <vol-image-viewer ref="viewer"></vol-image-viewer>
+</template>
+<script>
+import VolTableRender from './VolTable/VolTableRender';
+let _errMsg;
+import { defineComponent, defineAsyncComponent } from 'vue';
+export default defineComponent({
+ emits: ['loadBefore', 'loadAfter', 'rowChange', 'rowClick', 'rowDbClick', 'selectionChange'],
+ //https://github.com/element-plus/element-plus/issues/1483
+ //娌℃湁鍘熷厛鐨剆election灞炴�т簡锛岀湅issue涓婁娇鐢╯elect/selectall鑾峰彇
+ //鐩戝惉鏁扮粍闀垮害锛屽鏋滃垹闄や簡鏁版嵁锛岀幇鍦ㄥ彧鑳借杩竻闄ゆ墍鏈夐�変腑鐨勮
+ watch: {
+ 'tableData.length': {
+ handler(newLen, oldLen) {
+ this.watchRowSelectChange(newLen, oldLen);
+ }
+ },
+ 'rowData.length': {
+ handler(newLen, oldLen) {
+ this.watchRowSelectChange(newLen, oldLen);
+ }
+ }
+ },
+ components: {
+ 'vol-image-viewer': defineAsyncComponent(() => import("./VolImageViewer.vue")),
+ 'table-render': VolTableRender,
+ VolUpload: defineAsyncComponent(() => import("./VolUpload.vue")),
+ VolBox: defineAsyncComponent(() => import("./VolBox.vue")),
+ },
+ props: {
+ rowKey: {
+ // 鏍戝舰缁撴瀯鐨勪富閿瓧娈碉紝濡傛灉璁剧疆鍊奸粯璁や細寮�鍚爲褰able锛涙敞鎰弐owKey瀛楁鐨勫�煎繀椤绘槸鍞竴锛�2021.05.02锛�
+ typeof: String,
+ default: undefined
+ },
+ loadTreeChildren: {
+ // 鏍戝舰缁撴瀯鍔犺浇瀛愯妭鐐�
+ type: Function,
+ default: (tree, treeNode, resolve) => {
+ if (resolve) {
+ return resolve([]);
+ }
+ }
+ },
+ textInline: {
+ // 琛ㄦ牸鍐呭瓒呭嚭鍚庢槸鍚︽崲琛屾樉绀猴紙2020.01.16锛�
+ type: Boolean,
+ default: true
+ },
+ tableData: {
+ // 琛ㄦ暟鎹簮,閰嶇疆浜唘rl灏变笉鐢ㄤ紶杩欎釜鍙傛暟浜�
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ columns: {
+ type: Array,
+ default: []
+ },
+ height: {
+ type: Number,
+ default: 0
+ },
+ maxHeight: {
+ type: Number,
+ default: 0
+ },
+ linkView: {
+ type: Function,
+ default: function () {
+ return 1;
+ }
+ },
+ pagination: {
+ type: Object,
+ default: function () {
+ return { total: 0, size: 30, sortName: '' };
+ }
+ },
+ url: {
+ type: String,
+ default: ''
+ },
+ paginationHide: {
+ type: Boolean,
+ default: true
+ },
+ color: {
+ type: Boolean,
+ default: true
+ },
+ index: {
+ // 鏄惁鍒涘缓绱㈠紩鍙�,濡傛灉闇�瑕佽〃鏍肩紪杈戝姛鑳斤紝杩欓噷闇�瑕佽缃负true
+ type: Boolean,
+ default: false
+ },
+ allowEmpty: {
+ // 琛ㄦ牸鏁版嵁涓虹┖鏃舵槸鍚﹂粯璁や负--
+ type: Boolean,
+ default: true
+ },
+ defaultLoadPage: {
+ // 浼犲叆浜唘rl锛屾槸鍚﹂粯璁ゅ姞杞借〃鏍兼暟鎹�
+ type: Boolean,
+ default: true
+ },
+ loadKey: {
+ // 鏄惁鑷姩浠庡悗鍙板姞杞芥暟鎹簮
+ type: Boolean,
+ default: true
+ },
+ single: {
+ type: Boolean, // 鏄惁鍗曢��
+ default: false
+ },
+ doubleEdit: {
+ type: Boolean, // 鏄惁鍙屽嚮鍚敤缂栬緫鍔熻兘
+ default: true
+ },
+ beginEdit: {
+ // 缂栬緫寮�濮�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ }
+ },
+ endEditBefore: {
+ // 缁撴潫缂栬緫鍓�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ }
+ },
+ endEditAfter: {
+ // 缁撴潫缂栬緫鍓�
+ type: Function,
+ default: function (row, column, index) {
+ return true;
+ }
+ },
+ ck: {
+ // 鏄惁鏄剧ずcheckbox
+ type: Boolean,
+ default: true
+ },
+ columnIndex: {
+ // 鏄惁鏄剧ず琛屽彿(2020..11.1)
+ type: Boolean,
+ default: true
+ },
+ highlightCurrentRow: {
+ //澧炲姞閫変腑琛岄珮浜樉绀�(2022.10.07)
+ type: Boolean,
+ default: true
+ },
+ select2Count: {
+ //瓒呭嚭鏁伴噺鏄剧ずselect2缁勪欢
+ type: Number,
+ default: 2000
+ },
+ selectable: {
+ type: Function,
+ default: (row, index) => {
+ return true;
+ }
+ },
+ spanMethod: {
+ type: Function,
+ default: ({ row, column, rowIndex, columnIndex }) => {
+ }
+ },
+ lazy: { //鏍戝舰琛ㄦ牸鏄惁榛樿寤惰繜鍔犺浇
+ type: Boolean,
+ default: true,
+ },
+ defaultExpandAll: { //鏍戝舰琛ㄦ牸鏄惁灞曞紑鎵�鏈�
+ type: Boolean,
+ default: false
+ },
+ expandRowKeys: { //榛樿灞曞紑琛�
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ rowParentField: { //鏍戝舰琛ㄦ牸鐖剁骇id
+ type: String,
+ default: ""
+ }
+ },
+ data() {
+ return {
+ fixed: false, //鏄浐瀹氳鍙蜂笌checkbox
+ clickEdit: true, //2021.07.17璁剧疆涓虹偣鍑昏缁撴潫缂栬緫
+ randomTableKey: 1,
+ visiblyColumns: [],
+ key: '',
+ realHeight: 0,
+ realMaxHeight: 0,
+ enableEdit: false, // 鏄惁鍚〃鏍肩敤缂栬緫鍔熻兘
+ empty: this.allowEmpty ? '' : '--',
+ defaultImg: new URL('@/assets/imgs/error-img.png', import.meta.url).href,
+ loading: false,
+ footer: {},
+ total: 0,
+ formatConfig: {},
+ // defaultColor: "",
+ // 2020.09.06璋冩暣table鍒楁暟鎹簮鐨勮儗鏅鑹�
+ colors: ["primary", "success", "info", "warning", "danger"],// ["warning", "success", "danger", "info"],
+ rule: {
+ phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
+ decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/,
+ number: /(^[\-0-9][0-9]*([0-9]+)?)$/
+ },
+ columnNames: [],
+ rowData: [],
+ paginations: {
+ sort: '',
+ order: 'desc',
+ Foots: '',
+ total: 0,
+ // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+ sizes: [30, 60, 100, 120],
+ size: 30, // 榛樿鍒嗛〉澶у皬
+ Wheres: [],
+ page: 1,
+ rows: 30
+ },
+ errorFiled: '',
+ edit: { columnIndex: -1, rowIndex: -1 }, // 褰撳墠鍙屽嚮缂栬緫鐨勮涓庡垪鍧愭爣
+ editStatus: {},
+ summary: false, // 鏄惁鏄剧ず鍚堣
+ // 鐩墠鍙敮鎸佷粠鍚庡彴杩斿洖鐨剆ummaryData鏁版嵁
+ summaryData: [],
+ summaryIndex: {},
+ remoteColumns: [], // 闇�瑕佹瘡娆″埛鏂版垨鍒嗛〉鍚庝粠鍚庡彴鍔犺浇瀛楀吀鏁版嵁婧愮殑鍒楅厤缃�
+ cellStyleColumns: {}, // 鏈夎儗鏅鑹茬殑閰嶇疆
+ fxRight: false, //鏄惁鏈夊彸杈瑰浐瀹氳〃澶�
+ selectRows: [], //褰撳墠閫変腑鐨勮
+ isChrome: false,
+ //vol-table甯︽暟鎹簮鐨勫崟鍏冩牸鏄惁鍚敤tag鏍囩(涓嬫媺妗嗙瓑鍗曞厓鏍间互tag鏍囩鏄剧ず)
+ //2023.04.02鏇存柊voltable涓巑ain.js
+ useTag: true,
+ currentRow: {},
+ currentColumn: [],
+ fileInfo: [],
+ uploadUrl: "",
+ uploadModel: false,
+ smallCell: true
+ };
+ },
+ created() {
+ try {
+ this.useTag = this.$global.table && this.$global.table.useTag;
+ this.smallCell = this.$global.table && this.$global.table.smallCell;
+ } catch (error) {
+ console.log(error.message);
+ }
+
+ this.realHeight = this.getHeight();
+ this.realMaxHeight = this.getMaxHeight();
+ this.fxRight = this.columns.some((x) => {
+ return x.fixed == 'right';
+ });
+ //2021.09.21绉婚櫎寮哄埗鍥哄畾琛屽彿涓巆heckbox鍒�
+ if (
+ this.columns.some((x) => {
+ return x.fixed && x.fixed != 'right';
+ })
+ ) {
+ this.fixed = true;
+ }
+ //2022.04.06浼樺寲table鍚堣鍥哄畾鍒楁樉绀�
+ // if (
+ // this.columns.some((x) => {
+ // return x.summary;
+ // })
+ // ) {
+ // this.columns.forEach((x) => {
+ // if (x.fixed && x.fixed != 'right') {
+ // x.fixed = false;
+ // }
+ // });
+ // this.fixed = false;
+ // }
+
+ // 浠庡悗鍙板姞涓嬫媺妗嗙殑[鏄惁鍚敤鐨刔鏁版嵁婧�
+ let keys = [];
+ let columnBind = [];
+ this.summaryData.push('鍚堣');
+ if (this.columnIndex) {
+ this.summaryData.push(' ');
+ }
+ this.initCellStyleColumns();
+ this.columns.forEach((x, _index) => {
+
+ if (!x.hidden) {
+ // this.summaryIndex[x.field] = _index;
+ // 2020.10.11淇姹傚拰鍒楅敊浣嶇殑闂
+ this.summaryData.push('');
+ this.summaryIndex[x.field] = this.summaryData.length - 1;
+ }
+ // 姹傚拰
+ if (x.summary && !this.summary) {
+ this.summary = true;
+ }
+ if (x.children && Array.isArray(x.children)) {
+ x.children.forEach(cl => {
+ if (cl.bind && cl.bind.key && (!cl.bind.data || cl.bind.data.length == 0)) {
+ keys.push(cl.bind.key);
+ cl.bind.valueType = cl.type;
+ columnBind.push(cl.bind);
+ }
+ })
+ } else if (x.bind && x.bind.key && (!x.bind.data || x.bind.data.length == 0)) {
+ // 鍐欏叆杩滅▼
+ if (!x.bind.data) x.bind.data = [];
+ if (x.bind.remote) {
+ this.remoteColumns.push(x);
+ } else if (this.loadKey) {
+ keys.push(x.bind.key);
+ x.bind.valueType = x.type;
+ if (x.edit && x.edit.type) {
+ x.bind.editType = x.edit.type
+ }
+ columnBind.push(x.bind);
+ }
+ }
+ });
+ if (keys.length > 0) {
+ this.http
+ .post('/api/Sys_Dictionary/GetVueDictionary', keys)
+ .then((dic) => {
+ dic.forEach((x) => {
+ if (x.data.length > this.select2Count) {
+ x.data.forEach((item) => {
+ item.label = item.value;
+ item.value = item.key;
+ });
+ }
+ const arrType = ['cascader', 'treeSelect'];
+ columnBind.forEach((c) => {
+ if ((arrType.indexOf(c.valueType) != -1 || arrType.indexOf(c.editType) != -1)) {
+ this.columns.forEach(col => {
+ if (col.bind && col.bind.key == c.key) {
+ col.bind.orginData = JSON.parse(JSON.stringify(x.data));
+ }
+ })
+ x.data = this.base.convertTree(x.data, (node, data, isRoot) => {
+ if (!node.inited) {
+ node.inited = true;
+ node.label = node.value;
+ node.value = node.key + '';
+ }
+ });
+ }
+ // 杞崲鏁版嵁婧愮殑绫诲瀷涓庡垪鐨勭被鍨嬩竴鑷�(2020.04.04)
+ else if (c.key == x.dicNo && (c.valueType == "int" || c.valueType == "sbyte")) {
+ x.data.forEach((d) => {
+ // 2020.09.01澧炲姞瀵规暟瀛楃被鍨嬬殑浜屾鍒ゆ柇
+ if (!isNaN(d.key)) {
+ d.key = ~~d.key;
+ }
+ });
+ }
+ if (c.key == x.dicNo) c.data.push(...x.data);
+ });
+ });
+ });
+ }
+
+ this.paginations.sort = this.pagination.sortName;
+ // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+ Object.assign(this.paginations, this.pagination);
+ if (this.pagination.size) {
+ this.paginations.rows = this.pagination.size;
+ }
+ this.enableEdit = this.columns.some((x) => {
+ return x.hasOwnProperty('edit');
+ });
+ let keyColumn = this.columns.find((x) => {
+ return x.isKey;
+ });
+ if (keyColumn) {
+ this.key = keyColumn.field;
+ }
+ this.defaultLoadPage && this.load();
+ },
+ computed: {
+ filterColumns() {
+ return this.columns.filter((x, index) => {
+ if (!x.field) {
+ x.field = x.title + index;
+ }
+ return !x.hidden;
+ });
+ }
+ },
+ methods: {
+ initCellStyleColumns() {
+ this.columns.forEach(x => {
+ if (x.cellStyle) {
+ this.cellStyleColumns[x.field] = x.cellStyle;
+ }
+ })
+ },
+ watchRowSelectChange(newLen, oldLen) {
+ if (newLen < oldLen && this.selectRows.length) {
+ this.selectRows = [];
+ this.$refs.table.clearSelection();
+ }
+ },
+ switchChange(val, row, column) {
+ //杩欓噷鍦ㄥ垵濮嬪寲鐨勬椂鍊欎篃浼氳Е鍙慶hange浜嬩欢
+ if (Object.keys(row).length <= 1) {
+ return;
+ }
+ if (column.onChange) {
+ column.onChange(val, row, column);
+ }
+ },
+ inputKeyPress(row, column, $event, $e) {
+ column.onKeyPress && column.onKeyPress(row, column, $event);
+ this.getInputSummaries(null, null, $event, column);
+ },
+ extraClick(row, column) {
+ column.extra.click &&
+ column.extra.click(
+ row,
+ column,
+ this.url ? this.rowData : this.tableData
+ );
+ },
+ headerClick(column, event) {
+ if (this.clickEdit && this.edit.rowIndex != -1) {
+ if (
+ this.rowEndEdit(
+ this.url
+ ? this.rowData[this.edit.rowIndex]
+ : this.tableData[this.edit.rowIndex],
+ column
+ )
+ ) {
+ this.edit.rowIndex = -1;
+ }
+ }
+ // this.edit.rowIndex = -1;
+ },
+ rowDbClick(row, column, event) {
+ //2021.05.23澧炲姞鍙屽嚮琛屼簨浠�
+ this.$emit('rowDbClick', { row, column, event });
+ },
+ rowClick(row, column, event) {
+ //2022.02.20澧炲姞鐐瑰嚮鏃惰〃鏍煎弬鏁板垽鏂�
+ if (!column) {
+ return;
+ }
+ //姝e湪缂栬緫鏃讹紝绂佹鍑哄彂rowClick浜嬩欢
+ if (this.edit.rowIndex == -1) {
+ this.$emit('rowClick', { row, column, event });
+ }
+ // 鐐瑰嚮琛屼簨浠�(2020.11.07)
+
+ if (!this.doubleEdit) {
+ return;
+ }
+ // 鐐瑰嚮鍏朵粬琛屾椂锛屽鏋滅偣鍑荤殑琛屼笌姝e湪缂栬緫鐨勮鐩稿悓锛屼繚鎸佺紪杈戠姸鎬�
+ if (this.clickEdit && this.edit.rowIndex != -1) {
+ if (row.elementIndex == this.edit.rowIndex) {
+ // 鐐瑰嚮鐨勫崟鍏冩牸濡傛灉涓嶅彲浠ョ紪杈戯紝鐩存帴缁撴潫缂栬緫
+ // 2020.10.12淇缁撴潫缂栬緫鏃讹紝element table楂樼増鏈睘鎬ц幏鍙栦笉鍒扮殑闂
+ let _col = this.columns.find((x) => {
+ return x.field == ((event && event.property) || column.property);
+ });
+ if (_col && (!_col.edit || _col.readonly)) {
+ if (this.rowEndEdit(row, event)) {
+ this.edit.rowIndex = -1;
+ }
+ }
+ return;
+ }
+ if (this.rowEndEdit(row, event && event.property ? event : column)) {
+ this.edit.rowIndex = -1;
+ }
+ //褰撴鍦ㄧ紪杈戯紝涓旂偣鍑诲埌鍏朵粬琛屾椂锛屽湪鍘熺紪杈戠殑琛岀粨鏉熺紪杈戝悗锛岃Е鍙戞柊琛岀殑rowClick浜嬩欢
+ //姝e湪缂栬緫鏃讹紝绂佹鍑哄彂rowClick浜嬩欢
+ if (this.edit.rowIndex == -1) {
+ this.$emit('rowClick', { row, column, event });
+ }
+ }
+ this.rowBeginEdit(row, column);
+ },
+ dowloadFile(file) {
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken()
+ },
+ this.http.ipAddress
+ );
+ },
+ getFilePath(pathSring, column) {
+ // 鑾峰彇琛ㄧ殑鍥剧墖涓庢枃浠舵樉绀�
+ if (!pathSring) return [];
+ // 澧炲姞鍥剧墖鑷畾涔夋搷浣�
+ // 杩斿洖鏍煎紡蹇呴』鏄痆{name:"鏂囦欢鍚�",path:"鍥剧墖鍏ㄨ矾寰勬垨base64鏍煎紡"}]
+ if (column.formatter) {
+ return column.formatter(pathSring);
+ }
+ let filePath;
+ if (column.base64 && pathSring.indexOf('data') != -1) {
+ filePath = (',' + pathSring)
+ .split(',data')
+ .filter((x) => {
+ return x;
+ })
+ .map((m) => {
+ return 'data' + m;
+ });
+ } else {
+ filePath = pathSring.replace(/\\/g, '/').split(',');
+ }
+
+ let fileInfo = [];
+ for (let index = 0; index < filePath.length; index++) {
+ let file = filePath[index];
+ // 2020.12.19澧炲姞base64鍥剧墖鏄剧ず
+ if (column.base64) {
+ fileInfo.push({
+ name: '',
+ path:
+ (file.indexOf('data') == -1 ? 'data:image/png;base64,' : '') +
+ file
+ });
+ } else if (file.indexOf('.') != -1) {
+ let splitFile = file.split('/');
+ if (splitFile.length > 0) {
+ fileInfo.push({
+ name: splitFile[splitFile.length - 1],
+ path: this.base.isUrl(file) ? file : this.http.ipAddress + file
+ });
+ }
+ }
+ }
+ return fileInfo;
+ },
+ // 閲嶇疆table
+ reset() {
+ if (this.tableData && this.tableData.length > 0) {
+ this.tableData.splice(0);
+ }
+ if (this.rowData && this.rowData.length > 0) {
+ this.rowData.splice(0);
+ }
+ if (!this.paginationHide) {
+ this.paginations.page = 1;
+ // this.paginations.rows = 30;
+ if (this.paginations.wheres && this.paginations.wheres.length > 0) {
+ this.paginations.wheres.splice(0);
+ }
+ }
+ this.errorFiled = '';
+ this.edit.columnIndex = -1;
+ this.edit.rowIndex = -1;
+ },
+ getHeight() {
+ // 娌℃湁瀹氫箟楂樺害涓庢渶澶ч珮搴︼紝浣跨敤table榛樿鍊�
+ if (!this.height && !this.maxHeight) {
+ return null;
+ }
+ // 瀹氫箟浜嗘渶澶ч珮搴﹀垯涓嶄娇鐢ㄩ珮搴�
+ if (this.maxHeight) {
+ return null;
+ }
+ // 浣跨敤褰撳墠瀹氫箟鐨勯珮搴�
+ return this.height;
+ },
+ getMaxHeight() {
+ // 娌℃湁瀹氫箟楂樺害涓庢渶澶ч珮搴︼紝浣跨敤table榛樿鍊�
+ if (!this.height && !this.maxHeight) {
+ return null;
+ }
+ // 瀹氫箟浜嗘渶澶ч珮搴︿娇鐢ㄦ渶澶ч珮搴�
+ if (this.maxHeight) {
+ return this.maxHeight;
+ }
+ // 涓嶄娇鐢ㄦ渶澶ч珮搴�
+ return null;
+ },
+ getSelectedOptions(column) {
+ if (column.bind && column.bind.data && column.bind.data.length > 0) {
+ return column.bind.data;
+ }
+ return [];
+ },
+ formatterClick(row, column, event) {
+ if (column.click) {
+ column.click(row, column, event);
+ event.stopPropagation && event.stopPropagation();
+ } else {
+ this.rowClick(row, column, event);
+ }
+ },
+ initIndex({ row, rowIndex }) {
+ if (this.index) {
+ row.elementIndex = rowIndex;
+ }
+ // if (rowIndex%2!==0) {
+ // return "even-row";
+ // }
+ return;
+ },
+ toggleEdit(event) { },
+ setEditStatus(status) {
+ // this.columns.forEach((x) => {
+ // if (x.hasOwnProperty("edit")) {
+ // this.$set(x.edit, "status", status);
+ // }
+ // });
+ },
+ // 閫氳繃button鎸夐挳鍚敤缂栬緫
+ beginWithButtonEdit(scope) {
+ // url?rowData:tableData
+ this.rowBeginEdit(scope.row, this.columns[scope.$index]);
+ },
+ rowBeginEdit(row, column) {
+ if (this.edit.rowIndex != -1) {
+ return;
+ }
+ let _row = this.columns.find((x) => x.field == column.property);
+ if (_row) {
+ if (_row.readonly) {
+ return;
+ }
+ if (
+ //涓嶈兘缂栬緫鐨勫瓧娈点�乻witch锛岀偣鍑讳笉寮�鍚惎缂栬緫鍔熻兘
+ !_row.edit ||
+ (_row.edit.keep && _row.edit.type == 'switch')
+ ) {
+ return;
+ }
+ }
+ if (!this.enableEdit) return;
+ _errMsg = '';
+ // 缂栬緫鍓�
+ this.columns
+ .filter((x) => {
+ return x.bind && x.bind.data && x.bind.data.length;
+ })
+ .forEach((column) => {
+ let val = row[column.field];
+ if (typeof column.bind.data[0].key == 'string') {
+ if (typeof val == 'number') {
+ row[column.field] = row[column.field] + '';
+ }
+ } else {
+ //澶氶�夋垨鑰呯骇鑱旂紪杈戝洖鍐�,2023.01.06
+ if (Array.isArray(val)) {
+ val = val.map(v => {
+ return v * 1
+ });
+ row[column.field] = val;
+ }
+ else if (typeof val == 'string' && val) {
+ let _val = val * 1;
+ if (_val + '' === val) {
+ row[column.field] = _val;
+ }
+ }
+ }
+ });
+ if (!this.beginEdit(row, column, row.elementIndex)) return;
+ if (row.hasOwnProperty('elementIndex')) {
+ if (this.edit.rowIndex == row.elementIndex) {
+ return;
+ }
+ this.edit.rowIndex = row.elementIndex;
+ }
+ },
+ rowEndEdit(row, column, event) {
+ if (this.clickEdit && event) {
+ return true;
+ }
+ if (!this.enableEdit) {
+ if (!this.errorFiled) {
+ if (
+ this.edit.rowIndex != -1 &&
+ !this.endEditAfter(row, column, this.edit.rowIndex)
+ ) {
+ return false;
+ }
+ this.edit.rowIndex = -1;
+ }
+ return true;
+ }
+ if (!this.doubleEdit && event) {
+ return true;
+ }
+ let _row = this.url
+ ? this.rowData[this.edit.rowIndex]
+ : this.tableData[this.edit.rowIndex];
+ // 缁撴潫缂栬緫鍓�
+ if (!this.endEditBefore(_row, column, this.edit.rowIndex)) return false;
+ if (this.edit.rowIndex != -1) {
+ //2022.06.26淇琛ㄦ牸鍐呭鍒囨崲鍚庤鏁颁笉涓�鑷存椂涓嶈兘缂栬緫鐨勯棶棰�
+ if (this.edit.rowIndex - 1 > (this.rowData || this.tableData).length) {
+ this.edit.rowIndex = -1;
+ return;
+ }
+ let row = (this.url ? this.rowData : this.tableData)[
+ this.edit.rowIndex
+ ];
+ for (let index = 0; index < this.columns.length; index++) {
+ const _column = this.columns[index];
+ if (_column.edit) {
+ if (!this.validateRow(row, _column)) {
+ return;
+ }
+ }
+ }
+ }
+ if (!this.endEditAfter(_row, column, this.edit.rowIndex)) return false;
+ this.edit.rowIndex = -1;
+ return true;
+ },
+ validateRow(row, option1) {
+ if (!this.validateColum(option1, row)) {
+ this.errorFiled = option1.field;
+ // 2022.05.06 淇敼閿欒淇℃伅閲嶅鐨勯棶棰�
+ this.$message.error(option1.title + _errMsg);
+ return false;
+ }
+ this.errorFiled = '';
+ return true;
+ },
+ validateColum(option, data) {
+ if (option.hidden || option.bind || !data) return true;
+ let val = data[option.field];
+ if (option.require || option.required) {
+ if (val != '0' && (val === '' || val === undefined)) {
+ if (!this.errorFiled) {
+ _errMsg = '涓嶈兘涓虹┖';
+ }
+ return false;
+ }
+ }
+ if (!option.edit) {
+ return true;
+ }
+ let editType = option.edit.type;
+ // 楠岃瘉鏁板瓧
+ if (editType == 'int' || editType == 'decimal' || editType == 'number') {
+ if (val == '' || val == undefined) return true;
+ if (editType == 'decimal') {
+ if (!this.rule.decimal.test(val)) {
+ _errMsg = '鍙兘鏄暟瀛�';
+ return false;
+ }
+ } else if (!this.rule.decimal.test(val)) {
+ _errMsg = '鍙兘鏄暟瀛�';
+ return false;
+ }
+ if (
+ option.edit.min != undefined &&
+ typeof option.edit.min === 'number' &&
+ val < option.edit.min
+ ) {
+ _errMsg = '涓嶈兘灏忎簬' + option.edit.min;
+ return false;
+ }
+ if (
+ option.edit.max != undefined &&
+ typeof option.edit.max === 'number' &&
+ val > option.edit.max
+ ) {
+ _errMsg = '涓嶈兘澶т簬' + option.edit.max;
+ return false;
+ }
+ return true;
+ }
+
+ // 楠岃瘉瀛楃涓�
+ if (val && (editType == 'text' || editType == 'string')) {
+ if (
+ option.edit.min != undefined &&
+ typeof option.edit.min === 'number' &&
+ val.length < option.edit.min
+ ) {
+ _errMsg = '鑷冲皯' + option.edit.min + '涓瓧绗�';
+ return false;
+ }
+ if (
+ option.edit.max != undefined &&
+ typeof option.edit.max === 'number' &&
+ val.length > option.edit.max
+ ) {
+ _errMsg = '鏈�澶�' + option.edit.max + '涓瓧绗�';
+ return false;
+ }
+ }
+ return true;
+ },
+ delRow() {
+ let rows = this.getSelected();
+ if (rows.length == 0) return this.$Message.error('璇烽�夋嫨瑕佸垹闄ょ殑琛�!');
+
+ let data = this.url ? this.rowData : this.tableData;
+ let indexArr = this.getSelectedIndex();
+ if (indexArr.length == 0) {
+ return this.$Message.error(
+ "鍒犻櫎鎿嶄綔蹇呴』璁剧疆VolTable鐨勫睘鎬ndex='true'"
+ );
+ }
+ // if (indexArr.length == 0 || !this.key) {
+ // return this.$message.error(
+ // "璇疯缃甶ndex=true灞炴�ф垨鎸嘽olumns鐨勫瓧娈典负key"
+ // );
+ // }
+ if (indexArr.length == 0) {
+ // let keyValues=[]
+ // rows.forEach(x=>{
+ // if (x[this.key]) {
+ // }
+ // keyValues.push(x[this.key])
+ // })
+ // data.find(x=>)
+ } else {
+ for (let i = data.length - 1; i >= 0; i--) {
+ if (indexArr.indexOf(i) != -1) {
+ data.splice(i, 1);
+ }
+ }
+ }
+ this.edit.rowIndex = -1;
+ return rows;
+ },
+ addRow(row) {
+ if (!row) {
+ row = {};
+ }
+ this.columns.forEach((x) => {
+ // 2022.05.06 娣诲姞琛屾椂锛屽鏋滃垪鏈夌紪杈戝睘鎬э紝璁剧疆寮�鍚紪杈�(閬垮厤鍏抽棴缂栬緫鍚庯紝鏃犳硶鍐嶆鍚敤缂栬緫)??
+ //x.readonly = false;
+ if (!row.hasOwnProperty(x.field)) {
+ if (x.edit && x.edit.type == 'switch') {
+ row[x.field] = x.type == 'bool' ? false : 0;
+ } else if (!row.hidden) {
+ // 2020.09.06娣诲姞琛屾椂锛岃缃粯璁ゅ瓧娈�
+ row[x.field] = undefined;
+ }
+ }
+ });
+ if (!this.url) {
+ this.tableData.push(row);
+ return;
+ }
+ this.rowData.push(row);
+ },
+ viewImg(row, column, url, $event, index) {
+ $event.stopPropagation();
+ const imgs = this.getFilePath(row[column.field], column).map(x => { return x.path });
+ this.$refs.viewer.show(imgs, index);
+ //this.base.previewImg(url);
+ // window.open(row[column.field]);
+ },
+ link(row, column, $e) {
+ $e.stopPropagation();
+ this.$props.linkView(row, column);
+ },
+ getSelected() {
+ return this.selectRows;
+ },
+ getSelectedIndex() {
+ if (!this.index) {
+ // 鍙湁璁剧疆浜嗗睘鎬ndex鎵嶆湁绱㈠紩琛�
+ return [];
+ }
+ let indexArr = this.selectRows.map((x) => {
+ return x.elementIndex;
+ });
+ return indexArr || [];
+ },
+ GetTableDictionary(rows) {
+ // 鍒嗛〉鎴栧埛鏂版垨閲嶆柊缁戝畾鏁版嵁婧�
+ if (this.remoteColumns.length == 0 || !rows || rows.length == 0) return;
+ let remoteInfo = {};
+ for (let index = 0; index < this.remoteColumns.length; index++) {
+ const column = this.remoteColumns[index];
+ // column.bind.data.splice(0);
+ let key = column.bind.key;
+ let data = [];
+ rows.forEach((row) => {
+ if (row[column.field] || row[column.field] == '0') {
+ if (data.indexOf(row[column.field]) == -1) {
+ data.push(row[column.field]);
+ }
+ }
+ });
+ if (data.length > 0) {
+ remoteInfo[key] = data;
+ }
+ }
+ if (remoteInfo.length == 0) return;
+ // ha= Object.assign([], ha, hb)
+ this.http
+ .post('/api/Sys_Dictionary/GetTableDictionary', remoteInfo)
+ .then((dic) => {
+ dic.forEach((x) => {
+ this.remoteColumns.forEach((column) => {
+ if (column.bind.key == x.key) {
+ column.bind.data = Object.assign([], column.bind.data, x.data);
+ // column.bind.data.push(...x.data);
+ }
+ });
+ });
+ this.$emit('dicInited', dic);
+ });
+ },
+ load(query, isResetPage) {
+ // isResetPage閲嶇疆鍒嗛〉鏁版嵁
+ if (!this.url) return;
+ if (isResetPage) {
+ this.resetPage();
+ }
+ let param = {
+ page: this.paginations.page,
+ rows: this.paginationHide ? 1000 : this.paginations.rows,
+ sort: this.paginations.sort,
+ order: this.paginations.order,
+ wheres: [] // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+ };
+ let status = true;
+ // 鍚堝苟鏌ヨ淇℃伅(鍖呮煡璇㈠垎椤点�佹帓搴忋�佹煡璇㈡潯浠剁瓑)
+ if (query) {
+ param = Object.assign(param, query);
+ }
+ /* 鏌ヨ鍓嶅鐞�(濡傛灉闇�瑕佹煡璇㈡潯浠讹紝瀹炵幇缁勪欢鏂规硶loadBefore鏂规硶鍗冲彲:
+ loadBefore=(param, callBack)=>{
+ param.wheres = [{ name: "PhoneNo", value: "13419098211" }];
+ callBack(true);
+ })
+ */
+ this.$emit('loadBefore', param, (result) => {
+ status = result;
+ });
+ if (!status) return;
+
+ if (param.wheres && param.wheres instanceof Array) {
+ param.wheres = JSON.stringify(param.wheres);
+ }
+ this.loading = true;
+ let url = param.url || this.url;
+ param.url = undefined;
+ this.http.post(url, param).then(
+ (data) => {
+ //2021.06.04淇tree涓嶅埛鏂扮殑闂
+ if (this.rowKey) {
+ this.randomTableKey++;
+ this.rowData.splice(0);
+ }
+ this.loading = false;
+ let rows = data.rows || [];
+ // 鏌ヨ杩斿洖缁撴灉鍚庡鐞�
+ // 2020.10.30澧炲姞鏌ヨ鍚庤繑鍥炴墍鏈夌殑鏌ヨ淇℃伅
+ this.$emit(
+ 'loadAfter',
+ rows,
+ (result) => {
+ status = result;
+ },
+ data
+ );
+ if (!status) return;
+ this.GetTableDictionary(data.rows);
+
+ if (this.rowParentField) {
+ rows = this.base.convertTree(rows, null, this.rowKey, this.rowParentField);
+ }
+ this.rowData = rows;
+ this.paginations.total = data.total;
+ // 鍚堣
+ this.getSummaries(data);
+ // this.$nextTick(() => {
+ // this.$refs.table.doLayout();
+ // });
+ },
+ (error) => {
+ this.loading = false;
+ // this.$Message.error(error || "缃戠粶寮傚父");
+ }
+ );
+ }, // 鑾峰彇缁熻
+ getSummaries(data) {
+ if (!this.summary || !data.summary) return;
+ this.summaryData.splice(0);
+ // 寮�鍚簡琛屽彿鐨勶紝+1
+ if (this.columnIndex) {
+ this.summaryData.push('');
+ }
+ // 濡傛灉鏈塩heckbox锛屽簲璇ョ畻浣滄槸绗竴琛�
+ if (this.ck) {
+ this.summaryData.push('');
+ }
+
+ this.columns.forEach((col) => {
+ if (col.children && col.children.length) {
+ col.children.forEach((item) => {
+ this.getColumnSummaries(item, data);
+ });
+ } else {
+ this.getColumnSummaries(col, data);
+ }
+ });
+ if (this.summaryData.length > 0 && this.summaryData[0] == '') {
+ this.summaryData[0] = '鍚堣';
+ }
+ },
+ getColumnSummaries(col, data) {
+ if (!col.hidden) {
+ if (data.summary.hasOwnProperty(col.field)) {
+ let sum = data.summary[col.field];
+ //2024.01.07澧炲姞鑷畾涔夊悎璁℃牸寮忓寲
+ if (col.summaryFormatter) {
+ sum = col.summaryFormatter(sum, col, data, this.summaryData)
+ } else if (sum) {
+ sum =
+ (sum * 1.0).toFixed(col.numberLength || 2).replace('.00', '') *
+ 1.0;
+ }
+ this.summaryData.push(sum);
+ } else {
+ this.summaryData.push('');
+ }
+ }
+ },
+ getInputChangeSummaries() { },
+ handleSizeChange(val) {
+ this.paginations.size = val;
+ this.paginations.rows = val;
+ this.load();
+ },
+ handleCurrentChange(val) {
+ this.paginations.page = val;
+ this.load();
+ },
+ sortChange(sort) {
+ this.paginations.sort = sort.prop;
+ this.paginations.order = sort.order == 'ascending' ? 'asc' : 'desc';
+ this.load();
+ },
+ resetPage() {
+ // 閲嶇疆鏌ヨ鍒嗛〉
+ // this.paginations.rows = 30;
+ this.paginations.page = 1;
+ },
+ selectionChange(selection) {
+ // console.log(selection);
+ // 閫夋嫨琛屼簨浠�,鍙湁鍗曢�夋墠瑙﹀彂
+ this.selectRows = selection;
+ if (this.single) {
+ if (selection.length == 1) {
+ this.$emit('rowChange', selection[0]);
+ }
+ if (selection.length > 1) {
+ let _row = selection[selection.length - 1];
+ this.$refs.table.toggleRowSelection(selection[0]);
+ this.selectRows = [_row];
+ }
+ }
+ // 灏唖electionchange鏆撮湶鍑哄幓
+ this.$emit('selectionChange', selection);
+ },
+ getColor(row, column) {
+ let val = row[column.field];
+ if (column.getColor && typeof column.getColor === 'function') {
+ let _color = column.getColor(row, column);
+ if (_color) {
+ return _color;
+ }
+ }
+ if (!val && val != '0') {
+ return undefined;
+ }
+ if (!this.formatConfig[column.field]) {
+ this.formatConfig[column.field] = [val];
+ return this.colors[0];
+ }
+ let index = this.formatConfig[column.field].indexOf(val);
+ if (index != -1) {
+ return this.colors[index];
+ }
+ if (this.formatConfig[column.field].length > 5) {
+ return '';
+ }
+
+ if (index == -1) {
+ this.formatConfig[column.field].push(val);
+ index = this.formatConfig[column.field].length - 1;
+ }
+ return this.colors[index] || 'info';
+ },
+ formatterDate(row, column) {
+ return (row[column.field] || '').substr(0, 10);
+ },
+ formatter(row, column, template) {
+ if (!template) return row[column.property];
+ let val = row[column.field];
+ if (!val && val != 0) return val;
+ // 鏄惁鍊�
+ if (column.edit && column.edit.type == 'switch') {
+ return val ? '鏄�' : '鍚�';
+ }
+ if (!column.bind || !column.bind.data) {
+ return row[column.field];
+ }
+
+ if (column.edit && (column.edit.type == 'selectList'
+ || column.edit.type == 'treeSelect'
+ || column.bind.type == "cascader"
+ || column.bind.type == "treeSelect")) {
+ if (!Array.isArray(val)) {
+ row[column.field] = (val + '').split(',');
+ } else {
+ val = val.join(',');
+ }
+ return this.getSelectFormatter(column, val);
+ }
+ // 缂栬緫澶氶�塼able鏄剧ず
+ // if (
+ // column.bind.type == "selectList" ||
+ // column.bind.type == "checkbox" ||
+ // column.bind.type == "cascader" ||
+ // column.bind.type == "treeSelect"
+ // ) {
+ if (typeof val === 'string' && val.indexOf(',') != -1) {
+ return this.getSelectFormatter(column, val);
+ }
+ //}
+ let source = column.bind.data.filter((x) => {
+ // return x.key != "" && x.key == val;
+ // 2020.06.06淇鍗曠嫭浣跨敤table缁勪欢鏃�,key涓烘暟瀛�0鏃惰浆鎹㈡垚鏂囨湰澶辫触鐨勯棶棰�
+ return x.key !== '' && x.key !== undefined && x.key + '' === val + '';
+ });
+ if (source && source.length > 0) val = source[0].label || source[0].value;
+ return val;
+ },
+ getSelectFormatter(column, val) {
+ // 缂栬緫澶氶�塼able鏄剧ず
+ let valArr = (val + "").split(",");
+ for (let index = 0; index < valArr.length; index++) {
+ (column.bind.orginData && column.bind.orginData.length
+ ? column.bind.orginData
+ : column.bind.data)
+ .forEach((x) => {
+ // 2020.06.06淇鏁版嵁婧愪负selectList鏃�,key涓烘暟瀛�0鏃朵笉鑳借浆鎹㈡枃鏈殑闂
+ if (x.key !== "" && x.key !== undefined && x.key + "" == valArr[index] + "") {
+ valArr[index] = x.label || x.value;
+ }
+ });
+ }
+ return valArr.join(",");
+ },
+ onChange(scope, val, event, column) {
+ // 2020.09.03淇onChange涓嶈Е鍙戠殑闂
+ let row = scope.row;
+ if (column.onChange && !column.onChange(row, val, event)) {
+ return;
+ }
+ // 杈撳叆妗嗘眰鍜屽疄鏃惰绠�
+ this.getInputSummaries(scope, val, event, column);
+ },
+ // input杈撳叆瀹炴椂姹傚拰
+ getInputSummaries(scope, val, event, column) {
+ // column鍒楄缃簡summary灞炴�х殑鎵嶈绠楀��
+ if (!column.summary) return;
+ let sum = 0;
+ // let _index = 0;
+ (this.url ? this.rowData : this.tableData).forEach((x, index) => {
+ if (x.hasOwnProperty(column.field) && !isNaN(x[column.field])) {
+ // _index = index;
+ sum += x[column.field] * 1;
+ }
+ });
+ if (sum) {
+ if (column.summary == 'avg') {
+ sum = sum / (this.rowData.length || this.tableData.length || 1);
+ }
+ sum =
+ (sum * 1.0).toFixed(column.numberLength || 2).replace('.00', '') *
+ 1.0;
+ }
+ this.summaryData[this.summaryIndex[column.field]] = sum;
+ },
+ getSummaryData({ columns, data }) {
+ return this.summaryData;
+ },
+ getCellStyle(row) {
+ // 2020.12.13澧炲姞璁剧疆鍗曞厓鏍奸鑹�
+ if (row.column.property) {
+ return (
+ this.cellStyleColumns[row.column.property] &&
+ this.cellStyleColumns[row.column.property](
+ row.row,
+ row.rowIndex,
+ row.columnIndex
+ )
+ );
+ }
+ },
+ compareDate(date1, date2) {
+ if (!date2) {
+ return true;
+ }
+ return (
+ date1.valueOf() <
+ (typeof date2 == 'number' ? date2 : new Date(date2).valueOf())
+ );
+ },
+ getDateOptions(date, item) {
+ //2021.07.17璁剧疆鏃堕棿鍙�夎寖鍥�
+ if ((!item.min && !item.max) || !date) {
+ return false;
+ }
+ if (item.min && item.min.indexOf(' ') == -1) {
+ //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+ item.min = item.min + ' 00:00:000';
+ }
+ return (
+ this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+ );
+ },
+ getDateFormat(column) {
+ if (column.format) {
+ return column.format;
+ }
+ if (column.edit.type == "month") {
+ return "YYYY-MM";
+ }
+ //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+ return column.edit.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss';
+ },
+ userSelect(selection, row) {
+ this.selectRows = selection;
+ if (!this.single) {
+ this.$emit('rowChange', { row, selection });
+ }
+ },
+ isEmptyTag(row, column) {
+ if (!row[column.field] && row[column.field] != '0') {
+ return 'empty-tag';
+ }
+ return '';
+ },
+ filterChildrenColumn(children) {
+ if (!children) {
+ return [];
+ }
+ return children.filter((x) => {
+ return !x.hidden;
+ });
+ },
+ initColumnDisabled(row, column) {
+ return column.getDisabled && column.getDisabled(row, column);
+ },
+ showUpload(row, column) {
+ this.fileInfo = (row[column.field] || '').split(",")
+ .filter(x => { return x })
+ .map(item => {
+ return { path: item, name: "" };
+ })
+ this.currentRow = row;
+ this.currentColumn = column;
+ if (this.currentColumn.edit.autoUpload === undefined) {
+ this.currentColumn.edit.autoUpload = true;
+ }
+ if (this.currentColumn.edit.multiple === undefined) {
+ this.currentColumn.edit.multiple = false;
+ }
+
+ if (this.currentColumn.edit.url === undefined) {
+ this.uploadUrl = 'api/' + (this.url || '').replace('/api', 'api').split('/')[1] + '/upload'
+ } else {
+ this.uploadUrl = this.currentColumn.edit.url;
+ }
+ this.uploadModel = true;
+ },
+ uploadAfter(result, files) {
+ this.currentColumn.uploadAfter && this.currentColumn.uploadAfter(result, files);
+ return true;
+ },
+ uploadBefore(files, params) {
+ this.currentColumn.uploadBefore && this.currentColumn.uploadBefore(files, this.currentRow, params);
+ return true;
+ },
+ saveUpload() {
+ //鐢熸垚淇濆瓨鍚庤繑鍥炵殑璺緞
+ let arr = this.fileInfo.map((x) => {
+ if (x.path) {
+ return x.path;
+ }
+ return result.data + x.name;
+ });
+
+ this.currentRow[this.currentColumn.field] = arr.join(",");
+ this.uploadModel = false;
+ return true;
+ },
+ expandChange(row, expandedRows) { // 褰撶敤鎴峰鏌愪竴琛屽睍寮�鎴栬�呭叧闂殑鏃�
+ if (!this.defaultExpandAll && !this.lazy) {
+ if (expandedRows) {
+ if (this.expandRowKeys.indexOf(row[this.rowKey]) == -1) {
+ this.expandRowKeys.push(row[this.rowKey])
+ }
+ } else {
+ let _index = this.expandRowKeys.findIndex(x => { return x == row[this.rowKey] });
+ if (_index != -1) {
+ this.expandRowKeys.splice(_index, 1);
+ }
+ }
+ }
+ },
+ handleImageError($e) {
+ $e.target.src = this.defaultImg;
+ },
+ cellSpanMethod({ row, column, rowIndex, columnIndex }) {
+ return this.spanMethod({ row, column, rowIndex, columnIndex }, this.url ? this.rowData : this.tableData)
+ }
+ }
+});
+</script>
+<style lang="less" scoped>
+.vol-table {
+ position: relative;
+
+ .mask {
+ opacity: 0.2;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: #d0d0d0;
+ z-index: 100;
+ }
+
+ .message {
+ text-align: center;
+ color: #635c5c;
+ font-size: 15px;
+ font-weight: 600;
+ background: #eee;
+ transform: translateY(-50%);
+ top: 50%;
+ position: absolute;
+ z-index: 200;
+ left: 0;
+ right: 0;
+ width: 150px;
+ margin: 0 auto;
+ line-height: 40px;
+ border-radius: 4px;
+ border: 1px solid #a09e9e;
+ }
+}
+
+.e-item {
+ display: flex;
+
+ >div:first-child {
+ flex: 1;
+ }
+}
+
+.vol-table ::v-deep(.el-pager .number) {
+ padding: 0 7px;
+ border-radius: 5px;
+ border: 1px solid #e6e6e6;
+ margin-left: 8px;
+ font-weight: 500;
+ min-width: 28px;
+ height: 27px;
+}
+
+.vol-table ::v-deep(.el-pager .number.active) {
+ background: #ed4014;
+ color: #fff;
+}
+
+.vol-table ::v-deep(.el-pagination .el-input__wrapper) {
+ height: 27px;
+}
+
+.vol-table .t-file {
+ color: #1e8cff;
+ cursor: pointer;
+ border-bottom: 1px solid;
+ padding-bottom: 2px;
+}
+
+.vol-table .empty-tag {
+ border: none;
+ background: none;
+}
+
+.v-table ::v-deep(.el-date-editor .el-icon-date),
+.v-table ::v-deep(.el-date-editor .el-icon-time) {
+ width: 10px;
+}
+
+.column-required {
+ position: relative;
+ color: #f20303;
+ font-size: 14px;
+ top: 2px;
+ right: 2px;
+}
+</style>
+
+<style scoped>
+/* .v-table ::v-deep(.even-row){
+ background: rgb(245,247,250);
+} */
+.pagination {
+ text-align: right;
+ padding: 2px 28px;
+ border: 1px solid #eee;
+ border-top: 0px;
+}
+
+/* .v-table ::v-deep(.el-input .el-input__inner) {
+ padding: 0 7px;
+} */
+.v-table ::v-deep(.el-table__header th) {
+ /* padding: 0px !important; */
+ background-color: #f8f8f9 !important;
+ font-size: 13px;
+ /* height: 46px; */
+ color: #616161;
+}
+
+.v-table ::v-deep(.el-table__header th.is-sortable) {
+ padding: 3px !important;
+}
+
+.vol-table.text-inline ::v-deep(.el-table__body .cell),
+.vol-table.text-inline ::v-deep(.el-table__header-wrapper .cell) {
+ word-break: inherit !important;
+ white-space: nowrap !important;
+}
+
+/* .v-table ::v-deep(.el-table__body td) {
+ padding: 9px 0 !important;
+} */
+
+.v-table ::v-deep(.el-table__footer td) {
+ padding: 7px 0 !important;
+}
+
+.vol-table ::v-deep(.el-table-column--selection .cell) {
+ display: inline;
+}
+
+.vol-table.text-inline ::v-deep(.el-table th > .cell) {
+ white-space: nowrap !important;
+}
+
+.vol-table .table-img {
+ height: 40px;
+ border-radius: 5px;
+ margin-right: 10px;
+ width: 40px;
+ object-fit: cover;
+}
+
+.vol-table .table-img:hover {
+ cursor: pointer;
+}
+
+.vol-table ::v-deep(.cell) {
+ padding: 2px 10px;
+}
+
+.vol-table ::v-deep(.cell .el-tag) {
+ padding: 5px 9px;
+}
+
+.table-input {
+ color: rgb(104, 103, 103);
+ padding: 3px 10px;
+ height: 32px;
+ line-height: 32px;
+ width: 100%;
+ border-radius: 4px;
+ border: 1px solid #dcdcdc;
+}
+
+.table-input:focus {
+ outline: 1px solid #49a3fd;
+}
+
+.small-table ::v-deep(.el-pagination .el-input__wrapper) {
+ height: 27px;
+}
+
+.small-table ::v-deep(.el-table__cell) {
+ padding: 6px 0;
+ font-size: 13px;
+
+}
+
+.small-table ::v-deep(.cell-tag) {
+ padding: 0 5px !important;
+ height: 19px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue"
new file mode 100644
index 0000000..492ff56
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue"
@@ -0,0 +1,917 @@
+<template>
+ <div class="upload-container">
+ <div>
+ <div class="input-btns" style="margin-bottom: 10px">
+ <input ref="input" type="file" style="display: none" @change="handleChange" :multiple="multiple"
+ :accept="accept ? accept : (img ? 'image/*' : (excel == true ? '.xls,.xlsx' : ''))" />
+ <div v-if="img" class="upload-img">
+ <!-- v-for="(file,index) in fileInfo.length>0?fileInfo: files" -->
+ <div v-for="(file, index) in files" :key="index" class="img-item">
+ <div class="operation">
+ <div class="action">
+ <i class="el-icon-view view" @click="previewImg(index)"></i>
+ <i class="el-icon-delete remove" @click="removeFile(index)"></i>
+ </div>
+ <div class="mask"></div>
+ </div>
+
+ <img :src="getImgSrc(file, index)" @error="handleImageError" />
+ </div>
+ <div v-show="!autoUpload || (autoUpload && files.length < maxFile)" class="img-selector"
+ :class="getSelector()">
+ <div class="selector" @click="handleClick">
+ <i class="el-icon-camera-solid"></i>
+ </div>
+ <div v-if="!autoUpload" class="s-btn" :class="{ readonly: changed }" @click="upload">
+ <div>{{ loadText }}</div>
+ </div>
+ </div>
+ </div>
+ <el-button v-else @click="handleClick">閫夋嫨{{ img ? '鍥剧墖' : '鏂囦欢' }}</el-button>
+
+ <el-button v-if="!autoUpload && !img" type="info" :disabled="changed" @click="upload(true)"
+ :loading="loadingStatus">涓婁紶鏂囦欢</el-button>
+ </div>
+ <slot></slot>
+ <div v-if="desc">
+ <el-alert :title="getText() + '鏂囦欢澶у皬涓嶈秴杩�' + (maxSize || 50) + 'M'" type="info" show-icon>
+ </el-alert>
+ </div>
+ <slot name="content"></slot>
+ <div v-if="!img">
+ <ul class="upload-list" v-show="fileList">
+ <li class="list-file" v-for="(file, index) in files" :key="index">
+ <a>
+ <span @click="fileOnClick(index, file)">
+ <i :class="format(file)"></i>
+ {{ file.name }}
+ </span>
+ </a>
+ <span @click="removeFile(index)" class="file-remove">
+ <i class="el-icon-close"></i>
+ </span>
+ </li>
+ </ul>
+ </div>
+ <slot name="tip"></slot>
+ </div>
+ <vol-image-viewer ref="viewer"></vol-image-viewer>
+ </div>
+</template>
+<script>
+let OSS = {}// require('ali-oss');
+import VolImageViewer from './VolImageViewer.vue';
+export default {
+ components: {
+ 'vol-image-viewer': VolImageViewer
+ },
+ props: {
+ desc: {
+ //鏄惁鏄剧ず榛樿浠嬬粛
+ //鏄惁澶氶��
+ type: Boolean,
+ default: false
+ },
+ fileInfo: {
+ //鐢ㄤ簬鎺ユ敹涓婁紶鐨勬枃浠讹紝涔熷彲浠ュ姞浠ラ粯璁ゅ�硷紝鏄剧ず宸蹭笂浼犵殑鏂囦欢锛岀敤鎴蜂笂浼犲悗浼氳鐩栭粯璁ゅ��
+ type: Array,
+ default: () => {
+ return [];
+ } //鏍煎紡[{name:'1.jpg',path:'127.0.01/1.jpg'}]
+ },
+ downLoad: {
+ //鏄惁鍙互鐐瑰嚮鏂囦欢涓嬭浇
+ type: Boolean,
+ default: true
+ },
+ multiple: {
+ //鏄惁澶氶��
+ type: Boolean,
+ default: false
+ },
+ maxFile: {
+ //鏈�澶氬彲閫夋枃浠舵暟閲忥紝蹇呴』multiple=true锛屾墠浼氱敓鏁�
+ type: Number,
+ default: 5
+ },
+ maxSize: {
+ //鏂囦欢闄愬埗澶у皬3M
+ type: Number,
+ default: 50
+ },
+
+ autoUpload: {
+ //閫夋嫨鏂囦欢鍚庢槸鍚﹁嚜鍔ㄤ笂浼�
+ type: Boolean,
+ default: true
+ },
+ img: {
+ //鍥剧墖绫诲瀷 img>excel>fileTypes涓夌鏂囦欢绫诲瀷浼樺厛绾�
+ type: Boolean,
+ default: false
+ },
+ excel: {
+ //excel鏂囦欢
+ type: Boolean,
+ default: false
+ },
+ fileTypes: {
+ //鎸囧畾涓婁紶鏂囦欢鐨勭被鍨�
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ url: {
+ //涓婁紶鐨剈rl
+ type: String,
+ default: ''
+ },
+ uploadBefore: {
+ //杩斿洖false浼氫腑姝㈡墽琛�
+ //涓婁紶鍓�
+ type: Function,
+ default: (files) => {
+ return true;
+ }
+ },
+ uploadAfter: {
+ //杩斿洖false浼氫腑姝㈡墽琛�
+ //涓婁紶鍚�
+ type: Function,
+ default: (result, files) => {
+ return true;
+ }
+ },
+ onChange: {
+ //閫夋嫨鏂囦欢鏃� //杩斿洖false浼氫腑姝㈡墽琛�
+ type: Function,
+ default: (files) => {
+ return true;
+ }
+ },
+ // clear: {
+ // //涓婁紶瀹屾垚鍚庢槸鍚︽竻绌烘枃浠跺垪琛�
+ // type: Boolean,
+ // default: true
+ // },
+ fileList: {
+ //鏄惁鏄剧ず閫夋嫨鐨勬枃浠跺垪琛�
+ type: Boolean,
+ default: true
+ },
+ fileClick: {
+ //鐐瑰嚮鏂囦欢浜嬩欢
+ type: Function,
+ default: (index, file, files) => {
+ return true;
+ }
+ },
+ removeBefore: {
+ //绉婚櫎鏂囦欢浜嬩欢
+ type: Function,
+ default: (index, file, files) => {
+ return true;
+ }
+ },
+ append: {
+ //姝ゅ睘鎬у凡搴熷純锛屽鏂囦欢涓婁紶锛岄粯璁よ拷鍔犳枃浠�
+ type: Boolean,
+ default: false
+ },
+ compress: {
+ //寮�鍚浘鐗囧帇缂�,鍚庨潰鏍规嵁闇�瑕佸啀瀹屽杽
+ type: Boolean,
+ default: true
+ },
+ compressMinSize: {
+ //鍘嬬缉鐨勬渶灏忔瘮渚�
+ type: Number,
+ default: 0.1
+ },
+ accept: {
+ //鎺ュ彈鐨勬枃浠剁被鍨�
+ type: String,
+ default: ''
+ }
+ },
+ data() {
+ return {
+ defaultImg: new URL('@/assets/imgs/error-img.png', import.meta.url).href,
+ changed: false, //鎵嬪姩涓婁紶鎴愬姛鍚庣姝㈤噸澶嶄笂浼狅紝蹇呴』閲嶆柊閫夋嫨
+ model: true,
+ files: [],
+ bigImg: '',
+ imgTypes: ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'jfif'],
+ loadingStatus: false,
+ loadText: '涓婁紶鏂囦欢'
+ };
+ },
+ created() {
+ //榛樿鏈夊浘鐗囩殑绂佹涓婁紶鎿嶄綔
+ if (this.fileInfo) {
+ this.changed = true;
+ }
+ this.cloneFile(this.fileInfo);
+ },
+ watch: {
+ fileInfo: {
+ handler(files) {
+ this.cloneFile(files);
+ },
+ deep: true
+ }
+ },
+ methods: {
+ cloneFile(files) {
+ this.files = files.map((x) => {
+ return {
+ name: x.name || this.getFileName(x.path),
+ path: x.path
+ };
+ });
+ },
+ getFileName(path) {
+ if (!path) {
+ return '鏈畾涔夋枃浠跺悕';
+ }
+ let _index = path.lastIndexOf('/');
+ return path.substring(_index + 1);
+ },
+ previewImg(index) {
+ const imgs = this.files.map(x => { return this.getImgSrc(x) });
+ this.$refs.viewer.show(imgs, index);
+ // this.base.previewImg(this.getImgSrc(this.files[index]));
+ // window.open(this.getImgSrc((this.files.length>0?this.files:this.fileInfo)[index]));
+ },
+ getSelector() {
+ if (this.autoUpload) {
+ return 'auto-selector';
+ }
+ return 'submit-selector';
+ },
+ getImgSrc(file, index) {
+ if (file.hasOwnProperty('path')) {
+ if (this.base.isUrl(file.path)) {
+ return file.path;
+ }
+ //2020.12.27澧炲姞base64鍥剧墖鎿嶄綔
+ if (file.path.indexOf('/9j/') != -1) {
+ return 'data:image/jpeg;base64,' + file.path;
+ }
+ if (file.path.substr(0, 1) == '/') {
+ file.path = file.path.substr(1);
+ }
+ return this.http.ipAddress + file.path;
+ }
+ return window.URL.createObjectURL(file);
+ },
+ fileOnClick(index, file) {
+ if (!this.fileClick(index, file, this.files)) {
+ return;
+ }
+ //鐐瑰嚮涓嶄笅杞�
+ if (!this.downLoad) {
+ return;
+ }
+ if (!file.path) {
+ this.$message.error('璇峰厛涓婁紶鏂囦欢');
+ return;
+ }
+ this.base.dowloadFile(
+ file.path,
+ file.name,
+ {
+ Authorization: this.$store.getters.getToken()
+ },
+ this.http.ipAddress
+ );
+ },
+ getText() {
+ if (this.img) {
+ return '鍙兘涓婁紶鍥剧墖,';
+ } else if (this.excel) {
+ return '鍙兘涓婁紶excel鏂囦欢,';
+ }
+ },
+ handleClick() {
+ this.$refs.input.click();
+ },
+ handleChange(e) {
+ //this.compress寮�鍚浘鐗囧帇缂�,鍚庨潰鏍规嵁闇�瑕佸啀瀹屽杽
+ // this.clearFiles();
+ var result = this.checkFile(e.target.files);
+ if (!result) {
+ return;
+ }
+
+ this.changed = false;
+ //濡傛灉浼犲叆浜咶ileInfo闇�瑕佽嚜琛屽鐞嗙Щ闄ileInfo
+ if (!this.onChange(e.target.files)) {
+ return;
+ }
+ for (let index = 0; index < e.target.files.length; index++) {
+ const element = e.target.files[index];
+ element.input = true;
+ }
+ if (!this.multiple) {
+ this.files.splice(0);
+ }
+ this.files.push(...e.target.files);
+
+ this.$refs.input.value = null;
+ if (this.autoUpload && result) {
+ this.upload(false);
+ }
+ },
+ removeFile(index) {
+ //濡傛灉浼犲叆浜咶ileInfo闇�瑕佽嚜琛屽鐞嗙Щ闄ileInfo
+ //t绉婚櫎鏂囦欢
+ let removeFile = this.files[index];
+ //鍒犻櫎鐨勮繕娌′笂浼犵殑鏂囦欢
+ if (removeFile.input) {
+ this.files.splice(index, 1);
+ } else {
+ this.fileInfo.splice(index, 1);
+ }
+ if (!this.removeBefore(index, removeFile, this.fileInfo)) {
+ return;
+ }
+ },
+ clearFiles() {
+ this.files.splice(0);
+ },
+ getFiles() {
+ return this.files;
+ },
+ convertToFile(dataurl, filename) {
+ let arr = dataurl.split(',');
+ let mime = arr[0].match(/:(.*?);/)[1];
+ let suffix = mime.split('/')[1];
+ let bstr = atob(arr[1]);
+ let n = bstr.length;
+ let u8arr = new Uint8Array(n);
+ while (n--) {
+ u8arr[n] = bstr.charCodeAt(n);
+ }
+ // new File杩斿洖File瀵硅薄 绗竴涓弬鏁版槸 ArraryBuffer 鎴� Bolb 鎴朅rrary 绗簩涓弬鏁版槸鏂囦欢鍚�
+ // 绗笁涓弬鏁版槸 瑕佹斁鍒版枃浠朵腑鐨勫唴瀹圭殑 MIME 绫诲瀷
+ return new File([u8arr], `${filename}.${suffix}`, {
+ type: mime,
+ input: true
+ });
+ },
+ async compressImg(file) {
+ let fileSize = file.size / 1024 / 1024;
+ let read = new FileReader();
+ read.readAsDataURL(file);
+ return new Promise((resolve, reject) => {
+ read.onload = (e) => {
+ let img = new Image();
+ img.src = e.target.result;
+ let _this = this;
+ img.onload = function () {
+ //榛樿鎸夋瘮渚嬪帇缂�
+ let w = this.width;
+ let h = this.height;
+ let canvas = document.createElement('canvas');
+ let ctx = canvas.getContext('2d');
+ canvas.setAttribute('width', w);
+ canvas.setAttribute('height', h);
+ ctx.drawImage(this, 0, 0, w, h);
+ let rate = 0.3;
+ if (fileSize > 2) {
+ rate = 0.1;
+ } else if (fileSize > 1) {
+ rate = 0.1;
+ }
+ if (_this.compressMinSize > rate) {
+ rate = _this.compressMinSize;
+ }
+ // rate=1;
+ let base64 = canvas.toDataURL('image/jpeg', rate);
+ resolve(_this.convertToFile(base64, file.name));
+ };
+ };
+ });
+ },
+ async uploadOSS() {
+ await this.http.get('api/alioss/getAccessToken', {}, false).then(async (x) => {
+ if (!x.status) return this.$Message.error(x.message);
+ let client = new OSS({
+ // yourRegion濉啓Bucket鎵�鍦ㄥ湴鍩熴�備互鍗庝笢1锛堟澀宸烇級涓轰緥锛孯egion濉啓涓簅ss-cn-hangzhou銆�
+ region: x.data.region,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勪复鏃惰闂瘑閽ワ紙AccessKey ID鍜孉ccessKey Secret锛夈��
+ accessKeyId: x.data.accessKeyId,
+ accessKeySecret: x.data.accessKeySecret,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勫畨鍏ㄤ护鐗岋紙SecurityToken锛夈��
+ stsToken: x.data.securityToken,
+ // 濉啓Bucket鍚嶇О銆�
+ bucket: x.data.bucket
+ });
+ console.log(this.files);
+ for (let index = 0; index < this.files.length; index++) {
+ const file = this.files[index];
+ if (file.input) {
+ let result = await client.put(
+ x.data.bucketFolder + '/' + x.data.unique + file.name,
+ file
+ );
+ // 濡傛灉鏈夐厤缃甤dn锛岃繑鍥炵殑url闇�瑕佹嫾鎺dn
+ if (window.oss.ali.cdn) {
+ result.url = new URL(x.data.bucketFolder + '/' + x.data.unique + file.name, window.oss.ali.cdn).toString();
+ }
+ file.path = result.url;
+ file.newName = x.data.unique + file.name;
+ }
+ }
+
+ this.fileInfo.splice(0);
+ // }
+ let _files = this.files.map((file) => {
+ return {
+ name: file.newName || file.name,
+ path: file.path
+ };
+ });
+ this.fileInfo.push(..._files);
+ //2021.09.25淇鏂囦欢涓婁紶鍚庝笉鑳藉悓鏃朵笅杞界殑闂
+ this.files = _files;
+ });
+ return;
+ },
+ async upload(vail) {
+ if (vail && !this.checkFile()) return false;
+ if (!this.url) {
+ return this.$message.error('娌℃湁閰嶇疆濂経rl');
+ }
+ if (!this.files || this.files.length == 0) {
+ return this.$message.error('璇烽�夋嫨鏂囦欢');
+ }
+ //澧炲姞涓婁紶鏃惰嚜瀹氫箟鍙傛暟锛屽悗鍙颁娇鐢ㄨ幏鍙朥tilities.HttpContext.Current.Request.Query["瀛楁"]
+ let params = {};
+ if (!this.uploadBefore(this.files, params)) {
+ return;
+ }
+ let paramText = "";
+ if (Object.keys(params).length) {
+ paramText = "?1=1";
+ for (const key in params) {
+ let value = params[key];
+ if (typeof (value) == 'object') {
+ value = JSON.stringify(value)
+ }
+ paramText += `&${key}=${value}`
+ }
+ }
+
+ this.loadingStatus = true;
+ this.loadText = '涓婁紶涓�..';
+ if (window.oss && window.oss.ali.use) {
+ await this.uploadOSS();
+ this.loadingStatus = false;
+ this.loadText = '涓婁紶鏂囦欢';
+ if (!this.uploadAfter({ status: true }, this.fileInfo, this.files)) {
+ this.changed = false;
+ return;
+ } else {
+ this.changed = true;
+ }
+ this.$message.success('涓婁紶鎴愬姛');
+ return;
+ }
+
+ var forms = new FormData();
+ for (let index = 0; index < this.files.length; index++) {
+ let file = this.files[index];
+ if (file.input) {
+ //2023.07灞忚斀鍥剧墖鍘嬬缉
+ // let name = file.name.split('.');
+ // name = name[name.length - 1].toLocaleLowerCase();
+ // let isImg = this.imgTypes.indexOf(name) != -1;
+ // if (isImg && (name == 'jpg' || name == 'jpeg')) {
+ // //>200KB鐨勫紑鍚帇缂�
+ // if (isImg && file.size / 1024 / 1024 > 0.2) {
+ // console.log('鍘嬬缉鍓�' + file.size);
+ // file = await this.compressImg(file);
+ // file.compress = true;
+ // this.files[index] = file;
+ // this.files[index].input = true;
+ // console.log('鍘嬬缉鍚�' + file.size);
+ // }
+ // }
+ forms.append('fileInput', file, file.name);
+ }
+ }
+ // forms.append("fileInput", this.files);
+
+ this.http
+ .post(this.url + paramText, forms, this.autoUpload ? '姝e湪涓婁紶鏂囦欢' : '',
+ //楂樼増鏈琣xios杩欓噷蹇呴』瑕佹寚瀹歨eader
+ {
+ headers: { 'Content-Type': 'multipart/form-data' }
+ })
+ .then(
+ (x) => {
+ // this.$refs.uploadFile.clearFiles();
+ this.loadingStatus = false;
+ this.loadText = '涓婁紶鏂囦欢';
+ if (!this.uploadAfter(x, this.files)) {
+ this.changed = false;
+ return;
+ } else {
+ this.changed = true;
+ }
+ this.$message.success(x.message);
+ this.changed = x.status;
+ if (!x.status) {
+ // this.files = null;
+ return;
+ }
+ //鍗曢�夋竻闄や互鍓嶇殑鏁版嵁
+ // if (!this.multiple) {
+ this.fileInfo.splice(0);
+ // }
+ let _files;
+ if (this.multiple && this.base.isUrl(x.data.split(',')[0])) {
+ _files = this.files.filter((file) => { return file.path });
+ _files.push(...x.data.split(',').map(x => {
+ return {
+ name: x.split('/').pop(),
+ path: x
+ }
+ }))
+ } else {
+ _files = this.files.map((file) => {
+ if (file.path) {
+ return file;
+ }
+ return {
+ name: file.name,
+ path: file.path || (this.base.isUrl(x.data) ? x.data : (x.data + file.name))
+ };
+ });
+ }
+ this.fileInfo.push(..._files);
+ //2021.09.25淇鏂囦欢涓婁紶鍚庝笉鑳藉悓鏃朵笅杞界殑闂
+ this.files = _files;
+ },
+ (error) => {
+ this.loadText = '涓婁紶鏂囦欢';
+ this.loadingStatus = false;
+ }
+ );
+ },
+ format(file, checkFileType) {
+ const format =
+ file.name
+ .split('.')
+ .pop()
+ .toLocaleLowerCase() || '';
+ let fileIcon = 'el-icon-document';
+ if (this.fileTypes.length > 0 && checkFileType != undefined) {
+ if (this.fileTypes.indexOf(format) != -1) {
+ return true;
+ }
+ return false;
+ }
+ if (
+ checkFileType &&
+ !(checkFileType instanceof Array) &&
+ checkFileType != 'img' &&
+ checkFileType != 'excel'
+ ) {
+ if (checkFileType.indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ if (checkFileType == 'img' || this.imgTypes.indexOf(format) > -1) {
+ if (checkFileType == 'img') {
+ if (this.imgTypes.indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ fileIcon = 'el-icon-picture-outline';
+ }
+ if (
+ ['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv'].indexOf(
+ format
+ ) > -1
+ ) {
+ fileIcon = 'el-icon-document';
+ }
+ if (['mp3', 'wav', 'wma', 'ogg', 'aac', 'flac'].indexOf(format) > -1) {
+ fileIcon = 'el-icon-document';
+ }
+ if (['doc', 'txt', 'docx', 'pages', 'epub', 'pdf'].indexOf(format) > -1) {
+ fileIcon = 'el-icon-document';
+ }
+ if (
+ checkFileType == 'excel' ||
+ ['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1
+ ) {
+ if (checkFileType == 'excel') {
+ if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ fileIcon = 'el-icon-document';
+ }
+ return fileIcon;
+ },
+ beforeUpload() { },
+ checkFile(inputFiles) {
+ const files = this.files;
+
+ if (
+ this.multiple &&
+ files.length + (inputFiles || []).length > (this.maxFile || 5)
+ ) {
+ this.$message.error(
+ '鏈�澶氬彧鑳介�夈��' +
+ (this.maxFile || 5) +
+ '銆�' +
+ (this.img ? '寮犲浘鐗�' : '涓枃浠�') +
+ ''
+ );
+ return false;
+ }
+ if (!inputFiles) {
+ inputFiles = this.files.filter((x) => {
+ return x.input;
+ });
+ }
+ let names = [];
+ for (let index = 0; index < inputFiles.length; index++) {
+ const file = inputFiles[index];
+ if (names.indexOf(file.name) != -1) {
+ file.name = '(' + index + ')' + file.name;
+ }
+ names.push(file.name);
+ if (this.img && !this.format(file, 'img')) {
+ this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸鍥剧墖鏍煎紡');
+ return false;
+ }
+ if (this.excel && !this.format(file, 'excel')) {
+ this.$message.error('閫夋嫨鐨勬枃浠躲��' + file.name + '銆戝彧鑳芥槸excel鏂囦欢');
+ return false;
+ }
+ if (
+ this.fileTypes &&
+ this.fileTypes.length > 0 &&
+ !this.format(file, this.fileTypes)
+ ) {
+ this.$message.error(
+ '閫夋嫨鐨勬枃浠躲��' +
+ file.name +
+ '銆戝彧鑳芥槸銆�' +
+ this.fileTypes.join(',') +
+ '銆戞牸寮�'
+ );
+ return false;
+ }
+ if (file.size > (this.maxSize || 50) * 1024 * 1024) {
+ this.$message.error(
+ '閫夋嫨鐨勬枃浠躲��' +
+ file.name +
+ '銆戜笉鑳借秴杩�:' +
+ (this.maxSize || 50) +
+ 'M'
+ );
+ return false;
+ }
+ }
+ return true;
+ },
+ handleImageError($e) {
+ $e.target.src = this.defaultImg;
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.upload-list {
+ padding-left: 0;
+ list-style: none;
+
+ .list-file {
+ line-height: 20px;
+ padding: 4px;
+ color: #515a6e;
+ border-radius: 4px;
+ transition: background-color 0.2s ease-in-out;
+ overflow: hidden;
+ position: relative;
+
+ font-size: 13px;
+
+ .file-remove {
+ display: none;
+ right: 0;
+ // margin-left: 50px;
+ color: #0e9286;
+ }
+ }
+
+ .list-file:hover {
+ cursor: pointer;
+
+ .file-remove {
+ display: initial;
+ }
+
+ color: #2d8cf0;
+ }
+}
+
+.upload-container {
+ display: inline-block;
+ width: 100%;
+ // padding: 10px;
+
+ // min-height: 250px;
+ border-radius: 5px;
+
+ .alert {
+ margin-top: 43px;
+ }
+
+ .button-group>* {
+ float: left;
+ margin-right: 10px;
+ }
+
+ .file-info>span {
+ margin-right: 20px;
+ }
+}
+
+.upload-img {
+ display: inline-block;
+
+ .img-item:hover .operation {
+ display: block;
+ }
+
+ .img-item,
+ .img-selector {
+ position: relative;
+ cursor: pointer;
+ margin: 0 10px 10px 0;
+ float: left;
+ width: 65px;
+ height: 65px;
+ border: 1px solid #c7c7c7;
+ overflow: hidden;
+ border-radius: 5px;
+ box-sizing: content-box;
+
+ img {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+
+ .operation {
+ display: none;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+
+ .action {
+ opacity: 0.6;
+ text-align: center;
+ background: #151515de;
+ font-size: 14px;
+ position: absolute;
+ z-index: 90;
+ width: 100%;
+ bottom: 3px;
+ bottom: 0;
+ color: #ded5d5;
+ padding-right: 7px;
+ padding-bottom: 3px;
+ line-height: 20px;
+
+ .el-icon-view {
+ margin: 0 10px;
+ }
+ }
+
+ .mask {
+ opacity: 0.6;
+ background: #9e9e9e;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ }
+ }
+ }
+
+ .img-selector {
+ font-size: 50px;
+ text-align: center;
+
+ i {
+ position: relative;
+ font-size: 40px;
+ color: #6f6f6f;
+ }
+ }
+
+ .auto-selector {
+ .selector {
+ line-height: 64px;
+ }
+ }
+
+ .selector {
+ color: #a0a0a0;
+ }
+
+ .submit-selector {
+ .s-btn {
+ line-height: 22px;
+ font-size: 12px;
+ top: -6px;
+ // padding: 2px;
+ position: relative;
+ background: #2db7f5;
+ color: white;
+ }
+
+ .selector {
+ line-height: 50px;
+ }
+
+ .readonly {
+ background: #8c8c8c;
+ }
+ }
+}
+
+.big-model {
+ width: 100%;
+ height: 100%;
+ position: relative;
+
+ .m-img {}
+
+ .mask {
+ position: absolute;
+ opacity: 0.6;
+ background: #eee;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ }
+}
+
+.auto-upload {
+ z-index: 9999999;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+
+ .j-content {
+ text-align: center;
+ font-size: 17px;
+ top: 40%;
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ right: 0;
+ width: 240px;
+ /* height: 100%; */
+ margin: auto;
+ background: white;
+ /* bottom: 30px; */
+ line-height: 50px;
+ border-radius: 6px;
+ border: 1px solid #d2d2d2;
+ }
+
+ .mask {
+ cursor: pointer;
+ opacity: 0.6;
+ width: 100%;
+ height: 100%;
+ background: #101010;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/KindEditor.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/KindEditor.vue"
new file mode 100644
index 0000000..8c8e704
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/KindEditor.vue"
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/VolWangEditor.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/VolWangEditor.vue"
new file mode 100644
index 0000000..529d754
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/editor/VolWangEditor.vue"
@@ -0,0 +1,231 @@
+<template>
+ <div class="hello" ref="volWangEditor"></div>
+</template>
+
+<script>
+import E from "wangeditor";
+let OSS = {}// require('ali-oss');
+export default {
+ props: {
+ url: {
+ //涓婁紶鍥剧墖鐨剈rl
+ type: String,
+ default: "",
+ },
+ upload: {
+ //涓婁紶鏂规硶
+ type: Function,
+ // (file, insertImgFn) => {}
+ default: null,
+ },
+ uploadCount: {
+ //鏈�澶氬彲浠ヤ笂浼�(鍥剧墖)鐨勬暟閲�
+ type: Number,
+ default: 3,
+ },
+ modelValue: "",
+ width: {
+ type: String,
+ default: "100%",
+ },
+ height: {
+ type: Number,
+ default: 250,
+ },
+ minWidth: {
+ type: Number,
+ default: 650,
+ },
+ minHeight: {
+ type: Number,
+ default: 100,
+ },
+ },
+ name: "wang-editor",
+ data() {
+ return {
+ lastHtml: "",
+ change: false,
+ editor: null,
+ init: false,
+ };
+ },
+ watch: {
+ modelValue(newVal, val) {
+ if (
+ (newVal !== val &&
+ this.lastHtml !== "" &&
+ val === this.lastHtml &&
+ this.editor.txt.html() === this.lastHtml) ||
+ this.editor.txt.html() === ""
+ ) {
+ this.editor.txt.html(newVal);
+ }
+ this.lastHtml = newVal;
+ },
+ },
+ destroyed() {
+ this.editor = null;
+ },
+ mounted() {
+ this.editor = null;
+ let editor = new E(this.$refs.volWangEditor);
+ this.editor = editor;
+ editor.config.zIndex = 500;
+ editor.config.height = this.height;
+ editor.config.onchange = (html) => {
+ if (!this.init && this.lastHtml === "") {
+ this.lastHtml = html;
+ this.init = true;
+ }
+ this.$emit("update:modelValue", html);
+ };
+ // editor.config.uploadFileName = "fileInput";
+ // //璁剧疆header
+ // editor.config.uploadImgHeaders = {
+ // Accept: "application/json",
+ // Authorization: this.$store.getters.getToken(),
+ // };
+ //涓婁紶鍦板潃
+ editor.config.uploadImgServer = this.http.ipAddress + this.url;
+ // console.log(editor.config.uploadImgServer);
+ editor.config.customUploadImg = async (resultFiles, insertImgFn) => {
+ // 鑷畾涔変笂浼�
+ if (this.upload) {
+ console.log("璋冪敤鑷畾涔夌殑涓婁紶鏂规硶");
+ console.log(resultFiles);
+ // resultFiles 鏄� input 涓�変腑鐨勬枃浠跺垪琛�
+ // insertImgFn 鏄幏鍙栧浘鐗� url 鍚庯紝鎻掑叆鍒扮紪杈戝櫒鐨勬柟娉�
+ //鏈夊彲鑳戒細涓婁紶澶氬紶鍥剧墖,涓婁紶澶氬紶鍥剧墖灏遍渶瑕佽繘琛岄亶鍘�
+ resultFiles.map((item) => {
+ // _this.getUploadImg(item, insertImgFn);
+ this.upload(item, insertImgFn);
+ });
+ } else {
+ if (window.oss && window.oss.ali.use) {
+ await this.uploadOSS(resultFiles, insertImgFn);
+ this.$message.success('涓婁紶鎴愬姛');
+ return;
+ } else {
+
+ if (!this.url) {
+ this.$message.error("鏈厤缃畊rl");
+ return;
+ }
+ const resultArr = await this.uploadFile(resultFiles);
+ resultArr.forEach(url => {
+ insertImgFn(url);
+ })
+ // this.http.post(this.url, formData, true).then((x) => {
+ // if (!x.status) {
+ // return this.$message.error(x.message);
+ // }
+ // nameArr.forEach(m => {
+ // insertImgFn(this.http.ipAddress + x.data + m);
+ // })
+ // });
+ }
+ }
+ };
+ //Written by DavidZhang
+ //editor.config.uploadVideoServer = '/api/upload-video';
+ //editor.config.uploadVideoServer = this.http.ipAddress + this.url;
+ editor.config.uploadVideoServer = this.http.ipAddress + 'api/CZ_CategoryInformation/upload';
+ editor.config.customUploadVideo = async (resultFiles, insertVideoFn) => {
+ // resultFiles 鏄� input 涓�変腑鐨勬枃浠跺垪琛�
+ // insertVideoFn 鏄幏鍙栬棰� url 鍚庯紝鎻掑叆鍒扮紪杈戝櫒鐨勬柟娉�
+
+ // 涓婁紶瑙嗛锛岃繑鍥炵粨鏋滐紝灏嗚棰戝湴鍧�鎻掑叆鍒扮紪杈戝櫒涓�
+
+ const resultArr = await this.uploadFile(resultFiles);
+ resultArr.forEach(url => {
+ // insertImgFn(url);
+ insertVideoFn(url)
+ })
+
+ }
+ editor.create();
+ editor.txt.html(this.modelValue);
+ },
+ methods: {
+ async uploadFile(resultFiles) {
+ let formData = new FormData();
+ let nameArr = [];
+ resultFiles.forEach(function (file) {
+ formData.append("fileInput", file, file.name);
+ nameArr.push(file.name);
+ });
+ let resultArr = []
+ await this.http.post(this.url, formData, true,{headers:{ 'Content-Type': 'multipart/form-data' }}).then((x) => {
+ if (!x.status) {
+ return this.$message.error(x.message);
+ }
+ resultArr = nameArr.map(m => {
+ return this.http.ipAddress + x.data + m;
+ })
+ // nameArr.forEach(m => {
+ // insertImgFn(this.http.ipAddress + x.data + m);
+ // })
+ });
+ return resultArr;
+ },
+ async uploadOSS(resultFiles, insertImgFn) {
+ await this.http.get('api/alioss/getAccessToken', {}, false).then(async (x) => {
+ if (!x.status) return this.$Message.error(x.message);
+ let client = new OSS({
+ // yourRegion濉啓Bucket鎵�鍦ㄥ湴鍩熴�備互鍗庝笢1锛堟澀宸烇級涓轰緥锛孯egion濉啓涓簅ss-cn-hangzhou銆�
+ region: x.data.region,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勪复鏃惰闂瘑閽ワ紙AccessKey ID鍜孉ccessKey Secret锛夈��
+ accessKeyId: x.data.accessKeyId,
+ accessKeySecret: x.data.accessKeySecret,
+ // 浠嶴TS鏈嶅姟鑾峰彇鐨勫畨鍏ㄤ护鐗岋紙SecurityToken锛夈��
+ stsToken: x.data.securityToken,
+ // 濉啓Bucket鍚嶇О銆�
+ bucket: x.data.bucket
+ });
+ debugger;
+ console.log(resultFiles);
+ for (let index = 0; index < resultFiles.length; index++) {
+ const file = resultFiles[index];
+ let result = await client.put(
+ x.data.bucketFolder + '/' + x.data.unique + file.name,
+ file
+ );
+ // 濡傛灉鏈夐厤缃甤dn锛岃繑鍥炵殑url闇�瑕佹嫾鎺dn
+ if (window.oss.ali.cdn) {
+ result.url = new URL(x.data.bucketFolder + '/' + x.data.unique + file.name, window.oss.ali.cdn).toString();
+ }
+ console.log(result);
+ file.path = result.url;
+ file.newName = x.data.unique + file.name;
+ insertImgFn(file.path);
+
+ }
+ });
+ return;
+ },
+ }
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+h1,
+h2 {
+ font-weight: normal;
+}
+
+ul {
+ list-style-type: none;
+ padding: 0;
+}
+
+li {
+ display: inline-block;
+ margin: 0 10px;
+}
+
+a {
+ color: #42b983;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue"
new file mode 100644
index 0000000..33e44fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue"
@@ -0,0 +1,19 @@
+<template>
+ <div style="height: 100%">
+ <redirect-error :text="text" message="璇锋眰纭鏄惁閰嶇疆鏉冮檺" :errorNumber="errorNumber"></redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError,
+ },
+ data() {
+ return {
+ errorNumber: "401",
+ text: "鎶辨瓑锛屾偍娌℃湁鏉冮檺杩涜姝ゆ搷浣渵",
+ };
+ },
+};
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue"
new file mode 100644
index 0000000..bd6db8f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue"
@@ -0,0 +1,21 @@
+<template>
+ <div style="height:100%;">
+ <redirect-error :text="text" :errorNumber="errorNumber"></redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError
+ },
+ data() {
+ return {
+ errorNumber:'404',
+ text: "鎶辨瓑锛岄〉闈㈠ソ鍍忓幓鐏槦浜唦"
+ };
+ }
+};
+</script>
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue"
new file mode 100644
index 0000000..8952162
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue"
@@ -0,0 +1,39 @@
+<template>
+ <div class="middle-box">
+ <div class="text-center animated fadeInDown">
+ <i style="font-size: 50px;color: #67c23a;margin-top:40px;" class="el-icon-circle-check"></i>
+ <div style="font-size: 20px;margin-top: 10px;" class="error-desc">{{ text }}</div>
+ </div>
+ </div>
+</template>
+ <script>
+export default {
+ props: {
+ text: {
+ type: String,
+ default: "鎿嶄綔鎴愬姛锛�",
+ },
+ },
+ methods: {
+ },
+};
+</script>
+<style lang="less" scoped>
+body {
+ background-color: #fff;
+}
+.middle-box {
+ text-align: center;
+ padding-top: 80px;
+ height: 100%;
+ // background: #eee;
+ h1 {
+ font-size: 140px;
+ font-weight: 100;
+ }
+ .back {
+ padding: 10px;
+ }
+}
+</style>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue"
new file mode 100644
index 0000000..969a159
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue"
@@ -0,0 +1,59 @@
+<template>
+ <div class="middle-box">
+ <div class="text-center animated fadeInDown">
+ <h1>{{ errorNumber }}</h1>
+ <h3 class="font-bold">{{ message }}</h3>
+ <slot></slot>
+ <div class="error-desc">{{ text }}</div>
+ <div class="back">
+ <el-button type="primary" @click="backHome" icon="md-arrow-round-back">杩斿洖棣栭〉</el-button>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+ errorNumber: {
+ type: String,
+ default: "500",
+ },
+ message: {
+ type: String,
+ default: "椤甸潰鏈壘鍒帮紒",
+ },
+ text: {
+ type: String,
+ default: "鍞�...濂藉儚鍑轰簡鐐归棶棰榽",
+ },
+ },
+ methods: {
+ backHome: function () {
+ this.$router.push({
+ path: "/home",
+ });
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+body {
+ background-color: #fff;
+}
+
+.middle-box {
+ text-align: center;
+ padding-top: 80px;
+ height: 100%;
+
+ // background: #eee;
+ h1 {
+ font-size: 140px;
+ font-weight: 100;
+ }
+
+ .back {
+ padding: 10px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue"
new file mode 100644
index 0000000..5569483
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue"
@@ -0,0 +1,25 @@
+<template>
+ <div style="height:100%;">
+ <redirect-error :text="text" :errorNumber="errorNumber">
+ <div>
+ <router-link to="SellOrder">
+ <Button>鐐瑰嚮鏌ョ湅[娴嬭瘯瀹屾暣绀轰緥]</Button>
+ </router-link>
+ </div>
+ </redirect-error>
+ </div>
+</template>
+ <script>
+import RedirectError from "./RedirectError";
+export default {
+ components: {
+ RedirectError
+ },
+ data() {
+ return {
+ errorNumber: "鐢ㄤ緥姝e湪鏁寸悊涓�",
+ text: "璇︾粏鐢ㄤ緥鍦ㄦ鍑嗗涓�,鐩墠鍙弬鑰僛娴嬭瘯瀹屾暣绀轰緥]鐨勪娇鐢ㄦ柟娉�"
+ };
+ }
+};
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node.vue"
new file mode 100644
index 0000000..983cef4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node.vue"
@@ -0,0 +1,100 @@
+<template>
+ <div ref="node" class="node-item" :style="nodeContainerStyle" @click="clickNode" @mouseup="changeNodeSite"
+ :class="nodeContainerClass">
+ <!-- 鏈�宸︿晶鐨勯偅鏉$珫绾� -->
+ <div class="ef-node-left"></div>
+ <!-- 鑺傜偣绫诲瀷鐨勫浘鏍� -->
+ <div class="ef-node-left-ico flow-node-drag">
+ <i :class="nodeIcoClass"></i>
+ </div>
+ <!-- 鑺傜偣鍚嶇О -->
+ <div class="ef-node-text" :show-overflow-tooltip="true">
+ {{ node.name }}
+ </div>
+ <i @click.stop="delNode" v-if="node.type == 'node' && !disabled" style="display: none" class="el-icon-delete"></i>
+ <!-- 鑺傜偣鐘舵�佸浘鏍� -->
+ <div class="ef-node-right-ico">
+ <i class="el-icon-circle-check el-node-state-success" v-show="node.state === 'success'"></i>
+ <i class="el-icon-circle-close el-node-state-error" v-show="node.state === 'error'"></i>
+ <i class="el-icon-warning-outline el-node-state-warning" v-show="node.state === 'warning'"></i>
+ <i class="el-icon-loading el-node-state-running" v-show="node.state === 'running'"></i>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ node: Object,
+ activeElement: Object,
+ disabled: {
+ typeof: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {}
+ },
+ computed: {
+ nodeContainerClass() {
+ return {
+ 'ef-node-container': true,
+ 'ef-node-active': this.activeElement.type == 'node' ? this.activeElement.nodeId === this.node.id : false
+ }
+ },
+ // 鑺傜偣瀹瑰櫒鏍峰紡
+ nodeContainerStyle() {
+ return {
+ top: this.node.top,
+ left: this.node.left
+ }
+ },
+ nodeIcoClass() {
+ var nodeIcoClass = {}
+ nodeIcoClass[this.node.ico] = true
+ // 娣诲姞璇lass鍙互鎺ㄦ嫿杩炵嚎鍑烘潵锛寁iewOnly 鍙互鎺у埗鑺傜偣鏄惁杩愯缂栬緫
+ nodeIcoClass['flow-node-drag'] = this.node.viewOnly ? false : true
+ return nodeIcoClass
+ }
+ },
+ methods: {
+ // 鐐瑰嚮鑺傜偣
+ clickNode() {
+ this.$emit('clickNode', this.node.id)
+ },
+ // 榧犳爣绉诲姩鍚庢姮璧�
+ changeNodeSite() {
+ // 閬垮厤鎶栧姩
+ if (this.node.left == this.$refs.node.style.left && this.node.top == this.$refs.node.style.top) {
+ return;
+ }
+ this.$emit('changeNodeSite', {
+ nodeId: this.node.id,
+ left: this.$refs.node.style.left,
+ top: this.$refs.node.style.top,
+ })
+ }, delNode() {
+ this.$emit("delNode");
+ },
+ }
+}
+</script>
+<style scoped>
+@import "./index.css";
+/* .node-item{
+ position: relative;
+} */
+.node-item:hover .el-icon-delete {
+ display: inline-block !important;
+}
+
+.el-icon-delete {
+ cursor: pointer;
+ position: relative;
+ top: -18px;
+ padding-left: 5px;
+ right: -16px;
+ color: #f61313;
+ height: 20px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_filter.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_filter.vue"
new file mode 100644
index 0000000..83a80fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_filter.vue"
@@ -0,0 +1,201 @@
+<template>
+ <div class="node-filter-container">
+ <!-- <div class="add-btn">
+ <span class="name">鏉′欢璁剧疆</span> <el-button @click="addItem" link><i>+</i>娣诲姞瀛楁</el-button>
+ </div> -->
+ <!-- {{ $store.getters.data().flowTable.WorkTable }} -->
+ <div class="ef-node-pmenu-item" style="display: flex;">
+ <div style="flex:1;">
+ <span class="name"><i class="el-icon-news"></i>鏉′欢璁剧疆</span>
+ </div>
+ <div><el-button link size="small" @click="addItem" type="primary" v-if="!disabled">
+ + 娣诲姞瀛楁</el-button></div>
+ </div>
+
+ <div>
+ <table>
+ <tr>
+ <td>瀛楁</td>
+ <td style="width:90px">鏉′欢</td>
+ <td class="value">鍊�</td>
+ <td style="width: 40px;" v-if="!disabled">鎿嶄綔</td>
+ </tr>
+ <tr v-for="(item, index) in filters" :key="index">
+
+ <td><el-select @change="(field) => { fieldChange(field, index) }" size="small" v-model="item.field"
+ placeholder="璇烽�夋嫨" :disabled="disabled">
+ <el-option v-for="data in fieldsOptions" :key="data.field" :label="data.name"
+ :value="data.field" />
+ </el-select></td>
+ <td><el-select size="small" v-model="item.filterType" placeholder="璇烽�夋嫨" :disabled="disabled">
+ <el-option v-for="data in filterType" :key="data.value" :label="data.name"
+ :value="data.value" />
+ </el-select></td>
+ <td>
+ <template v-if="item.data">
+ <el-select v-if="item.data.length >= 300" multiple size="small" v-model="item.value"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="data in item.data" :key="data.key" :label="data.value"
+ :value="data.key" :disabled="disabled" />
+ </el-select>
+ <el-select-v2 style="width: 100%;" v-else multiple size="small" :options="item.data"
+ v-model="item.value" placeholder="璇烽�夋嫨" :disabled="disabled">
+ </el-select-v2>
+ </template>
+ <el-input v-else v-model="item.value" size="small" :disabled="disabled"></el-input>
+ </td>
+ <td @click="delItem(index)" class="item-del" v-if="!disabled"><i class="el-icon-delete"></i></td>
+ </tr>
+ </table>
+ </div>
+ <!-- <div>
+ <label>鑷畾涔塻ql</label>
+ <div><el-input type="textarea" v-model="customSql"></el-input></div>
+ </div> -->
+ </div>
+</template>
+
+<script>
+let _this = this;
+export default {
+ props: {
+ tableName: {
+ type: String,
+ default: ""
+ },
+ filters: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ disabled:{
+ typeof:Boolean,
+ default:false
+ }
+ },
+ data() {
+ return {
+ filter: this.$store.getters.data().flowTable,
+ customSql: "",
+ value: "",
+ //{ field: "鍚嶇О", value: "", filterType: "=" },
+ // filters: [],
+ fieldsOptions: [
+
+ ],
+ t: [],
+ filterType: [{ name: "绛変簬(=)", value: "=" },
+ { name: "涓嶇瓑浜�(!=)", value: "!=" },
+ { name: "澶т簬(>)", value: ">" },
+ { name: "澶т簬绛変簬(>=)", value: ">=" },
+ { name: "灏忎簬(<)", value: "<" },
+ { name: "灏忎簬绛変簬(<=)", value: "<=" },
+ { name: "鍖呮嫭(in)", value: "in" },
+ // { name: "涓嶅寘鎷�(not in)", value: "notin" },
+ { name: "妯$硦鍖归厤(like)", value: "like" },
+ { name: "鎴栬��(or)", value: "or" }
+ ]
+ }
+ },
+ methods: {
+ delItem(index) {
+ this.$confirm('纭瑕佸垹闄ゅ瓧閰嶇疆鏉′欢閰嶇疆鍚�?', '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ this.filters.splice(index, 1);
+ });
+ },
+ addItem() {
+ this.filters.push({ field: "", value: "", filterType: "", data: null })
+ },
+ fieldChange(field, index) {
+ let option = this.fieldsOptions.find(x => { return x.field == field });
+ this.filters[index].field = option.field;
+ this.filters[index].value = option.data ? [] : null;
+ this.filters[index].data = option.data;;
+ },
+ convertOptions(result) {
+
+ },
+ getOptions(tableName) {
+ const url = 'api/Sys_WorkFlow/getFields?table=' + tableName;
+ this.http.post(url, {}, false).then(result => {
+ result.forEach(c => {
+ if (c.data && c.data.length < 300) {
+ c.data = c.data.map(x => {
+ return {
+ value: x.key,
+ label: x.value,
+ key: x.key
+ }
+ })
+ }
+ })
+ _this.fieldsOptions = result;
+ })
+ }
+ },
+ watch: {
+ 'filter.WorkTable': {
+ handler(newvalue, oldvalue) {
+ if (newvalue) {
+ this.getOptions(newvalue);
+ } else {
+ // this.fieldsOptions.splice(0)
+ }
+ }
+ }
+ // deep:true,
+ // filter(newVal,oldVal){
+ // alert(1)
+ // }
+ },
+ created() {
+ _this = this;
+ },
+}
+</script>
+
+<style lang="less" scoped>
+.node-filter-container {
+ margin-top: 15px;
+
+ table {
+ width: 100%;
+ padding-left: 6px;
+
+ td {
+ font-size: 13px;
+ padding: 5px;
+
+ }
+
+ tr:first-child {
+ font-size: 12px;
+ font-weight: bolder;
+ }
+
+ .item-del {
+ text-align: center;
+ color: rgb(226, 4, 4);
+ cursor: pointer;
+ }
+
+ .value {
+ width: 150px;
+ }
+ }
+
+ .add-btn {
+ text-align: right;
+ padding-right: 10px;
+ border-bottom: 1px solid #e8e8e8;
+ padding-bottom: 5px;
+ }
+
+ .node-filter-item {}
+}</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_form.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_form.vue"
new file mode 100644
index 0000000..2f23f4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_form.vue"
@@ -0,0 +1,351 @@
+<template>
+ <div>
+ <div class="ef-node-form">
+ <div class="ef-node-pmenu-item">
+ <div style="flex:1;">
+ <span class="name"><i class="el-icon-news"></i>鑺傜偣灞炴��</span>
+ <!-- <span @click="nameClick(1)" :class="{ active: index === 1 }" class="name">瀹℃壒鏉′欢</span> -->
+ </div>
+ <!-- <div><el-button link size="small" type="primary" @click="save"><i class="el-icon-check"></i>
+ 淇濆瓨閰嶇疆</el-button></div> -->
+ </div>
+ <div class="ef-node-form-body">
+ <div class="form-info">
+ <VolForm ref="form" :select2Count="2000" style="padding:0 10px;" :label-width="130" :loadKey="false" :formFields="node"
+ :formRules="formRules" :disabled="disabled">
+ </VolForm>
+ </div>
+ <div>
+ <node-filter :filters="node.filters" :disabled="disabled" :tableName="tableName" ref="filter">
+ </node-filter>
+ </div>
+ </div>
+ <!-- <div class="el-node-form-tag"></div>-->
+ </div>
+ </div>
+</template>
+
+<script>
+// import { cloneDeep } from 'lodash'
+import VolForm from '@/components/basic/VolForm.vue';
+import nodeFilter from './node_filter.vue';
+export default {
+ components: {
+ VolForm,
+ 'node-filter': nodeFilter
+ },
+ props: {
+ disabled:{
+ typeof:Boolean,
+ default:false
+ }
+ // node: {
+ // type: Object,
+ // default: () => {
+ // return {
+ // name: '',
+ // auditType: 1,//瀹℃牳绫诲瀷
+ // userId: null,
+ // roleId: null,
+ // deptId: null,
+ // auditRefuse: null,//瀹℃牳鏈�氳繃
+ // auditBack: null, //椹冲洖
+ // auditMethod: 0,//瀹℃壒鏂瑰紡(浼氱)
+ // stepValue: null,
+ // sendMail: 0,
+ // filters: [] //瀛楁杩囨护鏉′欢
+ // }
+ // }
+ // }
+ },
+ created() {
+ this.http.get('api/Sys_WorkFlow/getNodeDic').then((result) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.dataKey && !option.data.length) {
+ option.data = result[option.dataKey] || [];
+ }
+ });
+ });
+ });
+ },
+ data() {
+ return {
+ tableName: "",
+ index: 1,
+ visible: true,
+ // node 鎴� line
+ type: 'node',
+ node: {},
+ line: {},
+ data: {},
+
+ node: {
+ name: '',
+ auditType: 1,//瀹℃牳绫诲瀷
+ userId: null,
+ roleId: null,
+ deptId: null,
+ auditRefuse: null,//瀹℃牳鏈�氳繃
+ auditBack: null, //椹冲洖
+ auditMethod: 0,//瀹℃壒鏂瑰紡(浼氱)
+ // nodeValue: null,
+ sendMail: 0,
+ filters: []
+ },
+ formRules: [
+ [
+ {
+ title: '鑺傜偣鍚嶇О',
+ field: 'name',
+ required: true,
+ colSize: 12
+ }],
+ [
+ {
+ dataKey: '',
+ title: '瀹℃壒绫诲瀷',
+ required: true,
+ hidden: false,
+ field: 'auditType',
+ data: [
+ { key: 1, value: '鎸夌敤鎴峰鎵�' },
+ { key: 2, value: '鎸夎鑹插鎵�' },
+ { key: 3, value: '鎸夐儴闂ㄥ鎵�' }
+ ],
+ type: 'select',
+ onChange: this.nodeTypeChange,
+ colSize: 12
+ }
+ ],
+ [
+ {
+ dataKey: 'users',
+ hidden: false,
+ title: '瀹℃壒鐢ㄦ埛',
+ required: true,
+ field: 'userId',
+ data: [],
+ type: 'selectList',
+ colSize: 12
+ }
+ ,
+ {
+ dataKey: 'roles',
+ hidden: true,
+ title: '瑙掕壊淇℃伅',
+ required: true,
+ field: 'roleId',
+
+ data: [],
+ type: 'select',
+ colSize: 12
+ }
+ ,
+ {
+ dataKey: 'dept',
+ hidden: true,
+ title: '閮ㄩ棬淇℃伅',
+ required: true,
+ field: 'deptId',
+ data: [],
+ type: 'select',
+ colSize: 12
+ }
+ ], [
+ {
+ dataKey: '',
+ title: '瀹℃壒鏈�氳繃',
+ required: false,
+ field: 'auditRefuse',
+ hidden: false,
+ data: [
+ { key: 1, value: '杩斿洖涓婁竴鑺傜偣' },
+ { key: 2, value: '娴佺▼閲嶆柊寮�濮�' },
+ { key: 0, value: '娴佺▼缁撴潫' },
+ ],
+ type: 'select',
+ colSize: 6
+ }
+ ,
+ {
+ dataKey: '',
+ title: '瀹℃壒椹冲洖',
+ required: false,
+ hidden: false,
+ field: 'auditBack',
+ data: [
+ { key: 1, value: '杩斿洖涓婁竴鑺傜偣' },
+ { key: 2, value: '娴佺▼閲嶆柊寮�濮�' },
+ { key: 0, value: '娴佺▼缁撴潫' },
+ ],
+ type: 'select',
+ colSize: 6
+
+ }
+ ],
+ [
+ {
+ dataKey: '',
+ title: '瀹℃牳鍚庡彂閫侀偖浠堕�氱煡',
+ required: false,
+ hidden: false,
+ field: 'sendMail',
+ data: [
+ { key: 1, value: '鏄�' },
+ { key: 0, value: '鍚�' },
+ ],
+ type: 'switch'
+ },
+ {
+ dataKey: '',
+ title: '鍚敤浼氱',
+ required: false,
+ hidden: false,
+ field: 'auditMethod',//瀹℃壒鏂瑰紡
+ data: [
+ { key: 1, value: '鏄�' },
+ { key: 0, value: '鍚�' }
+ ],
+ type: 'switch'
+ }
+ ],
+ ],
+ }
+ },
+ methods: {
+ nameClick(index) {
+ this.index = index;
+ },
+ /**
+ * 琛ㄥ崟淇敼锛岃繖閲屽彲浠ユ牴鎹紶鍏ョ殑ID杩涜涓氬姟淇℃伅鑾峰彇
+ * @param data
+ * @param id
+ */
+ nodeInit(data, id, tableName) {
+ this.tableName = tableName;
+ this.type = 'node'
+ this.data = data;
+ // this.tableName=data.
+ data.nodeList.filter((node) => {
+ if (node.id === id) {
+ this.formRules.forEach(options => {
+ options.forEach(c => {
+ if (c.field != 'name') {
+ c.hidden = node.type == 'start' || node.type == 'end';
+ }
+ })
+ })
+ if (!node.filters) {
+ node.filters = [];
+ }
+ this.node = node;// cloneDeep(node)
+ if (node.type != 'start' && node.type != 'end') {
+ this.nodeTypeChange(node.auditType);
+ }
+ }
+ })
+ // data.nodeList.filter((node) => {
+ // if (node.id === id) {
+ // let _node = cloneDeep(node);
+ // _node.roleId = _node.roleId || null;
+ // _node.userId = _node.userId || null;
+ // _node.nodeType = (_node.nodeType || 1) * 1;
+ // if (!node.filters) {
+ // node.filters = [];
+ // }
+ // _node.filters = node.filters;
+ // this.nodeTypeChange(_node.nodeType);
+ // Object.assign(this.node, _node);
+ // }
+ // });
+ },
+ nodeTypeChange(value) {
+ // { key: 1, value: '鎸夌敤鎴峰鎵�' },
+ // { key: 2, value: '鎸夎鑹插鎵�' },
+ // { key: 3, value: '鎸夐儴闂ㄥ鎵�' }
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'userId') {
+ option.hidden = value != 1;
+ } else if (option.field == 'roleId') {
+ option.hidden = value != 2;
+ } else if (option.field == 'deptId') {
+ option.hidden = value != 3;
+ }
+ });
+ });
+ },
+ lineInit(line) {
+ this.type = 'line'
+ this.line = line
+ },
+ // 淇敼杩炵嚎
+ saveLine() {
+ this.$emit('setLineLabel', this.line.from, this.line.to, this.line.label)
+ },
+ save() {
+ this.data.nodeList.filter((node) => {
+ if (node.id === this.node.id) {
+ node.name = this.node.name;
+ node.left = this.node.left;
+ node.top = this.node.top;
+ node.ico = this.node.ico;
+ node.state = this.node.state;
+ node.stepValue = this.node.stepValue;
+ this.$emit('repaintEverything', this.node);
+ }
+
+ });
+ this.$message.success('淇濆瓨鎴愬姛')
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+@import "./index.css";
+.el-node-form-tag {
+ position: absolute;
+ top: 50%;
+ margin-left: -15px;
+ height: 40px;
+ width: 15px;
+ background-color: #fbfbfb;
+ border: 1px solid rgb(220, 227, 232);
+ border-right: none;
+ z-index: 0;
+}
+
+.btns {
+ text-align: center;
+ padding: 10px;
+
+ buttton {
+ flex: 1;
+ }
+}
+
+.ef-node-pmenu-item {
+ display: flex;
+
+ .name {
+ cursor: pointer;
+ margin-right: 15px;
+ }
+
+ .active {
+ color: #0659e8;
+ }
+}
+
+.form-info ::v-deep(.vol-form-item) {
+ display: flex;
+
+ .el-form-item:nth-child(2),
+ .el-form-item:nth-child(3),
+ .el-form-item:nth-child(4) {
+ margin-left: 12px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_menu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_menu.vue"
new file mode 100644
index 0000000..8bbf9b2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/node_menu.vue"
@@ -0,0 +1,129 @@
+<template>
+ <div class="flow-menu" ref="tool">
+ <div v-for="menu in menuList" :key="menu.id">
+ <div class="ef-node-pmenu-item"><i class="el-icon-notebook-2"></i>鑺傜偣閰嶇疆</div>
+ <ul v-show="menu.open" class="ef-node-menu-ul">
+ <draggable @end="end" @start="move" v-model="menu.children" :options="draggableOptions">
+ <li v-for="subMenu in menu.children" class="ef-node-menu-li" :key="subMenu.id" :type="subMenu.type">
+ <i :class="subMenu.ico"></i> {{ subMenu.name }}
+ </li>
+ </draggable>
+ </ul>
+ </div>
+ </div>
+</template>
+<script>
+import { VueDraggableNext as draggable } from "vue-draggable-next";
+
+var mousePosition = {
+ left: -1,
+ top: -1
+}
+
+export default {
+ data() {
+ return {
+ activeNames: '1',
+ // draggable閰嶇疆鍙傛暟鍙傝�� https://www.cnblogs.com/weixin186/p/10108679.html
+ draggableOptions: {
+ preventOnFilter: false,
+ sort: false,
+ disabled: false,
+ ghostClass: 'tt',
+ // 涓嶄娇鐢℉5鍘熺敓鐨勯厤缃�
+ forceFallback: true,
+ // 鎷栨嫿鐨勬椂鍊欐牱寮�
+ // fallbackClass: 'flow-node-draggable'
+ },
+ // 榛樿鎵撳紑鐨勫乏渚ц彍鍗曠殑id
+ defaultOpeneds: ['1', '2'],
+ menuList: [
+ {
+ id: '1',
+ type: 'group',
+ name: '寮�濮嬭妭鐐�',
+ ico: 'el-icon-video-play',
+ open: true,
+ children: [
+ {
+ id: '0',
+ type: 'start',
+ name: '娴佺▼寮�濮�',
+ ico: 'el-icon-time',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ },
+ {
+ id: '1',
+ type: 'end',
+ name: '娴佺▼缁撴潫',
+ ico: 'el-icon-switch-button',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ }, {
+ id: '2',
+ type: 'node',
+ name: '娴佺▼鑺傜偣',
+ ico: 'el-icon-news',
+ // 鑷畾涔夎鐩栨牱寮�
+ style: {}
+ }
+ ]
+ }],
+
+ nodeMenu: {}
+ }
+ },
+ components: {
+ draggable
+ },
+ created() {
+ /**
+ * 浠ヤ笅鏄负浜嗚В鍐冲湪鐏嫄娴忚鍣ㄤ笂鎺ㄦ嫿鏃跺脊鍑簍ab椤靛埌鎼滅储闂
+ * @param event
+ */
+ if (this.isFirefox()) {
+ document.body.ondrop = function (event) {
+ // 瑙e喅鐏嫄娴忚鍣ㄦ棤娉曡幏鍙栭紶鏍囨嫋鎷界粨鏉熺殑鍧愭爣闂
+ mousePosition.left = event.layerX
+ mousePosition.top = event.clientY - 50
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ },
+ methods: {
+ // 鏍规嵁绫诲瀷鑾峰彇宸︿晶鑿滃崟瀵硅薄
+ getMenuByType(type) {
+ for (let i = 0; i < this.menuList.length; i++) {
+ let children = this.menuList[i].children;
+ for (let j = 0; j < children.length; j++) {
+ if (children[j].type === type) {
+ return children[j]
+ }
+ }
+ }
+ },
+ // 鎷栨嫿寮�濮嬫椂瑙﹀彂
+ move(evt, a, b, c) {
+ var type = evt.item.attributes.type.nodeValue
+ this.nodeMenu = this.getMenuByType(type)
+ },
+ // 鎷栨嫿缁撴潫鏃惰Е鍙�
+ end(evt, e) {
+ this.$emit('addNode', evt, this.nodeMenu, mousePosition)
+ },
+ // 鏄惁鏄伀鐙愭祻瑙堝櫒
+ isFirefox() {
+ var userAgent = navigator.userAgent
+ if (userAgent.indexOf("Firefox") > -1) {
+ return true
+ }
+ return false
+ }
+ }
+}
+</script>
+<style lang="less" scoped>
+@import "./index.css";
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/panel.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/panel.vue"
new file mode 100644
index 0000000..84d29bc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/components/workflow/panel.vue"
@@ -0,0 +1,612 @@
+<!-- 瀹℃牳娴佺▼鎻掍欢鍩轰簬https://gitee.com/xiaoka2017/easy-flow淇敼-->
+<!--鎰熻阿钀岀骇灏忚彍楦� / easy-flow -->
+<template>
+ <div v-if="easyFlowVisible" class="flow-panel">
+
+ <div style="display: flex;height: 100%;position: relative;">
+ <el-scrollbar style="height: 100%;border-right: 1px solid rgb(220, 227, 232);">
+ <div style="width: 220px;">
+ <div class="ef-node-pmenu-item"><i class="el-icon-warning-outline"></i>鍩虹淇℃伅</div>
+ <VolForm ref="form" style="padding: 10px;" :label-width="180" :loadKey="true" :formFields="formFields"
+ :disabled="disabled" :formRules="formRules"></VolForm>
+ <node-menu @addNode="addNode" ref="nodeMenu" v-if="!disabled"></node-menu>
+ </div>
+ </el-scrollbar>
+ <div class="tools">
+ <el-button circle @click="zoomAdd"><i class="el-icon-zoom-in"></i></el-button>
+ <el-button circle @click="zoomSub"><i class="el-icon-zoom-out"></i></el-button>
+ </div>
+ <div style="flex: 1;" id="efContainer" ref="efContainer" class="container efContainer" v-flowDrag>
+ <template :key="node.id" v-for="node in data.nodeList">
+ <flow-node :id="node.id" @delNode="deleteNode(node.id)" :node="node" :activeElement="activeElement"
+ :disabled="disabled" @changeNodeSite="changeNodeSite" @nodeRightMenu="nodeRightMenu"
+ @clickNode="clickNode">
+ </flow-node>
+ </template>
+ <!-- 缁欑敾甯冧竴涓粯璁ょ殑瀹藉害鍜岄珮搴� -->
+ <div style="position:absolute;top: 3000px;left: 4000px;"> </div>
+ </div>
+ <!-- 鍙充晶琛ㄥ崟 -->
+ <div style="width: 400px;border-left: 1px solid #dce3e8;background-color: #FBFBFB">
+ <el-scrollbar style="height: 100%;padding-bottom: 10px;">
+ <flow-node-form @delNode="deleteNode" ref="nodeForm" @setLineLabel="setLineLabel" :disabled="disabled"
+ @repaintEverything="repaintEverything"></flow-node-form>
+ </el-scrollbar>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { VueDraggableNext as draggable } from "vue-draggable-next";
+// import { jsPlumb } from 'jsplumb'
+// 浣跨敤淇敼鍚庣殑jsplumb
+import './jsplumb'
+import { easyFlowMixin } from './mixins'
+import flowNode from './node'
+import nodeMenu from './node_menu'
+import FlowNodeForm from './node_form'
+import lodash from 'lodash'
+// import { getDataA } from './data_A'
+import VolForm from '@/components/basic/VolForm.vue';
+export default {
+ props: {
+ disabled: {
+ typeof: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ formFields: {
+ WorkName: '',
+ WorkTable: '',
+ WorkTableName: '',
+ Weight: 1,
+ AuditingEdit: 0,
+ Remark: ''
+ },
+ formRules: [
+ [
+ {
+ dataKey: '娴佺▼鍚嶇О',
+ title: '娴佺▼鍚嶇О',
+ field: 'WorkName',
+ required: true
+ }],
+ [{
+ dataKey: '',
+ title: '娴佺▼瀹炰緥',
+ required: true,
+ field: 'WorkTable',
+ data: [],
+ readonly: false,
+ type: 'select',
+ onChange: (value, item) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'WorkTable') {
+ this.formFields.WorkTableName = option.data.find((x) => {
+ return x.key == value;
+ }).value;
+ }
+ });
+ });
+ }
+ }],
+ [{
+ title: '鏉冮噸(鐩稿悓鏉′欢鏉冮噸澶т紭鍏�)',
+ field: 'Weight',
+ type: "number",
+ }
+ ],
+
+ [{
+ title: '瀹℃牳涓暟鎹槸鍚﹀彲浠ョ紪杈�',
+ field: 'AuditingEdit',
+ type: "switch",
+ data: [{ key: 0, value: "鍚�" }, { key: 1, value: "鏄�" }]
+ }
+ ],
+ [{
+ title: '澶囨敞',
+ field: 'Remark'
+ }
+ ]
+ ],
+ // jsPlumb 瀹炰緥
+ jsPlumb: null,
+ // 鎺у埗鐢诲竷閿�姣�
+ easyFlowVisible: true,
+ // 鏄惁鍔犺浇瀹屾瘯鏍囧織浣�
+ loadEasyFlowFinish: false,
+ // 鏁版嵁
+ data: {},
+ // 婵�娲荤殑鍏冪礌銆佸彲鑳芥槸鑺傜偣銆佸彲鑳芥槸杩炵嚎
+ activeElement: {
+ // 鍙�夊�� node 銆乴ine
+ type: undefined,
+ // 鑺傜偣ID
+ nodeId: undefined,
+ // 杩炵嚎ID
+ sourceId: undefined,
+ targetId: undefined
+ },
+ zoom: 1
+ }
+ },
+ // 涓�浜涘熀纭�閰嶇疆绉诲姩璇ユ枃浠朵腑
+ mixins: [easyFlowMixin],
+ components: {
+ draggable, flowNode, nodeMenu, FlowNodeForm, VolForm
+ },
+ directives: {
+ 'flowDrag': {
+ mounted(el, binding, vnode, oldNode) {
+ if (!binding) {
+ return
+ }
+ el.onmousedown = (e) => {
+ if (e.button == 2) {
+ // 鍙抽敭涓嶇
+ return
+ }
+ // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅師濮嬭窛绂诲彲瑙嗗尯鐨勯珮搴�
+ let disX = e.clientX
+ let disY = e.clientY
+ el.style.cursor = 'move'
+
+ document.onmousemove = function (e) {
+ // 绉诲姩鏃剁姝㈤粯璁や簨浠�
+ e.preventDefault()
+ const left = e.clientX - disX
+ disX = e.clientX
+ el.scrollLeft += -left
+
+ const top = e.clientY - disY
+ disY = e.clientY
+ el.scrollTop += -top
+ }
+
+ document.onmouseup = function (e) {
+ el.style.cursor = 'auto'
+ document.onmousemove = null
+ document.onmouseup = null
+ }
+ }
+ }
+ }
+ },
+ mounted() {
+ this.jsPlumb = jsPlumb.getInstance()
+ // this.$nextTick(() => {
+ // // 榛樿鍔犺浇娴佺▼A鐨勬暟鎹�佸湪杩欓噷鍙互鏍规嵁鍏蜂綋鐨勪笟鍔¤繑鍥炵鍚堟祦绋嬫暟鎹牸寮忕殑鏁版嵁鍗冲彲
+ // this.dataReload(getDataA())
+ // })
+ },
+ created() {
+ this.http.get('api/Sys_WorkFlow/getTableInfo').then((result) => {
+ this.formRules.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'WorkTable') {
+ option.data = result;
+ }
+ });
+ });
+ });
+ this.$store.getters.data().flowTable = this.formFields;
+ },
+ methods: {
+ // 杩斿洖鍞竴鏍囪瘑
+ getUUID() {
+ return Math.random().toString(36).substr(3, 10)
+ },
+ jsPlumbInit() {
+ this.jsPlumb.ready(() => {
+ // 瀵煎叆榛樿閰嶇疆
+ this.jsPlumb.importDefaults(this.jsplumbSetting)
+ // 浼氫娇鏁翠釜jsPlumb绔嬪嵆閲嶇粯銆�
+ this.jsPlumb.setSuspendDrawing(false, true);
+ // 鍒濆鍖栬妭鐐�
+ this.loadEasyFlow()
+ // 鍗曠偣鍑讳簡杩炴帴绾�, https://www.cnblogs.com/ysx215/p/7615677.html
+ this.jsPlumb.bind('click', (conn, originalEvent) => {
+ this.activeElement.type = 'line'
+ this.activeElement.sourceId = conn.sourceId
+ this.activeElement.targetId = conn.targetId
+ this.$refs.nodeForm.lineInit({
+ from: conn.sourceId,
+ to: conn.targetId,
+ label: conn.getLabel()
+ })
+ this.deleteElement();
+ })
+ // 杩炵嚎
+ this.jsPlumb.bind("connection", (evt) => {
+ let from = evt.source.id
+ let to = evt.target.id
+ if (this.loadEasyFlowFinish) {
+ this.data.lineList.push({ from: from, to: to })
+ }
+ })
+
+ // 鍒犻櫎杩炵嚎鍥炶皟
+ this.jsPlumb.bind("connectionDetached", (evt) => {
+ this.deleteLine(evt.sourceId, evt.targetId)
+ })
+
+ // 鏀瑰彉绾跨殑杩炴帴鑺傜偣
+ this.jsPlumb.bind("connectionMoved", (evt) => {
+ this.changeLine(evt.originalSourceId, evt.originalTargetId)
+ })
+
+ // 杩炵嚎鍙冲嚮
+ this.jsPlumb.bind("contextmenu", (evt) => {
+ console.log('contextmenu', evt)
+ })
+
+ // 杩炵嚎
+ this.jsPlumb.bind("beforeDrop", (evt) => {
+ let from = evt.sourceId
+ let to = evt.targetId
+ if (from === to) {
+ this.$message.error('鑺傜偣涓嶆敮鎸佽繛鎺ヨ嚜宸�')
+ return false
+ }
+ if (this.hasLine(from, to)) {
+ this.$message.error('璇ュ叧绯诲凡瀛樺湪,涓嶅厑璁搁噸澶嶅垱寤�')
+ return false
+ }
+ if (this.hashOppositeLine(from, to)) {
+ this.$message.error('涓嶆敮鎸佷袱涓妭鐐逛箣闂磋繛绾垮洖鐜�');
+ return false
+ }
+ this.$message.success('杩炴帴鎴愬姛')
+ setTimeout(() => { this.setLineLabel(from, to, 'x') }, 50)
+ return true
+ })
+
+ // beforeDetach
+ this.jsPlumb.bind("beforeDetach", (evt) => {
+ console.log('beforeDetach', evt)
+ })
+ this.jsPlumb.setContainer(this.$refs.efContainer)
+ })
+ },
+ // 鍔犺浇娴佺▼鍥�
+ loadEasyFlow() {
+ // 鍒濆鍖栬妭鐐�
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.userId && node.userId != '') {
+ // userId涓烘暟鍊肩被鍨�
+ if (typeof node.userId == 'number'){
+ node.userId = [node.userId]
+ } else {
+ node.userId = node.userId.split(',').map(Number);
+ }
+ } else {
+ node.userId = []
+ }
+ // 璁剧疆婧愮偣锛屽彲浠ユ嫋鍑虹嚎杩炴帴鍏朵粬鑺傜偣
+ this.jsPlumb.makeSource(node.id, lodash.merge(this.jsplumbSourceOptions, {}))
+ // // 璁剧疆鐩爣鐐癸紝鍏朵粬婧愮偣鎷栧嚭鐨勭嚎鍙互杩炴帴璇ヨ妭鐐�
+ this.jsPlumb.makeTarget(node.id, this.jsplumbTargetOptions)
+ if (!node.viewOnly && !this.disabled) {
+ this.jsPlumb.draggable(node.id, {
+ containment: 'parent',
+ stop: function (el) {
+ // 鎷栨嫿鑺傜偣缁撴潫鍚庣殑瀵硅皟
+ console.log('鎷栨嫿缁撴潫: ', el)
+ }
+ })
+ }
+ }
+ // 鍒濆鍖栬繛绾�
+ for (var i = 0; i < this.data.lineList.length; i++) {
+ let line = this.data.lineList[i]
+ var connParam = {
+ source: line.from,
+ target: line.to,
+ label: this.disabled ? null : (line.label ? line.label : 'x'),
+ connector: line.connector ? line.connector : '',
+ anchors: line.anchors ? line.anchors : undefined,
+
+ paintStyle: line.paintStyle ? line.paintStyle : undefined,
+ }
+ this.jsPlumb.connect(connParam, this.jsplumbConnectOptions)
+ }
+ this.$nextTick(function () {
+ this.loadEasyFlowFinish = true
+ })
+ },
+ // 璁剧疆杩炵嚎鏉′欢
+ setLineLabel(from, to, label) {
+ var conn = this.jsPlumb.getConnections({
+ source: from,
+ target: to
+ })[0]
+ if (!label || label === '') {
+ conn.removeClass('flowLabel ')
+ conn.addClass('emptyFlowLabel')
+ } else {
+ conn.addClass('flowLabel')
+ }
+ conn.setLabel({
+ label: 'x' //label,
+ })
+ this.data.lineList.forEach(function (line) {
+ if (line.from == from && line.to == to) {
+ line.label = 'x'// label
+ }
+ })
+
+ },
+ // 鍒犻櫎婵�娲荤殑鍏冪礌
+ deleteElement() {
+ if (this.disabled)
+ return
+ if (this.activeElement.type === 'node') {
+ this.deleteNode(this.activeElement.nodeId)
+ } else if (this.activeElement.type === 'line') {
+ this.$confirm('纭畾鍒犻櫎鎵�鐐瑰嚮鐨勭嚎鍚�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ var conn = this.jsPlumb.getConnections({
+ source: this.activeElement.sourceId,
+ target: this.activeElement.targetId
+ })[0]
+ this.jsPlumb.deleteConnection(conn)
+ }).catch(() => {
+ })
+ }
+ },
+ // 鍒犻櫎绾�
+ deleteLine(from, to) {
+ this.data.lineList = this.data.lineList.filter(function (line) {
+ if (line.from == from && line.to == to) {
+ return false
+ }
+ return true
+ })
+ },
+ // 鏀瑰彉杩炵嚎
+ changeLine(oldFrom, oldTo) {
+ this.deleteLine(oldFrom, oldTo)
+ },
+ // 鏀瑰彉鑺傜偣鐨勪綅缃�
+ changeNodeSite(data) {
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.id === data.nodeId) {
+ node.left = data.left
+ node.top = data.top
+ }
+ }
+ },
+ /**
+ * 鎷栨嫿缁撴潫鍚庢坊鍔犳柊鐨勮妭鐐�
+ * @param evt
+ * @param nodeMenu 琚坊鍔犵殑鑺傜偣瀵硅薄
+ * @param mousePosition 榧犳爣鎷栨嫿缁撴潫鐨勫潗鏍�
+ */
+ addNode(evt, nodeMenu, mousePosition) {
+ if (nodeMenu.type == 'start' && this.data.nodeList.some(x => { return x.type == 'start' })) {
+ this.$message.error('銆愭祦绋嬬粨鏉熴�戣妭鐐瑰凡瀛樺湪,鍙湁閫夋嫨涓�涓祦绋嬪紑濮嬭妭鐐�');
+ return
+ }
+ if (nodeMenu.type == 'end' && this.data.nodeList.some(x => { return x.type == 'end' })) {
+ this.$message.error('銆愭祦绋嬬粨鏉熴�戣妭鐐瑰凡瀛樺湪,鍙湁閫夋嫨涓�涓祦绋嬪紑濮嬭妭鐐�');
+ return
+ }
+ var screenX = evt.originalEvent.clientX, screenY = evt.originalEvent.clientY
+ let efContainer = this.$refs.efContainer
+ var containerRect = efContainer.getBoundingClientRect()
+ var left = screenX, top = screenY
+ // 璁$畻鏄惁鎷栧叆鍒板鍣ㄤ腑
+ if (left < containerRect.x || left > containerRect.width + containerRect.x || top < containerRect.y || containerRect.y > containerRect.y + containerRect.height) {
+ this.$message.error("璇锋妸鑺傜偣鎷栧叆鍒扮敾甯冧腑")
+ return
+ }
+ left = left - containerRect.x + efContainer.scrollLeft
+ top = top - containerRect.y + efContainer.scrollTop
+ // 灞呬腑
+ left -= 85
+ top -= 16
+ var nodeId = this.getUUID()
+ // 鍔ㄦ�佺敓鎴愬悕瀛�
+ var origName = nodeMenu.name
+ var nodeName = origName
+ var index = 1
+ while (index < 10000) {
+ var repeat = false
+ for (var i = 0; i < this.data.nodeList.length; i++) {
+ let node = this.data.nodeList[i]
+ if (node.name === nodeName) {
+ nodeName = origName + index
+ repeat = true
+ }
+ }
+ if (repeat) {
+ index++
+ continue
+ }
+ break
+ }
+ var node = {
+ id: nodeId,
+ name: nodeName,
+ type: nodeMenu.type,
+ left: left + 'px',
+ top: top + 'px',
+ ico: nodeMenu.ico,
+ state: 'success'
+ }
+ /**
+ * 杩欓噷鍙互杩涜涓氬姟鍒ゆ柇銆佹槸鍚﹁兘澶熸坊鍔犺鑺傜偣
+ */
+ this.data.nodeList.push(node)
+ this.$nextTick(function () {
+ this.jsPlumb.makeSource(nodeId, this.jsplumbSourceOptions)
+ this.jsPlumb.makeTarget(nodeId, this.jsplumbTargetOptions)
+ this.jsPlumb.draggable(nodeId, {
+ containment: 'parent',
+ stop: function (el) {
+ // 鎷栨嫿鑺傜偣缁撴潫鍚庣殑瀵硅皟
+ console.log('鎷栨嫿缁撴潫: ', el)
+ }
+ })
+ })
+ },
+ /**
+ * 鍒犻櫎鑺傜偣
+ * @param nodeId 琚垹闄よ妭鐐圭殑ID
+ */
+ deleteNode(nodeId) {
+ this.$confirm('纭畾瑕佸垹闄よ妭鐐�' + nodeId + '?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ closeOnClickModal: false
+ }).then(() => {
+ /**
+ * 杩欓噷闇�瑕佽繘琛屼笟鍔″垽鏂紝鏄惁鍙互鍒犻櫎
+ */
+ this.data.nodeList = this.data.nodeList.filter(function (node) {
+ if (node.id === nodeId) {
+ // 浼垹闄わ紝灏嗚妭鐐归殣钘忥紝鍚﹀垯浼氬鑷翠綅缃敊浣�
+ // node.show = false
+ return false
+ }
+ return true
+ })
+ this.$nextTick(function () {
+ this.jsPlumb.removeAllEndpoints(nodeId);
+ })
+ }).catch(() => {
+ })
+ return true
+ },
+ clickNode(nodeId) {
+ this.activeElement.type = 'node'
+ this.activeElement.nodeId = nodeId
+ this.$refs.nodeForm.nodeInit(this.data, nodeId, this.formFields.WorkTable)
+ },
+ // 鏄惁鍏锋湁璇ョ嚎
+ hasLine(from, to) {
+ for (var i = 0; i < this.data.lineList.length; i++) {
+ var line = this.data.lineList[i]
+ if (line.from === from && line.to === to) {
+ return true
+ }
+ }
+ return false
+ },
+ // 鏄惁鍚湁鐩稿弽鐨勭嚎
+ hashOppositeLine(from, to) {
+ return this.hasLine(to, from)
+ },
+ nodeRightMenu(nodeId, evt) {
+ this.menu.show = true
+ this.menu.curNodeId = nodeId
+ this.menu.left = evt.x + 'px'
+ this.menu.top = evt.y + 'px'
+ },
+ repaintEverything(node) {
+ let _node = this.data.nodeList.find((x) => {
+ return x.id == node.id;
+ });
+ Object.assign(_node, node);
+ console.log(_node);
+ this.jsPlumb.repaint();
+ },
+ // 鍔犺浇娴佺▼鍥�
+ dataReload(data, isAdd) {
+ this.easyFlowVisible = false
+ this.data.nodeList = []
+ this.data.lineList = []
+ this.$nextTick(() => {
+ data = lodash.cloneDeep(data)
+ this.easyFlowVisible = true
+ this.data = data
+ this.$nextTick(() => {
+ this.jsPlumb = jsPlumb.getInstance()
+ this.$nextTick(() => {
+ this.jsPlumbInit()
+ })
+ })
+ })
+ this.formRules.forEach(options => {
+ options.forEach(option => {
+ if (option.field == "WorkTable") {
+ option.readonly = !isAdd;
+ }
+ })
+ })
+ },
+ zoomAdd() {
+ if (this.zoom >= 1) {
+ return
+ }
+ this.zoom = this.zoom + 0.1
+ this.$refs.efContainer.style.zoom = this.zoom;
+ // this.jsPlumb.setZoom(this.zoom)
+ },
+ zoomSub() {
+ if (this.zoom <= 0) {
+ return
+ }
+ this.zoom = this.zoom - 0.1;
+ if (this.zoom < 0.3) {
+ this.zoom = 0.3;
+ }
+ this.$refs.efContainer.style.zoom = this.zoom;
+ // this.jsPlumb.setZoom(this.zoom)
+ }
+ }
+}
+</script>
+<style scoped lang="less">
+@import './index.css';
+
+.flow-panel {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+}
+
+.flow-panel ::v-deep(.el-form-item__label) {
+ margin-bottom: -2px !important;
+ text-align: left;
+ padding: 0 !important;
+ justify-content: flex-start;
+}
+
+.flow-panel ::v-deep(.el-form-item) {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 7px !important;
+
+}
+
+.ef-node-menu-form {
+ padding: 0px;
+}
+
+::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 0px;
+ background: #e0e3e7;
+ height: 20px;
+}
+
+::-webkit-scrollbar-track {
+ background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Config.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Config.jsx"
new file mode 100644
index 0000000..6e78ebd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Config.jsx"
@@ -0,0 +1,48 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ gridHeader: '',
+ gridBody: {
+ // render () {
+ // return [
+ // h(resolveComponent('el-alert'), {
+ // style: { 'margin-bottom': '12px' },
+ // 'show-icon': false, type: 'success',
+ // closable: false, title: '鍏充簬TreeTable浣跨敤'
+ // }, ' treetable鍚屾牱鍏ㄩ儴浠g爜鑷姩鐢熸垚锛岄〉闈㈢敓鎴愬悗璁剧疆this.rowKe="xxx" tree涓婚敭瀛楁,鍗冲彲瀹屾垚鏍戝舰table閰嶇疆,鍏蜂綋璇存槑瑙丼ys_Role1.js'),
+ // ]
+ // }
+ },
+
+ gridFooter: '',
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//鎵╁睍鐨勬寜閽�
+ tableAction:"Sys_Config",
+ methods: {//浜嬩欢鎵╁睍
+ onInited () {
+ //this.height = this.height - 80;
+
+ },
+ onInit() {
+
+ },
+
+ loadTreeChildren(tree, treeNode, resolve) { //鍔犺浇瀛愯妭鐐�
+
+ },
+ searchBefore(params){//鍒ゆ柇鍔犺浇鏍硅妭鐐规垨瀛愯妭鐐�
+ //娌℃湁鏌ヨ鏉′欢锛岄粯璁ゆ煡璇㈣繑鍥炴墍鏈夋牴鑺傜偣鏁版嵁
+ if (!params.wheres.length) {
+ params.value=1;
+ }
+ return true;
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.jsx"
new file mode 100644
index 0000000..d7a82eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.jsx"
@@ -0,0 +1,75 @@
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: { //鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ //鎵╁睍缁勪欢寮曞叆鏂瑰紡
+ gridHeader: '',
+ gridBody: {
+ render () {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': true, type: 'error',
+ closable: false, title: '鐣岄潰涓嬫媺妗嗐�佸閫夈�乧heckbox绛夋暟鎹簮閮藉湪姝ゅ缁存姢锛屼篃鏄唬鐮佺敓鎴愬櫒涓殑鏁版嵁婧�'
+ }, ''),
+ ]
+ }
+ },
+ gridFooter: '',
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [], //鎵╁睍鐨勬寜閽�
+ methods: { //浜嬩欢鎵╁睍
+ onInit () {
+ //鐐瑰嚮鍗曞厓鏍肩紪杈戜笌缁撴潫缂栬緫(榛樿鏄偣鍑诲崟鍏冩牸缂栬緫锛岄紶鏍囩寮�缁撴潫缂栬緫)
+ this.detailOptions.clickEdit = true;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'parentId') {
+ item.min = 0;
+ }
+ if (item.field == "dbSql") {
+ item.placeholder = "濡傛灉浠庢暟鎹簱鍔犺浇鏁版嵁婧愶紝璇锋寜姝ゆ牸寮忛厤缃畇ql璇彞锛歴elect orderType as key,orderName as value from order 濡傛灉闇�瑕佹牴鎹敤鎴蜂俊鎭姞杞芥暟鎹簮锛岃閰嶇疆濂芥sql,鍐嶄慨鏀瑰悗鍙癉ictionaryHandler.GetCustomDBSql鏂规硶";
+ }
+ })
+ })
+ this.detailOptions.columns.forEach(x => {
+ if (x.field == 'orderNo') {
+ x.summary = true;
+ }
+ })
+ //淇濆瓨鍚庝笉鍏抽棴缂栬緫妗�
+ this.boxOptions.saveClose = false;
+ },
+ onInited () {
+ this.boxOptions.height = document.body.clientHeight * 0.87
+ this.height = this.height - 45;
+ },
+ addBefore (formData) {
+ return this.saveBefore(formData);
+ },
+ updateBefore (formData) {
+ return this.saveBefore(formData);
+ },
+ saveBefore (formData) {
+ if (this.editFormFields.DbSql &&
+ (this.editFormFields.DbSql.indexOf('value') == -1 ||
+ this.editFormFields.DbSql.indexOf('key') == -1)
+ ) {
+ this.$message.error("sql璇彞蹇呴』鍖呮嫭key/value瀛楁,濡�:select orderType as key,orderName as value from order");
+ return false;
+ }
+ return true;
+ },
+ searchBefore (param) {
+ return true;
+ },
+ searchAfter (result) {
+ return true;
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.jsx"
new file mode 100644
index 0000000..da94487
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.jsx"
@@ -0,0 +1,22 @@
+
+
+let extension = {
+ components: {//鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ gridHeader:'',
+ gridbody:'',
+ gridFooter: '',
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//鎵╁睍鐨勬寜閽�
+ methods: {//浜嬩欢鎵╁睍
+ onInit() {
+ },
+ onInited() {
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.jsx"
new file mode 100644
index 0000000..5b05c40
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.jsx"
@@ -0,0 +1,26 @@
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {
+ //鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ gridHeader: "", //{ template: "<div>鎵╁睍缁剎x浠�</div>" },
+ gridBody: '',
+ gridFooter: "",
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: "",
+ modelBody: "",
+ modelFooter: ""
+ },
+ buttons: [], //鎵╁睍鐨勬寜閽�
+ methods: {
+ //浜嬩欢鎵╁睍
+ onInit() {
+ console.log("sys_log")
+ this.setFiexdSearchForm(true);
+ },
+ onInited() {
+ this.height = this.height - 170;
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx"
new file mode 100644
index 0000000..c112341
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx"
@@ -0,0 +1,61 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ gridHeader: '',
+ gridBody: {
+ render () {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': false, type: 'success',
+ closable: false, title: '鍏充簬TreeTable浣跨敤'
+ }, ' treetable鍚屾牱鍏ㄩ儴浠g爜鑷姩鐢熸垚锛岄〉闈㈢敓鎴愬悗璁剧疆this.rowKe="xxx" tree涓婚敭瀛楁,鍗冲彲瀹屾垚鏍戝舰table閰嶇疆,鍏蜂綋璇存槑瑙丼ys_Role1.js'),
+ ]
+ }
+ },
+
+ gridFooter: '',
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//鎵╁睍鐨勬寜閽�
+ tableAction:"Sys_Role",
+ methods: {//浜嬩欢鎵╁睍
+ onInited () {
+ this.height = this.height - 80;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ParentId') {
+ item.title = "涓婄骇瑙掕壊";
+ //璁剧疆浠绘剰鑺傜偣閮借兘閫変腑(榛樿鍙兘閫変腑鏈�鍚庝竴涓妭鐐�)
+ item.changeOnSelect = true;
+ }
+ })
+ })
+ },
+ onInit() {
+ //璁剧疆treetable鐨勫敮涓�鍊煎瓧娈�(杩欎釜瀛楁鐨勫�煎湪琛ㄩ噷闈㈠繀椤绘槸鍞竴鐨�)
+ this.rowKey="Role_Id";
+ },
+ /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+ loadTreeChildren(tree, treeNode, resolve) { //鍔犺浇瀛愯妭鐐�
+ let url=`api/Sys_Role/getTreeTableChildrenData?roleId=${tree.Role_Id}`;
+ this.http.post(url,{}).then(result=>{
+ resolve(result.rows)
+ })
+ },
+ /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+ searchBefore(params){//鍒ゆ柇鍔犺浇鏍硅妭鐐规垨瀛愯妭鐐�
+ //娌℃湁鏌ヨ鏉′欢锛岄粯璁ゆ煡璇㈣繑鍥炴墍鏈夋牴鑺傜偣鏁版嵁
+ if (!params.wheres.length) {
+ params.value=1;
+ }
+ return true;
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.jsx"
new file mode 100644
index 0000000..9d5b4d7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.jsx"
@@ -0,0 +1,86 @@
+import { defineAsyncComponent } from "vue";
+let extension = {
+ components: { //鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+ //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ gridHeader: defineAsyncComponent(() =>
+ import("./Sys_User/Sys_UserGridHeader.vue")),
+ gridBody: '',
+ gridFooter: '',
+ //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ text: "鍙兘鐪嬪埌褰撳墠瑙掕壊涓嬬殑鎵�鏈夊笎鍙�",
+ buttons: [], //鎵╁睍鐨勬寜閽�
+ methods: { //浜嬩欢鎵╁睍
+ onInit() {
+ this.boxOptions.height = 530;
+ this.columns.push({
+ title: '鎿嶄綔',
+ hidden: false,
+ align: "center",
+ fixed: 'right',
+ width: 120,
+ render: (h, { row, column, index }) => {
+ return h(
+ "div", { style: { 'font-size': '13px', 'cursor': 'pointer', 'color': '#409eff' } }, [
+ h(
+ "a", {
+ style: { 'margin-right': '15px' },
+ onClick: (e) => {
+ e.stopPropagation()
+ this.$refs.gridHeader.open(row);
+ }
+ }, "淇敼瀵嗙爜"
+ ),
+ h(
+ "a", {
+ style: {},
+ onClick: (e) => {
+ e.stopPropagation()
+ this.edit(row);
+ }
+ },
+ "缂栬緫"
+ ),
+ ])
+ }
+ })
+ },
+ onInited() { },
+ addAfter(result) { //鐢ㄦ埛鏂板缓鍚庯紝鏄剧ず闅忔満鐢熸垚鐨勫瘑鐮�
+ if (!result.status) {
+ return true;
+ }
+ //鏄剧ず鏂板缓鐢ㄦ埛鐨勫瘑鐮�
+ //2020.08.28浼樺寲鏂板缓鎴愬悗鎻愮ず鏂瑰紡
+ this.$confirm(result.message, '鏂板缓鐢ㄦ埛鎴愬姛', {
+ confirmButtonText: '纭畾',
+ type: 'success',
+ center: true
+ }).then(() => { })
+
+ this.boxModel = false;
+ this.refresh();
+ return false;
+ },
+ modelOpenAfter() {
+ //鐐瑰嚮寮瑰嚭妗嗗悗锛屽鏋滄槸缂栬緫鐘舵�侊紝绂佹缂栬緫鐢ㄦ埛鍚嶏紝濡傛灉鏂板缓鐘舵�侊紝灏嗙敤鎴峰悕瀛楁璁剧疆涓哄彲缂栬緫
+ let isEDIT = this.currentAction == this.const.EDIT;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ if (x.field == "userName") {
+ x.disabled=isEDIT;
+ }
+ })
+ //涓嶆槸鏂板缓锛屾�у埆榛樿鍊艰缃负鐢�
+ if (!isEDIT) {
+ this.editFormFields.Gender = "0";
+ }
+ })
+ }
+
+ }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue"
new file mode 100644
index 0000000..1e907b5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue"
@@ -0,0 +1,85 @@
+<template>
+ <div>
+ <vol-box
+ v-model="model"
+ :padding="30"
+ title="淇敼瀵嗙爜"
+ :width="500"
+ :height="250"
+ >
+ <el-alert type="success">
+ <h3>
+ <span>甯愬彿锛歿{ row.userName }}</span>
+ <span>鐢ㄦ埛锛歿{ row.userTrueName }}</span>
+ </h3>
+ </el-alert>
+ <div>
+ <el-input
+ placeholder="璇疯緭鍏ュ瘑鐮�"
+ v-model="password"
+ size="large"
+ style="width: 100%; margin-top: 15px"
+ />
+ </div>
+ <template #footer>
+ <el-button
+ type="primary"
+ @click="savePwd()"
+ >淇敼瀵嗙爜</el-button
+ >
+ <el-button
+ @click="model = false"
+ >鍏抽棴</el-button
+ >
+ </template>
+ </vol-box>
+ </div>
+</template>
+<script>
+import { defineComponent, defineAsyncComponent } from "vue";
+export default defineComponent({
+ components: {
+ VolBox: defineAsyncComponent(() => import("@/components/basic/VolBox.vue"))
+ },
+ data() {
+ return {
+ row: {},
+ password: "",
+ model: false,
+ };
+ },
+ methods: {
+ open(row) {
+ this.password = "";
+ this.row = row;
+ this.model = true;
+ },
+ savePwd() {
+ if (!this.password) return this.$Message.error("璇疯緭瀵嗙爜");
+ if (this.password.length < 6)
+ return this.$Message.error("瀵嗙爜闀垮害鑷冲皯6浣�");
+ let url =
+ "/api/Sys_User/modifyUserPwd?password=" +
+ this.password +
+ "&userName=" +
+ this.row.userName;
+ this.http.post(url, {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message.error(x.message);
+ }
+ this.model = false;
+ this.$Message.success(x.message);
+ });
+ },
+ },
+ created() {},
+})
+</script>
+<style lang="less" scoped>
+h3 {
+ font-weight: 500;
+ > span:last-child {
+ margin-left: 30px;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.jsx"
new file mode 100644
index 0000000..e544a82
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.jsx"
@@ -0,0 +1,153 @@
+
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ this.paginationHide = true;
+ this.lazy = false;
+
+ //鏍戝舰缁撶偣鐨刬d瀛楁
+ this.rowKey = 'DepartmentId';
+ //鐖剁骇id瀛楁
+ this.rowParentField = "ParentId";
+ //鏄惁灞曞紑鎵�鏈夎妭鐐癸紙榛樿浼氳褰曞睍寮�鐨勮妭鐐癸級
+ //this.defaultExpandAll=true;
+
+ //榛樿灞曞紑鐨勮妭鐐�
+ // this.expandRowKeys=["id"]
+ },
+
+ /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+ searchBefore(params) {
+ //鍒ゆ柇鍔犺浇鏍硅妭鐐规垨瀛愯妭鐐�
+ //娌℃湁鏌ヨ鏉′欢锛岄粯璁ゆ煡璇㈣繑鍥炴墍鏈夋牴鑺傜偣鏁版嵁
+ // if (!params.wheres.length) {
+ // params.value = 1;
+ // }
+ return true;
+ },
+ onInited() {
+ let hasUpdate, hasDel, hasAdd;
+ this.buttons.forEach((x) => {
+ if (x.value == 'Update') {
+ x.hidden = true;
+ hasUpdate = true;
+ } else if (x.value == 'Delete') {
+ hasDel = true;
+ x.hidden = true; //闅愯棌鎸夐挳
+ } else if (x.value == 'Add') {
+ x.type = 'primary';
+ hasAdd = true;
+ }
+ });
+ if (!(hasUpdate || hasDel || hasAdd)) {
+ return;
+ }
+ this.columns.push({
+ title: '鎿嶄綔',
+ field: '鎿嶄綔',
+ width: 100,
+ fixed: 'right',
+ align: 'center',
+ render: (h, { row, column, index }) => {
+ return (
+ <div>
+ {hasAdd ? (
+ <el-button
+ onClick={($e) => {
+ this.addBtnClick(row);
+ }}
+ type="primary"
+ link
+ icon="Plus"
+ ></el-button>
+ ) : (
+ ''
+ )}
+ {hasUpdate ? (
+ <el-button
+ onClick={($e) => {
+ this.edit(row);
+ }}
+ type="success"
+ link
+ icon="Edit"
+ ></el-button>
+ ) : (
+ ''
+ )}
+ {hasDel ? (
+ <el-button
+ link
+ onClick={($e) => {
+ this.del(row);
+ }}
+ type="danger"
+ icon="Delete"
+ ></el-button>
+ ) : (
+ ''
+ )}
+ </div>
+ );
+ }
+ });
+ },
+ addBtnClick(row) {
+ //杩欓噷鏄姩鎬乤ddCurrnetRow灞炴�ц褰曞綋鍓嶇偣鍑荤殑琛屾暟鎹�,涓嬮潰modelOpenAfter璁剧疆榛樿鍊�
+ this.addCurrnetRow = row;
+ this.add();
+ },
+ addAfter() {
+ //娣诲姞鍚庡埛鏂板瓧鍏�
+ this.initDicKeys();
+ return true;
+ },
+ updateAfter() {
+ this.initDicKeys();
+ return true;
+ },
+ delAfter(result) {
+ //鏌ヨ鐣岄潰鐨勮〃鍒犻櫎鍚�
+ this.initDicKeys();
+ return true;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮琛屼笂鐨勬坊鍔犳寜閽簨浠�
+ if (this.addCurrnetRow) {
+ //鑾峰彇褰撳墠缁勭粐鏋勬灦鐨勬墍鏈夌埗绾d,鐢ㄤ簬璁剧疆鏂板缓鏃剁埗绾d鐨勯粯璁ゅ��
+
+ //鑾峰彇鏁版嵁鏁版嵁婧�
+ let data = [];
+ this.editFormOptions.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'ParentId') {
+ data = option.orginData;
+ }
+ });
+ });
+ let parentIds = this.base
+ .getTreeAllParent(this.addCurrnetRow.DepartmentId, data)
+ .map((x) => {
+ return x.id;
+ });
+ //璁剧疆缂栬緫琛ㄥ崟涓婄骇缁勭粐鐨勯粯璁ゅ��
+ this.editFormFields.ParentId = parentIds;
+ this.addCurrnetRow = null;
+ }
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx"
new file mode 100644
index 0000000..f6af2eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx"
@@ -0,0 +1,168 @@
+/*****************************************************************************************
+** Author:jxx 2022
+** QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import { defineAsyncComponent } from "vue";
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: defineAsyncComponent(() =>
+ import("./demo_Product/LocationChange.vue")),
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() { //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+ // this.buttons.unshift({ //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+ // name: '鎸夐挳', //鎸夐挳鍚嶇О
+ // icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+ // type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+ // onClick: function () {
+ // this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+ // }
+ // });
+ var btninitializeLocation = this.buttons.find(x => x.value == "initializeLocation");
+ if (btninitializeLocation != null) {
+ btninitializeLocation.onClick = () => {
+ let rows = this.$refs.table.getSelected();
+ if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+ this.http
+ .post("api/LocationInfo/initializeLocation?locationID="+rows[0].id, "","鏁版嵁澶勭悊涓�...")
+ .then((x) => {
+ if (x.status) {
+ this.$Message.success('鎴愬姛.');
+ this.refresh();
+ } else {
+ return this.$error(x.message);
+ }
+ });
+ }
+ }
+
+ var btnEnableLocation = this.buttons.find(x => x.value == "EnableLocation");
+ if (btnEnableLocation != null) {
+ btnEnableLocation.onClick = () => {
+ let rows = this.$refs.table.getSelected();
+ if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+ var ids = rows.map(x => {
+ return x.id;
+ })
+ var param = {
+ DelKeys: ids, //taskNo
+ Extra: true
+ }
+ this.http
+ .post("api/LocationInfo/LocationEnable", param, "鏁版嵁澶勭悊涓�...")
+ .then((x) => {
+ if (x.status) {
+ this.$Message.success('鎴愬姛.');
+ this.refresh();
+ } else {
+ return this.$error(x.message);
+ }
+ });
+ }
+ }
+
+ var btnDisableLocation = this.buttons.find(x => x.value == "DisableLocation");
+ if (btnDisableLocation != null) {
+ btnDisableLocation.onClick = () => {
+ let rows = this.$refs.table.getSelected();
+ if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+ var ids = rows.map(x => {
+ return x.id
+ })
+ var param = {
+ DelKeys: ids, //taskNo
+ Extra: false
+ }
+ this.http
+ .post("api/LocationInfo/LocationEnable", param, "鏁版嵁澶勭悊涓�...")
+ .then((x) => {
+ if (x.status) {
+ this.$Message.success('鎴愬姛.');
+ this.refresh();
+ } else {
+ return this.$error(x.message);
+ }
+ });
+ }
+ }
+ //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+ this.boxOptions.labelWidth = 150;
+
+ //琛ㄦ牸涓婃坊鍔犺嚜瀹氫箟鎸夐挳
+ this.columns.push({
+ title: "鎿嶄綔",
+ field: "鎿嶄綔",
+ width: 150,
+ align: "left", // 'center',
+ render: (h, { row, column, index }) => {
+ return (
+ <div>
+ <el-button
+ onClick={($e) => {
+ // this.$refs.table.load();
+ // console.log(this.$refs.table);
+ this.$refs.gridHeader.customOpen(row);
+ }}
+ type="primary"
+ plain
+ style="height:26px; padding: 10px !important;"
+ >
+ 鐘舵�佸彉鍔ㄨ褰�
+ </el-button>
+ </div>
+ );
+ },
+ });
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true;
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/demo_Product/LocationChange.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/demo_Product/LocationChange.vue"
new file mode 100644
index 0000000..788d4dc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/demo_Product/LocationChange.vue"
@@ -0,0 +1,142 @@
+<template>
+ <vol-box :lazy="true" v-model="model" title="璐т綅鐘舵�佸彉鍔ㄨ褰�" :width="1820" :padding="5">
+ <div class="table-item">
+ <div class="table-item-header">
+ <div class="table-item-border"></div> <span class="table-item-text">璐т綅鐘舵�佸彉鍔ㄨ褰�</span>
+ <div class="table-item-buttons">
+ <div>
+ <el-button type="primary" @click="reload" color="#95d475" plain>鍒锋柊</el-button>
+ </div>
+ </div>
+ </div>
+ <!-- <el-alert type="success" title="" style="line-height: 12px;">
+ 鍔熻兘锛氳〃灏惧悎璁°�佹枃浠朵笂浼犮�佺紪杈戙�乤pi鍔犺浇鏁版嵁銆佽嚜鍔ㄥ垎椤点�佽嚜瀹氫箟鎸夐挳銆佽鐐瑰嚮浜嬩欢銆佸姞杞絣oadBefore鑷畾涔夌瓑銆傘�傘��
+ </el-alert> -->
+ <vol-table @loadBefore="loadBefore" @loadAfter="loadAfter" ref="table" :url="url" index
+ :tableData="tableData" :columns="columns" :height="700" :pagination-hide="false" :load-key="true"
+ :column-index="true"></vol-table>
+ </div>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="small" @click="model = false">纭</el-button>
+ <el-button type="default" size="small" @click="model = false">鍏抽棴</el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+<script lang="jsx">
+//濡傛灉鏄嚜瀹氫箟vue椤甸潰浣跨敤鐨勯厤缃紝鍦╲ue椤甸潰鐨剆cript鍚庝竴瀹氳鍔犱笂lang="jsx"
+import VolTable from "@/components/basic/VolTable.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: {
+ 'vol-table': VolTable,
+ 'vol-box': VolBox
+ },
+ data() {
+ return {
+ model: false,
+ locationCode: '',
+ //鎺ュ彛杩斿洖鏁版嵁锛屽彲浠ユ鏋剁敓鎴愮殑鎺ュ彛getPageData
+ //濡傛灉鏄嚜瀹氫箟鐨勬帴鍙o紝闇�瑕佽繑鍥炵殑鏁版嵁鏍煎紡锛歿total:100,rows:[]}
+ url: "api/LocationStatusChangeRecord/getPageData",
+ columns: [{ field: 'Id', title: '涓婚敭', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationId', title: '璐т綅ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationCode', title: '璐т綅缂栧彿', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'beforeStatus', title: '鍙樺姩鍓嶈揣浣嶇姸鎬�', type: 'int', width: 120, align: 'left', bind: { key: "LocationState", data: [] } },
+ { field: 'afterStatus', title: '鍙樺姩鍚庤揣浣嶇姸鎬�', type: 'int', width: 110, require: true, align: 'left', sort: true, bind: { key: "LocationState", data: [] } },
+ { field: 'changeType', title: '鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁达級', type: 'string', width: 70, align: 'left', bind: { key: "StatusChangeType", data: [] } },
+ { field: 'orderId', title: '鍗曟嵁涓婚敭', type: 'string', width: 70, align: 'left', hidden: true },
+ { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 110, align: 'left', hidden: true },
+ { field: 'orderDetailId', title: '鍗曟嵁鏄庣粏涓婚敭', type: 'string', width: 110, align: 'left', hidden: true },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'int', width: 110, align: 'left', hidden: true },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left', hidden: true },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true }
+ ]
+ }
+ },
+ methods: {
+ //鑷畾涔夋寜閽�
+ customOpen(row) {
+ this.locationCode = row.locationCode;
+ this.locationId = row.id;
+ this.model = true;
+ this.$nextTick(() => {
+ this.$refs.table.load(null, true);
+ })
+ },
+
+ loadBefore(params, callBack) {//璋冪敤鍚庡彴鎺ュ彛鍓嶅鐞�
+ //璁剧疆鏌ヨ鏉′欢鍙傛暟
+ params.wheres.push({
+ name: "locationId",
+ value: this.locationId,
+ displayType: "text"//妯$硦鏌ヨ
+ },{
+ name: "locationCode",
+ value: this.locationCode,
+ displayType: "text"//妯$硦鏌ヨ
+ })
+
+ //涔熷彲浠ョ粰value璁剧疆鍊硷紝鍚庡彴鑷繁瑙f瀽
+ // params.value=this.OrderNo
+
+ //鏌ヨ鍓嶆柟娉曚篃鍙互鍔ㄦ�佽缃畊rl鍙傛暟
+ //params.url='api/xxx/xx?鍙傛暟1='+this.xx鍙傛暟
+
+ callBack(true)//false涓嶄細璋冪敤鍚庡彴鎺ュ彛
+ },
+ //鏌ヨ鍚庢柟娉�
+ loadAfter(rows, callBack, result) {
+ //濡傛灉鏈夊悎璁★細鍚庡彴杩斿洖鍚堣鏍煎紡
+ // var data = new {
+ // rows: [],//杩斿洖鐨勮鏁版嵁
+ // total: 200,//杩斿洖鐨勬�昏鏁�
+ // //鍚堣
+ // summary: { TotalPrice: 100, TotalQty: 200 }
+ // }
+ // callBack(true)
+ },
+ reload() {
+ this.$refs.table.load(null, true);
+ this.$message.success('鏌ヨ鎴愬姛')
+ }
+ }
+}
+</script>
+<style lang="less" scoped>
+.table-item-header {
+ display: flex;
+ align-items: center;
+ padding: 6px;
+
+ .table-item-border {
+ height: 15px;
+ background: rgb(33, 150, 243);
+ width: 5px;
+ border-radius: 10px;
+ position: relative;
+ margin-right: 5px;
+ }
+
+ .table-item-text {
+ font-weight: bolder;
+ }
+
+ .table-item-buttons {
+ flex: 1;
+ text-align: right;
+ }
+
+ .small-text {
+ font-size: 12px;
+ color: #2196F3;
+ margin-left: 10px;
+ position: relative;
+ top: 2px;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/extension/Dt_InboundOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/extension/Dt_InboundOrderDetail.vue"
new file mode 100644
index 0000000..422a707
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/extension/Dt_InboundOrderDetail.vue"
@@ -0,0 +1,102 @@
+<template>
+ <div>
+ <vol-box v-model="showDetialBox" :lazy="true" width="1200px" :padding="15" title="鍏ュ簱鍗曟嵁鏄庣粏">
+ <div style="height: 600px;width:100%">
+ <el-table :data="tableData" border style="width: 100% ;height: 120;" :row-class-name="tableRowClassName">
+ <el-table-column type="index" width="50" label="#"> </el-table-column>
+ <el-table-column prop="inboundNo" label="鍗曟嵁缂栧彿" width="120" ></el-table-column>
+ <el-table-column prop="batchNo" label="鎵规鍙�" width="120" ></el-table-column>
+ <el-table-column prop="inboundType" label="鍗曟嵁绫诲瀷" width="120" ></el-table-column>
+ <el-table-column prop="materialNo" label="鐗╂枡缂栧彿" width="120" ></el-table-column>
+ <el-table-column prop="materialName" label="鐗╂枡鍚嶇О" width="120" ></el-table-column>
+ <el-table-column prop="preInboundQuantity" label="棰勮鍏ュ簱鏁伴噺" width="120" ></el-table-column>
+ <el-table-column prop="actualInboundQuantity" label="瀹為檯鍏ュ簱鏁伴噺" width="120" ></el-table-column>
+ <el-table-column prop="inboundState" label="鍗曟嵁鏄庣粏鐘舵��" width="120" ></el-table-column>
+ <el-table-column prop="unit" label="鍏ュ簱鍗曚綅" width="120" ></el-table-column>
+ </el-table>
+ </div>
+ </vol-box>
+ </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ showDetialBox: false,
+ row: {},
+ tableData: [],
+ };
+ },
+ methods: {
+ open(row) {
+ this.row = row;
+ this.showDetialBox = true;
+ this.getDetailData();
+ },
+ getDetailData() {
+ this.http
+ .post(
+ "/api/Dt_InboundOrderDetail/GetDetail?InboundOrderID=" + this.row.orderId,
+ {},
+ true
+ )
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.tableData = x.data;
+ console.log(this.tableData);
+ });
+ },
+ tableRowClassName({ row, rowIndex }) {
+ if (row.isNormal) {
+
+ } else if (row.isManual) {
+ // return "warning-row";
+ return "success-row";
+ }
+
+ },
+ },
+
+
+ created() { },
+};
+</script>
+
+<style scoped>
+.el-col {
+ border-radius: 4px;
+}
+
+.grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+}
+
+.content-text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.right-text {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+</style>
+<style>
+.el-table .warning-row {
+ background: #e6a23c;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.el-table .error-row {
+ background: #f56c6c;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx"
new file mode 100644
index 0000000..435b472
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx"
@@ -0,0 +1,189 @@
+/*****************************************************************************************
+ ** Author:jxx 2022
+ ** QQ:283591387
+ **瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+ **甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+ **鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+ *****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+// import gridHeader from "./demo_Product/Dt_BillGroupStockDetail.vue";
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ let OutBoundBtn = this.buttons.find((x) => x.value == 'OutBound')
+ if (OutBoundBtn) {
+ OutBoundBtn.onClick = function () {
+ // this.$Message.success('鐐瑰嚮浜嗘寜閽�')
+ let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ if (row <= 0) {
+ //濡傛灉娌℃湁閫変腑琛�
+ this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ return
+ }
+ let locationCode = row[0].locationCode
+ let palletCode = row[0].palletCode
+ this.http
+ .get(
+ `/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`,
+ {},
+ '姝e湪鍒涘缓浠诲姟'
+ )
+ .then((res) => {
+ //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ if (res.status) {
+ this.$Message.success('鍒涘缓浠诲姟鎴愬姛')
+ this.refresh() //鍒锋柊琛ㄦ牸
+ } else {
+ this.$Message.error(res.message) //閿欒鎻愮ず
+ }
+ })
+ }
+ }
+
+ var btnSupplementationData = this.buttons.find(x => x.value == "SupplementationData");
+ if (btnSupplementationData != null) {
+ btnSupplementationData.onClick = () => {
+ let rows = this.$refs.table.getSelected();
+ if (rows.length == 0) {
+ return this.$error("璇烽�夋嫨鏁版嵁!");
+ } else if (rows.length > 1) {
+ return this.$error("鍙兘閫夋嫨鍗曟潯鏁版嵁");
+ }
+ this.$refs.gridBody.open(rows[0].palletCode);
+ this.refresh();
+ }
+
+ }
+ //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+ // this.buttons.unshift({
+ // //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+ // name: '鐩存帴鍑哄簱', //鎸夐挳鍚嶇О
+ // icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+ // type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+ // onClick: function () {
+ // this.$Message.success('鐐瑰嚮浜嗘寜閽�')
+ // let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ // if (row <= 0) {
+ // //濡傛灉娌℃湁閫変腑琛�
+ // this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ // return
+ // }
+ // let locationCode = row[0].locationCode
+ // let palletCode = row[0].palletCode
+ // this.http.get(`/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`, {}, "姝e湪鍒涘缓浠诲姟").then((res) => {
+ // //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ // if (res.status) {
+ // this.$Message.success('鍒涘缓浠诲姟鎴愬姛')
+ // } else {
+ // this.$Message.error(res.message) //閿欒鎻愮ず
+ // }
+ // })
+ // }
+ // })
+
+ //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+ this.boxOptions.labelWidth = 150
+
+ // this.columns.push({
+ // title: "鎿嶄綔",
+ // field: "鎿嶄綔",
+ // width: 150,
+ // align: "left", // 'center',
+ // render: (h, { row, column, index }) => {
+ // return (
+ // <div>
+ // <el-button
+ // onClick={($e) => {
+ // this.$refs.gridHeader.openModel1(row);
+ // }}
+ // type="primary"
+ // plain
+ // style="height:26px; padding: 10px !important;"
+ // >
+ // 鏌ョ湅搴撳瓨鏄庣粏
+ // </el-button>
+ // </div>
+ // );
+ // },
+ // });
+
+ this.columns.forEach((column) => {
+ //淇敼棰滆壊
+ if (column.field == 'roadwayNo') {
+ column.formatter = (row) => {
+ // return '<span style="color: #2d8cf0;">' + row?.locationInfo?.roadwayNo + '</span>'
+ return row?.locationInfo?.roadwayNo
+ }
+ }
+ //鏍煎紡鍖栨棩鏈�
+ // 妫�鏌ュ綋鍓嶅垪鐨勫瓧娈垫槸鍚︿负 'locationStatus'
+ if (column.field == 'locationStatus') {
+ // 浣跨敤瀵硅薄瀛楅潰閲忔潵鏄犲皠 'locationStatus' 鐨勫�煎拰瀵瑰簲鐨勬枃鏈�
+ const statusMap = {
+ '-1': '鍏ㄩ儴',
+ '0': '绌洪棽',
+ '1': '閿佸畾',
+ '2': '鏈夎揣',
+ '3': '鏈夎揣绂佺敤',
+ '4': '鏃犺揣绂佺敤'
+ };
+ // 瀹氫箟涓�涓牸寮忓寲鍑芥暟锛屾牴鎹� 'locationStatus' 鐨勫�艰繑鍥炵浉搴旂殑鏂囨湰
+ column.formatter = (row) => {
+ // 浣跨敤 statusMap 瀵硅薄鏉ヨ幏鍙栧搴旂殑鏂囨湰锛屽鏋滄病鏈夊尮閰嶅垯杩斿洖 '鏈煡鐘舵��'
+ return statusMap[row?.locationInfo?.locationStatus] || '鏈煡鐘舵��';
+ }
+ }
+ })
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row) //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+}
+export default extension
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/HandTask/ManualOutboundTask.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/HandTask/ManualOutboundTask.vue"
new file mode 100644
index 0000000..6df9919
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/HandTask/ManualOutboundTask.vue"
@@ -0,0 +1,90 @@
+<template>
+ <vol-box v-model="show" title="鎸囧畾鍑哄簱" :width="800" :height="600">
+ <template #content>
+ <el-form ref="form" :model="form" label-width="90px">
+ <el-form-item label="杞﹁疆鏉$爜">
+ <el-input type="text" v-model="this.form.palletCode" readonly></el-input>
+ </el-form-item>
+ <el-form-item label="绔欏彴" prop="station">
+ <el-select v-model="form.station" placeholder="璇烽�夋嫨涓嬫枡鍙�">
+ <el-option label="涓婃枡鍙�(2009)" value="2009" />
+ <el-option label="宸︿晶涓嬫枡鍙�(2032)" value="2032" />
+ <el-option label="鍙充晶涓嬫枡鍙�(2042)" value="2042" />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ </template>
+ <template #footer>
+ <div>
+ <el-button type="danger" size="small" plain @click="submit">
+ <i class="el-icon-check">纭</i>
+ </el-button>
+ <el-button size="small" type="primary" plain @click="() => {
+ this.show = false;
+ }
+ ">
+ <i class="el-icon-close">鍏抽棴</i>
+ </el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: {
+ "vol-box": VolBox,
+ },
+ data() {
+ return {
+ form: {
+ palletCode: "",
+ station: "",
+
+ },
+ show: false,
+ };
+ },
+ methods: {
+ open(palletCode) {
+ this.show = true;
+ this.form.palletCode = palletCode;
+ },
+ submit() {
+ this.$emit("parentCall", ($vue) => {
+ if (
+ !this.form.station ||
+ !this.form.palletCode ||
+ this.form.station == "" ||
+ this.form.palletCode == ""
+ ) {
+ this.$message.error("璇烽�夋嫨鍑哄簱鍙�");
+ return;
+ }
+
+ console.log(this.form);
+ var parm = {
+ MainData: {
+ station: this.form.station,
+ palletCode: this.form.palletCode,
+ },
+ };
+ this.http.post("/api/Task/CreateAndSendOutboundTask",parm, true).then((x) => {
+ if (!x.status) {
+ this.$message.error(x.message);
+ } else {
+ this.$Message.success("鎴愬姛");
+ this.form.palletCode='';
+ this.form.station='';
+ this.show = false;
+ $vue.refresh();
+ }
+ });
+
+ });
+ },
+ },
+
+};
+</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/demo_Product/Dt_BillGroupStockDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/demo_Product/Dt_BillGroupStockDetail.vue"
new file mode 100644
index 0000000..c804118
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/demo_Product/Dt_BillGroupStockDetail.vue"
@@ -0,0 +1,106 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStockDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <vol-box :lazy="true" v-model="model1" title="搴撳瓨鏄庣粏淇℃伅" :width="1820" :padding="5" :onModelClose="onModelClose">
+ <view-grid ref="grid" :columns="columns" :searchFormFields="searchFormFields" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormOptions="searchFormOptions" :table="table" :extend="extend">
+ </view-grid>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="small" @click="model1 = false">纭</el-button>
+ <el-button type="default" size="small" @click="model1 = false">鍏抽棴</el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_BillGroupStockDetail.js";
+import VolBox from '@/components/basic/VolBox.vue';
+import { ref, defineComponent, getCurrentInstance } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '搴撳瓨鏄庣粏淇℃伅',
+ name: 'stock/Dt_BillGroupStockDetail',
+ url: "/StockInfoDetail/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ "palletCode": "",
+ "materialNo": "",
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鎵樼洏鍙�", "field": "palletCode", type: "text" },
+ { "title": "鐗╂枡缂栧彿", "field": "materialNo", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({
+ "palletCode": "",
+ "materialNo": "",
+ "stockId": 0
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "鎵樼洏鍙�", "field": "palletCode", type: "text" },
+ { "title": "鐗╂枡缂栧彿", "field": "materialNo", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'id', title: '搴撳瓨鏄庣粏ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'stockId', title: '澶栧仴', type: 'int', width: 110, hidden: true, align: 'left', sort: true },
+ { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 110, align: 'left' },
+ { field: 'batchNo', title: '鎵规鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'materielCode', title: '鐗╂枡缂栧彿', type: 'string', width: 110, align: 'left' },
+ { field: 'materielName', title: '鐗╂枡鍚嶇О', type: 'string', width: 110, align: 'left' },
+ { field: 'serialNumber', title: '搴忓垪鍙�', type: 'string', width: 120, align: 'left' },
+ { field: 'stockQuantity', title: '搴撳瓨鏁伴噺', type: 'string', width: 120, align: 'left' },
+ { field: 'outboundQuantity', title: '鍑哄簱鏁伴噺', type: 'string', width: 120, align: 'left' },
+ { field: 'status', title: '搴撳瓨鐘舵��', type: 'string', width: 110, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'decimal', width: 110, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+
+ const model1 = ref(false);
+ const palletCode = ref("");
+
+ const openModel1 = (row) => {
+ palletCode.value = row.palletCode;
+ searchFormFields.value.stockId = row.id;
+ model1.value = true;
+ }
+
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ model1,
+ palletCode,
+ VolBox,
+ openModel1
+ };
+ },
+ components: {
+ 'vol-box': VolBox
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx"
new file mode 100644
index 0000000..2f9e4b4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx"
@@ -0,0 +1,150 @@
+/*****************************************************************************************
+ ** Author:jxx 2022
+ ** QQ:283591387
+ **瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+ **甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+ **鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+ *****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridHeader from './demo_Product/Dt_TaskExecuteDetail.vue'
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: gridHeader,
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ let TaskHandCompleteBtn=this.buttons.find(x=>x.value=='TaskHandComplete');
+ if(TaskHandCompleteBtn){
+ TaskHandCompleteBtn.onClick=function(){
+ let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ if (row <= 0) {
+ //濡傛灉娌℃湁閫変腑琛�
+ this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ return
+ }
+ let taskNum = row[0].taskNum
+ this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "姝e湪瀹屾垚浠诲姟").then((res) => {
+ //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ if (res.status) {
+ this.$Message.success('浠诲姟瀹屾垚');
+ this.refresh();
+ } else {
+ this.$Message.error(res.message) //閿欒鎻愮ず
+ this.refresh();
+ }
+ })
+ }
+ }
+ //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+ // this.buttons.unshift({
+ // //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+ // name: '浠诲姟瀹屾垚', //鎸夐挳鍚嶇О
+ // icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+ // type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+ // onClick: function () {
+ // // this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+ // let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ // if (row <= 0) {
+ // //濡傛灉娌℃湁閫変腑琛�
+ // this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ // return
+ // }
+ // let taskNum = row[0].taskNum
+ // this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "姝e湪瀹屾垚浠诲姟").then((res) => {
+ // //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ // if (res.status) {
+ // this.$Message.success('浠诲姟瀹屾垚')
+ // } else {
+ // this.$Message.error(res.message) //閿欒鎻愮ず
+ // }
+ // })
+ // }
+ // })
+
+ //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+ this.boxOptions.labelWidth = 150
+
+ //鏄剧ず鎻愮ず
+ this.columns.forEach((col) => {
+ col.showOverflowTooltip = true
+ })
+
+ //绀轰緥锛氳嚜瀹氫箟琛ㄦ牸鍒�
+ //琛ㄦ牸涓婃坊鍔犺嚜瀹氫箟鎸夐挳
+ this.columns.push({
+ title: '鎿嶄綔',
+ field: '鎿嶄綔',
+ width: 150,
+ align: 'left', // 'center',
+ render: (h, { row, column, index }) => {
+ return (
+ <div>
+ <el-button
+ onClick={($e) => {
+ // this.$refs.table.load();
+ // console.log(this.$refs.table);
+ this.$refs.gridHeader.openModel1(row)
+ }}
+ type="primary"
+ plain
+ style="height:26px; padding: 10px !important;"
+ >
+ 鏌ョ湅鎵ц淇℃伅
+ </el-button>
+ </div>
+ )
+ }
+ })
+ },
+ btn1Click(row, column, index, $e) {
+ $e.stopPropagation()
+ this.$refs.gridHeader.openModel1(row)
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row) //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+}
+export default extension
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx"
new file mode 100644
index 0000000..bffd61f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx"
@@ -0,0 +1,148 @@
+/*****************************************************************************************
+ ** Author:jxx 2022
+ ** QQ:283591387
+ **瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+ **甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+ **鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+ *****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridHeader from './demo_Product/Dt_TaskExecuteDetail.vue'
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: gridHeader,
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ // let TaskHandCompleteBtn=this.buttons.find(x=>x.value=='TaskHandComplete');
+ // if(TaskHandCompleteBtn){
+ // TaskHandCompleteBtn.onClick=function(){
+ // let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ // if (row <= 0) {
+ // //濡傛灉娌℃湁閫変腑琛�
+ // this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ // return
+ // }
+ // let taskNum = row[0].taskNum
+ // this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "姝e湪瀹屾垚浠诲姟").then((res) => {
+ // //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ // if (res.status) {
+ // this.$Message.success('浠诲姟瀹屾垚')
+ // } else {
+ // this.$Message.error(res.message) //閿欒鎻愮ず
+ // }
+ // })
+ // }
+ // }
+ //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+ // this.buttons.unshift({
+ // //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+ // name: '浠诲姟瀹屾垚', //鎸夐挳鍚嶇О
+ // icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+ // type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+ // onClick: function () {
+ // // this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+ // let row = this.$refs.table.getSelected() //鑾峰彇閫変腑鐨勮
+ // if (row <= 0) {
+ // //濡傛灉娌℃湁閫変腑琛�
+ // this.$Message.error('璇烽�夋嫨涓�琛屾暟鎹�')
+ // return
+ // }
+ // let taskNum = row[0].taskNum
+ // this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "姝e湪瀹屾垚浠诲姟").then((res) => {
+ // //绀轰緥锛氳皟鐢ㄥ悗鍙版帴鍙�
+ // if (res.status) {
+ // this.$Message.success('浠诲姟瀹屾垚')
+ // } else {
+ // this.$Message.error(res.message) //閿欒鎻愮ず
+ // }
+ // })
+ // }
+ // })
+
+ //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+ this.boxOptions.labelWidth = 150
+
+ //鏄剧ず鎻愮ず
+ this.columns.forEach((col) => {
+ col.showOverflowTooltip = true
+ })
+
+ //绀轰緥锛氳嚜瀹氫箟琛ㄦ牸鍒�
+ //琛ㄦ牸涓婃坊鍔犺嚜瀹氫箟鎸夐挳
+ this.columns.push({
+ title: '鎿嶄綔',
+ field: '鎿嶄綔',
+ width: 150,
+ align: 'left', // 'center',
+ render: (h, { row, column, index }) => {
+ return (
+ <div>
+ <el-button
+ onClick={($e) => {
+ // this.$refs.table.load();
+ // console.log(this.$refs.table);
+ this.$refs.gridHeader.openModel1(row)
+ }}
+ type="primary"
+ plain
+ style="height:26px; padding: 10px !important;"
+ >
+ 鏌ョ湅鎵ц淇℃伅
+ </el-button>
+ </div>
+ )
+ }
+ })
+ },
+ btn1Click(row, column, index, $e) {
+ $e.stopPropagation()
+ this.$refs.gridHeader.openModel1(row)
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row) //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+}
+export default extension
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/demo_Product/Dt_TaskExecuteDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/demo_Product/Dt_TaskExecuteDetail.vue"
new file mode 100644
index 0000000..2cf0b9d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/demo_Product/Dt_TaskExecuteDetail.vue"
@@ -0,0 +1,88 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/taskinfo/Dt_TaskExecuteDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <vol-box :lazy="true" v-model="model1" title="浠诲姟鎵ц鏄庣粏淇℃伅" :width="1820" :padding="5" :onModelClose="onModelClose">
+ <view-grid ref="grid" :columns="columns" :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions" :table="table" :extend="extend">
+ </view-grid>
+ <template #footer>
+ <div>
+ <el-button type="primary" size="small" @click="model1 = false">纭</el-button>
+ <el-button type="default" size="small" @click="model1 = false">鍏抽棴</el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+<script lang="jsx">
+import extend from "@/extension/widesea_wms/taskinfo/Dt_TaskExecuteDetail.js";
+import VolBox from '@/components/basic/VolBox.vue';
+import { ref, defineComponent, getCurrentInstance } from "vue";
+export default defineComponent({
+ setup() {
+ const { ctx: _this } = getCurrentInstance()
+
+ const model1 = ref(false);
+ const TaskNum = ref("");
+
+ const openModel1 = (row) => {
+ TaskNum.value = row.taskNum;
+ model1.value = true;
+
+ _this.$nextTick(() => {
+ _this.$refs.grid.refresh();
+ })
+ }
+
+
+
+ const table = ref({
+ key: 'taskDetailId',
+ footer: "Foots",
+ cnName: '浠诲姟鎵ц淇℃伅',
+ name: 'taskinfo/Dt_TaskExecuteDetail',
+ url: "/TaskExecuteDetail/",
+ sortName: "TaskDetailId"
+ });
+ const searchFormFields = ref({
+ "taskNum": TaskNum,
+ "taskState": ""
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "浠诲姟鍙�", "field": "taskNum", "type": "like" },
+ { "title": "浠诲姟鐘舵��", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
+ ],
+ ]);
+ const columns = ref([{ field: 'taskDetailId', title: 'TaskDetailId', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'taskId', title: '浠诲姟涓婚敭', type: 'int', width: 110, hidden: true, align: 'left', sort: true },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'string', width: 60, align: 'left' },
+ { field: 'taskState', title: '浠诲姟鐘舵��', type: 'int', width: 60, align: 'left', bind: { key: "TaskStatus", data: [] } },
+ { field: 'isManual', title: '鏄惁浜哄伐鎿嶄綔', type: 'bool', width: 60, align: 'left', bind: { key: "isManual", data: [{ key: "false", value: "鑷姩鎵ц" }, { key: "true", value: "浜哄伐鎿嶄綔" }] } },
+ { field: 'remark', title: '鎵ц淇℃伅', type: 'string', width: 180, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'createDate', title: '璁板綍鏃堕棿', type: 'datetime', sort: true, width: 60, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },]);
+ return {
+ table,
+ extend,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ model1,
+ TaskNum,
+ VolBox,
+ openModel1,
+ };
+ },
+ components: {
+ 'vol-box': VolBox
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue"
new file mode 100644
index 0000000..89f5a59
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue"
@@ -0,0 +1,219 @@
+<template>
+ <div class="home-contianer">
+
+ </div>
+</template>
+<script>
+import { ref, onMounted, onUnmounted } from 'vue';
+export default {
+ components: {},
+ data() {
+ return {
+
+ n: 90,
+ value1: '1',
+ };
+ },
+ setup() {
+ let open = (item) => {
+ window.open(item.url, '_blank');
+ };
+ let interval;
+ onMounted(() => {
+
+ // interval = setInterval(() => {
+ // chart2.xAxis[0].data.splice(0, 1);
+ // let lastYear =
+ // chart2.xAxis[0].data[chart2.xAxis[0].data.length - 1] * 1 + 1;
+ // chart2.xAxis[0].data.push(lastYear);
+
+ // chart2.series[0].data.splice(0, 1);
+ // chart2.series[0].data.push(~~(Math.random() * 1000));
+
+ // chart2.series[1].data.splice(0, 1);
+ // chart2.series[1].data.push(~~(Math.random() * 1000));
+ // $chart2.setOption(chart2);
+ // }, 2000);
+ });
+ onUnmounted(() => {
+
+ });
+ return { open };
+ },
+ destroyed() {
+ }
+};
+// window.addEventListener("resize", function () {
+// $chart2.setOption(chart2);
+// });
+</script>
+<style lang="less" scoped>
+.home-contianer {
+ padding: 6px;
+ background: #eee;
+ width: 100%;
+ height: 100%;
+ // max-width: 800px;
+ // position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ margin: 0 auto;
+
+ .h-top {
+ display: flex;
+ .h-top-left {
+ height: 100%;
+ width: 300px;
+ background: white;
+ }
+ height: 300px;
+ }
+ .h-top > div {
+ border: 1px solid #e8e7e7;
+ border-radius: 5px;
+ // margin: 6px;
+ }
+ .h-top-center {
+ height: 100%;
+ background: white;
+ margin: 0 6px;
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ .item1 .num {
+ padding-top: 28px;
+ }
+ .item2 .num {
+ padding-bottom: 20px;
+ }
+
+ .n-item {
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ // display: flex;
+ .item {
+ border-right: 1px solid #e5e5e5;
+ width: 33.3333333%;
+ float: left;
+ height: 50%;
+ border-bottom: 1px solid #e5e5e5;
+ padding: 47px 0;
+ font-size: 13px;
+ }
+ .item:hover {
+ background: #f9f9f9;
+ cursor: pointer;
+ }
+ .item:last-child {
+ border-right: 0;
+ }
+ .item3,
+ .item6 {
+ border-right: 0;
+ }
+ .num {
+ word-break: break-all;
+ color: #282727;
+ font-size: 30px;
+ transition: transform 0.8s;
+ }
+ .num:hover {
+ color: #55ce80;
+ transform: scale(1.2);
+ }
+ .text {
+ font-size: 13px;
+ color: #777;
+ }
+ }
+ }
+ .h-top-right {
+ // flex: 1;
+
+ width: 400px;
+ height: 100%;
+ background: white;
+ }
+ .h3 {
+ padding: 7px 15px;
+ font-weight: 500;
+ background: #fff;
+ border-bottom: 1px dotted #d4d4d4;
+ }
+}
+.task-table {
+ table {
+ width: 100%;
+ .thead {
+ font-weight: bold;
+ }
+ tr {
+ cursor: pointer;
+ td {
+ border-bottom: 1px solid #f3f3f3;
+ padding: 9px 8px;
+ font-size: 12px;
+ }
+ }
+ tr:hover {
+ background: #eee;
+ }
+ }
+}
+.h-chart {
+ height: 340px;
+ margin: 6px 0px;
+ display: flex;
+ .h-left-grid {
+ width: 300px;
+ height: 100%;
+ background: white;
+ display: inline-block;
+ .name {
+ margin-left: 7px;
+ }
+ .item:hover {
+ background: #f9f9f9;
+ cursor: pointer;
+ }
+ .item {
+ padding: 22px 14px;
+ float: left;
+ width: 50%;
+ height: 33.33333%;
+ border-bottom: 1px solid #eee;
+ border-right: 1px solid #eee;
+ i {
+ font-size: 30px;
+ }
+ .desc {
+ font-size: 12px;
+ color: #c3c3c3;
+ padding: 5px 0 0 4px;
+ line-height: 1.5;
+ }
+ }
+ }
+}
+#h-chart2 {
+ border-radius: 3px;
+ background: white;
+ padding-top: 10px;
+ height: 100%;
+ width: 0;
+ flex: 1;
+ margin: 0 7px;
+}
+#h-chart3 {
+ border-radius: 3px;
+ padding: 10px 10px 0 10px;
+ background: white;
+ // padding-top: 10px;
+ height: 100%;
+
+ width: 400px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Index.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Index.vue"
new file mode 100644
index 0000000..623c79a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Index.vue"
@@ -0,0 +1,717 @@
+<template>
+ <div id="vol-container" :class="['vol-theme-' + theme]">
+ <div class="vol-aside" :style="{ width: menuWidth + 'px' }">
+ <div class="header" :style="{ width: menuWidth - 1 + 'px' }">
+ <img v-show="!isCollapse" src="@/assets/imgs/logo.png" />
+ <i @click="toggleLeft" class=" collapse-menu" :class="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" />
+ </div>
+ <div class="vol-menu">
+ <el-scrollbar style="height: 100%">
+ <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false"
+ :isCollapse="isCollapse" :list="menuOptions"></VolMenu>
+ </el-scrollbar>
+ </div>
+ </div>
+ <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
+ <div class="vol-header">
+ <div class="project-name">杞﹁疆鍘嬭鏅鸿兘閫夐厤绯荤粺</div>
+ <div class="header-text">
+ <div class="h-link">
+ <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+ return !c.icon;
+ })" :key="index">
+ <span v-if="!item.icon"> {{ item.text }}</span>
+ <i v-else :class="item.icon"></i>
+ </a>
+ </div>
+ </div>
+ <div class="header-info">
+ <div class="h-link">
+ <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+ return c.icon;
+ })" :key="index">
+ <span v-if="!item.icon"> {{ item.text }}</span>
+ <i v-else :class="item.icon"></i>
+ </a>
+ </div>
+ <!--娑堟伅绠$悊-->
+ <div class="h-link" @click="messageModel = true">
+ <a><i class="el-icon-message-solid"></i></a>
+ </div>
+ <div>
+ <img class="user-header" :src="userImg" @error="($e) => { $e.target.src = errorImg; }" />
+ </div>
+ <div class="user">
+ <span>{{ userName }}</span>
+ <span id="index-date"></span>
+ </div>
+ <div class="settings">
+ <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" />
+ </div>
+ </div>
+ </div>
+ <div class="vol-path">
+ <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)"
+ type="border-card" class="header-navigation" v-model="selectId" :strtch="false">
+ <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0"
+ :key="navIndex" :label="item.name">
+ <span style="display: none">{{ navIndex }}</span>
+ </el-tab-pane>
+ </el-tabs>
+ <!-- 鍙抽敭鑿滃崟 -->
+ <div v-show="contextMenuVisible">
+ <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu">
+ <li v-show="visibleItem.all">
+ <el-button link @click="closeTabs()">
+ <i class="el-icon-close"></i>
+ {{
+ navigation.length == 2 ? "鍏抽棴鑿滃崟" : "鍏抽棴鎵�鏈�"
+ }}</el-button>
+ </li>
+ <li v-show="visibleItem.left">
+ <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>鍏抽棴宸﹁竟</el-button>
+ </li>
+ <li v-show="visibleItem.right">
+ <el-button link @click="closeTabs('right')">
+ <i class="el-icon-right"></i>鍏抽棴鍙宠竟</el-button>
+ </li>
+ <li v-show="visibleItem.other">
+ <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>鍏抽棴鍏朵粬
+ </el-button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="vol-main" id="vol-main">
+ <el-scrollbar style="height: 100%" v-if="permissionInited">
+ <loading v-show="$store.getters.isLoading()"></loading>
+ <router-view v-slot="{ Component }">
+ <keep-alive>
+ <component :is="Component" :key="$route.name"
+ v-if="!$route.meta || ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" />
+ </keep-alive>
+ <component :is="Component" :key="$route.name"
+ v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" />
+ </router-view>
+ </el-scrollbar>
+ </div>
+ </div>
+ <el-drawer title="閫夋嫨涓婚" v-model="drawer_model" direction="rtl" destroy-on-close>
+ <div class="theme-selector">
+ <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index"
+ :style="{ background: item.color }">
+ <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px"
+ class="t-left"></div>
+ <div class="t-right"></div>
+ </div>
+ </div>
+ </el-drawer>
+
+ <el-drawer title="娑堟伅鍒楄〃" v-model="messageModel" direction="rtl" destroy-on-close>
+ <Message :list="messageList"></Message>
+ </el-drawer>
+ </div>
+</template>
+<style lang="less" scoped>
+@import "./index/index.less";
+</style>
+<script>
+import loading from "@/components/basic/RouterLoading";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import Message from "./index/Message.vue";
+import MessageConfig from "./index/MessageConfig.js";
+// var imgUrl = require("@/assets/imgs/logo.png");
+var $this;
+var $interval;
+var $indexDate;
+import {
+ defineComponent,
+ reactive,
+ ref,
+ watch,
+ onMounted,
+ getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "@/../src/api/http.js";
+export default defineComponent({
+ components: {
+ VolMenu,
+ loading,
+ Message,
+ },
+
+ data() {
+ return {
+ allTabs: true,
+ leftTabs: true,
+ rightTabs: true,
+ otherTabs: true,
+ menuLeft: 0,
+ menuTop: 0,
+ // contextMenuVisible: false, // 鍙抽敭鍏抽棴鏄�/闅�
+ };
+ },
+ setup(props, context) {
+ // 鑾峰彇鍏ㄥ眬灞炴�у拰鏂规硶
+ const { proxy } = getCurrentInstance();
+
+ // 鑿滃崟瀵艰埅榛樿瀹藉害
+ const menuWidth = ref(200);
+ const contextMenuVisible = ref(false);
+ const isCollapse = ref(false);
+ const drawer_model = ref(false);
+ const messageModel = ref(false);
+ const theme_color = ref([
+ { name: "blue", color: "rgb(45, 140, 240)" },
+ { name: "blue2", color: "rgb(45, 140, 240)", leftColor: "#0068d6" },
+ { name: "red", color: "rgb(237, 64, 20)" },
+ { name: "red2", color: "rgb(237, 64, 20)", leftColor: "#a90000" },
+ { name: "dark", color: "#272929" },
+ { name: "orange", color: "#ff9900" },
+ { name: "orange2", color: "#ff9900", leftColor: "rgb(232 141 5)" },
+ { name: "green", color: "rgb(25, 190, 107)" },
+ { name: "green2", color: "rgb(25, 190, 107)", leftColor: "#019e4f" },
+ { name: "white", color: "#fff" },
+ ]);
+ const links = ref([
+ //{
+ // text: "妗嗘灦瑙嗛",
+ // path: "https://www.cctalk.com/m/group/90268531",
+ // id: -3,
+ //},
+ //{ text: "澶у睆鏁版嵁", path: "/bigdata", id: -3 },
+ //{
+ // text: "妗嗘灦鏂囨。",
+ // path: "http://v2.volcore.xyz/document/guide",
+ // id: -2,
+ //}, {
+ // text: "妗嗘灦浼佷笟鐗�",
+ // path: "http://pro.volcore.xyz/",
+ // id: 10,
+ //},
+ { text: "涓汉涓績", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
+ {
+ text: "瀹夊叏閫�鍑�",
+ path: "/login",
+ id: -4,
+ icon: "el-icon-switch-button",
+ },
+ ]);
+ const errorImg = ref(new URL('@/assets/imgs/default_header.png', import.meta.url).href);
+ const selectId = ref("1");
+ // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
+ const selectMenuIndex = ref("0");
+ //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
+ const currentMenuId = ref(0);
+ const userName = ref("--");
+ const userInfo = ref({});
+ const visibleItem = reactive({
+ left: false,
+ right: false,
+ all: false,
+ other: false,
+ });
+ const userImg = ref("");
+ const navigation = reactive([
+ { orderNo: "0", id: "1", name: "棣栭〉", path: "/home" },
+ ]);
+ const logo = ref();
+ const theme = ref("blue2");
+ const menuOptions = ref([]);
+ const permissionInited = ref(false);
+ const messageList = reactive([]);
+ let _config = getCurrentInstance().appContext.config.globalProperties;
+ let router = useRouter();
+ const toggleLeft = () => {
+ isCollapse.value = !isCollapse.value;
+ menuWidth.value = isCollapse.value ? 63 : 200;
+ };
+ //2021.08.28寮�鏀炬墜鍔ㄦ姌鍙犺彍鍗曟柟娉�
+ _config.menu = {
+ show() {
+ toggleLeft();
+ },
+ hide() {
+ toggleLeft();
+ },
+ };
+ const changeTheme = (name) => {
+ if (theme.value != name) {
+ theme.value = name;
+ }
+ localStorage.setItem("vol3_theme", name);
+ };
+ const to = (item) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ if (item.path == "#") {
+ window.open("https://github.com/cq-panda/Vue.NetCore");
+ return;
+ }
+ if (item.path.indexOf("http") != -1) {
+ window.open(item.path);
+ return;
+ }
+ if (typeof item == "string" || item.path == "/login") {
+ if (item == "/login" || item.path == "/login") {
+ store.commit("clearUserInfo", "");
+ window.location.href = "/";
+ return;
+ }
+ router.push({ path: item });
+ return;
+ }
+ if (item.path == "#") return;
+ open(item);
+ };
+ const open = (item, useRoute) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let _index = navigation.findIndex((x) => {
+ return x.path == item.path;
+ });
+ if (_index == -1) {
+ navigation.push({
+ // orderNo: String(navigation.length),// 搴忓彿
+ id: item.id + "",
+ name: item.name || item.text || "鏃犳爣棰�",
+ path: item.path,
+ query: item.query, //2021.03.20淇鑷畾涔変簩娆℃墦寮�$tabs鏃跺弬鏁颁涪澶辩殑闂
+ });
+ //鏂版墦寮�鐨則ab绉昏嚦鏈�鍚庝竴涓�夐」
+ selectId.value = navigation.length - 1 + "";
+ } else {
+ selectId.value = _index + "";
+ }
+ if (useRoute === undefined) {
+ //闈炴爣鍑嗚彍鍗曪紝璁板綍鏈�鍚庝竴娆¤烦杞殑椤甸潰锛岀敤浜庡埛鏂�
+ setItem(item);
+ router.push(item);
+ // this.$router.push(item);
+ }
+ currentMenuId.value = item.id * 1;
+ // tab鑿滃崟缁戝畾鍙抽敭浜嬩欢
+ proxy.$nextTick(function (e) {
+ proxy.bindRightClickMenu(true);
+ });
+ };
+ const close = (path) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let index = navigation.findIndex((x) => {
+ return x.path == path;
+ });
+ if (index == -1) {
+ return _config.$Message.error("鏈壘鍒拌彍鍗�");
+ }
+ removeNav(index);
+ };
+ const setItem = (item) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ localStorage.setItem(
+ window.location.origin + "_tabs",
+ JSON.stringify(item)
+ );
+ };
+ const getItem = () => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ let nav = localStorage.getItem(window.location.origin + "_tabs");
+ return nav ? JSON.parse(nav) : null;
+ };
+ const selectNav = (item) => {
+ //鍗囩骇element姝e紡鐗堜慨鏀�
+ selectId.value = item.props.name;
+ let _path = navigation[item.index].path;
+ currentMenuId.value = (
+ menuOptions.value.find((c) => {
+ return c.path == _path;
+ }) || { id: 0 }
+ ).id;
+
+ router.push({
+ path: navigation[item.index].path,
+ query: navigation[item.index].query,
+ });
+ };
+
+ const removeNav = (_index) => {
+ return new Promise(() => {
+ //鍏抽棴鐨勫綋鍓嶉」,璺宠浆鍒板墠涓�涓〉闈�
+ if (selectId.value == _index + "") {
+ console.log(navigation[_index - 1]);
+ setItem(navigation[_index - 1]);
+ router.push({
+ path: navigation[_index - 1].path,
+ //2022.06.27淇tabs浜屾鍒囨崲鍚庡弬鏁颁涪澶辩殑闂
+ query: navigation[_index - 1].query,
+ });
+ navigation.splice(_index, 1);
+ selectId.value = selectId.value - 1 + "";
+ return;
+ }
+ if (_index < selectId.value) {
+ selectId.value = selectId.value - 1 + "";
+ }
+ navigation.splice(_index, 1);
+ currentMenuId.value = (
+ menuOptions.value.find((c) => {
+ return c.path == navigation[selectId.value * 1].path;
+ }) || { id: 0 }
+ ).id;
+ });
+ };
+
+ const getSelectMenuName = (id) => {
+ return menuOptions.value.find(function (x) {
+ return x.id == id;
+ });
+ };
+ const onSelect = (treeId) => {
+ /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+ var item = getSelectMenuName(treeId);
+ open(item, false);
+ };
+
+ /**
+ * 鏄剧ず鍙抽敭鑿滃崟
+ * @param {*} e 浜嬩欢瀵硅薄
+ */
+ const openTabsMenu = function (e) {
+ e.preventDefault(); // 闃叉榛樿鑿滃崟寮瑰嚭
+ let tabId = e.target.id.split("-")[1] * 1;
+
+ //璁板綍褰撳墠閫変腑鐨勮彍鍗昳ndex
+ selectMenuIndex.value =
+ document.getElementById("pane-" + tabId).children[0].textContent * 1;
+ //鍙湁棣栭〉鏃朵笉鏄剧ず
+ if (navigation.length == 1) {
+ return;
+ }
+
+ //棣栭〉璁剧疆鏄剧ず鍏抽棴鍙宠竟鑿滃崟
+ if (!selectMenuIndex.value) {
+ visibleItem.all = false;
+ visibleItem.right = true;
+ visibleItem.left = false;
+ visibleItem.other = false;
+ } else {
+ visibleItem.all = true;
+ //涓嶆槸鏈�鍚庝竴涓樉绀哄叧闂彸杈硅彍鍗�
+ visibleItem.right = selectMenuIndex.value != navigation.length - 1;
+ //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴宸﹁竟
+ visibleItem.left = navigation.length != 2;
+ //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴鍏朵粬
+ visibleItem.other = navigation.length != 2;
+ }
+ contextMenuVisible.value = true;
+ // 璁剧疆鍙抽敭鑿滃崟鏄剧ず鐨勪綅缃�
+ proxy.menuLeft =
+ e.target.getBoundingClientRect().left - (isCollapse.value ? 63 : 198); //-e.target.clientWidth
+ proxy.menuTop = 36;
+ };
+
+ /**
+ * 鍏抽棴鍙抽敭鑿滃崟
+ */
+ const closeTabsMenu = () => {
+ contextMenuVisible.value = false;
+ };
+ const toHome = () => {
+ open({
+ text: navigation[0].name,
+ path: navigation[0].path,
+ });
+ };
+ /**
+ * 鍏抽棴鍏跺畠鏍囩椤�
+ * @param {*} par 鍏抽棴绫诲瀷(left,right,other)
+ */
+ const closeTabs = (value) => {
+ let _menuId = navigation[selectId.value * 1].id;
+ let currnetIndex = selectId.value * 1; // navigation.findIndex(c => { return c.id == selectId.value });
+ switch (value) {
+ case "left": {
+ // 鍒犻櫎宸︿晶tab鏍囩
+ navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+ break;
+ }
+ case "right": {
+ // 鍒犻櫎鍙充晶tab鏍囩
+ if (selectMenuIndex.value == 0) {
+ navigation.splice(currnetIndex); // 鍒犻櫎鍙充晶tab鏍囩
+ toHome();
+ } else {
+ navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩
+ if (selectMenuIndex.value < currnetIndex) {
+ navigation.splice(
+ selectMenuIndex.value,
+ currnetIndex - selectMenuIndex.value
+ );
+ }
+ }
+ break;
+ }
+ case "other": {
+ // 鍒犻櫎鍏朵粬鎵�鏈塼ab鏍囩
+ navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩(杩欓噷蹇呴』鎸夌収鍙斥啋宸﹂『搴忓垹闄�)
+ navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+ break;
+ }
+ default: {
+ //鍏抽棴鎵�鏈�
+ navigation.splice(1, navigation.length);
+ toHome();
+ break;
+ }
+ }
+ selectId.value =
+ navigation.findIndex((c) => {
+ return c.id == _menuId;
+ }) + "";
+ closeTabsMenu();
+ };
+
+ watch(
+ () => contextMenuVisible.value,
+ (newVal, oldVal) => {
+ // 鐩戣
+ if (newVal) {
+ document.body.addEventListener("click", closeTabsMenu);
+ } else {
+ document.body.removeEventListener("click", closeTabsMenu);
+ }
+ }
+ );
+
+ /**
+ * 绯荤粺鍒涘缓寮�濮�
+ */
+ const created = () => {
+ let _theme = localStorage.getItem("vol3_theme");
+ if (_theme) {
+ theme.value = _theme;
+ }
+
+ let _userInfo = store.getters.getUserInfo();
+ if (_userInfo) {
+ userName.value = _userInfo.userName;
+ if (_userInfo.img) {
+ userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
+ }
+ }
+ Object.assign(_config.$tabs, { open: open, close: close });
+
+ http.get("api/menu/getTreeMenu", {}, true).then((data) => {
+ data.push({ id: "1", name: "棣栭〉", url: "/home" }); // 涓轰簡鑾峰彇閫変腑id浣跨敤
+ data.forEach((d) => {
+ d.path = (d.url || "").replace("/Manager", "");
+ d.to = (d.url || "").replace("/Manager", "");
+ if (!d.icon || d.icon.substring(0, 3) != "el-") {
+ d.icon = "el-icon-menu";
+ }
+ });
+ store.dispatch("setPermission", data);
+ menuOptions.value = data;
+ permissionInited.value = true;
+
+ //寮�鍚秷鎭帹閫侊紙main.js涓缃槸鍚﹀紑鍚痵ignalR锛�2022.05.05
+ if (_config.$global.signalR) {
+ MessageConfig(http, (result) => {
+ messageList.unshift(result);
+ // console.log(result)
+ });
+ }
+
+ //褰撳墠鍒锋柊鏄笉鏄椤�
+ if (router.currentRoute.value.path != navigation[0].path) {
+ //鏌ユ壘绯荤粺鑿滃崟
+ let item = menuOptions.value.find((x) => {
+ return x.path == router.currentRoute.value.path; //this.$route.path;
+ });
+ if (item) return onSelect(item.id);
+ //鏌ユ壘椤堕儴蹇嵎杩炴帴
+ item = links.value.find((x) => {
+ return x.path == router.currentRoute.value.path; //this.$route.path;
+ });
+ //鏌ユ壘鏈�鍚庝竴娆¤烦杞殑椤甸潰
+ if (!item) {
+ item = getItem();
+ }
+ if (item) {
+ return open(item, false);
+ }
+ }
+ selectId.value = "1";
+ });
+ };
+ created();
+ return {
+ menuWidth,
+ isCollapse,
+ drawer_model,
+ theme_color,
+ errorImg,
+ userInfo,
+ userName,
+ userImg,
+ selectId,
+ selectMenuIndex,
+ navigation,
+ links,
+ onSelect,
+ openTabsMenu,
+ selectNav,
+ getSelectMenuName,
+ removeNav,
+ logo,
+ theme,
+ menuOptions,
+ permissionInited,
+ changeTheme,
+ to,
+ toggleLeft,
+ messageModel,
+ messageList,
+ contextMenuVisible,
+ visibleItem,
+ closeTabsMenu,
+ closeTabs,
+ currentMenuId,
+ };
+ },
+ /**
+ * 鎸傝浇閽╁瓙鍑芥暟
+ */
+ mounted() {
+ let _date = showTime();
+ $indexDate = document.getElementById("index-date");
+ $indexDate.innerText = _date;
+ $interval = setInterval(function () {
+ $indexDate.innerText = showTime();
+ }, 1000);
+
+ this.bindRightClickMenu(true);
+ },
+
+ methods: {
+ /**
+ * 缁戝畾鍙抽敭浜嬩欢
+ * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+ * @param {*} $event 浜嬩欢
+ */
+ bindRightClickMenu(enable) {
+ if (!enable) return;
+ let that = this;
+ // 浣跨敤鍘熺敓js 涓哄崟涓猟om缁戝畾榧犳爣鍙冲嚮浜嬩欢
+ that.$nextTick(() => {
+ let tab_top_dom = Object.assign(
+ [],
+ document.getElementsByClassName("el-tabs__item is-top")
+ );
+ tab_top_dom.forEach((item, index) => {
+ item.oncontextmenu = that.openTabsMenu;
+ });
+ });
+ },
+ },
+
+ /**
+ * 閿�姣侀挬瀛愬嚱鏁�
+ */
+ destroyed() {
+ $this = null;
+ clearInterval($interval);
+ },
+});
+const week = new Array(
+ "鏄熸湡涓�",
+ "鏄熸湡浜�",
+ "鏄熸湡涓�",
+ "鏄熸湡鍥�",
+ "鏄熸湡浜�",
+ "鏄熸湡鍏�",
+ "鏄熸湡鏃�"
+);
+function showTime() {
+ let date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+ let hour = date.getHours();
+ let minutes = date.getMinutes();
+ let second = date.getSeconds();
+
+ return (
+ year +
+ "." +
+ (month < 10 ? "0" + month : month) +
+ "." +
+ (day < 10 ? "0" + day : day) + //202.08.08淇鏃ユ湡澶╂暟灏忎簬10鏃舵坊鍔�0
+ "" +
+ " " +
+ (hour < 10 ? "0" + hour : hour) +
+ ":" +
+ (minutes < 10 ? "0" + minutes : minutes) +
+ ":" +
+ (second < 10 ? "0" + second : second) +
+ " " + //2020.08.30淇棣栭〉鏃ユ湡鏄熸湡澶╀笉鏄剧ず鐨勯棶棰�
+ (week[date.getDay() - 1] || week[6])
+ );
+}
+</script>
+
+<style lang="less" scoped>
+.vol-container .vol-path ::v-deep(.el-tabs__content) {
+ padding: 0;
+}
+
+.contextMenu {
+ width: 120px;
+ margin: 0;
+ border: 1px solid #eaeaea;
+ background: #fff;
+ z-index: 30000;
+ position: absolute;
+ list-style-type: none;
+ padding: 5px 0;
+ border-radius: 4px;
+ font-size: 14px;
+ color: #333;
+ box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%);
+
+ i,
+ button {
+ font-size: 14px !important;
+ }
+}
+
+.contextMenu li {
+ margin: 0;
+ padding: 5px 17px;
+}
+
+.contextMenu li:hover {
+ background: #fafafa;
+ cursor: pointer;
+}
+
+.contextMenu li button {
+ color: #626060;
+ font-size: 14px;
+ letter-spacing: 1px;
+}
+
+.el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child,
+.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) {
+ padding: 0;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-top) {
+ padding: 0 15px;
+}
+</style>
+<style>
+.horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out,
+ 0s padding-right ease-in-out;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue"
new file mode 100644
index 0000000..5bf8a06
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue"
@@ -0,0 +1,408 @@
+<template>
+ <div class="login-container">
+ <div class="project-name">WIDESEA_WMS</div>
+ <div class="login-form">
+ <div class="form-user" @keypress="loginPress">
+ <div class="login-text">
+ <div>
+ <div>娆㈣繋鐧诲綍...</div>
+ <div class="login-line"></div>
+ </div>
+ <div style="flex:1;"></div>
+ </div>
+ <div class="login-text-small">WELCOME TO LOGIN</div>
+ <div class="item">
+ <div class="input-icon el-icon-user"></div>
+ <input type="text" v-focus v-model="userInfo.userName" placeholder="璇疯緭鍏ヨ处鍙�" />
+ </div>
+ <div class="item">
+ <div class="input-icon el-icon-lock"></div>
+ <input type="password" v-focus v-model="userInfo.password" placeholder="璇疯緭鍏ュ瘑鐮�" />
+ </div>
+ <div class="item">
+ <div class="input-icon el-icon-mobile"></div>
+
+ <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="杈撳叆楠岃瘉鐮�" />
+ <div class="code" @click="getVierificationCode">
+ <img v-show="codeImgSrc != ''" :src="codeImgSrc" />
+ </div>
+ </div>
+ </div>
+ <div class="flex-center">
+ <el-checkbox v-model="rememberMe" name="rememberMe">
+ 璁颁綇瀵嗙爜
+ </el-checkbox>
+ </div>
+ <div class="loging-btn">
+ <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long>
+ <span v-if="!loading">鐧诲綍</span>
+ <span v-else>姝e湪鐧诲綍...</span>
+ </el-button>
+ </div>
+
+ <!-- 璐﹀彿淇℃伅 -->
+ <!-- <div class="account-info">
+ <p>婕旂ず璐﹀彿锛歛dmin666 瀵嗙爜:123456</p>
+ <p>鏈湴璐﹀彿锛歛dmin 瀵嗙爜:123456</p>
+ <p><a href="https://jq.qq.com/?_wv=1027&k=Sqstuy0M" style="text-decoration: none"
+ target="_blank">QQ3缇�:743852316(婊�)</a>
+
+ <a href="https://qm.qq.com/cgi-bin/qm/qr?k=YRZBbf64qsUeEmh24I65u2aIZFn2C-Ha&jump_from=webapi&qr=1" style="text-decoration: none" target="_blank">QQ4缇わ細959924606</a> -->
+ <!-- <a href="http://v2.volcore.xyz/document/guide" style="text-decoration: none" target="_blank">妗嗘灦鏂囨。</a> -->
+ <!-- </p>
+ </div> -->
+ <!-- 閾炬帴浣嶇疆 -->
+ <!-- <div class="app-link" >
+ <a href="#" style="text-decoration: none">绉诲姩绔壂鐮�</a>
+ <a>
+ <i class="el-icon-chat-dot-round"></i> 灏忕▼搴�
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/wechat.jpg" /></a>
+ <a>
+ <i class="el-icon-apple"></i>
+ Android
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/Android.png" /></a>
+ <a>
+ <i class="el-icon-document"></i>
+ H5
+ <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/H5.png" /></a>
+ </div> -->
+ </div>
+
+ <!-- 椤甸潰搴曢儴 -->
+ <!-- <div class="login-footer">
+ <a style="text-decoration: none" href="https://beian.miit.gov.cn/" target="_blank">浜琁CP澶�19056538鍙�-1</a>
+
+
+ <a href="https://dotnet9.com/" style="text-decoration: none" target="blank">Dotnet9</a>
+ <a href="https://space.bilibili.com/525836469" style="text-decoration: none" target="blank">NET瑙嗛鏁欑▼(寰蒋MVP-ACE褰曞埗)</a>
+ <a href="https://www.cctalk.com/m/group/90268531" style="text-decoration: none" target="blank">VOL妗嗘灦瑙嗛</a>
+ <a href="http://demo.volcore.xyz" style="text-decoration: none" target="blank">瑙嗛婕旂ず鍦板潃</a>
+ </div> -->
+
+ <img class="login-bg" src="/static/login_bg.png" />
+ </div>
+</template>
+
+
+<script >
+import {
+ defineComponent,
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance
+} from 'vue';
+import { useRouter, useRoute } from 'vue-router';
+import store from '../store/index';
+import http from '@/../src/api/http.js';
+export default defineComponent({
+ setup(props, context) {
+ store.commit('clearUserInfo', '');
+ const loading = ref(false);
+ const codeImgSrc = ref('');
+ const userInfo = reactive({
+ userName: 'admin',
+ password: '123456',
+ verificationCode: '1234',
+ UUID: undefined
+ });
+
+ const rememberMe = ref(false);
+ const savedForm = localStorage.getItem('loginForm');
+ if (savedForm) {
+ const { userName, password } = JSON.parse(savedForm);
+ userInfo.userName = userName;
+ userInfo.password = password;
+ rememberMe.value = true;
+ }
+ const getVierificationCode = () => {
+ http.get('/api/Sys_User/getVierificationCode').then((x) => {
+ codeImgSrc.value = 'data:image/png;base64,' + x.img;
+ userInfo.UUID = x.uuid;
+ });
+ };
+ getVierificationCode();
+
+ let appContext = getCurrentInstance().appContext;
+ let $message = appContext.config.globalProperties.$message;
+ let router = useRouter();
+
+ const login = () => {
+ if (!userInfo.userName) return $message.error('璇疯緭鍏ョ敤鎴峰悕');
+ if (!userInfo.password) return $message.error('璇疯緭鍏ュ瘑鐮�');
+ if (!userInfo.verificationCode) {
+ return $message.error('璇疯緭鍏ラ獙璇佺爜');
+ }
+ loading.value = true;
+ if (rememberMe.value) {
+ localStorage.setItem('loginForm', JSON.stringify(userInfo));
+ rememberMe.value = true;
+ } else {
+ localStorage.removeItem('loginForm');
+ rememberMe.value = false;
+ }
+ http.post('/api/Sys_User/login', userInfo, '姝e湪鐧诲綍....').then((result) => {
+ if (!result.status) {
+ loading.value = false;
+ getVierificationCode();
+ return $message.error(result.message);
+ }
+ $message.success('鐧诲綍鎴愬姛,姝e湪璺宠浆!');
+ store.commit('setUserInfo', result.data);
+ router.push({ path: '/' });
+ });
+ };
+ const loginPress = (e) => {
+ if (e.keyCode == 13) {
+ login();
+ }
+ };
+ const openUrl = (url) => {
+ window.open(url, '_blank');
+ };
+ return {
+ loading,
+ codeImgSrc,
+ getVierificationCode,
+ login,
+ userInfo,
+ loginPress,
+ openUrl,
+ rememberMe,
+ };
+ },
+ directives: {
+ focus: {
+ inserted: function (el) {
+ el.focus();
+ }
+ }
+ }
+});
+</script>
+<style lang="less" scoped>
+.login-container {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ background: rgb(246, 247, 252);
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.login-form {
+ align-items: center;
+ width: 50%;
+ display: flex;
+ flex-direction: column;
+ // margin-right: 150px;
+ z-index: 999;
+
+ .form-user {
+ // margin: 25px 0;
+
+ .item {
+ border-radius: 5px;
+ border: 1px solid #ececec;
+ display: flex;
+ margin-bottom: 30px;
+ background: #ffff;
+ height: 45px;
+ padding-left: 20px;
+ display: flex;
+
+ .code {
+ position: relative;
+ cursor: pointer;
+ width: 74px;
+ padding: 5px 10px 0 0;
+ }
+
+ .input-icon {
+ line-height: 45px;
+ color: #7a7a7a;
+ padding-right: 20px;
+ }
+ }
+ }
+
+ input:-webkit-autofill {
+ box-shadow: 0 0 0px 1000px white inset;
+ -webkit-box-shadow: 0 0 0px 1000px white inset !important;
+ }
+
+ input {
+ background: white;
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ color: #323233;
+ line-height: inherit;
+ text-align: left;
+ border: 0;
+ outline: none;
+ font-size: 16px;
+ line-height: 20px;
+ }
+}
+
+.form-user,
+.loging-btn {
+ width: 400px;
+}
+
+.loging-btn {
+ box-shadow: 2px 4px 11px #a4c2ff;
+ margin-top: 10px;
+
+ button {
+ padding: 21px;
+ font-size: 14px !important;
+ width: 100%;
+ }
+}
+
+.login-text {
+ font-weight: bolder;
+ font-size: 20px;
+ letter-spacing: 2px;
+
+ position: relative;
+ display: flex;
+
+ .login-line {
+ z-index: -1;
+ padding: 5px;
+ position: relative;
+ top: -8px;
+ width: 100%;
+ background-image: linear-gradient(to right, #6598ff, white);
+ }
+}
+
+.login-text-small {
+ margin-bottom: 20px;
+ font-size: 13px;
+ color: #7d7c7c;
+}
+
+.login-bg {
+ left: 0;
+ position: absolute;
+ height: 100%;
+ width: 50%;
+ z-index: 0;
+}
+
+.project-name {
+ position: absolute;
+ top: 40px;
+ left: 40px;
+ z-index: 9999;
+ font-weight: bolder;
+ background-image: linear-gradient(to right, #1850c1, #9c009c);
+ -webkit-background-clip: text;
+ color: transparent;
+ font-size: 25px;
+}
+</style>
+<style lang="less" scoped>
+.app-link {
+ // font-weight: bolder;
+ text-align: center;
+ padding-top: 5px;
+ font-size: 12px;
+ width: 400px;
+ padding-left: 40px;
+ display: flex;
+
+ a {
+ flex: 1;
+ position: relative;
+ cursor: pointer;
+ width: 70px;
+ color: #666666;
+ margin: 2px 10px 0 0;
+ }
+
+ img {
+ display: none;
+ }
+
+ a:hover {
+ color: #0545f6 !important;
+
+ img {
+ display: block;
+ position: absolute;
+ z-index: 999999999;
+ top: -130px;
+ width: 120px;
+ left: -22px;
+
+ border: 1px solid #b1b1b1;
+ }
+ }
+}
+
+.login-footer {
+ position: absolute;
+ width: 50%;
+ bottom: 0.5rem;
+ font-size: 12px;
+ text-align: center;
+ padding-bottom: 10px;
+ color: #4f4f4f;
+
+ a {
+ margin-right: 10px;
+ font-size: 12px;
+ color: #4f4f4f;
+ }
+
+ div {
+ margin-bottom: 5px;
+ }
+
+ a:hover {
+ cursor: pointer;
+ color: #0540e3 !important;
+ }
+}
+
+.account-info {
+ font-size: 12px;
+ color: #636363;
+ margin-top: 15px;
+}
+</style>
+
+<style lang="less" scoped>
+@media screen and (max-width: 700px) {
+
+ .login-bg,
+ .account-info,
+ .app-link,
+ .login-footer,
+ .project-name {
+ display: none;
+ }
+
+ .login-container {
+ padding: 2rem;
+ justify-content: center;
+ }
+
+ .login-form {
+ width: 100%;
+ }
+
+ .form-user,
+ .loging-btn {
+ width: 100%;
+ }
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/Message.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/Message.vue"
new file mode 100644
index 0000000..2c77447
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/Message.vue"
@@ -0,0 +1,45 @@
+<template>
+ <div class="message-container">
+ <div class="item" v-for="(item, index) in list" :key="index">
+ <div class="title">{{ item.title }}({{ item.date }})</div>
+ <div class="content">{{ item.message }}</div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ list: {
+ type: Array,
+ default: () => {
+ return [];
+ }
+ }
+ },
+ created() {
+ if (!this.list.length) {
+ this.list.push({
+ title: '娑堟伅娴嬭瘯鏍囬',
+ message: '娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭娑堟伅娴嬭瘯鍐呭',
+ date: '2022-05-02 03:10'
+ });
+ }
+ }
+};
+</script>
+<style scoped lang="less">
+.message-container {
+ .title {
+ padding-bottom: 10px;
+ }
+ .item {
+ border-bottom: 1px solid #eee;
+ padding: 10px 20px;
+ }
+ .content {
+ color: #7e7e7e;
+ font-size: 13px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/index.less" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/index.less"
new file mode 100644
index 0000000..c872e91
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/index/index.less"
@@ -0,0 +1,644 @@
+.vol-aside {
+ height: 100%;
+ position: absolute;
+ float: left;
+ overflow: hidden;
+}
+
+.vol-menu {
+ border: 0 !important;
+}
+
+.vol-aside .tac {
+ text-align: left;
+}
+
+.vol-aside .header {
+ text-align: center;
+ position: absolute;
+ height: 60px;
+ position: relative;
+ line-height: 60px;
+}
+
+.vol-aside .vol-menu {
+ position: absolute;
+ width: 100%;
+ top: 60px;
+ bottom: 0;
+ background: white;
+ border-right: 1px solid #e3e3e3;
+}
+
+.vol-aside .vol-menu ::v-deep(.ivu-menu) {
+ text-align: left;
+ position: unset;
+ width: 100% !important;
+}
+
+.vol-aside .vol-menu ::v-deep(.is-horizontal) {
+ display: none !important;
+}
+
+.vol-aside .vol-menu ::v-deep(.is-vertical) {
+ width: 2px;
+ right: -1px;
+}
+
+.vol-container {
+ min-width: 800px;
+ right: 0;
+ display: inline-block;
+ position: absolute;
+ margin: 0;
+ box-sizing: border-box;
+ height: 100%;
+}
+
+.vol-container .vol-path {
+ position: relative;
+ width: 100%;
+ display: inline-block;
+ border-bottom: 1px solid #eee;
+}
+
+.vol-container .vol-path span {
+ position: relative;
+ margin-right: 10px;
+ color: #969696;
+}
+
+.vol-header {
+ height: 61px;
+ width: 100%;
+ position: relative;
+ display: flex;
+ border-bottom: 1px solid #eee;
+}
+
+.vol-main {
+ border-left: 1px solid #eee;
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ top: 95px;
+ margin: 0;
+ overflow: auto;
+}
+
+.header {
+ padding: 5px;
+}
+
+.header img {
+ height: 100%;
+ margin-right: 25px;
+}
+
+.header-info {
+ padding-right: 20px;
+ display: inline-block;
+ // position: absolute;
+ height: 100%;
+}
+
+.header-info > div {
+ float: left;
+ height: 100%;
+}
+
+.user-header {
+ background: white;
+ height: 52px;
+ width: 52px;
+ border-radius: 50%;
+ margin-right: 0px;
+ top: 4px;
+ left: 7px;
+ position: relative;
+ border: 1px solid #dfdfdf;
+}
+
+.project-name {
+ line-height: 60px;
+ padding: 0 50px 0 20px;
+ color: #fff;
+ font-size: 16px;
+ letter-spacing: 1px;
+}
+
+.header-text {
+ vertical-align: middle;
+ height: 100%;
+ // position: absolute;
+ flex: 1;
+ text-align: left;
+ font-size: 15px;
+ left: 21px;
+ line-height: 60px;
+ letter-spacing: 1px;
+}
+
+.vol-header .user {
+ text-align: left;
+ padding: 0 12px;
+ position: relative;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ // height: 60px;
+ justify-content: center;
+ span:last-child {
+ font-size: 12px;
+ }
+}
+
+.vol-header .settings {
+ padding-top: 10px;
+ color: #d4d2d2;
+}
+
+.vol-header .user span {
+ position: relative;
+}
+
+.header-info:hover {
+ cursor: pointer;
+}
+
+.header-navigation {
+ cursor: pointer;
+ box-shadow: none;
+ border-bottom: 1px solid #eee;
+ height: 34px;
+ /* overflow: hidden; */
+ line-height: 35px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: initial;
+ margin-top: -1px;
+}
+
+.el-tabs--border-card {
+ border: none;
+}
+
+.header-navigation ::v-deep(.el-tabs__item) {
+ height: 34px;
+ font-size: 14px;
+ line-height: 34px;
+ padding-bottom: 6px;
+ color: #525252 !important;
+ position: relative;
+ margin: 0 4px;
+ border: 1px solid #e2e2e2;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ // border-bottom: 0px;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-active) {
+ color: #1a81ea !important;
+}
+
+.header-navigation ::v-deep(.el-tabs__nav-prev),
+.header-navigation ::v-deep(.el-tabs__nav-next) {
+ line-height: 35px;
+ padding-left: 4px;
+}
+
+.vol-header .user span:first-child {
+ font-size: 15px;
+ font-weight: bolder;
+}
+
+.h-link {
+ line-height: 59px;
+}
+
+.h-link a {
+ font-size: 14px;
+ text-decoration: none;
+ padding: 0px 15px;
+ /* height: 60px; */
+ display: inline-block;
+}
+
+img[src=''],
+img:not([src]) {
+ opacity: 0;
+}
+
+//榛戣壊
+.vol-theme-dark {
+ .header {
+ background: #101010;
+ }
+
+ .header-text {
+ color: white;
+ }
+
+ .vol-header {
+ background-color: #272929;
+ }
+
+ .h-link a:hover {
+ background: #0c0202;
+ }
+
+ a {
+ color: #f2f2f2;
+ }
+
+ .h-link a:hover {
+ color: #dfdfdf;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link .actived a {
+ color: white !important;
+ }
+
+ .vol-header .user {
+ color: #ececec;
+ }
+
+ .vol-header .settings {
+ color: #d4d2d2;
+ }
+
+ .vol-aside .vol-menu {
+ background: black;
+ }
+}
+
+.vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) {
+ background: #2e333b;
+ color: white;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-submenu) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *) {
+ color: #d6d6d6;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item) {
+ color: #eee;
+ background: #1f1f1f;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+.vol-theme-dark .vol-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+ color: #d6d6d6;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+ background: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title) {
+ background-color: black;
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+ background-color: rgb(25, 25, 25);
+}
+
+.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+ color: white;
+}
+
+.vol-theme-red,
+.vol-theme-red2 {
+ .vol-header {
+ background-color: rgb(237, 64, 20);
+ }
+
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .h-link a:hover {
+ background: #d71212;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-red {
+ .header {
+ background-color: rgb(237, 64, 20);
+ }
+}
+
+.vol-theme-red2 {
+ .header {
+ background-color: #a90000;
+ }
+}
+
+.vol-theme-orange,
+.vol-theme-orange2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(255, 153, 0);
+ }
+
+ .h-link a:hover {
+ background: #c97901;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-orange {
+ .header {
+ background: rgb(255, 153, 0);
+ }
+}
+
+.vol-theme-orange2 {
+ .header {
+ background-color: rgb(232, 141, 5);
+ }
+}
+
+//缁胯壊
+.vol-theme-green,
+.vol-theme-green2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(25, 190, 107);
+ }
+
+ .h-link a:hover {
+ background: #329103;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-green {
+ .header {
+ background: rgb(25, 190, 107);
+ }
+}
+
+.vol-theme-green2 {
+ .header {
+ background-color: rgb(1, 158, 79);
+ }
+}
+
+//钃濊壊
+.vol-theme-blue,
+.vol-theme-blue2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+
+ .vol-header {
+ background-color: rgb(45, 140, 240);
+ }
+
+ .h-link a:hover {
+ background: #0170e3;
+ }
+
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .vol-header .settings,
+ .vol-header .user {
+ color: white;
+ }
+
+ .vol-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.vol-theme-blue {
+ .header {
+ background-color: rgb(45, 140, 240);
+ }
+}
+
+.vol-theme-blue2 {
+ .header {
+ background-color: rgb(0, 104, 214);
+ }
+}
+
+//鐧借壊
+.vol-theme-white {
+ .header {
+ background-color: #434956;
+ }
+
+ .h-link a:hover {
+ background: #eeeeee;
+ }
+
+ .h-link a {
+ color: #211f1f;
+ }
+
+ .header-navigation {
+ // box-shadow: -7px 11px 10px -13px #678aa7;
+ border-bottom: 1px solid #eee;
+ height: 32px;
+ overflow: hidden;
+ line-height: 32px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: 400;
+ }
+
+ .vol-aside .vol-menu {
+ background: #353941;
+ }
+}
+
+.vol-theme-white .project-name {
+ color: #505050;
+}
+
+.vol-theme-white .vol-aside::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+ background: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+ background: #353941;
+ color: #d6d6d6;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+ background: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title) {
+ background-color: #353941;
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+ background-color: rgb(47, 46, 46);
+}
+
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title),
+.vol-theme-white .vol-aside ::v-deep(.el-menu-item),
+.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+ color: #bababa;
+}
+
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) {
+// background: #363e4f;
+// color: white;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-submenu),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) {
+// background: #515a6e;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu) {
+// background: #515a6e;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1 *) {
+// color: #d6d6d6;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item) {
+// color: #eee;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item.is-active),
+// .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1.is-active) {
+// background: #59647b;
+// color: #fff;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) {
+// background: #6a758c;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) {
+// background-color: #525865;
+// }
+// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) {
+// color: white;
+// }
+
+// .vol-theme-red ::v-deep(.el-menu-item.is-active),
+// .vol-theme-red2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #d71212;
+// }
+// .vol-theme-blue ::v-deep(.el-menu-item.is-active),
+// .vol-theme-blue2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #2d8cf0;
+// }
+// .vol-theme-orange ::v-deep(.el-menu-item.is-active),
+// .vol-theme-orange2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #ff9900;
+// }
+
+// .vol-theme-green ::v-deep(.el-menu-item.is-active),
+// .vol-theme-green2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #19be6b;
+// }
+
+.theme-selector {
+ height: 100%;
+ padding-left: 16px;
+
+ .item {
+ cursor: pointer;
+ width: 60px;
+ height: 60px;
+ border-radius: 5px;
+ margin-bottom: 17px;
+ border: 1px solid #d4d2d2;
+ float: left;
+ margin-right: 13px;
+ }
+}
+
+.collapse-menu {
+ font-size: 21px;
+ color: #fff;
+ line-height: 60px;
+ position: absolute;
+ top: 0;
+ right: 5px;
+ cursor: pointer;
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/signalR/Index.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/signalR/Index.vue"
new file mode 100644
index 0000000..1a0a489
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/signalR/Index.vue"
@@ -0,0 +1,113 @@
+<template>
+ <div class="message-container">
+ <div style="padding: 0 0 20px 10px">
+ <el-alert title="鍏充簬signalR浣跨敤" type="success" show-icon
+ ><p>
+ 1銆佺洰鍓嶅彧鏄敤鏉ュ鐞嗛椤垫秷鎭彂閫�,鍙弬鐓ndex.vue涓嶩omePageMessageHub.cs
+ </p>
+ <p>
+ 2銆佹枃妗h锛歨ttps://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-3.1
+ </p></el-alert
+ >
+ </div>
+
+ <vol-form
+ ref="form"
+ :formRules="formOptions"
+ :labelWidth="90"
+ :formFields="formFields"
+ >
+ </vol-form>
+ <div class="btns">
+ <el-button
+ type="primary"
+ @click="sendMessage"
+ ><i class="el-icon-chat-line-round"></i>鍙戦�佹秷鎭�</el-button
+ >
+ </div>
+ </div>
+</template>
+
+<script>
+//榛樿涓嶄細鑷姩閲嶈繛锛岄渶鎵嬪姩璋冪敤withAutomaticReconnect
+let connection;
+import * as signalR from '@microsoft/signalr';
+import VolForm from '@/components/basic/VolForm.vue';
+export default {
+ components: {
+ 'vol-form': VolForm
+ },
+ data() {
+ return {
+ message: '',
+ size: {
+ minRows: 8,
+ maxRows: 30
+ },
+ formOptions: [
+ [{ title: '鐧婚檰璐﹀彿', required: true, field: 'userName' }],
+ [{ title: '娑堟伅鏍囬', required: true, field: 'title' }],
+ [
+ {
+ title: '娑堟伅鍐呭',
+ required: true,
+ field: 'message',
+ type: 'textarea',
+ minRows: 10
+ }
+ ]
+ ],
+ formFields: {
+ userName: 'admin666',
+ title: '鍙戦�佹爣棰�',
+ message: ''
+ }
+ };
+ },
+ methods: {
+ sendMessage() {
+ connection.invoke(
+ 'sendHomeMessage',
+ this.formFields.userName,
+ this.formFields.title,
+ this.formFields.message || '鏃�'
+ );
+ this.$message.success('娑堟伅鍙戦�佹垚鍔�');
+ }
+ },
+ created() {},
+ mounted() {
+ //鑾峰彇褰撳墠鐧婚檰鐨勭敤鎴蜂俊鎭�
+ this.http.post('api/user/GetCurrentUserInfo').then((result) => {
+ connection = new signalR.HubConnectionBuilder()
+ .withAutomaticReconnect()
+ .withUrl(
+ `${this.http.ipAddress}message?userName=${result.data.userName}`
+ )
+ .build();
+ connection.qs = { test: 123 };
+ connection.start().catch((err) => alert(err.message));
+ //鑷姩閲嶈繛鎴愬姛鍚庣殑澶勭悊
+ connection.onreconnected((connectionId) => {
+ console.log(connectionId);
+ });
+ let _this = this;
+ connection.on('ReceiveHomePageMessage', function (message) {
+ _this.$notify.info({
+ title: '娑堟伅',
+ message: message + ''
+ });
+ });
+ });
+ }
+};
+</script>
+<style scoped lang="less">
+.message-container {
+ margin: 20px;
+ .btns {
+ text-align: center;
+ padding: 10px;
+ }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue"
new file mode 100644
index 0000000..de437a0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue"
@@ -0,0 +1,382 @@
+<template>
+ <div class="role-container">
+ <div class="role-tree-left flex-col">
+ <div class="title"><i class="el-icon-user"></i>瑙掕壊鍒楄〃</div>
+ <el-scrollbar class="el-role-list">
+ <el-tree :data="tree" @node-click="nodeClick" node-key="id" :default-expanded-keys="openKeys"
+ :expand-on-click-node="false" style="padding: 5px 0; margin-right: 2px">
+ <template #default="{ data }">
+ <div class="action-group">
+ <div class="action-text">
+ {{ data.roleName }}
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+ <div class="role-tree-right flex-col">
+ <div class="title">
+ <div><i class="el-icon-folder-opened"></i>鑿滃崟鏉冮檺</div>
+ <el-button type="primary" @click="save">淇濆瓨</el-button>
+ </div>
+ <el-scrollbar class="el-role-list">
+ <el-tree @check-change="leftCheckChange" @check="nodeCheck" :data="roleTree" :show-checkbox="false"
+ style="padding: 15px" node-key="id" default-expand-all :expand-on-click-node="false">
+ <template #default="{ data }">
+ <div class="action-group">
+ <div class="action-text" :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }">
+ <el-checkbox v-model="data.leftCk" @change="allChange(data)">{{
+ data.text + (data.isApp ? "(app)" : "")
+ }}</el-checkbox>
+ </div>
+ <div class="action-item">
+ <el-checkbox v-for="(item, index) in data.actions" :key="index" v-model="item.checked"
+ @change="actionChange(data, item.checked, item)">{{ item.text }}</el-checkbox>
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+ </div>
+</template>
+
+<script>
+import { defineComponent, ref, reactive, getCurrentInstance } from "vue";
+import http from "@/../src/api/http.js";
+export default defineComponent({
+ setup() {
+ const selectId = ref(-1);
+ const checked = ref(false);
+ const tree = reactive([]);
+ const list = reactive([]);
+ const roles = reactive([]);
+ const roleList = reactive([]);
+ const roleTree = reactive([]);
+ const openKeys = reactive([]);
+
+ const leftCheckChange = (node, selected) => {
+ node.actions.forEach((x, index) => {
+ x.checked = selected;
+ });
+ };
+ const nodeCheck = (node, data) => {
+ let rootData = roleList.find((x) => {
+ return x.id === node.pid;
+ });
+ if (rootData && rootData.actions.length) {
+ rootData.actions[0].checked =
+ node.actions.some((x) => {
+ return x.checked;
+ }) ||
+ data.halfCheckedNodes.some((x) => {
+ return x.id === node.pid;
+ });
+ }
+ };
+
+ const allChange = (data) => {
+ data.actions.forEach((item) => {
+ item.checked = data.leftCk;
+ });
+ if (!data.children) {
+ return;
+ }
+ setChildrenChecked(data, data.leftCk);
+ };
+ const setChildrenChecked = (data, ck) => {
+ data.children.forEach((item) => {
+ item.leftCk = ck;
+ item.actions.forEach((c) => {
+ c.checked = ck;
+ });
+ if (item.children) {
+ setChildrenChecked(item, ck);
+ }
+ });
+ };
+ const actionChange = (data, ck, item) => {
+ ck =
+ data.actions.filter((x) => {
+ return x.checked;
+ }).length == data.actions.length;
+ data.leftCk = ck;
+ // console.log('')
+ if (item.value == 'Search' && item.checked) {
+ setParentCheck(data);
+ }
+ };
+
+ const setParentCheck = (data) => {
+ if (!data.pid) {
+ return
+ }
+ let b = true;
+ let pid = data.pid;
+ let perentData;
+ while (b) {
+ if (!pid) {
+ return false;
+ }
+ perentData = roleList.find(x => { return x.id == pid });
+ if (!perentData || !perentData.actions) {
+ b = false;
+ return false;
+ }
+ pid = perentData.pid;
+ let obj = perentData.actions.find(c => { return c.value == 'Search' });
+ if (obj) {
+ obj.checked = true;
+ }
+ }
+ }
+
+ const load = () => {
+ const url = "api/Sys_Role/getUserChildRoles";
+ http.post(url, {}, true).then((result) => {
+ if (!result.status) return;
+ list.splice(0);
+ list.push(...result.data);
+ list.forEach((x) => {
+ if (x.parentId == 0) {
+ x.lv = 1;
+ x.children = [];
+ tree.push(x);
+ getTree(x.id, x);
+ }
+ });
+ openKeys.push(tree[0].id);
+ selectId.value = openKeys[0];
+ });
+ };
+ const getTree = (id, data) => {
+ list.forEach((x) => {
+ if (x.parentId == id) {
+ x.lv = data.lv + 1;
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ getTree(x.id, x);
+ }
+ });
+ };
+ const nodeClick = (node, selected) => {
+ selectId.value = node.id;
+ getUserRole(node);
+ };
+ const getUserRole = (item) => {
+ selectId.value = item.id;
+ roleList.forEach((x) => {
+ x.actions.forEach((a) => {
+ a.checked = false;
+ });
+ });
+ let url = `/api/Sys_Role/getUserTreePermission?roleId=${item.id}`;
+ http.post(url, {}, true).then((result) => {
+ if (!result.status) return;
+ result.data.forEach((item) => {
+ if (item.actions.length == 0) return;
+ let sourceItem = roleList.find((f) => f.id == item.id);
+ if (!sourceItem) return;
+ item.actions.forEach((actions) => {
+ sourceItem.actions.forEach((soure) => {
+ if (soure.value == actions.value) {
+ soure.checked = true;
+ }
+ });
+ });
+ });
+ });
+ };
+
+ const getRoleTree = (id, data, isRootId) => {
+ roleList.forEach((x) => {
+ if (x.pid == id) {
+ x.lv = data.lv + 1;
+ if (isRootId) {
+ x.rootId = id;
+ }
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ getRoleTree(x.id, x, isRootId);
+ }
+ });
+ };
+
+ const getCurrentTreePermission = () => {
+ let url = "/api/Sys_Role/getCurrentTreePermission";
+ http.post(url, {}, true).then((result) => {
+ if (!result.status) return;
+ roleList.splice(0);
+ roles.splice(0);
+ roleList.push(...result.data.tree);
+ roles.push(...result.data.roles);
+ roleList.forEach((x) => {
+ if (x.pid == 0) {
+ x.lv = 1;
+ x.children = [];
+ roleTree.push(x);
+ getRoleTree(x.id, x);
+ }
+ });
+ });
+ };
+ const { proxy } = getCurrentInstance();
+ let $message =proxy.$message;
+ const save = () => {
+ if (selectId.value <= 0) {
+ return $message.error("璇烽�夋嫨瑙掕壊!");
+ }
+ let userPermissions = [];
+ roleList.forEach((x) => {
+ let checkedPermission = x.actions.filter((f) => {
+ return f.checked;
+ });
+ if (checkedPermission.length > 0) {
+ let actions = checkedPermission.map((m) => {
+ return { text: m.text, value: m.value };
+ });
+ userPermissions.push({
+ id: x.id,
+ actions: actions,
+ });
+ }
+ });
+ let url = `api/Sys_Role/SavePermission?roleId=${selectId.value}`;
+ http.post(url, userPermissions, true).then((result) => {
+ $message[result.status ? "success" : "error"](result.message);
+ });
+ };
+
+ load();
+ getCurrentTreePermission();
+ return {
+ list,
+ nodeClick,
+ checked,
+ tree,
+ selectId,
+ openKeys,
+ getUserRole,
+ roles,
+ roleList,
+ getCurrentTreePermission,
+ leftCheckChange,
+ nodeCheck,
+ roleTree,
+ allChange,
+ actionChange,
+ save,
+ setParentCheck
+ };
+ },
+});
+</script>
+<style lang="less" scoped>
+.role-container {
+ position: absolute;
+ background: #f6f6f6;
+ height: 100%;
+ width: 100%;
+ padding: 10px;
+ display: flex;
+
+ .flex-col {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .role-tree-left {
+ border: 1px solid #f2f2f2;
+ background: #fff;
+ width: 230px;
+ margin-right: 10px;
+
+ .title {
+ i {
+ margin-left: 10px;
+ }
+ }
+ }
+
+ .role-tree-right {
+ background: #fff;
+ border: 1px solid #f2f2f2;
+ width: 0;
+ flex: 1;
+
+ .title {
+ display: flex;
+
+ i {
+ margin-left: 10px;
+ }
+
+ div {
+ flex: 1;
+ }
+ }
+
+ .action-group {
+ display: flex;
+ // line-height: 32px;
+ justify-content: center;
+ align-items: center;
+
+ label {
+ float: left;
+ }
+
+ .action-text {
+ line-height: 33px;
+
+ label {
+ margin-right: 5px;
+ }
+ }
+ }
+ }
+
+ .title {
+ padding: 10px;
+ background: rgb(246 250 255);
+ font-weight: bold;
+ font-size: 14px;
+ letter-spacing: 2px;
+ }
+
+ .el-role-list {
+ flex: 1;
+ height: 0;
+ overflow-x: hidden;
+ }
+}
+
+.role-tree-left ::v-deep(.el-tree-node__content) {
+ cursor: pointer;
+ height: auto;
+ padding: 5px;
+ margin: 2px 10px;
+ font-size: 15px;
+}
+
+.role-tree-left ::v-deep(.el-tree-node__content:hover) {
+ background: #f4f4f4;
+ border-radius: 20px;
+}
+
+.role-tree-left ::v-deep(.is-current > .el-tree-node__content:first-child) {
+ background: #f2f2f2;
+ border-radius: 20px;
+}
+
+.role-tree-right ::v-deep(.el-tree-node__content) {
+ margin-bottom: 5px;
+ height: auto;
+}
+
+.role-tree-right ::v-deep(.el-checkbox__label) {
+ position: relative;
+ top: 2px;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue"
new file mode 100644
index 0000000..efe1993
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue"
@@ -0,0 +1,152 @@
+<template>
+ <div class="com-el-tree">
+
+ <div class="m-title"><i class="el-icon-warning-outline"></i>瑙掕壊鍒楄〃</div>
+
+ <el-scrollbar style="height: 100%; width: 200px" class="el-role-tree">
+ <el-tree
+ :data="tree"
+ @node-click="nodeClick"
+ node-key="id"
+ :default-expanded-keys="openKeys"
+ :expand-on-click-node="false"
+ style="padding: 5px 0; margin-right: 2px"
+ >
+ <template #default="{ node, data }">
+ <div class="action-group">
+ <div
+ class="action-text"
+ :class="{
+ actived: data.id == selectId,
+ 'node-text': data.parentId !== 0,
+ }"
+ :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }"
+ >
+ <Icon
+ v-if="data.parentId !== 0"
+ :type="data.id == selectId ? 'ios-paper' : 'ios-paper-outline'"
+ />
+ {{ data.roleName }}
+ </div>
+ </div>
+ </template>
+ </el-tree>
+ </el-scrollbar>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ // roles: {
+ // type: Object,
+ // default: () => {
+ // return [];
+ // }
+ // },
+ onChange: {
+ type: Function,
+ default: (treeId) => {},
+ },
+ },
+ data() {
+ return {
+ selectId: -1,
+ checked: false,
+ openKeys: [],
+ data: [],
+ tree: [],
+ };
+ },
+ created() {
+ this.load();
+ },
+ methods: {
+ load() {
+ this.http.post("/api/role/getUserChildRoles", {}, true).then((result) => {
+ if (!result.status) return this.$message.error(result.message);
+ this.data.splice(0);
+ this.data = result.data;
+ this.data.forEach((x) => {
+ if (x.parentId == 0) {
+ x.lv = 1;
+ x.children = [];
+ this.tree.push(x);
+ this.getTree(x.id, x);
+ }
+ });
+ this.openKeys.push(this.tree[0].id);
+ this.selectId = this.openKeys[0];
+ //榛樿鍔犺浇绗竴涓爲褰㈣彍鍗曚笅闈㈢殑鏁版嵁
+
+ //this.onChange(this.selectId);
+ });
+ },
+ getTree(id, data) {
+ this.data.forEach((x) => {
+ if (x.parentId == id) {
+ x.lv = data.lv + 1;
+ if (!data.children) data.children = [];
+ data.children.push(x);
+ this.getTree(x.id, x);
+ }
+ });
+ },
+ nodeClick(node, selected) {
+ // console.log(node);
+ this.selectId = node.id;
+ //缂撳瓨褰撳墠閫変腑鐨勮妭鐐�
+ // this.$store.getters.data().treeDemo1.treeId = node.id;
+ this.onChange(node);
+ },
+ },
+};
+</script>
+<style lang="less" scoped>
+.com-el-tree {
+ //2020.06.03澧炲姞宸︿晶tree鍥哄畾瀹藉害
+ width: 200px;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ border-radius: 3px;
+ background: white;
+ .el-role-tree {
+ flex: 1;
+ // border-right: 1px solid #eee;
+ }
+ .actived {
+ }
+ .action-text {
+ font-size: 14px;
+ }
+}
+.role-list {
+ color: white;
+ line-height: 40px;
+ padding: 0 13px;
+ font-size: 16px;
+ top: 2px;
+ width: 200px;
+}
+.m-title {
+ line-height: 30px;
+ font-size: 15px;
+ background: #66b1ff0f;
+ font-weight: bold;
+ padding: 6px 16px;
+ border-bottom: 1px solid #eee;
+ i {
+ padding-right: 5px;
+ }
+}
+.com-el-tree ::v-dee(.el-tree-node) {
+ padding: 3px 0;
+}
+.com-el-tree ::v-dee(.el-scrollbar .el-scrollbar__thumb) {
+ width: 0 !important;
+}
+</style>
+<style scoped>
+
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue"
new file mode 100644
index 0000000..34a919d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue"
@@ -0,0 +1,67 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Role.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_Config.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鍙傛暟绠$悊',
+ name: 'Sys_Config',
+ url: "/Sys_Config/",
+ sortName: "id"
+ });
+ const editFormFields = ref({ "ParentId": [], "RoleName": "", "DeptName": "", "Enable": "", "Creator": "", "CreateDate": "", "Modifier": "", "ModifyDate": "" });
+ const editFormOptions = ref([[{ "dataKey": "tree_roles", "data": [], "title": "鐖剁骇ID", "required": true, "field": "ParentId", "type": "cascader" },
+ { "title": "瑙掕壊鍚嶇О", "required": true, "field": "RoleName" }],
+ [{ "title": "閮ㄩ棬鍚嶇О", "field": "DeptName" },
+ { "dataKey": "enable", "data": [], "title": "鏄惁鍚敤", "field": "Enable", "type": "switch" }],
+ [{ "title": "鍒涘缓浜�", "field": "Creator", "disabled": true },
+ { "title": "鍒涘缓鏃堕棿", "field": "CreateDate", "disabled": true, "type": "datetime" }],
+ [{ "title": "淇敼浜�", "field": "Modifier", "disabled": true },
+ { "title": "淇敼鏃堕棿", "field": "ModifyDate", "disabled": true }]]);
+ const searchFormFields = ref({ "RoleName": "", "DeptName": "", "Enable": "", "CreateDate": "", "ModifyDate": "" });
+ const searchFormOptions = ref([[{ "title": "瑙掕壊鍚嶇О", "field": "RoleName", "type": "text" }, { "title": "閮ㄩ棬鍚嶇О", "field": "DeptName", "type": "text" }, { "dataKey": "enable", "data": [], "title": "鏄惁鍚敤", "field": "Enable", "type": "select" }], [{ "title": "鍒涘缓鏃堕棿", "field": "CreateDate", "type": "datetime" }, { "title": "淇敼鏃堕棿", "field": "ModifyDate", "type": "datetime" }]]);
+ const columns = ref([
+ { field: 'id', title: '涓婚敭', type: 'int', width: 70, readonly: true, hidden: true, require: true, align: 'left', sortable: true },
+ { field: 'configKey', title: '鍙傛暟鍚�', type: 'string', width: 100, require: true, align: 'left' },
+ { field: 'configValue', title: '鍙傛暟鍊�', type: 'string', width: 200, require: true, align: 'left' },
+ { field: 'category', title: '绫诲埆', type: 'string', width: 90, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 90, align: 'left' },
+ { field: 'status', title: '鏄惁鍚敤', type: 'byte', bind: { key: 'enable', data: [] }, width: 50, align: 'left' },
+ { field: 'sortCode', title: '鎺掑簭', type: 'int',hidden: true, width: 90, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', width: 75, readonly: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 75, readonly: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue"
new file mode 100644
index 0000000..a57e4c5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue"
@@ -0,0 +1,80 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Dictionary.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_Dictionary.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'dicId',
+ footer: "Foots",
+ cnName: '瀛楀吀鏁版嵁',
+ name: 'Sys_Dictionary',
+ url: "/Sys_Dictionary/",
+ sortName: "dicId"
+ });
+ const editFormFields = ref({ "dicNo": "", "dicName": "", "parentId": "", "orderNo": "", "enable": "", "createDate": "", "dbSql": "", "remark": "" });
+ const editFormOptions = ref([[{ "title": "瀛楀吀缂栧彿", "required": true, "field": "dicNo" },
+ { "title": "瀛楀吀鍚嶇О", "required": true, "field": "dicName" },
+ { "title": "鐖剁骇ID", "required": true, "field": "parentId", "type": "number" }],
+ [{ "title": "鎺掑簭鍙�", "field": "orderNo", "type": "number" },
+ { "dataKey": "enable", "data": [], "title": "鏄惁鍚敤", "required": true, "field": "enable", "type": "select" },
+ { "title": "鍒涘缓鏃堕棿", "field": "createDate", "disabled": true, "type": "datetime" }],
+ [{ "title": "sql璇彞", "field": "dbSql", "colSize": 8, "type": "textarea" },
+ { "title": "澶囨敞", "field": "remark", "type": "textarea" }]]);
+ const searchFormFields = ref({ "dicNo": "", "dicName": "", "parentId": "", "enable": "", "createDate": "", "modifyDate": "" });
+ const searchFormOptions = ref([[{ "title": "瀛楀吀缂栧彿", "field": "dicNo" }, { "title": "瀛楀吀鍚嶇О", "field": "dicName", "type": "textarea" }, { "title": "鐖剁骇ID", "field": "parentId", "type": "number" }], [{ "dataKey": "enable", "data": [], "title": "鏄惁鍚敤", "field": "enable", "type": "select" }, { "title": "鍒涘缓鏃堕棿", "field": "createDate", "type": "datetime" }, { "title": "淇敼鏃堕棿", "field": "modifyDate", "type": "datetime" }]]);
+ const columns = ref([{ field: 'dicID', title: '瀛楀吀ID', type: 'int', width: 90, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'dicNo', title: '瀛楀吀缂栧彿', type: 'string', width: 90, require: true, align: 'left', sort: true },
+ { field: 'dicName', title: '瀛楀吀鍚嶇О', type: 'string', link: true, width: 140, require: true, align: 'left' },
+ { field: 'parentId', title: '鐖剁骇ID', type: 'int', width: 90, require: true, align: 'left' },
+ { field: 'config', title: '閰嶇疆椤�', type: 'string', width: 300, hidden: true, align: 'left' },
+ { field: 'dbSql', title: 'sql璇彞', type: 'string', width: 200, align: 'left' },
+ { field: 'dBServer', title: 'DBServer', type: 'string', width: 90, hidden: true, align: 'left' },
+ { field: 'orderNo', title: '鎺掑簭鍙�', type: 'int', width: 90, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 90, align: 'left' },
+ { field: 'enable', title: '鏄惁鍚敤', type: 'byte', bind: { key: 'enable', data: [] }, width: 90, require: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', width: 130, hidden: true, readonly: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 150, readonly: true, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 130, hidden: true, readonly: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', width: 150, readonly: true, align: 'left', sort: true }]);
+ const detail = ref({
+ cnName: "瀛楀吀鏄庣粏",
+ table: "Sys_DictionaryList",
+ columns: [{ field: 'dicListId', title: 'DicList_ID', type: 'int', width: 90, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'dicId', title: '鏁版嵁婧怚D', type: 'int', width: 90, readonly: true, align: 'left', sort: true },
+ { field: 'dicValue', title: '鏁版嵁婧怴alue', type: 'string', width: 90, edit: { type: 'text' }, align: 'left' },
+ { field: 'dicName', title: '鏁版嵁婧怲ext', type: 'string', width: 90, edit: { type: 'text' }, align: 'left' },
+ { field: 'orderNo', title: '鎺掑簭鍙�', type: 'int', width: 90, edit: { type: 'text' }, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 90, edit: { type: 'text' }, align: 'left' },
+ { field: 'enable', title: '鏄惁鍙敤', type: 'byte', bind: { key: 'enable', data: [] }, width: 90, edit: { type: 'switch' }, align: 'left' },
+ { field: 'creator', title: '鍒涘缓浜�', type: 'string', width: 130, readonly: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 90, readonly: true, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 130, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', width: 90, align: 'left', sort: true }],
+ sortName: "dicListId",
+ key: "dicListId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue"
new file mode 100644
index 0000000..668baf0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue"
@@ -0,0 +1,65 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_DictionaryList.js姝ゅ缂栧啓
+ -->
+<template>
+ <div>
+ <view-grid :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+ </div>
+</template>
+
+<script>
+ import extend from "@/extension/system/Sys_DictionaryList.jsx";
+ var vueParam = {
+ data() {
+ return {
+ table: {
+ key: 'dicList_ID',
+ footer: "Foots",
+ cnName: '瀛楀吀鏄庣粏',
+ name: 'Sys_DictionaryList',
+ url: "/Sys_DictionaryList/",
+ sortName: "dicList_ID"
+ },
+ extend: extend,
+ editFormFields: {"dicValue":"","dicName":"","orderNo":"","remark":"","enable":""},
+ editFormOptions: [[{"columnType":"string","title":"鏁版嵁婧怴alue","field":"dicValue","type":"text"},
+ {"columnType":"string","title":"鏁版嵁婧怲ext","field":"dicName","type":"text"},
+ {"columnType":"int","title":"鎺掑簭鍙�","field":"orderNo","type":"text"},
+ {"columnType":"int","title":"澶囨敞","field":"remark","type":"text"},
+ {"columnType":"byte","dataKey":"enable","title":"鏄惁鍙敤","field":"Enable","type":"switch"}]],
+ searchFormFields: {},
+ searchFormOptions: [],
+ columns: [{field:'DicList_ID',title:'DicList_ID',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'Dic_ID',title:'鏁版嵁婧怚D',type:'int',width:90,readonly:true,align:'left',sortable:true},
+ {field:'DicValue',title:'鏁版嵁婧怴alue',type:'string',width:90,align:'left'},
+ {field:'DicName',title:'鏁版嵁婧怲ext',type:'string',width:90,align:'left'},
+ {field:'OrderNo',title:'鎺掑簭鍙�',type:'int',width:90,align:'left'},
+ {field:'Remark',title:'澶囨敞',type:'int',width:90,align:'left'},
+ {field:'Enable',title:'鏄惁鍙敤',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
+ {field:'CreateID',title:'CreateID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Creator',title:'鍒涘缓浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'CreateDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
+ {field:'ModifyID',title:'ModifyID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Modifier',title:'淇敼浜�',type:'string',width:130,align:'left'},
+ {field:'ModifyDate',title:'淇敼鏃堕棿',type:'datetime',width:90,align:'left',sortable:true}],
+ detail: {
+ cnName:"#detailCnName",
+ columns: [],
+ sortName: "#detailSortName"
+ }
+ };
+ }
+ };
+ export default vueParam;
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue"
new file mode 100644
index 0000000..ceeac76
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue"
@@ -0,0 +1,70 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Log.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/Sys_Log.jsx";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Id',
+ footer: "Foots",
+ cnName: '绯荤粺鏃ュ織',
+ name: 'Sys_Log',
+ url: "/Sys_Log/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({});
+ const editFormOptions = ref([]);
+ const searchFormFields = ref({"BeginDate":"","Url":"","LogType":[],"Success":[],"UserIP":"","ServiceIP":"","Role_Id":""});
+ const searchFormOptions = ref([[{"title":"璇锋眰鍦板潃","field":"Url","type":"text"},{"title":"鐢ㄦ埛IP","field":"UserIP","type":"text"},{"title":"鏈嶅姟鍣↖P","field":"ServiceIP","type":"text"}],[{"title":"寮�濮嬫椂闂�","field":"BeginDate","type":"datetime"},{"dataKey":"restatus","data":[],"title":"鍝嶅簲鐘舵��","field":"Success","type":"selectList"},{"dataKey":"roles","data":[],"title":"瑙掕壊ID","field":"Role_Id","type":"select"}],[{"dataKey":"log","data":[],"title":"鏃ュ織绫诲瀷","field":"LogType","colSize":12,"type":"checkbox"}]]);
+ const columns = ref([{field:'Id',title:'Id',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'BeginDate',title:'寮�濮嬫椂闂�',type:'datetime',width:140,align:'left',sortable:true},
+ {field:'UserName',title:'鐢ㄦ埛鍚嶇О',type:'string',width:90,align:'left'},
+ {field:'Url',title:'璇锋眰鍦板潃',type:'string',width:110,align:'left'},
+ {field:'LogType',title:'鏃ュ織绫诲瀷',type:'string',bind:{ key:'log',data:[]},width:80,align:'left'},
+ {field:'Success',title:'鍝嶅簲鐘舵��',type:'int',bind:{ key:'restatus',data:[]},width:80,align:'left'},
+ {field:'ElapsedTime',title:'鏃堕暱',type:'int',width:60,align:'left'},
+ {field:'RequestParameter',title:'璇锋眰鍙傛暟',type:'string',width:70,align:'left'},
+ {field:'ResponseParameter',title:'鍝嶅簲鍙傛暟',type:'string',width:70,align:'left'},
+ {field:'ExceptionInfo',title:'寮傚父淇℃伅',type:'string',width:70,align:'left'},
+ {field:'UserIP',title:'鐢ㄦ埛IP',type:'string',width:90,align:'left'},
+ {field:'ServiceIP',title:'鏈嶅姟鍣↖P',type:'string',width:90,hidden:true,align:'left'},
+ {field:'BrowserType',title:'娴忚鍣ㄧ被鍨�',type:'string',width:90,align:'left'},
+ {field:'User_Id',title:'鐢ㄦ埛ID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Role_Id',title:'瑙掕壊ID',type:'int',bind:{ key:'roles',data:[]},width:90,hidden:true,align:'left'},
+ {field:'EndDate',title:'缁撴潫鏃堕棿',type:'datetime',width:150,hidden:true,align:'left',sortable:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue"
new file mode 100644
index 0000000..144852c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue"
@@ -0,0 +1,630 @@
+<template>
+ <div class="menu-container">
+ <!-- <el-input/> -->
+ <vol-box :width="940"
+ :mask="true"
+ :height="500"
+ title="鍥炬爣鍒楄〃"
+ v-model="model">
+ <Icons :onSelect="onSelect"></Icons>
+ <template #footer>
+ <el-button type="primary"
+ size="small"
+ @click="model = false">纭� 璁�</el-button>
+ </template>
+ </vol-box>
+ <vol-box :width="600"
+ :mask="true"
+ :height="270"
+ title="鍏朵粬鏉冮檺"
+ v-model="actionModel">
+ <vol-form ref="actionForm"
+ :formRules="actionOptions"
+ :formFields="actionFields">
+ <template #header>
+ <div>
+ <el-alert show-icon
+ type="success">
+ 閰嶇疆鐨勫叾浠栨潈闄�
+ <br />1銆佹坊鍔犳柊鐨勬潈闄愬悗璇峰湪vue椤圭洰涓璫onfig鏂囦欢澶逛笅buttns.js娣诲姞姝ゆ潈闄愮殑鎸夐挳銆�
+ <br />2銆佸鏋滄潈闄愬彧鍦ㄦ煇灏戞暟鍑犱釜鍔熻兘涓娇鐢�,鍦╲ue鐨勫搴旈〉闈㈡墿灞昬xtension鏂囦欢鎵惧埌瀵瑰簲js,娣诲姞鍒癳l-buttons瀵硅薄涓�,鏍煎紡鍚宑onfig鏂囦欢澶逛笅buttns.js涓�鏍枫��
+ </el-alert>
+ </div>
+ </template>
+ </vol-form>
+ <template #footer>
+ <el-button type="primary"
+ size="small"
+ @click="otherAction">纭� 璁�</el-button>
+ </template>
+ </vol-box>
+
+ <!-- v-if="tree.length" -->
+ <div class="menu-left">
+ <div class="m-title"><i class="el-icon-warning-outline"></i>鑿滃崟鍒楄〃</div>
+ <el-scrollbar style="height: 100%; width: 200px">
+ <VolMenu :onSelect="getTreeItem"
+ :list="tree"
+ :isCollapse="false"></VolMenu>
+ </el-scrollbar>
+ </div>
+ <div class="menu-right">
+ <el-scrollbar style="height: 100%">
+ <el-alert title="鑿滃崟閰嶇疆璇存槑"
+ type="warning"
+ :closable="false"
+ show-icon>
+ <div>
+ 1銆佸鏋滄槸鐢ㄤ唬鐮佺敓鍣ㄧ敓鎴愮殑Vue椤甸潰,Url涓篤ue椤圭洰涓璼rc->router->viewGrid.js瀵瑰簲琛ㄥ悕鐨刾ath灞炴��
+ </div>
+ <div style="padding-top: 5px">
+ 2銆� 濡傛灉鍙槸寤轰竴绾ц彍鍗曟垨绌鸿彍鍗晆rl涓嶇敤濉啓,銆愯鍥�/琛ㄥ悕銆戝~鍐�.鎴栬��/
+ </div>
+ </el-alert>
+ <div style="padding: 0px 30px 0 20px">
+ <vol-form class="form-content"
+ ref="form"
+ :formRules="options"
+ :formFields="fields">
+ </vol-form>
+ <div>
+ <div class="auth-group">
+ <label style="width: 100px">鏉冮檺鎸夐挳锛�</label>
+ <div class="ck">
+ <el-checkbox-group v-model="actions">
+ <el-checkbox v-for="(item, index) in action"
+ :key="index"
+ :label="item.value">{{ item.text + "(" + item.value + ")" }}</el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ </div>
+ <div style="padding-left: 100px">
+ <el-button @click="handleCheckAll"
+ size="small"
+ type="success"
+ plain><i class="el-icon-check"></i>鍏� 閫�</el-button>
+ <el-button @click="actionModel = true"
+ size="small"
+ type="primary"
+ plain><i class="el-icon-plus"></i>鍏朵粬鏉冮檺</el-button>
+ </div>
+ <div class="m-btn">
+ <el-button type="primary"
+ @click="save"><i class="el-icon-check"></i>淇濆瓨</el-button>
+ <el-button type="success"
+ @click="add"><i class="el-icon-plus"></i>鏂板缓</el-button>
+ <el-button type="warning"
+ @click="addChild"><i class="el-icon-plus"></i>娣诲姞瀛愮骇</el-button>
+ <el-button type="primary"
+ plain
+ @click="addBrother"><i class="el-icon-circle-plus"></i> 娣诲姞鍚岀骇</el-button>
+ <el-button type="warning"
+ plain
+ @click="delMenu"><i class="el-icon-delete"></i> 鍒犻櫎鑿滃崟</el-button>
+ </div>
+ </div>
+ </el-scrollbar>
+ </div>
+ </div>
+</template>
+<script type="jsx">
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+import Icons from "@/components/basic/Icons.vue";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import {
+ defineComponent,
+ reactive,
+ ref,
+ toRefs,
+ onMounted,
+ h,
+ resolveComponent,
+} from "vue";
+
+import http from "@/api/http";
+export default defineComponent({
+ components: {
+ VolForm: VolForm,
+ VolBox: VolBox,
+ Icons: Icons,
+ VolMenu,
+ },
+ methods: {
+ otherAction () {
+ this.$refs.actionForm.validate(() => {
+ let exist = this.action.some((x) => {
+ return (
+ x.text == this.actionFields.name ||
+ x.value == this.actionFields.value
+ );
+ });
+ if (exist) {
+ return this.$message.error("鏉冮檺鍚嶇О鎴栨潈闄愬�煎凡瀛樺湪");
+ }
+ this.actionModel = false;
+ this.action.push({
+ text: this.actionFields.name,
+ value: this.actionFields.value,
+ });
+ });
+ },
+ handleCheckAll () {
+ if (this.actions == this.action.length) {
+ this.checkAll = false;
+ } else {
+ this.checkAll = !this.checkAll;
+ }
+ if (this.checkAll) {
+ this.actions = this.action.map((x) => {
+ return x.value;
+ });
+ } else {
+ this.actions = [];
+ }
+ },
+ checkAllGroupChange (data) {
+ if (data.length === this.action.length) {
+ this.checkAll = true;
+ } else if (data.length > 0) {
+ this.checkAll = false;
+ } else {
+ this.checkAll = false;
+ }
+ },
+ add (obj) {
+ this.$refs.form.reset(
+ Object.assign({ enable: 1 }, obj || { parentId: 0 })
+ );
+ this.icon = "";
+ // this.actions = [];
+ //2020.08.07鏂板缓鑿滃崟鏃讹紝榛樿閫変腑鏌ヨ鎸夐挳鏉冮檺
+ this.actions = ["Search"];
+ },
+ addChild () {
+ if (!this.isSelect()) return;
+ this.add({ parentId: this.fields.menuId });
+ },
+ addBrother () {
+ if (!this.isSelect()) return;
+ this.add({ parentId: this.fields.parentId });
+ },
+ delMenu () {
+ //2020.08.07澧炲姞鑿滃崟鍒犻櫎鍔熻兘
+ if (this.fields.menuId == 0) {
+ return this.$Message.error("璇烽�夋嫨鑿滃崟");
+ }
+
+ let tigger = false;
+ this.$confirm(
+ "纭瑕佸垹闄ゃ��" + this.fields.menuName + "銆戣彍鍗曞悧锛�",
+ "璀﹀憡",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ center: true,
+ }
+ ).then(() => {
+ if (tigger) return;
+ tigger = true;
+ let menuId = this.fields.menuId;
+ this.http
+ .post("/api/menu/delMenu?menuId=" + menuId, {}, "姝e湪鍒犻櫎鏁版嵁....")
+ .then((x) => {
+ if (!x.status) return this.$Message.error(x.message);
+ this.$refs.form.reset();
+ this.$Message.info(x.message);
+ this.initTree();
+ });
+ });
+ },
+ save () {
+ this.$refs.form.validate(() => {
+ this.fields.auth = "";
+ if (this.actions) {
+ this.fields.auth = this.action.filter((x) => {
+ return this.actions.indexOf(x.value) != -1;
+ });
+ }
+ if (
+ this.fields.auth &&
+ this.fields.auth instanceof Array &&
+ this.fields.auth.length > 0
+ ) {
+ this.fields.auth = JSON.stringify(this.fields.auth);
+ } else {
+ this.fields.auth = "";
+ }
+ this.http.post("/api/menu/save", this.fields, true).then((x) => {
+ if (!x.status) {
+ this.$Message.error(x.message);
+ return;
+ }
+
+ this.$Message.info(x.message);
+ if (this.fields.menuId) {
+ this.tree.forEach((t) => {
+ if (t.id == this.fields.menuId) {
+ t.name = this.fields.menuName;
+ t.orderNo = this.fields.orderNo;
+ t.parentId = this.fields.parentId;
+ }
+ });
+ return;
+ }
+ this.fields.menuId = x.data.menuId;
+ this.fields.createDate = x.data.createDate;
+ this.tree.push({
+ id: x.data.menuId,
+ name: this.fields.menuName,
+ orderNo: this.fields.orderNo,
+ parentId: this.fields.parentId,
+ });
+ });
+ });
+ },
+ isSelect () {
+ let id = this.fields.menuId;
+ if (!id) {
+ this.$message.error("璇烽�夋嫨鑺傜偣");
+ return false;
+ }
+ return true;
+ },
+ onSelect (icon) {
+ this.fields.icon = icon;
+ this.$message.info(icon);
+ },
+ onOpenChange (node) {
+ if (node.length == 0) return;
+ this.getTreeItem(node[node.length > 1 ? node.length - 1 : 0]);
+ }
+ },
+ setup () {
+ const tree = ref([]);
+ const actionValues = ref([]);
+ const action = ref([
+ { text: "鏌ヨ", value: "Search" },
+ { text: "鏂板缓", value: "Add" },
+ { text: "鍒犻櫎", value: "Delete" },
+ { text: "缂栬緫", value: "Update" },
+ { text: "瀵煎叆", value: "Import" },
+ { text: "瀵煎嚭", value: "Export" },
+ { text: "涓婁紶", value: "Upload" },
+ { text: "瀹℃牳", value: "Audit" },
+ ]);
+ const actions = ref([]);
+ actionValues.value = action.value.map((x) => {
+ return x.value;
+ });
+ const initTree = () => {
+ http.post("/api/menu/getMenu", {}, true).then((x) => {
+ x.forEach(item=>{
+ item.icon='el-icon-menu';
+ if (item.menuType==1&&!item.parentId) {
+ item.name="(app)"+item.name;
+ }
+ })
+ tree.value = x;
+ });
+ };
+ onMounted(() => {
+ initTree();
+ });
+ const actionModel = ref(false);
+ const checkAll = ref(false);
+ const model = ref(false);
+
+ const fields = ref({
+ menuId: 0,
+ parentId: 0,
+ menuName: "",
+ tableName: "",
+ url: "",
+ auth: "",
+ icon: "",
+ orderNo: "",
+ enable: 1,
+ menuType:null,
+ createDate: "",
+ creator: "",
+ modifyDate: "",
+ });
+
+ const actionFields = ref({
+ name: "",
+ value: "",
+ });
+ const actionOptions = ref([
+ [
+ {
+ title: "鏉冮檺鍚嶇О",
+ field: "name",
+ placeholder: "鏉冮檺鍚嶇О,濡傦細鏂板",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "鏉� 闄� 鍊�",
+ field: "value",
+ placeholder: "鏉冮檺鍊�,濡傦細Add",
+ required: true,
+ },
+ ],
+ ]);
+
+ const options = ref([
+ [
+ {
+ title: "鑿� 鍗� ID",
+ field: "menuId",
+ placeholder: "鑿滃崟ID",
+ min: 0,
+ disabled: true,
+ },
+ {
+ title: "鐖� 绾� ID",
+ required: true,
+ type: "number",
+ min: 0,
+ field: "parentId",
+ // min: 0, max: 50
+ },
+ {
+ title: "鑿滃崟鍚嶇О",
+ field: "menuName",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "瑙嗗浘/琛ㄥ悕",
+ field: "tableName",
+ placeholder: "涓庝唬鐮佺敓鎴愬櫒浣跨敤鐨勫悕绉扮浉鍚�",
+ required: true,
+ },
+ {
+ title: "(璺敱)Url",
+ field: "url",
+ placeholder: "瑙�:涓婇潰鑿滃崟閰嶇疆璇存槑",
+ },
+ {
+ title: "鎺掑簭鍙�",
+ field: "orderNo",
+ type: "number",
+ min: 0,
+ placeholder: "鍊艰秺澶ф樉绀鸿秺闈犲墠",
+ required: true,
+ },
+ ],
+ [
+ {
+ title: "鏄惁鍚敤",
+ field: "enable",
+ required: true,
+ type: "select",
+ colSize: 4,
+ data: [
+ { key: 1, value: "鍚敤" },
+ { key: 2, value: "鍚敤涓嶆樉绀�" },
+ { key: 0, value: "绂佺敤" },
+ ],
+ },
+ {
+ // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+ title: "鑿滃崟绫诲瀷",
+ field: "menuType",
+ required: true,
+ type: "select",
+ colSize: 4,
+ data: [
+ { key: 0, value: "PC鑿滃崟" },
+ { key: 1, value: "绉诲姩绔彍鍗�" }
+ ],
+ },
+ {
+ title: "鍥炬爣Icon",
+ field: "icon",
+ render: (h) => {
+ return h("div", {}, [
+ h("i", {
+ style: {
+ "font-size": "25px",
+ margin: "0px 9px",
+ position: "relative",
+ top: "4px",
+ },
+ class: [fields.value.icon],
+ }),
+ h(
+ resolveComponent("el-button"),
+ {
+ size: "small",
+ style: { padding: "0px 9px" },
+ type: "primary",
+ plain: true,
+ onClick: () => {
+ model.value = true;
+ },
+ },
+ "閫夋嫨鍥炬爣"
+ ),
+ ]);
+ },
+ },
+ ],
+ ]);
+ const refForm = ref();
+ const getTreeItem = (node) => {
+ http.post("api/menu/getTreeItem?menuId=" + node, {}, true).then((x) => {
+ try {
+ fields.value.icon = x.icon;
+ if (x.auth) {
+ x.auth = JSON.parse(x.auth);
+ action.value.splice(8, action.value.length);
+
+ actions.value = x.auth.map((element) => {
+ if (actionValues.value.indexOf(element.value) == -1) {
+ action.value.push(element);
+ }
+ return element.value;
+ });
+ } else {
+ action.value.splice(8, action.value.length);
+ x.auth = [];
+ fields.value.icon = "";
+ actions.value = [];
+ }
+ } catch (error) {
+ console.log("鑿滃崟鍔熻兘鏉冮檺杞崲鎴怞SON澶辫触:" + x.auth);
+ x.auth = [];
+ // this.icon = "";
+ actions.value = [];
+ }
+ refForm.value.reset(x);
+ });
+ };
+ return {
+ tree,
+ initTree,
+ action,
+ actions,
+ actionValues,
+ actionModel,
+ checkAll,
+ model,
+ fields,
+ actionFields,
+ actionOptions,
+ options,
+ form: refForm,
+ getTreeItem
+ };
+ },
+ data () {
+ return {};
+ },
+});
+</script>
+
+<style lang="less" scoped>
+.on-icon {
+ line-height: 20px;
+ position: relative;
+ .remove {
+ display: none;
+ color: red;
+ right: 7px;
+ position: absolute;
+ top: -14px;
+ font-size: 13px;
+ }
+}
+.on-icon:hover {
+ cursor: pointer;
+ .remove {
+ display: block;
+ }
+}
+.action {
+ width: 100%;
+ display: flex;
+
+ margin-bottom: 15px;
+ .ivu-checkbox-wrapper {
+ margin-right: 20px;
+ }
+ .ck {
+ line-height: 33px;
+ display: inline-block;
+ display: flex;
+ label:first-child {
+ min-width: 58px;
+ float: left;
+ margin-top: 1px;
+ }
+ > div {
+ float: left;
+ }
+ }
+}
+
+.menu-container {
+ display: flex;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ padding: 8px;
+ background: #f7f7f7;
+ .menu-left {
+ height: 100%;
+ width: 201px;
+ border: 1px solid #eee;
+ display: flex;
+ background: white;
+ flex-direction: column;
+ .module-name {
+ border-radius: 0px;
+ /* height: 5%; */
+ line-height: 21px;
+ margin-bottom: 0;
+ }
+ }
+ .menu-right {
+ flex: 1;
+ border-radius: 3px;
+ border: 1px solid #eee;
+ background: white;
+ margin-left: 9px;
+ margin-right: 3px;
+ }
+}
+.m-btn {
+ margin-top: 20px;
+ text-align: center;
+}
+.m-title {
+ line-height: 40px;
+ font-size: 15px;
+ background: #66b1ff0f;
+ font-weight: bold;
+ padding: 6px 16px;
+ border-bottom: 1px solid #eee;
+ i {
+ padding-right: 5px;
+ }
+}
+.form-content {
+ margin-top: 30px;
+}
+.menu-left ::v-deep(.el-scrollbar__bar.is-vertical) {
+ width: 2px;
+}
+.auth-group {
+ display: flex;
+ label {
+ display: inline-block;
+ width: 100px;
+ text-align: right;
+ color: #797979;
+ font-size: 14px;
+ }
+ .ck {
+ flex: 1;
+ }
+ .el-checkbox {
+ min-width: 105px;
+ width: auto !important;
+ margin-right: 5px;
+ display: inline-block;
+ padding-bottom: 10px;
+ }
+}
+.auth-group ::v-deep(.el-checkbox__label) {
+ padding-left: 4px;
+}
+</style>
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue"
new file mode 100644
index 0000000..b5da209
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue"
@@ -0,0 +1,72 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Role.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/Sys_Role.jsx";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Role_Id',
+ footer: "Foots",
+ cnName: '瑙掕壊绠$悊',
+ name: 'Sys_Role',
+ url: "/Sys_Role/",
+ sortName: "Role_Id"
+ });
+ const editFormFields = ref({"ParentId":[],"RoleName":"","DeptName":"","Enable":"","Creator":"","CreateDate":"","Modifier":"","ModifyDate":""});
+ const editFormOptions = ref([[{"dataKey":"tree_roles","data":[],"title":"鐖剁骇ID","required":true,"field":"ParentId","type":"cascader"},
+ {"title":"瑙掕壊鍚嶇О","required":true,"field":"RoleName"}],
+ [{"title":"閮ㄩ棬鍚嶇О","field":"DeptName"},
+ {"dataKey":"enable","data":[],"title":"鏄惁鍚敤","field":"Enable","type":"switch"}],
+ [{"title":"鍒涘缓浜�","field":"Creator","disabled":true},
+ {"title":"鍒涘缓鏃堕棿","field":"CreateDate","disabled":true,"type":"datetime"}],
+ [{"title":"淇敼浜�","field":"Modifier","disabled":true},
+ {"title":"淇敼鏃堕棿","field":"ModifyDate","disabled":true}]]);
+ const searchFormFields = ref({"RoleName":"","DeptName":"","Enable":"","CreateDate":"","ModifyDate":""});
+ const searchFormOptions = ref([[{"title":"瑙掕壊鍚嶇О","field":"RoleName","type":"text"},{"title":"閮ㄩ棬鍚嶇О","field":"DeptName","type":"text"},{"dataKey":"enable","data":[],"title":"鏄惁鍚敤","field":"Enable","type":"select"}],[{"title":"鍒涘缓鏃堕棿","field":"CreateDate","type":"datetime"},{"title":"淇敼鏃堕棿","field":"ModifyDate","type":"datetime"}]]);
+ const columns = ref([{field:'roleId',title:'瑙掕壊ID',type:'int',width:70,readonly:true,require:true,align:'left',sortable:true},
+ {field:'parentId',title:'鐖剁骇ID',type:'int',bind:{ key:'tree_roles',data:[]},width:70,require:true,align:'left'},
+ {field:'roleName',title:'瑙掕壊鍚嶇О',type:'string',link:true,width:90,require:true,align:'left'},
+ {field:'deptId',title:'閮ㄩ棬ID',type:'int',width:90,hidden:true,align:'left'},
+ {field:'deptName',title:'閮ㄩ棬鍚嶇О',type:'string',width:90,align:'left'},
+ {field:'enable',title:'鏄惁鍚敤',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
+ {field:'orderNo',title:'鎺掑簭',type:'int',width:90,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:130,readonly:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:90,readonly:true,align:'left',sortable:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue"
new file mode 100644
index 0000000..bc1efce
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue"
@@ -0,0 +1,89 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_User.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_User.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'user_Id',
+ footer: "Foots",
+ cnName: '鐢ㄦ埛绠$悊',
+ name: 'Sys_User',
+ url: "/Sys_User/",
+ sortName: "user_Id"
+ });
+ const editFormFields = ref({ "userName": "", "userTrueName": "", "role_Id": [], "deptIds": "", "enable": "", "gender": "", "remark": "", "headImageUrl": "", "systemType": "" });
+ const editFormOptions = ref([[{ "title": "甯愬彿", "required": true, "field": "userName", "disabled": true }],
+ [{ "title": "濮撳悕", "required": true, "field": "userTrueName", "type": "text" }],
+ [{ "dataKey": "tree_roles", "data": [], "title": "瑙掕壊", "required": true, "field": "role_Id", "type": "cascader" }],
+ [{ "dataKey": "缁勭粐鏈烘瀯", "data": [], "title": "缁勭粐鏋勬灦", "field": "deptIds", "colSize": 12, "type": "treeSelect" }],
+ [{ "dataKey": "enable", "data": [], "title": "鏄惁鍙敤", "required": true, "field": "enable", "type": "select" }],
+ [{ "dataKey": "gender", "data": [], "title": "鎬у埆", "field": "gender", "type": "select" }],
+ [{ "title": "澶囨敞", "field": "remark", "colSize": 12, "type": "textarea" }],
+ [{ "title": "澶村儚", "field": "headImageUrl", "type": "img" }],
+ [{ "title": "绯荤粺", "field": "systemType", "type": "text", "required": true }]]);
+ const searchFormFields = ref({ "UserName": "", "UserTrueName": "", "Gender": "", "DeptName": "", "Role_Id": [], "Token": "", "AppType": [], "CreateDate": "", "IsRegregisterPhone": "", "PhoneNo": "", "Enable": "", "LastLoginDate": "", "Address": "", "Email": "" });
+ const searchFormOptions = ref([[{ "title": "甯愬彿", "field": "UserName" }, { "title": "濮撳悕", "field": "UserTrueName" }, { "dataKey": "gender", "data": [], "title": "鎬у埆", "field": "Gender", "type": "select" }], [{ "title": "涓嶇敤", "field": "DeptName" }, { "dataKey": "tree_roles", "data": [], "title": "瑙掕壊", "field": "Role_Id", "type": "select" }, { "title": "Token", "field": "Token" }], [{ "dataKey": "ut", "data": [], "title": "绫诲瀷", "field": "AppType", "type": "selectList" }, { "dataKey": "isphone", "data": [], "title": "鎵嬫満鐢ㄦ埛", "field": "IsRegregisterPhone", "type": "select" }, { "title": "鎵嬫満鍙�", "field": "PhoneNo" }], [{ "dataKey": "enable", "data": [], "title": "鏄惁鍙敤", "field": "Enable", "type": "select" }, { "title": "鍦板潃", "field": "Address" }, { "title": "Email", "field": "Email" }], [{ "title": "娉ㄥ唽鏃堕棿", "field": "CreateDate", "type": "datetime" }, { "title": "鏈�鍚庣櫥闄嗘椂闂�", "field": "LastLoginDate", "type": "datetime" }]]);
+ const columns = ref([{ field: 'user_Id', title: 'User_Id', type: 'int', width: 90, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'userName', title: '甯愬彿', type: 'string', link: true, width: 120, readonly: true, require: true, align: 'left', sort: true },
+ { field: 'userTrueName', title: '濮撳悕', type: 'string', width: 120, require: true, align: 'left' },
+ { field: 'gender', title: '鎬у埆', type: 'int', bind: { key: 'gender', data: [] }, width: 80, align: 'left' },
+ { field: 'headImageUrl', title: '澶村儚', type: 'img', width: 90, align: 'left' },
+ { field: 'dept_Id', title: '涓嶇敤', type: 'int', width: 90, hidden: true, align: 'left' },
+ { field: 'deptName', title: '涓嶇敤', type: 'string', width: 150, hidden: true, align: 'left' },
+ { field: 'role_Id', title: '瑙掕壊', type: 'int', bind: { key: 'tree_roles', data: [] }, width: 130, require: true, align: 'left' },
+ { field: 'roleName', title: '涓嶇敤', type: 'string', width: 90, hidden: true, align: 'left' },
+ { field: 'token', title: 'Token', type: 'string', width: 180, hidden: true, align: 'left' },
+ { field: 'appType', title: '绫诲瀷', type: 'int', bind: { key: 'ut', data: [] }, width: 150, hidden: true, align: 'left' },
+ { field: 'deptIds', title: '缁勭粐鏋勬灦', type: 'string', bind: { key: '缁勭粐鏈烘瀯', data: [] }, width: 140, hidden: true, align: 'left' },
+ { field: 'createDate', title: '娉ㄥ唽鏃堕棿', type: 'datetime', width: 150, readonly: true, align: 'left', sort: true },
+ { field: 'isRegregisterPhone', title: '鎵嬫満鐢ㄦ埛', type: 'int', bind: { key: 'isphone', data: [] }, width: 120, hidden: true, align: 'left' },
+ { field: 'phoneNo', title: '鎵嬫満鍙�', type: 'string', width: 150, hidden: true, align: 'left' },
+ { field: 'tel', title: 'Tel', type: 'string', width: 90, hidden: true, align: 'left' },
+ { field: 'createID', title: 'CreateID', type: 'int', width: 90, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', width: 130, readonly: true, align: 'left' },
+ { field: 'enable', title: '鏄惁鍙敤', type: 'byte', bind: { key: 'enable', data: [] }, width: 90, require: true, align: 'left' },
+ { field: 'modifyID', title: 'ModifyID', type: 'int', width: 90, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 130, hidden: true, readonly: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', width: 90, hidden: true, readonly: true, align: 'left', sort: true },
+ { field: 'auditStatus', title: '瀹℃牳鐘舵��', type: 'int', bind: { key: 'audit', data: [] }, width: 90, hidden: true, align: 'left' },
+ { field: 'auditor', title: '瀹℃牳浜�', type: 'string', width: 90, hidden: true, align: 'left' },
+ { field: 'auditDate', title: '瀹℃牳鏃堕棿', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'lastLoginDate', title: '鏈�鍚庣櫥闄嗘椂闂�', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'lastModifyPwdDate', title: '鏈�鍚庡瘑鐮佷慨鏀规椂闂�', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'address', title: '鍦板潃', type: 'string', width: 190, hidden: true, align: 'left' },
+ { field: 'mobile', title: '鐢佃瘽', type: 'string', width: 140, hidden: true, align: 'left' },
+ { field: 'email', title: 'Email', type: 'string', width: 140, hidden: true, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 180, hidden: true, align: 'left' },
+ { field: 'orderNo', title: '鎺掑簭鍙�', type: 'int', width: 90, hidden: true, align: 'left' }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue"
new file mode 100644
index 0000000..5faa0ed
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue"
@@ -0,0 +1,281 @@
+<template>
+ <input ref="input" type="file" accept=".png, .jpg, .jpeg" style="display: none" @change="handleChange"
+ :multiple="false" />
+ <VolBox :width="500" :height="270" v-model="modifyOptions.model" title="淇敼瀵嗙爜">
+ <div style="padding:10px;20px;">
+ <VolForm ref="pwd" :formRules="modifyOptions.data" :formFields="modifyOptions.fields"></VolForm>
+ </div>
+ <template #footer>
+ <div style="text-align: center;">
+ <el-button type="primary" plain size="mini" long @click="savePwd">淇濆瓨</el-button>
+ </div>
+ </template>
+ </VolBox>
+ <div class="user-info">
+ <div class="user-content">
+ <div class="left">
+ <div>
+ <img class="header-img" @click="showUpload" :src="http.ipAddress + userInfo.headImageUrl" :onerror="errorImg" />
+ <div class="text">
+ <p class="name">
+ <span style="font-size: 13px">{{ userInfo.userName }}</span>
+ </p>
+ <p class="date">
+ <span>娉ㄥ唽鏃ユ湡锛歿{ userInfo.createDate }}</span>
+ </p>
+ <p>
+ <el-button type="error" @click="modifyPwd" size="small" plain long>淇敼瀵嗙爜</el-button>
+ <el-button style="padding: 3px 16px" @click="showUpload" plain type="primary" size="mini"
+ ghost>淇敼澶村儚</el-button>
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="right">
+ <vol-form ref="form" :load-key="true" :width="500" :formRules="editFormOptions" :formFields="userInfo">
+ <div class="footer">
+ <el-button style="margin-top: 2px" type="primary" size="small" long @click="modifyInfo">淇濆瓨</el-button>
+ </div>
+ </vol-form>
+ </div>
+ </div>
+
+ </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+ components: {
+ VolForm,
+ VolBox,
+ },
+ methods: {
+ modifyPwd() {
+ this.modifyOptions.model = true;
+ },
+ savePwd() {
+ if (!this.$refs.pwd.validate()) return;
+ if (
+ this.modifyOptions.fields.newPwd != this.modifyOptions.fields.newPwd1
+ ) {
+ return this.$message.error("涓ゆ瀵嗙爜涓嶄竴鑷�");
+ }
+ let url =
+ "/api/Sys_User/modifyPwd?oldPwd=" +
+ this.modifyOptions.fields.oldPwd +
+ "&newPwd=" +
+ this.modifyOptions.fields.newPwd;
+ this.http.post(url, {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message.error(x.message);
+ }
+ this.modifyOptions.model = false;
+ this.$Message.success(x.message);
+ this.$refs.pwd.reset();
+ });
+ },
+ modifyInfo() {
+ this.$refs.form.validate(() => {
+ this.http.post('api/Sys_User/updateUserInfo', this.userInfo).then(result => {
+ this.$message.success(result);
+ let userInfo = this.$store.getters.getUserInfo();
+ userInfo.img = this.userInfo.headImageUrl;
+ userInfo.userName = this.userInfo.userTrueName;
+ this.$store.commit('setUserInfo', userInfo);
+ })
+ })
+
+ },
+ showUpload() {
+ this.$refs.input.click();
+ },
+ handleChange(e) {
+ var forms = new FormData();
+ let file = e.target.files[0]
+ forms.append('fileInput', file, file.name);
+ const url = 'api/Sys_User/upload'
+ this.http
+ .post(url, forms, true, {
+ headers:{'Content-Type':'multipart/form-data'}
+ })
+ .then(
+ (x) => {
+ this.userInfo.headImageUrl = x.data + file.name;
+ this.modifyInfo();
+ }
+ );
+ }
+ },
+ created() {
+ this.http.post("/api/Sys_User/getCurrentUserInfo", {}, true).then((x) => {
+ if (!x.status) {
+ return this.$message(x.message);
+ }
+ x.data.createDate = (x.data.createDate || "").replace("T", " ");
+ x.data.gender = x.data.gender + "";
+ this.$refs.form.reset(x.data);
+ this.userInfo.img = this.base.getImgSrc(
+ x.data.headImageUrl,
+ this.http.ipAddress
+ );
+ Object.assign(this.userInfo, x.data);
+ });
+ },
+ data() {
+ return {
+
+ errorImg:new URL('@/assets/imgs/error-img.png', import.meta.url).href,
+ // 'this.src="' + require("@/assets/imgs/error-img.png") + '"',
+ modifyOptions: {
+ model: false,
+ fields: { oldPwd: "", newPwd: "", newPwd1: "" },
+ data: [
+ [
+ {
+ columnType: "string",
+ required: true,
+ type: "password",
+ title: "鏃у瘑鐮�",
+ field: "oldPwd",
+ },
+ ],
+ [
+ {
+ type: "password",
+ required: true,
+ title: "鏂板瘑鐮�",
+ field: "newPwd",
+ },
+ ],
+ [
+ {
+ type: "password",
+ required: true,
+ title: "纭瀵嗙爜",
+ field: "newPwd1",
+ },
+ ],
+ ],
+ },
+ userInfo: {
+ headImageUrl: "",
+ createDate: "--",
+ userName: "--",
+ userTrueName: "",
+ remark: "",
+ email: "",
+ phoneNo: "",
+ },
+ editFormOptions: [
+ [
+ {
+ columnType: "string",
+ title: "璐﹀彿",
+ field: "userName",
+ disabled: true,
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "濮撳悕",
+ field: "userTrueName",
+ required: true,
+ type: "text",
+ },
+ ],
+ [
+ {
+ dataKey: "gender",
+ title: "鎬у埆",
+ field: "gender",
+ data: [],
+ type: "select",
+ },
+ ],
+ [
+ {
+ columnType: "string",
+ title: "澶囨敞",
+ field: "remark",
+ colSize: 12,
+ type: "textarea",
+ },
+ ],
+ ],
+ };
+ },
+};
+</script>
+
+<style lang="less" scoped>
+img[src=""],
+img:not([src]) {
+ opacity: 0;
+}
+
+.user-content {
+ display: flex;
+}
+
+.user-info {
+
+ position: absolute;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ margin: 0 auto;
+ left: 0;
+ // width: 950px;
+ right: 0;
+ text-align: center;
+ padding: 0px;
+
+ height: 100%;
+
+ .text {
+ padding: 5px;
+
+ .name {
+ font-weight: bolder;
+ font-size: 15px;
+ font-weight: 900;
+ }
+ }
+
+ .header-img {
+ object-fit: cover;
+ height: 150px;
+ width: 150px;
+ border-radius: 50%;
+ margin-right: 0px;
+ top: 4px;
+ position: relative;
+ border: 1px solid #dfdfdf;
+ cursor: pointer;
+ }
+
+ .left {
+ width: 320px;
+ border-right: 1px solid #eee;
+ // box-shadow: #d6d6d6 7px 4px 20px;
+ // flex: 1;
+ }
+
+ .right {
+ padding-left: 30px;
+ width: 400px;
+ // background: #fefefe;
+ // flex: 3;
+ }
+}
+
+.date {
+ letter-spacing: 0px;
+ font-size: 12px;
+ color: #282828;
+}
+</style>
+
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue"
new file mode 100644
index 0000000..0266ca6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue"
@@ -0,0 +1,71 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/system/Sys_Department.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/system/system/Sys_Department.jsx";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'DepartmentId',
+ footer: "Foots",
+ cnName: '缁勭粐鏋舵瀯',
+ name: 'system/Sys_Department',
+ url: "/Sys_Department/",
+ sortName: "CreateDate"
+ });
+ const editFormFields = ref({"DepartmentName":"","DepartmentCode":"","ParentId":[],"Remark":""});
+ const editFormOptions = ref([[{"title":"缁勭粐鍚嶇О","required":true,"field":"DepartmentName"}],
+ [{"title":"缁勭粐缂栧彿","field":"DepartmentCode"}],
+ [{"dataKey":"缁勭粐鏈烘瀯","data":[],"title":"涓婄骇缁勭粐","field":"ParentId","type":"cascader"}],
+ [{"title":"澶囨敞","field":"Remark","type":"textarea"}]]);
+ const searchFormFields = ref({"DepartmentName":"","DepartmentCode":"","Creator":"","CreateDate":""});
+ const searchFormOptions = ref([[{"title":"缁勭粐鍚嶇О","field":"DepartmentName","type":"like"},{"title":"缁勭粐缂栧彿","field":"DepartmentCode"},{"title":"鍒涘缓浜�","field":"Creator"},{"title":"鍒涘缓鏃堕棿","field":"CreateDate","type":"datetime"}]]);
+ const columns = ref([{field:'DepartmentId',title:'DepartmentId',type:'guid',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'DepartmentName',title:'缁勭粐鍚嶇О',type:'string',link:true,width:180,require:true,align:'left',sort:true},
+ {field:'DepartmentCode',title:'缁勭粐缂栧彿',type:'string',width:90,align:'left'},
+ {field:'ParentId',title:'涓婄骇缁勭粐',type:'guid',bind:{ key:'缁勭粐鏈烘瀯',data:[]},width:110,hidden:true,align:'left'},
+ {field:'DepartmentType',title:'缁勭粐绫诲瀷',type:'string',width:110,hidden:true,align:'left'},
+ {field:'Enable',title:'鏄惁鍙敤',type:'int',width:110,hidden:true,align:'left'},
+ {field:'Remark',title:'澶囨敞',type:'string',width:100,align:'left'},
+ {field:'CreateID',title:'CreateID',type:'int',width:100,hidden:true,align:'left'},
+ {field:'Creator',title:'鍒涘缓浜�',type:'string',width:90,align:'left'},
+ {field:'CreateDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:145,align:'left',sort:true},
+ {field:'ModifyID',title:'ModifyID',type:'int',width:100,hidden:true,align:'left'},
+ {field:'Modifier',title:'淇敼浜�',type:'string',width:90,align:'left'},
+ {field:'ModifyDate',title:'淇敼鏃堕棿',type:'datetime',width:140,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/test.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/test.vue"
new file mode 100644
index 0000000..64786be
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/test.vue"
@@ -0,0 +1,18 @@
+<template>
+
+</template>
+
+<script>
+export default {
+ props:{
+ list: {
+ type: Array,
+ default: [],
+ },
+ }
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue"
new file mode 100644
index 0000000..230e978
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue"
@@ -0,0 +1,76 @@
+<template>
+ <div>
+ <vol-box v-model="showDetialBox" :lazy="true" :height="350" :width="600" :padding="15" title="鏂欐灞炴�х淮鎶�">
+ <el-form :inline="true" :model="TrayBarcodePropertys" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鏂欐灞炴��:">
+ <el-input v-model="TrayBarcodePropertys.TrayBarcodeProperty" placeholder="鏂欐灞炴��" />
+ </el-form-item>
+ <el-form-item label="鎵樼洏瀹归噺:">
+ <el-input v-model="TrayBarcodePropertys.Capacity" placeholder="鎵樼洏瀹归噺" />
+ </el-form-item>
+ <el-button @click="addProductType" type="primary">娣诲姞浜у搧宸ュ簭</el-button>
+ <el-button @click="save" type="success">鎻愪氦鏁版嵁</el-button>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="宸ュ簭:" v-for="(input, index) in TrayBarcodePropertys.ProcessCodes"
+ :key="index">
+ <el-input v-model="input.ProcessCode" placeholder="宸ュ簭" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜у搧绫诲瀷:" v-for="(input, index) in TrayBarcodePropertys.ProductTypes"
+ :key="index">
+ <el-input v-model="input.ProductType" placeholder="浜у搧绫诲瀷" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </vol-box>
+ </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import http from "@/../src/api/http.js";
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ showDetialBox: false,
+ TrayBarcodePropertys: {
+ TrayBarcodeProperty: '',
+ Capacity: 0,
+ ProcessCodes: [{ ProcessCode: '', }],
+ ProductTypes: [{ ProductType: '', }]
+ }
+ }
+ },
+ methods: {
+ addProductType() {
+ this.TrayBarcodePropertys.ProductTypes.push({ ProductType: '' })
+ this.TrayBarcodePropertys.ProcessCodes.push({ ProcessCode: '' })
+ },
+ open() {
+ this.showDetialBox = true
+ },
+ save() {
+ console.log(this.TrayBarcodePropertys)
+ let data = ({...this.TrayBarcodePropertys, ProcessCodes:JSON.stringify(this.TrayBarcodePropertys.ProcessCodes) , ProductTypes:JSON.stringify(this.TrayBarcodePropertys.ProductTypes)});
+
+ debugger;
+ http.post('api/Production/AddData', data).then(res => {
+ if (res.code == 200) {
+ // ElMessage.success(res.msg)
+ this.$message.success('娣诲姞鎴愬姛')
+ this.$parent.load();
+ } else {
+ // ElMessage.error(res.msg)
+ this.$message.error(x.message)
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue"
new file mode 100644
index 0000000..1a82e6e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue"
@@ -0,0 +1,68 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/material/Dt_MaterielInfo.js姝ゅ缂栧啓
+ -->
+ <template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "./ProductionModel.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'materielID',
+ footer: "Foots",
+ cnName: '鏂欐灞炴��',
+ name: 'ProductionModel',
+ url: "/Production/",
+ sortName: "MaterielID"
+ });
+ const editFormFields = ref({
+ "TrayBarcodeProperty": "",
+ "Capacity": "",
+
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鏂欐灞炴��", "field": "TrayBarcodeProperty", type: "text" },
+ { "title": "鎵樼洏瀹归噺", "field": "Capacity", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鏂欐灞炴��", "field": "TrayBarcodeProperty", type: "text" },
+ { "title": "鎵樼洏瀹归噺", "field": "Capacity", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'id', title: 'ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'trayBarcodeProperty', title: '鏂欐灞炴��', type: 'string', width: 110, align: 'left', sort: true },
+ { field: 'processCodes', title: '宸ュ簭闆嗗悎', type: 'string', width: 120, align: 'left' },
+ { field: 'productTypes', title: '鐗╂枡缂栫爜/宸ヨ壓鍨嬪彿闆嗗悎', type: 'string', width: 110, align: 'left' },
+ { field: 'capacity', title: '鎵樼洏瀹归噺', type: 'string', width: 110, align: 'left' }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/momTest.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/momTest.vue"
new file mode 100644
index 0000000..f7ad642
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/momTest.vue"
@@ -0,0 +1,364 @@
+<template>
+ <div>
+ <el-card>
+
+ <el-row>
+ <el-col :span="24">
+ <el-form :inline="true" :model="form" label-width="auto" class="demo-form-inline">
+ <el-form-item label="浼氳瘽ID:">
+ <el-input v-model="form.SessionId" placeholder="浼氳瘽ID" />
+ </el-form-item>
+ <el-form-item label="涓婁綅鏈鸿蒋浠跺悕绉�:">
+ <el-input v-model="form.Software" placeholder="涓婁綅鏈鸿蒋浠跺悕绉�" />
+ </el-form-item>
+ <el-form-item label="璁惧缂栧彿:">
+ <el-input v-model="form.EquipmentCode" placeholder="璁惧缂栧彿" />
+ </el-form-item>
+ <el-form-item label="浜哄憳宸ュ彿:">
+ <el-input v-model="form.EmployeeNo" placeholder="浜哄憳宸ュ彿" />
+ </el-form-item>
+ <el-form-item label="璇锋眰鏃堕棿:">
+ <el-date-picker v-model="form.RequestTime" type="datetime" placeholder="閫夋嫨鏃堕棿" clearable />
+ </el-form-item>
+ </el-form>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鎵樼洏鍗曠數鑺В缁�</el-text>
+ <el-button @click="addTrayCellUnbind" type="primary">娣诲姞鐢佃姱</el-button>
+ <el-button @click="subimtTrayCellUnbind" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayCellUnbind" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayCellUnbind.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item v-for="(input, index) in TrayCellUnbind.SerialNos" :key="index" label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鏁寸洏鐢佃姱瑙g粦</el-text>
+ <el-button @click="subimtTrayUnbind" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayUnbind" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="TrayUnbind.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayUnbind.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鍗曠數鑺睘鎬ц幏鍙�</el-text>
+ <el-button @click="addCellState" type="primary">娣诲姞鐢佃姱</el-button> <el-button
+ @click="subimtSerialNoGet" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="CellStateinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item v-for="(input, index) in CellStateinputs.SerialNos" :key="index" label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鏁寸洏鐢佃姱灞炴�ц幏鍙�</el-text>
+ <el-button @click="subimtTrayBarcodeGet" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayCellsStatus" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayCellsStatus.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-row>
+ <el-col :span="24">
+ <el-card>
+ <div class="header">
+ <el-text> 闈欑疆\闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�</el-text>
+ <el-button @click="addOCVInput" type="primary">娣诲姞鐢佃姱</el-button> <el-button
+ @click="subimtAgingInput" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="OCVinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="OCVinputs.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="OCVinputs.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <template v-for="(input, index) in OCVinputs.SerialNos" :key="index">
+ <el-form-item label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ <el-form-item label="閫氶亾鍙�:">
+ <el-input v-model="input.PositionNo" placeholder="閫氶亾鍙�" />
+ </el-form-item>
+ <el-divider />
+ </template>
+ </el-form>
+ </el-card>
+
+ </el-col>
+
+ <el-col :span="24">
+ <el-card>
+ <div class="header">
+ <el-text> 宸ヨ壓璺嚎鐢宠</el-text>
+ <el-button @click="addProcessApply" type="primary">娣诲姞鐢佃姱</el-button>
+ <el-button @click="subimtProcessApply" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="ProcessApplyinputs" label-width="auto"
+ class="demo-form-inline">
+ <el-form-item label="宸ュ崟缂栧彿:">
+ <el-input v-model="ProcessApplyinputs.WipOrderNo" placeholder="宸ュ崟缂栧彿" />
+ </el-form-item>
+ <el-form-item v-for="(input, index) in ProcessApplyinputs.SerialNos" :key="index"
+ label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 闈欑疆\闄堝寲鍑哄簱锛堟暣鎵樼洏锛�</el-text>
+ <el-button @click="addAgingOutputinputs" type="primary">娣诲姞鐢佃姱</el-button><el-button
+ @click="subimtAgingOutput" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="AgingOutputinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="AgingOutputinputs.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="AgingOutputinputs.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <template v-for="(input, index) in AgingOutputinputs.SerialNos" :key="index">
+ <el-form-item label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ <el-form-item label="閫氶亾鍙�:">
+ <el-input v-model="input.SlotNo" placeholder="閫氶亾鍙�" />
+ </el-form-item>
+ <el-form-item label="鐢佃姱缁撴灉:">
+ <el-input v-model="input.SerialNoResult" placeholder="鐢佃姱缁撴灉" />
+ </el-form-item>
+ <template v-for="(inputPar, index) in input.ParameterInfo" :key="index">
+ <el-form-item label="鍙傛暟缂栫爜:">
+ <el-input v-model="inputPar.ParamterCode" placeholder="鍙傛暟缂栫爜" />
+ </el-form-item>
+ <el-form-item label="鍙傛暟鎻忚堪 :">
+ <el-input v-model="inputPar.ParameterDesc" placeholder="鍙傛暟鎻忚堪" />
+ </el-form-item>
+ <el-form-item label="瀹為檯鍊� :">
+ <el-input v-model="inputPar.Value" placeholder="瀹為檯鍊�" />
+ </el-form-item>
+ <el-form-item label="涓婇檺:">
+ <el-input v-model="inputPar.UpperLimit" placeholder="涓婇檺" />
+ </el-form-item>
+ <el-form-item label="涓嬮檺:">
+ <el-input v-model="inputPar.LowerLomit" placeholder="涓嬮檺" />
+ </el-form-item>
+ <el-form-item label="鐩爣鍊� :">
+ <el-input v-model="inputPar.TargetValue" placeholder="鐩爣鍊�" />
+ </el-form-item>
+ <el-form-item label="缁撴灉:">
+ <el-input v-model="inputPar.ParameterResult" placeholder="缁撴灉" />
+ </el-form-item>
+ <el-form-item label="缂洪櫡浠g爜 :">
+ <el-input v-model="inputPar.DefectCode" placeholder="缂洪櫡浠g爜 " />
+ </el-form-item>
+ <el-divider />
+ </template>
+ </template>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ </el-row>
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import http from "@/../src/api/http.js";
+
+// do not use same name with ref
+const form = reactive({
+ SessionId: '1',
+ RequestTime: '2023-10-11 10:10:10',
+ Software: '2',
+ EquipmentCode: '3',
+ EmployeeNo: '4',
+})
+
+
+//#region 鎵樼洏鍗曠數鑺В缁�
+const subimtTrayCellUnbind = () => {
+ let input = ({ ...form, ...TrayCellUnbind })
+ console.log(input)
+ http.post('api/Unbind/TrayCellUnbind', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addTrayCellUnbind = () => {
+ TrayCellUnbind.SerialNos.push({ SerialNo: '' })
+}
+
+const TrayCellUnbind = reactive({
+ TrayBarcode: '',
+ SerialNos: [{ SerialNo: '' }]
+})
+//#endregion
+
+//#region 鏁寸洏鐢佃姱瑙g粦
+const TrayUnbind = reactive({
+ OpFlag: '',
+ TrayBarcode: '',
+})
+
+const subimtTrayUnbind = () => {
+ let input = ({ ...form, ...TrayUnbind })
+ console.log(input)
+ http.post('api/Unbind/TrayUnbind', input).then(res => {
+ console.log(input)
+ })
+}
+//#endregion
+
+//#region 鍗曠數鑺睘鎬ц幏鍙�
+const subimtSerialNoGet = () => {
+ let input = ({ ...form, ...CellStateinputs })
+ console.log(input)
+ http.post('api/CellState/GetCellState', input).then(res => {
+ console.log(input)
+ })
+}
+
+const CellStateinputs = reactive({
+ SerialNos: [{ SerialNo: '', }]
+})
+
+const addCellState = () => {
+ CellStateinputs.SerialNos.push({ SerialNo: '' })
+}
+//#endregion
+
+//#region 鏁寸洏鐢佃姱灞炴�ц幏鍙�
+
+const subimtTrayBarcodeGet = () => {
+ let input = ({ ...form, ...TrayCellsStatus })
+ console.log(input)
+ http.post('api/CellState/GetTrayCellState', input).then(res => {
+ console.log(input)
+ })
+}
+
+const TrayCellsStatus = reactive({
+ TrayBarcode: '',
+})
+//#endregion
+
+//#region 闈欑疆\闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�
+const subimtAgingInput = () => {
+ let input = ({ ...form, ...OCVinputs })
+ console.log(input)
+ http.post('api/AgingInOrOut/OCVInput', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addOCVInput = () => {
+ OCVinputs.SerialNos.push({
+ SerialNo: '', PositionNo: ''
+ })
+}
+
+const OCVinputs = reactive({
+ OpFlag: '', TrayBarcode: '',
+ SerialNos: [{
+ SerialNo: '', PositionNo: ''
+ }]
+})
+//#endregion
+
+//#region 闈欑疆\闄堝寲鍑哄簱锛堟暣鎵樼洏锛�
+const subimtAgingOutput = () => {
+ let input = ({ ...form, ...AgingOutputinputs })
+ console.log(input)
+ http.post('api/AgingInOrOut/OCVOutput', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addAgingOutputinputs = () => {
+ AgingOutputinputs.SerialNos.push({
+ SerialNo: '', SlotNo: '', SerialNoResult: '',
+ ParameterInfo: [{ ParamterCode: '', ParameterDesc: '', Value: '', UpperLimit: '', LowerLomit: '', TargetValue: '', ParameterResult: '', DefectCode: '' }]
+ })
+}
+const AgingOutputinputs = reactive({
+ OpFlag: '', TrayBarcode: '',
+ SerialNos: [{
+ SerialNo: '', SlotNo: '', SerialNoResult: '',
+ ParameterInfo: [{ ParamterCode: '', ParameterDesc: '', Value: '', UpperLimit: '', LowerLomit: '', TargetValue: '', ParameterResult: '', DefectCode: '' }]
+ }]
+})
+//#endregion
+
+//#region 宸ヨ壓璺嚎鐢宠
+const subimtProcessApply = () => {
+ let input = ({ ...form, ...ProcessApplyinputs })
+ console.log(input)
+ http.post('api/ProcessApply/ProcessApply', input).then(res => {
+ console.log(input)
+ })
+}
+
+const ProcessApplyinputs = reactive({
+ WipOrderNo: '',
+ SerialNos: [{ SerialNo: '', }]
+})
+
+const addProcessApply = () => {
+ ProcessApplyinputs.SerialNos.push({ SerialNo: '' })
+}
+// #endregion
+</script>
+
+<style>
+.demo-form-inline .el-input {
+ --el-input-width: 220px;
+}
+
+.demo-form-inline .el-select {
+ --el-select-width: 220px;
+}
+
+.header {
+ margin-bottom: 10px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/zzzz.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/zzzz.vue"
new file mode 100644
index 0000000..f7ad642
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/zzzz.vue"
@@ -0,0 +1,364 @@
+<template>
+ <div>
+ <el-card>
+
+ <el-row>
+ <el-col :span="24">
+ <el-form :inline="true" :model="form" label-width="auto" class="demo-form-inline">
+ <el-form-item label="浼氳瘽ID:">
+ <el-input v-model="form.SessionId" placeholder="浼氳瘽ID" />
+ </el-form-item>
+ <el-form-item label="涓婁綅鏈鸿蒋浠跺悕绉�:">
+ <el-input v-model="form.Software" placeholder="涓婁綅鏈鸿蒋浠跺悕绉�" />
+ </el-form-item>
+ <el-form-item label="璁惧缂栧彿:">
+ <el-input v-model="form.EquipmentCode" placeholder="璁惧缂栧彿" />
+ </el-form-item>
+ <el-form-item label="浜哄憳宸ュ彿:">
+ <el-input v-model="form.EmployeeNo" placeholder="浜哄憳宸ュ彿" />
+ </el-form-item>
+ <el-form-item label="璇锋眰鏃堕棿:">
+ <el-date-picker v-model="form.RequestTime" type="datetime" placeholder="閫夋嫨鏃堕棿" clearable />
+ </el-form-item>
+ </el-form>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鎵樼洏鍗曠數鑺В缁�</el-text>
+ <el-button @click="addTrayCellUnbind" type="primary">娣诲姞鐢佃姱</el-button>
+ <el-button @click="subimtTrayCellUnbind" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayCellUnbind" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayCellUnbind.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item v-for="(input, index) in TrayCellUnbind.SerialNos" :key="index" label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鏁寸洏鐢佃姱瑙g粦</el-text>
+ <el-button @click="subimtTrayUnbind" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayUnbind" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="TrayUnbind.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayUnbind.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鍗曠數鑺睘鎬ц幏鍙�</el-text>
+ <el-button @click="addCellState" type="primary">娣诲姞鐢佃姱</el-button> <el-button
+ @click="subimtSerialNoGet" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="CellStateinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item v-for="(input, index) in CellStateinputs.SerialNos" :key="index" label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 鏁寸洏鐢佃姱灞炴�ц幏鍙�</el-text>
+ <el-button @click="subimtTrayBarcodeGet" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="TrayCellsStatus" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="TrayCellsStatus.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-row>
+ <el-col :span="24">
+ <el-card>
+ <div class="header">
+ <el-text> 闈欑疆\闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�</el-text>
+ <el-button @click="addOCVInput" type="primary">娣诲姞鐢佃姱</el-button> <el-button
+ @click="subimtAgingInput" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="OCVinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="OCVinputs.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="OCVinputs.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <template v-for="(input, index) in OCVinputs.SerialNos" :key="index">
+ <el-form-item label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ <el-form-item label="閫氶亾鍙�:">
+ <el-input v-model="input.PositionNo" placeholder="閫氶亾鍙�" />
+ </el-form-item>
+ <el-divider />
+ </template>
+ </el-form>
+ </el-card>
+
+ </el-col>
+
+ <el-col :span="24">
+ <el-card>
+ <div class="header">
+ <el-text> 宸ヨ壓璺嚎鐢宠</el-text>
+ <el-button @click="addProcessApply" type="primary">娣诲姞鐢佃姱</el-button>
+ <el-button @click="subimtProcessApply" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="ProcessApplyinputs" label-width="auto"
+ class="demo-form-inline">
+ <el-form-item label="宸ュ崟缂栧彿:">
+ <el-input v-model="ProcessApplyinputs.WipOrderNo" placeholder="宸ュ崟缂栧彿" />
+ </el-form-item>
+ <el-form-item v-for="(input, index) in ProcessApplyinputs.SerialNos" :key="index"
+ label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <div class="header">
+ <el-text> 闈欑疆\闄堝寲鍑哄簱锛堟暣鎵樼洏锛�</el-text>
+ <el-button @click="addAgingOutputinputs" type="primary">娣诲姞鐢佃姱</el-button><el-button
+ @click="subimtAgingOutput" type="success">鎻愪氦鏁版嵁</el-button>
+ </div>
+ <el-form :inline="true" :model="AgingOutputinputs" label-width="auto" class="demo-form-inline">
+ <el-form-item label="鎵樼洏缂栧彿:">
+ <el-input v-model="AgingOutputinputs.TrayBarcode" placeholder="鎵樼洏缂栧彿" />
+ </el-form-item>
+ <el-form-item label="鎿嶄綔妯″紡:">
+ <el-input v-model="AgingOutputinputs.OpFlag" placeholder="鎿嶄綔妯″紡" />
+ </el-form-item>
+ <template v-for="(input, index) in AgingOutputinputs.SerialNos" :key="index">
+ <el-form-item label="鐢佃姱鍙�:">
+ <el-input v-model="input.SerialNo" placeholder="鐢佃姱鍙�" />
+ </el-form-item>
+ <el-form-item label="閫氶亾鍙�:">
+ <el-input v-model="input.SlotNo" placeholder="閫氶亾鍙�" />
+ </el-form-item>
+ <el-form-item label="鐢佃姱缁撴灉:">
+ <el-input v-model="input.SerialNoResult" placeholder="鐢佃姱缁撴灉" />
+ </el-form-item>
+ <template v-for="(inputPar, index) in input.ParameterInfo" :key="index">
+ <el-form-item label="鍙傛暟缂栫爜:">
+ <el-input v-model="inputPar.ParamterCode" placeholder="鍙傛暟缂栫爜" />
+ </el-form-item>
+ <el-form-item label="鍙傛暟鎻忚堪 :">
+ <el-input v-model="inputPar.ParameterDesc" placeholder="鍙傛暟鎻忚堪" />
+ </el-form-item>
+ <el-form-item label="瀹為檯鍊� :">
+ <el-input v-model="inputPar.Value" placeholder="瀹為檯鍊�" />
+ </el-form-item>
+ <el-form-item label="涓婇檺:">
+ <el-input v-model="inputPar.UpperLimit" placeholder="涓婇檺" />
+ </el-form-item>
+ <el-form-item label="涓嬮檺:">
+ <el-input v-model="inputPar.LowerLomit" placeholder="涓嬮檺" />
+ </el-form-item>
+ <el-form-item label="鐩爣鍊� :">
+ <el-input v-model="inputPar.TargetValue" placeholder="鐩爣鍊�" />
+ </el-form-item>
+ <el-form-item label="缁撴灉:">
+ <el-input v-model="inputPar.ParameterResult" placeholder="缁撴灉" />
+ </el-form-item>
+ <el-form-item label="缂洪櫡浠g爜 :">
+ <el-input v-model="inputPar.DefectCode" placeholder="缂洪櫡浠g爜 " />
+ </el-form-item>
+ <el-divider />
+ </template>
+ </template>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ </el-row>
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import http from "@/../src/api/http.js";
+
+// do not use same name with ref
+const form = reactive({
+ SessionId: '1',
+ RequestTime: '2023-10-11 10:10:10',
+ Software: '2',
+ EquipmentCode: '3',
+ EmployeeNo: '4',
+})
+
+
+//#region 鎵樼洏鍗曠數鑺В缁�
+const subimtTrayCellUnbind = () => {
+ let input = ({ ...form, ...TrayCellUnbind })
+ console.log(input)
+ http.post('api/Unbind/TrayCellUnbind', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addTrayCellUnbind = () => {
+ TrayCellUnbind.SerialNos.push({ SerialNo: '' })
+}
+
+const TrayCellUnbind = reactive({
+ TrayBarcode: '',
+ SerialNos: [{ SerialNo: '' }]
+})
+//#endregion
+
+//#region 鏁寸洏鐢佃姱瑙g粦
+const TrayUnbind = reactive({
+ OpFlag: '',
+ TrayBarcode: '',
+})
+
+const subimtTrayUnbind = () => {
+ let input = ({ ...form, ...TrayUnbind })
+ console.log(input)
+ http.post('api/Unbind/TrayUnbind', input).then(res => {
+ console.log(input)
+ })
+}
+//#endregion
+
+//#region 鍗曠數鑺睘鎬ц幏鍙�
+const subimtSerialNoGet = () => {
+ let input = ({ ...form, ...CellStateinputs })
+ console.log(input)
+ http.post('api/CellState/GetCellState', input).then(res => {
+ console.log(input)
+ })
+}
+
+const CellStateinputs = reactive({
+ SerialNos: [{ SerialNo: '', }]
+})
+
+const addCellState = () => {
+ CellStateinputs.SerialNos.push({ SerialNo: '' })
+}
+//#endregion
+
+//#region 鏁寸洏鐢佃姱灞炴�ц幏鍙�
+
+const subimtTrayBarcodeGet = () => {
+ let input = ({ ...form, ...TrayCellsStatus })
+ console.log(input)
+ http.post('api/CellState/GetTrayCellState', input).then(res => {
+ console.log(input)
+ })
+}
+
+const TrayCellsStatus = reactive({
+ TrayBarcode: '',
+})
+//#endregion
+
+//#region 闈欑疆\闄堝寲鍏ュ簱锛堟暣鎵樼洏锛�
+const subimtAgingInput = () => {
+ let input = ({ ...form, ...OCVinputs })
+ console.log(input)
+ http.post('api/AgingInOrOut/OCVInput', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addOCVInput = () => {
+ OCVinputs.SerialNos.push({
+ SerialNo: '', PositionNo: ''
+ })
+}
+
+const OCVinputs = reactive({
+ OpFlag: '', TrayBarcode: '',
+ SerialNos: [{
+ SerialNo: '', PositionNo: ''
+ }]
+})
+//#endregion
+
+//#region 闈欑疆\闄堝寲鍑哄簱锛堟暣鎵樼洏锛�
+const subimtAgingOutput = () => {
+ let input = ({ ...form, ...AgingOutputinputs })
+ console.log(input)
+ http.post('api/AgingInOrOut/OCVOutput', input).then(res => {
+ console.log(input)
+ })
+}
+
+const addAgingOutputinputs = () => {
+ AgingOutputinputs.SerialNos.push({
+ SerialNo: '', SlotNo: '', SerialNoResult: '',
+ ParameterInfo: [{ ParamterCode: '', ParameterDesc: '', Value: '', UpperLimit: '', LowerLomit: '', TargetValue: '', ParameterResult: '', DefectCode: '' }]
+ })
+}
+const AgingOutputinputs = reactive({
+ OpFlag: '', TrayBarcode: '',
+ SerialNos: [{
+ SerialNo: '', SlotNo: '', SerialNoResult: '',
+ ParameterInfo: [{ ParamterCode: '', ParameterDesc: '', Value: '', UpperLimit: '', LowerLomit: '', TargetValue: '', ParameterResult: '', DefectCode: '' }]
+ }]
+})
+//#endregion
+
+//#region 宸ヨ壓璺嚎鐢宠
+const subimtProcessApply = () => {
+ let input = ({ ...form, ...ProcessApplyinputs })
+ console.log(input)
+ http.post('api/ProcessApply/ProcessApply', input).then(res => {
+ console.log(input)
+ })
+}
+
+const ProcessApplyinputs = reactive({
+ WipOrderNo: '',
+ SerialNos: [{ SerialNo: '', }]
+})
+
+const addProcessApply = () => {
+ ProcessApplyinputs.SerialNos.push({ SerialNo: '' })
+}
+// #endregion
+</script>
+
+<style>
+.demo-form-inline .el-input {
+ --el-input-width: 220px;
+}
+
+.demo-form-inline .el-select {
+ --el-select-width: 220px;
+}
+
+.header {
+ margin-bottom: 10px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_AreaInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_AreaInfo.vue"
new file mode 100644
index 0000000..6bce614
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_AreaInfo.vue"
@@ -0,0 +1,92 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'areaID',
+ footer: "Foots",
+ cnName: '鍖哄煙淇℃伅',
+ name: 'basicinfo/Dt_AreaInfo',
+ url: "/Dt_AreaInfo/",
+ sortName: "AreaCode"
+ });
+ const editFormFields = ref({
+ "areaCode": "",
+ "areaName": "",
+ "areaType": "",
+ "areaStatus": "",
+ "areaDesc": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍖哄煙缂栫爜", "field": "areaCode", type: "text" },
+ { "title": "鍖哄煙鍚嶇О", "field": "areaName", type: "text" },
+ { "title": "鍖哄煙鎻忚堪", "field": "areaDesc", type: "text" },
+ ],
+ [
+ { "title": "鍖哄煙绫诲瀷", "field": "areaType", type: "text" },
+ { "title": "鍖哄煙鐘舵��", "field": "areaStatus", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍖哄煙缂栫爜", "field": "areaCode", type: "text" },
+ { "title": "鍖哄煙鍚嶇О", "field": "areaName", type: "text" },
+ { "title": "鍖哄煙鎻忚堪", "field": "areaDesc", type: "text" },
+ ],
+ [
+ { "title": "鍖哄煙绫诲瀷", "field": "areaType", type: "text" },
+ { "title": "鍖哄煙鐘舵��", "field": "areaStatus", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'areaID', title: '鍖哄煙ID', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'areaCode', title: '鍖哄煙缂栧彿', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
+ { field: 'areaName', title: '鍖哄煙鍚嶇О', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'areaType', title: '鍖哄煙绫诲瀷', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'areaStatus', title: '鍖哄煙鐘舵��', type: 'int', sort: true, width: 110, align: 'left', bind: { key: "status", data: [] } },
+ { field: 'areaDesc', title: '鍖哄煙鎻忚堪', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'spare1', title: 'Spare1', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare2', title: 'Spare2', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare3', title: 'Spare3', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare4', title: 'Spare4', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare5', title: 'Spare5', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue"
new file mode 100644
index 0000000..9dd2ac1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue"
@@ -0,0 +1,90 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_LocationInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '璐т綅淇℃伅',
+ name: 'basicinfo/DtLocationInfo',
+ url: "/LocationInfo/",
+ sortName: "id"
+ });
+ const editFormFields = ref({ "locationStatus": "" });
+ const editFormOptions = ref([
+ [
+ { "title": "璐т綅鐘舵��", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
+ { "title": "鏄惁绂佺敤", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] },
+ ]
+ ]);
+ const searchFormFields = ref({ "LocationID": "",roadWayNO:"","column":"","row":"","layer":"" });
+ const searchFormOptions = ref([
+ [
+ { "title": "璐т綅缂栧彿", "field": "locationCode", type: "text" },
+ { "title": "璐т綅鐘舵��", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
+ { "title": "宸烽亾缂栧彿", "field": "roadWayNO", type: "text" },
+ ],
+ [
+ { "title": "琛�", "field": "row", type: "int" },
+ { "title": "鍒�", "field": "column", type: "int" },
+ { "title": "灞�", "field": "layer", type: "int" },
+ ],
+ [
+ { "title": "鏄惁绂佺敤", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] },
+ { "title": "娣卞害", "field": "depth", "type": "text" },
+ // { "title": "灞�", "field": "layer", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'id', title: '璐т綅ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationCode', title: '璐т綅缂栧彿', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'locationName', title: '璐т綅鍚嶇О', type: 'string', width: 120, align: 'left' },
+ { field: 'roadwayNo', title: '宸烽亾鍙�', type: 'string', width: 110, require: true, align: 'left'},
+ { field: 'row', title: '琛�', type: 'int', width: 70, align: 'left' },
+ { field: 'column', title: '鍒�', type: 'int', width: 70, align: 'left' },
+ { field: 'layer', title: '灞�', type: 'int', width: 70, align: 'left' },
+ { field: 'depth', title: '娣卞害', type: 'string', width: 110, align: 'left' },
+ { field: 'scNo', title: '瀵瑰簲鍫嗗灈鏈哄彿', type: 'string', width: 110, align: 'left', hidden: true },
+ { field: 'locationType', title: '璐т綅绫诲瀷', type: 'int', width: 110, align: 'left',bind: { key: "LocationType", data: [] } },
+ { field: 'locationStatus', title: '璐т綅鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "LocationState", data: [] } },
+ { field: 'enalbeStatus', title: '鏄惁绂佺敤', type: 'int', width: 75, align: 'left', bind: { key: "EnalbeStatus", data: [] }},
+ // { field: 'isLocked', title: '鏄惁閿佸畾', type: 'bool', width: 110, align: 'left', bind: { key: "IsLocked", data: [] } },
+ { field: 'locationDesc', title: '璐т綅鎻忚堪', type: 'string', width: 110, align: 'left', hidden: true },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 110, align: 'left' ,bind: { key: "AllowStatus", data: [] }},
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_RoadWayInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_RoadWayInfo.vue"
new file mode 100644
index 0000000..4c448ec
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_RoadWayInfo.vue"
@@ -0,0 +1,85 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_RoadWayInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/basicinfo/Dt_RoadWayInfo.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'roadwayID',
+ footer: "Foots",
+ cnName: '宸烽亾淇℃伅',
+ name: 'basicinfo/Dt_RoadWayInfo',
+ url: "/Dt_RoadWayInfo/",
+ sortName: "RoadwayID"
+ });
+ const editFormFields = ref({
+ "roadWayNO":"",
+ "wareAreaID":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "宸烽亾鍙�", "field": "roadWayNO", type: "text" },
+ { "title": "搴撳尯鍚嶇О", "field": "wareAreaName", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "宸烽亾鍙�", "field": "roadWayNO", type: "text" },
+ { "title": "搴撳尯鍚嶇О", "field": "wareAreaName", type: "text" },
+ ]
+ ]);
+ const columns = ref([{field:'roadwayID',title:'宸烽亾ID',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'roadWayNO',title:'宸烽亾鍙�',type:'string',width:110,align:'left',sort:true},
+ {field:'wareAreaName',title:'搴撳尯鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'wareAreaID',title:'搴撳尯ID',type:'int',width:110,hidden:true,align:'left'},
+ {field:'isEnable',title:'鏄惁鍚敤',type:'bool',width:110,align:'left'},
+ {field:'remark',title:'澶囨敞',type:'string',width:120,align:'left'},
+ {field:'createID',title:'鍒涘缓ID',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ {field:'spare1',title:'Spare1',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare2',title:'Spare2',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare3',title:'Spare3',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare4',title:'Spare4',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare5',title:'Spare5',type:'string',sort:true,width:110,hidden:true,align:'left'}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue"
new file mode 100644
index 0000000..7b34e94
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue"
@@ -0,0 +1,109 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_LocationInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_SelectionStandards.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '閫夐厤鏍囧噯',
+ name: 'basicinfo/Dt_SelectionStandards',
+ url: "/Dt_SelectionStandards/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ "carType": "",
+ "mttype": "",
+ "neworold": "",
+ "gkdj": "",
+ "lowerValue": "",
+ "upperValue": "",
+ "isCantainGK": "",
+ "lowerValue_gk": "",
+ "upperValue_gk": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "閫傜敤杞﹀瀷", "field": "carType", "type": "textarea" },
+ ],
+ [
+ { "title": "鍔ㄦ嫋灞炴��", "field": "mttype", "type": "text" },
+ { "title": "鏂版棫灞炴��", "field": "neworold", "type": "select", dataKey: "NewOld", data: [] },
+ { "title": "姣傚瓟绛夌骇", "field": "gkdj", "type": "select", dataKey: "Level", data: [] },
+ ],
+ [
+
+ { "title": "杩囩泩閲忎笅闄�", "field": "lowerValue", "type": "decimal" },
+ { "title": "杩囩泩閲忎笂闄�", "field": "upperValue", "type": "decimal" }
+ ],
+ [
+ { "title": "鎴潰鏄惁鍙備笌閫夐厤", "field": "isCantainGK", "type": "select", dataKey: "Cantain", data: [] },
+ ],
+ [
+ { "title": "鎴潰杩囩泩閲忎笅闄�", "field": "lowerValue_gk", "type": "decimal" },
+ { "title": "鎴潰杩囩泩閲忎笂闄�", "field": "upperValue_gk", "type": "decimal" }
+ ]
+ ]);
+ const searchFormFields = ref({
+ "carType":"",
+ mttype:""
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "閫傜敤杞﹀瀷", "field": "carType", type: "like" },
+ //{ "title": "璐т綅鐘舵��", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
+ { "title": "鍔ㄦ嫋灞炴��", "field": "mttype", type: "text" },
+ ],
+ [
+ //{ "title": "鏄惁绂佺敤", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] }
+ // { "title": "鍒�", "field": "column", "type": "text" },
+ // { "title": "灞�", "field": "layer", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'id', title: 'ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'carType', title: '閫傜敤杞﹀瀷', type: 'string', width: 200, require: true, align: 'left' },
+ { field: 'mttype', title: '鍔ㄦ嫋灞炴��', type: 'string', width: 90, align: 'left' },
+ { field: 'neworold', title: '鏂版棫灞炴��', type: 'string', width: 90, require: true, align: 'left',bind: { key: "NewOld", data: []} },
+ { field: 'gkdj', title: '姣傚瓟绛夌骇', type: 'string', width: 90, align: 'left',bind: { key: "Level", data: []} },
+ { field: 'lowerValue', title: '杩囩泩閲忎笅闄�', type: 'decimal', width: 90, align: 'left' },
+ { field: 'upperValue', title: '杩囩泩閲忎笂闄�', type: 'decimal', width: 90, align: 'left' },
+ { field: 'isCantainGK', title: '鎴潰鏄惁鍙備笌閫夐厤', type: 'bool', width: 120, align: 'left', bind: { key: "Cantain", data: []} },
+ { field: 'lowerValue_gk', title: '鎴潰杩囩泩閲忎笅闄�', type: 'decimal', width: 110, align: 'left' },
+ { field: 'upperValue_gk', title: '鎴潰杩囩泩閲忎笂闄�', type: 'decimal', width: 110, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', width: 90, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 90, align: 'left', sort: true },
+ //{ field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 90, align: 'left' },
+ //{ field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 90, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_StationManager.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_StationManager.vue"
new file mode 100644
index 0000000..7c2827a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_StationManager.vue"
@@ -0,0 +1,84 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_StationManager.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'areaID',
+ footer: "Foots",
+ cnName: '绔欏彴淇℃伅',
+ name: 'basicinfo/Dt_StationManager',
+ url: "/Dt_StationManager/",
+ sortName: "AreaCode"
+ });
+ const editFormFields = ref({
+
+ });
+ const editFormOptions = ref([
+
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "绔欏彴绫诲瀷", "field": "stationType", type: "text" },
+ { "title": "鎵�灞濸LC", "field": "stationPLC", type: "text" },
+ { "title": "宸烽亾鍙�", "field": "roadway", type: "text" },
+
+ ],
+ [
+ { "title": "璁惧鍖哄煙", "field": "stationArea", type: "text" },
+ { "title": "NG瀛愯澶囩紪鍙�", "field": "stationNGChildCode", type: "text" },
+
+ ],
+ [
+ { "title": "NG瀛愯澶囧潗鏍�", "field": "remark", type: "text" },
+ { "title": "绾夸綋缂栧彿", "field": "stationChildCode", type: "text" }
+
+ ]
+ ]);
+ const columns = ref([{ field: 'stationID', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'stationType', title: '绔欏彴绫诲瀷', type: 'int', sort: true, width: 110, require: true, align: 'left', sort: true },
+ { field: 'stationPLC', title: '鎵�灞濸LC', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'roadway', title: '宸烽亾鍙�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'stationChildCode', title: '绾夸綋缂栧彿(瀛愯澶囩紪鍙�)', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'stationArea', title: '璁惧鍖哄煙', type: 'int', sort: true, width: 100, align: 'left' },
+ { field: 'stationNGChildCode', title: 'NG瀛愯澶囩紪鍙�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'remark', title: 'NG瀛愯澶囧潗鏍�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'stationRemark', title: '澶囨敞', type: 'int', sort: true, width: 110, align: 'left', },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Strategy.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Strategy.vue"
new file mode 100644
index 0000000..0b7aecc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Strategy.vue"
@@ -0,0 +1,86 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_Strategy.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/basicinfo/Dt_Strategy.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'strategyId',
+ footer: "Foots",
+ cnName: '绛栫暐淇℃伅',
+ name: 'basicinfo/Dt_Strategy',
+ url: "/Dt_Strategy/",
+ sortName: "StrategyId"
+ });
+ const editFormFields = ref({
+ "strategyType":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "绛栫暐绫诲瀷", "field": "strategyType", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "绛栫暐绫诲瀷", "field": "strategyType", type: "text" },
+ ]
+ ]);
+ const columns = ref([{field:'strategyId',title:'StrategyId',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'strategyCode',title:'绛栫暐缂栧彿',type:'string',width:110,align:'left',sort:true},
+ {field:'strategyName',title:'绛栫暐鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'strategyType',title:'绛栫暐绫诲瀷',type:'string',width:110,align:'left'},
+ {field:'filedSource',title:'瀛楁鏉ユ簮',type:'string',width:110,align:'left'},
+ {field:'fieldName',title:'瑙勫垯瀛楁',type:'string',width:110,align:'left'},
+ {field:'executionOrder',title:'瑙勫垯鎵ц椤哄簭',type:'int',width:110,align:'left'},
+ {field:'sordOrder',title:'鎺掑簭鏂瑰紡',type:'string',width:110,align:'left'},
+ {field:'isPreset',title:'鏄惁棰勮',type:'bool',width:110,align:'left'},
+ {field:'remark',title:'澶囨敞',type:'string',width:120,align:'left'},
+ {field:'createID',title:'鍒涘缓ID',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ {field:'spare1',title:'Spare1',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare2',title:'Spare2',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare3',title:'Spare3',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare4',title:'Spare4',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare5',title:'Spare5',type:'string',sort:true,width:110,hidden:true,align:'left'}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Traintype.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Traintype.vue"
new file mode 100644
index 0000000..4afb5ed
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Traintype.vue"
@@ -0,0 +1,71 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_Traintype.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Id',
+ footer: "Foots",
+ cnName: '杞﹀瀷绠$悊',
+ name: 'basicinfo/Dt_Traintype',
+ url: "/Dt_Traintype/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ "traintype_code": "",
+ "traintype_name": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "杞﹀瀷浠g爜", "field": "traintype_code", type: "text" },
+ { "title": "杞﹀瀷鍚嶇О", "field": "traintype_name", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹀瀷浠g爜", "field": "traintype_code", type: "text" },
+ { "title": "杞﹀瀷鍚嶇О", "field": "traintype_name", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'ID', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'traintype_code', title: '杞﹀瀷浠g爜', type: 'string', sort: true, width: 90, align: 'left',},
+ { field: 'traintype_name', title: '杞﹀瀷鍚嶇О', type: 'int', sort: true, width: 90, align: 'left' },
+ { field: 'traintype_des', title: '鎻忚堪', type: 'int', sort: true, width: 200, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 45, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 70, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 45, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 70, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_UnitInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_UnitInfo.vue"
new file mode 100644
index 0000000..603def5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_UnitInfo.vue"
@@ -0,0 +1,84 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_UnitInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/basicinfo/Dt_UnitInfo.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'unitID',
+ footer: "Foots",
+ cnName: '鍗曚綅淇℃伅',
+ name: 'basicinfo/Dt_UnitInfo',
+ url: "/Dt_UnitInfo/",
+ sortName: "UnitID"
+ });
+ const editFormFields = ref({"unitCode":"","unitName":""});
+ const editFormOptions = ref([
+ [
+ {"title":"鍗曚綅浠g爜","required":true,"field":"unitCode","type":"text"},
+ {"title":"鍗曚綅鍚嶇О","required":true,"field":"unitName","type":"text"},
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+
+ { "title": "鍗曚綅鍚嶇О", "field": "unitName", "type": "like" },
+ ]
+ ]);
+ const columns = ref([{field:'unitID',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'unitCode',title:'鍗曚綅缂栧彿',type:'string',width:110,align:'left',sort:true},
+ {field:'unitName',title:'鍗曚綅鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'packUnit',title:'鍖呰鍗曚綅',type:'string',width:110,align:'left'},
+ {field:'packUnitNum',title:'鍖呰鍗曚綅閲�',type:'decimal',width:110,align:'left'},
+ {field:'minUnitNum',title:'鏈�灏忓崟浣嶉噺',type:'decimal',width:110,align:'left'},
+ {field:'unitDesc',title:'鎻忚堪',type:'string',width:110,align:'left'},
+ {field:'remark',title:'澶囨敞',type:'string',width:110,hidden:true,align:'left'},
+ {field:'createID',title:'鍒涘缓ID',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ {field:'spare1',title:'Spare1',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare2',title:'Spare2',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare3',title:'Spare3',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare4',title:'Spare4',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare5',title:'Spare5',type:'string',sort:true,width:110,hidden:true,align:'left'}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_WareAreaInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_WareAreaInfo.vue"
new file mode 100644
index 0000000..47e2b83
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_WareAreaInfo.vue"
@@ -0,0 +1,86 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_WareAreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_WareAreaInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'wareAreaID',
+ footer: "Foots",
+ cnName: '搴撳尯淇℃伅',
+ name: 'basicinfo/Dt_WareAreaInfo',
+ url: "/Dt_WareAreaInfo/",
+ sortName: "WareAreaID"
+ });
+ const editFormFields = ref({
+ "wareAreaName": "",
+ "areaID": "",
+ "wareAreaType": "",
+ "wareAreaCode": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "搴撳尯鍚嶇О", "field": "wareAreaName", type: "text" },
+ { "title": "搴撳尯浠g爜", "field": "wareAreaCode", type: "text" },
+ { "title": "搴撳尯缂栧彿", "field": "wareAreaCode", type: "text" },
+ { "title": "搴撳尯绫诲瀷", "field": "wareAreaType", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "搴撳尯鍚嶇О", "field": "wareAreaName", type: "text" },
+ { "title": "搴撳尯浠g爜", "field": "wareAreaCode", type: "text" },
+ { "title": "搴撳尯缂栧彿", "field": "wareAreaCode", type: "text" },
+ { "title": "搴撳尯绫诲瀷", "field": "wareAreaType", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'wareAreaID', title: '涓婚敭', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'areaID', title: '搴撳尯ID', type: 'int', width: 110, hidden: true, align: 'left', sort: true, hidden: true },
+ { field: 'wareAreaCode', title: '搴撳尯缂栧彿', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'wareAreaName', title: '搴撳尯鍚嶇О', type: 'string', width: 110, align: 'left' },
+ { field: 'wareAreaType', title: '搴撳尯绫诲瀷', type: 'string', width: 110, align: 'left' },
+ { field: 'status', title: '搴撳尯鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "status", data: [] } },
+ { field: 'wareAreaDesc', title: '搴撳尯鎻忚堪', type: 'string', width: 110, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'spare1', title: 'Spare1', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare2', title: 'Spare2', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare3', title: 'Spare3', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare4', title: 'Spare4', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare5', title: 'Spare5', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_needBarcode.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_needBarcode.vue"
new file mode 100644
index 0000000..24b6e62
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_needBarcode.vue"
@@ -0,0 +1,90 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_needBarcode.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'areaID',
+ footer: "Foots",
+ cnName: '鍦ㄩ�旀暟鎹�',
+ name: 'basicinfo/dt_needBarcode',
+ url: "/dt_needBarcode/",
+ sortName: "AreaCode"
+ });
+ const editFormFields = ref({
+ // "toArea": "",
+ // "fromArea": "",
+ // "barcodeType": "",
+ "productLine": "",
+ "inLineNum": "",
+ "cacheNum":""
+ });
+ const editFormOptions = ref([
+ // [
+ // { "title": "鐩爣搴撳尯", "field": "toArea", type: "text" },
+ // { "title": "鏉ユ簮搴撳尯", "field": "fromArea", type: "text" },
+ // { "title": "鎵樼洏绫诲瀷", "field": "barcodeType", type: "text" },
+ // ],
+ [
+ { "title": "鎵�灞炰骇绾�", "field": "productLine", type: "text" },
+ { "title": "鍦ㄩ�旀暟閲�", "field": "inLineNum", type: "text" },
+ { "title": "鍙紦瀛樻暟閲�", "field": "cacheNum", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ // [
+ // { "title": "鐩爣搴撳尯", "field": "toArea", type: "text" },
+ // { "title": "鏉ユ簮搴撳尯", "field": "fromArea", type: "text" },
+ // { "title": "鎵樼洏绫诲瀷", "field": "barcodeType", type: "text" },
+ // ],
+ [
+ { "title": "鎵�灞炰骇绾�", "field": "productLine", type: "text" },
+ { "title": "鍦ㄩ�旀暟閲�", "field": "inLineNum", type: "text" },
+ { "title": "鍙紦瀛樻暟閲�", "field": "cacheNum", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'ID', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ //{ field: 'toArea', title: '鐩爣搴撳尯', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
+ //{ field: 'fromArea', title: '鏉ユ簮搴撳尯', type: 'string', sort: true, width: 110, align: 'left' },
+ //{ field: 'barcodeType', title: '鎵樼洏绫诲瀷', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'productLine', title: '鎵�灞炰骇绾�', type: 'string', sort: true, width: 110, align: 'left',},
+ { field: 'inLineNum', title: '鍦ㄩ�旀暟閲�', type: 'int', sort: true, width: 110, align: 'left' },
+ { field: 'cacheNum', title: '鍙紦瀛樻暟閲�', type: 'int', sort: true, width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/LocationStatusChange.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/LocationStatusChange.vue"
new file mode 100644
index 0000000..7325de3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/LocationStatusChange.vue"
@@ -0,0 +1,71 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/Dt_LocationInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/LocationStatusChange.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'locationID',
+ footer: "Foots",
+ cnName: '璐т綅鐘舵�佸彉鍔ㄨ褰�',
+ name: 'LocationStatusChange',
+ url: "/LocationStatusChangeRecord/",
+ sortName: "LocationID"
+ });
+ const editFormFields = ref({});
+ const editFormOptions = ref([]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "璐т綅缂栧彿", "field": "locationCode", type: "text" },
+ { "title": "鍙樺姩鍓嶈揣浣嶇姸鎬�", "field": "BeforeStatus", "type": "select", dataKey: "LocationState", data: [] },
+ { "title": "鍙樺姩鍚庤揣浣嶇姸鎬�", "field": "AfterStatus", "type": "select", dataKey: "LocationState", data: [] },
+ { "title": "鍙樺姩绫诲瀷", "field": "changeType", type: "select", dataKey: "StatusChangeType", data: [] },
+ ]
+ ]);
+ const columns = ref([{ field: 'Id', title: '涓婚敭', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationId', title: '璐т綅ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationCode', title: '璐т綅缂栧彿', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'beforeStatus', title: '鍙樺姩鍓嶈揣浣嶇姸鎬�', type: 'int', width: 120, align: 'left', bind: { key: "LocationState", data: [] } },
+ { field: 'afterStatus', title: '鍙樺姩鍚庤揣浣嶇姸鎬�', type: 'int', width: 110, require: true, align: 'left', sort: true, bind: { key: "LocationState", data: [] } },
+ { field: 'changeType', title: '鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�', type: 'string', width: 70, align: 'left', bind: { key: "StatusChangeType", data: [] } },
+ { field: 'orderId', title: '鍗曟嵁涓婚敭', type: 'string', width: 70, align: 'left' },
+ { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 110, align: 'left' },
+ { field: 'orderDetailId', title: '鍗曟嵁鏄庣粏涓婚敭', type: 'string', width: 110, align: 'left' },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'int', width: 110, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/PointStackerRelation.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/PointStackerRelation.vue"
new file mode 100644
index 0000000..58d4eea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/PointStackerRelation.vue"
@@ -0,0 +1,81 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/PointStackerRelation.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/PointStackerRelation.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'PointID',
+ footer: "Foots",
+ cnName: '鍒嗛厤鍖哄煙鍏崇郴',
+ name: 'PointStackerRelation',
+ url: "/PointStackerRelation/",
+ sortName: "PointID"
+ });
+ const editFormFields = ref({
+ "pointCode": "",
+ "stackerCode": "",
+ "direction": "",
+ "area": "",
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "绔欏彴缂栧彿", "field": "pointCode", type: "text" },
+ { "title": "鍫嗗灈鏈虹紪鍙�", "field": "stackerCode", type: "text" },
+ ],
+ [
+ { "title": "鍏崇郴鐨勬柟鍚�", "field": "direction", type: "text" },
+ { "title": "鍏崇郴鐨勫尯鍩�", "field": "area", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "绔欏彴缂栧彿", "field": "pointCode", type: "text" },
+ { "title": "鍫嗗灈鏈虹紪鍙�", "field": "stackerCode", type: "text" },
+ ],
+ [
+ { "title": "鍏崇郴鐨勬柟鍚�", "field": "direction", type: "text" },
+ { "title": "鍏崇郴鐨勫尯鍩�", "field": "area", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'PointID', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'pointCode', title: '绔欏彴缂栧彿', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
+ { field: 'stackerCode', title: '鍫嗗灈鏈虹紪鍙�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'direction', title: '鍏崇郴鐨勬柟鍚�(P 鎴� S)', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'area', title: '鍏崇郴鐨勫尯鍩�', type: 'int', sort: true, width: 110, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },])
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue"
new file mode 100644
index 0000000..0e1017c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue"
@@ -0,0 +1,84 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/check/Dt_CheckResult.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '娴嬮噺鏁版嵁',
+ name: 'check/Dt_CheckResult',
+ url: "/Dt_CheckResult/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ });
+ const editFormOptions = ref([
+ ]);
+ const searchFormFields = ref({
+ cltm: ""
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鏉$爜", "field": "cltm", type: "text" },
+ ]
+ ]);
+ const columns = ref([
+ { field: 'id', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'equipNo', title: '璁惧缂栧彿', type: 'string', width: 110, align: 'left', hidden: true },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ { field: 'cltm', title: '杞﹁疆鏉$爜', type: 'string', width: 150, align: 'left' },
+ { field: 'checkType', title: '绫诲瀷(杞�/鐩�)', type: 'string', width: 80, align: 'left' },
+ { field: 'gkzjI1', title: '姣傚瓟A1', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjI2', title: '姣傚瓟A2', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjI3', title: '姣傚瓟A3', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjIAvg', title: '姣傚瓟A骞冲潎鍊�', type: 'string', width: 90, align: 'left' },
+ { field: 'gkzjII1', title: '姣傚瓟B1', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjII2', title: '姣傚瓟B2', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjII3', title: '姣傚瓟B3', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjIIAvg', title: '姣傚瓟B骞冲潎鍊�', type: 'string', width: 90, align: 'left' },
+ { field: 'gkzjIII1', title: '姣傚瓟C1', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjIII2', title: '姣傚瓟C2', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjIII3', title: '姣傚瓟C3', type: 'string', width: 75, align: 'left' },
+ { field: 'gkzjIIIAvg', title: '姣傚瓟C骞冲潎鍊�', type: 'string', width: 90, align: 'left' },
+ { field: 'gkzjAVG', title: '姣傚瓟骞冲潎鍊�', type: 'string', width: 80, align: 'left' },
+ { field: 'result', title: '鏄惁鍚堟牸', type: 'string', width: 70, align: 'left', bind: { key: "IsQuan", data: [] } },
+ { field: 'inDate', title: '娴嬮噺鏃堕棿', type: 'dateTime', width: 100, align: 'left' },
+ { field: 'isUploadMES', title: '鏄惁宸蹭笂浼犳櫤绮�', type: 'string', width: 110, align: 'left', bind: { key: "Cantain", data: [] } },
+ //{ field: 'creater', title: '鍒涘缓浜�', type: 'string', width: 75, align: 'left' },
+ //{ field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue"
new file mode 100644
index 0000000..669c35e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue"
@@ -0,0 +1,95 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/inbound/Dt_CZInfo_mes.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '杞﹁酱淇℃伅',
+ name: 'inbound/Dt_CZInfo_mes',
+ url: "/Dt_CZInfo_mes/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ "Wheels_code": "",
+ "Wheels_ldxh": "",
+ "Wheels_mttype": "",
+ "gkcc": "",
+ wheels_NewOrOld:""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "杞﹁酱鏉$爜", "field": "CZTM", type: "text" },
+ { "title": "杞﹀瀷", "field": "CHEXING", type: "text" },
+ { "title": "鍔ㄦ嫋灞炴��(M/T)", "field": "MTTYPE", type: "text" },
+ ],
+ [
+ { "title": "杞﹁酱鍙�", "field": "czh", type: "text" },
+ { "title": "杞鏉$爜", "field": "LDTM", "type": "select",dataKey:"NewOld",data:[] },
+ ]
+ ]);
+ const searchFormFields = ref({
+ CZTM: ""
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鍙�", "field": "CZTM", type: "text" },
+ ],
+ ]);
+ const columns = ref([
+ { field: 'id', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'cztm', title: '杞﹁酱鏉$爜', type: 'string', width: 110, align: 'left' },
+ { field: 'czh', title: '杞﹁酱鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'ldtm', title: '杞鏉$爜', type: 'string', width: 110, align: 'left' },
+ { field: 'currentStatue', title: '鐘舵��', type: 'string', width: 75, align: 'left',bind: { key: "InboundState", data: [] } },
+ { field: 'chexing', title: '杞﹀瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'czxh', title: '杞﹁酱鍨嬪彿', type: 'int', width: 110, align: 'left' },
+ { field: 'mttype', title: '鍔�/鎷�', type: 'string', width: 60, align: 'left' },
+ { field: 'zlzdj', title: '宸﹁疆搴х瓑绾�', type: 'string', width: 100, align: 'left' },
+ { field: 'ylzdj', title: '鍙宠疆搴х瓑绾�', type: 'string', width: 100, align: 'left' },
+ { field: 'zlzzj', title: '宸﹁疆搴х洿寰�', type: 'string', width: 100, align: 'left' },
+ { field: 'ylzzj', title: '鍙宠疆搴х洿寰�', type: 'string', width: 100, align: 'left' },
+ { field: 'zlza', title: '宸﹁疆搴х洿寰凙', type: 'string', width: 100, align: 'left' },
+ { field: 'zlzb', title: '宸﹁疆搴х洿寰凚', type: 'string', width: 100, align: 'left' },
+ { field: 'zlzc', title: '宸﹁疆搴х洿寰凜', type: 'string', width: 100, align: 'left' },
+ { field: 'ylza', title: '鍙宠疆搴х洿寰凙', type: 'string', width: 100, align: 'left' },
+ { field: 'ylzb', title: '鍙宠疆搴х洿寰凚', type: 'string', width: 100, align: 'left' },
+ { field: 'ylzc', title: '鍙宠疆搴х洿寰凜', type: 'string', width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鏃堕棿', type: 'string', width: 100, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes.vue"
new file mode 100644
index 0000000..03d0832
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes.vue"
@@ -0,0 +1,107 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/inbound/Dt_InWheels_mes.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'wheels_ID',
+ footer: "Foots",
+ cnName: '杞﹁疆淇℃伅',
+ name: 'inbound/Dt_InWheels_mes',
+ url: "/Dt_InWheels_mes/",
+ sortName: "wheels_ID"
+ });
+ const editFormFields = ref({
+ "Wheels_code": "",
+ "Wheels_ldxh": "",
+ "Wheels_mttype": "",
+ "gkcc": "",
+ wheels_NewOrOld:""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "杞﹁疆鏉$爜", "field": "Wheels_code", type: "text" },
+ { "title": "杞﹀瀷", "field": "Wheels_ldxh", type: "text" },
+ { "title": "鍔ㄦ嫋灞炴��(M/T)", "field": "Wheels_mttype", type: "text" },
+ ],
+ [
+ { "title": "姣傚瓟鍧囧��", "field": "gkcc", type: "text" },
+ { "title": "鏂�/鏃�", "field": "wheels_NewOrOld", "type": "select",dataKey:"NewOld",data:[] },
+ { "title": "绛夌骇", "field": "wheels_level", "type": "select",dataKey:"Level",data:[] }
+ ]
+ ]);
+ const searchFormFields = ref({
+ Wheels_Num: ""
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鍙�", "field": "Wheels_Num", type: "text" },
+ ],
+ // [
+ // { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+
+ // ]
+ ]);
+ const columns = ref([
+ { field: 'wheels_ID', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'wheels_code', title: '杞﹁疆鐮�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ { field: 'wheels_Num', title: '杞﹁疆鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_Type', title: '绫诲瀷(杞�/鐩�)', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_ldxh', title: '杞瀷', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_CurrentStatue', title: '鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "InboundState", data: [] } },
+ { field: 'wheels_ldtm', title: '杞鏉$爜', type: 'string', width: 120, align: 'left' },
+ { field: 'wheels_CarType', title: '杞﹀瀷', type: 'string', width: 70, align: 'left' },
+ { field: 'wheels_psj', title: '閰嶅睘灞�', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_CarNo', title: '杞︾粍', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ldh', title: '杞鍙�', type: 'string', sort: true, width: 100, align: 'left' },
+ //{ field: 'wheels_WheelsType', title: '杞瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_mttype', title: '鍔ㄦ嫋灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_NewOrOld', title: '鏂版棫绫诲瀷', type: 'string', width: 100, align: 'left',bind: { key: "NewOld", data: []} },
+ { field: 'wheelsProps', title: '灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_level', title: '绛夌骇', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzja', title: '姣傚瓟a鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjb', title: '姣傚瓟b鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjc', title: '姣傚瓟c鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkcc', title: '姣傚瓟鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ljz', title: '杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ygljz', title: '棰勪及杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_LYH', title: '杞紭', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_InDate', title: '鍏ュ簱鏃ユ湡', type: 'string', width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鏃堕棿', type: 'string', width: 100, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes_hty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes_hty.vue"
new file mode 100644
index 0000000..a2971a6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_InWheels_mes_hty.vue"
@@ -0,0 +1,92 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/inbound/Dt_InWheels_mes_hty.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'Wheels_ID',
+ footer: "Foots",
+ cnName: '杞﹁疆鍘嗗彶',
+ name: 'inbound/Dt_InWheels_mes_hty',
+ url: "/Dt_InWheels_mes_hty/",
+ sortName: "Wheels_ID"
+ });
+ const editFormFields = ref({
+
+ });
+ const editFormOptions = ref([
+
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鍙�", "field": "Wheels_Num", type: "text" },
+ ],
+ // [
+ // { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+
+ // ]
+ ]);
+ const columns = ref([
+ { field: 'wheels_ID', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'wheels_code', title: '杞﹁疆鐮�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ { field: 'wheels_Num', title: '杞﹁疆鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_Type', title: '绫诲瀷(杞�/鐩�)', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_ldxh', title: '杞瀷', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_CurrentStatue', title: '鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "InboundState", data: [] } },
+ { field: 'wheels_ldtm', title: '杞鏉$爜', type: 'string', width: 120, align: 'left' },
+ { field: 'wheels_CarType', title: '杞﹀瀷', type: 'string', width: 70, align: 'left' },
+ { field: 'wheels_psj', title: '閰嶅睘灞�', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_CarNo', title: '杞︾粍', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ldh', title: '杞鍙�', type: 'string', sort: true, width: 100, align: 'left' },
+ //{ field: 'wheels_WheelsType', title: '杞瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_mttype', title: '鍔ㄦ嫋灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_NewOrOld', title: '鏂版棫绫诲瀷', type: 'string', width: 100, align: 'left',bind: { key: "NewOld", data: []} },
+ { field: 'wheelsProps', title: '灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_level', title: '绛夌骇', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzja', title: '姣傚瓟a鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjb', title: '姣傚瓟b鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjc', title: '姣傚瓟c鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkcc', title: '姣傚瓟鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ljz', title: '杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ygljz', title: '棰勪及杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_InDate', title: '鍏ュ簱鏃ユ湡', type: 'string', width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鏃堕棿', type: 'string', width: 100, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ { field: 'finishDate', title: '瀹屾垚鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ { field: 'operateType', title: '瀹屾垚鏂瑰紡', type: 'int', width: 100, align: 'left',bind: { key: "OperateType", data: [] } },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrder.vue"
new file mode 100644
index 0000000..f71b29a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrder.vue"
@@ -0,0 +1,113 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/invoices/Dt_InboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'orderId',
+ footer: "Foots",
+ cnName: '鍗曟嵁淇℃伅',
+ name: 'invoices/Dt_InboundOrder',
+ url: "/Dt_InboundOrder/",
+ sortName: "orderId"
+ });
+ const editFormFields = ref({
+ "inboundNo": "",
+ "inboundUpperNo": "",
+ "inboundState": "",
+ "batchNo": "",
+ "inboundDate": "",
+ "inboundType": "",
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "inboundNo", type: "text" },
+ { "title": "涓婃父鍗曟嵁缂栧彿", "field": "inboundUpperNo", type: "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "inboundState", type: "select",dataKey:"InboundState",data:[] },
+ { "title": "涓婃父鍗曟嵁绫诲瀷", "field": "inboundType", type: "select",dataKey:"InOrderType",data:[] },
+
+ ], [
+ { "title": "鎵规鍙�", "field": "batchNo", type: "text" },
+ { "title": "鍗曟嵁鏃ユ湡", "field": "inboundDate", type: "datetime" },
+
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "inboundNo", type: "text" },
+ { "title": "涓婃父鍗曟嵁缂栧彿", "field": "inboundUpperNo", type: "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "inboundState", type: "select", dataKey: "InboundState", data: [] },
+ ]
+ ]);
+ const columns = ref([{ field: 'orderId', title: '鍏ュ簱鍗旾D', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'inboundNo', title: '鍗曟嵁缂栧彿', link: true, type: 'string', width: 110, align: 'left', sort: true },
+ { field: 'batchNo', title: '鎵规鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'inboundDate', title: '鍗曟嵁鏃ユ湡', type: 'datetime', width: 150, align: 'left', sort: true },
+ { field: 'inboundState', title: '鍗曟嵁鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "InboundState", data: [] } },
+ { field: 'inboundUpperNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 110, align: 'left' },
+ { field: 'inboundType', title: '涓婃父鍗曟嵁绫诲瀷', type: 'int', width: 110, align: 'left', bind: { key: "InOrderType", data: [] } },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 120, hidden: true, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'spare1', title: 'Spare1', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare2', title: 'Spare2', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare3', title: 'Spare3', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare4', title: 'Spare4', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare5', title: 'Spare5', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }]);
+
+ const detail = ref({
+ cnName: "鍗曟嵁鏄庣粏淇℃伅",
+ table: "Dt_InboundOrderDetail",
+ columns: [
+ { field: 'orderDetailId', title: '鍏ュ簱鍗曟槑缁咺D', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'orderId', title: '鍏ュ簱鍗旾D', type: 'int', width: 110, hidden: true, align: 'left', sort: true, edit: { type: "" } },
+ { field: 'inboundNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'batchNo', title: '鎵规鍙�', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'inboundType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 110, align: 'left', bind: { key: "InOrderType", data: [] }, edit: { type: "select" } },
+ { field: 'inboundState', title: '鍗曟嵁鏄庣粏鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "InboundState", data: [] }, edit: { type: "select" } },
+ { field: 'materialNo', title: '鐗╂枡缂栧彿', type: 'string', width: 110, align: 'left', edit: { type: "number" } },
+ { field: 'materialName', title: '鐗╂枡鍚嶇О', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'preInboundQuantity', title: '棰勮鍏ュ簱鏁伴噺', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'actualInboundQuantity', title: '瀹為檯鍏ュ簱鏁伴噺', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'unit', title: '鍏ュ簱鍗曚綅', type: 'string', width: 110, align: 'left', edit: { type: "" } },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 120, align: 'left', edit: { type: "" } },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },
+ ],
+ sortName: "orderId",
+ key: "orderDetailId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue"
new file mode 100644
index 0000000..efa310c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue"
@@ -0,0 +1,94 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrderDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_InboundOrderDetail.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'orderDetailId',
+ footer: "Foots",
+ cnName: '鍏ュ簱鍗曟槑缁�',
+ name: 'invoices/Dt_InboundOrderDetail',
+ url: "/Dt_InboundOrderDetail/",
+ sortName: "OrderId"
+ });
+ const editFormFields = ref({
+ "inboundNo":"",
+ "materialNo":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "inboundNo", type: "text" },
+ { "title": "鐗╂枡缂栧彿", "field": "materialNo", type: "text" },
+ { "title": "鍗曟嵁绫诲瀷", "field": "inboundType", type: "select" ,dataKey:"InOrderType",data:[]},
+ { "title": "鍗曟嵁鏄庣粏鐘舵��", "field": "inboundState", type: "select",dataKey:"InboundState",data:[]},
+ ]
+ ]);
+ const searchFormFields = ref({
+ "inboundNo":"",
+ "materialNo":""
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "InboundNo", type: "text" },
+ {"title" : "鐗╂枡缂栧彿", "field": "MaterialNo","type":"text"},
+ { "title": "鍗曟嵁绫诲瀷", "field": "inboundType", type: "select" ,dataKey:"InOrderType",data:[]},
+ { "title": "鍗曟嵁鏄庣粏鐘舵��", "field": "inboundState", type: "select",dataKey:"InboundState",data:[]},
+ ]
+ ]);
+ const columns = ref([{field:'orderDetailId',title:'鍏ュ簱鍗曟槑缁咺D',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'orderId',title:'鍏ュ簱鍗旾D',type:'int',width:110,hidden:true,align:'left',sort:true},
+ {field:'inboundNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,align:'left'},
+ {field:'batchNo',title:'鎵规鍙�',type:'string',width:110,align:'left'},
+ {field:'inboundType',title:'鍗曟嵁绫诲瀷',type:'int',width:110,align:'left', bind: { key: "InOrderType", data: [] },},
+ {field:'inboundState',title:'鍗曟嵁鏄庣粏鐘舵��',type:'int',width:110,align:'left', bind: { key: "InboundState", data: [] },},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'preInboundQuantity',title:'棰勮鍏ュ簱鏁伴噺',type:'string',width:110,align:'left'},
+ {field:'actualInboundQuantity',title:'瀹為檯鍏ュ簱鏁伴噺',type:'string',width:110,align:'left'},
+ {field:'unit',title:'鍏ュ簱鍗曚綅',type:'string',width:110,align:'left'},
+ {field:'remark',title:'澶囨敞',type:'string',width:120,align:'left'},
+ {field:'createID',title:'鍒涘缓ID',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ ]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrder.vue"
new file mode 100644
index 0000000..a306d1c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrder.vue"
@@ -0,0 +1,116 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrder.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鍑哄簱璁㈠崟',
+ name: 'invoices/Dt_OutOrder',
+ url: "/Dt_OutOrder/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "orderNumber":"",
+ "status":"",
+ "orderDate":"",
+ "warehouseId":"",
+ "upperOutOrderId":"",
+ "remarks":"",
+
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍑哄簱鍗曞彿", "field": "orderNumber", "type": "text" },
+ { "title": "鍑哄簱鏃ユ湡", "field": "orderDate", "type": "datetime" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "select",dataKey:"OutOrderType",data:[] },
+ ],
+ [
+ { "title": "浠撳簱ID", "field": "warehouseId", "type": "text" },
+ { "title": "涓婃湁绯荤粺鍗曟嵁ID", "field": "upperOutOrderId", "type": "text" },
+ { "title": "澶囨敞", "field": "remarks", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍑哄簱鍗曞彿", "field": "orderNumber", "type": "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "text" },
+ { "title": "浠撳簱ID", "field": "warehouseId", "type": "text" },
+ { "title": "鍑哄簱鏃ユ湡", "field": "orderDate", "type": "datetime" },
+ ],
+ ]);
+ const columns = ref([{field:'Id',title:'涓婚敭锛岃嚜鍔ㄥ闀�',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'orderNumber',title:'鍑哄簱鍗曞彿',type:'string',width:220,require:true,align:'left',sort:true},
+ {field:'orderDate',title:'鍑哄簱鏃ユ湡',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'warehouseId',title:'浠撳簱ID',type:'int',width:110,require:true,align:'left'},
+ {field:'status',title:'鍗曟嵁鐘舵��',type:'string',width:220,require:true,align:'left',bind: { key: "OutOrderType", data: []}},
+ {field:'upperOutOrderId',title:'涓婃湁绯荤粺鍗曟嵁ID',type:'int',width:110,require:true,align:'left'},
+ {field:'remarks',title:' 澶囨敞',type:'string',width:220,require:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ ]);
+ const detail = ref({
+ cnName: "鍑哄簱鏄庣粏璁㈠崟",
+ table: "#detailTable",
+ columns: [
+ {field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'outOrderId',title:'鍑哄簱鍗旾D',type:'int',width:110,hidden:true,require:true,align:'left',sort:true},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left',edit: { type: "" }},
+ {field:'inboundNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:220,require:true,align:'left',edit: { type: "" }},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left',edit: { type: "" }},
+ {field:'outboundQuantity',title:'鍑哄簱鏁伴噺',type:'decimal',width:110,require:true,align:'left',edit: { type: "" }},
+ {field:'allocatedQuantity',title:'鍒嗛厤鏁伴噺',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'completedQuantity',title:'瀹屾垚鏁伴噺',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left',edit: { type: "" }},
+ {field:'spareField1',title:'澶囩敤瀛楁1',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField2',title:'澶囩敤瀛楁2',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField3',title:'澶囩敤瀛楁3',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField4',title:'澶囩敤瀛楁4',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField5',title:'澶囩敤瀛楁5',type:'string',width:220,hidden:true,align:'left'},
+ {field:'createDate',title:' 鍒涘缓鏃ユ湡',type:'datetime',width:150,hidden:true,require:true,align:'left',sort:true},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,hidden:true,require:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,hidden:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,hidden:true,align:'left'}
+ ],
+ sortName: "id",
+ key: "outOrderId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderAndStock.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderAndStock.vue"
new file mode 100644
index 0000000..4031baf
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderAndStock.vue"
@@ -0,0 +1,85 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderAndStock.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderAndStock.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鍑哄簱璁㈠崟搴撳瓨鏁版嵁鏄庣粏',
+ name: 'invoices/Dt_OutOrderAndStock',
+ url: "/Dt_OutOrderAndStock/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "locationCode":"",
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "璐т綅缂栧彿", "field": "locationCode", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "璐т綅缂栧彿", "field": "locationCode", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭ID',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'outOrderId',title:'鍑哄簱璁㈠崟澶碔D',type:'int',width:130,require:true,align:'left',sort:true},
+ {field:'outOrderDetailId',title:'鍑哄簱璁㈠崟鏄庣粏ID',type:'int',width:130,require:true,align:'left'},
+ {field:'groupId',title:'搴撳瓨澶碔D',type:'int',width:110,require:true,align:'left'},
+ {field:'groupDetailId',title:'搴撳瓨鏄庣粏ID',type:'int',width:110,require:true,align:'left'},
+ {field:'locationCode',title:'璐т綅缂栧彿',type:'string',width:220,require:true,align:'left'},
+ {field:'orderNumber',title:'璁㈠崟缂栧彿',type:'string',width:220,require:true,align:'left'},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left'},
+ {field:'outboundQuantity',title:'鍑哄簱鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'allocatedQuantity',title:'鍒嗛厤鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'completedQuantity',title:'瀹屾垚鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'palletCode',title:'鎵樼洏鍙�',type:'string',width:220,require:true,align:'left'},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:220,require:true,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:220,require:true,align:'left'},
+ {field:'state',title:'搴撳瓨鐘舵��',type:'string',width:220,require:true,align:'left'},
+ {field:'palletQuantity',title:'搴撳瓨鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'creater',title:'鍒涘缓鑰�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderDetail.vue"
new file mode 100644
index 0000000..f53ea1e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderDetail.vue"
@@ -0,0 +1,90 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderDetail.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鍑哄簱鍗曟槑缁�',
+ name: 'invoices/Dt_OutOrderDetail',
+ url: "/Dt_OutOrderDetail/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "outOrderId":"",
+ "materialName":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "inboundNo", "type": "text" },
+ { "title": "鐗╂枡鍚嶇О", "field": "materialName", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "inboundNo", "type": "like" },
+ { "title": "鐗╂枡鍚嶇О", "field": "materialName", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'outOrderId',title:'鍑哄簱鍗旾D',type:'int',width:110,hidden:true,require:true,align:'left',sort:true},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left'},
+ {field:'inboundNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:220,require:true,align:'left'},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left'},
+ {field:'outboundQuantity',title:'鍑哄簱鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'allocatedQuantity',title:'鍒嗛厤鏁伴噺',type:'decimal',width:110,align:'left'},
+ {field:'completedQuantity',title:'瀹屾垚鏁伴噺',type:'decimal',width:110,align:'left'},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left'},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left'},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left'},
+ {field:'spareField1',title:'澶囩敤瀛楁1',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField2',title:'澶囩敤瀛楁2',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField3',title:'澶囩敤瀛楁3',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField4',title:'澶囩敤瀛楁4',type:'string',width:220,hidden:true,align:'left'},
+ {field:'spareField5',title:'澶囩敤瀛楁5',type:'string',width:220,hidden:true,align:'left'},
+ {field:'createDate',title:' 鍒涘缓鏃ユ湡',type:'datetime',width:150,hidden:true,require:true,align:'left',sort:true},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,hidden:true,require:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,hidden:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,hidden:true,align:'left'}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProduction.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProduction.vue"
new file mode 100644
index 0000000..8912293
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProduction.vue"
@@ -0,0 +1,104 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderProduction.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderProduction.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鐢熶骇鍑哄簱鍗�',
+ name: 'invoices/Dt_OutOrderProduction',
+ url: "/Dt_OutOrderProduction/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "orderNumber":"",
+ "status":"",
+ "warehouseId":"",
+ "orderDate":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "orderNumber", "type": "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "select",dataKey:"OutOrderType",data:[] },
+ ],
+ [
+ { "title": "浠撳簱ID", "field": "warehouseId", "type": "text" },
+ { "title": "鍗曟嵁鏃ユ湡", "field": "orderDate", "type": "datetime" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "orderNumber", "type": "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "select",dataKey:"OutOrderType",data:[] },
+ ],
+ [
+ { "title": "浠撳簱ID", "field": "warehouseId", "type": "text" },
+ { "title": "鍗曟嵁鏃ユ湡", "field": "orderDate", "type": "datetime" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'orderNumber',title:'鍗曟嵁缂栧彿',type:'string',width:220,require:true,align:'left',sort:true},
+ {field:'orderDate',title:'鍗曟嵁鏃ユ湡',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'warehouseId',title:'浠撳簱ID',type:'int',width:110,require:true,align:'left'},
+ {field:'status',title:'鍗曟嵁鐘舵��',type:'int',width:220,require:true,align:'left',bind: { key: "OutOrderType", data: []}},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃ユ湡',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'}]);
+ const detail = ref({
+ cnName: "鐢熶骇鍑哄簱璁㈠崟鏄庣粏",
+ table: "#detailTable",
+ columns: [
+ {field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'inboundNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,align:'left',sort:true,edit: { type: "" }},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left',edit: { type: "" }},
+ {field:'productionOutOrderId',title:'鐢熶骇鍑哄簱鍗旾D',type:'int',width:130,hidden:true,require:true,align:'left',sort:true,edit: { type: "" }},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left',edit: { type: "" }},
+ {field:'quantity',title:'鏁伴噺',type:'decimal',width:110,require:true,align:'left',edit: { type: "" }},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left',edit: { type: "" }},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:150,align:'left',sort:true}
+ ],
+ sortName: "id",
+ key: "productionOutOrderId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProductionDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProductionDetail.vue"
new file mode 100644
index 0000000..8b4893a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderProductionDetail.vue"
@@ -0,0 +1,83 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderProductionDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderProductionDetail.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '鐢熶骇鍑哄簱鍗曟槑缁�',
+ name: 'invoices/Dt_OutOrderProductionDetail',
+ url: "/Dt_OutOrderProductionDetail/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "materialId":"",
+ "quantity":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鐗╂枡ID", "field": "materialId", "type": "text" },
+ { "title": "鏁伴噺", "field": "quantity", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鐗╂枡ID", "field": "materialId", "type": "like" },
+ { "title": "鏁伴噺", "field": "quantity", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'inboundNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,align:'left',sort:true},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left'},
+ {field:'productionOutOrderId',title:'鐢熶骇鍑哄簱鍗旾D',type:'int',width:130,hidden:true,require:true,align:'left',sort:true},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left'},
+ {field:'quantity',title:'鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left'},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left'},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:150,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderSorting.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderSorting.vue"
new file mode 100644
index 0000000..91c6d33
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderSorting.vue"
@@ -0,0 +1,99 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderSorting.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderSorting.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'sortingID',
+ footer: "Foots",
+ cnName: '鍒嗘嫞鍗�',
+ name: 'invoices/Dt_OutOrderSorting',
+ url: "/Dt_OutOrderSorting/",
+ sortName: "SortingID"
+ });
+ const editFormFields = ref({
+ "orderID":"",
+ "sortingStatus":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "璁㈠崟鍙�", "field": "orderID", "type": "text" },
+ { "title": "鍒嗘嫞鐘舵��", "field": "sortingStatus", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "璁㈠崟鍙�", "field": "materialId", "type": "like" },
+ { "title": "鍒嗘嫞鐘舵��", "field": "sortingStatus", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'sortingID',title:'鍒嗘嫞鍗曞彿',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'orderID',title:'璁㈠崟鍙�',type:'string',width:110,require:true,align:'left',sort:true},
+ {field:'customerName',title:'瀹㈡埛鍚嶇О',type:'string',width:120,align:'left'},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'specification',title:'瑙勬牸',type:'string',width:120,align:'left'},
+ {field:'unit',title:'鍗曚綅',type:'string',width:110,align:'left'},
+ {field:'requiredQuantity',title:'闇�姹傛暟閲�',type:'int',width:110,align:'left'},
+ {field:'stockLocation',title:'搴撳瓨浣嶇疆',type:'string',width:110,align:'left'},
+ {field:'sortedQuantity',title:'鍒嗘嫞鏁伴噺',type:'int',width:110,align:'left'},
+ {field:'sortingOrder',title:'鍒嗘嫞椤哄簭',type:'int',width:110,align:'left'},
+ {field:'sortingZone',title:'鍒嗘嫞鍖哄煙',type:'string',width:110,align:'left'},
+ {field:'sortingMethod',title:'鍒嗘嫞鏂瑰紡',type:'string',width:110,align:'left'},
+ {field:'sortingDate',title:'鍒嗘嫞鏃ユ湡',type:'datetime',width:150,align:'left',sort:true},
+ {field:'picker',title:'鍒嗘嫞鍛�',type:'string',width:110,align:'left'},
+ {field:'sortingStatus',title:'鍒嗘嫞鐘舵��',type:'string',width:110,align:'left'},
+ {field:'sortingCompletionTime',title:'鍒嗘嫞瀹屾垚鏃堕棿',type:'datetime',width:150,align:'left',sort:true},
+ {field:'sortingDifference',title:'鍒嗘嫞宸紓',type:'int',width:110,align:'left'},
+ {field:'differenceReason',title:'宸紓鍘熷洜',type:'string',width:220,align:'left'},
+ {field:'sortingRemarks',title:'鍒嗘嫞澶囨敞',type:'string',width:220,align:'left'},
+ {field:'reviewer',title:'澶嶆牳鍛�',type:'string',width:110,align:'left'},
+ {field:'reviewResult',title:'澶嶆牳缁撴灉',type:'string',width:110,align:'left'},
+ {field:'materielCode',title:'浜у搧缂栫爜',type:'string',width:110,hidden:true,require:true,align:'left'},
+ {field:'materielName',title:'浜у搧鍚嶇О',type:'string',width:120,hidden:true,align:'left'},
+ {field:'comments',title:'澶囨敞',type:'string',width:220,hidden:true,align:'left'},
+ {field:'createID',title:'鍒涘缓鑰匢D',type:'int',width:100,hidden:true,require:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransfer.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransfer.vue"
new file mode 100644
index 0000000..884063f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransfer.vue"
@@ -0,0 +1,104 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderTransfer.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderTransfer.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '璋冩嫧鍑哄簱鍗�',
+ name: 'invoices/Dt_OutOrderTransfer',
+ url: "/Dt_OutOrderTransfer/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "orderNumber":"",
+ "status":"",
+ "sourceWarehouse":"",
+ "destinationWarehouse":"",
+ "orderDate":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "orderNumber", "type": "text" },
+ { "title": "鍘熶粨搴�", "field": "sourceWarehouse", "type": "text" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "select",dataKey:"OutOrderType",data:[] },
+ ],
+ [
+ { "title": "鐩爣浠撳簱", "field": "destinationWarehouse", "type": "text" },
+ { "title": "鍗曟嵁鏃ユ湡", "field": "orderDate", "type": "datetime" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鍗曟嵁缂栧彿", "field": "orderNumber", "type": "like" },
+ { "title": "鍗曟嵁鐘舵��", "field": "status", "type": "select",dataKey:"OutOrderType",data:[] },
+ { "title": "鍘熶粨搴�", "field": "sourceWarehouse", "type": "like" },
+ { "title": "鐩爣浠撳簱", "field": "destinationWarehouse", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'orderNumber',title:'鍗曟嵁缂栧彿',type:'string',width:220,require:true,align:'left',sort:true},
+ {field:'sourceWarehouse',title:'鍘熶粨搴�',type:'int',width:110,require:true,align:'left'},
+ {field:'destinationWarehouse',title:'鐩爣浠撳簱',type:'int',width:110,require:true,align:'left'},
+ {field:'orderDate',title:'鍗曟嵁鏃ユ湡',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'status',title:'鍗曟嵁鐘舵��',type:'int',width:220,require:true,align:'left',bind: { key: "OutOrderType", data: []}},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:' 鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:150,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "璋冩嫧鍑哄簱鍗曟槑缁�",
+ table: "#detailTable",
+ columns: [
+ {field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'transferOutOrderId',title:'璋冩嫧鍑哄簱鍗旾D',type:'int',width:130,hidden:true,require:true,align:'left',sort:true},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left',edit: { type: "" }},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left',edit: { type: "" }},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left',edit: { type: "" }},
+ {field:'quantity',title:'鏁伴噺',type:'decimal',width:110,require:true,align:'left',edit: { type: "" }},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left',edit: { type: "" }},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left',edit: { type: "" }},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:150,align:'left',sort:true}
+ ],
+ sortName: "id",
+ key: "transferOutOrderId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransferDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransferDetail.vue"
new file mode 100644
index 0000000..807c080
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/invoices/Dt_OutOrderTransferDetail.vue"
@@ -0,0 +1,82 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_OutOrderTransferDetail.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/invoices/Dt_OutOrderTransferDetail.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '璋冩嫧鍑哄簱鍗曟槑缁�',
+ name: 'invoices/Dt_OutOrderTransferDetail',
+ url: "/Dt_OutOrderTransferDetail/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+ "materialId":"",
+ "quantity":""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鐗╂枡ID", "field": "materialId", "type": "text" },
+ { "title": "鏁伴噺", "field": "quantity", "type": "text" },
+ ],
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鐗╂枡ID", "field": "materialId", "type": "like" },
+ { "title": "鏁伴噺", "field": "quantity", "type": "like" },
+ ],
+ ]);
+ const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'transferOutOrderId',title:'璋冩嫧鍑哄簱鍗旾D',type:'int',width:130,hidden:true,require:true,align:'left',sort:true},
+ {field:'materialNo',title:'鐗╂枡缂栧彿',type:'string',width:110,align:'left'},
+ {field:'materialName',title:'鐗╂枡鍚嶇О',type:'string',width:110,align:'left'},
+ {field:'batchNumber',title:'鎵规鍙�',type:'string',width:220,require:true,align:'left'},
+ {field:'materialId',title:'鐗╂枡ID',type:'int',width:110,hidden:true,require:true,align:'left'},
+ {field:'quantity',title:'鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+ {field:'unitPrice',title:'鍗曚环',type:'decimal',width:110,align:'left'},
+ {field:'totalPrice',title:'鎬讳环',type:'decimal',width:110,align:'left'},
+ {field:'remarks',title:'澶囨敞',type:'string',width:220,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',width:220,require:true,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+ {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',width:150,align:'left',sort:true}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielAttribute.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielAttribute.vue"
new file mode 100644
index 0000000..1e12c14
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielAttribute.vue"
@@ -0,0 +1,86 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/material/Dt_MaterielAttribute.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid"
+ :columns="columns"
+ :detail="detail"
+ :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions"
+ :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions"
+ :table="table"
+ :extend="extend">
+ </view-grid>
+</template>
+<script>
+ import extend from "@/extension/widesea_wms/material/Dt_MaterielAttribute.js";
+ import { ref, defineComponent } from "vue";
+ export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'attributeID',
+ footer: "Foots",
+ cnName: '鐗╂枡灞炴��',
+ name: 'material/Dt_MaterielAttribute',
+ url: "/Dt_MaterielAttribute/",
+ sortName: "AttributeID"
+ });
+ const editFormFields = ref({"attributeName":"","attributeDesc":"","stroagecon":""});
+ const editFormOptions = ref([
+ [
+ { "title": "鐗╂枡灞炴�у悕绉�", "field": "attributeName", type: "text" },
+ { "title": "鐗╂枡灞炴�ф弿杩�", "field": "attributeDesc", type: "text" },
+ { "title": "瀛樺偍鏉′欢", "field": "stroagecon", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鐗╂枡灞炴�у悕绉�", "field": "attributeName", type: "text" },
+ { "title": "鐗╂枡灞炴�ф弿杩�", "field": "attributeDesc", type: "text" },
+ { "title": "瀛樺偍鏉′欢", "field": "stroagecon", type: "text" },
+ ]
+ ]);
+ const columns = ref([{field:'attributeID',title:'灞炴�D',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'materielID',title:'鐗╂枡ID',type:'int',width:110,align:'left',sort:true,hidden:true},
+ {field:'attributeCode',title:'灞炴�х紪鍙�',type:'string',width:110,align:'left'},
+ {field:'attributeName',title:'灞炴�у悕绉�',type:'string',width:110,align:'left'},
+ {field:'stroagecon',title:'瀛樺偍鏉′欢',type:'string',width:110,align:'left'},
+ {field:'transpcon',title:'杩愯緭鏉′欢',type:'string',width:110,align:'left'},
+ {field:'attributeDesc',title:'灞炴�ф弿杩�',type:'string',width:110,align:'left'},
+ {field:'remark',title:'澶囨敞',type:'string',width:110,hidden:true,align:'left'},
+ {field:'createID',title:'鍒涘缓ID',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'creater',title:'鍒涘缓浜�',type:'string',sort:true,width:110,align:'left'},
+ {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,align:'left',sort:true},
+ {field:'modifyID',title:'淇敼浜篒D',type:'int',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifier',title:'淇敼浜�',type:'string',sort:true,width:100,hidden:true,align:'left'},
+ {field:'modifyDate',title:'淇敼鏃堕棿',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true},
+ {field:'spare1',title:'Spare1',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare2',title:'Spare2',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare3',title:'Spare3',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare4',title:'Spare4',type:'string',sort:true,width:110,hidden:true,align:'left'},
+ {field:'spare5',title:'Spare5',type:'string',sort:true,width:110,hidden:true,align:'left'}]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+ });
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielInfo.vue"
new file mode 100644
index 0000000..d554784
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/material/Dt_MaterielInfo.vue"
@@ -0,0 +1,95 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/material/Dt_MaterielInfo.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/material/Dt_MaterielInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'materielID',
+ footer: "Foots",
+ cnName: '鐗╂枡淇℃伅',
+ name: 'material/Dt_MaterielInfo',
+ url: "/Dt_MaterielInfo/",
+ sortName: "MaterielID"
+ });
+ const editFormFields = ref({
+ "materielCode": "",
+ "materielName": "",
+ "packspes": "",
+
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鐗╂枡缂栫爜", "field": "materielCode", type: "text" },
+ { "title": "鐗╂枡鍚嶇О", "field": "materielName", type: "text" },
+ { "title": "鍖呰瑙勬牸", "field": "packspes", type: "text" },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鐗╂枡ID", "field": "materielID", type: "text" },
+ { "title": "鐗╂枡缂栫爜", "field": "materielCode", type: "text" },
+ { "title": "鐗╂枡鍚嶇О", "field": "materielName", type: "text" },
+ { "title": "鍖呰瑙勬牸", "field": "packspes", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'materielID', title: '鐗╂枡ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'materielCode', title: '鐗╂枡缂栧彿', type: 'string', width: 110, align: 'left', sort: true },
+ { field: 'materielName', title: '鐗╂枡鍚嶇О', type: 'string', width: 120, align: 'left' },
+ { field: 'packspes', title: '瑙勬牸', type: 'string', width: 110, align: 'left' },
+ { field: 'attribute', title: '灞炴��', type: 'string', width: 110, align: 'left' },
+ { field: 'unit', title: '鍗曚綅', type: 'string', width: 110, align: 'left' },
+ { field: 'wareAreaCode', title: '鎵�灞炲簱鍖�', type: 'string', width: 110, align: 'left' },
+ { field: 'minpackQty', title: '鏈�灏忓寘瑁�', type: 'decimal', width: 110, align: 'left' },
+ { field: 'netweight', title: '鍑�閲�', type: 'decimal', width: 110, align: 'left' },
+ { field: 'grossweight', title: '姣涢噸', type: 'decimal', width: 110, align: 'left' },
+ { field: 'status', title: '褰撳墠鐘舵��', type: 'int', width: 110, align: 'left' },
+ { field: 'validity', title: '鏈夋晥鏈�', type: 'int', width: 110, align: 'left' },
+ { field: 'safety', title: '瀹夊叏搴撳瓨', type: 'decimal', width: 110, align: 'left' },
+ { field: 'mfacturer', title: '鐢熶骇鍟�', type: 'string', width: 120, align: 'left' },
+ { field: 'supplier', title: '渚涘簲鍟�', type: 'string', width: 120, align: 'left' },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 120, align: 'left' },
+ { field: 'materielDesc', title: '鐗╂枡鎻忚堪', type: 'string', width: 110, align: 'left', hidden: true },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },
+ { field: 'spare1', title: 'Spare1', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare2', title: 'Spare2', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare3', title: 'Spare3', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare4', title: 'Spare4', type: 'string', sort: true, width: 110, hidden: true, align: 'left' },
+ { field: 'spare5', title: 'Spare5', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxingInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxingInfo.vue"
new file mode 100644
index 0000000..4e275f8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxingInfo.vue"
@@ -0,0 +1,82 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/DtBoxingInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '缁勭洏淇℃伅',
+ name: 'stock/DtBoxingInfo',
+ url: "/BoxingInfo/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+
+ });
+ const editFormOptions = ref([
+
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鎵樼洏鏉$爜", "field": "palletCode", type: "text" },
+ { "title": "鐗╂枡缂栧彿", "field": "materielCode", type: "text" },
+ { "title": "搴撳瓨鐘舵��", "field": "status", type: "select", dataKey: "StockState", data: [] },
+ { "title": "缁勭洏绫诲瀷", "field": "groupType", type: "select", dataKey: "GroupType", data: [] },
+ ],
+ [
+ { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+
+ ]
+ ]);
+ const columns = ref([
+ { field: 'id', title: '搴撳瓨ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'palletCode', title: '鎵樼洏鏉$爜', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ { field: 'locationCode', title: '搴撲綅', type: 'string', width: 110, align: 'left' },
+ { field: 'isFull', title: '鏄惁婊$洏', type: 'bool', width: 110, align: 'left' },
+ // { field: 'state', title: '搴撳瓨鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "StockState", data: [] } },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 120, align: 'left' },
+ { field: 'productionLine', title: '浜х嚎', type: 'string', width: 70, align: 'left' , bind: { key: "ProductionLine", data: [] } },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'int', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "缁勭洏鏄庣粏淇℃伅",
+ table: "DtBoxingInfoDetail",
+ columns: [
+ { title: "鐢佃姱搴忓垪鍙�", field: "serialNumber", type: "text"},
+ { title: "鐗╂枡缂栧彿", field: "materielCode",type: "text" },
+ { title: "鐗╂枡鍚嶇О", field: "materielName", type: "text" },
+ { title: "搴撳瓨鐘舵��", field: "status", type: "text" },
+ { title: "缁勭洏鏁伴噺", field: "stockQuantity", type: "text" },
+ { title: "鍒涘缓鏃堕棿", field: "createDate", type: "text" },
+ ],
+ sortName: "id",
+ key: "BoxingInfoId"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue"
new file mode 100644
index 0000000..0f033c5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue"
@@ -0,0 +1,93 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
+ -->
+
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_BillGroupStock.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '搴撳瓨淇℃伅',
+ name: 'stock/Dt_BillGroupStock',
+ url: "/StockInfo/",
+ sortName: "createDate"
+ });
+ const editFormFields = ref({
+ "palletCode": "",
+ "productionLine": "",
+ "outboundTime": "",
+ // "groupType": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "鎵樼洏鏉$爜", "field": "palletCode", type: "text" },
+ { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "text" },
+ { "title": "搴斿嚭搴撴椂闂�", "field": "outboundTime", type: "datetime" },
+ // { "title": "缁勭洏绫诲瀷", "field": "groupType", type: "select", dataKey: "GroupType", data: [] },
+ ]
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "鎵樼洏鏉$爜", "field": "palletCode", type: "text" },
+ { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+ { "title": "搴撳尯", "field": "areaCode", type: "select", dataKey: "AreaType", data: [] },
+ { "title": "搴撳瓨绫诲瀷", "field": "isFull", type: "select", dataKey: "isFull", data: [] },
+ ], [
+ { "title": "搴撲綅鍙�", "field": "locationCode", type: "text" },
+ { "title": "宸烽亾", "field": "roadwayNo", type: "text" },
+ { "title": "璐т綅鐘舵��", "field": "locationStatus", type: "select", dataKey: "LocationState", data: [] },
+ { "title": "鍑哄簱鏃堕棿", "field": "outboundTime", type: "datetime"},
+ ]
+ ]);
+ const columns = ref(
+ [{ field: 'id', title: '搴撳瓨ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'locationCode', title: '搴撲綅', type: 'string', width: 100, align: 'left', },
+ { field: 'palletCode', title: '鎵樼洏鏉$爜', type: 'string', width: 110, align: 'left', },
+ { field: 'isFull', title: '搴撳瓨绫诲瀷', type: 'bool', width: 80, align: 'left', bind: { key: "isFull", data: [{ key: false, value: '绌虹洏' }, { key: true, value: '瀹炵洏' }] }, },
+ { field: 'linedProcessFeedbackTime', title: '宸ヨ壓寮�濮嬫椂闂�', type: 'string', width: 110, align: 'left', },
+ { field: 'roadwayNo', title: '宸烽亾', type: 'string', width: 60, align: 'left', sort: true },
+ { field: 'locationStatus', title: '璐т綅鐘舵��', type: 'int', width: 60, align: 'left', bind: { key: "LocationState", data: [] } },
+ { field: 'specialParameterDuration', title: '宸ヨ壓鏃堕暱', type: 'string', width: 60, align: 'left', sort: true },
+ { field: 'outboundTime', title: '搴斿嚭搴撴椂闂�', type: 'string', width: 110, align: 'left', sort: true },
+ { field: 'productionLine', title: '鐢熶骇浜х嚎', type: 'string', width: 60, align: 'left', bind: { key: "ProductionLine", data: [] } },
+ { field: 'areaCode', title: '搴撳尯', type: 'string', width: 60, align: 'left', bind: { key: "AreaType", data: [] } },
+ { field: 'remark', title: '鐢佃姱鏁伴噺', type: 'string', width: 60, align: 'left', },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
+ { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ // { field: 'modifyDate', title: '鏈�鍚庝慨鏀规椂闂�', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ ]
+ );
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue"
new file mode 100644
index 0000000..8fd6e21
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue"
@@ -0,0 +1,96 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_WheelsStock.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'wheels_ID',
+ footer: "Foots",
+ cnName: '搴撳瓨淇℃伅',
+ name: 'stock/Dt_WheelsStock',
+ url: "/Dt_WheelsStock/",
+ sortName: "wheels_ID"
+ });
+ const editFormFields = ref({
+ });
+ const editFormOptions = ref([
+ ]);
+ const searchFormFields = ref({
+ wheels_Location:""
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鏉$爜", "field": "Wheels_code", type: "text" },
+ { "title": "杞﹀瀷", "field": "Wheels_CarType", type: "select", dataKey: "traintype_names", data: [] },
+ //{ "title": "搴撳瓨绫诲瀷", "field": "StockType", type: "select", dataKey: "GroupType", data: [] },
+ ],
+ [
+ { "title": "搴撲綅鍙�", "field": "wheels_Location", type: "text" },
+
+ ]
+ ]);
+ const columns = ref([
+ { field: 'wheels_ID', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'wheels_code', title: '杞﹁疆鐮�', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_Location', title: '搴撲綅鍙�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ { field: 'wheels_Num', title: '杞﹁疆鍙�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_Type', title: '绫诲瀷(杞�/鐩�)', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_ldxh', title: '杞瀷', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_CurrentStatue', title: '鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "CurrentStatue", data: [] } },
+ { field: 'wheels_gkcc', title: '姣傚瓟鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_Num', title: '杞﹁疆鏉$爜', type: 'string', width: 120, align: 'left' },
+ { field: 'wheels_ldtm', title: '杞鏉$爜', type: 'string', width: 120, align: 'left' },
+ { field: 'wheels_CarType', title: '杞﹀瀷', type: 'string', width: 70, align: 'left' },
+ { field: 'wheels_psj', title: '閰嶅睘灞�', type: 'string', width: 75, align: 'left' },
+ { field: 'wheels_CarNo', title: '杞︾粍', type: 'string', width: 75, align: 'left' },
+ { field: 'wheels_ldh', title: '杞鍙�', type: 'string', width: 100, align: 'left' },
+ //{ field: 'wheels_WheelsType', title: '杞瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_mttype', title: '鍔ㄦ嫋灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_NewOrOld', title: '鏂版棫绫诲瀷', type: 'string', width: 100, align: 'left',bind: { key: "NewOld", data: [] }} ,
+ { field: 'wheelsProps', title: '灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_level', title: '绛夌骇', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_gkzja', title: '姣傚瓟a鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjb', title: '姣傚瓟b鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_gkzjc', title: '姣傚瓟c鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+
+ { field: 'wheels_ljz', title: '杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_ygljz', title: '棰勪及杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheels_InDate', title: '鍏ュ簱鏃ユ湡', type: 'string',width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鏃堕棿', type: 'string', width: 100, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue"
new file mode 100644
index 0000000..951c951
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue"
@@ -0,0 +1,95 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_WheelsStock_Old.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'wheel_code',
+ footer: "Foots",
+ cnName: '搴撳瓨淇℃伅(鏃�)',
+ name: 'stock/Dt_WheelsStock_Old',
+ url: "/Dt_WheelsStock_Old/",
+ sortName: "wheel_code"
+ });
+ const editFormFields = ref({
+ });
+ const editFormOptions = ref([
+ ]);
+ const searchFormFields = ref({
+ wheels_Location:""
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鏉$爜", "field": "wheel_code", type: "text" },
+ { "title": "杞﹀瀷", "field": "model", type: "text" },
+ //{ "title": "搴撳瓨绫诲瀷", "field": "StockType", type: "select", dataKey: "GroupType", data: [] },
+ ],
+ [
+ { "title": "搴撲綅鍙�", "field": "locate", type: "text" },
+
+ ]
+ ]);
+ const columns = ref([
+ //{ field: 'wheels_ID', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'wheel_code', title: '杞﹁疆鐮�', type: 'string', width: 150, align: 'left' },
+ { field: 'locate', title: '搴撲綅鍙�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true, link: true, },
+ //{ field: 'wheels_Num', title: '杞﹁疆鍙�', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_Type', title: '绫诲瀷(杞�/鐩�)', type: 'string', width: 110, align: 'left' },
+ { field: 'repair_item', title: '鏂�/鏃�', type: 'string', width: 75, align: 'left' },
+ //{ field: 'repair_item', title: '鏂版棫绫诲瀷', type: 'string', width: 100, align: 'left',bind: { key: "NewOld", data: [] }} ,
+ { field: 'dqtz_state', title: '鍔�/鎷�', type: 'int', width: 75, align: 'left' },
+ { field: 'axes_type', title: '杞瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'venderno', title: '绛夌骇', type: 'string', width: 90, align: 'left' },
+ { field: 'bearing_type', title: '绫诲瀷', type: 'string', width: 75, align: 'left' },
+ { field: 'model', title: '杞﹀瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'zjj', title: '鐩村緞鍊�', type: 'string', width: 75, align: 'left' },
+ // { field: 'wheels_CarNo', title: '杞︾粍', type: 'string', width: 75, align: 'left' },
+ // { field: 'wheels_ldh', title: '杞鍙�', type: 'string', width: 100, align: 'left' },
+ //{ field: 'wheels_WheelsType', title: '杞瀷', type: 'string', width: 100, align: 'left' },
+ //{ field: 'wheels_mttype', title: '鍔ㄦ嫋灞炴��', type: 'string', width: 100, align: 'left' },
+
+ //{ field: 'wheelsProps', title: '灞炴��', type: 'string', width: 100, align: 'left' },
+ // { field: 'wheels_level', title: '绛夌骇', type: 'string', width: 100, align: 'left' },
+ // { field: 'wheels_gkzja', title: '姣傚瓟a鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ // { field: 'wheels_gkzjb', title: '姣傚瓟b鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+ // { field: 'wheels_gkzjc', title: '姣傚瓟c鐣岄潰鍧囧��', type: 'string', sort: true, width: 100, align: 'left' },
+
+ // { field: 'wheels_ljz', title: '杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ // { field: 'wheels_ygljz', title: '棰勪及杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'dt_ins', title: '鍏ュ簱鏃ユ湡', type: 'string',width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_hty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_hty.vue"
new file mode 100644
index 0000000..e75e838
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_hty.vue"
@@ -0,0 +1,87 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_WheelsStock_hty.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'wheels_ID',
+ footer: "Foots",
+ cnName: '搴撳瓨鍘嗗彶淇℃伅',
+ name: 'stock/Dt_WheelsStock_hty',
+ url: "/Dt_WheelsStock_hty/",
+ sortName: "Wheels_ID"
+ });
+ const editFormFields = ref({
+
+ });
+ const editFormOptions = ref([
+
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "杞﹁疆鏉$爜", "field": "Wheels_code", type: "text" },
+ { "title": "杞﹀瀷", "field": "Wheels_CarType", type: "select", dataKey: "StockState", data: [] },
+ { "title": "搴撳瓨绫诲瀷", "field": "StockType", type: "select", dataKey: "GroupType", data: [] },
+ ],
+ [
+ // { "title": "鐢熶骇浜х嚎", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
+
+ ]
+ ]);
+ const columns = ref([
+ { field: 'wheels_ID', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'wheels_code', title: '杞﹁疆鏉$爜', type: 'string', width: 110, align: 'left' },
+ //{ field: 'wheels_SequenceNum', title: '搴忓垪鍙�', type: 'string', width: 110, align: 'left', sort: true},
+ { field: 'wheels_Num', title: '杞﹁疆鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'wheels_Location', title: '搴撲綅鍙�', type: 'string', width: 110, align: 'left' },
+ { field: 'stockType', title: '搴撳瓨绫诲瀷', type: 'string', width: 80, align: 'left' },
+ // { field: 'wheels_CurrentStatue', title: '鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "InboundState", data: [] } },
+ { field: 'wheels_Type', title: '绫诲瀷', type: 'string', width: 50, align: 'left' },
+ { field: 'wheels_CarType', title: '杞﹀瀷', type: 'string', width: 70, align: 'left' },
+ //{ field: 'Wheels_ldxh', title: '杞瀷(杞鍨嬪彿)', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_NewOrOld', title: '鏂版棫绫诲瀷', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_ygljz', title: '棰勪及杞緞鍊�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'wheelsProps', title: '灞炴��', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_InDate', title: '鍏ュ簱鏃ユ湡', type: 'string',width: 100, align: 'left' },
+ { field: 'wheels_psj', title: '閰嶅睘灞�', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_CarNo', title: '杞︾粍', type: 'string', width: 100, align: 'left' },
+ { field: 'wheels_level', title: '绛夌骇', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鏃堕棿', type: 'string', width: 100, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ { field: 'finishWheelDate', title: '瀹屾垚鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ { field: 'operateType', title: '瀹屾垚鏂瑰紡', type: 'int', width: 100, align: 'left',bind: { key: "OperateType", data: [] } },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue"
new file mode 100644
index 0000000..be084f2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task.vue"
@@ -0,0 +1,98 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/taskinfo/Dt_Task.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend" />
+</template>
+<script>
+import extend from "@/extension/widesea_wms/taskinfo/Dt_Task.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'taskId',
+ footer: "Foots",
+ cnName: '浠诲姟淇℃伅',
+ name: 'taskinfo/Dt_Task',
+ url: "/Task/",
+ sortName: "TaskId"
+ });
+ const editFormFields = ref({
+ });
+ const editFormOptions = ref([
+ ]);
+ const searchFormFields = ref({
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "浠诲姟鍙�", "field": "taskNum", "type": "text" },
+ { "title": "杞﹁疆鏉$爜", "field": "palletCode", "type": "text" },
+ { "title": "浠诲姟绫诲瀷", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] },
+ { "title": "浠诲姟鐘舵��", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
+
+ ],
+ [
+ { "title": "璧峰浣嶇疆", "field": "sourceAddress", type: "text" },
+ { "title": "褰撳墠浣嶇疆", "field": "currentAddress", type: "text" },
+ { "title": "涓嬩竴浣嶇疆", "field": "nextAddress", type: "text" },
+ { "title": "鐩爣浣嶇疆", "field": "targetAddress", type: "text" },
+ ],
+ [
+ { "title": "宸烽亾", "field": "roadway", type: "text" },
+ { "title": "鍒涘缓浜�", "field": "creater", type: "text" },
+ { "title": "鍒涘缓鏃堕棿", "field": "createDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([{ field: 'TaskId', title: '涓婚敭', type: 'string', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'int', width: 110, align: 'left', sort: true },
+ { field: 'palletCode', title: '杞﹁疆鏉$爜', type: 'string', width: 180, align: 'left' },
+ { field: 'carType', title: '杞﹀瀷', type: 'string', width: 75, align: 'left' },
+ { field: 'wheels_gkcc', title: '姣傚瓟鍧囧��', type: 'string', width: 90, align: 'left' },
+ { field: 'wheelsNewOrOld', title: '鏂�/鏃�', type: 'string', width: 70, align: 'left' },
+ { field: 'pnboundNo', title: '鍗曟嵁鍙�', type: 'string', width: 110, align: 'left',hidden:true },
+ { field: 'groupID', title: '搴撳瓨ID', type: 'int', width: 110, hidden: true, align: 'left' },
+ { field: 'groupDetailId', title: '缁勭洏鏄庣粏ID', type: 'int', width: 110, hidden: true, align: 'left' },
+ { field: 'roadway', title: '宸烽亾', type: 'string', width: 110, align: 'left' },
+ { field: 'taskType', title: '浠诲姟绫诲瀷', type: 'int', width: 110, align: 'left', bind: { key: "TaskType", data: [] } },
+ { field: 'taskState', title: '浠诲姟鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "TaskStatus", data: [] } },
+ { field: 'sourceAddress', title: '璧峰浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'currentAddress', title: '褰撳墠浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'nextAddress', title: '涓嬩竴浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'targetAddress', title: '鐩爣浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'grade', title: '浼樺厛绾�', type: 'int', width: 60, align: 'left' },
+ { field: 'dispatchertime', title: '浠诲姟涓嬪彂鏃堕棿', type: 'datetime', width: 150, align: 'left', sort: true },
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 110, align: 'left',hidden: true, },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'locationCode', title: '璐т綅鍙�', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'materialNo', title: '鐗╂枡缂栧彿', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'targetAddress', title: '鐩爣鍦板潃', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue"
new file mode 100644
index 0000000..a5c4d05
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue"
@@ -0,0 +1,115 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/taskinfo/Dt_Task.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend" />
+</template>
+<script>
+import extend from "@/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'taskId',
+ footer: "Foots",
+ cnName: '浠诲姟鍘嗗彶淇℃伅',
+ name: 'taskinfo/Dt_Task_Hty',
+ url: "/Task_Hty/",
+ sortName: "TaskId"
+ });
+ const editFormFields = ref({
+ "taskNum": "",
+ "palletCode": ""
+ });
+ const editFormOptions = ref([
+ [
+ { "title": "浠诲姟鍙�", "field": "taskNum", "type": "text" },
+ { "title": "鎵樼洏鍙�", "field": "palletCode", "type": "text" },
+ { "title": "浠诲姟绫诲瀷", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] },
+ { "title": "浠诲姟鐘舵��", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
+
+ ],
+ [
+ { "title": "璧峰浣嶇疆", "field": "sourceAddress", type: "text" },
+ { "title": "褰撳墠浣嶇疆", "field": "currentAddress", type: "text" },
+ { "title": "涓嬩竴浣嶇疆", "field": "nextAddress", type: "text" },
+ { "title": "鐩爣浣嶇疆", "field": "targetAddress", type: "text" },
+ ],
+ ]);
+ const searchFormFields = ref({
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "浠诲姟鍙�", "field": "taskNum", "type": "text" },
+ { "title": "鎵樼洏鍙�", "field": "palletCode", "type": "text" },
+ { "title": "浠诲姟绫诲瀷", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] },
+ { "title": "浠诲姟鐘舵��", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
+
+ ],
+ [
+ { "title": "璧峰浣嶇疆", "field": "sourceAddress", type: "text" },
+ { "title": "褰撳墠浣嶇疆", "field": "currentAddress", type: "text" },
+ { "title": "涓嬩竴浣嶇疆", "field": "nextAddress", type: "text" },
+ { "title": "鐩爣浣嶇疆", "field": "targetAddress", type: "text" },
+ ],
+ [
+ { "title": "宸烽亾", "field": "roadway", type: "text" },
+ { "title": "task_CZInfo", "field": "杞﹁酱", type: "text" },
+ { "title": "鍒涘缓浜�", "field": "creater", type: "text" },
+ { "title": "鍒涘缓鏃堕棿", "field": "createDate", type: "datetime" },
+ ],
+ ]);
+ const columns = ref([{ field: 'TaskId', title: '涓婚敭', type: 'string', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'int', width: 110, align: 'left', sort: true },
+ { field: 'palletCode', title: '鏉$爜', type: 'string', width: 150, align: 'left' },
+ { field: 'pnboundNo', title: '鍗曟嵁鍙�', type: 'string', width: 110, align: 'left' ,hidden: true},
+ { field: 'groupID', title: '搴撳瓨ID', type: 'int', width: 110, hidden: true, align: 'left' },
+ { field: 'groupDetailId', title: '缁勭洏鏄庣粏ID', type: 'int', width: 110, hidden: true, align: 'left' },
+ { field: 'roadway', title: '宸烽亾', type: 'string', width: 110, align: 'left' },
+ { field: 'taskType', title: '浠诲姟绫诲瀷', type: 'int', width: 110, align: 'left', bind: { key: "TaskType", data: [] } },
+ { field: 'taskState', title: '浠诲姟鐘舵��', type: 'int', width: 110, align: 'left', bind: { key: "TaskStatus", data: [] } },
+ { field: 'sourceAddress', title: '璧峰浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'currentAddress', title: '褰撳墠浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'nextAddress', title: '涓嬩竴浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'targetAddress', title: '鐩爣浣嶇疆', type: 'string', width: 110, align: 'left' },
+ { field: 'task_CZInfo', title: '閫夐厤杞﹁酱', type: 'string', width: 110, align: 'left' },
+ //{ field: 'grade', title: '浼樺厛绾�', type: 'int', width: 60, align: 'left' },
+ //{ field: 'productionLine', title: '浜х嚎', type: 'string', width: 70, align: 'left', bind: { key: "ProductionLine", data: [] } },
+ //{ field: 'processCode', title: '宸ュ簭', type: 'string', width: 90, align: 'left' },
+ { field: 'dispatchertime', title: '浠诲姟涓嬪彂鏃堕棿', type: 'datetime', width: 150, align: 'left', sort: true },
+ { field: 'operateType', title: '鎿嶄綔绫诲瀷', type: 'string', width: 110, align: 'left', bind: { key: "OperateType", data: [] }},
+ { field: 'remark', title: '澶囨敞', type: 'string', width: 110, align: 'left',hidden: true, },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, align: 'left' },
+ { field: 'locationCode', title: '璐т綅鍙�', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'materialNo', title: '鐗╂枡缂栧彿', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'targetAddress', title: '鐩爣鍦板潃', type: 'string', width: 110, hidden: true, align: 'left' },
+ { field: 'createID', title: '鍒涘缓ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyID', title: '淇敼浜篒D', type: 'int', sort: true, width: 100, hidden: true, align: 'left' },]);
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/vite.config.ts" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/vite.config.ts"
new file mode 100644
index 0000000..bc53b3d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/vite.config.ts"
@@ -0,0 +1,82 @@
+import { fileURLToPath } from 'node:url'
+import commonjs from 'vite-plugin-commonjs'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+import { visualizer } from 'rollup-plugin-visualizer'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ commonjs(),
+ // commonjs({
+ // // 杩欓噷鍙互閰嶇疆鎻掍欢鐨勯�夐」锛屼緥濡傛寚瀹氶渶瑕佽浆鎹㈢殑妯″潡绛�
+ // include: 'node_modules/**', // 鍖呭惈node_modules涓嬬殑鎵�鏈夋ā鍧�
+ // }),
+ vue(),
+ vueJsx(),
+ visualizer({
+ filename: 'report_form_rollup-plugin-visualizer.html'
+ }),
+ //寮曠敤鍚庢彁绀猴細
+ // requireTransform({
+ // fileRegex: /.js$|.ts$/
+ // })
+ ],
+ define: {
+ },
+ optimizeDeps: {
+ exclude: ['vue']
+ },
+ build: {
+ commonjsOptions: {
+ transformMixedEsModules: true
+ },
+ rollupOptions: {
+ output: {
+ //姣忎釜node_modules妯″潡鍒嗘垚涓�涓猨s鏂囦欢
+ manualChunks(id) {
+ if (id.includes('node_modules')) {
+ return id.toString().split('node_modules/')[1].split('/')[0].toString()
+ }
+ },
+ // 鐢ㄤ簬浠庡叆鍙g偣鍒涘缓鐨勫潡鐨勬墦鍖呰緭鍑烘牸寮廩name]琛ㄧず鏂囦欢鍚�,[hash]琛ㄧず璇ユ枃浠跺唴瀹筯ash鍊�
+ // entryFileNames: 'assets/js/[name].[hash].js', // 鐢ㄤ簬鍛藉悕浠g爜鎷嗗垎鏃跺垱寤虹殑鍏变韩鍧楃殑杈撳嚭鍛藉悕
+ // chunkFileNames: 'assets/js/[name].[hash].js', // 鐢ㄤ簬杈撳嚭闈欐�佽祫婧愮殑鍛藉悕锛孾ext]琛ㄧず鏂囦欢鎵╁睍鍚�
+ // assetFileNames: 'assets/[ext]/[name].[hash].[ext]'
+ entryFileNames: 'assets/js/[hash].js', // 鐢ㄤ簬鍛藉悕浠g爜鎷嗗垎鏃跺垱寤虹殑鍏变韩鍧楃殑杈撳嚭鍛藉悕
+ chunkFileNames: 'assets/js/[hash].js', // 鐢ㄤ簬杈撳嚭闈欐�佽祫婧愮殑鍛藉悕锛孾ext]琛ㄧず鏂囦欢鎵╁睍鍚�
+ assetFileNames: 'assets/[ext]/[hash].[ext]'
+ }
+ },
+ // outDir: 'dist', // 杈撳嚭鐩綍锛岄粯璁や负 'dist'
+ // rollupOptions: {
+ // input: {
+ // main: 'src/main.js', // 浣犵殑鍏ュ彛鏂囦欢
+ // }
+ // },
+ sourcemap: false //鐢熸垚婧愭槧灏勬枃浠�
+ },
+ publicDir: 'public', // 杩欓噷鎸囧畾浜� public 鏂囦欢澶圭殑浣嶇疆
+ css: {
+ //鏌ョ湅CSS灞炰簬鍝釜css鏂囦欢
+ devSourcemap: false
+ },
+ server: {
+ port: 8081
+ // proxy: {
+ // '/api': {
+ // target: 'http://xxxx.com',
+ // changeOrigin: true,
+ // rewrite: (path) => path.replace(/^\/api/, '')
+ // }
+ // }
+ },
+ resolve: {
+ extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'],
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ }
+})
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/yarn.lock" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/yarn.lock"
new file mode 100644
index 0000000..31ea9dc
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/yarn.lock"
@@ -0,0 +1,4710 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@aashutoshrathi/word-wrap@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz"
+ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
+
+"@adobe/css-tools@^4.0.1":
+ version "4.3.3"
+ resolved "https://registry.npmmirror.com/@adobe/css-tools/-/css-tools-4.3.3.tgz"
+ integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==
+
+"@amap/amap-jsapi-loader@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz"
+ integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==
+
+"@ampproject/remapping@^2.2.0":
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz"
+ integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2":
+ version "7.24.2"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.2.tgz"
+ integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
+ dependencies:
+ "@babel/highlight" "^7.24.2"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.23.5":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.24.1.tgz"
+ integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0", "@babel/core@^7.23.3":
+ version "7.24.3"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.24.3.tgz"
+ integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.24.2"
+ "@babel/generator" "^7.24.1"
+ "@babel/helper-compilation-targets" "^7.23.6"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helpers" "^7.24.1"
+ "@babel/parser" "^7.24.1"
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.1"
+ "@babel/types" "^7.24.0"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/eslint-parser@^7.21.3":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz"
+ integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==
+ dependencies:
+ "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
+ eslint-visitor-keys "^2.1.0"
+ semver "^6.3.1"
+
+"@babel/generator@^7.22.5", "@babel/generator@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.24.1.tgz"
+ integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==
+ dependencies:
+ "@babel/types" "^7.24.0"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz"
+ integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-compilation-targets@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz"
+ integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
+ dependencies:
+ "@babel/compat-data" "^7.23.5"
+ "@babel/helper-validator-option" "^7.23.5"
+ browserslist "^4.22.2"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-create-class-features-plugin@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz"
+ integrity sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-member-expression-to-functions" "^7.23.0"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.24.1"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ semver "^6.3.1"
+
+"@babel/helper-environment-visitor@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
+"@babel/helper-function-name@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz"
+ integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.23.0"
+
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-member-expression-to-functions@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz"
+ integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==
+ dependencies:
+ "@babel/types" "^7.23.0"
+
+"@babel/helper-module-imports@^7.22.15":
+ version "7.24.3"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz"
+ integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
+ dependencies:
+ "@babel/types" "^7.24.0"
+
+"@babel/helper-module-imports@~7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
+"@babel/helper-module-transforms@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz"
+ integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
+"@babel/helper-optimise-call-expression@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz"
+ integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0":
+ version "7.24.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz"
+ integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==
+
+"@babel/helper-replace-supers@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz"
+ integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-member-expression-to-functions" "^7.23.0"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz"
+ integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.23.4":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz"
+ integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
+
+"@babel/helper-validator-identifier@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz"
+ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+
+"@babel/helper-validator-option@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz"
+ integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+
+"@babel/helpers@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.24.1.tgz"
+ integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
+ dependencies:
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.1"
+ "@babel/types" "^7.24.0"
+
+"@babel/highlight@^7.24.2":
+ version "7.24.2"
+ resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.2.tgz"
+ integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/parser@^7.22.5", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.1.tgz"
+ integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==
+
+"@babel/plugin-syntax-jsx@^7.23.3":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz"
+ integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.0"
+
+"@babel/plugin-syntax-typescript@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz"
+ integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.0"
+
+"@babel/plugin-transform-typescript@^7.23.3":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz"
+ integrity sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-create-class-features-plugin" "^7.24.1"
+ "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/plugin-syntax-typescript" "^7.24.1"
+
+"@babel/runtime-corejs3@^7.11.2":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz"
+ integrity sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==
+ dependencies:
+ core-js-pure "^3.30.2"
+ regenerator-runtime "^0.14.0"
+
+"@babel/runtime@^7.11.2":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.1.tgz"
+ integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.24.0":
+ version "7.24.0"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.24.0.tgz"
+ integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/parser" "^7.24.0"
+ "@babel/types" "^7.24.0"
+
+"@babel/traverse@^7.22.5", "@babel/traverse@^7.23.9", "@babel/traverse@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.24.1.tgz"
+ integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==
+ dependencies:
+ "@babel/code-frame" "^7.24.1"
+ "@babel/generator" "^7.24.1"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.24.1"
+ "@babel/types" "^7.24.0"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
+"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.9", "@babel/types@^7.24.0":
+ version "7.24.0"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.24.0.tgz"
+ integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==
+ dependencies:
+ "@babel/helper-string-parser" "^7.23.4"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
+"@ctrl/tinycolor@^3.4.1":
+ version "3.6.1"
+ resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz"
+ integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
+
+"@element-plus/icons-vue@^2.3.1":
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz"
+ integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
+
+"@esbuild/win32-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz"
+ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
+
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
+ version "4.10.0"
+ resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz"
+ integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
+
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@eslint/js@8.57.0":
+ version "8.57.0"
+ resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.57.0.tgz"
+ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+
+"@floating-ui/core@^1.0.0":
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.0.tgz"
+ integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==
+ dependencies:
+ "@floating-ui/utils" "^0.2.1"
+
+"@floating-ui/dom@^1.0.1":
+ version "1.6.3"
+ resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.3.tgz"
+ integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==
+ dependencies:
+ "@floating-ui/core" "^1.0.0"
+ "@floating-ui/utils" "^0.2.0"
+
+"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.1.tgz"
+ integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==
+
+"@humanwhocodes/config-array@^0.11.14":
+ version "0.11.14"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
+ integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz"
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+ dependencies:
+ string-width "^5.1.2"
+ string-width-cjs "npm:string-width@^4.2.0"
+ strip-ansi "^7.0.1"
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+ wrap-ansi "^8.1.0"
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.5"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
+ integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@microsoft/signalr@^7.0.3":
+ version "7.0.14"
+ resolved "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-7.0.14.tgz"
+ integrity sha512-dnS7gSJF5LxByZwJaj82+F1K755ya7ttPT+JnSeCBef3sL8p8FBkHePXphK8NSuOquIb7vsphXWa28A+L2SPpw==
+ dependencies:
+ abort-controller "^3.0.0"
+ eventsource "^2.0.2"
+ fetch-cookie "^2.0.3"
+ node-fetch "^2.6.7"
+ ws "^7.4.5"
+
+"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
+ version "5.1.1-v1"
+ resolved "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz"
+ integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
+ dependencies:
+ eslint-scope "5.1.1"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@one-ini/wasm@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/@one-ini/wasm/-/wasm-0.1.1.tgz"
+ integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
+
+"@pkgjs/parseargs@^0.11.0":
+ version "0.11.0"
+ resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
+ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+
+"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
+ version "2.11.7"
+ resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz"
+ integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
+
+"@rollup/rollup-win32-x64-msvc@4.14.0":
+ version "4.14.0"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz"
+ integrity sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==
+
+"@rushstack/eslint-patch@^1.2.0":
+ version "1.10.1"
+ resolved "https://registry.npmmirror.com/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz"
+ integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==
+
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
+"@types/chai-subset@^1.3.3":
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/@types/chai-subset/-/chai-subset-1.3.5.tgz"
+ integrity sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai@*", "@types/chai@^4.3.4":
+ version "4.3.14"
+ resolved "https://registry.npmmirror.com/@types/chai/-/chai-4.3.14.tgz"
+ integrity sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==
+
+"@types/estree@*", "@types/estree@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz"
+ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+
+"@types/jsdom@^21.1.0":
+ version "21.1.6"
+ resolved "https://registry.npmmirror.com/@types/jsdom/-/jsdom-21.1.6.tgz"
+ integrity sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==
+ dependencies:
+ "@types/node" "*"
+ "@types/tough-cookie" "*"
+ parse5 "^7.0.0"
+
+"@types/json-schema@^7.0.9":
+ version "7.0.15"
+ resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz"
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
+
+"@types/lodash-es@*", "@types/lodash-es@^4.17.6":
+ version "4.17.12"
+ resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz"
+ integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*", "@types/lodash@^4.14.182":
+ version "4.17.0"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.0.tgz"
+ integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==
+
+"@types/node@*", "@types/node@^18.14.2", "@types/node@>= 14":
+ version "18.19.29"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-18.19.29.tgz"
+ integrity sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==
+ dependencies:
+ undici-types "~5.26.4"
+
+"@types/semver@^7.3.12":
+ version "7.5.8"
+ resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz"
+ integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
+
+"@types/tough-cookie@*":
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz"
+ integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
+
+"@types/web-bluetooth@^0.0.16":
+ version "0.0.16"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
+ integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
+
+"@typescript-eslint/eslint-plugin@^5.59.1":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz"
+ integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
+ dependencies:
+ "@eslint-community/regexpp" "^4.4.0"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/type-utils" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
+ debug "^4.3.4"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ natural-compare-lite "^1.4.0"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.59.1":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.62.0.tgz"
+ integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz"
+ integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==
+ dependencies:
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/visitor-keys" "5.62.0"
+
+"@typescript-eslint/type-utils@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz"
+ integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
+ debug "^4.3.4"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/types@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz"
+ integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
+
+"@typescript-eslint/typescript-estree@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz"
+ integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==
+ dependencies:
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/visitor-keys" "5.62.0"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/utils@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz"
+ integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@types/json-schema" "^7.0.9"
+ "@types/semver" "^7.3.12"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ eslint-scope "^5.1.1"
+ semver "^7.3.7"
+
+"@typescript-eslint/visitor-keys@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz"
+ integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==
+ dependencies:
+ "@typescript-eslint/types" "5.62.0"
+ eslint-visitor-keys "^3.3.0"
+
+"@ungap/structured-clone@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
+ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+
+"@vitejs/plugin-vue-jsx@^3.0.0":
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz"
+ integrity sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==
+ dependencies:
+ "@babel/core" "^7.23.3"
+ "@babel/plugin-transform-typescript" "^7.23.3"
+ "@vue/babel-plugin-jsx" "^1.1.5"
+
+"@vitejs/plugin-vue@^4.0.0":
+ version "4.6.2"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz"
+ integrity sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==
+
+"@vitest/expect@0.29.8":
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/@vitest/expect/-/expect-0.29.8.tgz"
+ integrity sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==
+ dependencies:
+ "@vitest/spy" "0.29.8"
+ "@vitest/utils" "0.29.8"
+ chai "^4.3.7"
+
+"@vitest/runner@0.29.8":
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/@vitest/runner/-/runner-0.29.8.tgz"
+ integrity sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==
+ dependencies:
+ "@vitest/utils" "0.29.8"
+ p-limit "^4.0.0"
+ pathe "^1.1.0"
+
+"@vitest/spy@0.29.8":
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/@vitest/spy/-/spy-0.29.8.tgz"
+ integrity sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==
+ dependencies:
+ tinyspy "^1.0.2"
+
+"@vitest/utils@0.29.8":
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/@vitest/utils/-/utils-0.29.8.tgz"
+ integrity sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==
+ dependencies:
+ cli-truncate "^3.1.0"
+ diff "^5.1.0"
+ loupe "^2.3.6"
+ pretty-format "^27.5.1"
+
+"@volar/language-core@~1.11.1", "@volar/language-core@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz"
+ integrity sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==
+ dependencies:
+ "@volar/source-map" "1.11.1"
+
+"@volar/source-map@~1.11.1", "@volar/source-map@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz"
+ integrity sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==
+ dependencies:
+ muggle-string "^0.3.1"
+
+"@volar/typescript@~1.11.1":
+ version "1.11.1"
+ resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz"
+ integrity sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==
+ dependencies:
+ "@volar/language-core" "1.11.1"
+ path-browserify "^1.0.1"
+
+"@vue/babel-helper-vue-transform-on@1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz"
+ integrity sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==
+
+"@vue/babel-plugin-jsx@^1.1.5":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz"
+ integrity sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==
+ dependencies:
+ "@babel/helper-module-imports" "~7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-jsx" "^7.23.3"
+ "@babel/template" "^7.23.9"
+ "@babel/traverse" "^7.23.9"
+ "@babel/types" "^7.23.9"
+ "@vue/babel-helper-vue-transform-on" "1.2.2"
+ "@vue/babel-plugin-resolve-type" "1.2.2"
+ camelcase "^6.3.0"
+ html-tags "^3.3.1"
+ svg-tags "^1.0.0"
+
+"@vue/babel-plugin-resolve-type@1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz"
+ integrity sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/helper-module-imports" "~7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/parser" "^7.23.9"
+ "@vue/compiler-sfc" "^3.4.15"
+
+"@vue/compiler-core@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz"
+ integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==
+ dependencies:
+ "@babel/parser" "^7.23.9"
+ "@vue/shared" "3.4.21"
+ entities "^4.5.0"
+ estree-walker "^2.0.2"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz"
+ integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==
+ dependencies:
+ "@vue/compiler-core" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/compiler-sfc@^3.4.15", "@vue/compiler-sfc@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz"
+ integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==
+ dependencies:
+ "@babel/parser" "^7.23.9"
+ "@vue/compiler-core" "3.4.21"
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/compiler-ssr" "3.4.21"
+ "@vue/shared" "3.4.21"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.7"
+ postcss "^8.4.35"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz"
+ integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==
+ dependencies:
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
+ version "6.6.1"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz"
+ integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==
+
+"@vue/eslint-config-prettier@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.npmmirror.com/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz"
+ integrity sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==
+ dependencies:
+ eslint-config-prettier "^8.3.0"
+ eslint-plugin-prettier "^4.0.0"
+
+"@vue/eslint-config-typescript@^11.0.2":
+ version "11.0.3"
+ resolved "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz"
+ integrity sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "^5.59.1"
+ "@typescript-eslint/parser" "^5.59.1"
+ vue-eslint-parser "^9.1.1"
+
+"@vue/language-core@1.8.27":
+ version "1.8.27"
+ resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz"
+ integrity sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==
+ dependencies:
+ "@volar/language-core" "~1.11.1"
+ "@volar/source-map" "~1.11.1"
+ "@vue/compiler-dom" "^3.3.0"
+ "@vue/shared" "^3.3.0"
+ computeds "^0.0.1"
+ minimatch "^9.0.3"
+ muggle-string "^0.3.1"
+ path-browserify "^1.0.1"
+ vue-template-compiler "^2.7.14"
+
+"@vue/reactivity@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.21.tgz"
+ integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==
+ dependencies:
+ "@vue/shared" "3.4.21"
+
+"@vue/runtime-core@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz"
+ integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==
+ dependencies:
+ "@vue/reactivity" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/runtime-dom@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz"
+ integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==
+ dependencies:
+ "@vue/runtime-core" "3.4.21"
+ "@vue/shared" "3.4.21"
+ csstype "^3.1.3"
+
+"@vue/server-renderer@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz"
+ integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==
+ dependencies:
+ "@vue/compiler-ssr" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+"@vue/shared@^3.3.0", "@vue/shared@3.4.21":
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.21.tgz"
+ integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
+
+"@vue/test-utils@^2.3.0":
+ version "2.4.5"
+ resolved "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.4.5.tgz"
+ integrity sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==
+ dependencies:
+ js-beautify "^1.14.9"
+ vue-component-type-helpers "^2.0.0"
+
+"@vue/tsconfig@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz"
+ integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==
+
+"@vueuse/core@^9.1.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz"
+ integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.16"
+ "@vueuse/metadata" "9.13.0"
+ "@vueuse/shared" "9.13.0"
+ vue-demi "*"
+
+"@vueuse/metadata@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz"
+ integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==
+
+"@vueuse/shared@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz"
+ integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==
+ dependencies:
+ vue-demi "*"
+
+abab@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
+abbrev@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz"
+ integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
+
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
+acorn-globals@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-7.0.1.tgz"
+ integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
+ dependencies:
+ acorn "^8.1.0"
+ acorn-walk "^8.0.2"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-walk@^8.0.2, acorn-walk@^8.2.0:
+ version "8.3.2"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz"
+ integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.1.0, acorn@^8.10.0, acorn@^8.11.3, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
+ version "8.11.3"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
+address@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz"
+ integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+agentkeepalive@^3.4.1:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz"
+ integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==
+ dependencies:
+ humanize-ms "^1.2.1"
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ali-oss@^6.17.1:
+ version "6.20.0"
+ resolved "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.20.0.tgz"
+ integrity sha512-TzFXgGlw81sy2JvcCveSYsa2b2+6kv+HA6WTc+cXg6bu8nUAmVPfncRGbn3x2getSOniOFA+TyGy3V4l3Fks+Q==
+ dependencies:
+ address "^1.2.2"
+ agentkeepalive "^3.4.1"
+ bowser "^1.6.0"
+ copy-to "^2.0.1"
+ dateformat "^2.0.0"
+ debug "^4.3.4"
+ destroy "^1.0.4"
+ end-or-error "^1.0.1"
+ get-ready "^1.0.0"
+ humanize-ms "^1.2.0"
+ is-type-of "^1.4.0"
+ js-base64 "^2.5.2"
+ jstoxml "^2.0.0"
+ lodash "^4.17.21"
+ merge-descriptors "^1.0.1"
+ mime "^2.4.5"
+ platform "^1.3.1"
+ pump "^3.0.0"
+ qs "^6.4.0"
+ sdk-base "^2.0.1"
+ stream-http "2.8.2"
+ stream-wormhole "^1.0.4"
+ urllib "2.41.0"
+ utility "^1.18.0"
+ xml2js "^0.6.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz"
+ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+
+ansi-styles@^6.0.0:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+any-promise@^1.0.0, any-promise@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz"
+ integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+ dependencies:
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz"
+ integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
+ is-shared-array-buffer "^1.0.2"
+
+assertion-error@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz"
+ integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+
+async-validator@^4.2.5:
+ version "4.2.5"
+ resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz"
+ integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
+axios@^1.3.4:
+ version "1.6.8"
+ resolved "https://registry.npmmirror.com/axios/-/axios-1.6.8.tgz"
+ integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==
+ dependencies:
+ follow-redirects "^1.15.6"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+bowser@^1.6.0:
+ version "1.9.4"
+ resolved "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz"
+ integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.22.2, "browserslist@>= 4.21.0":
+ version "4.23.0"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz"
+ integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
+ dependencies:
+ caniuse-lite "^1.0.30001587"
+ electron-to-chromium "^1.4.668"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.0.13"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
+ integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+
+cac@^6.7.14:
+ version "6.7.14"
+ resolved "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz"
+ integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
+
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001587:
+ version "1.0.30001605"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz"
+ integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==
+
+chai@^4.3.7:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/chai/-/chai-4.4.1.tgz"
+ integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.3"
+ deep-eql "^4.1.3"
+ get-func-name "^2.0.2"
+ loupe "^2.3.6"
+ pathval "^1.1.1"
+ type-detect "^4.0.8"
+
+chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+check-error@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/check-error/-/check-error-1.0.3.tgz"
+ integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
+ dependencies:
+ get-func-name "^2.0.2"
+
+cli-truncate@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz"
+ integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==
+ dependencies:
+ slice-ansi "^5.0.0"
+ string-width "^5.0.0"
+
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz"
+ integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
+
+computeds@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz"
+ integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+config-chain@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz"
+ integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+content-type@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
+copy-to@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz"
+ integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==
+
+core-js-pure@^3.30.2:
+ version "3.36.1"
+ resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.36.1.tgz"
+ integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==
+
+core-js@^3.29.0:
+ version "3.36.1"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-3.36.1.tgz"
+ integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==
+
+core-util-is@^1.0.2, core-util-is@~1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssstyle@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-3.0.0.tgz"
+ integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==
+ dependencies:
+ rrweb-cssom "^0.6.0"
+
+csstype@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+data-urls@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/data-urls/-/data-urls-4.0.0.tgz"
+ integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==
+ dependencies:
+ abab "^2.0.6"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.0"
+
+data-view-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz"
+ integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz"
+ integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-offset@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz"
+ integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+dateformat@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz"
+ integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==
+
+dayjs@^1.11.3:
+ version "1.11.10"
+ resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz"
+ integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
+
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
+ integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decimal.js@^10.4.3:
+ version "10.4.3"
+ resolved "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+
+deep-eql@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.3.tgz"
+ integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
+ dependencies:
+ type-detect "^4.0.0"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+default-user-agent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz"
+ integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==
+ dependencies:
+ os-name "~1.0.3"
+
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-lazy-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+
+define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+ dependencies:
+ define-data-property "^1.0.1"
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+destroy@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+diff@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz"
+ integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+
+digest-header@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz"
+ integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+domexception@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz"
+ integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
+ dependencies:
+ webidl-conversions "^7.0.0"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+echarts@^5.4.1:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/echarts/-/echarts-5.5.0.tgz"
+ integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==
+ dependencies:
+ tslib "2.3.0"
+ zrender "5.5.0"
+
+editorconfig@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz"
+ integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
+ dependencies:
+ "@one-ini/wasm" "0.1.1"
+ commander "^10.0.0"
+ minimatch "9.0.1"
+ semver "^7.5.3"
+
+ee-first@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+electron-to-chromium@^1.4.668:
+ version "1.4.724"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz"
+ integrity sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==
+
+element-plus@^2.2.32:
+ version "2.6.3"
+ resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.6.3.tgz"
+ integrity sha512-U4L/mr+1r+EmAUYUHrs0V/8hHMdBGP07rPymSC72LZCN4jK1UwygQYICegTQ5us4mxeqBvW6wfoEfo003fwCqw==
+ dependencies:
+ "@ctrl/tinycolor" "^3.4.1"
+ "@element-plus/icons-vue" "^2.3.1"
+ "@floating-ui/dom" "^1.0.1"
+ "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
+ "@types/lodash" "^4.14.182"
+ "@types/lodash-es" "^4.17.6"
+ "@vueuse/core" "^9.1.0"
+ async-validator "^4.2.5"
+ dayjs "^1.11.3"
+ escape-html "^1.0.3"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ lodash-unified "^1.0.2"
+ memoize-one "^6.0.0"
+ normalize-wheel-es "^1.2.0"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+end-or-error@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz"
+ integrity sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==
+
+entities@^4.4.0, entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+errno@^0.1.1:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
+ version "1.23.3"
+ resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz"
+ integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.1"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.2"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.6"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.2.1, es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
+es-module-lexer@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz"
+ integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+ dependencies:
+ es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz"
+ integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+esbuild@^0.18.10:
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz"
+ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.18.20"
+ "@esbuild/android-arm64" "0.18.20"
+ "@esbuild/android-x64" "0.18.20"
+ "@esbuild/darwin-arm64" "0.18.20"
+ "@esbuild/darwin-x64" "0.18.20"
+ "@esbuild/freebsd-arm64" "0.18.20"
+ "@esbuild/freebsd-x64" "0.18.20"
+ "@esbuild/linux-arm" "0.18.20"
+ "@esbuild/linux-arm64" "0.18.20"
+ "@esbuild/linux-ia32" "0.18.20"
+ "@esbuild/linux-loong64" "0.18.20"
+ "@esbuild/linux-mips64el" "0.18.20"
+ "@esbuild/linux-ppc64" "0.18.20"
+ "@esbuild/linux-riscv64" "0.18.20"
+ "@esbuild/linux-s390x" "0.18.20"
+ "@esbuild/linux-x64" "0.18.20"
+ "@esbuild/netbsd-x64" "0.18.20"
+ "@esbuild/openbsd-x64" "0.18.20"
+ "@esbuild/sunos-x64" "0.18.20"
+ "@esbuild/win32-arm64" "0.18.20"
+ "@esbuild/win32-ia32" "0.18.20"
+ "@esbuild/win32-x64" "0.18.20"
+
+escalade@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz"
+ integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+
+escape-html@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+escodegen@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz"
+ integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^5.2.0"
+ esutils "^2.0.2"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-config-prettier@^8.3.0:
+ version "8.10.0"
+ resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz"
+ integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==
+
+eslint-plugin-prettier@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz"
+ integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-plugin-vue@^9.0.0, eslint-plugin-vue@^9.9.0:
+ version "9.24.0"
+ resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.24.0.tgz"
+ integrity sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ globals "^13.24.0"
+ natural-compare "^1.4.0"
+ nth-check "^2.1.1"
+ postcss-selector-parser "^6.0.15"
+ semver "^7.6.0"
+ vue-eslint-parser "^9.4.2"
+ xml-name-validator "^4.0.0"
+
+eslint-scope@^5.1.1, eslint-scope@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^7.1.1:
+ version "7.2.2"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
+eslint-visitor-keys@^3.3.0:
+ version "3.4.3"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint-visitor-keys@^3.4.1:
+ version "3.4.3"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint@*, "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.36.0, "eslint@>= 7.28.0", eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=7.28.0:
+ version "8.57.0"
+ resolved "https://registry.npmmirror.com/eslint/-/eslint-8.57.0.tgz"
+ integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.0"
+ "@humanwhocodes/config-array" "^0.11.14"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
+espree@^9.3.1, espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.4.0, esquery@^1.4.2:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estree-walker@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-0.6.1.tgz"
+ integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+eventsource@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz"
+ integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-diff@^1.1.2:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz"
+ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
+
+fast-glob@^3.2.12, fast-glob@^3.2.9:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.17.1"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
+ dependencies:
+ reusify "^1.0.4"
+
+fetch-cookie@^2.0.3:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-2.2.0.tgz"
+ integrity sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==
+ dependencies:
+ set-cookie-parser "^2.4.8"
+ tough-cookie "^4.0.0"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz"
+ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.3"
+ rimraf "^3.0.2"
+
+flatted@^3.2.9:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz"
+ integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+
+follow-redirects@^1.15.6:
+ version "1.15.6"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz"
+ integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
+
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
+foreground-child@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz"
+ integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^4.0.1"
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+formstream@^1.1.0:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz"
+ integrity sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==
+ dependencies:
+ destroy "^1.0.4"
+ mime "^2.5.2"
+ pause-stream "~0.0.11"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+function.prototype.name@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz"
+ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
+functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-func-name@^2.0.1, get-func-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.2.tgz"
+ integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+get-ready@^1.0.0, get-ready@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz"
+ integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==
+
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz"
+ integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
+ dependencies:
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@^10.3.3:
+ version "10.3.12"
+ resolved "https://registry.npmmirror.com/glob/-/glob-10.3.12.tgz"
+ integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^2.3.6"
+ minimatch "^9.0.1"
+ minipass "^7.0.4"
+ path-scurry "^1.10.2"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.6:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^9.2.0:
+ version "9.3.5"
+ resolved "https://registry.npmmirror.com/glob/-/glob-9.3.5.tgz"
+ integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ minimatch "^8.0.2"
+ minipass "^4.2.4"
+ path-scurry "^1.6.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.19.0:
+ version "13.24.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+globals@^13.24.0:
+ version "13.24.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+globalthis@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graceful-fs@^4.1.2:
+ version "4.2.11"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1, has-proto@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz"
+ integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+ dependencies:
+ has-symbols "^1.0.3"
+
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+html-encoding-sniffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz"
+ integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
+ dependencies:
+ whatwg-encoding "^2.0.0"
+
+html-tags@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz"
+ integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
+
+https-proxy-agent@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+humanize-ms@^1.2.0, humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz"
+ integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@^0.4.15:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.3, iconv-lite@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+ignore@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz"
+ integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@^2.0.1, inherits@~2.0.3, inherits@2:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@^1.3.4:
+ version "1.3.8"
+ resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+internal-slot@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz"
+ integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
+ dependencies:
+ es-errors "^1.3.0"
+ hasown "^2.0.0"
+ side-channel "^1.0.4"
+
+ip@^1.1.5:
+ version "1.1.9"
+ resolved "https://registry.npmmirror.com/ip/-/ip-1.1.9.tgz"
+ integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==
+
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz"
+ integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-class-hotfix@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz"
+ integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==
+
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
+is-data-view@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz"
+ integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
+ dependencies:
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-docker@^2.0.0, is-docker@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-fullwidth-code-point@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz"
+ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+is-potential-custom-element-name@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz"
+ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
+is-reference@^1.1.2:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/is-reference/-/is-reference-1.2.1.tgz"
+ integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
+ dependencies:
+ "@types/estree" "*"
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz"
+ integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
+ dependencies:
+ call-bind "^1.0.7"
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-type-of@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz"
+ integrity sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==
+ dependencies:
+ core-util-is "^1.0.2"
+ is-class-hotfix "~0.0.6"
+ isstream "~0.1.2"
+
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
+ dependencies:
+ which-typed-array "^1.1.14"
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz"
+ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+
+jackspeak@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-2.3.6.tgz"
+ integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
+js-base64@^2.5.2:
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz"
+ integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
+
+js-beautify@^1.14.9:
+ version "1.15.1"
+ resolved "https://registry.npmmirror.com/js-beautify/-/js-beautify-1.15.1.tgz"
+ integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==
+ dependencies:
+ config-chain "^1.1.13"
+ editorconfig "^1.0.4"
+ glob "^10.3.3"
+ js-cookie "^3.0.5"
+ nopt "^7.2.0"
+
+js-cookie@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz"
+ integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsdom@*, jsdom@^21.1.0:
+ version "21.1.2"
+ resolved "https://registry.npmmirror.com/jsdom/-/jsdom-21.1.2.tgz"
+ integrity sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==
+ dependencies:
+ abab "^2.0.6"
+ acorn "^8.8.2"
+ acorn-globals "^7.0.0"
+ cssstyle "^3.0.0"
+ data-urls "^4.0.0"
+ decimal.js "^10.4.3"
+ domexception "^4.0.0"
+ escodegen "^2.0.0"
+ form-data "^4.0.0"
+ html-encoding-sniffer "^3.0.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.1"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.4"
+ parse5 "^7.1.2"
+ rrweb-cssom "^0.6.0"
+ saxes "^6.0.0"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.1.2"
+ w3c-xmlserializer "^4.0.0"
+ webidl-conversions "^7.0.0"
+ whatwg-encoding "^2.0.0"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.1"
+ ws "^8.13.0"
+ xml-name-validator "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz"
+ integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==
+
+jstoxml@^2.0.0:
+ version "2.2.9"
+ resolved "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz"
+ integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==
+
+keyv@^4.5.3:
+ version "4.5.4"
+ resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz"
+ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
+ dependencies:
+ json-buffer "3.0.1"
+
+less@*, less@^4.1.3:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz"
+ integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz"
+ integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+local-pkg@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz"
+ integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash-es@*, lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash-unified@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz"
+ integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@*, lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+loupe@^2.3.6:
+ version "2.3.7"
+ resolved "https://registry.npmmirror.com/loupe/-/loupe-2.3.7.tgz"
+ integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
+ dependencies:
+ get-func-name "^2.0.1"
+
+lru-cache@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.2.0.tgz"
+ integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.2:
+ version "0.25.9"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.30.1, magic-string@^0.30.7:
+ version "0.30.8"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz"
+ integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
+memorystream@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz"
+ integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
+
+merge-descriptors@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz"
+ integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
+
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.5, mime@^2.5.2:
+ version "2.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
+ integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^8.0.2:
+ version "8.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-8.0.4.tgz"
+ integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@^9.0.1:
+ version "9.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz"
+ integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@^9.0.3:
+ version "9.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz"
+ integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@9.0.1:
+ version "9.0.1"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz"
+ integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.1.0, minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+minipass@^4.2.4:
+ version "4.2.8"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-4.2.8.tgz"
+ integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==
+
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-7.0.4.tgz"
+ integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
+
+mkdirp@^0.5.1:
+ version "0.5.6"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+mlly@^1.1.0, mlly@^1.2.0:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/mlly/-/mlly-1.6.1.tgz"
+ integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==
+ dependencies:
+ acorn "^8.11.3"
+ pathe "^1.1.2"
+ pkg-types "^1.0.3"
+ ufo "^1.3.2"
+
+ms@^2.0.0, ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+muggle-string@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz"
+ integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==
+
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nanoid@^3.3.7:
+ version "3.3.7"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
+natural-compare-lite@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz"
+ integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+needle@^3.1.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz"
+ integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==
+ dependencies:
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-fetch@^2.6.7:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-releases@^2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz"
+ integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+
+nopt@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/nopt/-/nopt-7.2.0.tgz"
+ integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==
+ dependencies:
+ abbrev "^2.0.0"
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-wheel-es@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz"
+ integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
+
+npm-run-all@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/npm-run-all/-/npm-run-all-4.1.5.tgz"
+ integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ memorystream "^0.3.1"
+ minimatch "^3.0.4"
+ pidtree "^0.3.0"
+ read-pkg "^3.0.0"
+ shell-quote "^1.6.1"
+ string.prototype.padend "^3.0.0"
+
+nth-check@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+nwsapi@^2.2.4:
+ version "2.2.7"
+ resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.7.tgz"
+ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
+
+object-assign@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-inspect@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz"
+ integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+open@^8.4.0:
+ version "8.4.2"
+ resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+optionator@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz"
+ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
+ dependencies:
+ "@aashutoshrathi/word-wrap" "^1.2.3"
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+
+os-name@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz"
+ integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==
+ dependencies:
+ osx-release "^1.0.0"
+ win-release "^1.0.0"
+
+osx-release@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz"
+ integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==
+ dependencies:
+ minimist "^1.1.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
+ dependencies:
+ yocto-queue "^1.0.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz"
+ integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parse5@^7.0.0, parse5@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz"
+ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+ dependencies:
+ entities "^4.4.0"
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-scurry@^1.10.2, path-scurry@^1.6.1:
+ version "1.10.2"
+ resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.2.tgz"
+ integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==
+ dependencies:
+ lru-cache "^10.2.0"
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pathe@^1.1.0, pathe@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz"
+ integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
+
+pathval@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz"
+ integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+
+pause-stream@~0.0.11:
+ version "0.0.11"
+ resolved "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz"
+ integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
+ dependencies:
+ through "~2.3"
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pidtree@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.3.1.tgz"
+ integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz"
+ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinia@^2.0.32:
+ version "2.1.7"
+ resolved "https://registry.npmmirror.com/pinia/-/pinia-2.1.7.tgz"
+ integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==
+ dependencies:
+ "@vue/devtools-api" "^6.5.0"
+ vue-demi ">=0.14.5"
+
+pkg-types@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz"
+ integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
+ dependencies:
+ jsonc-parser "^3.2.0"
+ mlly "^1.2.0"
+ pathe "^1.1.0"
+
+platform@^1.3.1:
+ version "1.3.6"
+ resolved "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz"
+ integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
+
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
+postcss-selector-parser@^6.0.15:
+ version "6.0.16"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz"
+ integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss@^8.4.27, postcss@^8.4.35:
+ version "8.4.38"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz"
+ integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.0"
+ source-map-js "^1.2.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^2.8.4, "prettier@>= 2.0.0", prettier@>=2.0.0:
+ version "2.8.8"
+ resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz"
+ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+pretty-format@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
+ dependencies:
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^17.0.1"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz"
+ integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+psl@^1.1.33:
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz"
+ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+qs@^6.4.0:
+ version "6.12.0"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.12.0.tgz"
+ integrity sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==
+ dependencies:
+ side-channel "^1.0.6"
+
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+react-is@^17.0.1:
+ version "17.0.2"
+ resolved "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz"
+ integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+readable-stream@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+regexp.prototype.flags@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz"
+ integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+ dependencies:
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.10.0, resolve@^1.11.0:
+ version "1.22.8"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^4.1.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-4.4.1.tgz"
+ integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==
+ dependencies:
+ glob "^9.2.0"
+
+rollup-plugin-commonjs@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.npmmirror.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz"
+ integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==
+ dependencies:
+ estree-walker "^0.6.1"
+ is-reference "^1.1.2"
+ magic-string "^0.25.2"
+ resolve "^1.11.0"
+ rollup-pluginutils "^2.8.1"
+
+rollup-plugin-visualizer@^5.9.0:
+ version "5.12.0"
+ resolved "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz"
+ integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==
+ dependencies:
+ open "^8.4.0"
+ picomatch "^2.3.1"
+ source-map "^0.7.4"
+ yargs "^17.5.1"
+
+rollup-pluginutils@^2.8.1:
+ version "2.8.2"
+ resolved "https://registry.npmmirror.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz"
+ integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+ dependencies:
+ estree-walker "^0.6.1"
+
+rollup@^3.27.1:
+ version "3.29.4"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz"
+ integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+rollup@>=1.12.0, "rollup@2.x || 3.x || 4.x":
+ version "4.14.0"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-4.14.0.tgz"
+ integrity sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==
+ dependencies:
+ "@types/estree" "1.0.5"
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.14.0"
+ "@rollup/rollup-android-arm64" "4.14.0"
+ "@rollup/rollup-darwin-arm64" "4.14.0"
+ "@rollup/rollup-darwin-x64" "4.14.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.14.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.14.0"
+ "@rollup/rollup-linux-arm64-musl" "4.14.0"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.14.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.14.0"
+ "@rollup/rollup-linux-s390x-gnu" "4.14.0"
+ "@rollup/rollup-linux-x64-gnu" "4.14.0"
+ "@rollup/rollup-linux-x64-musl" "4.14.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.14.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.14.0"
+ "@rollup/rollup-win32-x64-msvc" "4.14.0"
+ fsevents "~2.3.2"
+
+rrweb-cssom@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz"
+ integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+safe-array-concat@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz"
+ integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz"
+ integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-regex "^1.1.4"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4, sax@>=0.6.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz"
+ integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
+
+sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+saxes@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz"
+ integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
+ dependencies:
+ xmlchars "^2.2.0"
+
+sdk-base@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz"
+ integrity sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==
+ dependencies:
+ get-ready "~1.0.0"
+
+semver@^5.0.1:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.5.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.6.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.3.6:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.3.7:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.5.3:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.5.4:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.6.0:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+set-cookie-parser@^2.4.8:
+ version "2.6.0"
+ resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz"
+ integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==
+
+set-function-length@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+set-function-name@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@^1.6.1:
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz"
+ integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
+
+side-channel@^1.0.4, side-channel@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz"
+ integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
+siginfo@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz"
+ integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
+
+signal-exit@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz"
+ integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==
+ dependencies:
+ ansi-styles "^6.0.0"
+ is-fullwidth-code-point "^4.0.0"
+
+sortablejs@^1.14.0:
+ version "1.15.2"
+ resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.2.tgz"
+ integrity sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==
+
+source-map-js@^1.0.2, source-map-js@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz"
+ integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+
+source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+source-map@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+spdx-correct@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz"
+ integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz"
+ integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.17"
+ resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz"
+ integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==
+
+stackback@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz"
+ integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
+
+statuses@^1.3.1:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
+std-env@^3.3.1:
+ version "3.7.0"
+ resolved "https://registry.npmmirror.com/std-env/-/std-env-3.7.0.tgz"
+ integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
+
+stream-http@2.8.2:
+ version "2.8.2"
+ resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz"
+ integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-wormhole@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz"
+ integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string.prototype.padend@^3.0.0:
+ version "3.1.6"
+ resolved "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz"
+ integrity sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trim@^1.2.9:
+ version "1.2.9"
+ resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz"
+ integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimend@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz"
+ integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz"
+ integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz"
+ integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+strip-literal@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-1.3.0.tgz"
+ integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==
+ dependencies:
+ acorn "^8.10.0"
+
+stylus@*, stylus@^0.59.0:
+ version "0.59.0"
+ resolved "https://registry.npmmirror.com/stylus/-/stylus-0.59.0.tgz"
+ integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==
+ dependencies:
+ "@adobe/css-tools" "^4.0.1"
+ debug "^4.3.2"
+ glob "^7.1.6"
+ sax "~1.2.4"
+ source-map "^0.7.3"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
+through@~2.3:
+ version "2.3.8"
+ resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+tinybench@^2.3.1:
+ version "2.6.0"
+ resolved "https://registry.npmmirror.com/tinybench/-/tinybench-2.6.0.tgz"
+ integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==
+
+tinypool@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/tinypool/-/tinypool-0.4.0.tgz"
+ integrity sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==
+
+tinyspy@^1.0.2:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/tinyspy/-/tinyspy-1.1.1.tgz"
+ integrity sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
+ integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+tough-cookie@^4.0.0, tough-cookie@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.3.tgz"
+ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.2.0"
+ url-parse "^1.5.3"
+
+tr46@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-4.1.1.tgz"
+ integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
+ dependencies:
+ punycode "^2.3.0"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
+tslib@^1.8.1:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.1.0, tslib@^2.3.0, tslib@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
+ integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
+tsutils@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-detect@^4.0.0, type-detect@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+typed-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz"
+ integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz"
+ integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz"
+ integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-length@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz"
+ integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+
+typescript@*, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.4.4, typescript@~4.8.4:
+ version "4.8.4"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-4.8.4.tgz"
+ integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
+
+ufo@^1.3.2:
+ version "1.5.3"
+ resolved "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz"
+ integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
+unescape@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz"
+ integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+
+universalify@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz"
+ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz"
+ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+url-parse@^1.5.3:
+ version "1.5.10"
+ resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+urllib@2.41.0:
+ version "2.41.0"
+ resolved "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz"
+ integrity sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==
+ dependencies:
+ any-promise "^1.3.0"
+ content-type "^1.0.2"
+ debug "^2.6.9"
+ default-user-agent "^1.0.0"
+ digest-header "^1.0.0"
+ ee-first "~1.1.1"
+ formstream "^1.1.0"
+ humanize-ms "^1.2.0"
+ iconv-lite "^0.4.15"
+ ip "^1.1.5"
+ pump "^3.0.0"
+ qs "^6.4.0"
+ statuses "^1.3.1"
+ utility "^1.16.1"
+
+util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+utility@^1.16.1, utility@^1.18.0:
+ version "1.18.0"
+ resolved "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz"
+ integrity sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==
+ dependencies:
+ copy-to "^2.0.1"
+ escape-html "^1.0.3"
+ mkdirp "^0.5.1"
+ mz "^2.7.0"
+ unescape "^1.0.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vite-node@0.29.8:
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/vite-node/-/vite-node-0.29.8.tgz"
+ integrity sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==
+ dependencies:
+ cac "^6.7.14"
+ debug "^4.3.4"
+ mlly "^1.1.0"
+ pathe "^1.1.0"
+ picocolors "^1.0.0"
+ vite "^3.0.0 || ^4.0.0"
+
+vite-plugin-commonjs@^0.10.1:
+ version "0.10.1"
+ resolved "https://registry.npmmirror.com/vite-plugin-commonjs/-/vite-plugin-commonjs-0.10.1.tgz"
+ integrity sha512-taP8R9kYGlCW5OzkVR0UIWRCnG6rSxeWWuA7tnU5b9t5MniibOnDY219NhisTeDhJAeGT8cEnrhVWZ9A5yD+vg==
+ dependencies:
+ acorn "^8.8.2"
+ fast-glob "^3.2.12"
+ magic-string "^0.30.1"
+ vite-plugin-dynamic-import "^1.5.0"
+
+vite-plugin-dynamic-import@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/vite-plugin-dynamic-import/-/vite-plugin-dynamic-import-1.5.0.tgz"
+ integrity sha512-Qp85c+AVJmLa8MLni74U4BDiWpUeFNx7NJqbGZyR2XJOU7mgW0cb7nwlAMucFyM4arEd92Nfxp4j44xPi6Fu7g==
+ dependencies:
+ acorn "^8.8.2"
+ es-module-lexer "^1.2.1"
+ fast-glob "^3.2.12"
+ magic-string "^0.30.1"
+
+vite-plugin-require-transform@^1.0.21:
+ version "1.0.21"
+ resolved "https://registry.npmmirror.com/vite-plugin-require-transform/-/vite-plugin-require-transform-1.0.21.tgz"
+ integrity sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==
+ dependencies:
+ "@babel/generator" "^7.22.5"
+ "@babel/parser" "^7.22.5"
+ "@babel/traverse" "^7.22.5"
+ "@babel/types" "^7.22.5"
+
+"vite@^3.0.0 || ^4.0.0", "vite@^4.0.0 || ^5.0.0", vite@^4.2.0:
+ version "4.5.3"
+ resolved "https://registry.npmmirror.com/vite/-/vite-4.5.3.tgz"
+ integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==
+ dependencies:
+ esbuild "^0.18.10"
+ postcss "^8.4.27"
+ rollup "^3.27.1"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vitest@^0.29.1:
+ version "0.29.8"
+ resolved "https://registry.npmmirror.com/vitest/-/vitest-0.29.8.tgz"
+ integrity sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==
+ dependencies:
+ "@types/chai" "^4.3.4"
+ "@types/chai-subset" "^1.3.3"
+ "@types/node" "*"
+ "@vitest/expect" "0.29.8"
+ "@vitest/runner" "0.29.8"
+ "@vitest/spy" "0.29.8"
+ "@vitest/utils" "0.29.8"
+ acorn "^8.8.1"
+ acorn-walk "^8.2.0"
+ cac "^6.7.14"
+ chai "^4.3.7"
+ debug "^4.3.4"
+ local-pkg "^0.4.2"
+ pathe "^1.1.0"
+ picocolors "^1.0.0"
+ source-map "^0.6.1"
+ std-env "^3.3.1"
+ strip-literal "^1.0.0"
+ tinybench "^2.3.1"
+ tinypool "^0.4.0"
+ tinyspy "^1.0.2"
+ vite "^3.0.0 || ^4.0.0"
+ vite-node "0.29.8"
+ why-is-node-running "^2.2.2"
+
+vue-component-type-helpers@^2.0.0:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-2.0.7.tgz"
+ integrity sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==
+
+vue-demi@*:
+ version "0.14.7"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz"
+ integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==
+
+vue-demi@>=0.14.5:
+ version "0.14.7"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz"
+ integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==
+
+vue-draggable-next@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/vue-draggable-next/-/vue-draggable-next-2.2.1.tgz"
+ integrity sha512-EAMS1IRHF0kZO0o5PMOinsQsXIqsrKT1hKmbICxG3UEtn7zLFkLxlAtajcCcUTisNvQ6TtCB5COjD9a1raNADw==
+
+vue-eslint-parser@^9.1.1, vue-eslint-parser@^9.4.2:
+ version "9.4.2"
+ resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz"
+ integrity sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==
+ dependencies:
+ debug "^4.3.4"
+ eslint-scope "^7.1.1"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.3.1"
+ esquery "^1.4.0"
+ lodash "^4.17.21"
+ semver "^7.3.6"
+
+vue-router@^4.1.6:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.3.0.tgz"
+ integrity sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==
+ dependencies:
+ "@vue/devtools-api" "^6.5.1"
+
+vue-template-compiler@^2.7.14:
+ version "2.7.16"
+ resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
+ integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.2.0"
+
+vue-tsc@^1.2.0:
+ version "1.8.27"
+ resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz"
+ integrity sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==
+ dependencies:
+ "@volar/typescript" "~1.11.1"
+ "@vue/language-core" "1.8.27"
+ semver "^7.5.4"
+
+"vue@^2.6.14 || ^3.3.0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.2, vue@^3.2.25, vue@^3.2.47, vue@3.4.21:
+ version "3.4.21"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.4.21.tgz"
+ integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
+ dependencies:
+ "@vue/compiler-dom" "3.4.21"
+ "@vue/compiler-sfc" "3.4.21"
+ "@vue/runtime-dom" "3.4.21"
+ "@vue/server-renderer" "3.4.21"
+ "@vue/shared" "3.4.21"
+
+vuex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz"
+ integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.11"
+
+w3c-xmlserializer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz"
+ integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
+ dependencies:
+ xml-name-validator "^4.0.0"
+
+wangeditor@^4.7.15:
+ version "4.7.15"
+ resolved "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz"
+ integrity sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ "@babel/runtime-corejs3" "^7.11.2"
+ tslib "^2.1.0"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+webidl-conversions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
+ integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
+
+whatwg-encoding@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz"
+ integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
+ dependencies:
+ iconv-lite "0.6.3"
+
+whatwg-mimetype@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz"
+ integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
+
+whatwg-url@^12.0.0, whatwg-url@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-12.0.1.tgz"
+ integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==
+ dependencies:
+ tr46 "^4.1.1"
+ webidl-conversions "^7.0.0"
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-typed-array@^1.1.14, which-typed-array@^1.1.15:
+ version "1.1.15"
+ resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz"
+ integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+why-is-node-running@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz"
+ integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
+ dependencies:
+ siginfo "^2.0.0"
+ stackback "0.0.2"
+
+win-release@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz"
+ integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==
+ dependencies:
+ semver "^5.0.1"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+ws@^7.4.5:
+ version "7.5.9"
+ resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
+ws@^8.13.0:
+ version "8.16.0"
+ resolved "https://registry.npmmirror.com/ws/-/ws-8.16.0.tgz"
+ integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==
+
+xml-name-validator@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
+ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+
+xml2js@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz"
+ integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+xtend@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^17.5.1:
+ version "17.7.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.0.0.tgz"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+
+zrender@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz"
+ integrity sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==
+ dependencies:
+ tslib "2.3.0"
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v9.bin"
new file mode 100644
index 0000000..35091ed
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v9.bin"
new file mode 100644
index 0000000..d5ce478
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin"
new file mode 100644
index 0000000..3efefc0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2"
new file mode 100644
index 0000000..431eaad
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2"
new file mode 100644
index 0000000..85ef36f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo"
new file mode 100644
index 0000000..7931da5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin"
new file mode 100644
index 0000000..0f4d989
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj"
new file mode 100644
index 0000000..552ea92
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj"
@@ -0,0 +1,47 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <OutputType>Library</OutputType>
+ <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <Configurations>Debug;Release;Dev</Configurations>
+ <Platforms>AnyCPU;x86</Platforms>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|AnyCPU'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj"
new file mode 100644
index 0000000..a900279
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj"
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj" />
+ <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+ <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/obj/WIDESEA_BusinessServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/obj/WIDESEA_BusinessServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/obj/WIDESEA_BusinessServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj"
new file mode 100644
index 0000000..42aa7da
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+ <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/obj/WIDESEA_BusinessesRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/obj/WIDESEA_BusinessesRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/obj/WIDESEA_BusinessesRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
new file mode 100644
index 0000000..26765d6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
@@ -0,0 +1,23 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Compile Remove="Location\**" />
+ <EmbeddedResource Remove="Location\**" />
+ <None Remove="Location\**" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/obj/WIDESEA_Common.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/obj/WIDESEA_Common.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/obj/WIDESEA_Common.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj"
new file mode 100644
index 0000000..ebc0ae3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj"
@@ -0,0 +1,41 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <Version>1.0.1</Version>
+ <Authors>test</Authors>
+ <Description>dddddddddddddddddddddddddddddddddddd</Description>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Autofac" Version="8.0.0" />
+ <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
+ <PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
+ <PackageReference Include="AutoMapper" Version="13.0.1" />
+ <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.8" />
+ <PackageReference Include="log4net" Version="2.0.17" />
+ <PackageReference Include="Magicodes.IE.EPPlus" Version="2.7.5.2" />
+ <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.2" />
+ <PackageReference Include="MailKit" Version="4.7.1.1" />
+ <PackageReference Include="Masuit.Tools.Core" Version="2024.5.6" />
+ <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.29" />
+ <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
+ <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ <PackageReference Include="OfficeOpenXml.Core.ExcelPackage" Version="1.0.0" />
+ <PackageReference Include="SkiaSharp" Version="2.88.8" />
+ <PackageReference Include="SqlSugarCore" Version="5.1.4.152" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.0" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.5" />
+ <PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.5.0" />
+ <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Attribute\" />
+ <Folder Include="ServiceExtensions\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/WIDESEA_Core.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/WIDESEA_Core.csproj.nuget.g.targets"
new file mode 100644
index 0000000..c9aae91
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/WIDESEA_Core.csproj.nuget.g.targets"
@@ -0,0 +1,8 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj"
new file mode 100644
index 0000000..3c9bb11
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/obj/WIDESEA_DTO.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/obj/WIDESEA_DTO.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/obj/WIDESEA_DTO.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj"
new file mode 100644
index 0000000..2bd4746
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/obj/WIDESEA_IBusinessServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/obj/WIDESEA_IBusinessServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/obj/WIDESEA_IBusinessServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj"
new file mode 100644
index 0000000..17d93c8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+ <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/obj/WIDESEA_IBusinessesRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/obj/WIDESEA_IBusinessesRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/obj/WIDESEA_IBusinessesRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/obj/WIDESEA_IRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/obj/WIDESEA_IRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/obj/WIDESEA_IRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj"
new file mode 100644
index 0000000..1867b89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_Repository\WIDESEA_Repository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/obj/WIDESEA_IServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/obj/WIDESEA_IServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IServices/obj/WIDESEA_IServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/WIDESEA_IStoragIntegrationServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/WIDESEA_IStoragIntegrationServices.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/WIDESEA_IStoragIntegrationServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageBasicRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageBasicRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageBasicRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageOutBasicRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageOutBasicRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/WIDESEA_IStorageOutBasicRepository.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj"
new file mode 100644
index 0000000..e8322b3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_StorageBasicRepository\WIDESEA_StorageBasicRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageBasicServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageBasicServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageBasicServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/WIDESEA_IStorageOutBasicServices.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/WIDESEA_IStorageOutOrderRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/WIDESEA_IStorageOutOrderRepository.csproj"
new file mode 100644
index 0000000..8b9ba57
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/WIDESEA_IStorageOutOrderRepository.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/obj/WIDESEA_IStorageOutOrderRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/obj/WIDESEA_IStorageOutOrderRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/obj/WIDESEA_IStorageOutOrderRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/WIDESEA_IStorageOutOrderServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/WIDESEA_IStorageOutOrderServices.csproj"
new file mode 100644
index 0000000..fd4d5b0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/WIDESEA_IStorageOutOrderServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_StorageOutOrderRepository\WIDESEA_StorageOutOrderRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/WIDESEA_IStorageOutOrderServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageOutTaskRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageOutTaskRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageOutTaskRepository.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageTaskRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageTaskRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/WIDESEA_IStorageTaskRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj"
new file mode 100644
index 0000000..ceba40d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_StorageTaskRepository\WIDESEA_StorageTaskRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageOutTaskServices.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageTaskServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageTaskServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/WIDESEA_IStorageTaskServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj"
new file mode 100644
index 0000000..30ce2d7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj"
@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
+ <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Models\Inbound\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/obj/WIDESEA_Model.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/obj/WIDESEA_Model.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/obj/WIDESEA_Model.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj"
new file mode 100644
index 0000000..3311fdb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj"
@@ -0,0 +1,17 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="AutoMapper" Version="13.0.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IRepository\WIDESEA_IRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/obj/WIDESEA_Repository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/obj/WIDESEA_Repository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Repository/obj/WIDESEA_Repository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj"
new file mode 100644
index 0000000..4944b62
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj"
@@ -0,0 +1,24 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <WarningLevel>0</WarningLevel>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <WarningLevel>0</WarningLevel>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/obj/WIDESEA_Services.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/obj/WIDESEA_Services.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/obj/WIDESEA_Services.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj"
new file mode 100644
index 0000000..0c382c9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj"
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
+ <ProjectReference Include="..\WIDESEA_StorageBasicServices\WIDESEA_StorageBasicServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/WIDESEA_StoragIntegrationServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/WIDESEA_StoragIntegrationServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/WIDESEA_StoragIntegrationServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj"
new file mode 100644
index 0000000..c7d86aa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj"
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IStorageBasicRepository\WIDESEA_IStorageBasicRepository.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Wheels\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageBasicRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageBasicRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageBasicRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageOutBasicRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageOutBasicRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/WIDESEA_StorageOutBasicRepository.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj"
new file mode 100644
index 0000000..973ce58
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj"
@@ -0,0 +1,26 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageOutOrderService\WIDESEA_IStorageOutOrderServices.csproj" />
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageBasicServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageBasicServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageBasicServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/obj/WIDESEA_StorageOutBasicServices.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/WIDESEA_StorageOutOrderRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/WIDESEA_StorageOutOrderRepository.csproj"
new file mode 100644
index 0000000..3b3b363
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/WIDESEA_StorageOutOrderRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IStorageOutOrderRepository\WIDESEA_IStorageOutOrderRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/obj/WIDESEA_StorageOutOrderRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/obj/WIDESEA_StorageOutOrderRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/obj/WIDESEA_StorageOutOrderRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/WIDESEA_StorageOutOrderServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/WIDESEA_StorageOutOrderServices.csproj"
new file mode 100644
index 0000000..4d460a6
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/WIDESEA_StorageOutOrderServices.csproj"
@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageOutOrderService\WIDESEA_IStorageOutOrderServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/WIDESEA_StorageOutOrderServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj"
new file mode 100644
index 0000000..20acbba
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_IStorageTaskRepository\WIDESEA_IStorageTaskRepository.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageOutTaskRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageOutTaskRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageOutTaskRepository.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageTaskRepository.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageTaskRepository.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/WIDESEA_StorageTaskRepository.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj"
new file mode 100644
index 0000000..8b2f84d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj"
@@ -0,0 +1,26 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageOutOrderService\WIDESEA_IStorageOutOrderServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskService.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskService.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskService.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..49f8987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageOutTaskServices.csproj.nuget.g.targets"
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageTaskServices.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageTaskServices.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/WIDESEA_StorageTaskServices.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj"
new file mode 100644
index 0000000..132c02c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj"
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/WIDESEA_Tasks.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/WIDESEA_Tasks.csproj.nuget.g.targets"
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/WIDESEA_Tasks.csproj.nuget.g.targets"
@@ -0,0 +1,2 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
new file mode 100644
index 0000000..bb25daf
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
@@ -0,0 +1,474 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34701.34
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_WMSServer", "WIDESEA_WMSServer\WIDESEA_WMSServer.csproj", "{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Core", "WIDESEA_Core\WIDESEA_Core.csproj", "{111BD7AA-9749-4506-9772-79F9EF14754C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Common", "WIDESEA_Common\WIDESEA_Common.csproj", "{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Model", "WIDESEA_Model\WIDESEA_Model.csproj", "{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IRepository", "WIDESEA_IRepository\WIDESEA_IRepository.csproj", "{B5C7DC02-077C-4255-A369-600D033A4C23}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Repository", "WIDESEA_Repository\WIDESEA_Repository.csproj", "{41C50E65-7C73-4BD0-9773-2A74F1587EE2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IServices", "WIDESEA_IServices\WIDESEA_IServices.csproj", "{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Services", "WIDESEA_Services\WIDESEA_Services.csproj", "{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Tasks", "WIDESEA_Tasks\WIDESEA_Tasks.csproj", "{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{60DE2920-37C6-4C2B-A053-6B1B2DAF047A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repository", "Repository", "{56D014A3-EB8D-4EF5-A751-3BAA084519D0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_DTO", "WIDESEA_DTO\WIDESEA_DTO.csproj", "{929DF936-042C-4EEC-8722-A831FC2F0AEA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogLibrary", "LogLibrary\LogLibrary.csproj", "{992DA9CB-143C-426B-B27D-E4DA3B863A99}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IBusinessesRepository", "WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj", "{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_BusinessesRepository", "WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj", "{3DF4C096-7431-4484-BE38-28FAD8CA1540}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IBusinessServices", "WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj", "{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_BusinessServices", "WIDESEA_BusinessServices\WIDESEA_BusinessServices.csproj", "{BA78CC65-6D17-4C76-8285-DC6B6165DA17}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageOutOrderRepository", "WIDESEA_IStorageOutOrderRepository\WIDESEA_IStorageOutOrderRepository.csproj", "{9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageOutOrderRepository", "WIDESEA_StorageOutOrderRepository\WIDESEA_StorageOutOrderRepository.csproj", "{ABFDA4F8-921E-46D6-8F13-2588759B7F59}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IService", "IService", "{A73C1AFF-FF92-4825-B607-2E908077EBA4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IRepository", "IRepository", "{B131DEBD-A555-490B-B448-46425298E427}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repository", "Repository", "{798C4C07-A3B2-47AD-A69C-922D5217B5CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageOutOrderServices", "WIDESEA_IStorageOutOrderService\WIDESEA_IStorageOutOrderServices.csproj", "{2BB1F129-E90F-40B2-9487-FEA102EE48C4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageOutOrderServices", "WIDESEA_StorageOutOrderServices\WIDESEA_StorageOutOrderServices.csproj", "{B26D44F5-C265-4A24-BC9F-2261075A6F69}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageBasicRepository", "WIDESEA_IStorageBasicRepository\WIDESEA_IStorageBasicRepository.csproj", "{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageTaskRepository", "WIDESEA_IStorageTaskRepository\WIDESEA_IStorageTaskRepository.csproj", "{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageBasicRepository", "WIDESEA_StorageBasicRepository\WIDESEA_StorageBasicRepository.csproj", "{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageTaskRepository", "WIDESEA_StorageTaskRepository\WIDESEA_StorageTaskRepository.csproj", "{1614316C-827D-4C2C-B9D3-A62E25AF1827}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageBasicServices", "WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj", "{B8B1C352-0398-4A54-B202-D774D48367EB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageTaskServices", "WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj", "{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageBasicServices", "WIDESEA_StorageBasicServices\WIDESEA_StorageBasicServices.csproj", "{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageTaskServices", "WIDESEA_StorageTaskServices\WIDESEA_StorageTaskServices.csproj", "{9912BD12-4CF7-4A91-8203-47C9C125004C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9BA96018-EF8A-4D84-8E72-DA697FA5EAF8}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_StoragIntegrationServices", "WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj", "{55326F38-372A-4606-B7FB-8C01BBAEC4FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IStoragIntegrationServices", "WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj", "{94D572FA-810E-4897-B673-AF988FD4019E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x86 = Debug|x86
+ Dev|Any CPU = Dev|Any CPU
+ Dev|x86 = Dev|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.Build.0 = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.Build.0 = Debug|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.ActiveCfg = Release|Any CPU
+ {D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.Build.0 = Release|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.Build.0 = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.Build.0 = Debug|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.ActiveCfg = Release|Any CPU
+ {111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.Build.0 = Release|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.Build.0 = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.Build.0 = Debug|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.ActiveCfg = Release|Any CPU
+ {AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.Build.0 = Release|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.Build.0 = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.Build.0 = Debug|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.Build.0 = Release|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.ActiveCfg = Release|Any CPU
+ {00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.Build.0 = Release|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|x86.Build.0 = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|x86.Build.0 = Debug|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Release|x86.ActiveCfg = Release|Any CPU
+ {B5C7DC02-077C-4255-A369-600D033A4C23}.Release|x86.Build.0 = Release|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|x86.Build.0 = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|x86.Build.0 = Debug|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|x86.ActiveCfg = Release|Any CPU
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|x86.Build.0 = Release|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|x86.Build.0 = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|x86.Build.0 = Debug|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|x86.ActiveCfg = Release|Any CPU
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|x86.Build.0 = Release|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|x86.Build.0 = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|x86.Build.0 = Debug|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|x86.ActiveCfg = Release|Any CPU
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|x86.Build.0 = Release|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|x86.Build.0 = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|x86.Build.0 = Debug|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|x86.ActiveCfg = Release|Any CPU
+ {3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|x86.Build.0 = Release|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.Build.0 = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.Build.0 = Debug|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.ActiveCfg = Release|Any CPU
+ {929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.Build.0 = Release|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|x86.ActiveCfg = Debug|x86
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|x86.Build.0 = Debug|x86
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|Any CPU.ActiveCfg = Dev|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|Any CPU.Build.0 = Dev|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|x86.ActiveCfg = Dev|x86
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|x86.Build.0 = Dev|x86
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|x86.ActiveCfg = Release|x86
+ {992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|x86.Build.0 = Release|x86
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|x86.Build.0 = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|x86.Build.0 = Debug|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|x86.ActiveCfg = Release|Any CPU
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|x86.Build.0 = Release|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|x86.Build.0 = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|x86.Build.0 = Debug|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|x86.ActiveCfg = Release|Any CPU
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|x86.Build.0 = Release|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|x86.Build.0 = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|x86.Build.0 = Debug|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|x86.ActiveCfg = Release|Any CPU
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|x86.Build.0 = Release|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|x86.Build.0 = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|x86.Build.0 = Debug|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|x86.ActiveCfg = Release|Any CPU
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|x86.Build.0 = Release|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Debug|x86.Build.0 = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Dev|x86.Build.0 = Debug|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Release|x86.ActiveCfg = Release|Any CPU
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE}.Release|x86.Build.0 = Release|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Debug|x86.Build.0 = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Dev|x86.Build.0 = Debug|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Release|x86.ActiveCfg = Release|Any CPU
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59}.Release|x86.Build.0 = Release|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Debug|x86.Build.0 = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Dev|x86.Build.0 = Debug|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Release|x86.ActiveCfg = Release|Any CPU
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4}.Release|x86.Build.0 = Release|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Debug|x86.Build.0 = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Dev|x86.Build.0 = Debug|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Release|x86.ActiveCfg = Release|Any CPU
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69}.Release|x86.Build.0 = Release|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|x86.Build.0 = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|x86.Build.0 = Debug|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|x86.ActiveCfg = Release|Any CPU
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|x86.Build.0 = Release|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|x86.Build.0 = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|x86.Build.0 = Debug|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|x86.ActiveCfg = Release|Any CPU
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|x86.Build.0 = Release|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|x86.Build.0 = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|x86.Build.0 = Debug|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|x86.ActiveCfg = Release|Any CPU
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|x86.Build.0 = Release|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|x86.Build.0 = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|x86.Build.0 = Debug|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|x86.ActiveCfg = Release|Any CPU
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|x86.Build.0 = Release|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|x86.Build.0 = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|x86.Build.0 = Debug|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Release|x86.ActiveCfg = Release|Any CPU
+ {B8B1C352-0398-4A54-B202-D774D48367EB}.Release|x86.Build.0 = Release|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|x86.Build.0 = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|x86.Build.0 = Debug|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|x86.ActiveCfg = Release|Any CPU
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|x86.Build.0 = Release|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|x86.Build.0 = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|x86.Build.0 = Debug|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|x86.ActiveCfg = Release|Any CPU
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|x86.Build.0 = Release|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|x86.Build.0 = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|x86.Build.0 = Debug|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|x86.ActiveCfg = Release|Any CPU
+ {9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|x86.Build.0 = Release|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Debug|x86.Build.0 = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Dev|x86.Build.0 = Debug|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Release|x86.ActiveCfg = Release|Any CPU
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC}.Release|x86.Build.0 = Release|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Debug|x86.Build.0 = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Dev|Any CPU.Build.0 = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Dev|x86.ActiveCfg = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Dev|x86.Build.0 = Debug|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Release|x86.ActiveCfg = Release|Any CPU
+ {94D572FA-810E-4897-B673-AF988FD4019E}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {B5C7DC02-077C-4255-A369-600D033A4C23} = {B131DEBD-A555-490B-B448-46425298E427}
+ {41C50E65-7C73-4BD0-9773-2A74F1587EE2} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+ {1C8F84A9-7812-4435-B833-FF26A9A3DD4C} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ {F512AFDB-D45D-4979-BC8C-0BA7FBE8F583} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {FBC88231-BC8E-4AA8-BD60-0A13FE463EF1} = {B131DEBD-A555-490B-B448-46425298E427}
+ {3DF4C096-7431-4484-BE38-28FAD8CA1540} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+ {1E26EB6C-4AD1-4140-83FE-777218EE9DF5} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ {BA78CC65-6D17-4C76-8285-DC6B6165DA17} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {9AA688B0-B3B1-49B9-A6E0-060E266E6EAE} = {B131DEBD-A555-490B-B448-46425298E427}
+ {ABFDA4F8-921E-46D6-8F13-2588759B7F59} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+ {A73C1AFF-FF92-4825-B607-2E908077EBA4} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+ {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+ {B131DEBD-A555-490B-B448-46425298E427} = {56D014A3-EB8D-4EF5-A751-3BAA084519D0}
+ {798C4C07-A3B2-47AD-A69C-922D5217B5CA} = {56D014A3-EB8D-4EF5-A751-3BAA084519D0}
+ {2BB1F129-E90F-40B2-9487-FEA102EE48C4} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ {B26D44F5-C265-4A24-BC9F-2261075A6F69} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D} = {B131DEBD-A555-490B-B448-46425298E427}
+ {CCF1C1DE-C80D-4476-B35F-1BF068E4185E} = {B131DEBD-A555-490B-B448-46425298E427}
+ {40B47F57-BBC7-42D5-ABE4-11F0E469DF30} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+ {1614316C-827D-4C2C-B9D3-A62E25AF1827} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+ {B8B1C352-0398-4A54-B202-D774D48367EB} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ {4BDE58B2-5B2E-480B-932F-D63C2A7D557C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {9912BD12-4CF7-4A91-8203-47C9C125004C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {55326F38-372A-4606-B7FB-8C01BBAEC4FC} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+ {94D572FA-810E-4897-B673-AF988FD4019E} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {599A7267-7402-4143-84AE-9B407FC2BB69}
+ EndGlobalSection
+EndGlobal
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml"
new file mode 100644
index 0000000..b2d7dc4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml"
@@ -0,0 +1,21 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+ <PropertyGroup>
+ <DeleteExistingFiles>false</DeleteExistingFiles>
+ <ExcludeApp_Data>false</ExcludeApp_Data>
+ <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+ <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+ <LastUsedPlatform>Any CPU</LastUsedPlatform>
+ <PublishProvider>FileSystem</PublishProvider>
+ <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
+ <WebPublishMethod>FileSystem</WebPublishMethod>
+ <_TargetId>Folder</_TargetId>
+ <SiteUrlToLaunchAfterPublish />
+ <TargetFramework>net6.0</TargetFramework>
+ <ProjectGuid>d81a65b5-47d1-40c1-8fde-7d24ff003f51</ProjectGuid>
+ <SelfContained>false</SelfContained>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml"
new file mode 100644
index 0000000..36847ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+ <PropertyGroup>
+ <DeleteExistingFiles>false</DeleteExistingFiles>
+ <ExcludeApp_Data>false</ExcludeApp_Data>
+ <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+ <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+ <LastUsedPlatform>Any CPU</LastUsedPlatform>
+ <PublishProvider>FileSystem</PublishProvider>
+ <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
+ <WebPublishMethod>FileSystem</WebPublishMethod>
+ <_TargetId>Folder</_TargetId>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj"
new file mode 100644
index 0000000..6091c76
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj"
@@ -0,0 +1,44 @@
+锘�<Project Sdk="Microsoft.NET.Sdk.Web">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <GenerateDocumentationFile>True</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Content Remove="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
+ <None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_User.tsv" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Remove="index.html" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <EmbeddedResource Include="index.html" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\WIDESEA_BusinessServices\WIDESEA_BusinessServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
+ <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_StorageBasicServices\WIDESEA_StorageBasicServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_StorageOutOrderServices\WIDESEA_StorageOutOrderServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_StorageTaskServices\WIDESEA_StorageTaskServices.csproj" />
+ <ProjectReference Include="..\WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj" />
+ </ItemGroup>
+</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/WIDESEA_WMSServer.csproj.nuget.g.targets" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/WIDESEA_WMSServer.csproj.nuget.g.targets"
new file mode 100644
index 0000000..6d30475
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/WIDESEA_WMSServer.csproj.nuget.g.targets"
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <Import Project="$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
+ <Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.6\buildTransitive\net6.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231\0501\051/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231/\351\205\215\351\200\201\347\263\273\347\273\237\345\235\220\346\240\207\345\233\276.dwg" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231\0501\051/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231/\351\205\215\351\200\201\347\263\273\347\273\237\345\235\220\346\240\207\345\233\276.dwg"
new file mode 100644
index 0000000..e6e301c
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231\0501\051/\350\275\246\350\275\256\345\216\213\350\243\205WCS\344\272\244\344\272\222\350\265\204\346\226\231/\351\205\215\351\200\201\347\263\273\347\273\237\345\235\220\346\240\207\345\233\276.dwg"
Binary files differ
--
Gitblit v1.9.3