From 1179656cddcb199d2b08324214e011bb8c72cb81 Mon Sep 17 00:00:00 2001 From: 陈鑫涛 <10125295+chen-xintao97@user.noreply.gitee.com> Date: Tue, 27 May 2025 14:58:25 +0800 Subject: [PATCH] 移动端 --- .umirc.ts | 9 +++++++++ package.json | 3 ++- src/components/Common/CommonListSelectProductMaterial.js | 2 +- src/components/Common/PrintPdf/PreviewPdf.js | 2 +- src/components/PrintPdf/PreviewPdf.js | 2 +- src/components/productionSchedule/productionPlanChangeMacheInfo.js | 2 +- src/components/productionScheduleTree/productionPlanChangeMacheInfo.js | 2 +- src/components/productionScheduleTree/productionScheduleTreeBack.js | 2 +- src/mobile/common/BarCodeUtil.js | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileBase.js | 742 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileBill.js | 1282 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileBillEvent.js | 1764 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileChar.js | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileClassifyEvent.js | 536 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileComponent.js | 477 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileList.js | 410 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileListEvent.js | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileModalList.jsx | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobilePrintPdf.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileSearchComponent.js | 629 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileStep.js | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileSubBill.js | 2867 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileSubBillEvent.js | 2020 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileTabBill.js | 1734 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileToolBar.js | 539 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileView.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileViewMaster.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/CommobileViewSlave.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/ContactsInfoMobile.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/ContactsMobile.js | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/DeviceMobile.js | 301 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/ExamineMobile.js | 581 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/ExamineMobile1.js | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/MessageMobile.js | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/MyselfMobile.js | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/NewsMobile.js | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/ProcessReportMobile.js | 553 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/RevisePasswordMobile.js | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/SceneCssMobile.js | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/SceneMobile.js | 247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/SceneMobile.less | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/SceneSrmMobile.js | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/common/WorkBenchMobile.js | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/FileManageMobile.js | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/FileManageMobileWx.js | 497 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/FileShowMobile.js | 303 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/fileManage.less | 42 ++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/modal.jsx | 43 +++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/preView.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/components/preView.less | 22 ++++++++++++++++++++++ src/mobile/login/LoginMobile.js | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/login/LoginMobile.less | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/logincss/LoginCss.js | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/logincss/LoginCss.less | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/loginsrm/LoginSrm.js | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/loginsrm/LoginSrm.less | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/mobile.less | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mobile/printpdf.less | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/routes/mobile/IndexCssMobile.js | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/routes/mobile/IndexMobile.js | 388 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/routes/mobile/IndexMobile.less | 27 +++++++++++++++++++++++++++ src/routes/mobile/IndexSrmMobile.js | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/routes/mobile/commobileList/commobileList.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/routes/mobile/common/ContactsInfoMobile.js | 39 +++++++++++++++++++++++++++++++++++++++ src/routes/mobile/common/ContactsMobile.js | 25 +++++++++++++++++++++++++ src/routes/mobile/common/DeviceMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/ExamineMobile.js | 37 +++++++++++++++++++++++++++++++++++++ src/routes/mobile/common/MessageMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/MyselfMobile.js | 27 +++++++++++++++++++++++++++ src/routes/mobile/common/NewsMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/ProcessReportMobile.js | 32 ++++++++++++++++++++++++++++++++ src/routes/mobile/common/RevisePasswordMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/SceneCssMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/SceneMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/SceneSrmMobile.js | 26 ++++++++++++++++++++++++++ src/routes/mobile/common/WorkBenchMobile.js | 27 +++++++++++++++++++++++++++ src/routes/mobile/common/commobileBill.js | 37 +++++++++++++++++++++++++++++++++++++ src/routes/mobile/common/commobilePrintPdf.js | 36 ++++++++++++++++++++++++++++++++++++ src/routes/mobile/login/LoginMobile.js | 30 ++++++++++++++++++++++++++++++ src/routes/mobile/logincss/LoginCss.js | 30 ++++++++++++++++++++++++++++++ src/routes/mobile/loginsrm/LoginSrm.js | 30 ++++++++++++++++++++++++++++++ src/utils/AppUtil.js | 29 +++++++++++++++++++++++++++++ 82 files changed, 21724 insertions(+), 7 deletions(-) create mode 100644 src/mobile/common/BarCodeUtil.js create mode 100644 src/mobile/common/CommobileBase.js create mode 100644 src/mobile/common/CommobileBill.js create mode 100644 src/mobile/common/CommobileBillEvent.js create mode 100644 src/mobile/common/CommobileChar.js create mode 100644 src/mobile/common/CommobileClassifyEvent.js create mode 100644 src/mobile/common/CommobileComponent.js create mode 100644 src/mobile/common/CommobileList.js create mode 100644 src/mobile/common/CommobileListEvent.js create mode 100644 src/mobile/common/CommobileModalList.jsx create mode 100644 src/mobile/common/CommobilePrintPdf.js create mode 100644 src/mobile/common/CommobileSearchComponent.js create mode 100644 src/mobile/common/CommobileStep.js create mode 100644 src/mobile/common/CommobileSubBill.js create mode 100644 src/mobile/common/CommobileSubBillEvent.js create mode 100644 src/mobile/common/CommobileTabBill.js create mode 100644 src/mobile/common/CommobileToolBar.js create mode 100644 src/mobile/common/CommobileView.js create mode 100644 src/mobile/common/CommobileViewMaster.js create mode 100644 src/mobile/common/CommobileViewSlave.js create mode 100644 src/mobile/common/ContactsInfoMobile.js create mode 100644 src/mobile/common/ContactsMobile.js create mode 100644 src/mobile/common/DeviceMobile.js create mode 100644 src/mobile/common/ExamineMobile.js create mode 100644 src/mobile/common/ExamineMobile1.js create mode 100644 src/mobile/common/MessageMobile.js create mode 100644 src/mobile/common/MyselfMobile.js create mode 100644 src/mobile/common/NewsMobile.js create mode 100644 src/mobile/common/ProcessReportMobile.js create mode 100644 src/mobile/common/RevisePasswordMobile.js create mode 100644 src/mobile/common/SceneCssMobile.js create mode 100644 src/mobile/common/SceneMobile.js create mode 100644 src/mobile/common/SceneMobile.less create mode 100644 src/mobile/common/SceneSrmMobile.js create mode 100644 src/mobile/common/WorkBenchMobile.js create mode 100644 src/mobile/components/FileManageMobile.js create mode 100644 src/mobile/components/FileManageMobileWx.js create mode 100644 src/mobile/components/FileShowMobile.js create mode 100644 src/mobile/components/fileManage.less create mode 100644 src/mobile/components/modal.jsx create mode 100644 src/mobile/components/preView.js create mode 100644 src/mobile/components/preView.less create mode 100644 src/mobile/login/LoginMobile.js create mode 100644 src/mobile/login/LoginMobile.less create mode 100644 src/mobile/logincss/LoginCss.js create mode 100644 src/mobile/logincss/LoginCss.less create mode 100644 src/mobile/loginsrm/LoginSrm.js create mode 100644 src/mobile/loginsrm/LoginSrm.less create mode 100644 src/mobile/mobile.less create mode 100644 src/mobile/printpdf.less create mode 100644 src/routes/mobile/IndexCssMobile.js create mode 100644 src/routes/mobile/IndexMobile.js create mode 100644 src/routes/mobile/IndexMobile.less create mode 100644 src/routes/mobile/IndexSrmMobile.js create mode 100644 src/routes/mobile/commobileList/commobileList.js create mode 100644 src/routes/mobile/common/ContactsInfoMobile.js create mode 100644 src/routes/mobile/common/ContactsMobile.js create mode 100644 src/routes/mobile/common/DeviceMobile.js create mode 100644 src/routes/mobile/common/ExamineMobile.js create mode 100644 src/routes/mobile/common/MessageMobile.js create mode 100644 src/routes/mobile/common/MyselfMobile.js create mode 100644 src/routes/mobile/common/NewsMobile.js create mode 100644 src/routes/mobile/common/ProcessReportMobile.js create mode 100644 src/routes/mobile/common/RevisePasswordMobile.js create mode 100644 src/routes/mobile/common/SceneCssMobile.js create mode 100644 src/routes/mobile/common/SceneMobile.js create mode 100644 src/routes/mobile/common/SceneSrmMobile.js create mode 100644 src/routes/mobile/common/WorkBenchMobile.js create mode 100644 src/routes/mobile/common/commobileBill.js create mode 100644 src/routes/mobile/common/commobilePrintPdf.js create mode 100644 src/routes/mobile/login/LoginMobile.js create mode 100644 src/routes/mobile/logincss/LoginCss.js create mode 100644 src/routes/mobile/loginsrm/LoginSrm.js create mode 100644 src/utils/AppUtil.js diff --git a/.umirc.ts b/.umirc.ts index 16c950f..29536d4 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -18,6 +18,15 @@ export default defineConfig({ component: "@/routes/indexPage", routes: [{ path: "*" }], }, + { + path: "/loginMobile", + component: "@/routes/mobile/login/LoginMobile", + }, + { + path: '/indexMobile', + component:'@/routes/mobile/IndexMobile', + routes: [{ path: "*" }], + }, ], npmClient: "pnpm", diff --git a/package.json b/package.json index 02f2536..987c900 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "@js-preview/excel": "^1.7.14", "@js-preview/pdf": "^2.0.10", "antd": "^5.24.3", - "antd-mobile": "2.3.4", + "antd-mobile": "5.37.1", + "antd-mobile-v2": "2.3.4", "antd-v4": "npm:antd@4.24.16", "braft-editor": "^2.3.9", "classnames": "^2.5.1", diff --git a/src/components/Common/CommonListSelectProductMaterial.js b/src/components/Common/CommonListSelectProductMaterial.js index c1ad920..90812ba 100644 --- a/src/components/Common/CommonListSelectProductMaterial.js +++ b/src/components/Common/CommonListSelectProductMaterial.js @@ -15,7 +15,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */ import CommonBase from './CommonBase';/* 获取配置及数据 */ import * as commonBusiness from './commonBusiness';/* 单据业务功能 */ import SearchComponent from './SearchComponent';/* 搜索组件 */ -// import * as commonConfig from '../../utils/config'; +// import commonConfig from '../../utils/config'; import config from '../../utils/config'; import * as commonUtils from '../../utils/utils'; import Eject from '../../assets/eject.svg'; diff --git a/src/components/Common/PrintPdf/PreviewPdf.js b/src/components/Common/PrintPdf/PreviewPdf.js index a8ded52..2117a2f 100644 --- a/src/components/Common/PrintPdf/PreviewPdf.js +++ b/src/components/Common/PrintPdf/PreviewPdf.js @@ -3,7 +3,7 @@ import React from 'react'; import { InputItem, Icon } from 'antd-mobile'; import { Document, Page, pdfjs } from 'react-pdf'; -import 'antd-mobile/dist/antd-mobile.css'; +import 'antd-mobile-v2/dist/antd-mobile.css'; import pdfstyles from './printpdf.less'; import * as commonUtils from '../../../utils/utils'; diff --git a/src/components/PrintPdf/PreviewPdf.js b/src/components/PrintPdf/PreviewPdf.js index 40d14ab..8f8e745 100644 --- a/src/components/PrintPdf/PreviewPdf.js +++ b/src/components/PrintPdf/PreviewPdf.js @@ -3,7 +3,7 @@ import React from 'react'; import { InputItem, Icon } from 'antd-mobile'; import { Document, Page, pdfjs } from 'react-pdf'; -import 'antd-mobile/dist/antd-mobile.css'; +import 'antd-mobile-v2/dist/antd-mobile.css'; import * as commonUtils from '@/utils/utils'; import pdfstyles from './printpdf.less'; diff --git a/src/components/productionSchedule/productionPlanChangeMacheInfo.js b/src/components/productionSchedule/productionPlanChangeMacheInfo.js index 37a85e0..0dac436 100644 --- a/src/components/productionSchedule/productionPlanChangeMacheInfo.js +++ b/src/components/productionSchedule/productionPlanChangeMacheInfo.js @@ -9,7 +9,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */ import CommonBase from './CommonBase';/* 获取配置及数据 */ import * as commonBusiness from './commonBusiness';/* 单据业务功能 */ import SearchComponent from './SearchComponent';/* 搜索组件 */ -import * as commonConfig from '../../utils/config'; +import commonConfig from '../../utils/config'; const { Content } = Layout; diff --git a/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js b/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js index 37a85e0..0dac436 100644 --- a/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js +++ b/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js @@ -9,7 +9,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */ import CommonBase from './CommonBase';/* 获取配置及数据 */ import * as commonBusiness from './commonBusiness';/* 单据业务功能 */ import SearchComponent from './SearchComponent';/* 搜索组件 */ -import * as commonConfig from '../../utils/config'; +import commonConfig from '../../utils/config'; const { Content } = Layout; diff --git a/src/components/productionScheduleTree/productionScheduleTreeBack.js b/src/components/productionScheduleTree/productionScheduleTreeBack.js index 02a4070..edd49c0 100644 --- a/src/components/productionScheduleTree/productionScheduleTreeBack.js +++ b/src/components/productionScheduleTree/productionScheduleTreeBack.js @@ -34,7 +34,7 @@ import Reset from '@/assets/reset.svg'; import DisableReset from '@/assets/disablereset.svg'; import * as commonUtils from '@/utils/utils'; import ShowType from '@/components/Common/CommonComponent'; -import * as commonConfig from '@/utils/config'; +import commonConfig from '@/utils/config'; import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import Gantt from '@/components/Charts/Gantt'; import * as commonServices from '@/services/services'; diff --git a/src/mobile/common/BarCodeUtil.js b/src/mobile/common/BarCodeUtil.js new file mode 100644 index 0000000..8693e85 --- /dev/null +++ b/src/mobile/common/BarCodeUtil.js @@ -0,0 +1,159 @@ + + +class BarCodeUtil { + static barcode = null; + + /** + * @private + */ + static hasLight = false; + + + /** + * 停止扫码 + */ + static stopScan() { + if (this.barcode !== null) { + this.barcode.close(); + } + } + + /** + * 切换闪光灯 + * @return {boolean} 切换后闪光灯是否开启 + */ + static switchLight() { + if (this.barcode !== null) { + this.hasLight = !this.hasLight; + this.barcode.setFlash(this.hasLight); + } + return this.hasLight; + } + + static typeToString(type) { + const { plus } = window; + // eslint-disable-next-line guard-for-in + for (const key in plus.barcode) { + const value = plus.barcode[key]; + if (type === value) { + return key; + } + } + return '未知'; + } + + /** + * 开始扫码 + * @param { (type, code)=>void } successHandler 扫码成功的处理方法 + */ + static startScan(successHandler) { + this.stopScan(); + let view = null; + const { plus } = window; + const height = plus.screen.resolutionHeight - plus.navigator.getStatusbarHeight(); + this.barcode = plus.barcode.create( + 'barcode', + [ + plus.barcode.QR, + plus.barcode.EAN13, + plus.barcode.EAN8, + plus.barcode.AZTEC, + plus.barcode.DATAMATRIX, + plus.barcode.UPCA, + plus.barcode.UPCE, + plus.barcode.CODABAR, + plus.barcode.CODE39, + plus.barcode.CODE93, + plus.barcode.CODE128, + plus.barcode.ITF, + plus.barcode.MAXICODE, + plus.barcode.PDF417, + plus.barcode.RSS14, + plus.barcode.RSSEXPANDED, + ], + { + top: '0', + left: '0px', + width: '100%', + buttom: '0', + position: 'absolute', + zIndex: '1', + }, + ); + this.barcode.onmarked = (type, result) => { + this.stopScan(); + newBaseView.close(); + successHandler(type, result); + }; + + view = new plus.nativeObj.View( + 'test', + { + top: '20px', left: '20px', height: '30px', width: '80px', + }, + [ + { + tag: 'font', + id: 'font', + text: '关闭', + textStyles: { size: '18px', color: '#fff' }, + position: { + top: '0px', + left: '0px', + width: '100%', + height: '30px', + }, + }, + ], + ); + + // view.interceptTouchEvent(true); + // plus.webview.currentWebview().append(view); + + const id = Date.now().toString(); + const newBaseView = plus.webview.create('', id, { top: '0px', bottom: '0px', height }); + newBaseView.append(this.barcode); + newBaseView.append(view); + newBaseView.show(); + this.barcode.start(); + view.addEventListener('click', () => { + newBaseView.close(); + this.barcode.close(); + }, false); + } + + /* 调用手机摄像头并拍照 */ + static getImage() { + const { plus } = window; + const cmr = plus.camera.getCamera(); + cmr.captureImage((p) => { + plus.io.resolveLocalFileSystemURL(p, (entry) => { + this.uploadImage(entry.toLocalURL(), entry.name); // 上传拍照的图片 + }, (e) => { + plus.nativeUI.toast(`读取拍照文件错误:${e.message}`); + }); + }, (e) => { + plus.nativeUI.toast(`调用摄像头错误:${e.message}`); + }, { + filter: 'image', + }); + } + + /* 相册选择图片 */ + static getPhoto() { + const { plus } = window; + plus.gallery.pick((path) => { + const name = path.substring(path.lastIndexOf('/') + 1); + this.uploadImage(path, name);// 上传选择的图片 + }, (e) => { + plus.nativeUI.toast(`选取图片错误:${e.message}`); + }, { filter: 'image' }); + } + + /* 图片上传入库 */ + static uploadImage(url, filename) { + console.log('uploadImage:', url, filename); + } +} + +export default BarCodeUtil; diff --git a/src/mobile/common/CommobileBase.js b/src/mobile/common/CommobileBase.js new file mode 100644 index 0000000..c2450ad --- /dev/null +++ b/src/mobile/common/CommobileBase.js @@ -0,0 +1,742 @@ +/* eslint-disable prefer-destructuring */ +/** + * Created by mar105 on 2019-02-15. + */ + +import React, { Component } from 'react'; +import moment from 'moment'; +import { Modal, Toast } from 'antd-mobile'; +import { addResult } from '@/utils/common/calcuate'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import * as commonServices from '../../services/services'; +import * as commonFunc from '../../components/Common/commonFunc'; +import * as commonBusiness from '../../components/Common/commonBusiness'; +// import * as commonFunc from './commonFunc'; /* 通用单据方法 */ + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + pageLoading: true, + token: props.app.token, + sModelsId: props.sModelsId, /* 获取配置数据用的modelId */ + formRoute: props.formRoute, /* 组件名: 路由名称 */ + sModelsType: props.sModelsType, /* 组件名: 路由名称 */ + formData: [], /* 所有配置 */ + gdsformconst: [], /* 获取配置常量 */ + gdsjurisdiction: [], /* 获取配置权限 */ + currentId: props.checkedId, /* 当前数据的Id */ + selectedRowKeys: [], /* 已选择的数据行(数据格式:数组) */ + clearArray: [], /* table清除数组 */ + }; + this.sDateFormat = 'YYYY-MM-DD'; + } + + async componentWillMount() { + /* 获取配置 */ + this.mounted = true; + const { token, sModelsId } = this.state; + const config = await commonUtils.getStoreDropDownData(sModelsId, '', ''); + if (commonUtils.isEmpty(config)) { + const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`; + const configReturn = (await commonServices.getService(token, configUrl)).data; + if (configReturn.code === 1) { + const [configData] = configReturn.dataset.rows; + // const { formData, gdsformconst, gdsjurisdiction, report, billnosetting } = configData; + if (this.mounted) { + // commonUtils.setStoreDropDownData(sModelsId, '', '', configData); + this.setState({ ...configData }); + } + } else { + this.getServiceError(configReturn); + } + } else { + this.setState({ ...config }); + } + } + + shouldComponentUpdate(nextProps, nextState) { + const { formData } = nextState; + return (formData.length > 0); + } + + componentWillUnmount() { + const { + currentId, + } = this.state; + const { copyTo } = this.props; + const { userinfo } = this.props.app; + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData } = copyTo; + if (commonUtils.isNotEmptyArr(slaveData)) { + const sIdArray = []; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + const sId = sIdArray.toString(); + this.handleSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + } + this.handleSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); + } + + /** sql条件 */ + getSqlCondition = (showConfig, name, record) => { + const conditonValues = {}; + if (commonUtils.isNotEmptyStr(showConfig.sSqlCondition)) { + const conditon = showConfig.sSqlCondition.split(','); + conditon.forEach((item) => { + if (item.indexOf('.') > -1) { + const tableName = item.split('.')[0]; + let fieldName = item.split('.')[1]; + let fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName; + // master.sId 作为参数 master.sId.sId 作为filterDropdown过滤参数 + if (showConfig.sDropDownType === 'picArr') { + fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName; + if (fieldName.indexOf('&Search') > -1) { + // 参数为&Search时认为是查找数据集中取数据 + const data = this.state[`${tableName}Data`]; + if (typeof data === 'object' && data.constructor === Object) { + Object.keys(data).forEach((dataItem) => { + if (`&Search${data[dataItem]}` === fieldName) { + let sTmpName = dataItem; + sTmpName = sTmpName.replace('First', 'Third'); + if (data[dataItem].substring(0, 1) === 't') { + fieldName = `p${sTmpName.substring(1, dataItem.length)}`; + } else { + fieldName = data[dataItem].substring(0, 1) + sTmpName.substring(1, sTmpName.length); + } + } + }); + } + } else if (fieldName.indexOf('&') > -1) { + fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName; + conditonValues[fieldNameFilter] = fieldName.replace('&', ''); + return; + } + } + if (fieldName !== '') { + if (name === tableName && !commonUtils.isEmpty(record)) { + const data = record; + conditonValues[fieldNameFilter] = data[fieldName]; + } else { + const data = this.state[`${tableName}Data`]; + const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`]; + if (typeof data === 'object' && data.constructor === Object) { + conditonValues[fieldNameFilter] = data[fieldName]; + } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + let iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]); + iIndex = iIndex > -1 ? iIndex : data.findIndex(itemData => itemData.sSlaveId === selectedRowKeys[0]); + if (iIndex > -1) { + conditonValues[fieldNameFilter] = data[iIndex][fieldName]; + } + } else if (commonUtils.isNotEmptyArr(data)) { + conditonValues[fieldNameFilter] = data[0][fieldName]; + } + } + } + } + }); + } + return conditonValues; + }; + + /** 获取sql下拉数据 */ + getSqlDropDownData = async (formId, name, showConfig, record, platform) => { + /* 地址 */ + if (commonUtils.isEmpty(showConfig.sFieldToContent)) { + const url = `${commonConfig.server_host}business/getSelectDataBysControlId/${showConfig.sId}?sModelsId=${this.state.sModelsId}`; + /* 参数 */ + const conditonValues = this.getSqlCondition(showConfig, name, record); + const body = { + sKeyUpFilterName: '', /* 边输入边过滤,暂时没用1 */ + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + /* 获取数据 */ + const json = await commonServices.postValueService(this.props.app.token, body, url); + /* code为1代表获取数据成功 */ + if (json && commonUtils.isNotEmptyArr(json.data.dataset) && json.data.code === 1) { + /* 获取数据集 */ + const { rows } = json.data.dataset; + return rows; + } else { + if (['pda'].includes(platform)) { + // Modal.alert('温馨提示', json?.data?.msg || '出错了', [ + // { text: '确认' }, + // ]); + const msg = json?.data?.msg || '出错了'; + Toast.fail(msg, 1); + throw new Error(); + } + return []; + } + } else { + const returnData = []; + if (showConfig.sFieldToContent === '1') { + if (name === 'master') { + const { [`${name}Data`]: data } = this.state; + const sName = `sParamDropDown${showConfig.sName.replace('sParamValue', '')}`; + returnData.push(...commonUtils.objectToArr(data[sName])); + } else { + const { [`${name}Data`]: data, [`${name}SelectedRowKeys`]: selectedRowKeys } = this.state; + const sName = `sParamDropDown${showConfig.sName.replace('sParamValue', '')}`; + if (commonUtils.isNotEmptyObject(record)) { + returnData.push(...commonUtils.objectToArr(record[sName])); + } else if (commonUtils.isNotEmptyArr(data) && commonUtils.isNotEmptyArr(selectedRowKeys)) { + const iIndex = data.findIndex(item => item.sId === selectedRowKeys.toString()); + if (iIndex > -1) { + returnData.push(...commonUtils.objectToArr(data[iIndex][sName])); + } + } + } + } else { + const unionCondition = showConfig.sFieldToContent.split('&&'); + unionCondition.forEach((unionItem) => { + const conditon = unionItem.split(','); + const tableNameContent = conditon[0].split('.')[0]; + let data = this.state[`${tableNameContent}Data`]; + if (commonUtils.isNotEmptyArr(data)) { + if (showConfig.sSqlCondition !== '') { + const sSqlCondition = showConfig.sSqlCondition; + const sqlConditon = sSqlCondition.split(','); + sqlConditon.forEach((item) => { + const tableName = item.split('.')[0]; + const fieldName = item.split('.')[1]; + const fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName; + const dataCondition = this.state[`${tableName}Data`]; + const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`]; + if (typeof dataCondition === 'object' && dataCondition.constructor === Object) { + data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[fieldName], '')); + } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + let iIndex = dataCondition.findIndex(itemData => itemData.sId === selectedRowKeys[0]); + iIndex = iIndex > -1 ? iIndex : dataCondition.findIndex(itemData => itemData.sSlaveId === selectedRowKeys[0]); + if (iIndex > -1) { + data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[iIndex][fieldName], '')); + } + } else if (commonUtils.isNotEmptyArr(data)) { + data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[0][fieldName], '')); + } + }); + } + data.forEach((itemDataRow) => { + const dataRow = {}; + conditon.forEach((item) => { + const fieldName = item.split('.')[1]; + const fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName; + if (fieldName.indexOf('-') >= 0) { + fieldName.split('-').forEach((itemField) => { + const sFieldValue = commonUtils.isEmpty(itemDataRow[itemField]) ? '' : itemDataRow[itemField].toString(); + dataRow[fieldNameFilter] = commonUtils.isEmpty(dataRow[fieldNameFilter]) ? sFieldValue : `${dataRow[fieldNameFilter]}-${sFieldValue}`; + }); + } else { + dataRow[fieldNameFilter] = commonUtils.isEmpty(itemDataRow[fieldName]) ? '' : itemDataRow[fieldName].toString(); + } + }); + + returnData.push(dataRow); + }); + } + }); + } + return returnData; + } + }; + /* 获取数字格式化规范 */ + getFloatNum = (sName) => { + if (sName.toLowerCase().endsWith('price')) { /* 价格 */ + return this.props.app.decimals.dNetPrice; + } else if (sName.toLowerCase().endsWith('money')) { /* 金额 */ + return this.props.app.decimals.dNetMoney; + } else { /* 其它 */ + return 6; + } + }; + + /** 获取sql下拉数据 */ + getServiceError = async (returnData) => { + this.props.dispatch({ type: 'app/throwErrorMobile', payload: returnData }); + }; + + /* 获取数字格式化规范 */ + getDateFormat = () => { + return this.props.app.dateFormat; + }; + + /* 获取配置数据用的sTabId,formId,formRoute */ + handleConfigValue = (value) => { + const { secondppopupPane, ppopupPane, currentPane } = this.props.app; + return commonUtils.isNotEmptyObject(secondppopupPane) + ? secondppopupPane[value] + : commonUtils.isNotEmptyObject(ppopupPane) + ? ppopupPane[value] : currentPane[value]; + }; + + /* 获取后台数据(单条) */ + handleGetDataOne = async (params) => { + const { token, sModelsId } = this.state; + const { + name, configData, condition, isWait, + } = params; + + const lockUrl = `${commonConfig.server_host}business/addSysLocking?sModelsId=${sModelsId}`; + + const configDataId = configData.sId; + const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const [returnData] = dataReturn.dataset.rows[0].dataSet; + const addState = {}; + const value = { + tableName: configData.sTbName, + sId: [returnData.sId], + }; + const { data } = await commonServices.postValueService(token, value, lockUrl); + if (data.code === 1) { /* 失败 */ + addState.sUseInfo = ''; + } else { /* 失败 */ + addState.sUseInfo = data.msg; + } + addState[`${name}Data`] = returnData; + if (isWait) { + return addState; + } else if (this.mounted) { + this.setState({ ...addState }); + } + } else { + this.getServiceError(dataReturn); + } + }; + + /* 获取后台数据(数据集) */ + handleGetDataSet = async (params) => { + const { + name, configData, condition, isWait, + } = params; + const { + token, sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.state; + const configDataId = configData.sId; + const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0].dataSet; + const returnPagination = { + total: dataReturn.dataset.totalCount, + current: dataReturn.dataset.currentPageNo, + }; + const { sumSet } = dataReturn.dataset.rows[0]; + const totalData = sumSet !== undefined ? sumSet : []; + const filterCondition = commonUtils.isNotEmptyObject(condition) ? condition.bFilter : ''; + const orderBy = commonUtils.isNotEmptyObject(condition) ? condition.sFilterOrderBy : ''; + let addState = { + [`${name}Data`]: returnData, [`${name}Pagination`]: returnPagination, [`${name}FilterCondition`]: filterCondition, [`${name}OrderBy`]: orderBy, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }; + if (dataReturn.dataset.currentPageNo === 1) { + addState = { ...addState, [`${name}Total`]: totalData }; + } + if (isWait) { + return addState; + } else if (this.mounted) { + this.setState(addState); + } + } else if (dataReturn.code === -8) { + Modal.alert('温馨提示', dataReturn.msg || '出错了', [ + { text: '确认' }, + ]); + } else { + this.getServiceError(dataReturn); + } + }; + + /* 数据保存到state */ + handleSaveState = (values) => { + if (this.mounted) { + this.setState(values); + } + }; + + /** 修改主表数据 */ + handleMasterChange = (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + const { masterData: masterDataOld } = this.state; + const { sModelsId, masterConfig } = this.state; + let masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; + let { handleType } = masterData; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (sFieldName.substring(0, 1).toLowerCase() === 'c') { + const sAllField = sFieldName.substring(1, sFieldName.length); + const allField = sAllField.split('_'); + const value = changeValue[sFieldName]; + allField.forEach((item, iArr) => { + if (value.length > iArr) { + changeValue[item] = value[iArr]; + } + }); + } + if (!commonUtils.isEmpty(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && !commonUtils.isEmpty(sFieldName)) { + masterConfig.gdsconfigformslave.filter(item => !commonUtils.isEmpty(item.sSqlCondition) && !commonUtils.isEmpty(item.sChineseDropDown) && + (item.sChineseDropDown.includes(`#${sFieldName}`) || item.sChineseDropDown.includes(`*${sFieldName}`)) && + (item.sSqlCondition.includes(sFieldName) || item.sSqlCondition.includes(sFieldName.replace('Name', 'Id')))).forEach((item) => { + commonUtils.setStoreDropDownData(sModelsId, name, item.sName, []); + }); + } + masterData = { ...masterData, ...changeValue, handleType }; + if (isWait) { + return { masterData, sUseInfo: '' }; + } else if (this.mounted) { + this.setState({ masterData, sUseInfo: '' }); + return { masterData }; + } + }; + + /** 添加表格空行 */ + handleTableAdd = (name, isWait) => { + /* 外置处理业务 */ + const { + [`${name}Config`]: tableConfig, masterData, slaveData, slaveSelectedRowKeys, + } = this.state; + let { [`${name}Data`]: tableData } = this.state; + tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; + const allTableData = {}; + allTableData.master = masterData; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys.toString()); + allTableData.slave = slaveData[iSlaveIndex]; + } else { + allTableData.slave = slaveData[0]; + } + const iOrderArr = []; + tableData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + const tableDataRow = commonFunc.getDefaultData(tableConfig, allTableData); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.bDefault = false; + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + + const iIndex = this.props.app.systemData.findIndex(item => item.sName === 'CbxMaterialsDefine'); + if (iIndex > -1) { + const sCbxMaterialsDefine = this.props.app.systemData[iIndex].sValue; + if (sCbxMaterialsDefine === 'datenum') { + tableDataRow.sDefineNo = moment(new Date()).format('YYYYMMDD'); + } else if (sCbxMaterialsDefine === 'datetimenum') { + tableDataRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm'); + } else if (sCbxMaterialsDefine === 'yearnum') { + tableDataRow.sDefineNo = moment(new Date()).format('YYYY'); + } else if (sCbxMaterialsDefine === 'yearmonthnum') { + tableDataRow.sDefineNo = moment(new Date()).format('YYYYMM'); + } else if (sCbxMaterialsDefine === 'worknum') { + tableDataRow.sDefineNo = tableDataRow.sWorkOrderNo; + } else if (sCbxMaterialsDefine === 'manuualno') { + tableDataRow.sDefineNo = tableDataRow.sManualNo; + } else if (sCbxMaterialsDefine === 'createnownum') { /* 批号根据生产日期+当前日期 */ + tableDataRow.sDefineNo = moment(tableDataRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm'); + } + } + + if (isWait) { + return tableDataRow; + } else { + // tableData.splice(index, 1, tableDataRow); /* 该处会导致新增时删除首行 */ + tableData.push(tableDataRow); + if (this.mounted) { + this.setState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } + } + }; + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, sModelsId, masterData, slaveData, controlData, + } = this.state; + const iIndex = tableData.findIndex(item => item.sId === sId); + let { handleType } = tableData[iIndex]; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (sFieldName.substring(0, 1).toLowerCase() === 'c') { + const sAllField = sFieldName.substring(1, sFieldName.length); + const allField = sAllField.split('_'); + const value = changeValue[sFieldName]; + allField.forEach((item, iArr) => { + if (value.length > iArr) { + changeValue[item] = value[iArr]; + } + }); + } + if (!commonUtils.isEmpty(tableConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(tableConfig.gdsconfigformslave) && !commonUtils.isEmpty(sFieldName)) { + tableConfig.gdsconfigformslave.filter(item => !commonUtils.isEmpty(item.sSqlCondition) && item.sSqlCondition.includes(sFieldName)).forEach((item) => { + commonUtils.setStoreDropDownData(sModelsId, name, item.sName, []); + }); + } + const tableAllData = { + master: masterData, + slave: slaveData, + control: controlData, + }; + const tableDataRowNew = { ...tableData[iIndex], ...changeValue, handleType }; + const tableDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, tableConfig, tableDataRowNew, tableDataRowNew, true, tableAllData); + console.log('tableDataAfter::', tableDataAfter); + if (commonUtils.isNotEmptyObject(tableDataAfter)) { + changeValue = { ...tableDataAfter }; + } + if (isWait) { + return { ...tableData[iIndex], ...changeValue, handleType }; + } else { + tableData[iIndex] = { ...tableData[iIndex], ...changeValue, handleType }; + if (this.mounted) { + this.setState({ [`${name}Data`]: tableData, sUseInfo: '' }); + } + } + }; + + handleSendSocketMessage = (flag, showType, sId, sendTo, msgInfo, param) => { + const { token } = this.props.app; + const sendws = this.handleSendWebSocketMsg; + const { dispatch } = this.props; + if (commonUtils.isNotEmptyObject(token)) { + if (this.props.app.webSocket !== null && this.props.app.webSocket.readyState === WebSocket.OPEN) { + sendws(flag, showType, msgInfo, sId, sendTo, param); + } else { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + setTimeout(() => { + console.log('====== reStart ======'); + sendws(flag, showType, msgInfo, sId, sendTo, param); + }, 30000); + } + } + }; + + handleSendWebSocketMsg = (flag, showType, msgInfo, sId, sendTo, param) => { + const { app } = this.props; + const { webSocket, userinfo, currentPane } = app; + const { key } = currentPane; + commonFunc.sendWebSocketMessage(webSocket, key, flag, showType, userinfo.sId, msgInfo, sId, sendTo, param); + } + + handleFilterDropDownData = (dropDownData, showConfig, name, record) => { + if (!commonUtils.isEmptyArr(dropDownData)) { + const conditon = showConfig.sSqlCondition.split(','); + let orTableName; + let orFieldName; + let orFieldNameFilter; + let orValue; + conditon.forEach((item) => { + if (item.indexOf('.') > -1) { + const tableName = item.split('.')[0]; + const fieldName = item.split('.')[1]; + const fieldNameFilter = item.split('.')[2]; + if (tableName.indexOf('|') > -1) { + orTableName = tableName.replace('|', ''); + orFieldName = fieldName; + orFieldNameFilter = fieldNameFilter; + if (orFieldName.indexOf('&') > -1) { + orValue = orFieldName.replace('&', ''); + } else if (!commonUtils.isEmpty(orFieldNameFilter)) { + if (name === orTableName && !commonUtils.isEmpty(record)) { + const data = record; + orValue = data[orFieldName]; + } else { + const data = this.state[`${orTableName}Data`]; + const selectedRowKeys = this.state[`${orTableName}SelectedRowKeys`]; + if (typeof data === 'object' && data.constructor === Object) { + orValue = data[orFieldName]; + } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]); + if (iIndex > -1) { + orValue = data[iIndex][orFieldName]; + } + } else if (commonUtils.isNotEmptyArr(data)) { + orValue = data[0][orFieldName]; + } + } + } + orValue = orValue.toString(); + } else if (!commonUtils.isEmpty(orFieldName)) { + // master.sId 作为参数 control.sId.sControlId 作为filterDropdown过滤参数 + if (!commonUtils.isEmpty(fieldNameFilter)) { + if (name === tableName && !commonUtils.isEmpty(record)) { + const data = record; + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName] || itemDrop[orFieldNameFilter] === orValue); + } else { + const data = this.state[`${tableName}Data`]; + const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`]; + if (typeof data === 'object' && data.constructor === Object) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName] || itemDrop[orFieldNameFilter] === orValue); + } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]); + if (iIndex > -1) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[iIndex][fieldName] || itemDrop[orFieldNameFilter] === orValue); + } + } else if (commonUtils.isNotEmptyArr(data)) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[0][fieldName] || itemDrop[orFieldNameFilter] === orValue); + } + } + } + } else if (!commonUtils.isEmpty(fieldNameFilter)) { + if (name === tableName && !commonUtils.isEmpty(record)) { + const data = record; + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName]); + } else { + const data = this.state[`${tableName}Data`]; + const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`]; + if (typeof data === 'object' && data.constructor === Object) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName]); + } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]); + if (iIndex > -1) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[iIndex][fieldName]); + } + } else if (commonUtils.isNotEmptyArr(data)) { + dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[0][fieldName]); + } + } + } + } + }); + } + + // let dropDownData = dropDownDataOld; + // const data = this.state[`${tableName}Data`]; + // const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`]; + // if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + // const SelectedData = data.filter(item => item.sId === selectedRowKeys[0]); + // if (SelectedData.length > 0 && commonUtils.isNotEmptyStr(SelectedData[0][fieldName])) { + // if (commonUtils.isNotEmptyArr(dropDownData)) { + // dropDownData = dropDownData.filter(item => item[fieldName] === SelectedData[0][fieldName]); + // } + // } + // } + return dropDownData; + }; + + /* 增加通用的tmpInfobySql功能 */ + handleTmpInfoBySql = async (copyToConfig, sRowData, copyTo) => { + const returnObj = commonUtils.isNotEmptyObject(copyTo) ? copyTo : {}; + const { token, sModelsId } = this.state; + const sControlName = copyToConfig[0].sControlName; + if (commonUtils.isNotEmptyObject(sControlName) && sControlName.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */ + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(copyToConfig) ? '' : copyToConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(sControlName) ? sControlName : 'BtnCopyTo.tmpInfoBySql'; + const values = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + if (commonUtils.isNotEmptyObject(returnData)) { + for (const key of Object.keys(returnData)) { + const sName = `${key}Data`; + const masterName = sControlName.replace('BtnCopyTo.', '').trim(); + if (key === masterName) { + returnObj.masterData = returnData[key][0]; + } else { + returnObj[sName] = returnData[key]; + } + } + if (commonUtils.isNotEmptyArr(returnObj.masterData) && Array.isArray(returnObj.masterData)) { + returnObj.masterData = returnObj.masterData[0]; + } + } + } else { + this.getServiceError(dataReturn); + } + } + return returnObj; + } + + /** + * 增加,删除, pda, copyto, onChange + * @param {*} data + * @param {*} isOutsourcedProcesses + * @param {*} tabPage + * @param {*} masterData + * @returns + */ + handleMasterDefaultData = (data, isOutsourcedProcesses, tabPage, masterData, { + masterConfig, slaveChildConfig, slave0Config, slaveConfig, + } = {}) => { + let iTypeConfig = this.state.slaveChildConfig || slaveChildConfig; + const config = this.state.masterConfig || masterConfig; + if (config) { + const value = config.gdsconfigformslave?.find(i => i && + ((['sDefaultQty'].includes(i.sName) && !isOutsourcedProcesses) || + (isOutsourcedProcesses && ['sDefaultSlaveChild', 'sDefaultSlave0'].includes(i.sName)))); + if (!value) return masterData; + } else { + return masterData; + } + + let sDefaultQty = 'sDefaultQty'; + let sSlaveLength = 'sSlaveLength'; + // 外发区分配置 + if (isOutsourcedProcesses) { + iTypeConfig = ({ + 1: slave0Config || this.state.slave0Config, + }[tabPage]) || slaveConfig || this.state.slaveConfig; + + sDefaultQty = { + 0: 'sDefaultSlaveChild', + 1: 'sDefaultSlave0', + }[tabPage] || 'sDefaultSlave'; + sSlaveLength = { + 0: 'sSlaveLengthSlaveChild', + 1: 'sSlaveLengthSlave0', + }[tabPage] || 'sSlaveLengthSlave'; + } else if (typeof tabPage === 'undefined') { + if (!commonUtils.isNotEmptyObject(this.state.slaveChildConfig || slaveChildConfig)) { + iTypeConfig = slaveConfig; + } + } + + const hasiType = iTypeConfig?.gdsconfigformslave?.find(item => ['itype', 'iType'].includes(item?.sName)); + const iType = hasiType?.sDefault; + const type = iType !== undefined ? iType : 11; + let name = 'dAuxiliaryQty'; + if (['10', '12'].includes(type)) { + name = 'dProductQty'; + } + + const result = data.reduce((a, b) => { + return addResult(a, (Number(b?.[name]) || 0)); + }, 0); + + return { + ...masterData || {}, + [sSlaveLength]: data.length, + [sDefaultQty]: result, + }; + } + + render() { + return ( + + ); + } + }; +}; diff --git a/src/mobile/common/CommobileBill.js b/src/mobile/common/CommobileBill.js new file mode 100644 index 0000000..7dbe1bd --- /dev/null +++ b/src/mobile/common/CommobileBill.js @@ -0,0 +1,1282 @@ +/* eslint-disable */ +import React from 'react'; +import weixin from 'weixin-js-sdk'; +import { Flex, Button, ListView, Toast } from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import CommobileViewMaster from './CommobileViewMaster'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import CommobileToolBar from './CommobileToolBar'; +import styles from '../mobile.less'; +import add from '../../assets/mobile/add-select.svg'; +import scan from '../../assets/mobile/scanning.svg'; +import close from '../../assets/mobile/close.svg'; +import * as commonFunc from '../../components/Common/commonFunc'; +import BarCodeUtil from './BarCodeUtil'; +import preView from '../components/preView'; +import * as commonServices from "../../services/services"; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); + +class CommobileBill extends React.Component { + constructor(props) { + super(props); + this.state = { + }; + } + + // eslint-disable-next-line react/sort-comp + handleClick = async (name, type, sId) => { + if (name === 'BtnSave') { + this.props.onSubmit(); + } else if (name === 'BtnUpd') { + this.props.onEdit(name); + } else if (type === 'add') { + this.props.onDataRowAdd(name); + } else if (type === 'del') { + const { app, [`${name}Data`]: tableData } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (sId !== '') { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + } + } else if (type === 'scan' || name === 'BtnScan') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig, + } = this.props; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo'; + + masterdataObj = { + ...masterData, [sDefineNoName] : sDefineNo + }; + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sParentId = masterdataObj.sId; + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1][sDefineNoName]; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyObject(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // slaveData[len - 1] = slaveDataObj; + slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + // const date = new Date(dataStr); + slaveDataObjAdd = { + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sMaterialsName: codeArr.length > 1 ? codeArr[1] : '', + sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '', + dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + sMaterialsId: codeArr.length > 8 ? codeArr[8] : '', + sWareHouseId: codeArr.length > 9 ? codeArr[9] : '', + sLocationId: codeArr.length > 10 ? codeArr[10] : '', + dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + // if(commonUtils.isEmptyArr(btnScanConfigs)) { + // Toast.fail('请配置扫码按钮!!!', 1); + // return; + // } + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + console.log('slaveDataObj1111', slaveDataObj); + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + if (codeArr.length > 1) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]); + } + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterdataObj; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + slaveDataObjAdd = { + sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', + sOrderNo: codeArr.length > 13 ? codeArr[13] : '', + sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '', + sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '', + sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '', + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + // masterDataObjAdd = { + // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo, + // }; + /* 读取多条扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + if (codeArr.length > 1) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.unshift(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (type === 'scan1') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.unshift(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */ + BarCodeUtil.startScan(async (type, code) => { + const { masterConfig } = this.props; + let { masterData } = this.props; + let masterdataObj = {}; + const codeArr = code.split('|'); + if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */ + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + masterData.sDefineNo = sDefineNo; + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + // this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + this.props.onSaveState({ masterData }); + }); + } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */ + this.handleCamera(); + } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */ + this.handleGetPhoto(); + } else if (name === 'BtnCancel') { + window.history.back(-1); + } else if (name === 'BtnExamine') { + this.props.onAudit(1); + } else if (name === 'BtnCancelExamine') { + /* 销审 */ + this.props.onAudit(0); + } else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */ + const { masterConfig, masterData, sModelsId, } = this.props; + const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))) ? + masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0] : {};// sButtonEnabled sButtonParam + if(commonUtils.isNotEmptyObject(btnConfig)) { + /* 组装allTableData */ + const allTableMap ={}; + const allReturnMap ={}; + const slaveNameList = []; + /* 从props找到 所有的Config */ + if(commonUtils.isNotEmptyArr(this.props)) { + for (const key of Object.keys(this.props)) { + if(key.includes('Config') && !key.includes('onGet') && !key.includes('report')) { + const tablename = key.replace('Config', '').trim(); + slaveNameList.push(tablename); + } + } + } + + if (commonUtils.isNotEmptyArr(slaveNameList)) { + slaveNameList.forEach((name, index) => { + const tableConfig = this.props[name +'Config']; /* 动态配置 */ + const tableData = this.props[name +'Data']; /* 动态配置 */ + const tableSelectedRowKeys = this.props[name + 'SelectedRowKeys']; /* 选中Key */ + if(commonUtils.isNotEmptyObject(tableConfig)) { + allTableMap[name +'.'+ tableConfig.sTbName] = tableData + } + + }) + const masterTbName = masterConfig.sTbName; + allTableMap['master.'+ masterTbName] = masterData; + } + const sButtonParam = btnConfig.sButtonParam; + const btn = commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : ''; + const sProName = btn.sproName; + const url = `${commonConfig.server_host}calcprocedure/calc?sModelsId=${sModelsId}`; + const value = { + sProName, + sButtonParam, + allTableMap + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据操作 数据回传页面 */ + message.success('操作成功!'); + const returnData = dataReturn.dataset.rows[0]; + if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyObject(returnData)) { + slaveNameList.forEach((name, index) => { + const tableConfig = this.props[name +'Config']; /* 动态配置 */ + let tableDelData = this.props[name +'DelData']; + if(commonUtils.isEmptyArr(tableDelData)) { + tableDelData = []; + } + let tableDelDataNew = [] + let tableData = []; + if(commonUtils.isNotEmptyObject(tableConfig)) { + tableData = returnData[name +'.'+ tableConfig.sTbName]; /* 动态配置 */ + if(commonUtils.isNotEmptyArr(tableData) && Array.isArray(tableData)) { + tableDelDataNew = tableData.filter(item => item.handleType === 'del'); + tableData = tableData.filter(item => item.handleType !== 'del'); + tableDelData = tableDelData.concat(tableDelDataNew); + } + + } + allReturnMap[name +'Data'] = tableData; + allReturnMap[name +'DelData'] = tableDelData; + }); + const masterTbName = masterConfig.sTbName; + allReturnMap.masterData = returnData['master.'+ masterTbName]; + allReturnMap.masterData.enabled = true; + } + this.props.onSaveState({ ...allReturnMap }); + }else if (dataReturn.code === -8 || dataReturn.code === 2) { + Modal.info({ + title: '温馨提示:', + content: ( +
+ {this.handleGetMsg(dataReturn.msg)} +
+ ), + okText: '确认', + onOk() {}, + }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + + } + } + } + handleCamera = () => { + BarCodeUtil.getImage(); + } + handleGetPhoto = () => { + BarCodeUtil.getPhoto(); + } + + handleGetWxCode = async (successHandler) => { + let scanResult = ''; + const { app } = this.props; + // eslint-disable-next-line prefer-destructuring,no-unused-vars + const userinfo = app.userinfo; + const myUrl = location.href; + const configUrl = `${commonConfig.server_host}wechat/getWxToken`; + const values = { + url: myUrl, + sBrandsId: userinfo.sBrandsId, + sSubsidiaryId: userinfo.sSubsidiaryId, + }; + // const values = { + // url: myUrl, + // sBrandsId: '1111111111', + // sSubsidiaryId: '1111111111', + // }; + const configReturn = (await commonServices.postValueService(null, values, configUrl)).data; + console.log('configReturn::', configReturn, values); + if (configReturn.code === 1) { + const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows)) { + const appId = rows[0].appId.toString(); + const nonceStr = rows[0].nonceStr.toString(); + const signature = rows[0].signature.toString(); + const timestamp = rows[0].timestamp.toString(); + weixin.config({ + beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId, // 必填,公众号的唯一标识 + timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %> + nonceStr, // 必填,生成签名的随机串 + signature, // 必填,签名 + jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫 + }); + weixin.ready(() => { + weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口 + jsApiList: ['scanQRCode'], + success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} + console.log(res); + if (res.checkResult.scanQRCode !== true) { + Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`); + } + }, + // eslint-disable-next-line no-unused-vars + fail(res) { // 检测getNetworkType该功能失败时处理 + Toast.fail('checkJsApi error'); + }, + + + }); // wx.ready结束 + weixin.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 + success(res) { + // console.log("调用扫描成功",res); + scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 + if (commonUtils.isNotEmptyObject(scanResult)) { + const codeResult = scanResult.split(','); + if (codeResult.length > 1) { + scanResult = codeResult[1]; + } + } + successHandler(scanResult); + // console.log('微信扫码结果:', scanResult); + }, + error(res) { + // console.log(res); + if (res.errMsg.indexOf('function_not_exist') > 0) { + Toast.fail('版本过低请升级'); + } + }, + }); + }); + } else { + Toast.fail(configReturn.msg); + } + } else { + Toast.fail(configReturn.msg); + } + return scanResult; + } + + handleWxScan = async () => { + this.handleGetWxCode((code) => { + if (!commonUtils.isEmpty(code)) { + this.handleWxBusiness(code); + } + }); + } + + handleWxBusiness = async (code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + } + + getViewValue = (showConfig, record) => { + let sValue = record === undefined ? undefined : record[showConfig.sName]; + if (showConfig.sDropDownType === 'const') { + let showDropDown = []; + if (typeof showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown)); + } + let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString()); + if (iIndex === -1 && record[showConfig.sName] === '') { + iIndex = showDropDown.findIndex(item => item.sId === ''); + } + sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName]; + } + return sValue; + }; + + render() { + const { + slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, + } = this.props; + onReturnForm(this.props.form); + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0]; + const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1]; + const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2]; + const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3]; + const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4]; + const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5]; + const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6]; + const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7]; + const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8]; + const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9]; + + const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ + const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
+ + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + })} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
img 0} onClick={e => preView(previewImageArr, e)} />
; + } + return imgBox; + } else { + return ''; + } + })} +
+ ); + }; + return ( +
+
+ + { + f1 ? {f1.showName} : {this.getViewValue(f1, masterData)} : '' + } + { + f2 ? {f2.showName} : {this.getViewValue(f2, masterData)} : '' + } + + + { + f3 ? {f3.showName} : {this.getViewValue(f3, masterData)} : '' + } + + + { + f4 ? {f4.showName} : {this.getViewValue(f4, masterData)} : '' + } + + + { + f5 ? {f5.showName} : {this.getViewValue(f5, masterData)} : '' + } + { + f6 ? {f6.showName} : {this.getViewValue(f6, masterData)} : '' + } + + + { + f7 ? {f7.showName} : {this.getViewValue(f7, masterData)} : '' + } + { + f8 ? {f8.showName} : {this.getViewValue(f8, masterData)} : '' + } + + + { + f9 ? {f9.showName} : {this.getViewValue(f9, masterData)} : '' + } + { + f10 ? {f10.showName} : {this.getViewValue(f10, masterData)} : '' + } + +
+
+
+ + +
+ {commonUtils.isEmptyArr(slaveDataOld) ? +
+ + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
: +
+ {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
+ } +
+ +
+
+
+ ); + } +} + +const CommobileBillComponent = createForm()(CommobileBill); + +export default CommobileBase(CommobileBillEvent(CommobileBillComponent)); + diff --git a/src/mobile/common/CommobileBillEvent.js b/src/mobile/common/CommobileBillEvent.js new file mode 100644 index 0000000..996d1cc --- /dev/null +++ b/src/mobile/common/CommobileBillEvent.js @@ -0,0 +1,1764 @@ +/* eslint-disable */ +/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ +/** + * Created by mar105 on 2019-01-08. + */ +import React, { Component } from 'react'; +import { Toast } from 'antd-mobile'; +import * as commonUtils from '../../utils/utils'; +import * as commonFunc from '../../components/Common/commonFunc'; +import * as commonBusiness from '../../components/Common/commonBusiness'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import BarCodeUtil from './BarCodeUtil'; + + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = {}; + } + + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, masterConfig: masterConfigOld, sModelsId, + } = nextProps; + if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const slaveConfig = formData.filter(item => item.bGrd)[0]; + /* 判断是否有汇总表 */ + const slaveSumConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )) ? formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )[0] : {}; + let addStateMaster = {}; + let userEntrustData = []; /* 委托人 */ + let addState = {}; + let addStateSum = {}; + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + config.slaveSumConfig = slaveSumConfig; + addState = await this.handleAdd(config, nextProps.copyTo, true); + } else { + addStateMaster = await this.props.handleGetDataOne({ + name: 'master', + configData: masterConfig, + condition: { sId, pageSize: '', pageNum: '' }, + isWait: true, + }); + if (location.pathname === '/indexMobile/examine') { + const masterDataNew = addStateMaster.masterData; + const sParamsArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParams) ? JSON.parse(masterDataNew.sTableParams) : ''; + const sParamsValueArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParamsValue) ? JSON.parse(masterDataNew.sTableParamsValue) : ''; + /* 塞入配置 */ + if (commonUtils.isNotEmptyObject(sParamsArr) && commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + /* 移除最后一位元素 */ + for (const key of Object.keys(sParamsArr)) { + const newConfig = { + iOrder: 300, sId: commonUtils.createSid(), bVisible: true, sParamsArr: key, showName: sParamsArr[key], sName: key, + }; + const len = masterConfig.gdsconfigformslave.length; + masterConfig.gdsconfigformslave.splice(len - 1, 0, newConfig); + if (commonUtils.isNotEmptyArr(sParamsValueArr)) { + masterDataNew[key] = sParamsValueArr[key]; + } + } + } + /* 拉委托人员的下拉数据源 */ + const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnEntrust')); + if (iUserIndex > -1) { + userEntrustData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterDataNew); + } + } + addState = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + addStateSum = await this.props.handleGetDataSet({ + name: 'slaveSum', configData: slaveSumConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + if (commonUtils.isNotEmptyArr(addState.slaveData)) { + if (commonUtils.isNotEmptyObject(addState.slaveData[0].sReportParam)) { + addState.slaveData[0] = { ...addState.slaveData[0], ...commonUtils.convertStrToObj(addState.slaveData[0].sReportParam) }; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(addState.slaveData[0][`sParam${i.toString()}`])) { + slaveConfig.gdsconfigformslave[iIndex].showName = addState.slaveData[0][`sParam${i.toString()}`]; + slaveConfig.gdsconfigformslave[iIndex].bVisible = !addState.slaveData[0][`sParam${i.toString()}`].includes('参数值'); + } else if (iIndex > -1) { + slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } else { + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } + } + } + this.props.onSaveState({ + masterConfig, slaveConfig, sId, pageLoading: false, ...addState, ...addStateMaster, userEntrustData, slaveSumConfig, ...addStateSum, + }); + } + } + + shouldComponentUpdate(nextProps) { + const { masterConfig } = nextProps; + return commonUtils.isNotEmptyObject(masterConfig); + } + + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait) => { + /* 外置处理业务 */ + const { + sModelsId, token, sModelsType, formRoute, peopleInfosId, peopleInfoData, app, + } = this.props; + let masterConfig = commonUtils.isEmptyObject(config) ? {} : config.masterConfig; + if (!isWait) { + masterConfig = this.props.masterConfig; + } + let configNew = {}; + if (commonUtils.isEmptyObject(config)) { + const { slaveConfig } = this.props; + configNew.slaveConfig = slaveConfig; + } else { + configNew = config; + } + let masterData; + if (commonUtils.isNotEmptyObject(masterConfig)) { + masterData = commonFunc.getDefaultData(masterConfig); + } + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + if (formRoute === '/contactsInfo') { + if (commonUtils.isNotEmptyArr(peopleInfoData) && peopleInfosId !== '') { + const peopleInfo = peopleInfoData.filter(item => item.sId === peopleInfosId); + masterData = { ...masterData, ...peopleInfo[0] }; + } + } + let slaveData = []; + const slaveSumData = []; + const employeeData = []; + + // const slaveTotal = []; + // const tableDataTotal = {}; + let slaveAssignField = ''; + if (commonUtils.isNotEmptyObject(copyTo)) { + const copyToMasterConfig = copyTo.config.filter(item => item.sControlName === copyTo.name); + const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : ''; + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, copyTo.masterData, newCopyTo) }; + + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + if (sModelsType === 'production/productionReport') { + copyTo.slaveData = commonUtils.isEmptyArr(copyTo.slaveData) ? [] : [copyTo.slaveData[0]]; + } + if (slaveAssignField !== '') { + for (const slaveItem of copyTo.slaveData) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = slaveItem; + + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + + if (sModelsType === 'production/productionReport') { + if (!commonUtils.isEmpty(slaveRow.sWageId)) { + slaveRow.dWageMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sWageId, + }); + } + if (!commonUtils.isEmpty(slaveRow.sConversionFormulaId)) { + slaveRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sConversionFormulaId, + }); + } + if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) { + slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) }; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(slaveRow[`sParam${i.toString()}`])) { + configNew.slaveConfig.gdsconfigformslave[iIndex].showName = slaveRow[`sParam${i.toString()}`]; + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = !slaveRow[`sParam${i.toString()}`].includes('参数值'); + } else if (iIndex > -1) { + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } else { + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } + const sMachineId = app.sMachineId; + if (sMachineId) { + const sSessionTeamId = localStorage.getItem(`${commonConfig.prefix}mobile_${sMachineId}`); + if (sSessionTeamId) { + slaveRow.sTeamId = sSessionTeamId; + } + } + let returnData = JSON.parse(localStorage.getItem(`${commonConfig.prefix}employeeData`)); + if (!commonUtils.isEmpty(slaveRow.sTeamId)) { + if (commonUtils.isEmptyArr(returnData)) { + const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${slaveRow.sTeamId}&sSlaveId=${slaveRow.sId}&sParentId=${slaveRow.sParentId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + returnData = dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + returnData.forEach((child) => { + employeeData.push({ + sId: commonUtils.createSid(), + sParentId: masterData.sId, + sSlaveId: slaveRow.sId, + sEmployeeId: child.sEmployeeId, + sEmployeeName: child.sEmployeeName, + dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6), + handleType: 'add', + }); + }); + /* 班组变化时,算每个工作人员计件工资 */ + const dWageMoneyTotal = slaveRow.dWageMoney; + if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) { + let dProportionTotal = 0; + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + item.dProportion = parseFloat(item.dProportion); + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6); + } + }); + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { + ...item, + dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), + handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType, + }; + } + }); + } + + + const dWageMoney = commonUtils.isNotEmptyNumber(slaveRow.dWageMoney) ? commonUtils.convertFixNum(slaveRow.dWageMoney, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(slaveRow.dTimeMoney) ? commonUtils.convertFixNum(slaveRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(slaveRow.dLossMoney) ? commonUtils.convertFixNum(slaveRow.dLossMoney, 6) : 0; + slaveRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + } + } + slaveData.push(slaveRow); + } + } + + if (!commonUtils.isEmpty(masterData.sTestStandardId)) { + const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${masterData.sTestStandardId}`; + const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data; + const slaveDelData = []; + if (dataReturn.code === 1) { + const returnSlaveData = dataReturn.dataset.rows; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + slaveData = []; + const newCopyTo = {}; + newCopyTo.master = masterData; + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName'); + const slaveConfig = commonUtils.isEmptyObject(config) ? {} : config.slaveConfig; + if (!isWait) { + masterConfig = this.props.slaveConfig; + } + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + // tableDataRow.sTestReference = '15S|20S'; + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { /* 若数据有值 渲染下拉框 */ + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } else { /* 若数据没有值 则渲染文本框 */ + tableDataRow.isText = true; + } + } + slaveData.push(tableDataRow); + }); + } + } + } + + /* 剔除订单到收款单新增空行(2022.7.8朱总要求)) */ + if (slaveData.length === 0 && commonUtils.isNotEmptyObject(slaveAssignField)) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + let tableDataRowAdd = {}; + if (commonUtils.isNotEmptyObject(configNew.slaveConfig)) { + tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + slaveData.push(tableDataRowAdd); + } + } + + const state = { + masterData, + slaveData, + slaveSumData, + employeeData, + slaveTotal: [], + slaveSelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, sModelsId, currentId, masterData, masterConfig, slaveConfig, employeeConfig, billnosetting, app, sModelsType, copyTo, dispatch, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */ + params.optName = BtnSave; + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId }); + if (commonUtils.isNotEmptyObject(returnData)) { + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData } = copyTo; + const sIdArray = []; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); + this.props.onSaveState({ + enabled: false, currentId: masterData.sId, + }); + let btnSaveConfigArr = []; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnExamine')); + if (iIndex > -1) { + btnSaveConfigArr = masterConfig.gdsconfigformslave[iIndex]; + } + console.log('btnSaveConfigArr', btnSaveConfigArr); + const interfaceArr = commonUtils.isNotEmptyObject(btnSaveConfigArr) ? btnSaveConfigArr.interface :[]; + let bSucess = true; + if (billnosetting.bAutoCheck) { + /* 根据接口返回是之前调用还是之后调用 */ + if (false && commonUtils.isNotEmptyArr(interfaceArr)) { + const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === '1'); + const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === '2'); + + if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */ + let flag = 0; + const asyncFunc = async () => { + for (let i = 0; i < beforeInterfaceArr.length; i ++) { + const data = await this.handleInterfaceCall(beforeInterfaceArr[i]); + if (!data) { + flag += 1; + } + } + } + if (flag == 0) { + await this.handleAudit(1); + } else { + this.props.onSaveState({ + loading: false, + }); + } + } + + if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */ + const result = await this.handleAudit(1); + if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */ + const asyncFunc = async () => { + for (let i = 0; i < afterInterfaceArr.length; i++) { + await this.handleInterfaceCall(afterInterfaceArr[i]); + } + } + await asyncFunc(); + } + } + } else { + await this.handleAudit(1); + } + } else { + await this.handleGetData(masterConfig, slaveConfig); + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + await this.handleGetMemoData(employeeConfig); + } + if (this.props.refresh !== undefined) { + this.props.refresh(); + } + /* 通过onRouterMobile路由跳转 */ + if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) { + const sModelsId = copyTo.listModelsId; + const sModelsType = copyTo.listModelsType; + const url = '/indexMobile/commobileList'; + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId, + sModelsType, + copyTo, + listFilterCondition: copyTo.listFilterCondition, + }, + }); + } else { + window.history.back(-1); + } + } + this.props.onSaveState({ + loading: false, + }); + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + + /** toolbar校验保存 */ + handleValidateSave = async () => { + const { + masterConfig, masterData, slaveConfig, slaveData, slaveDelData, sModelsType, employeeConfig, employeeData, employeeDelData, token, sModelsId, app, + slaveSumConfig, slaveSumData, slaveSumDelData, + } = this.props; + if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if (slaveConfig && slaveConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveData)) { + Toast.info(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + + if (sModelsType === 'production/productionReport') { + for (const tableDataRow of slaveData) { + const sWageId = tableDataRow.sWageId; + tableDataRow.dWageMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sWageId, + }); + const dWageMoneyTotal = tableDataRow.dWageMoney; + let dProportionTotal = 0; + const employeeSlaveData = employeeData.filter(item => item.sSlaveId === tableDataRow.sId); + employeeSlaveData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + } + }); + employeeSlaveData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { + ...item, + dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dWageMoney, 0), 6), + dTimeMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dTimeMoney, 0), 6), + dLossMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dLossMoney, 0), 6), + dOtherMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dOtherMoney, 0), 6), + dJobMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dJobMoney, 0), 6), + handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType, + }; + } + }); + /* 选择计件方案后 算总金额 */ + const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0; + tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + } + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + data.push(commonBusiness.mergeData('employee', employeeConfig.sTbName, employeeData, employeeDelData)); + localStorage.setItem(`${commonConfig.prefix}sTeamId`, slaveData[0].sTeamId); + localStorage.setItem(`${commonConfig.prefix}employeeData`, JSON.stringify(employeeData)); + /* 手机端报产选了机台后,进去报产,选了班组,确认之后,在返回去报第二个的时候,默认班组 */ + if (commonUtils.isNotEmptyObject(slaveData[0])) { + const sMachineId = slaveData[0].sMachineId; + const sTeamId = slaveData[0].sTeamId; + if (sMachineId && sTeamId) { + localStorage.setItem(`${commonConfig.prefix}mobile_${sMachineId}`, sTeamId); + } + } + } + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + data.push(commonBusiness.mergeData('slaveSum', slaveSumConfig.sTbName, slaveSumData, slaveSumDelData)); + } + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }); + }; + + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { masterData, gdsformconst } = this.props; + let bResult = true; + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + Toast.info(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName); + return ''; + } + /** 数据审核 */ + bResult = await this.dataAudit(flag); + return bResult; + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, token, sModelsType, slaveData, employeeConfig, copyTo, dispatch, + } = this.props; + const sSlaveIdArray = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + sSlaveIdArray.push(commonUtils.isNotEmptyObject(item.sId) ? item.sId : item.sSlaveId); + }); + } + const slaveId = sSlaveIdArray.toString(); + /* 数据参数 */ + const value = { + sClientType: '1', + paramsMap: { + iFlag: flag, + iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck, + sFormGuid: sModelsId, + sGuid: masterData.sId, + sSlaveId: slaveId, + sBillNo: commonUtils.isNotEmptyObject(masterData.sBillNo) ? masterData.sBillNo : '', + }, + }; + /* 数据审核 */ + const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (isWait) { + return returnData; + } else { + /* 接收返回值 */ + await this.handleGetData(masterConfig, slaveConfig); + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + await this.handleGetMemoData(employeeConfig); + } + if (this.props.refresh !== undefined) { + this.props.refresh(); + } + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + const sReturnArray = outData[0].sReturn.split('|'); + if (outData[0].sReturn.split('-').length < 2) { + // 正常业务提示,非审核模板 + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + Toast.fail(check + outData[0].sReturn); + return; + } + const checkConditions = []; + let checkPersonData = {}; + sReturnArray.forEach((item) => { + const checkCondition = item.split('-')[2]; + checkConditions.push({ + key: commonUtils.createSid(), + condition: checkCondition, + }); + }); + const sCheckModelId = sReturnArray[0].split('-')[1]; + if (commonUtils.isNotEmptyStr(sCheckModelId)) { + const urlCheck = `${commonConfig.server_host}checkModel/getUserListByModelId/${sCheckModelId}?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.getService(token, urlCheck)).data; + if (dataReturn.code === 1) { + checkPersonData = dataReturn.dataset.rows; + checkPersonData.forEach((item) => { + item.key = commonUtils.createSid(); + }); + this.props.onSaveState({ + checkConditions, checkPersonData, sCheckModelId, visible: true, + }); + } else { /* 失败 */ + this.props.getServiceError({ msg: check + dataReturn }); + return false; + } + } + } else { + Toast.success(check + returnData.msg); + if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) { + const sModelsId = copyTo.listModelsId; + const sModelsType = copyTo.listModelsType; + const url = '/indexMobile/commobileList'; + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId, + sModelsType, + copyTo, + returnFilterCondition: copyTo.listFilterCondition, + }, + }); + } else { + window.history.back(-1); + } + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + Toast.fail(outData[0].sReturn); + return false; + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + Toast.success(BtnCancelExamine + returnData.msg); + window.history.back(-1); + } + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + return false; + } + return true; + } + }; + + /* 调用后台配置的接口 */ + handleThirdInterfaceCall = async (obj, showTip, key, sListSlaveId) => { + let bResult = false; + const { + app, sModelsId, masterData, slaveSelectedRowKeys, + } = this.props; + const sInterfaceName = obj.sInterfaceName; + const value = { sId: commonUtils.isNotEmptyObject(sListSlaveId) ? sListSlaveId : masterData.sId, userInfo: app.userinfo }; + const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url, app)).data; + if (returnData.code === 1) { + bResult = true; + } else if (returnData.code === -8) { + Modal.info({ + title: '温馨提示:', + width: 200, + content: ( +
+ {this.handleGetMsg(returnData.msg)} +
+ ), + okText: '确认', + onOk() {}, + }); + bResult = true; + } else { + bResult = false; + this.props.getServiceError(returnData); + } + return bResult; + } + + handleForm = (form) => { + this.form = form; + }; + /** 点击修改按钮操作 */ + handleEdit = () => { + const { + slaveConfig, masterConfig, app, dispatch, currentId, + } = this.props; + const { userinfo } = app; + + let timValue = 0; + if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + timValue = 3000; + } + setTimeout(() => { + this.props.app.webSocket.onmessage = (msg) => { + const rtmsg = JSON.parse(msg.data); + if (rtmsg.action === 'showMsg') { + Toast.info(rtmsg.msg); + this.props.onSaveState({ loading: false }); + } else if (rtmsg.action === 'loginOut') { + if (location.pathname.indexOf('/indexOee') > -1) { + dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } }); + } else if (location.pathname.indexOf('/indexMobile') > -1) { + dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } }); + } else { + dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } }); + } + } else if (rtmsg.action === 'update') { + this.handleGetData(masterConfig, slaveConfig); + this.props.onSaveState({ enabled: true, loading: false }); + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null); + }, timValue); + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' } }); + if (!commonUtils.isEmptyObject(slaveConfig)) { + this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + + handleGetMemoData = async (employeeConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + this.props.handleGetDataSet({ + name: 'employee', configData: employeeConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + }; + + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + // this.handleCustomerChange(name, changeValue); + const { + sModelsId, sModelsType: sModelsTypeOld, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token, + } = this.props; + const addState = {}; + const sModelsType = commonUtils.isEmpty(sModelsTypeOld) ? '' : sModelsTypeOld; + const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; + let bNewSlaveData = false; + if (sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName') { + if (commonUtils.isNotEmptyArr(slaveData)) { + // 从表有数据,请删除后修改客户!不能去掉 + if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { + bNewSlaveData = true; + } else { + Toast.info(commonFunc.showMessage(app.commonConst, 'slaveHasDataPleaseDel')); + return; + } + } + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []); + // + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } else if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') { + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsId', []); + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsName', []); + if (sModelsType === 'materialsStock/materialsCheck' || sModelsType === 'productStock/productCheck') { + let value = {}; + if (sModelsType === 'materialsStock/materialsCheck') { + value = { + sProName: 'Sp_System_AccountSquareCheck', + paramsMap: { + iType2: 1, + sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '', + }, + }; + } else if (sModelsType === 'productStock/productCheck') { + value = { + sProName: 'Sp_System_AccountSquareCheck', + paramsMap: { + iType2: 2, + sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '', + }, + }; + } + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const outData = returnData.dataset.rows[0].dataSet.outData[0]; + if (outData.sCode === -1) { + Toast.fail(outData.sReturn); + return; + } + } else { + this.props.getServiceError(returnData); + return; + } + } + } else if (sModelsType.includes('cashier/') && sFieldName === 'sBillType') { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerName', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyName', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyName', []); + changeValue.sCustomerId = ''; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerId'); + if (iIndex > -1) { + masterConfig.gdsconfigformslave[iIndex].bReGetDropDown = true; + } + changeValue.sSupplyId = ''; + const iSupplyIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sSupplyId'); + if (iSupplyIndex > -1) { + masterConfig.gdsconfigformslave[iSupplyIndex].bReGetDropDown = true; + } + /* 财务调整中切换调整类型后,对象名称清空 */ + const sBillTypeIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sFamilyName'); + if (sBillTypeIndex > -1) { + masterData.sFamilyName = ''; + } + this.props.onSaveState({ masterConfig }); + } else if (sFieldName === 'sGetPayId') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'sSettlementId') { + if (changeValue.sSettlementId === 'cash') { + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; + masterData.sBankAccount = ''; + } + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; + masterData.sInvoiceNo = ''; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 1; + masterData.sBankId = ''; + masterData.sBankName = ''; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; + delete masterData.tDueDate; + } + } + if (changeValue.sSettlementId === 'bank') { + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; + masterData.sInvoiceNo = ''; + } + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 0; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; + delete masterData.tDueDate; + } + } + if (changeValue.sSettlementId === 'bill') { + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; + masterData.sBankAccount = ''; + } + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 0; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 0; + } + } + } + let returnData = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterData); + const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true); + if (commonUtils.isNotEmptyObject(masterDataAfter)) { + returnData.masterData = masterDataAfter; + } + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName' || sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName' || sFieldName === 'tDeliverDate') { + const slaveDataNew = []; + for (const item of slaveData) { + let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (sModelsType.includes('materialsStock/productionmaterialsadjust'))) ? + { ...item } : { ...item, [sFieldName]: changeValue[sFieldName] }; + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + tableDataRow.sTaxId = changeValue.sTaxId; + tableDataRow.sTaxNo = changeValue.sTaxNo; + tableDataRow.sTaxName = changeValue.sTaxName; + tableDataRow.dTaxRate = changeValue.dTaxRate; + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', masterData, tableDataRow); + let dMaterialsMoney = ''; + if (sModelsType.includes('outside/')) { /* 工序发外 */ + let sComputeId = ''; + const sSupplyId = changeValue.sSupplyId; + const sProcessId = tableDataRow.sProcessId; + /* 根据客户id,工序id获取公式ID */ + if (commonUtils.isNotEmptyObject(sSupplyId) && commonUtils.isNotEmptyObject(sProcessId)) { + sComputeId = await commonBusiness.getOutSideProcessFormula({ + token, sModelsId, sSupplyId, sProcessId, + }); + if (commonUtils.isNotEmptyObject(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + } + } + } + if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) { + if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') { + tableDataRow.sWareHouseId = changeValue.sWareHouseId; + tableDataRow.sWarehouseId = changeValue.sWareHouseId; + tableDataRow.sWareHouseNo = changeValue.sWareHouseNo; + tableDataRow.sWareHouseName = changeValue.sWareHouseName; + } else if (sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName') { + tableDataRow.sLocationId = changeValue.sLocationId; + tableDataRow.sLocationNo = changeValue.sLocationNo; + tableDataRow.sLocationName = changeValue.sLocationName; + } else if (sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') { + tableDataRow.sWareHouseLocationId = changeValue.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = changeValue.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = changeValue.sWareHouseLocationName; + } + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + slaveDataNew.push(tableDataRow); + } + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (bNewSlaveData) { + const slaveDataNew = []; + const allTableData = {}; + allTableData.master = returnData.masterData; + const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + slaveDataNew.push(tableDataRowAdd); + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款 + if (commonUtils.isNotEmptyObject(masterData)) { + this.getCustomerReceipt({ masterData: returnData.masterData }); + } + } + } else if (sFieldName === 'sTestStandardId' || sFieldName === 'sTestStandardName') { + const { slaveDelData: slaveDelDataOld, slaveConfig, masterConfig } = this.props; + const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${returnData.masterData.sTestStandardId}`; + const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + if (dataReturn.code === 1) { + const returnSlaveData = dataReturn.dataset.rows; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + const slaveDataNew = []; + const newCopyTo = {}; + newCopyTo.master = masterData; + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName'); + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + // tableDataRow.sTestReference = '15S|20S'; + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } else { /* 若数据没有值 则渲染文本框 */ + tableDataRow.isText = true; + } + } + slaveDataNew.push(tableDataRow); + }); + addState.slaveData = slaveDataNew; + } else { + Toast.fail(dataReturn.msg); + } + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('quality/')) { + let masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models); + masterData = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, masterData); + if (sFieldName !== 'dPackQty') { + if (changeValue.dPackQty !== this.state.dPackQtyChange && changeValue.dPackQty !== undefined) { + masterData = commonBusiness.getCalculateAllMoney(app, models, 'dPackQty', masterData, masterData); + this.setState({ dPackQtyChange: changeValue.dPackQty }); + } + } + returnData = { ...returnData, masterData }; + } + if (isWait) { + return { ...returnData, ...addState, enabled: true }; + } else { + this.props.onSaveState({ ...returnData, ...addState, enabled: true }); + return returnData; + } + } + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, + } = this.props; + if (name === 'control' && sModelsType === 'sales/salesOrder') { + const { [`${name}Data`]: tableData, materialsData: materialsDataOld, processData: processDataOld } = this.props; + let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + if (sFieldName === 'dSinglePQty' || sFieldName === 'dSumPQty' || sFieldName === 'iPrintModePo' || sFieldName === 'iPrintMode' || sFieldName === 'iPrintModePo' || sFieldName === 'iPositiveColor' || + sFieldName === 'iPositiveSpecialColor' || sFieldName === 'iOppositeColor' || sFieldName === 'iOppositeSpecialColor') { + if (sFieldName === 'iPrintModePo') { + if (tableDataRow.iPrintModePo === 0) { + tableDataRow.iPrintMode = 3; + if (tableDataRow.iPositiveColor === 0) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } else { + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } + } else if (tableDataRow.iPrintModePo === 1) { + tableDataRow.iPrintMode = 3; + if (tableDataRow.iPositiveColor === 0) { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? 4 : tableDataRow.iOppositeColor; + } else { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + } + } else { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; + } + } else if (sFieldName === 'iPrintMode') { + if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { + tableDataRow.iPositiveColor = commonUtils.isEmpty(tableDataRow.iPositiveColor) || tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; + tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; + } else if (tableDataRow.iPrintMode === 2) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; + } else if (tableDataRow.iPrintMode === 3) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } else if (tableDataRow.iPrintMode === 4) { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } + } else if (sFieldName === 'iPositiveColor' || sFieldName === 'iPositiveSpecialColor') { + if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { + tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; + tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; + } + } + tableDataRow = this.singlePQtyChange(tableDataRow); + } + const materialsData = []; + const processData = []; + materialsDataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + materialsData.push(itemNew); + }); + processDataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + processData.push(itemNew); + }); + const materialsDataNew = this.sortData(tableData, materialsData); + const processDataNew = this.sortData(tableData, processData); + + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, materialsData: materialsDataNew, processData: processDataNew }); + } else { + let { masterData } = this.props; + const iIndex = tableData.findIndex(item => item.sId === sId); + // if (sFieldName.substring(0, 1) === 'd' && commonUtils.convertToNum(tableData[iIndex][sFieldName]) === commonUtils.convertToNum(changeValue[sFieldName])) { + // if (!(tableData[iIndex][sFieldName] === undefined && commonUtils.convertToNum(changeValue[sFieldName]) === 0)) return; + // } + if (sFieldName === 'sProductName' && name === 'slave' && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder') || sModelsType.includes('quotation/quotation'))) { + if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) { + changeValue.sProductId = changeValue.sProductName; + } + } + let tableDataRow = this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo' + || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) { + const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', sFieldName); + const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId); + if (iProductIdIndex === -1) { + tableDataRow.sProductInfo = JSON.stringify({ + sProductId: tableDataRow.sProductName, + sProductName: tableDataRow.sProductName, + sProductStyle: tableDataRow.sProductStyle, + sProductUnit: tableDataRow.sProductUnit, + sProductNo: tableDataRow.sProductNo, + sCustomerProductNo: tableDataRow.sCustomerProductNo, + sProductClassifyId: tableDataRow.sProductClassifyId, + sProductClassifyName: tableDataRow.sProductClassifyName, + }); + } else { + tableDataRow.sProductInfo = ''; + } + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_Cashier_GetProductPrice', + paramsMap: { + sProductGuid: changeValue.sProductId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dProductQty', app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + // else { + // this.props.getServiceError(returnData); + // } + } + } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && name === 'slave') { + const { controlData } = this.props; + if (controlData !== undefined && !commonUtils.isEmpty(tableData.sProductInfo)) { + const controlDataFilter = controlData.filter(item => item.sSlaveId === tableData[iIndex].sId); + const tableSelectedRowKeys = []; + controlDataFilter.forEach((item) => { + tableSelectedRowKeys.push(item.sId); + }); + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel('control', true, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + } + } else if (sModelsType.includes('cashier/') && sFieldName === 'dTotalMoney') { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */ + const addStata = {}; + addStata.dTotalMoney = 0; + if (iIndex > -1) { /* 选中行 */ + let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTotalMoney) ? tableDataRow.dTotalMoney : 0; + dMoney = commonUtils.convertStrToNumber(dMoney); + addStata.dTotalMoney = dMoney + commonUtils.convertStrToNumber(addStata.dTotalMoney); + } + tableData.forEach((item, index) => { /* 非选中行 */ + if (index !== iIndex) { + const dMoney = commonUtils.isNotEmptyNumber(item.dTotalMoney) ? item.dTotalMoney : 0; + addStata.dTotalMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dTotalMoney, 6); + } + }); + masterData = { ...masterData, ...addStata }; + this.props.onSaveState({ masterData }); + } + // 取工艺卡数据 + if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductId' || sFieldName === 'sProductNo' || sFieldName === 'sProductName') && name === 'slave') { + const { + controlConfig, materialsConfig, processConfig, + } = this.props; + let { controlData, materialsData, processData } = this.props; + const sId = tableData[iIndex].sId; + const bCkxCopyFromTechnology = '1'; // app.systemData.filter(item => item.sName === 'CkxCopyFromTechnology')[0].sValue; + if (bCkxCopyFromTechnology === '1' && tableDataRow.sProductId !== tableDataRow.sProductName) { + const controlSelectedData = controlData.filter(item => item.sSlaveId === sId); + if (commonUtils.isNotEmptyObject(controlSelectedData)) { + const materialsReturnData = this.otherTableDel('materials', controlSelectedData); + const processReturnData = this.otherTableDel('process', controlSelectedData); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData); + controlData = controlReturnData.controlData; + materialsData = materialsReturnData.materialsData; + processData = processReturnData.processData; + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + } + const sCustomerId = masterData.sCustomerId; + const sProductId = changeValue.sProductId; + const sProductIdArray = []; + sProductIdArray.push(sProductId); + const sProductIds = sProductIdArray.toString(); + const condition = { sCustomerId, sProductIds }; + const dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + const config = this.props.masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnCopyFrom.ActProcessCard')); + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToControlConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Control'.toLowerCase()); + const copyToMaterialsConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Materials'.toLowerCase()); + const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmptyArr(tableData) ? {} : tableData; + if (commonUtils.isNotEmptyArr(returnData.controlData)) { + // eslint-disable-next-line no-loop-func + returnData.controlData.forEach((controlItem) => { + newCopyTo.control = controlItem; + let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + controlRow.handleType = 'add'; + controlRow.sId = commonUtils.createSid(); + controlRow.sSlaveId = tableDataRow.sId; + controlRow.sParentId = masterData.sId; + controlData.push(controlRow); + + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + returnData.materialsData.filter(item => item.sControlId === controlItem.sId).forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = tableDataRow.sId; + materialsRow.sParentId = masterData.sId; + materialsRow.sControlId = controlRow.sId; + materialsRow.sPartsName = controlRow.sPartsName; + + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + returnData.processData.filter(item => item.sControlId === controlItem.sId).forEach((processItem) => { + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processData.push(processRow); + }); + } + }); + } + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + // eslint-disable-next-line no-loop-func + returnData.materialsData.filter(item => item.sType === '2').forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = tableDataRow.sId; + materialsRow.sParentId = masterData.sId; + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + // eslint-disable-next-line no-loop-func + returnData.processData.filter(item => item.sType === '3').forEach((processItem) => { + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processData.push(processRow); + }); + } + this.props.onSaveState({ controlData, materialsData, processData }); + } + } + } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'dProductQty' || sFieldName === 'dGiveQty' || sFieldName === 'dStockupQty') && name === 'slave') { + const { + controlData, slaveSelectedRowKeys, + } = this.props; + const controlSelectedData = controlData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0]); + for (const one of controlSelectedData) { + one.handleType = commonUtils.isEmpty(one.handleType) ? 'update' : one.handleType; + one.dPartsQty = commonUtils.isNull(tableDataRow.dProductQty, 0) + commonUtils.isNull(tableDataRow.dGiveQty, 0); + } + this.props.onSaveState({ controlData }); + } else if (sModelsType.includes('purchase/') && (sFieldName === 'sMaterialsId' || sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName') && name === 'slave') { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_Cashier_GetMaterialsPrice', + paramsMap: { + sMaterialsGuid: changeValue.sMaterialsId, + sSupplyGuid: masterData.sSupplyId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dMaterialsPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dAuxiliaryQty', app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + + if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: tableDataRow.sMaterialsId, + sMaterialsStyle: tableDataRow.sMaterialsStyle, + sWarehouseGuid: tableDataRow.sWarehouseId, + sLocationalGuid: tableDataRow.sLocationId, + sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId, + sDefine_no: tableDataRow.sDefineNo, + sDefine_no2: tableDataRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + tableDataRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: tableDataRow.sMaterialsId, + sMaterialsStyle: tableDataRow.sMaterialsStyle, + sWarehouseGuid: tableDataRow.sWarehouseId, + sLocationalGuid: tableDataRow.sLocationId, + sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId, + sDefine_no: tableDataRow.sDefineNo, + sDefine_no2: tableDataRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + tableDataRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + // else { + // this.props.getServiceError(returnData); + // } + } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') { + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dPprice = this.props.getFloatNum('dProductPrice'); /* 获取系统设定小数位 */ + tableDataRow.dProductMoney = commonUtils.convertFixNum(tableDataRow.dSrcMoney - tableDataRow.dLossMoney, dPprice); + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + tableDataRow.dProductMoney = tableDataRow.dSrcMoney; + tableDataRow.dLossMoney = 0; + } + } + /* 各种金额,税额,价格计算 */ + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, tableDataRow); + let dMaterialsMoney = ''; + if (sModelsType.includes('outside/')) { /* 工序发外 && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty') */ + let sComputeId = {}; + const sSupplyId = masterData.sSupplyId; + const sProcessId = tableDataRow.sProcessId; + /* 根据客户id,工序id获取公式ID */ + sComputeId = await commonBusiness.getOutSideProcessFormula({ + token, sModelsId, sSupplyId, sProcessId, + }); + if (!commonUtils.isEmpty(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + } + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } + } + }; + + handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') { + if (sFieldName === 'dReelAuxiliaryQty') { + if (tableDataRow.sMaterialsUnit === '吨' && tableDataRow.bReel && tableDataRow.dGramWeight > 0) { + tableDataRow = commonBusiness.getMaterialsQty(app, { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, 'dReelAuxiliaryQty', 'dMaterialsQty'); + tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty; + tableDataRow.sMaterialsStyle = tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split('*').length > 1 ? tableDataRow.sMaterialsStyle.split('*')[0] : tableDataRow.sMaterialsStyle; + tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit; + } else if (tableDataRow.sMaterialsUnit.toUpper() === 'M2' && tableDataRow.bReel) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dReelAuxiliaryQty', 'dMaterialsQty'); + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } else { + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } + } + if (commonUtils.isEmpty(sComputeId) && sFieldName !== 'dConversionQty') { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dAuxiliaryQty', 'dMaterialsQty'); + } else if (!commonUtils.isEmpty(sComputeId)) { + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + } + if (sFieldName !== 'dConversionQty' && !commonUtils.isEmpty(sConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sConversionComputeId, + }); + } + } else if (sFieldName === 'dMaterialsQty') { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryQty'); + } else if (tableDataRow.bInverse) { + tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId, + }); + } + if (!commonUtils.isEmpty(sReConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReConversionComputeId, + }); + } + } else if (sFieldName === 'dAuxiliaryLossQty') { + if (commonUtils.isEmpty(sComputeId)) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, 'dLossQty'); + } else { + tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6); + } + } else if (sFieldName === 'dLossQty') { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty'); + } else if (tableDataRow.bInverse) { + tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty; + } + } else if (sFieldName === 'sProcessId' || sFieldName === 'sProcessNo' || sFieldName === 'sProcessName') { + const sProcessId = changeValue.sProcessId; + const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice; + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dMaterialsPrice', masterData, tableDataRow); + } + } + return tableDataRow; + } + + handleCustomerChange = (name, changeValue) => { + if (commonUtils.isNotEmptyObject(changeValue)) { + if (changeValue.sCustomerId !== this.state.changleCustomerId) { + const sCustomerId = []; + sCustomerId.push(changeValue.sCustomerId); + this.handleTableSelectRowChange(name, sCustomerId, changeValue); + } + } + this.setState({ changleCustomerId: changeValue.sCustomerId }); + } + handleMobileScan = (fieldConfig, tbName, record) => { + if (commonUtils.isNotEmptyObject(fieldConfig)) { + const sFieldName = fieldConfig.sName; + const newTableName = 'master'; + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig, + } = this.props; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + const masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + const sCode = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + if (tbName === 'master') { + masterData[sFieldName] = sCode; + } + if (tbName === 'master') { + masterdataObj = { + ...masterData, [sFieldName]: sCode, + }; + } else if(tbName === 'slave') { + if(commonUtils.isNotEmptyArr(slaveData)) { + /* 如果是从表的字段配置了扫码 那么则将值赋值到字段上 */ + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sId === record.sId) : -1; + if (iIndex > -1) { + const newType = commonUtils.isEmpty(slaveData[iIndex].handleType) ? 'update' : slaveData[iIndex].handleType; + slaveData[iIndex] = { ...slaveData[iIndex], [sFieldName]: sCode, handleType :newType }; + } + } + } + + + + /* 读取扫码配置 */ + // const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + // const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + // /* 唯一码调接口 */ + // let sqlDataRow ={}; + // if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + // if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + // sqlDataRow = sqlDropDownData[0]; + // } + // } + // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + // if(commonUtils.isNotEmptyObject(sqlDataRow)) { + // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + // } + // slaveDataObj.sParentId = masterdataObj.sId; + // if (commonUtils.isNotEmptyArr(slaveData)) { + // const len = slaveData.length; + // const sDefineNoNew = slaveData[len - 1].sDefineNo; + // const { handleType } = slaveData[len - 1]; + // /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + // if (commonUtils.isEmptyArr(sDefineNoNew)) { + // slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // // slaveData[len - 1] = slaveDataObj; + // slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + // } else { + // slaveDataObj.sId = commonUtils.createSid(); + // slaveDataObj.handleType = 'add'; + // slaveData.push(slaveDataObj); + // } + // } else { + // slaveDataObj.sId = commonUtils.createSid(); + // slaveDataObj.handleType = 'add'; + // slaveData.push(slaveDataObj); + // } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } + } + + render() { + return ( + + ); + } + }; +}; diff --git a/src/mobile/common/CommobileChar.js b/src/mobile/common/CommobileChar.js new file mode 100644 index 0000000..03ad6f0 --- /dev/null +++ b/src/mobile/common/CommobileChar.js @@ -0,0 +1,161 @@ +/* eslint-disable object-curly-newline */ +import React, { Component } from 'react'; +import { Radio } from 'antd'; +import baseChar from '../../components/Common/baseChar'; /* 获取图表配置及数据 */ +// import { Bar, Columnar, ColumnarGroup, BrokenLine, WaterWave, Gauge, ColumnarStack, PieGroup, Pie, TimeLineGroup } from '../../components/Charts'; +import Bar from '../../components/Charts/Bar'; +import Columnar from '../../components/Charts/Columnar'; +import ColumnarGroup from '../../components/Charts/ColumnarGroup'; +import BrokenLine from '../../components/Charts/BrokenLine'; +import WaterWave from '../../components/Charts/WaterWave'; +import Gauge from '../../components/Charts/Gauge'; +import ColumnarStack from '../../components/Charts/ColumnarStack'; +import PieGroup from '../../components/Charts/PieGroup'; +import Pie from '../../components/Charts/Pie'; +import TimeLineGroup from '../../components/Charts/TimeLineGroup'; + +import styles from '../../components/Charts/index.less'; +import * as utils from '../../utils/utils'; + +class CommobileChar extends Component { + constructor(props) { + super(props); + this.state = { + ...props, + commonChar: styles.commonChar, + childChar: styles.childChar, + }; + } + + + componentWillReceiveProps(nextProps) { + this.setState({ ...nextProps }); + } + + + handleChar = (props) => { + const { sCharType, child } = props; + let content = ''; + if (utils.isNotEmptyObject(child)) { + child.height = props.iHeight; + if (sCharType === 'sBar') { + /* 横向条形图 */ + content = ; + } else if (sCharType === 'sColumnar') { + /* 纵向条形图 */ + content = ; + } else if (sCharType === 'sColumnarGroup') { + /* 纵向条形图 */ + content = ; + } else if (sCharType === 'sBrokenLine') { + content = ; + } else if (sCharType === 'sWaterWave') { + content = ; + } else if (sCharType === 'sGauge') { + content = ; + } else if (sCharType === 'sColumnarStack') { + content = ; + } else if (sCharType === 'sPieGroup') { + content = ; + } else if (sCharType === 'sPie') { + content = ; + } else if (sCharType === 'TimeLineGroup') { + content = ; + } + } + return content; + }; + + handleExtra = (menuTypeId) => { + const { charMenu } = this.state; + let content = ''; + const index = charMenu.findIndex(item => item.sId === menuTypeId); + if (index > -1) { + const { childConfig, radioType } = charMenu[index]; + const props = { ...this.state, index }; + content = ( + this.handleChangeType(e, props)}> + { + childConfig.map((item) => { + const { sTypeValue, showName, sId } = item; + return ( + {showName} + ); + }) + } + ); + } + return content; + }; + + handleChangeType = (e, props) => { + const { charMenu, charConfigAndData, index } = props; + const { childConfig } = charMenu[index]; + const radioType = e.target.value; /* 更改后的菜单 */ + charMenu[index].radioType = radioType; + this.setState({ charMenu }); + const each = charConfigAndData[index]; /* 当前图表的配置 */ + const child = childConfig.filter(item => item.sType === 'searchType' && item.sTypeValue === radioType); + if (utils.isNotEmptyArr(child)) { + const { sName } = child[0]; + each.sSqlCondition = { + [sName]: radioType, + }; + } + this.props.onEachChar(each); + }; + + render() { + const { charConfigAndData, childChar, sModelsId } = this.props; + if (utils.isNotEmptyArr(charConfigAndData) && sModelsId !== null && sModelsId !== undefined && sModelsId.toString() === '101251240115015915037520030') { + return ( +
+ { +
+ { + charConfigAndData.map((itemChar, index) => { + const { showName } = itemChar; + return ( + // eslint-disable-next-line react/no-array-index-key +
+
+
{showName}
+ {this.handleChar(itemChar)} +
+
+ ); + }) + } +
+ } +
+ ); + } else { + return ( +
+ { +
+ { + charConfigAndData.map((itemChar, index) => { + const { showName } = itemChar; + return ( + // eslint-disable-next-line react/no-array-index-key +
+
+
{showName}
+ {this.handleChar(itemChar)} +
+
+ ); + }) + } +
+ } +
+ + ); + } + } +} + +export default baseChar(CommobileChar); diff --git a/src/mobile/common/CommobileClassifyEvent.js b/src/mobile/common/CommobileClassifyEvent.js new file mode 100644 index 0000000..859ef65 --- /dev/null +++ b/src/mobile/common/CommobileClassifyEvent.js @@ -0,0 +1,536 @@ +/* eslint-disable array-callback-return,no-undef,prefer-destructuring */ +import React, { Component } from 'react'; +import { Modal } from 'antd-mobile'; +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import * as commonBusiness from '../../components/Common/commonBusiness'; + +const alert = Modal.alert; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + componentWillReceiveProps(nextProps) { + const { + formData, sModelsId, searchSolution, masterData, + } = nextProps; + const { slaveConfig: slaveConfigOld } = nextProps; + if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) { + const sId = sModelsId !== undefined ? sModelsId : ''; + /* 数据Id */ + const slaveConfig = formData[0]; + // console.log('form', formData); + let filterCondition = []; + if (commonUtils.isNotEmptyObject(masterData) && !commonUtils.isEmpty(masterData.sSearchSolutionId) && commonUtils.isNotEmptyArr(searchSolution)) { + const iIndex = searchSolution.findIndex(item => item.sId === masterData.sSearchSolutionId); + if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) { + filterCondition = JSON.parse(searchSolution[iIndex].sCondition); + } + } + this.handleGetData(slaveConfig, filterCondition, 1); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnFirst', sControlName: 'BtnFirst', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnPrior', sControlName: 'BtnPrior', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnNext', sControlName: 'BtnNext', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnLast', sControlName: 'BtnLast', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnExamine', sControlName: 'BtnExamine', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCancelExamine', sControlName: 'BtnCancelExamine', + }); + + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnUpCheck', sControlName: 'BtnUpCheck', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnDownCheck', sControlName: 'BtnDownCheck', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCopyTo', sControlName: 'BtnCopyTo', + }); + slaveConfig.gdsconfigformslave.push({ + sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCopyFrom', sControlName: 'BtnCopyFrom', + }); + this.props.onSaveState({ + masterConfig: slaveConfig, slaveConfig, sId, pageLoading: false, + }); + } + if (commonUtils.isEmptyStr(this.props.sClomunType) && commonUtils.isNotEmptyObject(this.props.masterConfig)) { + const { sTbName } = this.props.masterConfig; + if (sTbName === 'cahsupplyinit' || sTbName === 'cahcustomerinit' || sTbName === 'cahcashierinit') { + this.handleGetPeriod(); + } + } + } + + shouldComponentUpdate(nextProps) { + const { masterConfig } = nextProps; + return commonUtils.isNotEmptyArr(masterConfig); + } + componentDidUpdate() { + const { app, slaveData } = this.props; + const { currentPane } = app; + if (currentPane.classifyOption === 'add' && slaveData !== undefined) { + currentPane.classifyOption = ''; + this.handleAdd(); + this.props.onSaveState({ currentPane }); + } + } + + componentWillUnmount() { + const { sModelsId } = this.props; + const { userinfo } = this.props.app; + this.props.handleSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null); + } + + /** 获取表数据 */ + handleGetData = (slaveConfig, slaveFilterCondition, page, slaveOrderBy) => { + const { app } = this.props; + const conditonValues = app.currentPane.conditonValues; + const pageNum = commonUtils.isEmpty(page) ? 1 : page; + // console.log('slaveConfig', slaveConfig); + // console.log('pageNum', pageNum); + // console.log('slaveFilterCondition', slaveFilterCondition); + this.props.handleGetDataSet({ + name: 'slave', + configData: slaveConfig, + condition: { + pageNum, bFilter: slaveFilterCondition, sFilterOrderBy: slaveOrderBy, sSqlCondition: conditonValues, + }, + }); + }; + + handlePaginationChange = (page) => { + const { slaveConfig, slaveFilterCondition } = this.props; + this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { pageNum: page, bFilter: slaveFilterCondition }, + }); + }; + /* 取消操作 */ + handleCancel = () => { + /* 待用数据声明 */ + const { + sModelsId, slaveConfig, slaveFilterCondition, slavePagination, slaveOrderBy, app, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const onGetDataOk = this.handleGetData; + const onSaveStateOk = this.props.onSaveState; + alert('Warn', '确定要取消', [ + { + text: 'Ok', + onPress: () => { + onGetDataOk(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy); + onSaveStateOk({ enabled: false }); + onSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null); + }, + }, + { text: 'Cancel' }, + ]); + }; + /** 点击修改按钮操作 */ + handleEdit = () => { + const { + sModelsId, slaveConfig, slaveFilterCondition, slavePagination, slaveOrderBy, app, + } = this.props; + const { userinfo } = app; + this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy); + let timValue = 0; + if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + timValue = 3000; + } + setTimeout(() => { + this.props.app.webSocket.onmessage = (msg) => { + const rtmsg = JSON.parse(msg.data); + if (rtmsg.action === 'showMsg') { + message.warning(rtmsg.msg); + this.props.onSaveState({ loading: false }); + } else if (rtmsg.action === 'loginOut') { + if (location.pathname.indexOf('/indexOee') > -1) { + dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } }); + } else if (location.pathname.indexOf('/indexMobile') > -1) { + dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } }); + } else { + dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } }); + } + } else { + if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + this.props.onSaveState({ enabled: true, loading: false }); + } + }; + this.props.handleSendSocketMessage('update', 'showMsg', sModelsId, userinfo.sId, null, null); // 分类型不能以Id来,涉及到多条修改 + }, timValue); + }; + /** 点击新增按钮操作 */ + handleAdd = () => { + const { sModelsType } = this.props; + let { slaveSelectedRowKeys } = this.props; + let { slaveData } = this.props; + if (slaveData === undefined) { + slaveData = []; + } + const newData = this.props.onDataRowAdd('slave', true);/* 调用父级新增 */ + // const newData = { + // handleType: 'add', + // sId: commonUtils.createSid(), + // iOrder: slaveData.length, + // }; + if (sModelsType === 'commonClassfiy/sisPosition') { + newData.maxBillNo = 'sNo'; + } + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { /* 通用分类新增,默认新增行为选中行 */ + slaveSelectedRowKeys = []; + slaveSelectedRowKeys.push(newData.sId); + } + this.props.onSaveState({ + slaveData: [newData, ...slaveData], + slaveSelectedRowKeys, + enabled: true, + }); + }; + /* 删除 */ + handleDel = () => { + const onOkDel = this.handleOkDel; + alert('Warn', '确定要删除', [ + { + text: 'Ok', + onPress: () => { + onOkDel(); + }, + }, + { text: 'Cancel' }, + ]); + }; + handleOkDel = async () => { + const returnData = await this.handleTableDel('slave'); + if (returnData) { + this.handleValidateSave(); + } + }; + handleTableDel = (name, isWait) => { + const { app } = this.props; + const { [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + } + if (isWait) { + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + } else { + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + }); + return true; + } + } else { + message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + return false; + } + }; + /** toolbar校验保存 */ + handleValidateSave = async () => { + const { + slaveData, slaveConfig, slaveDelData, + } = this.props; + const data = []; + if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + // console.log('slaveData', slaveData); + // console.log('slaveDelData', slaveDelData); + // console.log('data', data); + this.handleSaveData({ data, sClientType: '1' }); + }; + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, sModelsId, slaveFilterCondition, slaveConfig, slavePagination, slaveOrderBy, app, slaveData, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId }); + if (commonUtils.isNotEmptyObject(returnData)) { + commonUtils.clearStoreDropDownData(); + /* 新记录时,关闭后能自动带值 */ + const callBackRecord = this.props.app.currentPane.newRecordMethod; + if (callBackRecord !== undefined && commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + const filterData = slaveData.filter(item => (item.handleType === 'add')); + const sId = commonUtils.isNotEmptyArr(filterData) && filterData.length > 0 ? filterData[0].sId : null; + /* 回调 传[新增的数据sId] */ + if (this.props.app.currentPane.newRecordMethod !== undefined) { + this.props.app.currentPane.newRecordMethod(sId); + } + } + /* END */ + onSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null); + this.props.onSaveState({ + enabled: false, slaveDelData: [], loading: false, + }); + this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy); + return true; + } else { + this.props.onSaveState({ + slaveDelData: [], + loading: false, + }); + return false; + } + }; + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + /* 作废、取消作废的公用函数 */ + handleInvalid = (obj) => { + const props = { ...this.props, ...this.state, ...obj }; + const onOkInvaild = this.handleOkChangeInvaild; + alert('Warn', obj.title, [ + { + text: 'Ok', + onPress: () => { + onOkInvaild(props); + }, + }, + { text: 'Cancel' }, + ]); + }; + /* 切换作废状态 */ + handleOkChangeInvaild = async (props) => { + props = this.handleOkInvalid(props); + this.setState({ ...props }); + }; + /** 作废,取消作废 */ + handleOkInvalid = async (props) => { + const { + sModelsId, slaveData, slaveConfig, handleType, slaveSelectedRowKeys, app, slavePagination, + } = props; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const { token } = props.app; + const { sTbName } = slaveConfig; + const value = { + sClientType: '1', + sId: slaveSelectedRowKeys, + sTableName: sTbName, + handleType, + sBooleanCheck: false, + }; + const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + message.success(data.msg); + for (const key of slaveSelectedRowKeys) { + const selectData = slaveData.filter(item => item.sId === key); + selectData.bInvalid = handleType === 'toVoid'; + } + /* 作废(取消作废)后刷新页面 */ + this.handlePaginationChange(slavePagination.current); + } else { + this.props.getServiceError(data); + } + return props; + } else { + message.warn(commonFunc.showMessage(app.commonConst, 'sChoosebInvalid'));/* 请选择作废数据 */ + } + }; + /** 按钮操作事件 */ + handleButtonClick = (name) => { + if (name === 'BtnOut') { + this.handleOut(); + } else if (name === 'BtnRefresh') { + const { slavePagination } = this.props; + this.handlePaginationChange(slavePagination.current); + } else if (name === 'BtnSetPeriod') { + this.handleBtnSetPeriod(); + } else if (name === 'BtnRelievePeriod') { + this.handleBtnRelievePeriod(); + } + }; + /* 导出Excel */ + handleOut = () => { + const { + slaveConfig, slaveFilterCondition, sFilterOrderBy, sGroupByList, + } = this.props; + let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}`; + if (commonUtils.isNotEmptyArr(slaveFilterCondition)) { + url = `${url}&bFilter=${encodeURIComponent(JSON.stringify(slaveFilterCondition))}`; + } + if (sFilterOrderBy !== undefined && sFilterOrderBy !== '' && Object.keys(sFilterOrderBy).length > 0) { + url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(sFilterOrderBy))}`; + } + if (commonUtils.isNotEmptyArr(sGroupByList)) { + url = `${url}&sGroupList=${encodeURIComponent(JSON.stringify(sGroupByList))}`; + } + window.open(url); + }; + /* 获取期初 */ + handleGetPeriod = async () => { + const { sTbName } = this.props.masterConfig; + let sClomunType = ''; + if (sTbName === 'cahsupplyinit') { + sClomunType = 'bAP'; + } else if (sTbName === 'cahcustomerinit') { + sClomunType = 'bAR'; + } else if (sTbName === 'cahcashierinit') { + sClomunType = 'bCashier'; + } + const { sModelsId } = this.props; + const { token } = this.props.app; + const url = `${commonConfig.server_host}sysAccountPeriod/getSysAccountPeriod?sModelsId=${sModelsId}`; + const value = { sClientType: '1', sClomunType }; + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + const [{ isSysAccountPeriod }] = data.dataset.rows; + this.props.onSaveState({ + adDisabled: isSysAccountPeriod, + sClomunType, + }); + } else { + this.props.getServiceError(data); + } + }; + /* 设置期初 */ + handleBtnSetPeriod = async () => { + const { sTbName } = this.props.masterConfig; + let sClomunType = ''; + if (sTbName === 'cahsupplyinit') { + sClomunType = 'bAP'; + } else if (sTbName === 'cahcustomerinit') { + sClomunType = 'bAR'; + } else if (sTbName === 'cahcashierinit') { + sClomunType = 'bCashier'; + } + const { sModelsId } = this.props; + const { token } = this.props.app; + const url = `${commonConfig.server_host}sysAccountPeriod/updateSysAccountPeriod?sModelsId=${sModelsId}`; + const value = { sClientType: '1', handleType: 'add', sClomunType }; + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + message.success(data.msg); + this.props.onSaveState({ adDisabled: true, enabled: false }); + } else { + this.props.getServiceError(data); + } + }; + /* 解除锁定 */ + handleBtnRelievePeriod = async () => { + const { sModelsId } = this.props; + const { token } = this.props.app; + const { sTbName } = this.props.masterConfig; + let sClomunType = ''; + if (sTbName === 'cahsupplyinit') { + sClomunType = 'bAP'; + } else if (sTbName === 'cahcustomerinit') { + sClomunType = 'bAR'; + } else if (sTbName === 'cahcashierinit') { + sClomunType = 'bCashier'; + } + const url = `${commonConfig.server_host}sysAccountPeriod/updateSysAccountPeriod?sModelsId=${sModelsId}`; + const value = { sClientType: '1', handleType: 'reset', sClomunType }; + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + message.success(data.msg); + this.props.onSaveState({ adDisabled: false }); + } else { + this.props.getServiceError(data); + } + }; + + handleTitleChange = (slavePagination, filters, sorter) => { + const { slaveConfig, slaveFilterCondition } = this.props; + const sort = sorter.order === 'ascend' ? 'asc' : 'desc'; + const slaveOrderBy = Object.keys(sorter).length > 0 ? { [sorter.columnKey]: sort } : ''; // 后端未支持空对象, 先用空表示 + this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy); + }; + handleTitleChangeEnabled = (slavePagination) => { + this.props.onSaveState({ slavePagination }); + }; + handleTableSelectRowChange = async (name, selectedRowKeys) => { + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, masterConfig, enabled, + } = this.props; + if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + if (sModelsType === 'commonClassfiy/salesMan') { + const addState = this.props.onTableSelectRowChange(name, selectedRowKeys, true); + const { [`${name}SelectedRowKeys`]: rowKeys } = addState; + for (const sId of rowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + const sNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sName');/* 判断配置中是否有员工编号字段 */ + if (tableDataIndex > -1 && sNameIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + masterConfig.gdsconfigformslave[sNameIndex].iTag = 0; /* 默认是0 */ + if (enabled && tableDataRow.handleType !== 'add') { /* 判断销售人员是否已被占用 */ + const value = { + tableName: masterConfig.sTbName, + sId: [sId], + }; + const url = `${commonConfig.server_host}business/addSysLocking?sModelsId=${sModelsId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + const sNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sName'); + masterConfig.gdsconfigformslave[sNameIndex].iTag = 1; /* ,已占用销售人员,员工不能修改 即下拉不可选 */ + } else { /* 失败 */ + this.props.getServiceError(data); + } + } + } + } + } + } + this.props.onTableSelectRowChange(name, selectedRowKeys); + } + + render() { + return ( + + ); + } + }; +}; diff --git a/src/mobile/common/CommobileComponent.js b/src/mobile/common/CommobileComponent.js new file mode 100644 index 0000000..ccc2247 --- /dev/null +++ b/src/mobile/common/CommobileComponent.js @@ -0,0 +1,477 @@ +/* eslint-disable */ +import { List, InputItem, Picker, TextareaItem, DatePicker, Checkbox, Toast } from 'antd-mobile'; +import moment from 'moment'; +import React, { Component } from 'react'; +import { debounce } from 'lodash'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import styles from '../mobile.less'; +import iconSetting from '../../assets/mobile/setting.png'; +import scan from '../../assets/mobile/scanning.svg'; + + +// eslint-disable-next-line prefer-destructuring +const CheckboxItem = Checkbox.CheckboxItem; +const isIPhone = new RegExp('\\biPhone\\b|\\biPod\\b', 'i').test(window.navigator.userAgent); +let moneyKeyboardWrapProps; +if (isIPhone) { + moneyKeyboardWrapProps = { + onTouchStart: e => e.preventDefault(), + }; +} + +export default class CommonComponent extends Component { + /** 构造函数 */ + constructor(props) { + super(props); + this.state = { + dataValue: props.dataValue, /* 本showType数据 */ + enabled: props.enabled, /* 是否是查看状态(数据格式:布尔) */ + dropDownData: [], + // eslint-disable-next-line react/no-unused-state + bReGetDropDown: false, + bOpenKeyboard : props.bOpenKeyboard, + + }; + this.firstDataIndex = props.showConfig.sName.substring(0, 1); /* 控件首字母(数据格式:字符串) */ + this.max = commonUtils.convertStrToNumber(props.showConfig.sMaxValue); /* 最大值(数据格式:数字) */ + this.min = commonUtils.convertStrToNumber(props.showConfig.sMinValue); /* 最小值(数据格式:数字) */ + this.getFieldProps = props.form.getFieldProps; + } + + /** 渲染前只执行一次 */ + componentWillMount() { + this.mounted = true; + /* 如果是下拉控件,则要获取数据 */ + if ((this.props.showConfig.sDropDownType === 'sql' || this.props.showConfig.sDropDownType === 'const') + && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) { + this.getDropDownData(this.props); + } + } + + /** props改变的时候触发 */ + componentWillReceiveProps(nextProps) { + const { + dataValue, enabled, sFieldName, bNotEmpty, masterData, dropDownData, + } = this.state; + if ((nextProps.showConfig.sDropDownType === 'sql') && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) { + let newDropDownData = commonUtils.getStoreDropDownData(this.props.formId, this.props.name, this.props.showConfig.sName); + if (nextProps.onFilterDropDownData && !commonUtils.isEmptyStr(nextProps.showConfig.sSqlCondition)) { + if (!commonUtils.isEmpty(nextProps.showConfig.sChineseDropDown)) { + const conditon = nextProps.showConfig.sSqlCondition.split(','); + const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : ''; + // #参数# SQL where条件过滤数据 *参数* 去除单引号 用于like处理 + if (!nextProps.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !nextProps.showConfig.sChineseDropDown.includes(`*${fieldName}`)) { + newDropDownData = nextProps.onFilterDropDownData(newDropDownData, nextProps.showConfig, nextProps.name, nextProps.record); + } + } + } + if (this.mounted && !nextProps.showConfig.bReGetDropDown && nextProps.showConfig.dropDownData !== undefined && JSON.stringify(newDropDownData) !== JSON.stringify(nextProps.showConfig.dropDownData)) { + let newData = nextProps.showConfig.dropDownData; + if (nextProps.onFilterDropDownData && !commonUtils.isEmptyStr(nextProps.showConfig.sSqlCondition)) { + if (!commonUtils.isEmpty(nextProps.showConfig.sChineseDropDown)) { + const conditon = nextProps.showConfig.sSqlCondition.split(','); + const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : ''; + if (!nextProps.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !nextProps.showConfig.sChineseDropDown.includes(`*${fieldName}`)) { + newData = newDropDownData; + } + } + } + this.setState({ + dropDownData: newData, + }); + } else if (JSON.stringify(newDropDownData) !== JSON.stringify(dropDownData) || this.props.showConfig.sId !== nextProps.showConfig.sId || nextProps.showConfig.bReGetDropDown || nextProps.showConfig.sSqlCondition !== '') { + if (commonUtils.isEmptyArr(newDropDownData) || this.props.showConfig.sId !== nextProps.showConfig.sId) { + } else if (this.mounted) { + this.setState({ + dropDownData: newDropDownData, + }); + } + } + } else if ((nextProps.showConfig.sDropDownType === 'const') && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) { + if (nextProps.showConfig.dropDownData !== undefined && JSON.stringify(this.state.dropDownData) !== JSON.stringify(nextProps.showConfig.dropDownData)) { + if (this.mounted) { + this.setState({ + dropDownData: nextProps.showConfig.dropDownData, + }); + } + } + } + + if (dataValue !== nextProps.dataValue || enabled !== nextProps.enabled || bNotEmpty !== nextProps.showConfig.bNotEmpty || sFieldName !== nextProps.showConfig.sName || + JSON.stringify(masterData) !== JSON.stringify(nextProps.masterData)) { + this.firstDataIndex = nextProps.showConfig.sName.substring(0, 1); /* 控件首字母(数据格式:字符串) */ + if (this.mounted) { + this.setState({ + dataValue: nextProps.dataValue, + enabled: nextProps.enabled, + sFieldName: nextProps.showConfig.sName, + bNotEmpty: nextProps.showConfig.bNotEmpty, + masterData: nextProps.masterData, + bOpenKeyboard: nextProps.bOpenKeyboard, + }); + } + } + } + + shouldComponentUpdate(nextProps, nextState) { + const { + dataValue, enabled, dropDownData, sFieldName, bNotEmpty, masterData, + } = this.state; + // console.log('bOpenKeyboard:', nextProps.bOpenKeyboard); + if(nextProps.bOpenKeyboard !==undefined) { + return true; + } + return nextProps.showConfig !== undefined && (dataValue !== nextState.dataValue || enabled !== nextState.enabled || + sFieldName !== nextState.sFieldName || bNotEmpty !== nextState.bNotEmpty || JSON.stringify(dropDownData) !== JSON.stringify(nextState.dropDownData) || + JSON.stringify(masterData) !== JSON.stringify(nextState.masterData)); + } + + componentWillUnmount() { + this.mounted = false; + } + + /** 获取下拉值 */ + getDropDownData = async (props, bReGetDropDown) => { + /** 下拉类型区分 + 1、判断是否直接传下拉,如果传了就直接用,并存储到store中去 + 2、没有传看 getStoreDropDownData有没有存储,存储后直接取用 + 3、 没有存储时直接调用后台SQL语句去下拉 */ + if (props.showConfig.sDropDownType === 'sql') { /* 数据下拉 */ + let { dropDownData } = props.showConfig; + if (commonUtils.isEmptyArr(dropDownData)) { + dropDownData = commonUtils.getStoreDropDownData(props.formId, props.name, props.showConfig.sName); + if (commonUtils.isEmptyArr(dropDownData) || bReGetDropDown) { + dropDownData = await props.getSqlDropDownData(props.formId, props.name, props.showConfig, props.record); + } + } else { + commonUtils.setStoreDropDownData(props.formId, props.name, props.showConfig.sName, dropDownData); + } + if (this.mounted) { + const { sSqlCondition } = props.showConfig; + if (props.onFilterDropDownData && !commonUtils.isEmptyStr(sSqlCondition)) { + if (!commonUtils.isEmpty(props.showConfig.sChineseDropDown)) { + const conditon = props.showConfig.sSqlCondition.split(','); + const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : ''; + if (!props.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !props.showConfig.sChineseDropDown.includes(`*${fieldName}`)) { + dropDownData = await props.onFilterDropDownData(dropDownData, props.showConfig, props.name, props.record); + } + } + } + this.setState({ + dropDownData, + // eslint-disable-next-line react/no-unused-state + isDropDownLoadFinish: true, + // eslint-disable-next-line react/no-unused-state + bReGetDropDown: false, + }); + } + } else if (props.showConfig.sDropDownType === 'const') { /* 常量下拉 */ + /* 常量下拉其实只取一次数据就可以啦,去过数据的会给state中的dropDownData赋值,所以dropDownData有值的情况就不需要再获取了 */ + if (commonUtils.isEmptyArr(this.state.dropDownData) || JSON.stringify(this.state.dropDownData) !== JSON.stringify(props.showConfig.showDropDown)) { + /* 把常量下拉对象转换成数组格式来适配(最终state中dropDownData的值都是数组对象的形式) */ + let showDropDown; + if (typeof props.showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = props.showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(props.showConfig.showDropDown)); + } + /* 给state赋值 */ + if (this.mounted) { + this.setState({ + dropDownData: showDropDown, + // eslint-disable-next-line react/no-unused-state + isDropDownLoadFinish: true, + }); + } + } + } + }; + + /** 获取selectOption对象 */ + getSelectOption = () => { + /* 返回值声明 */ + const options = []; + /* 执行条件 */ + if (commonUtils.isNotEmptyArr(this.state.dropDownData)) { + /* 遍历下拉数据 */ + for (const each of this.state.dropDownData) { + if (commonUtils.isNotEmptyObject(each)) { + /* 拼接optoin对象 */ + let keyValue = !commonUtils.isEmpty(each.sSlaveId) ? each.sSlaveId : each.sId; + if (this.firstDataIndex === 'i') { + // eslint-disable-next-line radix + keyValue = parseInt(keyValue); + } else if (this.firstDataIndex === 'd') { + keyValue = parseFloat(keyValue); + } + /* 返回值赋值 */ + options.push({ label: this.getOptionValues(each), value: keyValue }); + } + } + } + + /* 下拉空处理 */ + if (this.props.showConfig.bFirstEmpty) { + options.push({ label: ' ', value: '=+@' });/* 解决销售订单-产品名称,五笔输入法输入不支持直接输入中文 */ + } + /* 下拉新增处理 */ + if (this.props.showConfig.bNewRecord) { + options.unshift({ label: 'NEW RECORD', value: '000' }); + } + /* 返回值 */ + return options; + }; + + /** 获取optionValue对象 */ + getOptionValues = (data) => { + /* 返回值声明 */ + let res = ''; + /* 计数器 */ + let count = 1; + /* 遍历每一条数据 */ + const iVisCount = commonUtils.isEmpty(this.props.showConfig.iVisCount) || this.props.showConfig.iVisCount === 0 ? 1 : this.props.showConfig.iVisCount; + if (commonUtils.isNotEmptyStr(this.props.showConfig.sVisColumnName)) { + res = data[this.props.showConfig.sVisColumnName]; + } else { + for (const key of Object.keys(data)) { + /* 这里主要是为了实现配置中控制下拉的展现列数 */ + if (count <= iVisCount && key !== 'sId') { + if (res === '') { + res = data[key]; + } else { + res = res.concat('-').concat(data[key]); + } + count += 1; + } + } + } + /* 返回值 */ + return res; + }; + + /** 处理下拉选择事件 */ + handleSelectOptionEvent = (newValue) => { + /* 下拉新增单独处理 */ + let value = newValue; + this.isDropdownFilter = true; + if (this.props.showConfig.sDropDownType === 'sql' && value === '000') { + this.props.handleSqlDropDownNewRecord(this.props.showConfig, this.props.name); + if (this.mounted) { + // eslint-disable-next-line react/no-unused-state + this.setState({ bReGetDropDown: true, dataValue: '' }); + } + return; + } + if (this.props.showConfig.sDropDownType === 'sql' && value === '=+@') { /* 如果是选择空值,则将特殊字符过滤为空值 */ + value = ''; + } + if (this.props.showConfig.sDropDownType === 'const' && value !== undefined && Array.isArray(value)) { /* const下拉 默认value [value]形式,需手动去掉[] */ + [value] = newValue; + } + if (this.props.showConfig.sDropDownType === 'sql' && value !== undefined && Array.isArray(value) && commonUtils.isNotEmptyObject(this.props.showConfig.sName) && (this.props.showConfig.sName.includes('sParamValue') || this.props.showConfig.sName.includes('sActValue'))) { /* Picker组件 默认[value]形式,需手动去掉[] */ + [value] = newValue; + } + /* 回带值声明 */ + const returnValue = {}; + /* 回带值赋值(sName:value) */ + returnValue[this.props.showConfig.sName] = + // eslint-disable-next-line radix + this.firstDataIndex === 'i' ? commonUtils.isEmpty(value) ? undefined : parseInt(value) : + this.firstDataIndex === 'd' ? commonUtils.isEmpty(value) ? '' : this.floatNumberCheck(value) : + this.firstDataIndex === 't' ? commonUtils.isEmpty(value) ? null : value : + this.firstDataIndex === 'b' ? value.target.checked : value === null ? undefined : value; + const { sAssignField } = this.props.showConfig; + const [changeData] = this.state.dropDownData.filter(item => (!commonUtils.isEmpty(item.sSlaveId) ? item.sSlaveId : item.sId) === value.toString()); + if (!commonUtils.isEmpty(sAssignField)) { + /* 赋值数组 */ + const sAssignFieldObj = sAssignField.split(','); + if (commonUtils.isNotEmptyObject(changeData)) { + for (const child of sAssignFieldObj) { + if (child.indexOf(':') > -1) { + const sFieldName = child.split(':')[0].trim(); + const sValueName = child.split(':')[1].trim(); + returnValue[sFieldName] = changeData[sValueName]; + } + } + } else if (!this.props.showConfig.bCanInput) { + // 下拉选择空时,需要, bCanInput一定要为false不然印件名称输入时也被置空了 + for (const child of sAssignFieldObj) { + if (child.indexOf(':') > -1) { + const sFieldName = child.split(':')[0].trim(); + returnValue[sFieldName] = ''; + } + } + } + } + /* 调用父组件的回带函数 */ + this.props.onChange(this.props.name, this.props.showConfig.sName, returnValue, this.props.sId, this.state.dropDownData); + }; + + handleFocus = () => { + if(this.props.onFocus) { + this.props.onFocus(this.props.showConfig); + } + } + + handleBlur = () => { + if(this.props.onBlur) { + this.props.onBlur(this.props.showConfig); + } + } + + /** + * 小数校验 + */ + floatNumberCheck = (num) => { + const checkRule = /^(-?\d+)(\.?)(\d{1,6})?$/; + if (!checkRule.test(num) && num && num !== '-' && num !== '.') { + Toast.fail('最多输入6位小数!'); + return undefined; + } else { + return num; + } + } + + // noinspection JSAnnotator + // limitDecimals = (value) => { + // return commonUtils.filterDisNumberN(value, this.floatNum); + // }; + // noinspection JSAnnotator + /** 小数位控制 noinspection JSAnnotator控制 string | number */ + limitDecimals = (values) => { + let reg = ''; + if (this.floatNum > 0) { + reg = `^(\\d+).(${this.floatPrice})*$`; + } else { + reg = '^(\\d+).(\\d\\d\\d\\d\\d\\d)*$'; + } + if (typeof values === 'string') { + if (values !== undefined && values.indexOf('.') <= -1) { + reg = '^(\\d+)*$'; + return !isNaN(Number(values)) ? values.replace(new RegExp(reg), '$1') : ''; + } else { + return !isNaN(Number(values)) ? values.replace(new RegExp(reg), '$1.$2') : ''; + } + } else if (typeof values === 'number') { + if (values !== undefined && String(values).indexOf('.') <= -1) { + reg = '^(\\d+)*$'; + return !isNaN(values) ? String(values).replace(new RegExp(reg), '$1') : ''; + } else { + return !isNaN(values) ? String(values).replace(new RegExp(reg), '$1.$2') : ''; + } + } else { + return ''; + } + }; + + cancelValue = () => { + const bClear = this.props.showConfig.sName!=='sLocationId' && this.props.showConfig.sName!=='sLocationNo' && this.props.showConfig.sName!=='sLocationName'; + if(bClear) { + if (this.inputRef) this.inputRef.clearInput(); + } + } + + handleFieldScan = (newValue) => { + if (!newValue.trim()) return; + this.props.onFieldScan(this.props.showConfig, this.props.name, this.props.record, newValue, this.cancelValue); + } + + + handleMobileScan = () => { + this.props.onMobileScan(this.props.showConfig, this.props.name, this.props.record); + } + + /** 渲染 */ + render() { + const { sDateFormat: sDateFormatOld, sFieldValidation, bNotEmpty, bOpenKeyboard } = this.props.showConfig; + let newValue = this.props.dataValue; + if(commonUtils.isNotEmptyObject(sFieldValidation)) { + const [length1, length2] = commonUtils.isNotEmptyObject(sFieldValidation) ? sFieldValidation.split(',') :[]; + if (length2 !== undefined) { + newValue = commonUtils.convertFixNum(this.props.dataValue, Number(length2)); + } + } + let sTitle = this.props.showConfig.showName; + if (bNotEmpty) { /* 必填加星号 */ + sTitle =
* {this.props.showConfig.showName}
; + }else { + sTitle =
{this.props.showConfig.showName}
; + } + const outFormItemProps = { + ...this.getFieldProps(this.props.showConfig.sName), + placeholder: this.props.showConfig.placeholder || '请输入', + value: newValue, + onChange: this.handleSelectOptionEvent, /* 数据改变回带到父组件 */ + disabled: !this.state.enabled, + }; + if (this.props.showConfig.bNotSearch && !bOpenKeyboard) { + outFormItemProps.virtualkeyboardpolicy = 'manual'; + outFormItemProps.inputmode = commonConfig.sMode === 1 ? 'none' : commonConfig.sMode === 2 ? 'numeric' : commonConfig.sMode === 3 ? 'search' : 'text'; + } + let input = ''; + const isText = commonUtils.isNotEmptyObject(this.props.record) ? this.props.record.isText : false; /* 下拉框情况下 若record的isText为true则不渲染下拉框 */ + if ((this.props.showConfig.sDropDownType === 'sql' || this.props.showConfig.sDropDownType === 'const') + && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's') && !isText) { /* 下拉选择框(数字和文本选择框才会下拉) */ + outFormItemProps.value = commonUtils.isEmpty(this.props.dataValue) ? [''] : [this.props.dataValue]; /* i、d也须是[this.props.dataValue],否则会选择不上去 */ + outFormItemProps.onVisibleChange = (visible) => { + if (!visible) return; + Toast.loading('加载中 ....', 0); + this.getDropDownData(this.props, false).finally( () => { + Toast.hide(); + }); + } + input = ( + + + {this.props.iconSettingShow ? + // eslint-disable-next-line jsx-a11y/alt-text + : ''} + {sTitle} + + + ); + } else if (this.firstDataIndex === 's') { + if (this.props.textArea) { /* 大文本输入框 */ + input = (); + } else { + const pdaPro = { + disabled: !this.state.enabled, + placeholder: this.props.showConfig.placeholder || '请输入或扫码', + onFocus:this.handleFocus, + virtualkeyboardpolicy: 'manual', + inputmode: 'none', + }; + // if(commonUtils.isNotEmptyObject(this.props.showConfig.sControlName) && this.props.showConfig.sControlName?.includes('Self')) { + // pdaPro.value = newValue; + // } + // console.log('bOpenKeyboard',this.props.showConfig.sName, bOpenKeyboard); + const is_Pda = this.props.showConfig.sControlName && this.props.showConfig.sControlName.includes('_pda'); + const pdaInput = { this.inputRef = el; }} clear onChange={debounce(this.handleFieldScan, 1000)} >{sTitle}; + const is_Scan = this.props.showConfig.sControlName && this.props.showConfig.sControlName.includes('_scan'); + if (is_Pda) { + input = pdaInput; + } else if (is_Scan) { + input =
{sTitle}scan
; + } else { + input = ({sTitle}); + } + } + } else if (this.firstDataIndex === 'd') { + outFormItemProps.moneyKeyboardAlign = 'left'; + outFormItemProps.moneyKeyboardWrapProps = moneyKeyboardWrapProps; + input = ({sTitle}); + } else if (this.firstDataIndex === 't') { + outFormItemProps.value = new Date(moment(this.state.dataValue).year(), moment(this.state.dataValue).month(), moment(this.state.dataValue).date()); + input = ({sTitle}); + } else if (this.firstDataIndex === 'b') { + input = ({this.props.showConfig.showName}); + } + return ( +
+ {input} +
+ ); + } +} diff --git a/src/mobile/common/CommobileList.js b/src/mobile/common/CommobileList.js new file mode 100644 index 0000000..76406c0 --- /dev/null +++ b/src/mobile/common/CommobileList.js @@ -0,0 +1,410 @@ +/* eslint-disable */ +/* eslint-disable prefer-destructuring */ +/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */ +import React from 'react'; +import { ListView, Checkbox, Modal, Toast, Flex } from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import CommobileSearchComponent from './CommobileSearchComponent'; +import CommobileToolBar from './CommobileToolBar'; +import CommonbileStep from './CommobileStep'; +import styles from '../mobile.less'; +import preView from '../components/preView'; + +const CheckboxItem = Checkbox.CheckboxItem; +const AgreeItem = Checkbox.AgreeItem; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); + +class CommobileList extends React.Component { + constructor(props) { + super(props); + this.state = { + isLoading: false, + partNameStatusVisible: false, /* 查看进度 */ + sSlaveId: '', + }; + } + + onEndReached = async () => { + if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) { + const { slaveFilterCondition } = this.props; + const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, this.props.slavePagination.current + 1, true); + addState.slaveData = this.props.slaveData.concat(addState.slaveData); + this.props.onSaveState({ ...addState }); + } + } + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + onModalShow = key => () => { + this.setState({ + [key]: true, + }); + } + handlePartNameStatusLook=(sSlaveId) => { + if (commonUtils.isNotEmptyObject(sSlaveId)) { + this.setState({ + partNameStatusVisible: true, + sSlaveId, + }); + } else { + Toast.fail('请选择要查看的工单', 1); + } + } + /* 列表弹出详情 */ + handleDoubleClick=(rowData) => { + this.props.onDoubleClick(rowData); + } + + padTitles = (titles) =>{ + return titles.padEnd(4, ' ') + ':'; + } + // topHeight = (value) => { + // let subHeight = 0; + // if ( value % 2 === 0 ) { + // subHeight = ( value / 2 ) * 22; + // } else { + // subHeight = (Math.floor(value / 2) + 1) * 22; + // } + // return subHeight; + // } + + render() { + const { + slaveConfig, slaveData: slaveDataOld, slaveTotal, slaveSelectedRowKeys: slaveSelectedRowKeysOld, onReturnForm, + } = this.props; + onReturnForm(this.props.form); + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const slaveSelectedRowKeys = slaveSelectedRowKeysOld === undefined ? [] : slaveSelectedRowKeysOld; + const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[0]; + const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[1]; + const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[2]; + const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[3]; + const f5 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[4]; + const f6 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'printPdf')[0]; + const f7 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName === 'sPartNameStatus')[0]; /* 查看进度 */ + const separator = (sectionID, rowID) => ( +
+ ); + const row = (rowData, sectionID, rowID) => { + const obj = JSON.parse(JSON.stringify(rowData)); // 深拷贝 + if (commonUtils.isNotEmptyObject(f7)) { + // eslint-disable-next-line jsx-a11y/anchor-is-valid + obj[f7.sName] = (查看工单状态); + } + const f1View = f1 ? + ( +
+ {f1.showName}:{obj[f1.sName]} + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + {obj[f2.sName]} +
+ ) : ''; + + return ( +
+ + {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + onClick={() => this.props.onCopyToClick(rowData)} */} + {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */} +
  • this.handleDoubleClick(rowData)} > + { + true ? +
    + item === rowData.sSlaveId) > -1} + onChange={e => this.props.onCheckboxChange(e, rowData.sSlaveId)} + style={{ + width: f6 ? '76%' : '100%', + marginRight: 0, + lineHeight: '30px', + color: '#888', + fontSize: 16, + fontWeight: 'bold', + borderBottom: '1px solid #F6F6F6', + }} + > + + {f1 ? `${f1.showName}:` : ''}{obj[f1.sName]} + { f6 ? '' : f2 ? {obj[f2.sName]} : ''} + + { + // eslint-disable-next-line jsx-a11y/anchor-is-valid + f6 ? +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + this.props.onPrintView(e, rowData, f6)}>{obj[f6.sName]} +
    : '' + } +
    : f1View + } + {f3 ? +
    +
    +
    + {/* { f6 ? f2 ? */} + {/* '' : '' : ''} */} + {/*
    {f3.showName}:{obj[f3.sName]}
    */} + {/*
    */} + {/* {f4 ? */} + {/*
    */} + {/*
    {f4.showName}:
    */} + {/*
    {obj[f4.sName]}
    */} + {/*
    : '' */} + {/* } */} + {/* {f5 ? */} + {/*
    */} + {/* { */} + {/* f6 ? */} + {/* {obj[f5.sName]} : */} + {/* {obj[f5.sName]} */} + {/* } */} + {/*
    : '' */} + {/* } */} + {/*
    */} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((item, iIndex) => { + if (iIndex > 1) { + /** + * 修改日期:2021-04-06 + * 修改人:吕杰 + * 区域:以下 - 行 + * BUG:1144 + * 说明:现实缩略图,点击展示预览弹窗 + * 原代码: + */ + const bNotViewTitle = item.bNotViewTitle; /* 不显示标题 */ + const sMemo = item.sName.toLowerCase().endsWith('memo'); + const iRowNum = item.iColValue === 1 ? 24 : 1; /* 每个字段占的网格个数 ,网格总个数是24 */ + const iColValue = sMemo ? 24 : item.iColValue * iRowNum; /* 跨度 */ + const iRowValue = commonUtils.isEmptyNumber(item.iRowValue) || item.iRowValue === 0 ? 1 : item.iRowValue ; /* 行高 */ + const height = iRowValue * 18 ; /* 行高 */ + const { token } = this.props.app; + const dataUrl = []; /* 缩略图 */ + if ((item.showName === '缩略图' || item.sName === 'spicture') && obj[item.sName]) { + obj[item.sName].split(',').forEach(url => dataUrl.push(`${commonConfig.file_host}file/download?savePathStr=${url}&sModelsId=100&token=${token}`)); + } + if (dataUrl.length) { + // eslint-disable-next-line + return ({item.showName}: preView(dataUrl, e)} src={dataUrl[0]} alt="img" style={{ width: '30px', height: '20px' }} />); + } + const targetConfig = slaveConfig.gdsconfigformslave.filter(item2 => item2.sName === item.sName)[0]; + const customColor = targetConfig.sColorTerms ? targetConfig.sColorTerms : '#000'; + return ( +
    + + { + bNotViewTitle ? + <> {obj[item.sName]} + : + <>
    {item.showName}
    {obj[item.sName]} + } +
    +
    + ); + } else { + return (''); + } + })} +
    +
    +
    : '' + } +
  • +
    + ); + }; + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#fff', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'flex-end', + background: '#fff', + }; + const stepProps = { + ...this.props, + sSlaveId: this.state.sSlaveId, + }; + return ( +
    +
    +
    + {commonUtils.isEmptyArr(slaveTotal) ? '' : Object.keys(slaveTotal[0]).map((key) => { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === key); + if (iIndex > -1) { + return ( +
    + {`${slaveConfig.gdsconfigformslave[iIndex].showName}:${commonUtils.convertFixNum(commonUtils.convertStrToNumber(slaveTotal[0][key]), this.props.getFloatNum(key))}`} +
    + ); + } else { + return (''); + } + })} +
    +
    + +
    +
    +
    + ( +
    + {this.state.isLoading ? '加载中...' : '加载完毕'} +
    )} + renderRow={row} + renderSeparator={separator} + style={{ + position: 'absolute', + width: '100%', + bottom: commonUtils.isEmptyObject(slaveConfig) ? 88 : 135, + top: 0, + overflow: 'auto', + }} + pageSize={commonConfig.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> +
    + + { + commonUtils.isEmptyObject(slaveConfig) ? '' : + true ? +
    + {/* this.props.onSelectAllClick(e)}*/} + {/* style={{*/} + {/* background: '#fff',*/} + {/* zIndex: '99999',*/} + {/* width: '25%',*/} + {/* display: 'flex',*/} + {/* justifyContent: 'flex-start',*/} + {/* alignItems: 'cneter',*/} + {/* }}*/} + {/*>*/} + {/* 全选*/} + {/**/} +
    + +
    +
    : '' + }{ f7 && commonUtils.isNotEmptyObject(this.state.sSlaveId) ? + { }} + > +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + < + 工单状态 +
    + +
    : '' + } +
    + ); + } +} + +const CommobileListComponent = createForm()(CommobileList); + +export default CommobileBase(CommobileListEvent(CommobileListComponent)); diff --git a/src/mobile/common/CommobileListEvent.js b/src/mobile/common/CommobileListEvent.js new file mode 100644 index 0000000..5756b82 --- /dev/null +++ b/src/mobile/common/CommobileListEvent.js @@ -0,0 +1,626 @@ +/* eslint-disable prefer-destructuring */ +/** + * Created by mar105 on 2019-03-27. + */ +import React, { Component } from 'react'; +import { Toast, Modal, TextareaItem, List } from 'antd-mobile'; +import { history } from 'umi'; +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ +import commonConfig from '../../utils/config'; +import * as commonFunc from '../../components/Common/commonFunc'; +import * as commonServices from '../../services/services'; + +const alert = Modal.alert; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + textAreaContent: '', + }; + } + + async componentWillReceiveProps(nextProps) { + const { + formData, formRoute, + } = nextProps; + const { + slaveConfig: slaveConfigOld, searchSolution, returnFilterCondition, returnFilterName, sModelsType, + } = nextProps; + if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0 && (searchSolution !== undefined || nextProps.bNotSearch + )) { + /* 数据Id */ + const slaveConfig = formData[0]; + let filterCondition = []; + let iIndex = searchSolution?.findIndex(item => item.bDefault) || -1; + iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(searchSolution) ? -1 : 0; + if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) { + filterCondition = JSON.parse(searchSolution[iIndex].sCondition); + } + if (commonUtils.isNotEmptyArr(returnFilterCondition)) { + filterCondition = returnFilterCondition; + } + let addState = await this.handleGetData(slaveConfig, filterCondition, 1, true); + /* 如果是内部报工单据回刷过来的数据,则需要判断结果集是否有值;若没值 则清空搜索框的内容 查询全部数据 */ + if (commonUtils.isNotEmptyArr(returnFilterCondition) && sModelsType === 'mobile/productionReport') { + if (commonUtils.isNotEmptyObject(addState)) { + const slaveData = addState.slaveData; + if (commonUtils.isEmptyArr(slaveData)) { + const iRemoveIndex = filterCondition.findIndex(item => item.bFilterName === returnFilterName); + if (iRemoveIndex > -1) { + filterCondition[iRemoveIndex].bFilterValue = ''; + returnFilterCondition[iRemoveIndex].bFilterValue = ''; + addState = await this.handleGetData(slaveConfig, filterCondition, 1, true); /* 若结果集查出来没有数据 则查询全部数据 */ + addState.clearSearchValue = true; /* 清除搜索框数字 */ + } + } else { + addState.clearSearchValue = false; /* 清除搜索框数字 */ + } + } + } + + this.props.onSaveState({ + masterConfig: slaveConfig, + slaveConfig, + pageLoading: false, + masterData: { bCheck: true }, + ...addState, + }); + } + if (formRoute === '/myself') { + if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) { + const slaveConfig = formData[0]; + const isWait = true; + const addState = (await this.props.handleGetDataSet({ + name: 'slave', + configData: slaveConfig, + condition: {}, + isWait, + })); + addState.slaveConfig = slaveConfig; + this.props.onSaveState({ ...addState }); + } + } + } + + + shouldComponentUpdate(nextProps) { + const { slaveConfig } = nextProps; + return commonUtils.isNotEmptyObject(slaveConfig); + } + + /** 获取表数据 */ + handleGetData = async (slaveConfig, slaveFilterCondition, page, isWait) => { + const { conditonValues } = this.props; + const pageNum = commonUtils.isEmpty(page) ? 1 : page; + const bFilter = []; + if (commonUtils.isEmptyArr(slaveFilterCondition)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.bFind); + if (iIndex > -1) { + bFilter.push({ bFilterName: slaveConfig.gdsconfigformslave[iIndex].sName, bFilterCondition: 'like', bFilterValue: '' }); + } + } else { + bFilter.push(...slaveFilterCondition); + } + if (this.props.sModelsId === '101251240115015881530120160' && !commonUtils.isEmpty(this.props.app.sMachineId)) { // 待产量上报 + bFilter.push({ + bFilterName: 'sMachineId_s_pro', + bFilterCondition: '=', + bFilterValue: this.props.app.sMachineId, + }); + } + const condition = { pageNum, pageSize: commonConfig.pageSize, bFilter }; + if (commonUtils.isNotEmptyObject(conditonValues)) { + condition.sSqlCondition = conditonValues; + } + const addState = (await this.props.handleGetDataSet({ + name: 'slave', + configData: slaveConfig, + condition, + isWait, + })); + return addState; + }; + + handleCopyToClick = async (name) => { + const { + slaveConfig, dispatch, slaveFilterCondition, slavePagination, slaveOrderBy, app, slaveData, slaveSelectedRowKeys, token, sModelsId, formRoute, sModelsType, + } = this.props; + const copyToConfig = slaveConfig.gdsconfigformslave.filter(item => (item.sControlName.includes(name))); + const getData = this.handleGetData; + + let listFilterName = ''; + const showName = []; + /* 找到搜索框呈现的字段 然后赋值在搜索框里 */ + if (commonUtils.isNotEmptyArr(slaveFilterCondition)) { + slaveFilterCondition.forEach((item) => { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(i => i.sName === item.bFilterName); + if (iIndex > -1) { + showName.push(slaveConfig.gdsconfigformslave[iIndex].sName); + } + }); + if (commonUtils.isNotEmptyArr(showName)) { + listFilterName = showName[0]; + } + } + const sendSocketMessage = this.props.handleSendSocketMessage; + if (copyToConfig.length > 0) { + const { sActiveId } = copyToConfig[0]; + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`; + let copyTo = {}; + copyTo.name = copyToConfig[0].sControlName; + copyTo.config = copyToConfig; + copyTo.listFilterCondition = slaveFilterCondition; /* 列表的搜索条件 如搜索001 点击了复制到 则把001搜索条件同步传到单据 当回刷列表时 在带回来 */ + copyTo.listModelsId = sModelsId; /* 列表sModelsId */ + copyTo.listModelsType = sModelsType; /* 列表sModelsType */ + copyTo.listUrl = formRoute; /* 列表路由 */ + copyTo.listFilterName = listFilterName; + const copyToData = []; + if (!slaveConfig.bMutiSelect && false) { // 是否多选 + copyTo.masterData = name; + copyTo.slaveData = [name]; + + if (commonUtils.isNotEmptyObject(copyTo.name) && copyTo.name.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */ + copyTo = await this.props.onTmpInfoBySql(copyToConfig, copyTo.slaveData, copyTo); + } + dispatch({ + type: 'content/onRouterMobile', + payload: { + urlKey: sNameUrl, + sModelsId: sActiveId, + name, + copyTo, + refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slaveOrderBy), /* 刷新方法 */ + }, + }); + sendSocketMessage('copy', 'execute', name.sSlaveId, app.userinfo.sId, null, null); + } else if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + slaveData.filter(item => slaveSelectedRowKeys.toString().includes(item.sSlaveId)).forEach((item) => { + copyToData.push(item); + }); + copyTo.masterData = copyToData[0]; + copyTo.slaveData = copyToData; + + if (commonUtils.isNotEmptyObject(copyTo.name) && copyTo.name.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */ + copyTo = await this.props.onTmpInfoBySql(copyToConfig, copyTo.slaveData, copyTo); + } + + // 不重复字段处理 例如 复制到时只能同一客户复制到 + const iIndex = copyToConfig.findIndex(item => item.sControlName === name); + if (iIndex > -1 && !commonUtils.isEmpty(copyToConfig[iIndex].sNotRepeatColumn)) { + const sNotRepeatColumn = copyToConfig[iIndex].sNotRepeatColumn.trim(); + const sNotRepeatValue = copyToData[0][sNotRepeatColumn]; + const iCount = copyToData.filter(item => item[sNotRepeatColumn] === sNotRepeatValue).length; + if (iCount !== copyToData.length) { + const iConfigIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === sNotRepeatColumn); + const sNotRepeatShowName = iConfigIndex > -1 ? slaveConfig.gdsconfigformslave[iConfigIndex].showName : ''; + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseSame') + sNotRepeatShowName); // 请选择相同 + return; + } + } + let timValue = 0; + if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + timValue = 3000; + } + setTimeout(async () => { + this.props.app.webSocket.onmessage = (msg) => { + const rtmsg = JSON.parse(msg.data); + if (rtmsg.action === 'execute') { + if (rtmsg.msg === 'continue') { + if (commonUtils.isNotEmptyArr(copyToData)) { + dispatch({ + type: 'content/onRouterMobile', + payload: { + urlKey: sNameUrl, + sModelsId: sActiveId, + copyToData, + copyTo, + refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slaveOrderBy), /* 刷新方法 */ + }, + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择相同 + } + } else { + Toast.fail(rtmsg.handlers + commonFunc.showMessage(app.commonConst, 'InOperation')); /* 在操作,请稍后再操作! */ + } + } else if (rtmsg.action === 'loginOut') { + if (location.pathname.indexOf('/indexOee') > -1) { + dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } }); + } else if (location.pathname.indexOf('/indexMobile') > -1) { + dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } }); + } else { + dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } }); + } + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + const tbSuffix = ''; + const dataUrl = `${commonConfig.server_host}bill/billCopyToCheck/?sModelsId=${sModelsId}&sActiveId=${sActiveId}&tbSuffix=${tbSuffix}`; + const values = { sSlaveId: slaveSelectedRowKeys.toString() }; + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + if (dataReturn.code === 1) { + if (dataReturn.dataset.rows.length > 0) { + alert('Warn', commonFunc.showMessage(app.commonConst, 'beUsedToNew'), [ + { + text: 'Ok', + onPress: () => { + sendSocketMessage('copy', 'execute', slaveSelectedRowKeys.toString(), app.userinfo.sId, null, null); + }, + }, + { text: 'Cancel' }, + ]); + } else { + sendSocketMessage('copy', 'execute', slaveSelectedRowKeys.toString(), app.userinfo.sId, null, null); + } + } + }, timValue); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择数据 + } + } + }; + + handleDoubleClick = async (record) => { + const { + slaveConfig, + dispatch, + slaveFilterCondition, + slavePagination, + slaveOrderBy, + sModelsType, + treeFilterCondition, + app, + } = this.props; + const picArr = slaveConfig.gdsconfigformslave.filter(item => (item.sName === 'picArr')); + const getData = this.handleGetData; + if (picArr.length > 0) { + let sActiveId = ''; + if (picArr[0].sName === 'picArr' && picArr[0].sDropDownType === 'picArr' && sModelsType !== 'commonList/msg') { + [{ sActiveId }] = picArr; + } else if (picArr[0].sName === 'picArr' && picArr[0].sDropDownType === 'picArr' && sModelsType === 'commonList/msg' && (record.sType === '消息' || record.sType === '1')) { + [{ sActiveId }] = picArr; + } else if (sModelsType === 'commonList/msg' && (record.sType !== '消息' || record.sType !== '1')) { + sActiveId = '19211681019715633459786050'; + } + /* 消息列表双击打开时 调用获取websocket消息 */ + if (sModelsType === 'commonList/msg') { + const { webSocket, userinfo } = app; + const timValue = 2000; + if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + } + setTimeout(() => { + webSocket.onmessage = async (msg) => { + const rtmsg = JSON.parse(msg.data); + if (rtmsg.action === 'showImg') { + const msgData = JSON.parse(msg.data); + dispatch({ type: 'app/saveMsgCount', payload: { msgCount: msgData.msg } }); + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + this.props.handleSendSocketMessage('reflush', 'showImg', record.sId, userinfo.sId, '您有消息待审核', null); + }, timValue); + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slavePagination.pageSize, slaveOrderBy, undefined, undefined, undefined, treeFilterCondition), /* 刷新方法 */ + urlKey: sNameUrl, + sModelsId: sActiveId, + name: record, + checkedId: record.sId, + }, + }); + } + }; + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + + handleCheckboxChange = (e, selectedKey) => { + const { slaveSelectedRowKeys: slaveSelectedRowKeysOld, slaveConfig } = this.props; + let slaveSelectedRowKeys; + if (commonUtils.isEmptyArr(slaveSelectedRowKeysOld)) { + slaveSelectedRowKeys = []; + } else { + slaveSelectedRowKeys = [...slaveSelectedRowKeysOld]; + } + if (slaveConfig.bMutiSelect) { /* 多选 */ + if (e.target.checked) { + slaveSelectedRowKeys.push(selectedKey); + } else { + const iIndex = slaveSelectedRowKeys.findIndex(item => item === selectedKey); + slaveSelectedRowKeys.splice(iIndex, 1); + } + } else { /* 单选:选择唯一 */ + // eslint-disable-next-line no-lonely-if + if (e.target.checked) { + slaveSelectedRowKeys = []; + slaveSelectedRowKeys.push(selectedKey); + } else { + const iIndex = slaveSelectedRowKeys.findIndex(item => item === selectedKey); + slaveSelectedRowKeys.splice(iIndex, 1); + } + } + this.props.onSaveState({ + slaveSelectedRowKeys, + }); + }; + /* 工单打印预览功能 */ + handlePrintView = (e, rowData, showConfig) => { + const printPdf = showConfig.sControlName; /* 工单号配置调到打印界面,跳转打印页面 */ + const sActiveKey = showConfig.sActiveKey;/* 弹出界面对应数据主字段 */ + if (commonUtils.isNotEmptyObject(printPdf) && printPdf === 'printPdf' && commonUtils.isNotEmptyObject(sActiveKey)) { + const token = this.props.app.token; + const sActiveId = showConfig.sActiveId === '1' ? commonUtils.isEmpty(rowData.sFormId) ? rowData.sSrcFormId : rowData.sFormId : showConfig.sActiveId; + const printsId = rowData[sActiveKey]; + const urlPrint = `${commonConfig.file_host_ebc}printReport/printPdfByFromDataId/${printsId}.pdf?sModelsId=${sActiveId}&sId=${printsId}&token=${encodeURIComponent(token)}`; + const param = { urlPrint }; + // this.props.dispatch(history.push({ pathname: '/indexMobile/printPdf', state: { sParam: commonUtils.convertObjToStr(param) } })); + this.props.dispatch(history.push('/indexMobile/printPdf', commonUtils.convertObjToStr(param))); + } + } + /** 按钮操作事件 */ + handleButtonClick = (name) => { + if (name.indexOf('BtnCopyTo') > -1) { /* 复制到 */ // && commonUtils.isNotEmptyStr(e.item.props.sActiveId) + this.handleCopyToClick(name); + } else if (name.includes('BtnForceComplete')) { + this.handleForceComplete(); + } else if (name === 'BtnRefresh') { + const { + slaveConfig, slavePagination, slaveFilterCondition, sModelsType, slaveSelectedRowKeys, slaveSelectedData, + } = this.props; + /* 手机端工序报工,点开工之后,在再点完工,刷新不去除勾选 */ + if (sModelsType === 'mobile/productionReport') { + this.props.onSaveState({ + slaveSelectedRowKeys, slaveSelectedData, loading: false, + }); + } else { + this.props.onSaveState({ + clearArray: [], searchText: '', slaveSelectedRowKeys: [], slaveSelectedData: [], slaveInfoSelectedRowKeys: [], slaveInfoSelectedData: [], treeSelectedKeys: [], treeFilterCondition: [], loading: false, + }); + } + if (slavePagination === undefined) return; + this.handleGetData(slaveConfig, slaveFilterCondition); /* 刷新方法 */ + /* 判断是否要加载过滤树数据 */ + const filterTreeConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.bTree); + if (commonUtils.isNotEmptyArr(filterTreeConfigArr)) { + const filterTreeConfig = filterTreeConfigArr[0]; + this.handleGetFilterTreeData(filterTreeConfig, slaveFilterCondition, 1); + } + const { clearArray } = this.props; + if (!commonUtils.isEmpty(clearArray)) { + for (const item of clearArray) { + const { confirm, clearFilters } = item; + confirm(); + clearFilters(); + } + } + } else if (name === 'BtnBatchExamine') { + /* 批量审核 */ + this.handleBatchExamine(); + } else if (name === 'BtnBatchCancelExamine') { + /* 批量销审 */ + this.handleBatchCancelExamine(); + } + }; + handleForceComplete = () => { + const { slaveSelectedRowKeys, app } = this.props; + if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) { + Toast.info(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录 + } else { + const { getFieldProps } = this.form; + alert( + '详细', + + + , + [ + { text: '关闭', onPress: () => console.log('cancel') }, + { text: '确定', onPress: () => this.handleToForceComplete(this.state.textAreaContent) }, + ], + ); + } + } + /* 批量审核 */ + handleBatchExamine = () => { + this.handleAudit(1); + }; + + /* 批量消审 */ + handleBatchCancelExamine = () => { + this.handleAudit(0); + }; + handleChangeTextarea = (e) => { + this.setState({ + textAreaContent: e, + }); + } + /** toolbar批量审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { + slaveSelectedRowKeys, app, slaveConfig, slavePagination, slaveFilterCondition, slaveOrderBy, slaveData, + } = this.props; + /* 作废订单不能审核 */ + const slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const checkChancel = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + const msgShow = flag ? check : checkChancel; + if (commonUtils.isNotEmptyArr(slaveSelectedData)) { + // const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据 + let allMsg = ''; + let allErrorMsg = ''; + for (const child of slaveSelectedData) { + if (child.bInvalid) { + Toast.fail(`已作废的单据${child.sBillNo}不能审核!`); + return ''; + } + /** 数据审核 */ + const strMsgs = await this.dataAudit(flag, `${child.sId}_${child.sFormId}`, child.sBillNo); + if (commonUtils.isNotEmptyStr(strMsgs.strMsg)) { + allMsg += `${strMsgs.strMsg} \n `; + } else { + allMsg += ''; + } + if (commonUtils.isNotEmptyStr(strMsgs.strErrorMsg)) { + allErrorMsg += `${strMsgs.strErrorMsg} \n `; + } else { + allErrorMsg += ''; + } + } + if (commonUtils.isNotEmptyStr(allMsg)) { + Toast.fail(msgShow + allMsg); + } + if (allErrorMsg !== undefined && commonUtils.isNotEmptyStr(allErrorMsg)) { + Toast.fail(allErrorMsg); + } + this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */ + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData'));/* 请选择一条数据 */ + } + }; + + /** 数据审核 */ + dataAudit = async (flag, sId_sFormId, sBillNo, tmpCheck, isWait) => { + const [sId, sFormId] = sId_sFormId.split('_'); + /* 待用数据声明 */ + const { + sModelsId, app, slaveConfig, formRoute, + } = this.props; + /* 数据参数 */ + const picArr = slaveConfig.gdsconfigformslave.filter(item => (item.sName === 'picArr')); + const value = { + sClientType: '1', + paramsMap: { + iFlag: flag, + iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck, + sFormGuid: commonUtils.isEmptyArr(picArr) ? sFormId : picArr[0].sActiveId, + sGuid: sId, + }, + }; + /* 数据审核 */ + const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}&sName=${formRoute}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + const msgs = {}; + if (isWait) { + return returnData; + } else { + /* 接收返回值 */ + if (returnData.code === 1) { /* 成功 */ + if (flag === 1) { + /* 审核 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${outData[0].sReturn}` : `${outData[0].sReturn}`; + // if (outData[0].sReturn.split('-').length < 2) { + // // 正常业务提示,非审核模板 + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + // msgs.strMsg = `${sBillNo}审核${outData[0].sReturn}`; + // return msgs; + // } + // const sReturnArray = outData[0].sReturn.split('|'); + // const sCheckModelId = sReturnArray[0].split('-')[1]; + // if (commonUtils.isNotEmptyStr(sCheckModelId)) { + // msgs.strMsg = `${sBillNo}审核失败`; + // } + } else { + // this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */ + // message.destroy(); + msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${returnData.msg}` : `${returnData.msg}`; + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${outData[0].sReturn}` : `$${outData[0].sReturn}`; + } else { + // this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */ + msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${returnData.msg}` : `${returnData.msg}`; + } + } + } else { /* 失败 */ + msgs.strErrorMsg = returnData.msg; + // this.props.getServiceError(returnData); + } + return msgs; + } + }; + handleToForceComplete = async (sValue) => { + const { + app, slaveSelectedRowKeys, slaveConfig, sModelsId, slaveInfoSelectedRowKeys, formRoute, slaveFilterCondition, + } = this.props; + + const { token } = app; + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnForceComplete' || item.sControlName === 'BtnNoPurchase'); + const btnConfig = slaveConfig.gdsconfigformslave[iIndex]; + // debugger + const sRelation = btnConfig.sRelation; + + let selectedRowKeys = ''; + if (formRoute === '/indexPage/materialRequirementsPlanning') { + selectedRowKeys = slaveInfoSelectedRowKeys.toString(); + } else { + selectedRowKeys = slaveSelectedRowKeys.toString(); + } + const value = {}; + value.textareaValue = sValue; + const url = `${commonConfig.server_host}bill/billForceComplete?sModelsId=${sModelsId}&sName=${formRoute}`; + const values = { sqlParam: sRelation, sId: selectedRowKeys, sReason: value }; + + const masterReturn = (await commonServices.postValueService(token, values, url)).data; + if (masterReturn.code === 1) { + Toast.success(masterReturn.msg); + this.handleGetData(slaveConfig, slaveFilterCondition); + } else { + this.props.getServiceError(masterReturn); + } + } + + handleSelectAllClick = (e) => { + const { slaveData } = this.props; + const slaveSelectedRowKeys = []; + if (e.target.checked) { + slaveData.forEach((item) => { + slaveSelectedRowKeys.push(item.sSlaveId); + }); + } + this.props.onSaveState({ + slaveSelectedRowKeys, + }); + }; + render() { + return ( + + ); + } + }; +}; diff --git a/src/mobile/common/CommobileModalList.jsx b/src/mobile/common/CommobileModalList.jsx new file mode 100644 index 0000000..9d06679 --- /dev/null +++ b/src/mobile/common/CommobileModalList.jsx @@ -0,0 +1,113 @@ +/*eslint-disable*/ +import React, { PureComponent } from 'react'; +import { createForm } from 'rc-form'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import { Checkbox, ListView, TextareaItem } from 'antd-mobile'; +import * as commonUtils from '../../utils/utils'; + + +const CheckboxItem = Checkbox.CheckboxItem; +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +class listContent extends PureComponent { + + constructor(props) { + super(props); + } + + render() { + const { + slaveConfig, slaveData: slaveDataOld, slaveSelectedRowKeys: slaveSelectedRowKeysOld, + needCheck, setSelectedRowkeys, filterSlaveData, + } = this.props; + let slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + typeof filterSlaveData === 'function' && (slaveDataOld2 = filterSlaveData(slaveDataOld2)); + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const slaveSelectedRowKeys = slaveSelectedRowKeysOld === undefined ? [] : slaveSelectedRowKeysOld; + typeof setSelectedRowkeys === 'function' && setSelectedRowkeys(slaveDataOld2?.filter(i => i && slaveSelectedRowKeys.includes(i.sId))); + + const separator = (sectionID, rowID) => ( +
    + ); + + const row = (rowData, sectionID, rowID) => { + if (commonUtils.isEmptyObject(slaveConfig) || !Array.isArray(slaveConfig.gdsconfigformslave)) return <>; + const obj = JSON.parse(JSON.stringify(rowData)); // 深拷贝 + const allkey = slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') + const topInfo = needCheck && item === rowData.sId) > -1} + onChange={e => this.props.onCheckboxChange(e, rowData.sId)} + style={{ + width: '100%', + marginRight: 0, + lineHeight: '30px', + color: '#888', + fontSize: 16, + fontWeight: 'bold', + borderBottom: '1px solid #F6F6F6', + }} + > + { this.props.topTitle || '标签信息' } + + const content = allkey.map( + i => { + if (typeof obj?.[i?.sName] === 'string' || typeof obj?.[i?.sName] === 'number') { + return {i?.showName || ''}
    } + value={(obj?.[i?.sName]).toString()} + disabled + ref={el => this.autoFocusInst = el} + autoHeight + /> + } + return; + } + ) + return <> +
    + {topInfo} + {content} +
    + + }; + + return <> + {Array.isArray(slaveDataOld2) && slaveDataOld2.length ? + : +
    + 暂无数据 +
    + } + + } +} + +const ListComponent = createForm()(listContent); + +export default CommobileBase(CommobileListEvent(ListComponent)); diff --git a/src/mobile/common/CommobilePrintPdf.js b/src/mobile/common/CommobilePrintPdf.js new file mode 100644 index 0000000..f912ab0 --- /dev/null +++ b/src/mobile/common/CommobilePrintPdf.js @@ -0,0 +1,83 @@ +/* eslint-disable prefer-destructuring */ +/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */ +import React from 'react'; +import { InputItem, Icon } from 'antd-mobile'; +import { Document, Page, pdfjs } from 'react-pdf'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import * as commonUtils from '../../utils/utils'; +import pdfstyles from '../printpdf.less'; + +pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`; + +class CommobilePrintPdf extends React.Component { + constructor(props) { + super(props); + this.state = { + pageNumber: 1, + numPages: 1, + }; + } + + onDocumentLoadSuccess = ({ numPages }) => { + this.setState({ numPages }); + }; + + onPageNumberChange = (e) => { + let value = commonUtils.convertStrToNumber(e); + value = value <= 0 ? 1 : value; + value = value >= this.state.numPages ? this.state.numPages : value; + this.setState({ pageNumber: value }); + }; + lastPage = () => { + if (this.state.pageNumber === 1) { + return; + } + const page = this.state.pageNumber - 1; + this.setState({ pageNumber: page }); + } + nextPage = () => { + if (this.state.pageNumber === this.state.numPages) { + return; + } + const page = this.state.pageNumber + 1; + this.setState({ pageNumber: page }); + } + render() { + const { + pageNumber, numPages, + } = this.state; + const { urlPrint } = this.props; + const pageWidth = commonUtils.isNotEmptyNumber(document.body.clientWidth) ? document.body.clientWidth : 360; + return ( +
    +
    + + + +
    +
    +
    + +
    + this.onPageNumberChange(e)} + type="number" + />
    / {numPages}
    +
    + +
    +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + window.history.back(-1)} > +
    + ); + } +} + +export default CommobilePrintPdf; diff --git a/src/mobile/common/CommobileSearchComponent.js b/src/mobile/common/CommobileSearchComponent.js new file mode 100644 index 0000000..f71488b --- /dev/null +++ b/src/mobile/common/CommobileSearchComponent.js @@ -0,0 +1,629 @@ +/* eslint-disable prefer-destructuring */ +/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */ +import React from 'react'; +import weixin from 'weixin-js-sdk'; +import { Tabs, Badge, SearchBar, Modal, Button, Menu, ActivityIndicator, Flex, WhiteSpace, Toast, List } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import styles from '.././mobile.less'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import * as commonUtils from '../../utils/utils'; +import scan from '../../assets/mobile/scanning.svg'; +// eslint-disable-next-line import/first +import BarCodeUtil from './BarCodeUtil'; +// eslint-disable-next-line import/first,no-unused-vars +import moment from 'moment'; +import ShowType from './CommobileComponent'; +// eslint-disable-next-line import/first +import { createForm } from 'rc-form'; + + +// const data = [ +// { +// value: '1', +// label: '全部数据', +// }, +// ]; + +class CommobileSearchComponent extends React.Component { + constructor(props) { + super(props); + const returnFilterCondition = props.returnFilterCondition; + const returnFilterName = props.returnFilterName; /* 未清搜索框字段 */ + let returnValue = ''; + if (commonUtils.isNotEmptyArr(returnFilterCondition)) { + const returnData = returnFilterCondition.filter(item => item.bFilterName === returnFilterName); + if (commonUtils.isNotEmptyArr(returnData)) { + returnValue = returnData[0]; + } + } + this.state = { + scanValue: commonUtils.isNotEmptyObject(returnValue) ? returnValue.bFilterValue : '', + }; + this.bFilterCondition = true; + this.textInput = null; + } + + async componentWillMount() { + const { token, sModelsId } = this.props; + const dataUrl = `${commonConfig.server_host}syssearch/getSyssearchData/${sModelsId}?sModelsId=${sModelsId}`; /* 获取快捷查找方案 */ + const dataReturn = (await commonServices.getService(token, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const addState = {}; + if (commonUtils.isNotEmptyArr(returnData)) { + addState.searchOperation = []; + returnData.forEach((item) => { + addState.searchOperation.push({ text: item.sName }); + }); + let iIndex = returnData.findIndex(item => item.bDefault); + iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(returnData) ? -1 : 0; + addState.label = returnData[iIndex].sName; + } + if (sModelsId === '12710101117217437977130') { + if (this.inputSearch) this.inputSearch.focus(); + } + this.props.onSaveState({ searchSolution: returnData, ...addState }); + } else { + this.props.getServiceError(dataReturn); + } + } + + componentWillReceiveProps(nextProps) { + const { + returnFilterCondition, returnFilterName, clearSearchValue, sModelsType, sModelsId, + } = nextProps; + if (sModelsId === '12710101117217437977130') { + if (this.inputSearch) this.inputSearch.focus(); + } + if (commonUtils.isNotEmptyArr(returnFilterCondition) && clearSearchValue && sModelsType === 'mobile/productionReport') { + const returnData = returnFilterCondition.filter(item => item.bFilterName === returnFilterName); + let returnValue = ''; + if (commonUtils.isNotEmptyArr(returnData)) { + returnValue = returnData[0]; + } + this.setState({ + scanValue: commonUtils.isNotEmptyObject(returnValue) ? returnValue.bFilterValue : '', + }); + } + } + + + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + + onChange = async (value) => { + let label = ''; + const { initData } = this.props; + initData.forEach((dataItem) => { + if (dataItem.value === value[0]) { + label = dataItem.label; + if (dataItem.children && value[1]) { + dataItem.children.forEach((cItem) => { + if (cItem.value === value[1]) { + label += ` ${cItem.label}`; + } + }); + } + } + }); + + const { searchSolution, slaveConfig } = this.props; + const iIndex = searchSolution.findIndex(item => item.sName === label); + + const addState = await this.props.onGetData(slaveConfig, JSON.parse(searchSolution[iIndex].sCondition), 1, true); + // const slaveFilterConditionOld = addState.slaveFilterCondition; + this.props.onSaveState({ + show: !this.props.show, + label, + ...addState, + // slaveFilterConditionOld, + }); + } + + onMaskClick = () => { + this.props.onSaveState({ + show: false, + }); + } + // eslint-disable-next-line react/sort-comp + handleClick = () => { + // e.preventDefault(); // Fix event propagation on Android + this.props.onSaveState({ + show: !this.props.show, + }); + // mock for async data loading + if (!this.props.initData) { + const data = []; + const { searchOperation: searchOperationOld } = this.props; + const childrenData = commonUtils.isEmptyArr(searchOperationOld) ? [] : searchOperationOld; + if (commonUtils.isNotEmptyArr(childrenData)) { + for (let i = 0; i < childrenData.length; i += 1) { + const addStata = {}; + addStata.value = i; + addStata.label = childrenData[i].text; + data.push(addStata); + } + } else { + this.props.onSaveState({ + show: false, + }); + } + if (!this.props.initData && commonUtils.isNotEmptyArr(data)) { + setTimeout(() => { + this.props.onSaveState({ + initData: data, + }); + }, 500); + } + } + } + + handleSearch = async (value, type) => { + const { slaveConfig, sModelsId } = this.props; + let { slaveFilterCondition } = this.props; + if (commonUtils.isNotEmptyArr(slaveFilterCondition)) { + slaveFilterCondition[0].bFilterValue = value; + } else { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.bFind); + if (iIndex > -1) { + slaveFilterCondition = [{ bFilterName: slaveConfig.gdsconfigformslave[iIndex].sName, bFilterCondition: 'like', bFilterValue: value }]; + } + } + if (type === 'searchScan') { + /* 打钩 扫码出来的数据行 */ + const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, undefined, true); + const slaveSelectedRowKeys = []; + if (commonUtils.isNotEmptyObject(addState) && commonUtils.isNotEmptyArr(addState.slaveData)) { + const slaveData = addState.slaveData; + slaveData.forEach((item) => { + slaveSelectedRowKeys.push(item.sSlaveId); + }); + addState.slaveSelectedRowKeys = slaveSelectedRowKeys; + + /* 扫码后只查询到一条数据则自动调用copyTo */ + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && slaveSelectedRowKeys.length === 1) { + /* 查找复制到按钮名称 */ + const filterData = slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName === '' && commonUtils.isNotEmptyObject(item.sControlName) && item.sControlName.indexOf('BtnCopyTo') > -1); + if (commonUtils.isNotEmptyArr(filterData) && filterData.length === 1) { + // const BtnCopyToName = filterData[0].sControlName; + setTimeout(() => { + this.props.onCopyToClick(slaveData[0]); + }, 500); + } + } + } + this.props.onSaveState({ ...addState }); + if (this.inputSearch) this.inputSearch.focus(); + return; + } + const addState = await this.props.onGetData(slaveConfig, slaveFilterCondition, undefined, true); + if (commonUtils.isNotEmptyObject(addState)) { + if (sModelsId === '12710101117217437977130' && commonUtils.isNotEmptyArr(addState.slaveData) && addState.slaveData.length === 1) { /* 一条时 默认选中 */ + const slaveSelectedRowKeys = []; + const slaveData = addState.slaveData; + const key = commonUtils.isNotEmptyObject(slaveData[0].sSlaveId) ? slaveData[0].sSlaveId : slaveData[0].sId; + slaveSelectedRowKeys.push(key); + addState.slaveSelectedRowKeys = slaveSelectedRowKeys; + } + addState.clearSearchValue = false; + this.props.onSaveState({ ...addState }); + if (this.inputSearch) this.inputSearch.focus(); + } + } + onChangeScan = async (event) => { + const file = event.target.files[0]; + if (file) { + this.parseQrCode(file) + .then((data) => { + Toast.info(data); + }) + .catch((error) => { + Toast.fail(error.message); + }); + } + // this.parseLineCode(file); + } + + // /** + // * 解析条形码(识别率太低,暂用不了) + // * @param {Blob} file 文件流 + // */ + // async parseLineCode(file) { + // const src = URL.createObjectURL(file); + // Quagga.decodeSingle({ + // src, + // decoder: { + // readers: ['code_128_reader'], + // }, + // locate: true, + // }, (result) => { + // console.log('linecode', result); + // if (result.codeResult) { + // console.log('result', result.codeResult.code); + // } else { + // console.log('not detected'); + // } + // }); + // } + + /** + * 解析qrcode + * @param {Blob} file 文件流 + */ + // async parseQrCode(file) { + // const imgData = await this.readImage(file); + // try { + // const result = jsQR( + // imgData.data, + // imgData.width, + // imgData.height, + // ); + // return Promise.resolve(result.data); + // } catch (error) { + // return Promise.reject(new Error(`识别失败:${error.message}`)); + // } + // } + + /** + * 文件解析为imageData + * @param {Blob} file 文件流 + */ + // readImage = (file) => { + // return new Promise((resolve, reject) => { + // const reader = new FileReader(); + // reader.onloadend = () => { + // // 读取文件 + // const imageElement = document.createElement('img'); + // imageElement.style.width = '100px'; + // imageElement.src = reader.result; + // imageElement.onload = () => { + // // 把图片绘制到canvas,并获取imageData + // const canvas = document.createElement('canvas'); + // const width = 300; + // // eslint-disable-next-line no-mixed-operators + // const height = (imageElement.height * width / imageElement.width); + // canvas.width = width; + // canvas.height = height; + // const g = canvas.getContext('2d'); + // g.drawImage(imageElement, 0, 0, width, height); + // const imageData = g.getImageData(0, 0, width, height); + // resolve(imageData); + // }; + // imageElement.onerror = () => { + // reject(new Error('图片加载失败')); + // }; + // }; + // reader.onerror = () => { + // reject(new Error('文件读取失败')); + // }; + // reader.readAsDataURL(file); + // }); + // } + handleScan = () => { + BarCodeUtil.startScan((type, code) => { + if (!commonUtils.isEmpty(code)) { + this.handleSearch(code, 'searchScan'); + this.setState({ + scanValue: code, + }); + } + }); + // if (this.textInput) { + // this.textInput.click(); + // } + } + + handleGetWxCode = async (successHandler) => { + let scanResult = ''; + const { app } = this.props; + // eslint-disable-next-line prefer-destructuring,no-unused-vars + const userinfo = app.userinfo; + const myUrl = location.href; + const configUrl = `${commonConfig.server_host}wechat/getWxToken`; + const values = { + url: myUrl, + sBrandsId: userinfo.sBrandsId, + sSubsidiaryId: userinfo.sSubsidiaryId, + }; + // const values = { + // url: myUrl, + // sBrandsId: '1111111111', + // sSubsidiaryId: '1111111111', + // }; + const configReturn = (await commonServices.postValueService(null, values, configUrl)).data; + console.log('configReturn::', configReturn, values); + if (configReturn.code === 1) { + const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows)) { + const appId = rows[0].appId.toString(); + const nonceStr = rows[0].nonceStr.toString(); + const signature = rows[0].signature.toString(); + const timestamp = rows[0].timestamp.toString(); + weixin.config({ + beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId, // 必填,公众号的唯一标识 + timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %> + nonceStr, // 必填,生成签名的随机串 + signature, // 必填,签名 + jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫 + }); + weixin.ready(() => { + weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口 + jsApiList: ['scanQRCode'], + success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} + console.log(res); + if (res.checkResult.scanQRCode !== true) { + Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`); + } + }, + // eslint-disable-next-line no-unused-vars + fail(res) { // 检测getNetworkType该功能失败时处理 + Toast.fail('checkJsApi error'); + }, + + + }); // wx.ready结束 + weixin.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 + success(res) { + // console.log("调用扫描成功",res); + scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 + if (commonUtils.isNotEmptyObject(scanResult)) { + const codeResult = scanResult.split(','); + if (codeResult.length > 1) { + scanResult = codeResult[1]; + } + } + successHandler(scanResult); + // return scanResult; + // console.log('微信扫码结果:', scanResult); + }, + error(res) { + // console.log(res); + if (res.errMsg.indexOf('function_not_exist') > 0) { + Toast.fail('版本过低请升级'); + } + }, + }); + }); + } else { + Toast.fail(configReturn.msg); + } + } else { + Toast.fail(configReturn.msg); + } + return scanResult; + } + + handleWxScan = async () => { + this.handleGetWxCode((code) => { + if (!commonUtils.isEmpty(code)) { + this.handleSearch(code, 'searchScan'); + this.setState({ + scanValue: code, + }); + } + }); + } + + handleChangleInput = (value) => { + this.setState({ scanValue: value }); + } + // setTextInputRef = (element) => { + // this.textInput = element; + // }; + + handleCancel = () => { + this.setState({ scanValue: '' }); + this.handleSearch(''); + } + + /** 修改主表数据 */ + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData) => { + this.props.onChange('master', sFieldName, changeValue, sId, dropDownData); + }; + handleFilterSearch = (value) => { + const { masterData, slaveFilterCondition: slaveFilterConditionOld, slaveConfig } = this.props; + if (commonUtils.isNotEmptyArr(masterData) && commonUtils.isNotEmptyArr(slaveFilterConditionOld)) { + // eslint-disable-next-line array-callback-return + slaveFilterConditionOld.map(async (item) => { + let filterOne = {}; + if (commonUtils.isNotEmptyArr(value)) { + filterOne = value.filter(e => item.bFilterName === e.sName); + } + if (commonUtils.isNotEmptyArr(filterOne) && filterOne[0].sDropDownType === 'sql') { + item.bFilterValue = masterData[item.bFilterName][0] ? masterData[item.bFilterName][0] : item.bFilterValue; + } else { + item.bFilterValue = masterData[item.bFilterName] ? masterData[item.bFilterName] : item.bFilterValue; + } + }); + } + this.props.onGetData(slaveConfig, slaveFilterConditionOld); + this.setState({ modal1: false }); + } + handleFilterSearchCancle = () => { + let { slaveFilterCondition: slaveFilterConditionOld } = this.props; + const { slaveConfig, masterData } = this.props; + if (commonUtils.isNotEmptyArr(slaveFilterConditionOld)) { + // eslint-disable-next-line array-callback-return + slaveFilterConditionOld.map((item) => { + masterData[item.bFilterName] = ''; + }); + this.props.onSaveState({ + masterData, + label: '', + }); + slaveFilterConditionOld = []; + this.props.onGetData(slaveConfig, slaveFilterConditionOld); + } + this.setState({ modal1: false }); + } + render() { + const { + label, initData, show, slavePagination, token, slaveFilterCondition, slaveConfig, showScan, app, sModelsId, masterData, + } = this.props; + const showName = []; + const solutionData = []; + if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(slaveConfig)) { + const slaveConfigData = slaveConfig.gdsconfigformslave; + // eslint-disable-next-line array-callback-return,no-unused-vars + slaveFilterCondition.map((item, index) => { + const iIndex = slaveConfigData.findIndex(i => i.sName === item.bFilterName); + if (iIndex > -1) { + solutionData.push(slaveConfigData[iIndex]); + showName.push(slaveConfigData[iIndex].showName); + } + }); + } + const total = commonUtils.isEmptyObject(slavePagination) ? 0 : slavePagination.total; + const showlabel = commonUtils.isEmptyObject(label) ? '全部数据' : label; + const downUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Down.png&sModelsId=100&token=${token}`; + const upUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Up.png&sModelsId=100&token=${token}`; + const imgUrl = show ? upUrl : downUrl; + const tabs = [ + { title: 筛选 }, + { + title: + {showlabel} + + , + }, + ]; + const menuEl = ( + + ); + const loadingEl = ( +
    + +
    + ); + + return ( +
    +
    +
    + { this.inputSearch = el; }} + /> +
    + { console.log('onChange', index, tab); }} + onTabClick={(tab, index) => { + if (index === 1) { + this.handleClick(); + } else { + this.setState({ + modal1: true, + }); + this.props.onSaveState({ + show: false, + }); + } + }} + > +
    +
    + + + +
    + {show ? initData ? menuEl : loadingEl : null} + {show ?
    : null} +
    + + { alert('afterClose'); }} + > + + `${showlabel}`}> + { + solutionData.map((item, index) => { + const showTypeProps = { + app, + record: {}, + sId: item.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.handleMasterChange, + showConfig: item, + formItemLayout: {}, + textArea: false, + enabled: true, + dataValue: commonUtils.isNotEmptyObject(masterData) ? masterData[item.sName] : '', + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( +
    + {/* eslint-disable-next-line react/no-array-index-key */} +
    + +
    + +
    + ); + }) + } + + + + + + +
    +
    +
    + ); + } +} +const CommobileSearchComponentMobile = createForm()(CommobileSearchComponent); +export default CommobileSearchComponentMobile; + diff --git a/src/mobile/common/CommobileStep.js b/src/mobile/common/CommobileStep.js new file mode 100644 index 0000000..665b9e6 --- /dev/null +++ b/src/mobile/common/CommobileStep.js @@ -0,0 +1,195 @@ +/* eslint-disable prefer-destructuring */ +/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */ +import React from 'react'; +import { Steps } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import * as commonUtils from '../../utils/utils'; + +const Step = Steps.Step; +const warningIcon = () => ( + + + +); +const finishIcon = () => ( + + + +); +const errorIcon = () => ( + + + +); + + +// eslint-disable-next-line react/require-render-return +class CommobileStep extends React.Component { + constructor(props) { + super(props); + this.state = { + // isLoading: false, + }; + } + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + + + render() { + const { sSlaveId, slaveData } = this.props; /* 工单号 */ + const iIndex = slaveData.findIndex(item => item.sSlaveId === sSlaveId); + let slaveDataRow = {}; + if (iIndex > -1) { + slaveDataRow = slaveData[iIndex]; + const sPartNameStatus = slaveDataRow.sPartNameStatus; /* 工单状态 */ + const sPartItem = commonUtils.isNotEmptyObject(sPartNameStatus) ? sPartNameStatus.split('->') : ''; + return ( +
    +
    + { + commonUtils.isNotEmptyObject(sPartNameStatus) ? + + { + // eslint-disable-next-line array-callback-return + sPartItem.map((t) => { + // const sPartItemLength = sPartItem.length; + const ArrItemStr = t.split('#')[0]; + const ArrItemNum = t.split('#')[1]; + const ArrItemName = t.split('#')[2]; + const ArrItemBanZhu = t.split('#')[3]; + const ArrItemTime = t.split('#')[4]; + const ArrItemPCNum = t.split('#')[5]; + const ArrItemSBNum = t.split('#')[6]; + let ArrItemNumChange = ''; + let icon = null; + let status = 'wait'; + // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line default-case + switch (Number(ArrItemNum)) { + case 0: + ArrItemNumChange = '未排程'; + status = 'error'; + // eslint-disable-next-line react/jsx-no-undef + icon = warningIcon(); + break; + case 1: + ArrItemNumChange = '未完成'; + // icon = ; + status = 'error'; + icon = errorIcon(); + break; + case 2: + ArrItemNumChange = '生产中'; + status = 'process'; + // icon = ; + break; + case 3: + ArrItemNumChange = '暂停'; + status = 'wait'; + // icon = ; + break; + case 4: + ArrItemNumChange = '取消'; + status = 'wait'; + break; + case 5: + // eslint-disable-next-line no-const-assign + ArrItemNumChange = '完成'; + status = 'finish'; + icon = finishIcon(); + break; + } + const title = ( +
    + {ArrItemStr} + {ArrItemNumChange} +
    + ); + const content = ( +
    +
    +
    机台名称:{ArrItemName}
    +
    班组名称:{ArrItemBanZhu}
    +
    +
    +
    排单时间:{ArrItemTime}
    +
    排程数量:{ArrItemPCNum}
    +
    +
    +
    上报时间:
    +
    上报数量:{ArrItemSBNum}
    +
    +
    + ); + + return ( + + ); + }) + } +
    : '' + } +
    +
    + ); + } + } +} + +export default CommobileBase(CommobileListEvent(CommobileStep)); diff --git a/src/mobile/common/CommobileSubBill.js b/src/mobile/common/CommobileSubBill.js new file mode 100644 index 0000000..51250b2 --- /dev/null +++ b/src/mobile/common/CommobileSubBill.js @@ -0,0 +1,2867 @@ +/* eslint-disable */ +import React from 'react'; +import weixin from 'weixin-js-sdk'; +import { Flex, Button, ListView, Toast, Tabs, Badge, Modal} from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileSubBillEvent'; +import CommobileViewMaster from './CommobileViewMaster'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import CommobileToolBar from './CommobileToolBar'; +import styles from '../mobile.less'; +import add from '../../assets/mobile/add-select.svg'; +import scan from '../../assets/mobile/scanning.svg'; +import close from '../../assets/mobile/close.svg'; +import * as commonFunc from '../../components/Common/commonFunc'; +import BarCodeUtil from './BarCodeUtil'; +import preView from '../components/preView'; +import * as commonServices from "../../services/services"; +import indexStyles from '../../routes/mobile/IndexMobile.less'; +import ModalList from '../components/modal'; +import CommonMobileList from './CommobileModalList'; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +let _this = {}; +class CommobileBill extends React.Component { + constructor(props) { + super(props); + this.state = { + tabPage: 0, + visible: false, + baseMasterConfig: {} // 发外masterConfig配置 + }; + _this = this; + } + + componentDidUpdate(){ + if (this.props.masterConfig) { + if (!this.hasUpdate) { + this.hasUpdate = true; + const config = this.handleMasterShowInfoConfig(this.state.tabPage); + this.setState({ baseMasterConfig: config }); + } + } + } + + /* 解析消息 */ + handleGetMsg = (str) => { + const msgArr = commonUtils.isNotEmptyObject(str) ? str.split('xpm'): ''; + const divStr = []; + if(commonUtils.isNotEmptyArr(msgArr)) { + for (let i = 0; i < msgArr.length; i ++) { + divStr.push(

    {msgArr[i]}

    ); + } + } + return divStr; + } + + handleOutsourcedProcesses = ({sqlDataRow, name, masterdataObj, AssignField}) => { + let addRow = {}; + const data = this.props[`${name}Data`] || []; + addRow = commonFunc.getAssignFieldValue(AssignField, masterdataObj);// 取主表赋值字段 + if (commonUtils.isNotEmptyObject(sqlDataRow)) { + addRow = { ...addRow, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + addRow.sParentId = masterdataObj.sId; + addRow.sId = commonUtils.createSid(); + addRow.handleType = 'add'; + this.props.onSaveState({ [`${name}Data`]: [...data, addRow] }); + } + + // eslint-disable-next-line react/sort-comp + handleClick = async (name, type, sId) => { + if (name === 'BtnSave') { + this.props.onSubmit(); + } else if (name === 'BtnUpd') { + this.props.onEdit(name); + } else if (type === 'add') { + const dataRow = await this.props.onDataRowAdd(name, true); + const tableData = [dataRow, ...this.props[`${name}Data`] || []]; + const tabPage = this.props.handleNameToIndex(name); + const masterData = this.props.handleMasterDefaultData(tableData, this.props.isOutsourcedProcesses, tabPage, this.props.masterData); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [dataRow.sId], masterData }); + } else if (type === 'del') { + const { app, [`${name}Data`]: tableData } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (sId !== '') { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + const otherData = {}; + const { sModelsId, slaveData } = this.props; + if (this.props.isOutsourcedProcesses && name === 'slaveChild') { + if (!isNaN(Number(slaveData?.[0]?.dAuxiliaryQty)) && !isNaN(Number(tableData[tableDataIndex]?.dAuxiliaryQty))) { + const value = (Number(slaveData?.[0]?.dAuxiliaryQty) - Number(tableData[tableDataIndex]?.dAuxiliaryQty)).toFixed(2); + otherData.slaveData = [{...slaveData?.[0] || {}, dAuxiliaryQty: value.toString() }]; + } + } + if (tableDataIndex > -1) { + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + const tabPage = this.props.handleNameToIndex(name); + const masterData = this.props.handleMasterDefaultData(tableData, this.props.isOutsourcedProcesses, tabPage, this.props.masterData); + this.props.onSaveState({ + masterData, + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + ...otherData, + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + } + } else if (name === 'BtnScan') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, sModelsType, masterConfig, slaveChildConfig, slaveChildData, + } = this.props; + let { slaveData } = this.props; + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + slaveData = slaveChildData; + } + const addState = {}; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo'; + + masterdataObj = { + ...masterData, [sDefineNoName] : code + }; + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sParentId = masterdataObj.sId; + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1][sDefineNoName]; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyObject(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // slaveData[len - 1] = slaveDataObj; + slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + // const date = new Date(dataStr); + slaveDataObjAdd = { + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sMaterialsName: codeArr.length > 1 ? codeArr[1] : '', + sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '', + dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + sMaterialsId: codeArr.length > 8 ? codeArr[8] : '', + sWareHouseId: codeArr.length > 9 ? codeArr[9] : '', + sLocationId: codeArr.length > 10 ? codeArr[10] : '', + dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + // if(commonUtils.isEmptyArr(btnScanConfigs)) { + // Toast.fail('请配置扫码按钮!!!', 1); + // return; + // } + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + console.log('slaveDataObj1111', slaveDataObj); + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + if (codeArr.length > 1) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]); + } + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterdataObj; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + slaveDataObjAdd = { + sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', + sOrderNo: codeArr.length > 13 ? codeArr[13] : '', + sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '', + sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '', + sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '', + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + // masterDataObjAdd = { + // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo, + // }; + /* 读取多条扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + if (codeArr.length > 1) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.push(slaveDataObj); + } + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + addState.slaveChildData = slaveData; + }else { + addState.slaveData = slaveData; + } + + this.props.onSaveState({ masterData: masterdataObj, ...addState}); + }); + } else if (type === 'scan' || name === 'BtnScan' || name === 'BtnScanPda') { + console.log('dddd', name); + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveChildData:slaveData, sModelsType, masterConfig, slaveChildConfig, + } = this.props; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + let sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + /* 读取扫码配置 */ + let btnScanConfigs; + if ( name === 'BtnScan' || name === 'BtnScanPda') { + btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sControlName.indexOf('_pda') > -1); + if(name === 'BtnScan' && commonUtils.isEmptyArr(btnScanConfigs)) { + btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + } + } else { + if (this.props.isOutsourcedProcesses) { + const config = this.props[`${name}Config`] || {}; + btnScanConfigs = config.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + } else { + btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + } + } + + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo'; + + masterdataObj = { + ...masterData, [sDefineNoName] : code + }; + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + + if( name === 'BtnScanPda' || name ==='BtnScan') { + if (commonUtils.isNotEmptyArr(sqlDropDownData)) { + this.handleSqlDropDownData({ + sqlDropDownData, + fieldConfig: {...btnScanConfigs?.[0] || [], sName: sDefineNoName}, + masterdataObj, + slaveDataNew: slaveData, + sFieldName: sDefineNoName, + }) + return; + } + } + + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + if (this.props.isOutsourcedProcesses) { + this.handleOutsourcedProcesses({sqlDataRow, name, masterdataObj, AssignField}); + return; + } + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = commonUtils.isNotEmptyArr(this.props.slaveData) ? this.props.slaveData[0] : {}; + slaveDataObj = commonFunc.getDefaultData(slaveChildConfig, allTableData); + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sParentId = masterdataObj.sId; + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1][sDefineNoName]; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyObject(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // slaveData[len - 1] = slaveDataObj; + slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + // const date = new Date(dataStr); + slaveDataObjAdd = { + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sMaterialsName: codeArr.length > 1 ? codeArr[1] : '', + sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '', + dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + sMaterialsId: codeArr.length > 8 ? codeArr[8] : '', + sWareHouseId: codeArr.length > 9 ? codeArr[9] : '', + sLocationId: codeArr.length > 10 ? codeArr[10] : '', + dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + // if(commonUtils.isEmptyArr(btnScanConfigs)) { + // Toast.fail('请配置扫码按钮!!!', 1); + // return; + // } + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + console.log('slaveDataObj1111', slaveDataObj); + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + if (codeArr.length > 1) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]); + } + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterdataObj; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + slaveDataObjAdd = { + sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', + sOrderNo: codeArr.length > 13 ? codeArr[13] : '', + sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '', + sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '', + sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '', + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + // masterDataObjAdd = { + // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo, + // }; + /* 读取多条扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + if (codeArr.length > 1) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveChildData:slaveData, masterData: masterdataObj }); + }); + } else if (type === 'scan1') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */ + BarCodeUtil.startScan(async (type, code) => { + const { masterConfig } = this.props; + let { masterData } = this.props; + let masterdataObj = {}; + const codeArr = code.split('|'); + if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */ + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + masterData.sDefineNo = sDefineNo; + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + // this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + this.props.onSaveState({ masterData }); + }); + } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */ + this.handleCamera(); + } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */ + this.handleGetPhoto(); + } else if (name === 'BtnCancel') { + window.history.back(-1); + } else if (name === 'BtnExamine') { + this.props.onAudit(1); + } else if (name === 'BtnCancelExamine') { + /* 销审 */ + this.props.onAudit(0); + } else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */ + const { masterConfig, masterData, sModelsId, } = this.props; + const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))) ? + masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0] : {};// sButtonEnabled sButtonParam + if(commonUtils.isNotEmptyObject(btnConfig)) { + /* 组装allTableData */ + const allTableMap ={}; + const allReturnMap ={}; + const slaveNameList = []; + /* 从props找到 所有的Config */ + if(commonUtils.isNotEmptyArr(this.props)) { + for (const key of Object.keys(this.props)) { + if(key.includes('Config') && !key.includes('onGet') && !key.includes('report')) { + const tablename = key.replace('Config', '').trim(); + slaveNameList.push(tablename); + } + } + } + + if (commonUtils.isNotEmptyArr(slaveNameList)) { + slaveNameList.forEach((name, index) => { + const tableConfig = this.props[name +'Config']; /* 动态配置 */ + const tableData = this.props[name +'Data']; /* 动态配置 */ + const tableSelectedRowKeys = this.props[name + 'SelectedRowKeys']; /* 选中Key1 */ + if(commonUtils.isNotEmptyObject(tableConfig) && name !=='slaveSum') { + allTableMap[name +'.'+ tableConfig.sTbName] = tableData + } + + }) + const masterTbName = masterConfig.sTbName; + allTableMap['master.'+ masterTbName] = masterData; + } + const sButtonParam = btnConfig.sButtonParam; + const btn = commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : ''; + const sProName = btn.sproName; + const url = `${commonConfig.server_host}calcprocedure/calc?sModelsId=${sModelsId}`; + const value = { + sProName, + sButtonParam, + allTableMap + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据操作 数据回传页面 */ + // Tos.success('操作成功!'); + const returnData = dataReturn.dataset.rows[0]; + console.log('返回数据:', returnData); + if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyObject(returnData)) { + slaveNameList.forEach((name, index) => { + const tableConfig = this.props[name +'Config']; /* 动态配置 */ + let tableDelData = this.props[name +'DelData']; + if(commonUtils.isEmptyArr(tableDelData)) { + tableDelData = []; + } + let tableDelDataNew = [] + let tableData = []; + if(commonUtils.isNotEmptyObject(tableConfig)) { + tableData = returnData[name +'.'+ tableConfig.sTbName]; /* 动态配置 */ + if(commonUtils.isNotEmptyArr(tableData) && Array.isArray(tableData)) { + tableDelDataNew = tableData.filter(item => item.handleType === 'del'); + tableData = tableData.filter(item => item.handleType !== 'del'); + tableDelData = tableDelData.concat(tableDelDataNew); + } + + } + allReturnMap[name +'Data'] = tableData; + allReturnMap[name +'DelData'] = tableDelData; + }); + const masterTbName = masterConfig.sTbName; + allReturnMap.masterData = returnData['master.'+ masterTbName]; + allReturnMap.masterData.enabled = true; + } + this.props.onSaveState({ ...allReturnMap }); + }else if (dataReturn.code === -8 || dataReturn.code === 2) { + Toast.info(dataReturn.msg); + // Modal.info({ + // title: '温馨提示:', + // content: ( + //
    + // {this.handleGetMsg(dataReturn.msg)} + //
    + // ), + // okText: '确认', + // onOk() {}, + // }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + + } + } else if(name ==='BtnInput') { /* 弹出虚拟键盘 */ + const { currentConfig, masterConfig } = this.props; + plus?.key?.showSoftKeybord(); + const allReturnMap = {}; + if(commonUtils.isNotEmptyObject(currentConfig)) { + const field = document.getElementById(currentConfig.sName); + if(field) { + field.focus(); + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === currentConfig.sName); + if(iIndex > -1) { + masterConfig.gdsconfigformslave[iIndex] ={ + ...masterConfig.gdsconfigformslave[iIndex], bNotSearch:false }; + } + + } + } + allReturnMap.masterConfig = masterConfig; + this.props.onSaveState({ bOpenKeyboard: true, ...allReturnMap}) + } else if (name === 'BtnRefresh') { + this.props.onButtonClick('BtnRefresh'); + } + } + handleCamera = () => { + BarCodeUtil.getImage(); + } + handleGetPhoto = () => { + BarCodeUtil.getPhoto(); + } + + /**pda扫码数据 */ + fieldConfig = React.createRef(); + masterdataObj = React.createRef(); + ModalList = React.createRef(); + selectedRowkeys = React.createRef(); + cancelValue = React.createRef(); + + modalProps = { + title:
    请选择
    , + cancelAction: () => this.cancelAction(), + submitAction: () => { + this.handleAddPdaValue(this.selectedRowkeys.current); + this.setState({ visible: false }); + }, + }; + + setSelectedRowkeys = (v) => { + this.selectedRowkeys.current = v; + } + /**打开弹窗 */ + openModalList = () => { + this.setState({ visible: true }); + } + + handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => { + this.cancelValue.current = cancelValue; + this.handlePdaFieldScan(fieldConfig, tbName, record, newValue); /* PDA扫码逻辑 */ + } + + clearCache = () => { + this.fieldConfig.current = null; + this.masterdataObj.current = null; + } + + /** + * 关闭弹框 + */ + cancelAction = () => { + this.setSelectedRowkeys(null); + this.cancelValue.current && this.cancelValue.current(); + this.clearCache(); + this.setState({ visible: false }); + } + + filterSlaveData = (v) => { + if (!this.fieldConfig.current) return []; + const sFieldName = this.fieldConfig.current.sName; + const dataName = this.handlePdaDataName(); + const { [dataName]: data } = this.props; + return v.filter(i => i && !data?.find(j => j && j[sFieldName] === i[sFieldName])); + } + + handlePdaDataName = () => { + if (this.props.isOutsourcedProcesses) { + return { + 0: 'slaveChildData', + 1: 'slave0Data', + 2 : 'slaveData', + }[this.state.tabPage] + } else { + return 'slaveChildData'; + } + } + + /** + * pda 扫描 + * @returns + */ + handlePdaFieldScan = async (fieldConfig, tbName, record, newValue) => { + const { + sModelsId, masterData, + } = this.props; + const dataName = this.handlePdaDataName(); + const { [dataName]: slaveDataNew } = this.props; + const code = newValue; + if (commonUtils.isEmptyObject(code) || typeof code !== 'string') { + return; + } + if (commonUtils.isEmptyObject(fieldConfig)) { + Toast.fail('未配置PDA!'); + return; + } + const sFieldName = fieldConfig.sName; + let masterdataObj = masterData; + masterdataObj = { + ...masterData, [sFieldName]: code, + }; + let sqlDropDownData; + try { + sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', fieldConfig, masterdataObj, 'pda'); + } catch (error) { + return; + } + this.handleSqlDropDownData({ sqlDropDownData, fieldConfig, masterdataObj, slaveDataNew, sFieldName }); + } + + handleSqlDropDownData = (v) => { + const { sqlDropDownData, fieldConfig, slaveDataNew, sFieldName } = v; + let { masterdataObj } = v; + if (!Array.isArray(sqlDropDownData) || commonUtils.isEmptyArr(sqlDropDownData)) { + Toast.fail('暂无数据', 1); + this.clearCache(); + return; + } + this.fieldConfig.current = fieldConfig; + this.masterdataObj.current = masterdataObj; + if(sFieldName.includes('sLocation') || sFieldName.includes('sSupply') || fieldConfig?.sControlName.includes('Self')) { + this.handleAddPdaMaster(sqlDropDownData); + return; + } + if (sqlDropDownData.length === 1) { + /* 如果条码已存在,提示 */ + const iFIndex = commonUtils.isNotEmptyArr(slaveDataNew) ? slaveDataNew.findIndex(item => commonUtils.isNotEmptyObject(item[sFieldName]) && item[sFieldName] === sqlDropDownData[0][sFieldName]) : -1; + if (iFIndex > -1) { + this.cancelValue.current && this.cancelValue.current(); + this.cancelValue.current = null; + Toast.fail('条码已存在!', 1); + this.clearCache(); + return; + } + this.setSelectedRowkeys(sqlDropDownData); + this.handleAddPdaValue(sqlDropDownData); + }else if(sqlDropDownData.length > 1) { + /* 数据赋值到主表 */ + const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : ''; + masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDropDownData[0]) }; + this.masterdataObj.current = masterdataObj; + } + if(sqlDropDownData.length > 1 ) { + this.openModalList(); + } + return; + } + + /** + * pda扫描添加数据 + * @returns + */ + handleAddPdaValue = (value) => { + const dataName = this.handlePdaDataName(); + let { [dataName]: slaveDataNew, slaveData: slaveTotalData } = this.props; + this.cancelValue.current && this.cancelValue.current(); + this.cancelValue.current = null; + if (!this.fieldConfig.current || + !this.masterdataObj.current || + !Array.isArray(value) || !value.length) { + this.clearCache(); + this.setSelectedRowkeys(null); + return + }; + let masterdataObj = this.masterdataObj.current; + const sFieldName = this.fieldConfig.current.sName; + const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : ''; + if (commonUtils.isEmptyArr(slaveDataNew)) { + slaveDataNew = []; + } + value.forEach((sqlDataRow) => { + let slaveDataObj = {}; + masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if (commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveDataObj.sParentId = masterdataObj.sId; + slaveDataObj.sSqlConditionId = commonUtils.isNotEmptyArr(slaveTotalData) ? slaveTotalData[0].sSqlConditionId : ''; + slaveDataObj.iType = commonUtils.isNull(slaveDataObj.iType, 1); + slaveDataNew.unshift(slaveDataObj); + }); + if (commonUtils.isNotEmptyObject(masterdataObj)) { + const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType; + masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType }; + } + this.clearCache(); + this.setSelectedRowkeys(null); + const masterData = this.props.handleMasterDefaultData(slaveDataNew, this.props.isOutsourcedProcesses, this.state.tabPage, masterdataObj); + this.props.onSaveState({ [dataName]: slaveDataNew, masterData }); + } + + /* PDA扫码库位只将数据赋值到主表,不新增从表 */ + handleAddPdaMaster = (value) => { + let masterdataObj = this.masterdataObj.current; + const sFieldName = this.fieldConfig.current.sName; + const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : ''; + value.forEach((sqlDataRow) => { + masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; + }); + if (commonUtils.isNotEmptyObject(masterdataObj) ) { + const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType; + if(sFieldName.includes('sLocation') || this.fieldConfig.current?.sControlName.includes('Self')) { + masterdataObj = { ...masterdataObj, handleType }; + } else { + masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType }; + } + } + this.clearCache(); + this.setSelectedRowkeys(null); + if (sFieldName?.endsWith('_cancel')) { + this.cancelValue.current && this.cancelValue.current(); + } + this.props.onSaveState({ masterData: masterdataObj }); + } + + handleGetWxCode = async (successHandler) => { + let scanResult = ''; + const { app } = this.props; + // eslint-disable-next-line prefer-destructuring,no-unused-vars + const userinfo = app.userinfo; + const myUrl = location.href; + const configUrl = `${commonConfig.server_host}wechat/getWxToken`; + const values = { + url: myUrl, + sBrandsId: userinfo.sBrandsId, + sSubsidiaryId: userinfo.sSubsidiaryId, + }; + // const values = { + // url: myUrl, + // sBrandsId: '1111111111', + // sSubsidiaryId: '1111111111', + // }; + const configReturn = (await commonServices.postValueService(null, values, configUrl)).data; + console.log('configReturn::', configReturn, values); + if (configReturn.code === 1) { + const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows)) { + const appId = rows[0].appId.toString(); + const nonceStr = rows[0].nonceStr.toString(); + const signature = rows[0].signature.toString(); + const timestamp = rows[0].timestamp.toString(); + weixin.config({ + beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId, // 必填,公众号的唯一标识 + timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %> + nonceStr, // 必填,生成签名的随机串 + signature, // 必填,签名 + jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫 + }); + weixin.ready(() => { + weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口 + jsApiList: ['scanQRCode'], + success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} + console.log(res); + if (res.checkResult.scanQRCode !== true) { + Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`); + } + }, + // eslint-disable-next-line no-unused-vars + fail(res) { // 检测getNetworkType该功能失败时处理 + Toast.fail('checkJsApi error'); + }, + + + }); // wx.ready结束 + weixin.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 + success(res) { + // console.log("调用扫描成功",res); + scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 + if (commonUtils.isNotEmptyObject(scanResult)) { + const codeResult = scanResult.split(','); + if (codeResult.length > 1) { + scanResult = codeResult[1]; + } + } + successHandler(scanResult); + // console.log('微信扫码结果:', scanResult); + }, + error(res) { + // console.log(res); + if (res.errMsg.indexOf('function_not_exist') > 0) { + Toast.fail('版本过低请升级'); + } + }, + }); + }); + } else { + Toast.fail(configReturn.msg); + } + } else { + Toast.fail(configReturn.msg); + } + return scanResult; + } + + handleWxScan = async () => { + this.handleGetWxCode((code) => { + if (!commonUtils.isEmpty(code)) { + this.handleWxBusiness(code); + } + }); + } + + handleWxBusiness = async (code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.unshift(slaveDataObj); + } + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + } + + /* 页签切换 */ + // eslint-disable-next-line no-unused-vars + handleTabClick1 =(index, tab) => { + const { slaveChildData:slaveData, slaveSumConfig, masterData, sModelsType } = this.props; + let { slaveSumData }= this.props; + + /* 盘点走单独的逻辑体 */ + console.log('slaveSumData', slaveSumData); + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + if(commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(slaveSumData)) { + const groupedData = commonUtils.groupBy(slaveData, item => item.sMaterialsId + '-' + commonUtils.isNull(item.sMaterialsStyle, '') + commonUtils.isNull(item.sDefineNo, '') + '-' + + commonUtils.isNull(item.sLocationId, '') + commonUtils.isNull(item.sWareHouseId, '')); + console.log('分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + if (commonUtils.isNotEmptyArr(eachData)) { + console.log('eachData:', eachData); + let dAuxiliarySumQty = 0; /* 采购数量 */ + let dMaterialsSumQty = 0; /* 采购计价数量 */ + eachData.forEach((item) => { + /* 采购 */ + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + }); + + /* 从汇总表数据集中 找到相同批次规格的汇总表 然后更新数据 */ + const eachRow = eachData[0]; + const iIndex = slaveSumData.findIndex(obj => obj.sMaterialsId ===eachRow.sMaterialsId && obj.sMaterialsStyle ===eachRow.sMaterialsStyle && + obj.sDefineNo === eachRow.sDefineNo && obj.sLocationId === eachRow.sLocationId && obj.sWareHouseId === eachRow.sWareHouseId); + console.log('iIndex:', iIndex); + if(iIndex > -1) { + const sumRow = slaveSumData[iIndex]; + const addState = {}; + const minus = dAuxiliarySumQty - commonUtils.isNull(sumRow.dOriginalAuxiliaryQty, 0); + addState.dProfitLossAuxiliaryQty = commonUtils.convertFixNum(minus, 2); /* 盘盈数 */ + addState.dAuxiliaryQty = dAuxiliarySumQty; /* 数量 */ + addState.handleType = commonUtils.isEmpty(sumRow.handleType) ? 'update' : sumRow.handleType; + console.log('盘盈数字:', minus); + slaveSumData[iIndex] = { ...slaveSumData[iIndex], ...addState}; + } + + } + } + } + } + + + }else { + + /* 汇总明细 */ + + console.log('sModelsType:', sModelsType); + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveSumData = []; + let slaveSumRow = {}; + let dProductTotalQty = 0; /* 总到货数 */ + let dMaterialsTotalQty = 0; /* 总计价数 */ + slaveData.forEach((slaveItem, index) => { + if (index === 0) { + slaveSumRow = JSON.parse(JSON.stringify(slaveItem)); + } + if (sModelsType && sModelsType.includes('purchase/')) { + dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dAuxiliaryQty, 0)); + dMaterialsTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dMaterialsQty, 0)); + } else { + dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dProductQty, 0)); + } + }); + /* 根据sSqlConditionId汇总 */ + if (sModelsType && sModelsType.includes('purchase/')) { + const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId); + console.log('分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + if (commonUtils.isNotEmptyArr(eachData)) { + console.log('eachData:', eachData); + let dAuxiliarySumQty = 0; /* 采购数量 */ + let dMaterialsSumQty = 0; /* 采购计价数量 */ + let dEscrowAuxiliarySumQty = 0; /* 代管数量 */ + let dEscrowSumQty = 0; /* 代管计价数 */ + let dGiveAuxiliarySumQty = 0; /* 赠送数 */ + let dGiveSumQty = 0; /* 赠送计价数 */ + eachData.forEach((item) => { + /* 采购 */ + console.log('类型:', item.iType); + if ((commonUtils.isNull(item.iType), 0) === 0) { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + + if (item.iType === 1) { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + /* 代管 */ + else if (item.iType === 2) { + dEscrowAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dEscrowSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + + /* 赠送 */ + else if (item.iType === 3) { + dGiveAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dGiveSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + }); + const newSum = JSON.parse(JSON.stringify(eachData[0])); + + newSum.dAuxiliaryQty = dAuxiliarySumQty; + newSum.dMaterialsQty = dMaterialsSumQty; + + newSum.dEscrowAuxiliaryQty = dEscrowAuxiliarySumQty; + newSum.dEscrowQty = dEscrowSumQty; + + newSum.dGiveAuxiliaryQty = dGiveAuxiliarySumQty; + newSum.dGiveQty = dGiveSumQty; + + newSum.dPurchaseArrivalQty = dProductTotalQty; /* 到货总数 */ + newSum.dPurchaseQty = dMaterialsTotalQty; /* 总计价数量 */ + newSum.dSrcQty = masterData.dSrcAuxiliaryQty; /* 源单数量 */ + + slaveSumRow.handleType = 'add'; + slaveSumData.push(newSum); + + + } + } + } + } else { + const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId); + console.log('产品分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + let dProductSumQty = 0; /* 产品数量 */ + if (commonUtils.isNotEmptyArr(eachData)) { + eachData.forEach((item) => { + dProductSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dProductQty, 0), 2); + }); + const newSum = JSON.parse(JSON.stringify(eachData[0])); + newSum.dProductQty = dProductSumQty; + slaveSumRow.handleType = 'add'; + slaveSumData.push(newSum); + } + + } + } + // slaveSumRow.sProductName = commonUtils.isNotEmptyObject(masterData) ? masterData.sProductName : ''; + // slaveSumRow.dProductQty = dProductTotalQty; + // slaveSumRow.handleType = 'add'; + // slaveSumData.push(slaveSumRow); + } + + } + } + console.log('汇总表数据', slaveSumData); + console.log('主表数据', masterData); + this.setState({ tabPage: index }); + this.props.onSaveState({ slaveData:slaveSumData }) + + } + + handleTabClick = async (index, tab) => { + const { slaveChildData } = this.props; + const tableDataRow = commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData[0]: {}; + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow, + } + await this.handleWriteBack(params); + + const extraInfo = {}; + const config = this.handleMasterShowInfoConfig(index); + extraInfo.baseMasterConfig = config; + this.setState({ tabPage: index, ...extraInfo }); + } + handleWriteBack = async (params) => { + const { + sFieldName, + tableDataRow, + } = params; + const { + slaveSelectedRowKeys, + slaveData, + slaveChildConfig, + slaveChildData, + } = this.props; + if (commonUtils.isEmptyArr(slaveData) || commonUtils.isEmptyArr(slaveChildData)) { + return; + } + const sId = slaveSelectedRowKeys[0] || slaveData[0].sId; + const iSlaveIndex = slaveData.findIndex(item => item.sId === sId); + const slaveDataRow = slaveData[iSlaveIndex]; + const slaveChildFilter = slaveChildData.filter(item => item.sSqlConditionId === slaveDataRow.sSqlConditionId); + + // 需要汇总的字段 + const writeBackFields = ['dAuxiliaryQty', 'dProductQty', 'dArrivalQty', 'sBarcode', 'sDefineNo']; + + const bHasiType = slaveChildConfig.gdsconfigformslave.find(item => ['itype', 'iType'].includes(item.sName)); + + if (bHasiType && ['dAuxiliaryQty', 'itype', 'iType', 'dProductQty'].includes(sFieldName)) { + // 需要汇总到从表的字段 1:dAuxiliaryQty,2:dEscrowQty,3:dGiveAuxiliaryQty + let dAuxiliaryQty = 0; + let dEscrowAuxiliaryQty = 0; + let dGiveAuxiliaryQty = 0; + let dProductQty = 0; + slaveChildFilter.forEach(item => { + const dataRow = item.sId === params.tableDataRow.sId ? params.tableDataRow : item; + const { itype, iType } = dataRow; + const type = itype !== undefined ? itype : iType !== undefined ? iType : 11; + console.log('s', dataRow.sId, type); + if (type === 1) { + dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 2) { + dEscrowAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 3) { + dGiveAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 10) { + dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2); + } else if (type === 11) { + dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 12) { + dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2); + } + }); + + const iIndex = slaveData.findIndex(item => item.sId === sId); + let tableDataRow = {}; + tableDataRow = await this.props.onDataChange('slave', 'dEscrowAuxiliaryQty', { dEscrowAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + window.tmpSlaveData = slaveData; + tableDataRow = await this.props.onDataChange('slave', 'dGiveAuxiliaryQty', { dGiveAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + window.tmpSlaveData = slaveData; + tableDataRow = await this.props.onDataChange('slave', 'dAuxiliaryQty', { dAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + if (slaveChildFilter.some(item => item.itype === 11 || item.iType === 11 || item.itype === 12 || item.iType === 12)) { + window.tmpSlaveData = slaveData; + tableDataRow = await this.props.onDataChange('slave', 'dProductQty', { dProductQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + } + window.tmpSlaveData = null; + this.props.onSaveState({ slaveData }); + } else if (bHasiType && writeBackFields.includes(sFieldName)) { + let dQty = 0; + slaveChildFilter.forEach(item => { + const dataRow = item.sId === tableDataRow.sId ? tableDataRow : item; + dQty += commonUtils.isNull(dataRow[sFieldName], 0); + }); + this.props.onDataChange('slave', sFieldName, { [sFieldName]: dQty }, sId, [], false); + } + } + + getViewValue = (showConfig, record) => { + let sValue = record === undefined ? undefined : record[showConfig.sName]; + if (showConfig.sDropDownType === 'const') { + let showDropDown = []; + if (typeof showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown)); + } + let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString()); + if (iIndex === -1 && record[showConfig.sName] === '') { + iIndex = showDropDown.findIndex(item => item.sId === ''); + } + sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName]; + } + return sValue; + }; + + /** + * masterData 增加仅展示数据 + * @returns + */ + masterShowInfo = ({tabPage}) => { + let temp; + const isSlave0 = this.props.isOutsourcedProcesses && tabPage === 1; + if (isSlave0) { + temp = 'slave0'; + } + + return { + temp, + masterShowInfoConfig: this.state.baseMasterConfig, + } + } + + /** + * masterConfig + * @param tabPage + * @returns + */ + handleMasterShowInfoConfig = (tabPage) => { + if (this.props.isOutsourcedProcesses) { + const nameSGrd = { + 0: 'slaveChild', + 1: 'slave0', + 2: 'slave', + }[tabPage]; + const gdsconfigformslave = this.props?.masterConfig?.gdsconfigformslave?.filter(i => i && (i.sControlName?.includes(nameSGrd))) || []; + return { ...this.props.masterConfig || {}, gdsconfigformslave }; + } else { + return this.props.masterConfig + } + } + + /** + * tab展示内容 + * @returns + */ + tabShowInfo = (params) => { + const { slaveChildConfig, slave0Config, slaveConfig } = this.props; + const { ModalListProps, otherProps, TabComponentSum, temp, tabPage } = params; + let tabs = [ + { title: 明细 }, + { title: 汇总 }, + ]; + + let contentTab = <> + {tabPage === 0 ?
    : ''} + {tabPage === 1 ?
    : ''} + + + if (this.props.isOutsourcedProcesses) { + tabs = [ + { title: {slaveChildConfig?.showName || ''} }, + { title: {slave0Config?.showName || ''} }, + { title: {slaveConfig?.showName || ''} }, + ]; + contentTab = <> + {tabPage === 0 ?
    : ''} + {tabPage === 1 ?
    : ''} + {tabPage === 2 ?
    : ''} + + } + return { + tabs, + contentTab, + } + } + + render() { + const { + slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, slaveConfig:slaveSumConfig, slaveSumData: slaveSumDataOld, + sModelsType, content, dispatch, slaveChildConfig, + } = this.props; + const commonListProps = { + app, + content, + sModelsId: this.fieldConfig.current?.sActiveId || sModelsId, + sModelsType: sModelsType, + formRoute: '/indexMobile/commobileBill', + dispatch, + bNotSearch: true, + }; + const { tabPage } = this.state; + onReturnForm(this.props.form); + + + const slaveSumDataOld2 = slaveSumDataOld === undefined ? [] : slaveSumDataOld; + const slaveSumData = dataSource.cloneWithRows(slaveSumDataOld2); + + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + + + const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ + const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const rowSum = (rowData, sectionID, rowID) => { + return ( +
    + {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + })} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + /* 汇总页签 */ + const TabComponentSum = props => { + return ( +
    +
    + {commonUtils.isEmptyArr(slaveDataOld) && false ? +
    + + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    +
    + ); + } + + const conditionValue = this.fieldConfig.current && this.masterdataObj.current ? + this.props.getSqlCondition(this.fieldConfig.current, 'master', this.masterdataObj.current) : null; + /** + * pda扫描弹窗 + */ + const ModalListProps = { + ...this.modalProps, + visible: this.state.visible, + content: + } + + const { temp, masterShowInfoConfig } = this.masterShowInfo({slaveSumConfig, slaveChildConfig, tabPage}); + + const otherProps = { + handleMasterFieldScan: this.handleMasterFieldScan, + formItemLayout, + formProps: { + onSubmit: (e) => { e.preventDefault(); } + }, + masterConfig: masterShowInfoConfig, + originMasterConfig: masterConfig, //原masterConfig, 发外CommobileToolBar使用原配置 + } + + const { tabs, contentTab } = this.tabShowInfo({ModalListProps, otherProps, TabComponentSum, temp, tabPage}); + + return ( +
    + { + commonUtils.isNotEmptyObject(slaveSumConfig) && commonUtils.isNotEmptyObject(slaveChildConfig) ? + this.handleTabClick(index, tab)} + onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }} + > + {contentTab} + : +
    + } +
    + + ); + } +} + +const CommobileBillComponent = createForm()(CommobileBill); + +const TabComponentSlave = (props) => { + + const { masterConfig, masterData, slaveData: slaveDataOld, slaveConfig, sModelsId, enabled, app, sUseInfo } = props; + + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: props.form, + formId: sModelsId, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getFloatNum: props.getFloatNum, + getDateFormat: props.getDateFormat, + onChange: props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? props.formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: props.onFilterDropDownData, + onSaveState: props.onSaveState, + }; + return ( + + ); + })} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + return ( +
    +
    +
    + + +
    + {commonUtils.isEmptyArr(slaveDataOld) ? +
    + + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    + +
    +
    + +
    + ); +} + + +const TabComponentSlaveChild = (props) => { + + const { masterConfig, masterData, slaveData: slaveDataOld, slaveChildData: slaveChildDataOld, slaveChildConfig, slaveConfig, sModelsId, enabled, app, sUseInfo } = props; + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + + const slaveChildDataOld2 = slaveChildDataOld === undefined ? [] : slaveChildDataOld; + const slaveChildData = dataSource.cloneWithRows(slaveChildDataOld2); + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(slaveChildConfig) ? '' : slaveChildConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slaveChild', + form: props.form, + formId: sModelsId, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getFloatNum: props.getFloatNum, + getDateFormat: props.getDateFormat, + onChange: props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? props.formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: props.onFilterDropDownData, + onFieldScan: props.handleMasterFieldScan, + onFocus: props.onFocus, + onSaveState: props.onSaveState, + }; + return ( + + ); + })} + {slaveChildConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0]; + const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1]; + const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2]; + const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3]; + const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4]; + const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5]; + const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6]; + const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7]; + const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8]; + const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9]; + + return ( +
    + {/*
    */} + {/**/} + {/* {*/} + {/* f1 ? {f1.showName} : {_this.getViewValue(f1, masterData)} : ''*/} + {/* }*/} + {/* {*/} + {/* f2 ? {f2.showName} : {_this.getViewValue(f2, masterData)} : ''*/} + {/* }*/} + {/**/} + {/**/} + {/* {*/} + {/* f3 ? {f3.showName} : {_this.getViewValue(f3, masterData)} : ''*/} + {/* }*/} + {/**/} + {/**/} + {/* {*/} + {/* f4 ? <>
    {f4.showName} :
    {_this.getViewValue(f4, masterData)} : ''*/} + {/* }*/} + {/*
    */} + {/**/} + {/* {*/} + {/* f5 ? {f5.showName} : {_this.getViewValue(f5, masterData)} : ''*/} + {/* }*/} + {/* {*/} + {/* f6 ? {f6.showName} : {_this.getViewValue(f6, masterData)} : ''*/} + {/* }*/} + {/**/} + {/**/} + {/* {*/} + {/* f7 ? {f7.showName} : {_this.getViewValue(f7, masterData)} : ''*/} + {/* }*/} + {/* {*/} + {/* f8 ? {f8.showName} : {_this.getViewValue(f8, masterData)} : ''*/} + {/* }*/} + {/**/} + {/**/} + {/* {*/} + {/* f9 ? {f9.showName} : {_this.getViewValue(f9, masterData)} : ''*/} + {/* }*/} + {/* {*/} + {/* f10 ? {f10.showName} : {_this.getViewValue(f10, masterData)} : ''*/} + {/* }*/} + {/**/} + {/*
    */} +
    +
    + + +
    + {commonUtils.isEmptyArr(slaveChildDataOld) ? +
    + + { + slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    + +
    +
    + +
    + ); +} + +const TabComponentTemp = (props) => { + + const { masterData, sModelsId, enabled, app, sUseInfo, temp } = props; + + if (!temp) return <>; + + const tempData = Array.isArray(props[`${temp}Data`]) ? props[`${temp}Data`] : []; + const tempDataRow = dataSource.cloneWithRows(tempData); + + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + props[`${temp}Config`] && props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + props[`${temp}Config`] && props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(props[`${temp}Config`]) ? '' : props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: temp, + form: props.form, + formId: sModelsId, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getFloatNum: props.getFloatNum, + getDateFormat: props.getDateFormat, + onChange: props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? props.formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: props.onFilterDropDownData, + onSaveState: props.onSaveState, + }; + return ( + + ); + })} + {props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.bVisible && item.sName.includes('spicture'))?.map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + return ( +
    +
    +
    + + +
    + {commonUtils.isEmptyArr(props[`${temp}Data`]) ? +
    + + { + props[`${temp}Config`] && props[`${temp}Config`].gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + props[`${temp}Config`] && props[`${temp}Config`].gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    + +
    +
    + +
    + ); +} + +export default CommobileBase(CommobileBillEvent(CommobileBillComponent)); + diff --git a/src/mobile/common/CommobileSubBillEvent.js b/src/mobile/common/CommobileSubBillEvent.js new file mode 100644 index 0000000..f504653 --- /dev/null +++ b/src/mobile/common/CommobileSubBillEvent.js @@ -0,0 +1,2020 @@ +/* eslint-disable */ +/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ +/** + * Created by mar105 on 2019-01-08. + */ +import React, { Component } from 'react'; +import { Toast,Modal } from 'antd-mobile'; +import * as commonUtils from '../../utils/utils'; +import * as commonFunc from '../../components/Common/commonFunc'; +import * as commonBusiness from '../../components/Common/commonBusiness'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import BarCodeUtil from './BarCodeUtil'; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = {}; + this.isOutsourcedProcesses = this.props.sModelsType?.includes('utside/outsideinstorePDA'); + } + + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, masterConfig: masterConfigOld, sModelsId, + } = nextProps; + if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const slaveConfig = formData.filter(item => item.bGrd)[0]; + /* 判断是否有汇总表 */ + const slaveSumConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )) ? formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )[0] : {}; + /* 加载子从表 */ + const filterData = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible); + let slaveChildConfig = {}; + if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 1) { + slaveChildConfig = filterData[1]; + } + const otherConfig = {}; + if (this.isOutsourcedProcesses) { + otherConfig.slave0Config = formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('slave0'))[0] || {}; + } + let addStateMaster = {}; + let userEntrustData = []; /* 委托人 */ + let addState = {}; + let addStateSum = {}; + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + config.slaveSumConfig = slaveSumConfig; + config.slaveChildConfig = slaveChildConfig; + config.slave0Config = otherConfig.slave0Config || {}; + addState = await this.handleAdd(config, nextProps.copyTo, true); + } else { + addStateMaster = await this.props.handleGetDataOne({ + name: 'master', + configData: masterConfig, + condition: { sId, pageSize: '', pageNum: '' }, + isWait: true, + }); + if (location.pathname === '/indexMobile/examine') { + const masterDataNew = addStateMaster.masterData; + const sParamsArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParams) ? JSON.parse(masterDataNew.sTableParams) : ''; + const sParamsValueArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParamsValue) ? JSON.parse(masterDataNew.sTableParamsValue) : ''; + /* 塞入配置 */ + if (commonUtils.isNotEmptyObject(sParamsArr) && commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + /* 移除最后一位元素 */ + for (const key of Object.keys(sParamsArr)) { + const newConfig = { + iOrder: 300, sId: commonUtils.createSid(), bVisible: true, sParamsArr: key, showName: sParamsArr[key], sName: key, + }; + const len = masterConfig.gdsconfigformslave.length; + masterConfig.gdsconfigformslave.splice(len - 1, 0, newConfig); + if (commonUtils.isNotEmptyArr(sParamsValueArr)) { + masterDataNew[key] = sParamsValueArr[key]; + } + } + } + /* 拉委托人员的下拉数据源 */ + const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnEntrust')); + if (iUserIndex > -1) { + userEntrustData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterDataNew); + } + } + addState = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + addStateSum = await this.props.handleGetDataSet({ + name: 'slaveSum', configData: slaveSumConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + if (commonUtils.isNotEmptyArr(addState.slaveData)) { + if (commonUtils.isNotEmptyObject(addState.slaveData[0].sReportParam)) { + addState.slaveData[0] = { ...addState.slaveData[0], ...commonUtils.convertStrToObj(addState.slaveData[0].sReportParam) }; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(addState.slaveData[0][`sParam${i.toString()}`])) { + slaveConfig.gdsconfigformslave[iIndex].showName = addState.slaveData[0][`sParam${i.toString()}`]; + slaveConfig.gdsconfigformslave[iIndex].bVisible = !addState.slaveData[0][`sParam${i.toString()}`].includes('参数值'); + } else if (iIndex > -1) { + slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } else { + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } + } + } + this.props.onSaveState({ + masterConfig, slaveConfig, sId, pageLoading: false, ...addState, ...addStateMaster, userEntrustData, slaveSumConfig, ...addStateSum, slaveChildConfig, + ...otherConfig, + }); + } + } + + shouldComponentUpdate(nextProps) { + const { masterConfig } = nextProps; + return commonUtils.isNotEmptyObject(masterConfig); + } + + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait) => { + /* 外置处理业务 */ + const { + sModelsId, token, sModelsType, formRoute, peopleInfosId, peopleInfoData, app, + } = this.props; + let masterConfig = commonUtils.isEmptyObject(config) ? {} : config.masterConfig; + if (!isWait) { + masterConfig = this.props.masterConfig; + } + let configNew = {}; + if (commonUtils.isEmptyObject(config)) { + const { slaveConfig } = this.props; + configNew.slaveConfig = slaveConfig; + } else { + configNew = config; + } + let masterData; + if (commonUtils.isNotEmptyObject(masterConfig)) { + masterData = commonFunc.getDefaultData(masterConfig); + } + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + if (formRoute === '/contactsInfo') { + if (commonUtils.isNotEmptyArr(peopleInfoData) && peopleInfosId !== '') { + const peopleInfo = peopleInfoData.filter(item => item.sId === peopleInfosId); + masterData = { ...masterData, ...peopleInfo[0] }; + } + } + let slaveData = []; + const slaveSumData = []; + let slaveChildData = []; + const employeeData = []; + let slave0Data = []; // 外发发货登记 + + // const slaveTotal = []; + // const tableDataTotal = {}; + let slaveAssignField = ''; + let slaveChildAssignField = ''; + console.log('copyTo', copyTo); + if (commonUtils.isNotEmptyObject(copyTo)) { + const copyToMasterConfig = copyTo.config.filter(item => item.sControlName === copyTo.name); + const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : ''; + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, copyTo.masterData, newCopyTo) }; + + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + if (sModelsType === 'production/productionReport') { + copyTo.slaveData = commonUtils.isEmptyArr(copyTo.slaveData) ? [] : [copyTo.slaveData[0]]; + } + if (slaveAssignField !== '') { + for (const slaveItem of copyTo.slaveData) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = slaveItem; + const newSid = commonUtils.createSid(); + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveRow.sSqlConditionId = slaveRow.sId; + + if (sModelsType === 'production/productionReport') { + if (!commonUtils.isEmpty(slaveRow.sWageId)) { + slaveRow.dWageMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sWageId, + }); + } + if (!commonUtils.isEmpty(slaveRow.sConversionFormulaId)) { + slaveRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sConversionFormulaId, + }); + } + if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) { + slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) }; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(slaveRow[`sParam${i.toString()}`])) { + configNew.slaveConfig.gdsconfigformslave[iIndex].showName = slaveRow[`sParam${i.toString()}`]; + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = !slaveRow[`sParam${i.toString()}`].includes('参数值'); + } else if (iIndex > -1) { + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } else { + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } + const sMachineId = app.sMachineId; + if (sMachineId) { + const sSessionTeamId = localStorage.getItem(`${commonConfig.prefix}mobile_${sMachineId}`); + if (sSessionTeamId) { + slaveRow.sTeamId = sSessionTeamId; + } + } + let returnData = JSON.parse(localStorage.getItem(`${commonConfig.prefix}employeeData`)); + if (!commonUtils.isEmpty(slaveRow.sTeamId)) { + if (commonUtils.isEmptyArr(returnData)) { + const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${slaveRow.sTeamId}&sSlaveId=${slaveRow.sId}&sParentId=${slaveRow.sParentId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + returnData = dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + returnData.forEach((child) => { + employeeData.push({ + sId: commonUtils.createSid(), + sParentId: masterData.sId, + sSlaveId: slaveRow.sId, + sEmployeeId: child.sEmployeeId, + sEmployeeName: child.sEmployeeName, + dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6), + handleType: 'add', + }); + }); + /* 班组变化时,算每个工作人员计件工资 */ + const dWageMoneyTotal = slaveRow.dWageMoney; + if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) { + let dProportionTotal = 0; + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + item.dProportion = parseFloat(item.dProportion); + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6); + } + }); + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { + ...item, + dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), + handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType, + }; + } + }); + } + + + const dWageMoney = commonUtils.isNotEmptyNumber(slaveRow.dWageMoney) ? commonUtils.convertFixNum(slaveRow.dWageMoney, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(slaveRow.dTimeMoney) ? commonUtils.convertFixNum(slaveRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(slaveRow.dLossMoney) ? commonUtils.convertFixNum(slaveRow.dLossMoney, 6) : 0; + slaveRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + } + } + slaveData.push(slaveRow); + } + } + + const copyToSlaveChildConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slaveChild`.toLowerCase()); + slaveChildAssignField = commonUtils.isNotEmptyArr(copyToSlaveChildConfig) ? copyToSlaveChildConfig[0].sAssignField : ''; + + if (slaveChildAssignField !== '' && commonUtils.isNotEmptyArr(copyTo.slaveChildData)) { + for (const slaveChildItem of copyTo.slaveChildData) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slaveChild = slaveChildItem; + + let slaveChildRow = commonFunc.getDefaultData(config.slaveChildConfig, newCopyTo); // 取默认值 + slaveChildRow = {...slaveChildRow, ...commonFunc.getAssignFieldValue(slaveChildAssignField, slaveChildItem, newCopyTo)}; // 取赋值字段 + slaveChildRow.handleType = 'add'; + slaveChildRow.sId = commonUtils.createSid(); + slaveChildRow.sParentId = masterData.sId; + slaveChildRow.sSqlConditionId = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0].sId :''; + slaveChildData.push(slaveChildRow); + } + masterData = this.props.handleMasterDefaultData(slaveChildData, this.isOutsourcedProcesses, 0, masterData, config); + } + + /** + * 外发工序处理 + */ + if (this.isOutsourcedProcesses) { + let slave0AssignField = ''; + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + if (slave0AssignField !== '' && commonUtils.isNotEmptyArr(copyTo.slave0Data)) { + for (const slave0Item of copyTo.slave0Data) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave0 = slave0Item; + + let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo); // 取默认值 + slave0Row = {...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo)}; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + } + masterData = this.props.handleMasterDefaultData(slave0Data, this.isOutsourcedProcesses, 1, masterData, config); + } + } + + if (!commonUtils.isEmpty(masterData.sTestStandardId)) { + const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${masterData.sTestStandardId}`; + const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data; + const slaveDelData = []; + if (dataReturn.code === 1) { + const returnSlaveData = dataReturn.dataset.rows; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + slaveData = []; + const newCopyTo = {}; + newCopyTo.master = masterData; + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName'); + const slaveConfig = commonUtils.isEmptyObject(config) ? {} : config.slaveConfig; + if (!isWait) { + masterConfig = this.props.slaveConfig; + } + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + // tableDataRow.sTestReference = '15S|20S'; + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { /* 若数据有值 渲染下拉框 */ + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } else { /* 若数据没有值 则渲染文本框 */ + tableDataRow.isText = true; + } + } + slaveData.push(tableDataRow); + }); + } + } + } + + const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('sTeamMachine')); + if (iUserIndex > -1) { + const sTeamMachineData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterData); + if(commonUtils.isNotEmptyArr(sTeamMachineData)) { + masterData.sTeamId = sTeamMachineData[0].sTeamId; + masterData.sTeamName = sTeamMachineData[0].sTeamName; + masterData.sMachineId = sTeamMachineData[0].sMachineId; + masterData.sMachineName = sTeamMachineData[0].sMachineName; + } + } + + /* 剔除订单到收款单新增空行(2022.7.8朱总要求)) */ + if (slaveData.length === 0 && commonUtils.isNotEmptyObject(slaveAssignField)) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + let tableDataRowAdd = {}; + if (commonUtils.isNotEmptyObject(configNew.slaveConfig)) { + tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + slaveData.push(tableDataRowAdd); + } + } + if (!commonUtils.isNotEmptyObject(config.slaveChildConfig)) { + if (Array.isArray(slaveData)) { + masterData = this.props.handleMasterDefaultData(slaveData, this.isOutsourcedProcesses, undefined, masterData, config); + } + } + + const state = { + masterData, + slaveData, + slave0Data, // 外发工序 + slaveSumData:slaveData, + slaveChildData, + employeeData, + slaveTotal: [], + slaveSelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + + baseSuccessFn = async() => { + const { + currentId, masterData, billnosetting, app, sModelsType, copyTo, dispatch, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + Toast.hide(); + + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData } = copyTo; + const sIdArray = []; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); + this.props.onSaveState({ + enabled: false, currentId: masterData.sId, + }); + + let bSucess = true; + if (billnosetting.bAutoCheck && bSucess) { + Toast.loading('正在审核单据,如果长期未响应,请到EBC中操作 ...', 5); + await this.handleAudit(1); + } else { + /* 通过onRouterMobile路由跳转 */ + if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) { + const sModelsId = copyTo.listModelsId; + const sModelsType = copyTo.listModelsType; + const url = '/indexMobile/commobileList'; + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId, + sModelsType, + copyTo, + listFilterCondition: copyTo.listFilterCondition, + }, + }); + } else { + window.history.back(-1); + } + } + this.props.onSaveState({ + loading: false, + }); + } + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, sModelsId, app, + } = this.props; + const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */ + params.optName = BtnSave; + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId, baseSuccessFn: this.baseSuccessFn }); + if (commonUtils.isNotEmptyObject(returnData)) { + if (returnData.code !== 2) { + await this.baseSuccessFn(); + } + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + + /** toolbar校验保存 */ + handleValidateSave = async () => { + const { + masterConfig, masterData, slaveConfig, slaveDelData, sModelsType, employeeConfig, employeeData, employeeDelData, token, sModelsId, app, + slaveSumConfig, slaveSumData, slaveSumDelData, slaveChildConfig, slaveChildData, slaveChildDelData, slave0Config, slave0Data, + } = this.props; + let { slaveData } = this.props; + if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if(commonUtils.isNotEmptyObject(slave0Config)) { + if (!commonBusiness.validateTable(slave0Config, slave0Data, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + if (!commonBusiness.validateTable(slaveChildConfig, slaveChildData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (slaveConfig && slaveConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveData)) { + Toast.info(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow: commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData[0] : {}, + } + // 汇总到从表方法 + const slaveNewData = await this.handleWriteBack(params, true); + if(commonUtils.isNotEmptyArr(slaveNewData)) { + slaveData = await this.handleWriteBack(params, true); + console.log('汇总从表:', slaveData); + } + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + + if (sModelsType === 'production/productionReport') { + for (const tableDataRow of slaveData) { + const sWageId = tableDataRow.sWageId; + tableDataRow.dWageMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sWageId, + }); + const dWageMoneyTotal = tableDataRow.dWageMoney; + let dProportionTotal = 0; + const employeeSlaveData = employeeData.filter(item => item.sSlaveId === tableDataRow.sId); + employeeSlaveData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + } + }); + employeeSlaveData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { + ...item, + dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dWageMoney, 0), 6), + dTimeMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dTimeMoney, 0), 6), + dLossMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dLossMoney, 0), 6), + dOtherMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dOtherMoney, 0), 6), + dJobMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dJobMoney, 0), 6), + handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType, + }; + } + }); + /* 选择计件方案后 算总金额 */ + const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0; + tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + } + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + data.push(commonBusiness.mergeData('slaveChild', slaveChildConfig.sTbName, slaveChildData, slaveChildDelData)); + } + // 外发工序 + if(commonUtils.isNotEmptyObject(this.props.slave0Config) && this.isOutsourcedProcesses) { + data.push(commonBusiness.mergeData('slave0', this.props.slave0Config.sTbName, this.props.slave0Data, this.props.slave0DelData)); + } + + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + data.push(commonBusiness.mergeData('employee', employeeConfig.sTbName, employeeData, employeeDelData)); + localStorage.setItem(`${commonConfig.prefix}sTeamId`, slaveData[0].sTeamId); + localStorage.setItem(`${commonConfig.prefix}employeeData`, JSON.stringify(employeeData)); + /* 手机端报产选了机台后,进去报产,选了班组,确认之后,在返回去报第二个的时候,默认班组 */ + if (commonUtils.isNotEmptyObject(slaveData[0])) { + const sMachineId = slaveData[0].sMachineId; + const sTeamId = slaveData[0].sTeamId; + if (sMachineId && sTeamId) { + localStorage.setItem(`${commonConfig.prefix}mobile_${sMachineId}`, sTeamId); + } + } + } + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + data.push(commonBusiness.mergeData('slaveSum', slaveSumConfig.sTbName, slaveSumData, slaveSumDelData)); + } + console.log('data', data); + Toast.loading('正在保存数据,请稍后 ...', 0); + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }).finally(() => { + Toast.hide(); + }); + }; + + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { masterData, gdsformconst } = this.props; + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + Toast.info(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName); + return ''; + } + /** 数据审核 */ + await this.dataAudit(flag); + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, token, sModelsType, slaveData, employeeConfig, copyTo, dispatch, slave0Config, + slaveChildConfig, + } = this.props; + const sSlaveIdArray = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + sSlaveIdArray.push(commonUtils.isNotEmptyObject(item.sId) ? item.sId : item.sSlaveId); + }); + } + const slaveId = sSlaveIdArray.toString(); + /* 数据参数 */ + const value = { + sClientType: '1', + paramsMap: { + iFlag: flag, + iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck, + sFormGuid: sModelsId, + sGuid: masterData.sId, + sSlaveId: slaveId, + sBillNo: commonUtils.isNotEmptyObject(masterData.sBillNo) ? masterData.sBillNo : '', + }, + }; + /* 数据审核 */ + const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (isWait) { + return returnData; + } else { + /* 接收返回值 */ + await this.handleGetData(masterConfig, slaveConfig); + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + await this.handleGetMemoData(employeeConfig); + } + if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) { + await this.handleGetMemoData(slave0Config); + } + if(commonUtils.isNotEmptyObject(slaveChildConfig) ) { + await this.handleGetMemoData(slave0Config); + } + if (this.props.refresh !== undefined) { + this.props.refresh(); + } + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + const sReturnArray = outData[0].sReturn.split('|'); + if (outData[0].sReturn.split('-').length < 2) { + // 正常业务提示,非审核模板 + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + Toast.fail(check + outData[0].sReturn); + return; + } + const checkConditions = []; + let checkPersonData = {}; + sReturnArray.forEach((item) => { + const checkCondition = item.split('-')[2]; + checkConditions.push({ + key: commonUtils.createSid(), + condition: checkCondition, + }); + }); + const sCheckModelId = sReturnArray[0].split('-')[1]; + if (commonUtils.isNotEmptyStr(sCheckModelId)) { + const urlCheck = `${commonConfig.server_host}checkModel/getUserListByModelId/${sCheckModelId}?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.getService(token, urlCheck)).data; + if (dataReturn.code === 1) { + checkPersonData = dataReturn.dataset.rows; + checkPersonData.forEach((item) => { + item.key = commonUtils.createSid(); + }); + this.props.onSaveState({ + checkConditions, checkPersonData, sCheckModelId, visible: true, + }); + } else { /* 失败 */ + this.props.getServiceError({ msg: check + dataReturn }); + } + } + } else { + Toast.success(check + returnData.msg); + if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) { + const sModelsId = copyTo.listModelsId; + const sModelsType = copyTo.listModelsType; + const url = '/indexMobile/commobileList'; + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId, + sModelsType, + copyTo, + returnFilterCondition: copyTo.listFilterCondition, + }, + }); + } else { + window.history.back(-1); + } + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + Toast.fail(outData[0].sReturn); + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + Toast.success(BtnCancelExamine + returnData.msg); + window.history.back(-1); + } + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + } + return true; + } + }; + handleGetMsg = (str) => { + const msgArr = commonUtils.isNotEmptyObject(str) ? str.split('xpm'): ''; + const divStr = []; + if(commonUtils.isNotEmptyArr(msgArr)) { + for (let i = 0; i < msgArr.length; i ++) { + divStr.push(

    {msgArr[i]}

    ); + } + } + return divStr; + } + /* 调用后台配置的接口 */ + handleThirdInterfaceCall = async (obj, showTip, key, sListSlaveId) => { + let bResult = false; + const { + app, sModelsId, masterData, slaveSelectedRowKeys, + } = this.props; + const sInterfaceName = obj.sInterfaceName; + const value = { sId: commonUtils.isNotEmptyObject(sListSlaveId) ? sListSlaveId : masterData.sId, userInfo: app.userinfo }; + const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url, app)).data; + if (returnData.code === 1) { + bResult = true; + } else if (returnData.code === -8) { + Modal.info({ + title: '温馨提示:', + width: 200, + content: ( +
    + {this.handleGetMsg(returnData.msg)} +
    + ), + okText: '确认', + onOk() {}, + }); + bResult = true; + } else { + bResult = false; + this.props.getServiceError(returnData); + } + return bResult; + } + + handleWriteBack = async (params, isWait) => { + const { + sFieldName, + tableDataRow, + } = params; + const { + slaveSelectedRowKeys, + slaveData, + slaveChildConfig, + slaveChildData, + } = this.props; + if (commonUtils.isEmptyArr(slaveData) || commonUtils.isEmptyArr(slaveChildData)) { + return; + } + const sId = slaveSelectedRowKeys[0] || slaveData[0].sId; + const iSlaveIndex = slaveData.findIndex(item => item.sId === sId); + const slaveDataRow = slaveData[iSlaveIndex]; + const slaveChildFilter = slaveChildData.filter(item => item.sSqlConditionId === slaveDataRow.sSqlConditionId); + + // 需要汇总的字段 + const writeBackFields = ['dAuxiliaryQty', 'dProductQty', 'dArrivalQty', 'sBarcode', 'sDefineNo']; + + const bHasiType = slaveChildConfig.gdsconfigformslave.find(item => ['itype', 'iType'].includes(item.sName)); + + if (bHasiType && ['dAuxiliaryQty', 'itype', 'iType', 'dProductQty'].includes(sFieldName)) { + // 需要汇总到从表的字段 1:dAuxiliaryQty,2:dEscrowQty,3:dGiveAuxiliaryQty + let dAuxiliaryQty = 0; + let dEscrowAuxiliaryQty = 0; + let dGiveAuxiliaryQty = 0; + let dProductQty = 0; + slaveChildFilter.forEach(item => { + const dataRow = item.sId === params.tableDataRow.sId ? params.tableDataRow : item; + const { itype, iType } = dataRow; + const type = itype !== undefined ? itype : iType !== undefined ? iType : 11; + console.log('s', dataRow.sId, type); + if (type === 1) { + dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 2) { + dEscrowAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 3) { + dGiveAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 10) { + dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2); + } else if (type === 11) { + dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2); + } else if (type === 12) { + dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2); + } + }); + + const iIndex = slaveData.findIndex(item => item.sId === sId); + let tableDataRow = {}; + tableDataRow = await this.handleTableChange('slave', 'dEscrowAuxiliaryQty', { dEscrowAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + window.tmpSlaveData = slaveData; + tableDataRow = await this.handleTableChange('slave', 'dGiveAuxiliaryQty', { dGiveAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + window.tmpSlaveData = slaveData; + tableDataRow = await this.handleTableChange('slave', 'dAuxiliaryQty', { dAuxiliaryQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + if (slaveChildFilter.some(item => item.itype === 11 || item.iType === 11 || item.itype === 12 || item.iType === 12)) { + window.tmpSlaveData = slaveData; + tableDataRow = await this.handleTableChange('slave', 'dProductQty', { dProductQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + } + window.tmpSlaveData = null; + console.log('切换从表:', slaveData); + if(isWait) { + return slaveData; + } else { + this.props.onSaveState({ slaveData }); + } + } else if (bHasiType && writeBackFields.includes(sFieldName)) { + let dQty = 0; + slaveChildFilter.forEach(item => { + const dataRow = item.sId === tableDataRow.sId ? tableDataRow : item; + dQty += commonUtils.isNull(dataRow[sFieldName], 0); + }); + this.props.onDataChange('slave', sFieldName, { [sFieldName]: dQty }, sId, [], false); + } + } + + handleForm = (form) => { + this.form = form; + }; + /** 点击修改按钮操作 */ + handleEdit = () => { + const { + slaveConfig, masterConfig, app, dispatch, currentId, slaveChildConfig, slave0Config, + } = this.props; + const { userinfo } = app; + + let timValue = 0; + if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) { + this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } }); + timValue = 3000; + } + setTimeout(() => { + this.props.app.webSocket.onmessage = (msg) => { + const rtmsg = JSON.parse(msg.data); + if (rtmsg.action === 'showMsg') { + Toast.info(rtmsg.msg); + this.props.onSaveState({ loading: false }); + } else if (rtmsg.action === 'loginOut') { + if (location.pathname.indexOf('/indexOee') > -1) { + dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } }); + } else if (location.pathname.indexOf('/indexMobile') > -1) { + dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } }); + } else { + dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } }); + } + } else if (rtmsg.action === 'update') { + this.handleGetData(masterConfig, slaveConfig); + if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) { + this.handleGetMemoData(slave0Config); + } + if(commonUtils.isNotEmptyObject(slaveChildConfig) ) { + this.handleGetMemoData(slaveChildConfig); + } + // + this.props.onSaveState({ enabled: true, loading: false }); + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null); + }, timValue); + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig) => { + const { currentId, masterData } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : masterData?.sId; + await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' } }); + if (!commonUtils.isEmptyObject(slaveConfig) && slaveConfig.sSqlStr !== "noQuery") { + this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + + handleGetMemoData = async (tableConfig,sTableName) => { + const { currentId,masterData } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : masterData?.sId; + this.props.handleGetDataSet({ + name: sTableName, configData: tableConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + }; + + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + // this.handleCustomerChange(name, changeValue); + const { + sModelsId, sModelsType: sModelsTypeOld, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token, + } = this.props; + const addState = {}; + const sModelsType = commonUtils.isEmpty(sModelsTypeOld) ? '' : sModelsTypeOld; + const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; + let bNewSlaveData = false; + if (sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName') { + if (commonUtils.isNotEmptyArr(slaveData)) { + // 从表有数据,请删除后修改客户!不能去掉 + if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { + bNewSlaveData = true; + } else { + Toast.info(commonFunc.showMessage(app.commonConst, 'slaveHasDataPleaseDel')); + return; + } + } + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []); + // + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } else if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') { + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsId', []); + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsName', []); + if (sModelsType === 'materialsStock/materialsCheck' || sModelsType === 'productStock/productCheck') { + let value = {}; + if (sModelsType === 'materialsStock/materialsCheck') { + value = { + sProName: 'Sp_System_AccountSquareCheck', + paramsMap: { + iType2: 1, + sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '', + }, + }; + } else if (sModelsType === 'productStock/productCheck') { + value = { + sProName: 'Sp_System_AccountSquareCheck', + paramsMap: { + iType2: 2, + sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '', + }, + }; + } + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const outData = returnData.dataset.rows[0].dataSet.outData[0]; + if (outData.sCode === -1) { + Toast.fail(outData.sReturn); + return; + } + } else { + this.props.getServiceError(returnData); + return; + } + } + } else if (sModelsType.includes('cashier/') && sFieldName === 'sBillType') { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerName', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyName', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyName', []); + changeValue.sCustomerId = ''; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerId'); + if (iIndex > -1) { + masterConfig.gdsconfigformslave[iIndex].bReGetDropDown = true; + } + changeValue.sSupplyId = ''; + const iSupplyIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sSupplyId'); + if (iSupplyIndex > -1) { + masterConfig.gdsconfigformslave[iSupplyIndex].bReGetDropDown = true; + } + /* 财务调整中切换调整类型后,对象名称清空 */ + const sBillTypeIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sFamilyName'); + if (sBillTypeIndex > -1) { + masterData.sFamilyName = ''; + } + this.props.onSaveState({ masterConfig }); + } else if (sFieldName === 'sGetPayId') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'sSettlementId') { + if (changeValue.sSettlementId === 'cash') { + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; + masterData.sBankAccount = ''; + } + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; + masterData.sInvoiceNo = ''; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 1; + masterData.sBankId = ''; + masterData.sBankName = ''; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; + delete masterData.tDueDate; + } + } + if (changeValue.sSettlementId === 'bank') { + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; + masterData.sInvoiceNo = ''; + } + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 0; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; + delete masterData.tDueDate; + } + } + if (changeValue.sSettlementId === 'bill') { + const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount'); + if (sBankAccountIndex > -1) { + masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; + masterData.sBankAccount = ''; + } + const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo'); + if (sInvoiceNoIndex > -1) { + masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 0; + } + const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId'); + if (sBankIdIndex > -1) { + masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; + } + const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate'); + if (tDueDateIndex > -1) { + masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 0; + } + } + } + let returnData = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterData); + const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true); + if (commonUtils.isNotEmptyObject(masterDataAfter)) { + returnData.masterData = masterDataAfter; + } + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName' || sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName' || sFieldName === 'tDeliverDate') { + const slaveDataNew = []; + for (const item of slaveData) { + let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (sModelsType.includes('materialsStock/productionmaterialsadjust'))) ? + { ...item } : { ...item, [sFieldName]: changeValue[sFieldName] }; + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + tableDataRow.sTaxId = changeValue.sTaxId; + tableDataRow.sTaxNo = changeValue.sTaxNo; + tableDataRow.sTaxName = changeValue.sTaxName; + tableDataRow.dTaxRate = changeValue.dTaxRate; + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', masterData, tableDataRow); + let dMaterialsMoney = ''; + if (sModelsType.includes('outside/')) { /* 工序发外 */ + let sComputeId = ''; + const sSupplyId = changeValue.sSupplyId; + const sProcessId = tableDataRow.sProcessId; + /* 根据客户id,工序id获取公式ID */ + if (commonUtils.isNotEmptyObject(sSupplyId) && commonUtils.isNotEmptyObject(sProcessId)) { + sComputeId = await commonBusiness.getOutSideProcessFormula({ + token, sModelsId, sSupplyId, sProcessId, + }); + if (commonUtils.isNotEmptyObject(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + } + } + } + if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' || + sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' || + sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) { + if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') { + tableDataRow.sWareHouseId = changeValue.sWareHouseId; + tableDataRow.sWarehouseId = changeValue.sWareHouseId; + tableDataRow.sWareHouseNo = changeValue.sWareHouseNo; + tableDataRow.sWareHouseName = changeValue.sWareHouseName; + } else if (sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName') { + tableDataRow.sLocationId = changeValue.sLocationId; + tableDataRow.sLocationNo = changeValue.sLocationNo; + tableDataRow.sLocationName = changeValue.sLocationName; + } else if (sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') { + tableDataRow.sWareHouseLocationId = changeValue.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = changeValue.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = changeValue.sWareHouseLocationName; + } + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + slaveDataNew.push(tableDataRow); + } + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (bNewSlaveData) { + const slaveDataNew = []; + const allTableData = {}; + allTableData.master = returnData.masterData; + const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + slaveDataNew.push(tableDataRowAdd); + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款 + if (commonUtils.isNotEmptyObject(masterData)) { + this.getCustomerReceipt({ masterData: returnData.masterData }); + } + } + } else if (sFieldName === 'sTestStandardId' || sFieldName === 'sTestStandardName') { + const { slaveDelData: slaveDelDataOld, slaveConfig, masterConfig } = this.props; + const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${returnData.masterData.sTestStandardId}`; + const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + if (dataReturn.code === 1) { + const returnSlaveData = dataReturn.dataset.rows; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + const slaveDataNew = []; + const newCopyTo = {}; + newCopyTo.master = masterData; + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName'); + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + // tableDataRow.sTestReference = '15S|20S'; + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } else { /* 若数据没有值 则渲染文本框 */ + tableDataRow.isText = true; + } + } + slaveDataNew.push(tableDataRow); + }); + addState.slaveData = slaveDataNew; + } else { + Toast.fail(dataReturn.msg); + } + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('quality/')) { + let masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models); + masterData = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, masterData); + if (sFieldName !== 'dPackQty') { + if (changeValue.dPackQty !== this.state.dPackQtyChange && changeValue.dPackQty !== undefined) { + masterData = commonBusiness.getCalculateAllMoney(app, models, 'dPackQty', masterData, masterData); + this.setState({ dPackQtyChange: changeValue.dPackQty }); + } + } + returnData = { ...returnData, masterData }; + } + if (isWait) { + return { ...returnData, ...addState, enabled: true }; + } else { + this.props.onSaveState({ ...returnData, ...addState, enabled: true }); + return returnData; + } + } + + handleFocus = (showConfig) => { + this.props.onSaveState({ + currentConfig:showConfig + }); + } + handleBlur = (showConfig) => { + + } + + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, + } = this.props; + if (name === 'control' && sModelsType === 'sales/salesOrder') { + const { [`${name}Data`]: tableData, materialsData: materialsDataOld, processData: processDataOld } = this.props; + let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + if (sFieldName === 'dSinglePQty' || sFieldName === 'dSumPQty' || sFieldName === 'iPrintModePo' || sFieldName === 'iPrintMode' || sFieldName === 'iPrintModePo' || sFieldName === 'iPositiveColor' || + sFieldName === 'iPositiveSpecialColor' || sFieldName === 'iOppositeColor' || sFieldName === 'iOppositeSpecialColor') { + if (sFieldName === 'iPrintModePo') { + if (tableDataRow.iPrintModePo === 0) { + tableDataRow.iPrintMode = 3; + if (tableDataRow.iPositiveColor === 0) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } else { + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } + } else if (tableDataRow.iPrintModePo === 1) { + tableDataRow.iPrintMode = 3; + if (tableDataRow.iPositiveColor === 0) { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? 4 : tableDataRow.iOppositeColor; + } else { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + } + } else { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; + } + } else if (sFieldName === 'iPrintMode') { + if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { + tableDataRow.iPositiveColor = commonUtils.isEmpty(tableDataRow.iPositiveColor) || tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; + tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; + } else if (tableDataRow.iPrintMode === 2) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; + } else if (tableDataRow.iPrintMode === 3) { + tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } else if (tableDataRow.iPrintMode === 4) { + tableDataRow.iPositiveColor = 0; + tableDataRow.iPositiveSpecialColor = 0; + tableDataRow.iOppositeColor = 0; + tableDataRow.iOppositeSpecialColor = 0; + } + } else if (sFieldName === 'iPositiveColor' || sFieldName === 'iPositiveSpecialColor') { + if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { + tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; + tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; + } + } + tableDataRow = this.singlePQtyChange(tableDataRow); + } + const materialsData = []; + const processData = []; + materialsDataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + materialsData.push(itemNew); + }); + processDataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + processData.push(itemNew); + }); + const materialsDataNew = this.sortData(tableData, materialsData); + const processDataNew = this.sortData(tableData, processData); + + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, materialsData: materialsDataNew, processData: processDataNew }); + } else { + let { masterData } = this.props; + const iIndex = tableData.findIndex(item => item.sId === sId); + // if (sFieldName.substring(0, 1) === 'd' && commonUtils.convertToNum(tableData[iIndex][sFieldName]) === commonUtils.convertToNum(changeValue[sFieldName])) { + // if (!(tableData[iIndex][sFieldName] === undefined && commonUtils.convertToNum(changeValue[sFieldName]) === 0)) return; + // } + if (sFieldName === 'sProductName' && name === 'slave' && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder') || sModelsType.includes('quotation/quotation'))) { + if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) { + changeValue.sProductId = changeValue.sProductName; + } + } + let tableDataRow = this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo' + || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) { + const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', sFieldName); + const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId); + if (iProductIdIndex === -1) { + tableDataRow.sProductInfo = JSON.stringify({ + sProductId: tableDataRow.sProductName, + sProductName: tableDataRow.sProductName, + sProductStyle: tableDataRow.sProductStyle, + sProductUnit: tableDataRow.sProductUnit, + sProductNo: tableDataRow.sProductNo, + sCustomerProductNo: tableDataRow.sCustomerProductNo, + sProductClassifyId: tableDataRow.sProductClassifyId, + sProductClassifyName: tableDataRow.sProductClassifyName, + }); + } else { + tableDataRow.sProductInfo = ''; + } + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_Cashier_GetProductPrice', + paramsMap: { + sProductGuid: changeValue.sProductId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dProductQty', app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + // else { + // this.props.getServiceError(returnData); + // } + } + } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && name === 'slave') { + const { controlData } = this.props; + if (controlData !== undefined && !commonUtils.isEmpty(tableData.sProductInfo)) { + const controlDataFilter = controlData.filter(item => item.sSlaveId === tableData[iIndex].sId); + const tableSelectedRowKeys = []; + controlDataFilter.forEach((item) => { + tableSelectedRowKeys.push(item.sId); + }); + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel('control', true, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + } + } else if (sModelsType.includes('cashier/') && sFieldName === 'dTotalMoney') { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */ + const addStata = {}; + addStata.dTotalMoney = 0; + if (iIndex > -1) { /* 选中行 */ + let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTotalMoney) ? tableDataRow.dTotalMoney : 0; + dMoney = commonUtils.convertStrToNumber(dMoney); + addStata.dTotalMoney = dMoney + commonUtils.convertStrToNumber(addStata.dTotalMoney); + } + tableData.forEach((item, index) => { /* 非选中行 */ + if (index !== iIndex) { + const dMoney = commonUtils.isNotEmptyNumber(item.dTotalMoney) ? item.dTotalMoney : 0; + addStata.dTotalMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dTotalMoney, 6); + } + }); + masterData = { ...masterData, ...addStata }; + this.props.onSaveState({ masterData }); + } + // 取工艺卡数据 + if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductId' || sFieldName === 'sProductNo' || sFieldName === 'sProductName') && name === 'slave') { + const { + controlConfig, materialsConfig, processConfig, + } = this.props; + let { controlData, materialsData, processData } = this.props; + const sId = tableData[iIndex].sId; + const bCkxCopyFromTechnology = '1'; // app.systemData.filter(item => item.sName === 'CkxCopyFromTechnology')[0].sValue; + if (bCkxCopyFromTechnology === '1' && tableDataRow.sProductId !== tableDataRow.sProductName) { + const controlSelectedData = controlData.filter(item => item.sSlaveId === sId); + if (commonUtils.isNotEmptyObject(controlSelectedData)) { + const materialsReturnData = this.otherTableDel('materials', controlSelectedData); + const processReturnData = this.otherTableDel('process', controlSelectedData); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData); + controlData = controlReturnData.controlData; + materialsData = materialsReturnData.materialsData; + processData = processReturnData.processData; + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + } + const sCustomerId = masterData.sCustomerId; + const sProductId = changeValue.sProductId; + const sProductIdArray = []; + sProductIdArray.push(sProductId); + const sProductIds = sProductIdArray.toString(); + const condition = { sCustomerId, sProductIds }; + const dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + const config = this.props.masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnCopyFrom.ActProcessCard')); + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToControlConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Control'.toLowerCase()); + const copyToMaterialsConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Materials'.toLowerCase()); + const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmptyArr(tableData) ? {} : tableData; + if (commonUtils.isNotEmptyArr(returnData.controlData)) { + // eslint-disable-next-line no-loop-func + returnData.controlData.forEach((controlItem) => { + newCopyTo.control = controlItem; + let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + controlRow.handleType = 'add'; + controlRow.sId = commonUtils.createSid(); + controlRow.sSlaveId = tableDataRow.sId; + controlRow.sParentId = masterData.sId; + controlData.push(controlRow); + + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + returnData.materialsData.filter(item => item.sControlId === controlItem.sId).forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = tableDataRow.sId; + materialsRow.sParentId = masterData.sId; + materialsRow.sControlId = controlRow.sId; + materialsRow.sPartsName = controlRow.sPartsName; + + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + returnData.processData.filter(item => item.sControlId === controlItem.sId).forEach((processItem) => { + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processData.push(processRow); + }); + } + }); + } + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + // eslint-disable-next-line no-loop-func + returnData.materialsData.filter(item => item.sType === '2').forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = tableDataRow.sId; + materialsRow.sParentId = masterData.sId; + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + // eslint-disable-next-line no-loop-func + returnData.processData.filter(item => item.sType === '3').forEach((processItem) => { + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processData.push(processRow); + }); + } + this.props.onSaveState({ controlData, materialsData, processData }); + } + } + } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'dProductQty' || sFieldName === 'dGiveQty' || sFieldName === 'dStockupQty') && name === 'slave') { + const { + controlData, slaveSelectedRowKeys, + } = this.props; + const controlSelectedData = controlData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0]); + for (const one of controlSelectedData) { + one.handleType = commonUtils.isEmpty(one.handleType) ? 'update' : one.handleType; + one.dPartsQty = commonUtils.isNull(tableDataRow.dProductQty, 0) + commonUtils.isNull(tableDataRow.dGiveQty, 0); + } + this.props.onSaveState({ controlData }); + } else if (sModelsType.includes('purchase/') && (sFieldName === 'sMaterialsId' || sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName') && name === 'slave') { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_Cashier_GetMaterialsPrice', + paramsMap: { + sMaterialsGuid: changeValue.sMaterialsId, + sSupplyGuid: masterData.sSupplyId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dMaterialsPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dAuxiliaryQty', app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + + if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: tableDataRow.sMaterialsId, + sMaterialsStyle: tableDataRow.sMaterialsStyle, + sWarehouseGuid: tableDataRow.sWarehouseId, + sLocationalGuid: tableDataRow.sLocationId, + sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId, + sDefine_no: tableDataRow.sDefineNo, + sDefine_no2: tableDataRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + tableDataRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: tableDataRow.sMaterialsId, + sMaterialsStyle: tableDataRow.sMaterialsStyle, + sWarehouseGuid: tableDataRow.sWarehouseId, + sLocationalGuid: tableDataRow.sLocationId, + sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId, + sDefine_no: tableDataRow.sDefineNo, + sDefine_no2: tableDataRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + tableDataRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + // else { + // this.props.getServiceError(returnData); + // } + } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') { + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dPprice = this.props.getFloatNum('dProductPrice'); /* 获取系统设定小数位 */ + tableDataRow.dProductMoney = commonUtils.convertFixNum(tableDataRow.dSrcMoney - tableDataRow.dLossMoney, dPprice); + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + tableDataRow.dProductMoney = tableDataRow.dSrcMoney; + tableDataRow.dLossMoney = 0; + } + } + /* 各种金额,税额,价格计算 */ + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, tableDataRow); + let dMaterialsMoney = ''; + if (sModelsType.includes('outside/')) { /* 工序发外 && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty') */ + let sComputeId = {}; + const sSupplyId = masterData.sSupplyId; + const sProcessId = tableDataRow.sProcessId; + /* 根据客户id,工序id获取公式ID */ + sComputeId = await commonBusiness.getOutSideProcessFormula({ + token, sModelsId, sSupplyId, sProcessId, + }); + if (!commonUtils.isEmpty(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + } + const otherData = {}; + if (this.isOutsourcedProcesses && sFieldName === 'dAuxiliaryQty' && name === 'slaveChild') { + const { slaveChildData, slaveData } = this.props; + const originData = slaveChildData.find(i => i && i.sId === sId)?.dAuxiliaryQty || 0; + if (Array.isArray(slaveChildData) && Array.isArray(slaveData)) { + const value = (Number(slaveData?.[0]?.dAuxiliaryQty) + + Number(changeValue[sFieldName] || 0) - + Number(originData)).toFixed(2) || slaveData?.[0]?.dAuxiliaryQty; + otherData.slaveData = [{...slaveData?.[0] || {}, dAuxiliaryQty: value }]; + } + } + if (name === 'slaveChild') { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow, + } + // 汇总到从表方法 + await this.handleWriteBack(params); + } + + const tabPage = this.handleNameToIndex(name); + if ((typeof tabPage !== 'undefined') || !commonUtils.isNotEmptyObject(this.props.slaveChildConfig)) { + const data = [ ...tableData ]; + data[iIndex] = tableDataRow; + const master = this.props.handleMasterDefaultData(data, this.isOutsourcedProcesses, tabPage, masterData); + this.props.onSaveState({ masterData: master }); + } + + + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true, ...otherData }); + } + } + }; + + handleNameToIndex = (name) => { + return ({ + slaveChild: 0, + slave0: 1, + slave: undefined, + }[name]); + } + + handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle' || sFieldName === 'dProductQty') { + if (sFieldName === 'dReelAuxiliaryQty') { + if (tableDataRow.sMaterialsUnit === '吨' && tableDataRow.bReel && tableDataRow.dGramWeight > 0) { + tableDataRow = commonBusiness.getMaterialsQty(app, { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, 'dReelAuxiliaryQty', 'dMaterialsQty'); + tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty; + tableDataRow.sMaterialsStyle = tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split('*').length > 1 ? tableDataRow.sMaterialsStyle.split('*')[0] : tableDataRow.sMaterialsStyle; + tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit; + } else if (tableDataRow.sMaterialsUnit.toUpper() === 'M2' && tableDataRow.bReel) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dReelAuxiliaryQty', 'dMaterialsQty'); + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } else { + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } + } + if (commonUtils.isEmpty(sComputeId) && sFieldName !== 'dConversionQty') { + if (sFieldName === 'dProductQty') { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dProductQty', 'dMaterialsQty'); + } else { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dAuxiliaryQty', 'dMaterialsQty'); + } + } else if (!commonUtils.isEmpty(sComputeId)) { + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + } + if (sFieldName !== 'dConversionQty' && !commonUtils.isEmpty(sConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sConversionComputeId, + }); + } + } else if (sFieldName === 'dMaterialsQty') { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryQty'); + } else if (tableDataRow.bInverse) { + tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId, + }); + } + if (!commonUtils.isEmpty(sReConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReConversionComputeId, + }); + } + } else if (sFieldName === 'dAuxiliaryLossQty') { + if (commonUtils.isEmpty(sComputeId)) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, 'dLossQty'); + } else { + tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6); + } + } else if (sFieldName === 'dLossQty') { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty'); + } else if (tableDataRow.bInverse) { + tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty; + } + } else if (sFieldName === 'sProcessId' || sFieldName === 'sProcessNo' || sFieldName === 'sProcessName') { + const sProcessId = changeValue.sProcessId; + const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice; + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dMaterialsPrice', masterData, tableDataRow); + } + } + return tableDataRow; + } + + handleCustomerChange = (name, changeValue) => { + if (commonUtils.isNotEmptyObject(changeValue)) { + if (changeValue.sCustomerId !== this.state.changleCustomerId) { + const sCustomerId = []; + sCustomerId.push(changeValue.sCustomerId); + this.handleTableSelectRowChange(name, sCustomerId, changeValue); + } + } + this.setState({ changleCustomerId: changeValue.sCustomerId }); + } + + handleMobileScan = (fieldConfig, tbName, record) => { + if (commonUtils.isNotEmptyObject(fieldConfig)) { + const sFieldName = fieldConfig.sName; + const newTableName = 'master'; + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig, + } = this.props; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + const masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + const sCode = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + if (tbName === 'master') { + masterData[sFieldName] = sCode; + } + if (tbName === 'master') { + masterdataObj = { + ...masterData, [sFieldName]: sCode, + }; + } else if(tbName === 'slave') { + if(commonUtils.isNotEmptyArr(slaveData)) { + /* 如果是从表的字段配置了扫码 那么则将值赋值到字段上 */ + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sId === record.sId) : -1; + if (iIndex > -1) { + const newType = commonUtils.isEmpty(slaveData[iIndex].handleType) ? 'update' : slaveData[iIndex].handleType; + slaveData[iIndex] = { ...slaveData[iIndex], [sFieldName]: sCode, handleType :newType }; + } + } + } + + + + /* 读取扫码配置 */ + // const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + // const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + // /* 唯一码调接口 */ + // let sqlDataRow ={}; + // if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + // if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + // sqlDataRow = sqlDropDownData[0]; + // } + // } + // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + // if(commonUtils.isNotEmptyObject(sqlDataRow)) { + // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + // } + // slaveDataObj.sParentId = masterdataObj.sId; + // if (commonUtils.isNotEmptyArr(slaveData)) { + // const len = slaveData.length; + // const sDefineNoNew = slaveData[len - 1].sDefineNo; + // const { handleType } = slaveData[len - 1]; + // /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + // if (commonUtils.isEmptyArr(sDefineNoNew)) { + // slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // // slaveData[len - 1] = slaveDataObj; + // slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + // } else { + // slaveDataObj.sId = commonUtils.createSid(); + // slaveDataObj.handleType = 'add'; + // slaveData.push(slaveDataObj); + // } + // } else { + // slaveDataObj.sId = commonUtils.createSid(); + // slaveDataObj.handleType = 'add'; + // slaveData.push(slaveDataObj); + // } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } + } + + handleButtonClick = async (name ) => { + if(name === 'BtnRefresh') { + const { sModelsType, slaveConfig, masterConfig, employeeConfig, slave0Config, slaveChildConfig}= this.props; + await this.handleGetData(masterConfig, slaveConfig); + if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) { + await this.handleGetMemoData(employeeConfig); + } + if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) { + await this.handleGetMemoData(slave0Config, 'slave0Child'); + } + if(commonUtils.isNotEmptyObject(slaveChildConfig) ) { + await this.handleGetMemoData(slaveChildConfig, 'slaveChild'); + } + // if (this.props.refresh !== undefined) { + // this.props.refresh(); + // } + } + + } + render() { + return ( + + ); + } + }; +}; diff --git a/src/mobile/common/CommobileTabBill.js b/src/mobile/common/CommobileTabBill.js new file mode 100644 index 0000000..a106ca9 --- /dev/null +++ b/src/mobile/common/CommobileTabBill.js @@ -0,0 +1,1734 @@ +/* eslint-disable */ +import React from 'react'; +import weixin from 'weixin-js-sdk'; +import { Flex, Button, ListView, Toast, Tabs, Badge,} from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import CommobileViewMaster from './CommobileViewMaster'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import CommobileToolBar from './CommobileToolBar'; +import styles from '../mobile.less'; +import add from '../../assets/mobile/add-select.svg'; +import scan from '../../assets/mobile/scanning.svg'; +import close from '../../assets/mobile/close.svg'; +import * as commonFunc from '../../components/Common/commonFunc'; +import BarCodeUtil from './BarCodeUtil'; +import preView from '../components/preView'; +import * as commonServices from "../../services/services"; +import indexStyles from '../../routes/mobile/IndexMobile.less'; +import ModalList from '../components/modal'; +import CommonMobileList from './CommobileModalList'; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +const tabs = [ + { title: 明细 }, + { title: 汇总 }, +]; +let _this = {}; +class CommobileBill extends React.Component { + constructor(props) { + super(props); + this.state = { + tabPage: 0, + visible: false, + }; + _this = this; + } + + // eslint-disable-next-line react/sort-comp + handleClick = async (name, type, sId) => { + if (name === 'BtnSave') { + this.props.onSubmit(); + } else if (name === 'BtnUpd') { + this.props.onEdit(name); + } else if (type === 'add') { + this.props.onDataRowAdd(name); + } else if (type === 'del') { + const { app, [`${name}Data`]: tableData } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (sId !== '') { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + } + } else if (type === 'scan' || name === 'BtnScan' || name === 'BtnScanPda') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig, + } = this.props; + /* 规则定义 + 材料 + sDefineNo: codeArr[0], --唯一码 + sMaterialsName: codeArr[1], --材料名称 + sMaterialsStyle: codeArr[2], --材料规格 + dAuxiliaryQty: codeArr[3], --数量 + sWareHouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sMaterialsId: codeArr[8], --材料ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], --sLocationId + 成品 + sDefineNo: codeArr[0], --唯一码 + sProductName: codeArr[1], --产品名称 + sProductStyle: codeArr[2], --产品规格 + dProductQty: codeArr[3], --产品数量 + sWarehouseName: codeArr[4], --仓库名称 + sLocationName: codeArr[5], --仓库名称 + sDefineNo2: codeArr[6], --二维码 + tInStoreDate: codeArr[7], --入库日期 + sProductId: codeArr[8], --产品ID + sWareHouseId: codeArr[9], --仓库ID + sLocationId: codeArr[10], + sCustomerName: codeArr[11], --客户名称 + sCustomerShort: codeArr[12], + sOrderNo: codeArr[13], --订单号 + sWorkOrderNo: codeArr[14], --工单号 + sCustomerOrderNo: codeArr[15], --客户编号 + sCustomerProductNo: codeArr[16], --客户产品编号 + */ + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + if (commonUtils.isEmptyObject(code)) { + Toast.fail('二维码扫码失败!', 1); + return; + } + const codeArr = code.split('|'); + let models = ''; + if (codeArr.length === 12) { /* 材料 */ + models = 'Materials'; + } else if (codeArr.length === 17) { /* 成品 */ + models = 'Product'; + } else { + models = 'Single'; /* 单一的 */ + } + if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + /* 读取扫码配置 */ + let btnScanConfigs; + if (name === 'BtnScanPda') { + btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sControlName.indexOf('_pda') > -1); + } else { + btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + } + + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo'; + + masterdataObj = { + ...masterData, [sDefineNoName] : sDefineNo + }; + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + + if( name === 'BtnScanPda') { + this.handleSqlDropDownData({ + sqlDropDownData, + fieldConfig: { ...btnScanConfigs?.[0] || [], sName: sDefineNoName }, + masterdataObj, + slaveDataNew: slaveData, + sFieldName: sDefineNoName , + }) + return; + } + + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sParentId = masterdataObj.sId; + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1][sDefineNoName]; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyObject(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // slaveData[len - 1] = slaveDataObj; + slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj}; + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */ + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + // const date = new Date(dataStr); + slaveDataObjAdd = { + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sMaterialsName: codeArr.length > 1 ? codeArr[1] : '', + sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '', + dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + sMaterialsId: codeArr.length > 8 ? codeArr[8] : '', + sWareHouseId: codeArr.length > 9 ? codeArr[9] : '', + sLocationId: codeArr.length > 10 ? codeArr[10] : '', + dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + // if(commonUtils.isEmptyArr(btnScanConfigs)) { + // Toast.fail('请配置扫码按钮!!!', 1); + // return; + // } + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + console.log('slaveDataObj1111', slaveDataObj); + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + if (codeArr.length > 1) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]); + } + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterdataObj; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods + /* 取第一条码 */ + const sDefineNo = codeArr.length > 0 ? codeArr[0] : ''; + /* 如果条码已存在,提示 */ + // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1; + // if (iIndex > -1) { + // Toast.fail('条码已存在!!!', 1); + // return; + // } + const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined; + slaveDataObjAdd = { + sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', + sOrderNo: codeArr.length > 13 ? codeArr[13] : '', + sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '', + sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '', + sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '', + sDefineNo: codeArr.length > 0 ? codeArr[0] : '', + sDefineNo2: codeArr.length > 6 ? codeArr[6] : '', + dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '', + tInStoreDate: dateStr, + }; + masterdataObj = { + ...masterData, ...slaveDataObjAdd, + }; + // masterDataObjAdd = { + // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo, + // }; + /* 读取多条扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + /* 唯一码调接口 */ + let sqlDataRow ={}; + if(commonUtils.isNotEmptyArr(btnScanConfigs)) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj); + if(commonUtils.isNotEmptyArr(sqlDropDownData)) { + sqlDataRow = sqlDropDownData[0]; + } + } + slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段 + if(commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + // slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.iOrder = 1; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + if (codeArr.length > 4) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]); + } + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + if (codeArr.length > 5) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]); + } + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + if (codeArr.length > 1) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]); + } + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...slaveDataObj, + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (models !== 'Single') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (type === 'scan1') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */ + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] }; + } + } + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */ + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */ + BarCodeUtil.startScan(async (type, code) => { + const { masterConfig } = this.props; + let { masterData } = this.props; + let masterdataObj = {}; + const codeArr = code.split('|'); + if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */ + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + masterData.sDefineNo = sDefineNo; + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + // this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + this.props.onSaveState({ masterData }); + }); + } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */ + this.handleCamera(); + } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */ + this.handleGetPhoto(); + } else if (name === 'BtnCancel') { + window.history.back(-1); + } else if (name === 'BtnExamine') { + this.props.onAudit(1); + } else if (name === 'BtnCancelExamine') { + /* 销审 */ + this.props.onAudit(0); + } + } + handleCamera = () => { + BarCodeUtil.getImage(); + } + handleGetPhoto = () => { + BarCodeUtil.getPhoto(); + } + + /**pda扫码数据 */ + fieldConfig = React.createRef(); + masterdataObj = React.createRef(); + ModalList = React.createRef(); + selectedRowkeys = React.createRef(); + cancelValue = React.createRef(); + + modalProps = { + title:
    请选择
    , + cancelAction: () => this.cancelAction(), + submitAction: () => { + this.handleAddPdaValue(this.selectedRowkeys.current); + this.setState({ visible: false }); + }, + }; + + setSelectedRowkeys = (v) => { + this.selectedRowkeys.current = v; + } + /**打开弹窗 */ + openModalList = () => { + this.setState({ visible: true }); + } + + handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => { + this.cancelValue.current = cancelValue; + this.handlePdaFieldScan(fieldConfig, tbName, record, newValue); /* PDA扫码逻辑 */ + } + + clearCache = () => { + this.fieldConfig.current = null; + this.masterdataObj.current = null; + } + + /** + * 关闭弹框 + */ + cancelAction = () => { + this.setSelectedRowkeys(null); + this.cancelValue.current && this.cancelValue.current(); + this.clearCache(); + this.setState({ visible: false }); + } + + filterSlaveData = (v) => { + if (!this.fieldConfig.current) return []; + const sFieldName = this.fieldConfig.current.sName; + const { slaveData } = this.props; + return v.filter(i => i && !slaveData?.find(j => j && j[sFieldName] === i[sFieldName])); + } + + /** + * pda 扫描 + * @returns + */ + handlePdaFieldScan = async (fieldConfig, tbName, record, newValue) => { + const { + sModelsId, masterData, + } = this.props; + const { slaveData: slaveDataNew } = this.props; + const code = newValue; + if (commonUtils.isEmptyObject(code) || typeof code !== 'string') { + return; + } + if (commonUtils.isEmptyObject(fieldConfig)) { + Toast.fail('未配置PDA!'); + return; + } + const sFieldName = fieldConfig.sName; + let masterdataObj = masterData; + masterdataObj = { + ...masterData, [sFieldName]: code, + }; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', fieldConfig, masterdataObj); + this.handleSqlDropDownData({ sqlDropDownData, fieldConfig, masterdataObj, slaveDataNew, sFieldName }); + } + + handleSqlDropDownData = (v) => { + const { sqlDropDownData, fieldConfig, slaveDataNew, sFieldName } = v; + let { masterdataObj } = v; + if (!Array.isArray(sqlDropDownData) || commonUtils.isEmptyArr(sqlDropDownData)) { + Toast.fail('暂无数据', 1); + this.clearCache(); + return; + } + this.fieldConfig.current = fieldConfig; + this.masterdataObj.current = masterdataObj; + if (sqlDropDownData.length === 1) { + /* 如果条码已存在,提示 */ + const iFIndex = commonUtils.isNotEmptyArr(slaveDataNew) ? slaveDataNew.findIndex(item => item[sFieldName] === sqlDropDownData[0][sFieldName]) : -1; + if (iFIndex > -1) { + this.cancelValue.current && this.cancelValue.current(); + this.cancelValue.current = null; + Toast.fail('条码已存在!', 1); + this.clearCache(); + return; + } + this.setSelectedRowkeys(sqlDropDownData); + this.handleAddPdaValue(sqlDropDownData); + }else if(sqlDropDownData.length > 1) { + /* 数据赋值到主表 */ + const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : ''; + masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDropDownData[0]) }; + this.masterdataObj.current = masterdataObj; + } + if(sqlDropDownData.length > 1 ) { + this.openModalList(); + } + return; + } + + /** + * pda扫描添加数据 + * @returns + */ + handleAddPdaValue = (value) => { + let { slaveData: slaveDataNew } = this.props; + this.cancelValue.current && this.cancelValue.current(); + this.cancelValue.current = null; + if (!this.fieldConfig.current || + !this.masterdataObj.current || + !Array.isArray(value) || !value.length) { + this.clearCache(); + this.setSelectedRowkeys(null); + return + }; + let masterdataObj = this.masterdataObj.current; + const sFieldName = this.fieldConfig.current.sName; + const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : ''; + if (commonUtils.isEmptyArr(slaveDataNew)) { + slaveDataNew = []; + } + value.forEach((sqlDataRow) => { + let slaveDataObj = {}; + masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段 + if (commonUtils.isNotEmptyObject(sqlDataRow)) { + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段 + } + slaveDataObj.sId = commonUtils.createSid(); + slaveDataObj.handleType = 'add'; + slaveDataObj.sParentId = masterdataObj.sId; + slaveDataNew.push(slaveDataObj); + }); + if (commonUtils.isNotEmptyObject(masterdataObj)) { + const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType; + masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType }; + } + this.clearCache(); + this.setSelectedRowkeys(null); + this.props.onSaveState({ slaveData: slaveDataNew, masterData: masterdataObj }); + } + + handleGetWxCode = async (successHandler) => { + let scanResult = ''; + const { app } = this.props; + // eslint-disable-next-line prefer-destructuring,no-unused-vars + const userinfo = app.userinfo; + const myUrl = location.href; + const configUrl = `${commonConfig.server_host}wechat/getWxToken`; + const values = { + url: myUrl, + sBrandsId: userinfo.sBrandsId, + sSubsidiaryId: userinfo.sSubsidiaryId, + }; + // const values = { + // url: myUrl, + // sBrandsId: '1111111111', + // sSubsidiaryId: '1111111111', + // }; + const configReturn = (await commonServices.postValueService(null, values, configUrl)).data; + console.log('configReturn::', configReturn, values); + if (configReturn.code === 1) { + const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows)) { + const appId = rows[0].appId.toString(); + const nonceStr = rows[0].nonceStr.toString(); + const signature = rows[0].signature.toString(); + const timestamp = rows[0].timestamp.toString(); + weixin.config({ + beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId, // 必填,公众号的唯一标识 + timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %> + nonceStr, // 必填,生成签名的随机串 + signature, // 必填,签名 + jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫 + }); + weixin.ready(() => { + weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口 + jsApiList: ['scanQRCode'], + success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} + console.log(res); + if (res.checkResult.scanQRCode !== true) { + Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`); + } + }, + // eslint-disable-next-line no-unused-vars + fail(res) { // 检测getNetworkType该功能失败时处理 + Toast.fail('checkJsApi error'); + }, + + + }); // wx.ready结束 + weixin.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 + success(res) { + // console.log("调用扫描成功",res); + scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 + if (commonUtils.isNotEmptyObject(scanResult)) { + const codeResult = scanResult.split(','); + if (codeResult.length > 1) { + scanResult = codeResult[1]; + } + } + successHandler(scanResult); + // console.log('微信扫码结果:', scanResult); + }, + error(res) { + // console.log(res); + if (res.errMsg.indexOf('function_not_exist') > 0) { + Toast.fail('版本过低请升级'); + } + }, + }); + }); + } else { + Toast.fail(configReturn.msg); + } + } else { + Toast.fail(configReturn.msg); + } + return scanResult; + } + + handleWxScan = async () => { + this.handleGetWxCode((code) => { + if (!commonUtils.isEmpty(code)) { + this.handleWxBusiness(code); + } + }); + } + + handleWxBusiness = async (code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + } + + /* 页签切换 */ + // eslint-disable-next-line no-unused-vars + handleTabClick =(index, tab) => { + const { slaveData, slaveSumConfig, masterData, sModelsType } = this.props; + let { slaveSumData }= this.props; + + /* 盘点走单独的逻辑体 */ + console.log('slaveSumData', slaveSumData); + if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) { + if(commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(slaveSumData)) { + const groupedData = commonUtils.groupBy(slaveData, item => item.sMaterialsId + '-' + commonUtils.isNull(item.sMaterialsStyle, '') + commonUtils.isNull(item.sDefineNo, '') + '-' + + commonUtils.isNull(item.sLocationId, '') + commonUtils.isNull(item.sWareHouseId, '')); + console.log('分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + if (commonUtils.isNotEmptyArr(eachData)) { + console.log('eachData:', eachData); + let dAuxiliarySumQty = 0; /* 采购数量 */ + let dMaterialsSumQty = 0; /* 采购计价数量 */ + eachData.forEach((item) => { + /* 采购 */ + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + }); + + /* 从汇总表数据集中 找到相同批次规格的汇总表 然后更新数据 */ + const eachRow = eachData[0]; + const iIndex = slaveSumData.findIndex(obj => obj.sMaterialsId ===eachRow.sMaterialsId && obj.sMaterialsStyle ===eachRow.sMaterialsStyle && + obj.sDefineNo === eachRow.sDefineNo && obj.sLocationId === eachRow.sLocationId && obj.sWareHouseId === eachRow.sWareHouseId); + console.log('iIndex:', iIndex); + if(iIndex > -1) { + const sumRow = slaveSumData[iIndex]; + const addState = {}; + const minus = dAuxiliarySumQty - commonUtils.isNull(sumRow.dOriginalAuxiliaryQty, 0); + addState.dProfitLossAuxiliaryQty = commonUtils.convertFixNum(minus, 2); /* 盘盈数 */ + addState.dAuxiliaryQty = dAuxiliarySumQty; /* 数量 */ + addState.handleType = commonUtils.isEmpty(sumRow.handleType) ? 'update' : sumRow.handleType; + console.log('盘盈数字:', minus); + slaveSumData[iIndex] = { ...slaveSumData[iIndex], ...addState}; + } + + } + } + } + } + + + }else { + + /* 汇总明细 */ + slaveSumData = []; + console.log('sModelsType:', sModelsType); + if (commonUtils.isNotEmptyArr(slaveData)) { + let slaveSumRow = {}; + let dProductTotalQty = 0; /* 总到货数 */ + let dMaterialsTotalQty = 0; /* 总计价数 */ + slaveData.forEach((slaveItem, index) => { + if (index === 0) { + slaveSumRow = JSON.parse(JSON.stringify(slaveItem)); + } + if (sModelsType && sModelsType.includes('purchase/')) { + dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dAuxiliaryQty, 0)); + dMaterialsTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dMaterialsQty, 0)); + } else { + dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dProductQty, 0)); + } + }); + /* 根据sSqlConditionId汇总 */ + if (sModelsType && sModelsType.includes('purchase/')) { + const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId); + console.log('分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + if (commonUtils.isNotEmptyArr(eachData)) { + console.log('eachData:', eachData); + let dAuxiliarySumQty = 0; /* 采购数量 */ + let dMaterialsSumQty = 0; /* 采购计价数量 */ + let dEscrowAuxiliarySumQty = 0; /* 代管数量 */ + let dEscrowSumQty = 0; /* 代管计价数 */ + let dGiveAuxiliarySumQty = 0; /* 赠送数 */ + let dGiveSumQty = 0; /* 赠送计价数 */ + eachData.forEach((item) => { + /* 采购 */ + console.log('类型:', item.iType); + if ((commonUtils.isNull(item.iType), 0) === 0) { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + + if (item.iType === 1) { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + /* 代管 */ + else if (item.iType === 2) { + dEscrowAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dEscrowSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + + /* 赠送 */ + else if (item.iType === 3) { + dGiveAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + dGiveSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2); + } + }); + const newSum = JSON.parse(JSON.stringify(eachData[0])); + + newSum.dAuxiliaryQty = dAuxiliarySumQty; + newSum.dMaterialsQty = dMaterialsSumQty; + + newSum.dEscrowAuxiliaryQty = dEscrowAuxiliarySumQty; + newSum.dEscrowQty = dEscrowSumQty; + + newSum.dGiveAuxiliaryQty = dGiveAuxiliarySumQty; + newSum.dGiveQty = dGiveSumQty; + + newSum.dPurchaseArrivalQty = dProductTotalQty; /* 到货总数 */ + newSum.dPurchaseQty = dMaterialsTotalQty; /* 总计价数量 */ + newSum.dSrcQty = masterData.dSrcAuxiliaryQty; /* 源单数量 */ + + slaveSumRow.handleType = 'add'; + slaveSumData.push(newSum); + + + } + } + } + } else { + const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId); + console.log('产品分组::', groupedData); + /* 对分组内的数据进行数据汇总 */ + if (commonUtils.isNotEmptyObject(groupedData)) { + for (const key of Object.keys(groupedData)) { + const eachData = groupedData[key]; + let dProductSumQty = 0; /* 产品数量 */ + if (commonUtils.isNotEmptyArr(eachData)) { + eachData.forEach((item) => { + dProductSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dProductQty, 0), 2); + }); + const newSum = JSON.parse(JSON.stringify(eachData[0])); + newSum.dProductQty = dProductSumQty; + slaveSumRow.handleType = 'add'; + slaveSumData.push(newSum); + } + + } + } + // slaveSumRow.sProductName = commonUtils.isNotEmptyObject(masterData) ? masterData.sProductName : ''; + // slaveSumRow.dProductQty = dProductTotalQty; + // slaveSumRow.handleType = 'add'; + // slaveSumData.push(slaveSumRow); + } + + } + } + console.log('汇总表数据', slaveSumData); + console.log('主表数据', masterData); + this.setState({ tabPage: index }); + this.props.onSaveState({ slaveSumData }) + + } + + getViewValue = (showConfig, record) => { + let sValue = record === undefined ? undefined : record[showConfig.sName]; + if (showConfig.sDropDownType === 'const') { + let showDropDown = []; + if (typeof showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown)); + } + let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString()); + if (iIndex === -1 && record[showConfig.sName] === '') { + iIndex = showDropDown.findIndex(item => item.sId === ''); + } + sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName]; + } + return sValue; + }; + + render() { + const { + slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, slaveSumConfig, slaveSumData: slaveSumDataOld, + sModelsType, content, dispatch, + } = this.props; + const commonListProps = { + app, + content, + sModelsId: this.fieldConfig.current?.sActiveId || sModelsId, + sModelsType: sModelsType, + formRoute: '/indexMobile/commobileBill', + dispatch, + bNotSearch: true, + }; + const { tabPage } = this.state; + onReturnForm(this.props.form); + + + const slaveSumDataOld2 = slaveSumDataOld === undefined ? [] : slaveSumDataOld; + const slaveSumData = dataSource.cloneWithRows(slaveSumDataOld2); + + + const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ + const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const rowSum = (rowData, sectionID, rowID) => { + return ( +
    + {commonUtils.isEmptyObject(slaveSumConfig) ? '' : slaveSumConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + })} + {slaveSumConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + /* 汇总页签 */ + const TabComponentSum = props => { + return ( +
    +
    + {commonUtils.isEmptyArr(slaveSumDataOld) && false ? +
    + + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    +
    + ); + } + + const conditionValue = this.fieldConfig.current && this.masterdataObj.current ? + this.props.getSqlCondition(this.fieldConfig.current, 'master', this.masterdataObj.current) : null; + /** + * pda扫描弹窗 + */ + const ModalListProps = { + ...this.modalProps, + visible: this.state.visible, + content: + } + + const otherProps = { + handleMasterFieldScan: this.handleMasterFieldScan, + } + + return ( +
    + { + commonUtils.isNotEmptyObject(slaveSumConfig) ? + this.handleTabClick(index, tab)} + onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }} + > + {tabPage === 0 ?
    : ''} + {tabPage === 1 ?
    : ''} +
    : +
    + } +
    + + ); + } +} + +const CommobileBillComponent = createForm()(CommobileBill); + +const TabComponentSlave = (props) => { + + const { masterConfig, masterData, slaveData: slaveDataOld, slaveConfig, sModelsId, enabled, app, sUseInfo } = props; + + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: props.form, + formId: sModelsId, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getFloatNum: props.getFloatNum, + getDateFormat: props.getDateFormat, + onChange: props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: props.onFilterDropDownData, + onSaveState: props.onSaveState, + }; + return ( + + ); + })} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + + const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0]; + const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1]; + const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2]; + const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3]; + const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4]; + const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5]; + const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6]; + const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7]; + const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8]; + const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9]; + + return ( +
    +
    + + { + f1 ? {f1.showName} : {_this.getViewValue(f1, masterData)} : '' + } + { + f2 ? {f2.showName} : {_this.getViewValue(f2, masterData)} : '' + } + + + { + f3 ? {f3.showName} : {_this.getViewValue(f3, masterData)} : '' + } + + + { + f4 ? {f4.showName} : {_this.getViewValue(f4, masterData)} : '' + } + + + { + f5 ? {f5.showName} : {_this.getViewValue(f5, masterData)} : '' + } + { + f6 ? {f6.showName} : {_this.getViewValue(f6, masterData)} : '' + } + + + { + f7 ? {f7.showName} : {_this.getViewValue(f7, masterData)} : '' + } + { + f8 ? {f8.showName} : {_this.getViewValue(f8, masterData)} : '' + } + + + { + f9 ? {f9.showName} : {_this.getViewValue(f9, masterData)} : '' + } + { + f10 ? {f10.showName} : {_this.getViewValue(f10, masterData)} : '' + } + +
    +
    +
    + + +
    + {commonUtils.isEmptyArr(slaveDataOld) ? +
    + + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + +
    : +
    + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + /> +
    + } +
    + +
    +
    + +
    + ); +} + +export default CommobileBase(CommobileBillEvent(CommobileBillComponent)); + diff --git a/src/mobile/common/CommobileToolBar.js b/src/mobile/common/CommobileToolBar.js new file mode 100644 index 0000000..d617f1f --- /dev/null +++ b/src/mobile/common/CommobileToolBar.js @@ -0,0 +1,539 @@ +/* eslint-disable */ +import React, { Component } from 'react'; +import { Button, Toast } from 'antd-mobile'; +import * as commonUtils from '../../utils/utils'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import FileManageMobile from '../components/FileManageMobile'; +import FileShowMobile from '../components/FileShowMobile'; +import FileManageMobileWx from '../components/FileManageMobileWx'; +import {Modal} from "antd"; + + +class CommobileToolBar extends Component { + /** 构造函数 */ + constructor(props) { + super(props); + this.state = { + buttonConfig: [], /* 导航工具栏 */ + btnStyle: {}, + divStyle: {}, + }; + } + + componentWillMount() { + this.componentWillReceiveProps(this.props); + } + /** props改变的时候触发 */ + componentWillReceiveProps(nextProps) { + const { + masterConfig, btnStyle, divStyle, + } = nextProps; + const { buttonConfig: buttonConfigOld } = this.state; + if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isEmptyArr(buttonConfigOld)) { + const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.bVisible && item.sControlName.substring(0, 3) === 'Btn'); + this.setState({ buttonConfig, btnStyle, divStyle }); + } + } + + /** 获取父级菜单属性 */ + getMenuStatus = (menu) => { + if (menu?.sControlName === 'BtnCancel') { + return false; + } + let { masterData } = this.props; + const { enabled, adDisabled, sModelsType } = this.props; + if (commonUtils.isEmptyObject(masterData)) { + masterData = {}; + } + const { bCheck, bInvalid } = masterData; + let disabledData = []; /* 置灰按钮集合 */ + if (adDisabled) { + disabledData = ['BtnAdd', 'BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnSetPeriod']; + } else if (!adDisabled) { + if (!enabled) { + if (bInvalid) { // 已作废 + disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnBsOperation.BtnInvalid']; + } else if (bCheck) { // 已审核 + if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/')) { + if (sModelsType === 'element/customerInfo') { + disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport']; + } else { + disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid']; + } + } else { + /* 已审核查看状态 修改 删除 保存 取消 审核 复制从 取消作废置灰 */ + disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport']; + } + } else { + /** 查看状态 修改 删除 保存 取消 审核 复制从置灰 */ + disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnCancelInvalid']; + if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/') && sModelsType !== 'element/customerInfo') { + /* 除了客户信息,其他基础信息在查看状态状态下 复制到常亮 */ + disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid']; + } + } + } else if (sModelsType === 'production/productionPlanInfo') { + disabledData = ['BtnRefresh', 'BtnAdd', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid']; + } else { + disabledData = ['BtnRefresh', 'BtnAdd', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnPrint']; + } + } + /* 通用上传按钮 除了新增,其他状态下都是亮的 */ + if (menu.sControlName === 'BtnUpload') { + const { handleType } = masterData; + if (handleType === 'add') { + disabledData.push('BtnUpload'); + } + } + // 其它自定义按钮不在以上 不能操作数据里 + if (menu.disabled) { + disabledData.push(menu.sControlName); + } + // else { + // const iIndex = disabledData.findIndex(item => item === menu.sControlName); + // disabledData.splice(iIndex, 1); + // } + // console.log('disabledData:', menu.sControlName, menu.disabled); // disabledData + let bReturn = true; + if (menu.sControlName !== undefined && menu.sControlName.indexOf('.') > -1) { + bReturn = disabledData.findIndex(item => item === menu.sControlName.substring(0, menu.sControlName.indexOf('.'))) > -1; + if (!bReturn) { + bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1; + } + } else { + bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1; + } + bReturn = bReturn || (this.props.getMenuStatus !== undefined && this.props.getMenuStatus(menu)); + return bReturn; + }; + // 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"} + handleBtnEent = async (btnConfig, name, sValue) => { + const { masterData } = this.props; + let iResult = 0 ; + // if (commonUtils.isNotEmptyObject(name) && name.indexOf('BtnRepair') > -1 && commonUtils.isNotEmptyObject(sCurrMemoProps)) { + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ sCurrMemoProps }); + // } + // eslint-disable-next-line prefer-destructuring + const sButtonParam = btnConfig.sButtonParam; + const btn = JSON.parse(sButtonParam); + const sProName = btn.sproName; + const inParams = []; + // eslint-disable-next-line prefer-destructuring + const inMap = btn.inMap; + const inlist = inMap.split(','); + const masterArr = []; + const slaveArr = []; + const slaveInfoArr = []; + const slaveChildArr = []; + const controlArr = []; + const materialsArr = []; + const processArr = []; + + + if (inlist.length > 0) { + inlist.forEach((item) => { + const itemArr = item.split('.'); + if (itemArr.length > 0) { + const sname = itemArr[0]; + const stype = itemArr[1]; + if (commonUtils.isNotEmptyStr(sname) && sname === 'master') { + masterArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') { + slaveArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') { + slaveInfoArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveChild') { + slaveChildArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'control') { + controlArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') { + materialsArr.push(stype); + } + if (commonUtils.isNotEmptyStr(sname) && sname === 'process') { + processArr.push(stype); + } + } + }); + + if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) { + const addState = {}; + addState.key = 'master'; + const val = []; + const currVal = {}; + masterArr.forEach((filed) => { + currVal[`${filed}`] = masterData[`${filed}`]; + }); + val.push(currVal); + addState.value = val; + inParams.push({ ...addState }); + } + if (commonUtils.isNotEmptyArr(slaveArr)) { + const addState = this.handleProParams('slave', slaveArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(slaveInfoArr)) { + const addState = this.handleProParams('slaveInfo', slaveInfoArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(slaveChildArr)) { + const addState = this.handleProParams('slaveChild', slaveChildArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(controlArr)) { + const addState = this.handleProParams('control', controlArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(materialsArr)) { + const addState = this.handleProParams('materials', materialsArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(processArr)) { + const addState = this.handleProParams('process', processArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + } + console.log('inParams', inParams); + iResult = await this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue })); + return iResult; + }; + // 存储过程按钮调用存储过程 + handleProcedureCall = async (btnConfig, proName, proInParam) => { + const { + app, + sModelsId, + // salveData, + // slaveFilterCondition, + } = this.props; + let iResult = 0; + let { masterData} = this.props; + let { slaveChildData } = this.props; + const value = { sProName: proName, sProInParam: proInParam }; + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + iResult = returnData.code; + if (returnData.code === 1) { + Toast.success(returnData.msg); + this.props.onButtonClick('BtnRefresh'); + if(sModelsId === '12710101117254593440940' || btnConfig.sControlName === 'BtnEventBind'){ + if(commonUtils.isNotEmptyObject(masterData)) { + // if(document.getElementById('sBarcode')) { + // document.getElementById('sBarcode').value = ''; + // } + const addState ={}; + addState.sBarcode1 = ''; + addState.sBarcode = ''; + addState.sBoardName = ''; + addState.sSlaveLength = 0; + slaveChildData = []; + masterData = {...masterData, ...addState}; + this.props.onSaveState({ masterData, slaveChildData }); + } + } + + } else { + this.props.getServiceError(returnData); + } + return iResult + } + // 根据配置解析拼接具体参数 + handleProParams = (sKey, arr) => { + const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props; + let keyData = commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys) ? tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)) : []; + if(sKey === 'slaveChild' && commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmptyArr(selectedRowKeys)) { + keyData = tableData; + } + if (commonUtils.isNotEmptyArr(keyData)) { + const addState = {}; + addState.key = sKey; + const val = []; + keyData.forEach((currData) => { + const currVal = {}; + arr.forEach((filed) => { + currVal[`${filed}`] = currData[`${filed}`]; + }); + val.push(currVal); + }); + addState.value = val; + return addState; + } else { + return undefined; + } + }; + + handleClick = async (name) => { + if (name.startsWith('BtnEvent')) { + const btnConfig = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0];// sButtonEnabled sButtonParam + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { + // this.handleBtnEent(btnConfig); + /* 根据接口返回是之前调用还是之后调用 */ + const interfaceArr = commonUtils.isNotEmptyObject(btnConfig) ? btnConfig.interface :[]; + this.props.onSaveState({ + loading: true, + }); + /* 根据接口返回是之前调用还是之后调用 */ + let flag = 0; + if(commonUtils.isNotEmptyArr(interfaceArr)) { + const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" ); + const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" ); + if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */ + // beforeInterfaceArr.forEach((item) => { + // this.handleInterfaceCall(item); + // }); + const asyncFunc = async () => { + for (let i = 0; i < beforeInterfaceArr.length; i ++) { + const data = await this.handleInterfaceCall(beforeInterfaceArr[i]); + if (!data) { + flag += 1; + return; + } + } + } + await asyncFunc(); + + } + let result; + if (flag == 0) { + result = await this.handleBtnEent(btnConfig) + } else { + this.props.onSaveState({ + loading: false, + }); + } + if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */ + if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */ + const asyncFunc = async () => { + for (let i = 0; i < afterInterfaceArr.length; i++) { + await this.handleInterfaceCall(afterInterfaceArr[i],true); + } + } + await asyncFunc(); + } + } + } else{ + this.handleBtnEent(btnConfig); + } + } else { + Toast.fail('请配置按钮的存储过程'); + } + } else { + this.props.onButtonClick(name); + } + } + /* 调用后台配置的接口 */ + handleInterfaceCall = async (obj, showTip, key, ids) => { + let bResult = false; + const { app, sModelsId, masterData, slaveSelectedRowKeys, slaveData, masterConfig, slaveFilterCondition } = this.props; + const sInterfaceName = obj.sInterfaceName; + /* 如果key是BtnSendList 传从表的主键集合 */ + let idArr = ''; + /* 如果有对应字段 则取对应字段 ,否则 取默认值 */ + const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ? + masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {}; + + let sActiveKey = ''; + if(commonUtils.isNotEmptyObject(btnConfig)) { + sActiveKey = btnConfig.sActiveKey; + } + if(sActiveKey) { + if( sActiveKey.includes('master.sId')) { + idArr = masterData.sId; + } + } else if(key && (key.includes('BtnSendList') || key.includes('BtnBatchExamine'))) { + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + slaveSelectedRowKeys.forEach((item) => { + if(commonUtils.isNotEmptyObject(item)) { + idArr += `${item},`; + } + }); + idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : ''; + } + } else if(location.pathname.includes('commobileList')){ + const { slaveSelectedRowKeys, slaveData } = this.props; + let { slaveSelectedData } = this.props; + if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) { + slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); + } + const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据 + + if(commonUtils.isNotEmptyArr(slaveSelectedDataNew)) { + slaveSelectedDataNew.forEach((item) => { + if(commonUtils.isNotEmptyObject(item)) { + idArr += `${item.sId},`; + } + }); + idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : ''; + } + if(commonUtils.isNotEmptyObject(ids)) { /* 如果是勾选多行 则sId为循环的每一条 */ + idArr = ids; + } + } else { + idArr = masterData.sId; + } + const value = { sId: commonUtils.isNotEmptyObject(idArr) ? idArr : commonUtils.isNotEmptyObject(ids) ? ids : masterData.sId, sSlaveId: slaveSelectedRowKeys?.toString(), masterData, userInfo: app.userinfo }; + if(location.pathname.includes('commonList') && commonUtils.isNotEmptyArr(slaveFilterCondition)){ + value.bFilter = JSON.stringify(slaveFilterCondition) ; + } + const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url, app)).data; + if(!returnData) { + Toast.fail('接口调用失败!'); + return false; + } + if (returnData.code === 1) { + bResult = true; + // message.success(returnData.msg); + }else if (returnData.code === 2) { + // Modal.info({ + // title: '温馨提示:', + // content: ( + //
    + // {this.handleGetMsg(returnData.msg)} + //
    + // ), + // okText: '确认', + // onOk() {}, + // }); + bResult = true; + } else if (returnData.code === -8) { + Modal.info({ + title: '温馨提示:', + content: ( +
    + {this.handleGetMsg(returnData.msg)} +
    + ), + okText: '确认', + onOk() {}, + }); + bResult = false; + } else { + bResult = false; + this.props.getServiceError(returnData); + } + /* 若配置的是按钮后调用第三方, 则调用成功后 需要重新回刷一次数据 */ + if(commonUtils.isNotEmptyObject(obj) && obj.sInterfaceCallMethod === "2"){ + if(bResult){ + this.props.onButtonClick('BtnRefresh'); + } + } + return bResult; + } + /** 渲染 */ + render() { + const { buttonConfig, btnStyle, divStyle } = this.state; + const { + masterData, sModelsId, slaveSelectedRowKeys, slaveData, + } = this.props; + /* 手机端通用拍照上传功能 */ + let btnUpdConfig = {}; + if (commonUtils.isNotEmptyArr(buttonConfig)) { + const iIndex = buttonConfig.findIndex(item => item.sControlName.includes('BtnUpdPic')); + if (iIndex > -1) { + btnUpdConfig = buttonConfig[iIndex]; + } + } + let sSlaveId = ''; + let selectedsId = ''; /* 列表选中行或窗体sFormId */ + let selectedRow = {}; + const bList = location.pathname === '/indexMobile/commobileList'; + + if (commonUtils.isNotEmptyArr(slaveData)) { + let iIndex = -1; + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + iIndex = 0; + } else { + iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + } + if (iIndex > -1) { + selectedRow = slaveData[iIndex]; + selectedsId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sFormId) ? selectedRow.sFormId : '') : ''; /* 列表从表的sFormId */ + sSlaveId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sSlaveId) ? selectedRow.sSlaveId : '') : ''; /* 列表从表的sSlaveId */ + } + } + /* 如果配置按钮有sqlConditon条件 则根据SQLCondition条件 否则走正常 */ + let conditonValues = { sSrcId: bList ? selectedsId : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '' }; + if (commonUtils.isNotEmptyObject(btnUpdConfig) && btnUpdConfig.sSqlCondition) { + /* 选中行 */ + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + if (iIndex > -1) { + if (commonUtils.isNotEmptyObject(selectedRow)) { + conditonValues = this.props.getSqlCondition(btnUpdConfig, 'slave', selectedRow); + } + } + } + } + + const filemanageType = { + app: { + ...this.props.app, + currentPane: { + name: 'elefilfilemanage', + config: btnUpdConfig, + conditonValues, + title: '上传', + route: '/elefilfilemanage', + formId: '15864832090002447752315825731600', + key: `${sModelsId}15864832090002447752315825731600`, + sModelsType: 'element/filfilemanage', + sSrcNo: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? selectedRow.sBillNo : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sBillNo : ''), /* 源单号 */ + sSrcFormId: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? sModelsId : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sFormId : ''), /* 源单窗体Id */ + sSrcId: bList ? (commonUtils.isNotEmptyObject(selectedRow) ? selectedRow.sId : '') : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '', /* 源单Id */ + sSrcSlaveId: commonUtils.isNotEmptyObject(sSlaveId) ? sSlaveId : '', /* 工单控制表选中行或列表的是sSlaveId */ + onFilfileOk: this.handleFilfileManageOk, + onFilfileCancel: this.handleFilfileManageCancel, + }, + }, + config: btnUpdConfig, + sModelsId: '15864832090002447752315825731600', + enabled: true, /* this.props.enabled */ + dispatch: this.props.dispatch, + content: this.props.content, + id: new Date().getTime().toString(), + btnStyle, + }; + + return ( +
    + {commonUtils.isEmptyArr(buttonConfig) ? '' : + buttonConfig.map((item) => { + if (!commonConfig.isWeiXin && item.sControlName.includes('BtnUpdPic')) { + return ( + + ); + } else if (true && item.sControlName.includes('BtnUpdPic')) { + return ( + + ); + } else if (item.sControlName.includes('BtnShowPic')) { + return ( + ); + } + return (); + })} +
    + + ); + } +} + +export default CommobileToolBar; diff --git a/src/mobile/common/CommobileView.js b/src/mobile/common/CommobileView.js new file mode 100644 index 0000000..9f5b834 --- /dev/null +++ b/src/mobile/common/CommobileView.js @@ -0,0 +1,63 @@ +/** + * Created by mar105 on 2019-02-27. + */ +/* eslint-disable object-curly-newline,prefer-destructuring */ +import React, { Component } from 'react'; +import { List } from 'antd-mobile'; +import ShowType from './CommobileComponent'; +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ + +export default class CommobileView extends Component { + shouldComponentUpdate(nextProps) { + const { masterData, enabled } = this.props; + return masterData !== nextProps.masterData || enabled !== nextProps.enabled; + } + + render() { + const { masterConfig, sModelsId, enabled, sUseInfo, app } = this.props; + let { masterData } = this.props; + masterData = masterData === undefined ? {} : masterData; + const masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + return ( + + { + masterShowConfig.map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + record: masterData, + name: 'master', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: masterData[child.sName], + bTable: false, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + }) + } + + ); + } +} diff --git a/src/mobile/common/CommobileViewMaster.js b/src/mobile/common/CommobileViewMaster.js new file mode 100644 index 0000000..51cd875 --- /dev/null +++ b/src/mobile/common/CommobileViewMaster.js @@ -0,0 +1,108 @@ +/** + * Created by mar105 on 2019-02-27. + */ +/* eslint-disable object-curly-newline,prefer-destructuring */ +import React, { Component } from 'react'; +import { List, Flex } from 'antd-mobile'; +import ShowType from './CommobileComponent'; +import * as commonUtils from '../../utils/utils'; +import styles from '../mobile.less'; /* 通用方法 */ + +export default class CommobileViewMaster extends Component { + handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => { + this.props.onMasterFieldScan(fieldConfig, tbName, record, newValue, cancelValue); + } + handleMobileScan = (fieldConfig, tbName, record, newValue, cancelValue) => { + this.props.onMobileScan(fieldConfig, tbName, record, newValue, cancelValue); + } + handleFocus = (fieldConfig) => { + this.props.onFocus(fieldConfig); + } + + handleBlur = (fieldConfig) => { + this.props.onBlur(fieldConfig); + } + + render() { + const { masterConfig, masterData, sModelsId, enabled, sUseInfo, app, iTag, bOpenKeyboard } = this.props; + let masterShowConfig; + if (iTag === 1) { + masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1) : []; + } else { + masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag !== 1) : []; + } + + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + return ( +
    + { + // eslint-disable-next-line array-callback-return + masterShowConfig.map((child, index) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const bNotViewTitle = child.bNotViewTitle; /* 不显示标题 */ + const iRowNum = child.iColValue === 1 ? 24 : 1; /* 每个字段占的网格个数 ,网格总个数是24 */ + const iColValue = sMemo ? 24 : child.iColValue * iRowNum; /* 跨度 */ + // eslint-disable-next-line no-unused-vars + const iRowValue = commonUtils.isEmptyNumber(child.iRowValue) || child.iRowValue === 0 ? 1 : child.iRowValue; /* 行高 */ + const showTypeProps = { + app, + record: masterData, + sId: masterData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'master', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onChange, + onFocus: this.handleFocus, + onBlur: this.handleBlur, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: masterData[child.sName], + bTable: false, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + onFieldScan: this.handleMasterFieldScan, + onMobileScan: this.handleMobileScan, + bOpenKeyboard, + }; + if (child.iTag === 1) { + if (index > -1) { + return ( +
    + + { + bNotViewTitle ? + <> {masterData[child.sName]} + : + <>
    {child.showName}
    {masterData[child.sName]} + } +
    +
    + ); + } + } else { + return ( + + + + ); + } + }) + } +
    + ); + } +} diff --git a/src/mobile/common/CommobileViewSlave.js b/src/mobile/common/CommobileViewSlave.js new file mode 100644 index 0000000..5d0ac43 --- /dev/null +++ b/src/mobile/common/CommobileViewSlave.js @@ -0,0 +1,83 @@ +/** + * Created by mar105 on 2019-02-27. + */ +/* eslint-disable object-curly-newline,prefer-destructuring */ +import React, { Component } from 'react'; +import { List } from 'antd-mobile'; +import ShowType from './CommobileComponent'; +import * as commonUtils from '../../utils/utils'; +import styles from '../mobile.less'; /* 通用方法 */ + +export default class CommobileView extends Component { + // shouldComponentUpdate(nextProps) { + // const { slaveData, enabled } = this.props; + // return JSON.stringify(slaveData) !== JSON.stringify(nextProps.slaveData) || enabled !== nextProps.enabled; + // } + + render() { + const { slaveConfig, slaveData, sModelsId, enabled, sUseInfo, app, iTag } = this.props; + const slaveDataRow = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0]; + let masterShowConfig; + if (iTag === 1) { + masterShowConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1) : []; + } else { + masterShowConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag !== 1) : []; + } + + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + return ( +
    + { + // eslint-disable-next-line array-callback-return + masterShowConfig.map((child, index) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + record: slaveDataRow, + sId: slaveDataRow.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: slaveDataRow[child.sName], + bTable: false, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + if (child.iTag === 1) { + if (index > 9) { + return ( +
    +
    {child.showName} : {showTypeProps.dataValue}
    +
    + ); + } + } else { + return ( + + + + ); + } + }) + } +
    + ); + } +} diff --git a/src/mobile/common/ContactsInfoMobile.js b/src/mobile/common/ContactsInfoMobile.js new file mode 100644 index 0000000..f4456ee --- /dev/null +++ b/src/mobile/common/ContactsInfoMobile.js @@ -0,0 +1,45 @@ +import React from 'react'; +import { Grid, Result } from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import styles from '../mobile.less'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import CommobileView from './CommobileView'; +// import * as commonUtils from '../../utils/utils'; + +const arr = ['https://gw.alipayobjects.com/zos/rmsportal/nywPmnTAvTmLusPxHPSu.png', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg']; +const data1 = Array.from(new Array(4)).map((_val, i) => ({ + icon: arr[i], +})); +// eslint-disable-next-line no-useless-concat +const myImg = src => ; +class ContactsInfoMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + }; + } + + + render() { + const { personPic } = this.props; + return ( +
    + {masterData.sPositionName}
    } + /> + + +
    + ); + } +} + +const ContactsInfoMobileComponent = createForm()(ContactsInfoMobile); + +export default CommobileBase(CommobileBillEvent(ContactsInfoMobileComponent)); + diff --git a/src/mobile/common/ContactsMobile.js b/src/mobile/common/ContactsMobile.js new file mode 100644 index 0000000..8f47691 --- /dev/null +++ b/src/mobile/common/ContactsMobile.js @@ -0,0 +1,125 @@ +import React from 'react'; +import { ListView } from 'antd-mobile'; +import styles from '../mobile.less'; +// eslint-disable-next-line import/first +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import CommobileSearchComponent from './CommobileSearchComponent'; +import commonConfig from '../../utils/config'; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); + +class ContactsMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + personPic: 'https://zos.alipayobjects.com/rmsportal/dKbkpPXKfvZzWCM.png', + // height: ( document.documentElement.clientHeight * 3) / 4, + }; + } + + + onEndReached = async () => { + if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) { + const { slaveFilterCondition, slaveData: slaveDataOld } = this.props; + const slaveData = [...slaveDataOld]; + const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, this.props.slavePagination.current + 1, true); + addState.slaveData = slaveData.concat(addState.slaveData); + this.props.onSaveState({ ...addState }); + // this.state = { + // isLoading: true, + // }; + } + } + + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + + handleGridClick = (el) => { + const { dispatch } = this.props; + const { slaveConfig } = this.props; + const { gdsconfigformslave } = slaveConfig; + // eslint-disable-next-line no-plusplus + for (let i = 0; i < gdsconfigformslave.length; i++) { + if (gdsconfigformslave[i].sName === 'picArr') { + this.sActiveId = gdsconfigformslave[i].sActiveId; + } + } + dispatch({ + type: 'content/onRouterMobile', + payload: { + url: '/indexMobile/contactsInfo', + sModelsId: this.sActiveId, + sId: el.sId, + personPic: this.state.personPic, + slaveData: this.props.slaveData, + }, + }); + }; + + + render() { + const { slaveData: slaveDataOld } = this.props; + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + + const row = (rowData, sectionID, rowID) => { + const obj = rowData; + return ( +
    +
    + +
    +
    {obj.sEmployeeName}
    +
    {obj.sDepartName}
    +
    +
    +
    + ); + }; + + return ( +
    + +
    + ( +
    + {this.props.isLoading ? '加载中...' : '加载完毕'} +
    )} + renderRow={row} + style={{ + // height: this.state.height, + position: 'absolute', + overflow: 'auto', + bottom: 0, + top: 0, + width: '100%', + }} + pageSize={commonConfig.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> +
    +
    + ); + } +} +export default CommobileBase(CommobileListEvent(ContactsMobile)); + diff --git a/src/mobile/common/DeviceMobile.js b/src/mobile/common/DeviceMobile.js new file mode 100644 index 0000000..b6ecaa8 --- /dev/null +++ b/src/mobile/common/DeviceMobile.js @@ -0,0 +1,301 @@ +/* eslint-disable prefer-destructuring */ +/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */ +import React from 'react'; +import { Tabs, Badge, SearchBar, ListView, Modal, List, Button } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import styles from '.././mobile.less'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import * as commonUtils from '../../utils/utils'; + +// function MyBody(props) { +// return ( +//
    +// you can custom body wrap element +// {props.children} +//
    +// ); +// } + + +// const prompt = Modal.prompt; +const operation = Modal.operation; + + +const tabs = [ + { title: 全部数据v }, + { title: 筛选.. }, +]; + + +class DeviceMobile extends React.Component { + constructor(props) { + super(props); + + const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, + }); + + this.state = { + dataSource: dataSource.cloneWithRows({}), + isLoading: true, // 判断是否正在加载中 + modal1: false, + height: document.documentElement.clientHeight * 3 / 4, + totalData: [], + pageSize: 5, + pageIndex: 1, + hasMore: true, // 判断是否有更多 + }; + } + async componentWillMount() { + let { sModelType } = this.props; + sModelType = commonUtils.isEmptyObject(sModelType) ? 'device' : sModelType; + const { token } = this.props.app; + const configUrl = `${commonConfig.server_host}mobilephone/getMenu/${sModelType}?sModelsId=100`; + const configReturn = (await commonServices.getService(token, configUrl)).data; + if (configReturn.code === 1) { + const returnData = configReturn.dataset.rows[0];/* 全部数据 */ + if (commonUtils.isNotEmptyArr(returnData)) { + const sModelsId = returnData.sId; + const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`; + const configReturn = (await commonServices.getService(token, configUrl)).data; + if (configReturn.code === 1) { + const [configData] = configReturn.dataset.rows; + const masterConfig = configData.formData.filter(item => item.bGrd)[0]; + if (commonUtils.isNotEmptyArr(masterConfig)) { + this.setState({ masterConfig, sModelsId }); + } + const configDataId = masterConfig.sId; + + const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, { pageNum: this.state.pageIndex, pageSize: this.state.pageSize }, dataUrl)).data; + if (configReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const dT = dataReturn.dataset.rows; + if (dT.length > 0) { + this.setState({ totalData: dT[0].dataSet }); + this.getInitData(); + } + } + } + } + } + } + } + // componentDidMount() { + // } + + + onEndReached = async (event) => { + // load new data + // hasMore: from backend data, indicates whether it is the last page, here is false + if (this.state.isLoading && !this.state.hasMore) { + return; + } + console.log('reach end', event); + this.setState({ isLoading: true, hasMore: true }); + // var token=this.state.token; + const { token } = this.props.app; + let currpagedata = []; + // var size=this.state.pageSize; + // var status=this.state.status; + const configDataId = this.state.masterConfig.sId; + const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${this.state.sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, { pageNum: this.state.pageIndex, pageSize: this.state.pageSize }, dataUrl)).data; + console.log('===pageNum====', this.state.pageIndex); + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const dT = dataReturn.dataset.rows; + if (dT.length > 0) { + currpagedata = dT[0].dataSet; + } + } + } + setTimeout(() => { + const priortotalData = this.state.totalData; // 小于 pageIndex 的订单 + this.rData = priortotalData.concat(currpagedata); + this.setState({ + dataSource: this.state.dataSource.cloneWithRows(this.rData), + isLoading: false, + pageIndex: this.state.pageIndex + 1, + totalData: this.rData, + }); + }, 1000); + } + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + + getInitData=() => { + this.setState({ + isLoading: true, hasMore: true, pageIndex: 1, + }); + // const that = this; + // 取第一页订单 作为初始 + // const page = 1; + // const size = this.state.pageSize; + // that.props.orderAction.getOrderList({ + // token, status, page, size, + // }); + const dT = this.state.totalData; + if (dT.length > 0) { + setTimeout(() => { + this.rData = this.genData(); + this.setState({ + dataSource: this.state.dataSource.cloneWithRows(this.rData), + isLoading: false, + pageIndex: this.state.pageIndex + 1, + }); + }, 600); + } + } + genData() { + const dataArr = []; + let order = []; + // const order = this.props.order.orderList; + const dT = this.state.totalData; + if (dT.length > 0) { + order = dT; + for (let i = 0; i < order.length; i += 1) { + dataArr.push(order[i]); + } + } + return dataArr; + } + + + render() { + const { masterConfig } = this.state; + if (masterConfig === undefined) { + return (
    ); + } + + const f1 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[0]; + const f2 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[1]; + const f3 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[2]; + const f4 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[3]; + const f5 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[4]; + const separator = (sectionID, rowID) => ( +
    + ); + const row = (rowData, sectionID, rowID) => { + const obj = rowData; + return ( +
    +
    {f1.showName}:{obj[f1.sName]} + {obj[f2.sName]} +
    +
    +
    +
    {f3.showName}:{obj[f3.sName]}
    +
    {f4.showName}:{obj[f4.sName]} + {f5.showName}: + {obj[f4.sName]} + + + {masterConfig.gdsconfigformslave.filter(item => item.bVisible).map((item, iIndex) => { + if (iIndex > 5) { + return (
    item.showName:{obj[item.sName]}
    ); + } else { + return (''); + } + })} +
    +
    +
    +
    + ); + }; + return ( + +
    + + + { console.log('onChange', index, tab); }} + onTabClick={(tab, index) => { + if (index === 0) { + operation([ + { text: '全部单据', onPress: () => console.log('标为未读被点击了') }, + { text: '已审核单据', onPress: () => console.log('置顶聊天被点击了') }, + { text: '本月单据', onPress: () => console.log('置顶聊天被点击了') }, + ]); + } else { + this.setState({ + modal1: true, + }); + } +}} + > +
    +
    + + + + { this.lv = el; }} + dataSource={this.state.dataSource} + // initialListSize={5} // 进入页面时记录数 + // renderHeader={() => header} + renderFooter={() => ( +
    + {this.state.isLoading ? 'Loading...' : 'Loaded'} +
    )} + renderRow={row} + renderSeparator={separator} + style={{ + height: this.state.height, + overflow: 'auto', + }} + pageSize={this.state.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> + + { alert('afterClose'); }} + > +
    筛选条件
    } > + {['股票名称', '股票代码', '买入价格'].map((i, index1) => ( + {i} + ))} + + + +
    +
    +
    + + + ); + } +} + +export default DeviceMobile; diff --git a/src/mobile/common/ExamineMobile.js b/src/mobile/common/ExamineMobile.js new file mode 100644 index 0000000..95f9737 --- /dev/null +++ b/src/mobile/common/ExamineMobile.js @@ -0,0 +1,581 @@ +/* eslint-disable */ +import React from 'react'; +import { Flex, Button, ListView, Toast, TextareaItem, Steps, WhiteSpace, WingBlank } from 'antd-mobile'; +import { DownlandOutline, ArrowDownCircleOutline, CheckCircleFill, ClockCircleFill, HandPayCircleOutline, InformationCircleOutline, } from 'antd-mobile-icons' +import { Space, Dropdown, Menu } from 'antd'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import CommobileViewMaster from './CommobileViewMaster'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import CommobileToolBar from './CommobileToolBar'; +import styles from '../mobile.less'; +import add from '../../assets/mobile/add-select.svg'; +import scan from '../../assets/mobile/scanning.svg'; +import close from '../../assets/mobile/close.svg'; +import * as commonFunc from '../../components/Common/commonFunc'; +import BarCodeUtil from './BarCodeUtil'; +import preView from '../components/preView'; +import WaterWave from "../../components/Charts/WaterWave"; +import * as commonServices from "../../services/services"; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +const { Step } = Steps +class CommobileExamine extends React.Component { + constructor(props) { + super(props); + this.state = { + }; + } + + // eslint-disable-next-line react/sort-comp + handleClick = async (name, type, sId) => { + const { masterData, app } = this.props; + const userinfo = app.userinfo; + if (name === 'BtnRefuse' || name === 'BtnAgree') { + if(name ==='BtnRefuse') { + masterData.approved = false; + if(commonUtils.isEmpty(this.state.textareaValue)) { + Toast.fail('需要输入驳回内容!'); + return; + } + } else if(name ==='BtnAgree') { + masterData.approved = true; + } + if(this.state.textareaValue) { + masterData.sCommentMemo = this.state.textareaValue; + } + const url = `${commonConfig.server_host}currencyFlow/completeerp/${userinfo.sBrandsId}/${userinfo.sSubsidiaryId}/${userinfo.sUserName}`; + const value ={ + flow: masterData, + } + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if(commonUtils.isNotEmptyObject(returnData)) { + if (returnData.code === 0) { + window.history.back(-1); + } else { + Toast.fail(returnData.msg); + } + } else { + Toast.info ('操作失败!'); + } + } else if(name === 'BtnEntrust') { /* 委托 */ + if(commonUtils.isNotEmptyObject(type)) { + const url = `${commonConfig.server_host}currencyFlow/completeerp/${userinfo.sUserName}/${userinfo.sBrandsId}/${userinfo.sSubsidiaryId}`; + // const url = commonConfig.flow_host + 'process/delegatePhone/' + userinfo.sUserName + '/' + userinfo.sBrandsId + '/'+ userinfo.sSubsidiaryId + '/' ; + const value ={ + taskId: masterData.sTaskId, + delegateToUser: type.sUserName + } + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if(commonUtils.isNotEmptyObject(returnData)) { + if (returnData.code === 0) { + window.history.back(-1); + } else { + Toast.fail(returnData.msg); + } + } else { + Toast.info ('操作失败!'); + } + } + } else if (name === 'BtnSave') { + this.props.onSubmit(); + } else if (name === 'BtnUpd') { + this.props.onEdit(name); + } else if (type === 'add') { + this.props.onDataRowAdd(name); + } else if (type === 'del') { + const { app, [`${name}Data`]: tableData } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (sId !== '') { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + } + } else if (type === 'scan') { + BarCodeUtil.startScan(async (type, code) => { + const { + slaveConfig, sModelsId, masterData, slaveData, sModelsType, + } = this.props; + // const slaveData = []; + let slaveDataObj = {}; + let masterdataObj = {}; + let slaveDataObjAdd = {}; + let masterDataObjAdd = {}; + const codeArr = code.split('|'); + if (sModelsType === 'materialsStock/productionmaterials') { + const dataStr = codeArr[10].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sMaterialsStyle: codeArr[1], + sDefineNo: codeArr[4], + sDefineNo2: codeArr[5], + dAuxiliaryQty: codeArr[7], + tInStoreDate: date, + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId'); + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId'); + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : ''; + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + + let materialsNameDropDownData = []; + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') { + materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + // } + let materialsNameDataOne; + let sWareHouseNameDataOne; + let sLocationNameDataOne; + if (!commonUtils.isEmpty(materialsNameDropDownData)) { + materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]); + } + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let materialsDataDetiale = {}; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) }; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...materialsDataDetiale, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sLocationNameDataDetiale, + }; + masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale }; + } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货 + const dataStr = codeArr[12].replace(/-/g, '/'); + const date = new Date(dataStr); + slaveDataObjAdd = { + sOrderNo: codeArr[9], + sWorkOrderNo: codeArr[8], + sCustomerOrderNo: codeArr[10], + sCustomerProductNo: codeArr[11], + sDefineNo: codeArr[3], + sDefineNo2: codeArr[4], + dProductQty: codeArr[6], + tInStoreDate: date, + }; + masterDataObjAdd = { + sCustomerShort: codeArr[7], + }; + const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : ''; + const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称 + const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位 + const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称 + + + const onDataRowAdd = this.props.onDataRowAdd(name, true); + const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : ''; + const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : ''; + const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : ''; + + + let sWareHouseNamedropDownData = []; + let sLocationNamedropDownData = []; + let sProductNamedropDownData = []; + if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') { + sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData); + } + if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') { + sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData); + } + if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') { + sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData); + } + let sWareHouseNameDataOne; + let sLocationNameDataOne; + let sProductNameDataOne; + if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) { + sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]); + } + if (!commonUtils.isEmpty(sLocationNamedropDownData)) { + sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]); + } + if (!commonUtils.isEmpty(sProductNamedropDownData)) { + sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + let sWareHouseNameDataDetiale = {}; + let sLocationNameDataDetiale = {}; + let sProductNameDataDetiale = {}; + sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) }; + sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) }; + sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) }; + slaveDataObj = { + ...onDataRowAdd, + ...sWareHouseNameDataDetiale, + ...slaveDataObjAdd, + ...sProductNameDataDetiale, + ...sLocationNameDataDetiale, + }; + masterdataObj = { + ...masterData, + ...sLocationNameDataDetiale, + ...masterDataObjAdd, + ...sWareHouseNameDataDetiale, + }; + } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */ + const { masterConfig } = this.props; + /* 取第一条码 */ + const sDefineNo = codeArr[0]; + /* 如果条码已存在,提示 */ + const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo); + if (iIndex > -1) { + Toast.fail('条码已存在!!!', 1); + return; + } + masterdataObj = { + ...masterData, + }; + /* 读取扫码配置 */ + const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1); + const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : ''; + slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段 + slaveDataObj.sDefineNo = sDefineNo; + slaveDataObj.sId = commonUtils.createSid(); + if (commonUtils.isNotEmptyArr(slaveData)) { + const len = slaveData.length; + const sDefineNoNew = slaveData[len - 1].sDefineNo; + const { handleType } = slaveData[len - 1]; + /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */ + if (commonUtils.isEmptyArr(sDefineNoNew)) { + slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + slaveData[len - 1] = slaveDataObj; + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + } else { + slaveDataObj.handleType = 'add'; + slaveData.push(slaveDataObj); + } + this.handleClick('slave', 'scan'); /* 连续扫码 */ + } else { + Toast.fail('二维码不存在!!!', 1); + } + if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') { + slaveData.push(slaveDataObj); + } + this.props.onSaveState({ slaveData, masterData: masterdataObj }); + }); + } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */ + this.handleCamera(); + } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */ + this.handleGetPhoto(); + } else if (name === 'BtnCancel') { + window.history.back(-1); + } else if (name === 'BtnExamine') { + this.props.onAudit(1); + } else if (name === 'BtnCancelExamine') { + /* 销审 */ + this.props.onAudit(0); + } + } + + /* 设置textareaValue */ + handleTextareaChange = (val) => { + this.setState({ + textareaValue: val, + }); + } + handleCamera = () => { + BarCodeUtil.getImage(); + } + handleGetPhoto = () => { + BarCodeUtil.getPhoto(); + } + getViewValue = (showConfig, record) => { + let sValue = record === undefined ? undefined : record[showConfig.sName]; + if (showConfig.sDropDownType === 'const') { + let showDropDown = []; + if (typeof showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown)); + } + let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString()); + if (iIndex === -1 && record[showConfig.sName] === '') { + iIndex = showDropDown.findIndex(item => item.sId === ''); + } + sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName]; + } + return sValue; + }; + + render() { + const { + slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, userEntrustData, + } = this.props; + onReturnForm(this.props.form); + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0]; + const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1]; + const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2]; + const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3]; + const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4]; + const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5]; + const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6]; + const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7]; + const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8]; + const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9]; + const sFilePathConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sName === 'sFilePath') : []; + const memoConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sName === 'sCommentMemo') : []; + const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ + const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + const sFileNameText = commonUtils.isNotEmptyObject(masterData) ? masterData.sFileName : ''; + const sFilePath = commonUtils.isNotEmptyObject(masterData) ? masterData.sFilePath : ''; + const sFilePathText = commonUtils.isNotEmptyObject(sFilePath) ? sFilePath.replace('{ipAddress}', location.host) : ''; + // const sFilePathText = commonUtils.isNotEmptyObject(sFilePath) ? sFilePath.replace('{ipAddress}', '113.90.147.40:7070') : ''; + const menu = ( + + { commonUtils.isNotEmptyArr(userEntrustData) && userEntrustData.map((item) => { + return ( + + this.handleClick('BtnEntrust', item)} > + {item.sUserName} + + + ); + }) + } + + ); + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + { + slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ? + + + : '' + } + { + slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ? + + + : '' + } + + {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + masterData, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'slave', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.props.onDataChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + })} + {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => { + if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) { + const { token } = app; + let imgBox = ''; + const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : ''; + const previewImageArr = []; + if (commonUtils.isNotEmptyArr(picAddr)) { + picAddr.forEach((item) => { + const dataPreviewUrl = `${commonConfig.server_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */ + previewImageArr.push(dataPreviewUrl); + }); + const dataUrl = `${commonConfig.server_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */ + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions + imgBox =
    img 0} onClick={e => preView(previewImageArr, e)} />
    ; + } + return imgBox; + } else { + return ''; + } + })} +
    + ); + }; + return ( +
    +
    +
    + +
    + { + commonUtils.isNotEmptyArr(sFilePathConfig)? +
    :'' + } + { + commonUtils.isNotEmptyArr(memoConfig)? + this.handleTextareaChange(val)} + /> : '' + } + {commonUtils.isEmptyArr(slaveDataOld2) ? '': +
    + + { + slaveDataOld2.map((child) => { + const des = (
    +

    {commonUtils.isNotEmptyObject(child.sHandleName) ? '办理人:' + child.sHandleName :''}

    +

    {commonUtils.isNotEmptyObject(child.sContent) ? child.sContent :''}

    +

    {commonUtils.isNotEmptyObject(child.tStartDate) ? '接收时间:' + child.tStartDate :''}

    +

    {commonUtils.isNotEmptyObject(child.tEndDate) ? '完结时间:' + child.tEndDate :''}

    ); + return ( + : child.sState === 'wait' ? : } + /> + ); + }) + } +
    + {/* {}}*/} + {/* scrollRenderAheadDistance={500}*/} + {/* onEndReachedThreshold={10}*/} + {/* className={styles.listView}*/} + {/*/>*/} +
    + } + { + sModelsId === '192116812112116672690047620' ? +
    + + + + + +
    + : '' + } + +
    + ); + } +} + +const CommobileExamineComponent = createForm()(CommobileExamine); + +export default CommobileBase(CommobileBillEvent(CommobileExamineComponent)); diff --git a/src/mobile/common/ExamineMobile1.js b/src/mobile/common/ExamineMobile1.js new file mode 100644 index 0000000..c049dc4 --- /dev/null +++ b/src/mobile/common/ExamineMobile1.js @@ -0,0 +1,129 @@ +import React from 'react'; +import { Button, Card, TextareaItem, WhiteSpace, WingBlank, ListView } from 'antd-mobile'; +// import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import * as commonUtils from '../../utils/utils'; +import commonConfig from '../../utils/config'; +import CommobileViewMaster from './CommobileViewMaster'; + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +class ExamineMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + }; + } + render() { + const { slaveConfig, slaveData: slaveDataOld, onReturnForm } = this.props; + onReturnForm(this.props.form); + console.log('render', slaveDataOld, slaveConfig, this.props); + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0]; + const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1]; + const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2]; + const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3]; + const separator = (sectionID, rowID) => ( +
    + ); + const row = (rowData, sectionID, rowID) => { + const obj = rowData; + return ( +
    +
    + {obj[f1.sName]} + + {obj[f2.sName]} +
    +
    + {/* */} +
    +
    {obj[f3.sName]}
    +
    {obj[f4.sName]}
    +
    +
    +
    + ); + }; + return ( +
    +
    +
    + +
    +
    + + 4月14日 16:59} + /> + +
    + 单据【XDD200300010】单据审核请求 + 单据日期:2020-03-02 + 单据号:XDD200300010 + 审核内容:订单2金额大于1000 + 备注:请领导尽快批复 +
    +
    + +
    + + + + {/* use `am-button-borderfix`. because Multiple buttons inline arranged, the last one border-right may not display */} + + + +
    +
    +
    + ( +
    + {this.props.isLoading ? 'Loading...' : 'Loaded'} +
    )} + renderRow={row} + renderSeparator={separator} + style={{ + height: this.state.height, + overflow: 'auto', + }} + pageSize={commonConfig.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> +
    +
    + ); + } +} +export default CommobileBase(CommobileBillEvent(ExamineMobile)); diff --git a/src/mobile/common/MessageMobile.js b/src/mobile/common/MessageMobile.js new file mode 100644 index 0000000..096116e --- /dev/null +++ b/src/mobile/common/MessageMobile.js @@ -0,0 +1,228 @@ +import React from 'react'; +// eslint-disable-next-line no-unused-vars +import { Tabs, Badge, ListView, SearchBar } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +// import ExamineMobile from './ExamineMobile'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import styles from '../../routes/mobile/IndexMobile.less'; +import NewsMobile from './NewsMobile'; +// eslint-disable-next-line no-unused-vars +import ExamineMobile from './ExamineMobile'; +// import CommobileBill from './CommobileBill'; + + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +// eslint-disable-next-line no-unused-vars +const tabs = [ + { title: 消息 }, + { title: 待处理 }, + { title: 已处理 }, + { title: 我的申请 }, +]; +class MessageMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + height: (document.documentElement.clientHeight * 3) / 4, + tabPage: 0, + }; + } + + componentWillMount() { + /* 获取配置 */ + this.props.onSaveState({ searchSolution: [] }); + } + + onEndReached = async () => { + if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) { + const addState = await this.props.onGetData(this.props.slaveConfig, [], this.props.slavePagination.current + 1, true); + addState.slaveData = this.props.slaveData.concat(addState.slaveData); + this.props.onSaveState({ ...addState }); + } + } + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + /* 页签切换 */ + // eslint-disable-next-line no-unused-vars + handleTabClick =(index, tab) => { + this.setState({ tabPage: index }); + } + + render() { + const { slaveConfig, slaveData: slaveDataOld } = this.props; + const { tabPage } = this.state; + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0]; + const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1]; + const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2]; + const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3]; + const separator = (sectionID, rowID) => ( +
    + ); + const row = (rowData, sectionID, rowID) => { + const obj = rowData; + return ( +
    +
    + {obj[f1.sName]} + + {obj[f2.sName]} +
    +
    + {/* */} +
    +
    {obj[f3.sName]}
    +
    {obj[f4.sName]}
    +
    +
    +
    + ); + }; + + /* 待处理 */ + const unNewsProps = { + app: { + ...this.props.app, + }, + sModelsId: '192116812112116672655865440', + dispatch: this.props.dispatch, + }; + + /* 已通过 */ + const doneNewsProps = { + app: { + ...this.props.app, + }, + sModelsId: '192116812112116672668106810', + dispatch: this.props.dispatch, + }; + + /* 我的申请 */ + const sendNewsProps = { + app: { + ...this.props.app, + }, + sModelsId: '192116812112116672733801250', + dispatch: this.props.dispatch, + }; + + // eslint-disable-next-line no-unused-vars + const examineProps = { + app: { + ...this.props.app, + }, + sModelsId: '192116812112116672690047620', + sModelType: 'examine', + dispatch: this.props.dispatch, + }; + + return ( +
    + this.handleTabClick(index, tab)} + onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }} + > + + { + tabPage === 0 ? +
    + + ( +
    + {this.props.isLoading ? 'Loading...' : 'Loaded'} +
    )} + renderRow={row} + renderSeparator={separator} + style={{ + height: this.state.height, + overflow: 'auto', + }} + pageSize={commonConfig.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> +
    : '' } + {tabPage === 1 ?
    : ''} + {tabPage === 2 ?
    : ''} + {tabPage === 3 ?
    : ''} + + {/*
    */} + {/* */} + {/* ( */} + {/*
    */} + {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */} + {/*
    )} */} + {/* renderRow={row} */} + {/* renderSeparator={separator} */} + {/* style={{ */} + {/* height: this.state.height, */} + {/* overflow: 'auto', */} + {/* }} */} + {/* pageSize={commonConfig.pageSize} */} + {/* onScroll={() => {}} */} + {/* scrollRenderAheadDistance={500} */} + {/* onEndReached={this.onEndReached} */} + {/* onEndReachedThreshold={10} */} + {/* /> */} + {/*
    */} +
    + {/*
    */} + {/* ( */} + {/*
    */} + {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */} + {/*
    )} */} + {/* renderRow={row} */} + {/* renderSeparator={separator} */} + {/* style={{ */} + {/* height: this.state.height, */} + {/* overflow: 'auto', */} + {/* }} */} + {/* pageSize={commonConfig.pageSize} */} + {/* onScroll={() => {}} */} + {/* scrollRenderAheadDistance={500} */} + {/* onEndReached={this.onEndReached} */} + {/* onEndReachedThreshold={10} */} + {/* /> */} + {/*
    */} +
    + + ); + } +} +export default CommobileBase(CommobileListEvent(MessageMobile)); + diff --git a/src/mobile/common/MyselfMobile.js b/src/mobile/common/MyselfMobile.js new file mode 100644 index 0000000..fae658a --- /dev/null +++ b/src/mobile/common/MyselfMobile.js @@ -0,0 +1,118 @@ +import React from 'react'; +import { Button, List } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +// import ExamineMobile from './ExamineMobile'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import styles from '../mobile.less'; +import setting from '../../assets/mobile/setting.png'; +import mailList from '../../assets/mobile/mailList.png'; +import recommendation from '../../assets/mobile/recommendation.png'; +import CommobileListEvent from './CommobileListEvent'; + +// eslint-disable-next-line prefer-destructuring +const Item = List.Item; + +class myselfMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + sId: props.app.userinfo.sId, + sUserName: props.app.userinfo.sUserName, + sComponanyName: props.app.systemData.findIndex(item => item.sName === 'CbxCompanyName') > -1 ? props.app.systemData.filter(item => item.sName === 'CbxCompanyName')[0].sValue : '', + }; + } + btnOnclick = (value) => { + const { dispatch } = this.props; + const { sId } = this.state; + if (value === 'loginOut') { + const url = `${commonConfig.server_host}logout`; + dispatch({ type: 'app/loginOut', payload: { url, sId, loginOutType: 'loginMobileOut' } }); + } else if (value === 'about') { + window.open('about.html'); + } else { + dispatch({ + type: 'content/onRouterMobile', + payload: { + url: `/indexMobile/${value}`, + }, + }); + } + } + + + render() { + const { sUserName, sComponanyName } = this.state; + const { slaveData } = this.props; + + let sDepartName = ''; + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(sUserName)) { + const findIndex = slaveData.findIndex(item => item.sEmployeeName === 'sUserName'); + if (findIndex > -1) { + // eslint-disable-next-line prefer-destructuring + sDepartName = slaveData[findIndex].sDepartName; + } else { + sDepartName = '暂无'; + } + } + + const sUserNameFirst = sUserName.charAt(0); + return ( +
    +
    +
    {sComponanyName}
    +
    +
    {sUserNameFirst}
    +
    +
    {sUserName}
    +
    {sDepartName}
    +
    +
    +
    + + + 企业通讯录 + + + 修改密码 + + {}} + arrow="horizontal" + style={{ margin: '10px 0' }} + > + 推荐给好友 + + + 关于软件 + + + +
    + ); + } +} + +export default CommobileBase(CommobileListEvent(myselfMobile)); diff --git a/src/mobile/common/NewsMobile.js b/src/mobile/common/NewsMobile.js new file mode 100644 index 0000000..a9c1575 --- /dev/null +++ b/src/mobile/common/NewsMobile.js @@ -0,0 +1,173 @@ +import React from 'react'; +// eslint-disable-next-line no-unused-vars +import { Tabs, Badge, ListView, SearchBar } from 'antd-mobile-v2'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +// import ExamineMobile from './ExamineMobile'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; + + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); +// eslint-disable-next-line no-unused-vars +const tabs = [ + { title: 消息 }, + { title: 审批消息 }, +]; +class NewsMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + height: (document.documentElement.clientHeight * 3) / 4, + }; + } + + componentWillMount() { + /* 获取配置 */ + this.props.onSaveState({ searchSolution: [] }); + } + + onEndReached = async () => { + if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) { + const addState = await this.props.onGetData(this.props.slaveConfig, [], this.props.slavePagination.current + 1, true); + addState.slaveData = this.props.slaveData.concat(addState.slaveData); + this.props.onSaveState({ ...addState }); + } + } + onClose = key => () => { + this.setState({ + [key]: false, + }); + } + /* 列表弹出详情 */ + handleDoubleClick =(rowData) => { + this.props.onDoubleClick(rowData); + } + + render() { + const { slaveConfig, slaveData: slaveDataOld } = this.props; + const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; + const slaveData = dataSource.cloneWithRows(slaveDataOld2); + const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0]; + const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1]; + const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2]; + const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3]; + const separator = (sectionID, rowID) => ( +
    + ); + const row = (rowData, sectionID, rowID) => { + const obj = rowData; + return ( +
    this.handleDoubleClick(rowData)}> +
    + {obj[f1.sName]} + + {obj[f2.sName]} +
    +
    + {/* */} +
    +
    {obj[f3.sName]}
    +
    {obj[f4.sName]}
    +
    +
    +
    + ); + }; + return ( +
    + {/* { console.log('onChange', index, tab); }} */} + {/* onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }} */} + { /* > */ } + {/*
    */ } + {/* */} + {/* ( */} + {/*
    */} + {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */} + {/*
    )} */} + {/* renderRow={row} */} + {/* renderSeparator={separator} */} + {/* style={{ */} + {/* height: this.state.height, */} + {/* overflow: 'auto', */} + {/* }} */} + {/* pageSize={commonConfig.pageSize} */} + {/* onScroll={() => {}} */} + {/* scrollRenderAheadDistance={500} */} + {/* onEndReached={this.onEndReached} */} + {/* onEndReachedThreshold={10} */} + {/* /> */} + {/*
    */} + {/*
    */} + {/* */} + {/* ( */} + {/*
    */} + {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */} + {/*
    )} */} + {/* renderRow={row} */} + {/* renderSeparator={separator} */} + {/* style={{ */} + {/* height: this.state.height, */} + {/* overflow: 'auto', */} + {/* }} */} + {/* pageSize={commonConfig.pageSize} */} + {/* onScroll={() => {}} */} + {/* scrollRenderAheadDistance={500} */} + {/* onEndReached={this.onEndReached} */} + {/* onEndReachedThreshold={10} */} + {/* /> */} + {/*
    */} + {/*
    */} +
    + ( +
    + {this.props.isLoading ? 'Loading...' : 'Loaded'} +
    )} + renderRow={row} + renderSeparator={separator} + style={{ + height: this.state.height, + overflow: 'auto', + }} + pageSize={commonConfig.pageSize} + onScroll={() => {}} + scrollRenderAheadDistance={500} + onEndReached={this.onEndReached} + onEndReachedThreshold={10} + /> +
    +
    + + ); + } +} +export default CommobileBase(CommobileListEvent(NewsMobile)); + diff --git a/src/mobile/common/ProcessReportMobile.js b/src/mobile/common/ProcessReportMobile.js new file mode 100644 index 0000000..f5ae2b6 --- /dev/null +++ b/src/mobile/common/ProcessReportMobile.js @@ -0,0 +1,553 @@ +import React from 'react'; +import { Flex, Button, ListView, Toast } from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; +import CommobileViewSlave from './CommobileViewSlave'; +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import * as commonServices from '../../services/services'; +import * as commonFunc from '../../components/Common/commonFunc'; +import CommobileToolBar from './CommobileToolBar'; +import * as commonBusiness from '../../components/Common/commonBusiness'; +import styles from '../mobile.less'; +import add from '../../assets/mobile/add-select.svg'; +import scan from '../../assets/mobile/scanning.svg'; +import close from '../../assets/mobile/close.svg'; +// eslint-disable-next-line import/first +import BarCodeUtil from './BarCodeUtil'; + +// const { Item } = List; +// const PlaceHolder = ({ className = '', ...restProps }) => ( +//
    产品名称:测试骑马订样本
    +// ); + +const dataSource = new ListView.DataSource({ + rowHasChanged: (row1, row2) => row2, +}); + +class ProcessReportMobileComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + }; + } + async componentWillMount() { + const { token, sModelsId } = this.props; + const dataUrl = `${commonConfig.server_host}syssearch/getSyssearchData/${sModelsId}?sModelsId=${sModelsId}`; /* 获取快捷查找方案 */ + const dataReturn = (await commonServices.getService(token, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const addState = {}; + if (commonUtils.isNotEmptyArr(returnData)) { + addState.searchOperation = []; + returnData.forEach((item) => { + addState.searchOperation.push({ text: item.sName }); + }); + let iIndex = returnData.findIndex(item => item.bDefault); + iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(returnData) ? -1 : 0; + addState.label = returnData[iIndex].sName; + } + this.props.onSaveState({ searchSolution: returnData, ...addState }); + } else { + this.props.getServiceError(dataReturn); + } + } + + componentWillReceiveProps(nextProps) { + const { formData, employeeConfig, currentId } = nextProps; + if (commonUtils.isEmptyObject(employeeConfig) && formData.length > 0) { + const sId = currentId !== undefined ? currentId : ''; + const employeeConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductionreportemployee'.toUpperCase())[0]; + const addState = {}; + if (sId === '') { + if (!commonUtils.isNotEmptyObject(nextProps.copyTo)) { + addState.employeeData = []; + } + } else { + this.props.handleGetDataSet({ + name: 'employee', configData: employeeConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + this.props.onSaveState({ + ...addState, + pageLoading: false, + employeeConfig, + }); + } + } + + onChange = async (event) => { + const file = event.target.files[0]; + if (file) { + this.parseQrCode(file) + .then((data) => { + Toast.info(data); + }) + .catch((error) => { + Toast.fail(error.message); + }); + } + // this.parseLineCode(file); + } + + getViewValue = (showConfig, record) => { + let sValue = record[showConfig.sName]; + if (showConfig.sDropDownType === 'const') { + let showDropDown = []; + if (typeof showConfig.showDropDown === 'object') { + // eslint-disable-next-line prefer-destructuring + showDropDown = showConfig.showDropDown; + } else { + showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown)); + } + let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString()); + if (iIndex === -1 && record[showConfig.sName] === '') { + iIndex = showDropDown.findIndex(item => item.sId === ''); + } + sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName]; + } + return sValue; + }; + + handleClick = async (name, type, sId) => { + if (name === 'BtnSave') { + this.props.onSubmit(); + } else if (type === 'add') { + const { [`${name}Data`]: tableData, slaveData } = this.props; + const tableDataRow = this.props.onDataRowAdd(name, true); + if (name === 'employee') { + tableDataRow.sSlaveId = slaveData[0].sId; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else if (type === 'del') { + const { app, [`${name}Data`]: tableData } = this.props; + let { [`${name}DelData`]: tableDelData } = this.props; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (sId !== '') { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + } + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [], + }); + } else { + Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据 + } + } else if (type === 'scan') { + BarCodeUtil.startScan(async (type, code) => { + const { + employeeConfig, sModelsId, masterData, slaveData, employeeData, + } = this.props; + const employeeDataConfig = commonUtils.isNotEmptyObject(employeeConfig) ? employeeConfig.gdsconfigformslave : ''; + const employeeSlaveConfig = employeeDataConfig.filter(item => item.sControlName === 'sEmployeeId'); + let employeeDataDetiale; + employeeDataDetiale = this.props.onDataRowAdd(name, true); + const employeeAssignField = commonUtils.isNotEmptyArr(employeeSlaveConfig) ? employeeSlaveConfig[0].sAssignField : ''; + let dropDownData = []; + if (employeeSlaveConfig[0].sDropDownType === 'sql') { + dropDownData = await this.props.getSqlDropDownData(sModelsId, 'employee', employeeSlaveConfig[0], employeeData); + } + let employeeDataOne; + if (!commonUtils.isEmpty(dropDownData)) { + employeeDataOne = dropDownData.filter(item => item.sId === code); + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0]; + employeeDataDetiale = { ...employeeDataDetiale, ...commonFunc.getAssignFieldValue(employeeAssignField, employeeDataOne[0], newCopyTo) }; + employeeData.push(employeeDataDetiale); + this.props.onSaveState({ employeeData }); + }); + // if (this.textInput) { + // this.textInput.click(); + // } + } else if (name === 'BtnCancel') { + window.history.back(-1); + } + } + + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData) => { + const { + token, sModelsId, masterData, slaveData, employeeData: employeeDataOld, employeeDelData: employeeDelDataOld, + } = this.props; + if (name === 'slave') { + if (sFieldName === 'sTeamName' || sFieldName === 'sTeamId') { /* 主表选择的班组,循环复制到从表班组 */ + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */ + slaveData[iSlaveIndex] = tableDataRow; + const employeeDelData = commonUtils.isEmptyArr(employeeDelDataOld) ? [] : employeeDelDataOld; + const employeeData = []; + const iIndex = dropDownData.findIndex(item => item.sId === changeValue.sTeamId);/* 拿到主表下拉选中的班组的名称 */ + if (iIndex > -1) { + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${tableDataRow.sTeamId}&sSlaveId=${tableDataRow.sSlaveId}&sParentId=${tableDataRow.sParentId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + if (commonUtils.isNotEmptyObject(returnData) && returnData.length > 0) { + employeeDataOld.forEach((item) => { + item.handleType = 'del'; + employeeDelData.push(item); + }); + if (commonUtils.isEmptyArr(employeeData)) { /* 当班组人员无数据时 */ + returnData.forEach((child) => { + employeeData.push({ + sId: commonUtils.createSid(), + sParentId: tableDataRow.sParentId, + sSlaveId: tableDataRow.sId, + sEmployeeId: child.sEmployeeId, + sEmployeeName: child.sEmployeeId, + dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6), + handleType: 'add', + }); + }); + } + } + const dWageMoneyTotal = commonUtils.isNotEmptyNumber(tableDataRow.dWageMoney) ? tableDataRow.dWageMoney : 0; + if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) { + let dProportionTotal = 0; + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + item.dProportion = parseFloat(item.dProportion); + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6); + } + }); + employeeData.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { + ...item, + dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), + handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType, + }; + } + }); + } + } + this.props.onSaveState({ + slaveData, employeeData, employeeDelData, + }); + } + } + } else if (sFieldName === 'dProcessQty' || sFieldName === 'sConversionFormulaId' || sFieldName === 'sConversionFormulaName') { + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + // eslint-disable-next-line prefer-destructuring + const sOutputValueFormulaId = tableDataRow.sOutputValueFormulaId; /* 产值公式 */ + if (sOutputValueFormulaId) { + tableDataRow.dOutputValueQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sOutputValueFormulaId, + }); + } + // eslint-disable-next-line prefer-destructuring + const sConversionFormulaId = tableDataRow.sConversionFormulaId; + if (sConversionFormulaId) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: sConversionFormulaId, + }); + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */ + if (iSlaveIndex > -1) { + slaveData[iSlaveIndex] = tableDataRow; + this.props.onSaveState({ + slaveData, enabled: true, + }); + } + } else if (sFieldName === 'dProcessQty' || sFieldName === 'sWageId' || sFieldName === 'sWageName') { + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */ + slaveData[iSlaveIndex] = tableDataRow; + const employeeDelData = commonUtils.isEmptyArr(employeeDelDataOld) ? [] : employeeDelDataOld; + slaveData[iSlaveIndex].dWageMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId: tableDataRow.sWageId, + }); + const dWageMoneyTotal = slaveData[iSlaveIndex].dWageMoney; + const employeeData = employeeDataOld; + if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) { + let dProportionTotal = 0; + employeeDataOld.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + item.dProportion = parseFloat(item.dProportion); + dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6); + dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6); + } + }); + employeeDataOld.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { ...item, dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType }; + } + }); + } + /* 选择计件方案后 算总金额 */ + const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0; + tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + this.props.onSaveState({ + slaveData, employeeData, employeeDelData, enabled: true, + }); + } else if (sFieldName === 'dTimeMoney' || sFieldName === 'dLossMoney') { + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */ + slaveData[iSlaveIndex] = tableDataRow; + /* 总金额=计件工资+工时工资-损失金额 */ + const dWageMoney = commonUtils.isNotEmptyNumber(tableDataRow.dWageMoney) ? commonUtils.convertFixNum(tableDataRow.dWageMoney, 6) : 0; + const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0; + const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0; + tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6); + this.props.onSaveState({ + slaveData, enabled: true, + }); + } else { + this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData); + } + } else if (name === 'employee' && sFieldName === 'dProportion') { + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + const iEmployeeIndex = employeeDataOld.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */ + employeeDataOld[iEmployeeIndex] = tableDataRow; + const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sSlaveId);/* 拿到主表下拉选中的班组的名称 */ + const dWageMoneyTotal = slaveData[iSlaveIndex].dWageMoney; + const employeeData = employeeDataOld; + if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) { + let dProportionTotal = 0; + employeeDataOld.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) { + // item.dProportion = parseFloat(item.dProportion); + dProportionTotal += commonUtils.convertFixNum(parseFloat(item.dProportion), 6); + dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6); + } + }); + employeeDataOld.forEach((item) => { + if (commonUtils.isNotEmptyNumber(item.dProportion)) { + const index1 = employeeData.findIndex(item1 => item1.sId === item.sId); + employeeData[index1] = { ...item, dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType }; + } + }); + } + this.props.onSaveState({ + employeeData, enabled: true, + }); + } else { + this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData); + } + } + // setTextInputRef = (element) => { + // this.textInput = element; + // }; + + render() { + const { + employeeConfig, employeeData: employeeDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, slaveData, slaveConfig, + } = this.props; + const slaveDatas = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0]; + onReturnForm(this.props.form); + const employeeDataOld2 = employeeDataOld === undefined ? [] : employeeDataOld; + const employeeData = dataSource.cloneWithRows(employeeDataOld2); + + const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0]; + const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1]; + const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2]; + const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3]; + const f5 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4]; + const f6 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5]; + const f7 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6]; + const f8 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7]; + const f9 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8]; + const f10 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9]; + + const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } }; + const style = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const btnStyle = { + fontSize: '15px', + backgroundColor: '#f0f0f0', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }; + const BtnStyle = { + type: 'default', + color: 'red', + border: 'none', + backgroundColor: '#f0f0f0', + fontSize: '15px', + }; + const divStyle = { + display: 'flex', + justifyContent: 'space-between', + background: ' #f0f0f0', + }; + const paddingFive = { + padding: '5px 0', + }; + const row = (rowData, sectionID, rowID) => { + return ( +
    + + {/* eslint-disable-next-line react/jsx-no-duplicate-props */} + + + + + + + + + + + {commonUtils.isEmptyObject(employeeConfig) ? '' : employeeConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => { + const sMemo = child.sName.toLowerCase().endsWith('memo'); + // sUseInfo是指被其他单据调用,或者被审核 + let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo)); + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const showTypeProps = { + app, + record: rowData, + sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */ + name: 'employee', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.handleTableChange, + showConfig: child, + formItemLayout: sMemo ? formItemLayout : {}, + textArea: sMemo, + enabled: enabledNew, + dataValue: rowData[child.sName], + bTable: true, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + return ( + + ); + })} +
    + ); + }; + return ( +
    +
    + + { + f1 ? {f1.showName} : {this.getViewValue(f1, slaveDatas)} : '' + } + { + f2 ? {f2.showName} : {this.getViewValue(f2, slaveDatas)} : '' + } + + + { + f3 ? {f3.showName} : {this.getViewValue(f3, slaveDatas)} : '' + } + + + { + f4 ? {f4.showName} : {this.getViewValue(f4, slaveDatas)} : '' + } + + + { + f5 ? {f5.showName} : {this.getViewValue(f5, slaveDatas)} : '' + } + { + f6 ? {f6.showName} : {this.getViewValue(f6, slaveDatas)} : '' + } + + + { + f7 ? {f7.showName} : {this.getViewValue(f7, slaveDatas)} : '' + } + { + f8 ? {f8.showName} : {this.getViewValue(f8, slaveDatas)} : '' + } + + + { + f9 ? {f9.showName} : {this.getViewValue(f9, slaveDatas)} : '' + } + { + f10 ? {f10.showName} : {this.getViewValue(f10, slaveDatas)} : '' + } + +
    +
    +
    + + +
    + {commonUtils.isEmptyArr(employeeDataOld) ? +
    + + + + + + + + +
    : + {}} + scrollRenderAheadDistance={500} + onEndReachedThreshold={10} + className={styles.listView} + />} +
    + +
    + + +
    + ); + } +} + +const ProcessReportMobile = createForm()(ProcessReportMobileComponent); + +export default CommobileBase(CommobileBillEvent(ProcessReportMobile)); diff --git a/src/mobile/common/RevisePasswordMobile.js b/src/mobile/common/RevisePasswordMobile.js new file mode 100644 index 0000000..5594252 --- /dev/null +++ b/src/mobile/common/RevisePasswordMobile.js @@ -0,0 +1,118 @@ +import React from 'react'; +import { List, InputItem, NavBar, Toast } from 'antd-mobile'; +import { createForm } from 'rc-form'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +// import ExamineMobile from './ExamineMobile'; +// import commonConfig from '../../utils/config'; +// import * as commonUtils from '../../utils/utils'; +import CommobileBase from '../../mobile/common/CommobileBase'; +import CommobileListEvent from './CommobileListEvent'; +import styles from '../mobile.less'; +import config from '../../utils/config'; + +class RevisePasswordMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + sId: props.app.userinfo.sId, + dispatch: props.dispatch, + hasError: false, + sOldPwd: '', + sUserPwd: '', + sUserPwdAgain: '', + }; + this.obj = {}; + } + onErrorClick = () => { + if (this.state.hasError) { + Toast.fail('密码输入不一致', 1); + } + } + + onChange = (name, value) => { + // const nameNew = name; + this.obj[name] = value; + if (this.obj.sUserPwd !== this.obj.sUserPwdAgain) { + this.setState({ + hasError: true, + }); + } else { + this.setState({ + hasError: false, + }); + } + this.setState({ [`${name}`]: value }); + } + handleSubmitPwd = (e) => { + /* 阻止表单提交动作 */ + e.preventDefault(); + const values = {}; + const { + sId, + sOldPwd, + sUserPwd, + sUserPwdAgain, + } = this.state; + values.sId = sId; + values.sOldPwd = sOldPwd; + values.sUserPwd = sUserPwd; + values.sUserPwdAgain = sUserPwdAgain; + if (values.sUserPwd !== values.sUserPwdAgain) { + Toast.fail('密码输入不一致', 1); + return; + } + const url = `${config.server_host}sftlogininfo/updatePasswordUserName/update?sModelsId=${100}`; + const { dispatch } = this.state; + dispatch({ type: 'app/editPwd', payload: { url, value: values, editPwdType: 'mobile' } }); + } + render() { + return ( +
    + 返回
    , + ] + } + rightContent={[ +
    保存
    , + ]} + onLeftClick={() => { window.history.back(-1); }} + className={styles.iconColor} + > + 修改密码 + + +
    + this.inputRef = el} + /> +
    + this.inputRef = el} + /> + this.inputRef = el} + /> +
    +
    + ); + } +} +const BasicInputExampleWrapper = createForm()(RevisePasswordMobile); +export default CommobileBase(CommobileListEvent(BasicInputExampleWrapper)); diff --git a/src/mobile/common/SceneCssMobile.js b/src/mobile/common/SceneCssMobile.js new file mode 100644 index 0000000..a9fba27 --- /dev/null +++ b/src/mobile/common/SceneCssMobile.js @@ -0,0 +1,127 @@ +import React from 'react'; +import { Grid, Toast } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import styles from './SceneMobile.less'; +// eslint-disable-next-line import/first +import { createForm } from 'rc-form'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import * as commonUtils from '../../utils/utils'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; + +class SceneCssMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + totalData: [], + }; + } + async componentWillMount() { + const masterConfig = {}; + const masterData = []; + this.props.onSaveState({ masterConfig, masterData }); + /* 获取配置 */ + let { sModelType } = this.props; + sModelType = commonUtils.isEmptyObject(sModelType) ? 'scene' : sModelType; + const { token } = this.props.app; + const sLoginType = 'sLoginCss'; + const configUrl = `${commonConfig.server_host}mobilephone/getMenuSrmCss/${sModelType}/${sLoginType}?sModelsId=100`; + const configReturn = (await commonServices.getService(token, configUrl)).data; + if (configReturn.code === 1) { + const returnData = configReturn.dataset.rows;/* 全部数据 */ + if (commonUtils.isNotEmptyArr(returnData)) { + this.setState({ totalData: returnData }); + } + } else { + Toast.success(configReturn.msg); + } + } + handleGetAllMenuData = () => { + const { totalData } = this.state; + const { token } = this.props.app; + if (commonUtils.isNotEmptyArr(totalData)) { + return totalData.map((item) => { + const firstMenu = {}; + firstMenu.bUnReason = item.bUnReason; + firstMenu.bUnTask = item.bUnTask; + firstMenu.bVisible = item.bVisible; + firstMenu.children = item.children; + firstMenu.iOrder = item.iOrder; + firstMenu.sChinese = item.sChinese; + firstMenu.sMenuName = item.sMenuName; + firstMenu.sId = item.sId; + firstMenu.sModelType = item.sModelType; + firstMenu.sName = item.sName; + firstMenu.sParentId = item.sParentId; + firstMenu.sProcName = item.sProcName; + firstMenu.sTitleLogoPath = item.sTitleLogoPath; + firstMenu.sUnType = item.sUnType; + const childrenData = item.children; + const gridData = []; + if (commonUtils.isNotEmptyArr(childrenData)) { + childrenData.forEach((itemChild) => { + const addStata = {}; + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`; + addStata.icon = dataUrl; + addStata.text = itemChild.sMenuName; + addStata.url = itemChild.sName.replace('indexMobile', 'indexCssMobile'); + addStata.sModelsId = itemChild.sId; + addStata.sModelType = itemChild.sModelType; + addStata.iOrder = itemChild.iOrder; + gridData.push(addStata); + }); + } + gridData.sort((item, item2) => item.iOrder - item2.iOrder); + return ( +
    +
    {firstMenu.sMenuName}
    + +
    + ); + }); + } + } + handleGridClick = (el) => { + const { dispatch } = this.props; + const { url } = el;/* 菜单对应的路由地址 */ + if (url !== '') { + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId: el.sModelsId, + sModelType: el.sModelType, + }, + }); + } + } + + /** 修改主表数据 */ + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + if (sFieldName === 'sMachineId') { + const { dispatch } = this.props; + const returnData = await this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterDataNew); + dispatch({ + type: 'app/saveMachineId', + payload: { sMachineId: returnData.masterData.sMachineId }, + }); + this.props.onSaveState({ ...returnData }); + } else { + this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew); + } + } + + + render() { + return ( +
    + {this.handleGetAllMenuData()} +
    + ); + } +} +const SceneMobileComponent = createForm()(SceneCssMobile); +export default CommobileBase(CommobileBillEvent(SceneMobileComponent)); diff --git a/src/mobile/common/SceneMobile.js b/src/mobile/common/SceneMobile.js new file mode 100644 index 0000000..1b4303f --- /dev/null +++ b/src/mobile/common/SceneMobile.js @@ -0,0 +1,247 @@ +import React from 'react'; +import { Button, Grid, Toast } from 'antd-mobile'; +import 'antd-mobile-v2/dist/antd-mobile.css'; +import styles from './SceneMobile.less'; +// eslint-disable-next-line import/first +import { createForm } from 'rc-form'; +import commonConfig from '../../utils/config'; +import * as commonServices from '../../services/services'; +import * as commonUtils from '../../utils/utils'; +import ShowType from './CommobileComponent'; +import CommobileBase from './CommobileBase'; +import CommobileBillEvent from './CommobileBillEvent'; + +class SceneMobile extends React.Component { + constructor(props) { + super(props); + this.state = { + totalData: [], + }; + } + async componentWillMount() { + const masterConfig = {}; + const masterData = []; + this.props.onSaveState({ masterConfig, masterData }); + /* 获取配置 */ + let { sModelType } = this.props; + sModelType = commonUtils.isEmptyObject(sModelType) ? 'scene' : sModelType; + const { token } = this.props.app; + const configUrl = `${commonConfig.server_host}mobilephone/getMenu/${sModelType}?sModelsId=100`; + const configReturn = (await commonServices.getService(token, configUrl)).data; + if (configReturn.code === 1) { + const returnData = configReturn.dataset.rows;/* 全部数据 */ + if (commonUtils.isNotEmptyArr(returnData)) { + this.setState({ totalData: returnData }); + } + } else { + Toast.success(configReturn.msg); + } + } + handleGetAllMenuData = () => { + const { totalData } = this.state; + const { token } = this.props.app; + if (commonUtils.isNotEmptyArr(totalData)) { + return totalData.map((item) => { + const firstMenu = {}; + firstMenu.bUnReason = item.bUnReason; + firstMenu.bUnTask = item.bUnTask; + firstMenu.bVisible = item.bVisible; + firstMenu.children = item.children; + firstMenu.iOrder = item.iOrder; + firstMenu.sChinese = item.sChinese; + firstMenu.sMenuName = item.sMenuName; + firstMenu.sId = item.sId; + firstMenu.sModelType = item.sModelType; + firstMenu.sName = item.sName; + firstMenu.sParentId = item.sParentId; + firstMenu.sProcName = item.sProcName; + firstMenu.sTitleLogoPath = item.sTitleLogoPath; + firstMenu.sUnType = item.sUnType; + const childrenData = item.children; + const gridData = []; + if (commonUtils.isNotEmptyArr(childrenData)) { + childrenData.forEach((itemChild) => { + const addStata = {}; + const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`; + addStata.icon = dataUrl; + addStata.text = itemChild.sMenuName; + addStata.url = itemChild.sName; + addStata.sModelsId = itemChild.sId; + addStata.sModelType = itemChild.sModelType; + addStata.iOrder = itemChild.iOrder; + gridData.push(addStata); + }); + } + gridData.sort((item, item2) => item.iOrder - item2.iOrder); + return ( +
    +
    {firstMenu.sMenuName}
    + +
    + ); + }); + } + } + + handleChangeIframeVisible = (visible, iframeUrl) => { + if (visible) { + document.querySelector('#root').classList.add('mesIframe'); + } else { + document.querySelector('#root').classList.remove('mesIframe'); + } + this.props.onSaveState({ + iframeVisible: visible, + iframeUrl, + }); + } + handleGridClick = (el) => { + const { dispatch, app, token } = this.props; + const { userinfo } = app; + const { url, sModelType } = el;/* 菜单对应的路由地址 */ + + const iframeUrl = sModelType !== undefined ? + sModelType + .replace('{sBrandsId}', userinfo.sBrandsId) + .replace('{sSubsidiaryId}', userinfo.sSubsidiaryId) + .replace('{sUserName}', userinfo.sUserName) + .replace('{sUserId}', userinfo.sId) + .replace('{token}', token) + : ''; + + if (iframeUrl.startsWith('http')) { + this.handleChangeIframeVisible(true, iframeUrl); + return; + } + + if (url !== '') { + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`; + dispatch({ + type: 'content/onRouterMobile', + payload: { + url, /* 接口地址 */ + urlKey: sNameUrl, + sModelsId: el.sModelsId, + sModelType: el.sModelType, + }, + }); + } + } + + /** 修改主表数据 */ + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + if (sFieldName === 'sMachineId') { + const { dispatch } = this.props; + const returnData = await this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterDataNew); + dispatch({ + type: 'app/saveMachineId', + payload: { sMachineId: returnData.masterData.sMachineId }, + }); + this.props.onSaveState({ ...returnData }); + } else { + this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew); + } + } + + + render() { + const { + sModelsId, + app, + iframeVisible, + iframeUrl, + } = this.props; + const child = { + bCanInput: false, + bEntireLine: false, + bFilter: false, + bFind: false, + bFirstEmpty: true, + bIsOther: false, + bMergeCell: false, + bMultipleChoice: false, + bNewRecord: false, + bNotEmpty: true, + bNotRepeat: false, + bReadonly: false, + bSum: false, + bTree: false, + bVisible: true, + iColValue: 1, + iFitWidth: 119, + iIncrement: 71019, + iOrder: 16, + iTag: 0, + iVisCount: 1, + sActiveId: '19211681019715540861764830', + sActiveKey: 'sMachineId', + sAssignField: 'sMachineId:sId', + sBig5: '机台名稱', + sBig5DropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0', + sBrandsId: '1111111111', + sChinese: '机台名称', + sChineseDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0', + sColor: '', + sControlName: '', + sDateFormat: '', + sDefault: '', + sDropDownType: 'sql', + sEnglish: '', + sEnglishDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0', + sFieldToContent: '', + sFilterSql: '', + sId: '15943635830008892519957335923000', + sKeyUpFilter: '', + sMaxValue: '', + sMinValue: '', + sName: 'sMachineId', + sNotRepeatColumn: '', + sParentId: '101251240115015916850902230', + sRelation: '', + sSelectRelation: '', + sSqlCondition: '', + sSubsidiaryId: '1111111111', + showDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0', + showName: '当前设备', + }; + const showTypeProps = { + app, + record: {}, + sId: '', /* 修改当前编号(数据格式:字符串) */ + name: 'master', + form: this.props.form, + formId: sModelsId, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + getDateFormat: this.props.getDateFormat, + onChange: this.handleMasterChange, + showConfig: child, + formItemLayout: {}, + textArea: false, + enabled: true, + dataValue: this.props.app.sMachineId, + bTable: false, + onFilterDropDownData: this.props.onFilterDropDownData, + onSaveState: this.props.onSaveState, + }; + const iconSettingShow = true; + return iframeVisible ? ( +
    +