From d488865786b247902d052947f651e62064be92f6 Mon Sep 17 00:00:00 2001 From: 陈鑫涛 <10125295+chen-xintao97@user.noreply.gitee.com> Date: Tue, 20 May 2025 14:22:57 +0800 Subject: [PATCH] tab页面 --- src/components/AuditInformation/AuditInformation.js | 2 +- src/components/Charts/Pie/index.js | 2 +- src/components/Charts/PieGroup/index.js | 2 +- src/components/Charts/TimeLineGroup/index.js | 2 +- src/components/Common/AntdDraggableModal.js | 2 +- src/components/Common/AssignmentField.js | 2 +- src/components/Common/CommonBill/index.js | 2 +- src/components/Common/CommonBillDeliver.js | 1696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonBillDeliverEvent.js | 5207 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonBillEvent.js | 2 +- src/components/Common/CommonCalculator.js | 2 +- src/components/Common/CommonCheckBill/index.js | 2 +- src/components/Common/CommonCheckBillEvent.js | 2 +- src/components/Common/CommonClassifyEvent.js | 2 +- src/components/Common/CommonComponent/index.js | 2 +- src/components/Common/CommonComponent/index_new.js | 2 +- src/components/Common/CommonComponentNew/index.tsx | 4 ++-- src/components/Common/CommonCostomTabBill.js | 7028 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonElementEvent.js | 2 +- src/components/Common/CommonExamInfo/index.js | 2 +- src/components/Common/CommonGroupBill.js | 2400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonGroupBillEvent.js | 4479 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonImportDataEvent.js | 2 +- src/components/Common/CommonJurisdictionNewEvent.js | 2 +- src/components/Common/CommonListA.js | 2 +- src/components/Common/CommonListEditEvent.js | 2 +- src/components/Common/CommonListLeft/index.js | 2 +- src/components/Common/CommonListSelect/index.js | 2 +- src/components/Common/CommonListSelectAssignment.js | 2 +- src/components/Common/CommonListSelectFlex/index.js | 2 +- src/components/Common/CommonListSelectMulti/index.js | 2 +- src/components/Common/CommonListSelectParam/index.js | 997 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListSelectParam/index.less | 359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListSelectProductMaterial.js | 2 +- src/components/Common/CommonListSelectTree/index.js | 2 +- src/components/Common/CommonListTabEvent.js | 2 +- src/components/Common/CommonListTree/index.js | 2 +- src/components/Common/CommonListTreeEvent.js | 2 +- src/components/Common/CommonListTreeSelect/index.js | 2 +- src/components/Common/CommonNewBill.js | 2 +- src/components/Common/CommonNewBillEvent.js | 2 +- src/components/Common/CommonNewListBill.js | 2788 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonNewTabBill.js | 3008 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonNewTabBillEvent.js | 7049 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonProductionPlanEvent.js | 2 +- src/components/Common/CommonProductionPlanOutsideEvent.js | 2 +- src/components/Common/CommonProductionPlanTreeEvent.js | 2 +- src/components/Common/CommonProductionmMainPlanEvent.js | 2 +- src/components/Common/CommonSubBill.js | 2109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonSubBillEvent.js | 6913 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonSystemSettingEvent.js | 2 +- src/components/Common/CommonTableNew/index.tsx | 4 ++-- src/components/Common/CommonTableNew/type.ts | 2 +- src/components/Common/CommonView/index.js | 2 +- src/components/Common/CommonViewDrag/index.js | 932 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonViewDrag/index.less | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonViewFlex/index.js | 2 +- src/components/Common/CommonViewNew.js | 2 +- src/components/Common/CommonViewTable/index.js | 2 +- src/components/Common/ContextMenuModal.js | 2 +- src/components/Common/Feedback/Feedback.js | 245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Feedback/index.less | 14 ++++++++++++++ src/components/Common/Flows/CommonFlow.js | 2 +- src/components/Common/Flows/OverviewFlow.js | 2 +- src/components/Common/Gatte/CommonGatte.js | 2 +- src/components/Common/MaterialRequirementsPlanning.js | 2 +- src/components/Common/PrintPdf/PreviewPdf.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/PrintPdf/PrintPdf.js | 32 ++++++++++++++++++++++++++++++++ src/components/Common/PrintPdf/printpdf.less | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/SearchComponent/index.js | 2 +- src/components/Common/ShowChar/CustomizedChar.js | 2 +- src/components/Common/ShowImage/ShowImage.js | 2 +- src/components/Common/SlaveMemo copy 2.js | 2 +- src/components/Common/SlaveMemo copy.js | 2 +- src/components/Common/SlaveMemo.js | 2 +- src/components/Common/SlaveMemo1 copy 2.js | 2 +- src/components/Common/SlaveMemo1 copy.js | 2 +- src/components/Common/SlaveMemo1.js | 2 +- src/components/Common/SlavesInfo.js | 2 +- src/components/Common/Tree/StaticTree.js | 2 +- src/components/Common/baseChar.js | 2 +- src/components/Common/commonBusiness copy.js | 2016 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/commonBusiness.js | 64 +++++++++++++++++++++++++++++++++++++++++++--------------------- src/components/Common/commonParam.js | 2 +- src/components/CommonAuto/CommonAuto.js | 2 +- src/components/CommonClassifyEvent/CommonClassify.js | 2 +- src/components/CommonElementEvent/BatchNPriceUpdate.js | 2 +- src/components/CommonElementEvent/BatchPriceUpdate.js | 2 +- src/components/CommonElementEvent/BatchWorkListPriceUpdate.js | 2 +- src/components/CommonElementEvent/CheckModelInfo.js | 2 +- src/components/CommonElementEvent/CheckPhaseInfo.js | 2 +- src/components/CommonElementEvent/CustomerInfo.js | 2 +- src/components/CommonElementEvent/ElemachineInfo.js | 2 +- src/components/CommonElementEvent/EleteamInfo.js | 2 +- src/components/CommonElementEvent/EmployeeInfo.js | 2 +- src/components/CommonElementEvent/FilfileManageInfo.js | 2 +- src/components/CommonElementEvent/KnifeMouldInfo.js | 2 +- src/components/CommonElementEvent/MaterialsInfo.js | 2 +- src/components/CommonElementEvent/MonthEndingClosing.js | 2 +- src/components/CommonElementEvent/PaymentTermsInfo.js | 2 +- src/components/CommonElementEvent/PrintInfo.js | 2 +- src/components/CommonElementEvent/ProcessInfo.js | 2 +- src/components/CommonElementEvent/ProductClassifyInfo.js | 2 +- src/components/CommonElementEvent/SftLoginInfo.js | 2 +- src/components/CommonElementEvent/SisCommonStyle.js | 2 +- src/components/CommonElementEvent/SisformulaInfo.js | 2 +- src/components/CommonElementEvent/StatementInfo.js | 2 +- src/components/CommonElementEvent/SupplyInfo.js | 2 +- src/components/CommonElementEvent/SysMsgInfo.js | 2 +- src/components/CommonElementEvent/TestStandInfo.js | 2 +- src/components/CommonImportDataEvent/importDataInfo.js | 2 +- src/components/CommonSystemSettingEvent/CommonSystemSetting.js | 2 +- src/components/CommonSystemSettingEvent/TabFinanceOffer.js | 2 +- src/components/CommonSystemSettingEvent/TabFinancePeriod.js | 2 +- src/components/CommonSystemSettingEvent/TabSalesBuyer.js | 2 +- src/components/CommonSystemSettingEvent/TabSysParam.js | 2 +- src/components/FaceDetect/index.js | 2 +- src/components/JurisdictionAllotEvent/SystemPermissionInfo.js | 2 +- src/components/Manufacture/ProcessCard/ProcessCard.js | 2 +- src/components/Manufacture/ProcessCardPack/ProcessCardPack.js | 2 +- src/components/Manufacture/ProcessCardPack/ProcessCardPackTableTree.js | 2 +- src/components/Manufacture/WorkOrder/SplitPaste.js | 2 +- src/components/Manufacture/WorkOrder/WorkOrder.js | 2 +- src/components/Manufacture/WorkOrderPack/WorkOrderPack.js | 2 +- src/components/Manufacture/WorkOrderPack/WorkOrderPackTableTree.js | 2 +- src/components/Manufacture/WorkOrderPack/WorkOrderResearchTableTree.js | 2 +- src/components/MenuPanel/MenuPanel.js | 2 +- src/components/PrintLabel/PrintLabel.js | 2 +- src/components/PrintPdf/PrintPdf.js | 2 +- src/components/ProductionPlan/ProductionPlan.js | 2 +- src/components/ProductionReport/ProductionReport.js | 2 +- src/components/QuoQuotation/Quotation/Quotation.js | 2 +- src/components/QuoQuotation/Quotation/SplitPasteQuotation.js | 2 +- src/components/QuoQuotation/QuotationPack/QuotationPack.js | 2 +- src/components/QuoQuotation/QuotationPackTableTree/QuotationPackTableTree.js | 2 +- src/components/Tab/TabComponent.js | 2 +- src/components/login/Login.js | 2 +- src/components/productionMainPlan/productionHeader.js | 2 +- src/components/productionMainPlan/productionMainPlan.js | 2 +- src/components/productionMainPlan/productionUnifiedPlanning.js | 2 +- src/components/productionPlanInfo/productionHeader.js | 2 +- src/components/productionPlanInfo/productionPlanChangeMacheInfo.js | 2 +- src/components/productionPlanInfo/productionPlanInfo.js | 2 +- src/components/productionPlanInfo/productionPlanInfo2.js | 2 +- src/components/productionPlanInfo/productionPlanOutside.js | 2 +- src/components/productionSchedule/productionHeader.js | 2 +- src/components/productionSchedule/productionPlanChangeMacheInfo.js | 2 +- src/components/productionSchedule/productionPlanInfo2.js | 2 +- src/components/productionSchedule/productionSchedule.js | 2 +- src/components/productionScheduleTree/productionHeader.js | 2 +- src/components/productionScheduleTree/productionPlanChangeMacheInfo.js | 2 +- src/components/productionScheduleTree/productionPlanInfo2.js | 2 +- src/components/productionScheduleTree/productionScheduleTree.js | 2 +- src/components/productionScheduleTree/productionScheduleTreeBack.js | 2 +- src/models/app.js | 2 +- src/models/content.js | 2 +- src/routes/basicInfoSetting/closeAccounts/monthEndingClosing.js | 33 +++++++++++++++++++++++++++++++++ src/routes/common/commonBillDeliver.js | 24 ++++++++++++++++++++++++ src/routes/common/commonCostomTabBill.js | 28 ++++++++++++++++++++++++++++ src/routes/common/commonGroupBill.js | 28 ++++++++++++++++++++++++++++ src/routes/common/commonNewBill.js | 28 ++++++++++++++++++++++++++++ src/routes/common/commonNewListBill.js | 28 ++++++++++++++++++++++++++++ src/routes/common/commonNewTabBill.js | 28 ++++++++++++++++++++++++++++ src/routes/common/commonSubBill.js | 24 ++++++++++++++++++++++++ src/routes/feedback/feedback.js | 24 ++++++++++++++++++++++++ src/routes/printPdf/printPdf.js | 29 +++++++++++++++++++++++++++++ src/routes/quoQuotation/quotation/quotation.js | 2 +- src/routes/quoQuotation/quotationPack/quotationPack.js | 2 +- src/routes/tab/tab.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++--------------------- src/utils/utils.js | 2 +- 170 files changed, 48317 insertions(+), 182 deletions(-) create mode 100644 src/components/Common/CommonBillDeliver.js create mode 100644 src/components/Common/CommonBillDeliverEvent.js create mode 100644 src/components/Common/CommonCostomTabBill.js create mode 100644 src/components/Common/CommonGroupBill.js create mode 100644 src/components/Common/CommonGroupBillEvent.js create mode 100644 src/components/Common/CommonListSelectParam/index.js create mode 100644 src/components/Common/CommonListSelectParam/index.less create mode 100644 src/components/Common/CommonNewListBill.js create mode 100644 src/components/Common/CommonNewTabBill.js create mode 100644 src/components/Common/CommonNewTabBillEvent.js create mode 100644 src/components/Common/CommonSubBill.js create mode 100644 src/components/Common/CommonSubBillEvent.js create mode 100644 src/components/Common/CommonViewDrag/index.js create mode 100644 src/components/Common/CommonViewDrag/index.less create mode 100644 src/components/Common/Feedback/Feedback.js create mode 100644 src/components/Common/Feedback/index.less create mode 100644 src/components/Common/PrintPdf/PreviewPdf.js create mode 100644 src/components/Common/PrintPdf/PrintPdf.js create mode 100644 src/components/Common/PrintPdf/printpdf.less create mode 100644 src/components/Common/commonBusiness copy.js create mode 100644 src/routes/basicInfoSetting/closeAccounts/monthEndingClosing.js create mode 100644 src/routes/common/commonBillDeliver.js create mode 100644 src/routes/common/commonCostomTabBill.js create mode 100644 src/routes/common/commonGroupBill.js create mode 100644 src/routes/common/commonNewBill.js create mode 100644 src/routes/common/commonNewListBill.js create mode 100644 src/routes/common/commonNewTabBill.js create mode 100644 src/routes/common/commonSubBill.js create mode 100644 src/routes/feedback/feedback.js create mode 100644 src/routes/printPdf/printPdf.js diff --git a/src/components/AuditInformation/AuditInformation.js b/src/components/AuditInformation/AuditInformation.js index 6d25d7c..8b0998d 100644 --- a/src/components/AuditInformation/AuditInformation.js +++ b/src/components/AuditInformation/AuditInformation.js @@ -6,7 +6,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Tabs, Avatar, message, Select, Input, Button } from 'antd'; +import { Layout, Spin, Tabs, Avatar, message, Select, Input, Button } from 'antd-v4'; import * as commonFunc from './../Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from '../Common/CommonTable';/* 可编辑表格 */ import styles from './../../index.less'; diff --git a/src/components/Charts/Pie/index.js b/src/components/Charts/Pie/index.js index e36067e..51b99e1 100644 --- a/src/components/Charts/Pie/index.js +++ b/src/components/Charts/Pie/index.js @@ -1,7 +1,7 @@ /* eslint-disable no-undef, jsx-a11y/no-noninteractive-element-interactions */ import React, { Component } from 'react'; import G2 from '@antv/g2'; -import { Divider } from 'antd'; +import { Divider } from 'antd-v4'; import classNames from 'classnames'; import ReactFitText from 'react-fittext'; import Debounce from 'lodash-decorators/debounce'; diff --git a/src/components/Charts/PieGroup/index.js b/src/components/Charts/PieGroup/index.js index 2d6cb73..cdbe243 100644 --- a/src/components/Charts/PieGroup/index.js +++ b/src/components/Charts/PieGroup/index.js @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { Row, Col } from 'antd'; +import { Row, Col } from 'antd-v4'; import { getTheme } from '@antv/g2'; import Pie from '../Pie'; diff --git a/src/components/Charts/TimeLineGroup/index.js b/src/components/Charts/TimeLineGroup/index.js index 1f147b9..6d82488 100644 --- a/src/components/Charts/TimeLineGroup/index.js +++ b/src/components/Charts/TimeLineGroup/index.js @@ -1,6 +1,6 @@ /* eslint-disable object-curly-newline */ import React, { Component } from 'react'; -import { Row, Col, Tabs } from 'antd'; +import { Row, Col, Tabs } from 'antd-v4'; import TimeLineChart from '../TimelineChart'; import NumberInfo from '../../NumberInfo'; import Pie from '../Pie'; diff --git a/src/components/Common/AntdDraggableModal.js b/src/components/Common/AntdDraggableModal.js index 0d0cc4b..0b4cdc9 100644 --- a/src/components/Common/AntdDraggableModal.js +++ b/src/components/Common/AntdDraggableModal.js @@ -1,5 +1,5 @@ import React from 'react'; -import { Modal } from 'antd'; +import { Modal } from 'antd-v4'; import './AntdDraggableModal/antDraggle.less'; diff --git a/src/components/Common/AssignmentField.js b/src/components/Common/AssignmentField.js index 2cf0aef..757e0e5 100644 --- a/src/components/Common/AssignmentField.js +++ b/src/components/Common/AssignmentField.js @@ -3,7 +3,7 @@ */ /* eslint-disable no-undef,import/first,prefer-destructuring,jsx-a11y/alt-text */ import React, { Component } from 'react'; -import { Modal } from 'antd'; +import { Modal } from 'antd-v4'; import styles from '@/index.less'; import * as commonUtils from '@/utils/utils'; import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ diff --git a/src/components/Common/CommonBill/index.js b/src/components/Common/CommonBill/index.js index 083ece4..fc4a522 100644 --- a/src/components/Common/CommonBill/index.js +++ b/src/components/Common/CommonBill/index.js @@ -17,7 +17,7 @@ import { Upload, Input, Modal -} from 'antd'; +} from 'antd-v4'; import { message } from '@/utils/common/message'; import CommonSales from '@/components/Common/CommonBillEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonBillDeliver.js b/src/components/Common/CommonBillDeliver.js new file mode 100644 index 0000000..7ec8f52 --- /dev/null +++ b/src/components/Common/CommonBillDeliver.js @@ -0,0 +1,1696 @@ +/* eslint-disable prefer-destructuring */ + +import React, { Component } from 'react'; +import { UploadOutlined } from '@ant-design/icons'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import { Row, Col, Checkbox, Layout, Spin, Tabs, Avatar, Button, message, Table, Input, Upload } from 'antd-v4'; +import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import styles from '@/index.less'; +import CommonView from '@/components/Common/CommonView'; +import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +import * as commonServices from '@/services/services';/* 服务类 */ + +import AddIcon from '@/assets/add.svg'; +import DisableAddIcon from '@/assets/disableadd.svg'; +import CopyIcon from '@/assets/copy.svg'; +import CopyAllIcon from '@/assets/copyall.svg'; +import DisableCopyIcon from '@/assets/disablecopy.svg'; +import DisableCopyAllIcon from '@/assets/disablecopyall.svg'; +import DelIcon from '@/assets/delete.svg'; +import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */ +import MaterialRemarkIcon from '@/assets/materialremark.svg'; +import DisMaRemarklIcon from '@/assets/disablematerialremark.svg'; +import ProcessIcon from '@/assets/process.svg'; +import DisableProcessIcon from '@/assets/disableprocess.svg'; +import MateriallIcon from '@/assets/material.svg'; +import DisableMateriallIcon from '@/assets/disablematerial.svg'; +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from '@/components/Common/CommonListSelect'; +import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; + +import StaticEditTree from '@/components/Common/Tree/StaticTree'; +import AddChildIcon from '@/assets/addChild.svg'; +import DisableAddChildIcon from '@/assets/disableaddChild.svg'; +import ContextMenuModal from '@/components/Common/ContextMenuModal'; +import CommonDeliverSales from '@/components/Common/CommonBillDeliverEvent'; + +/* 继承销售模块业务功能 */ +const width = '18px'; +const height = '18px'; +const setAdd = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 删除, +}; +const setAddChild = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 添加, +}; +const setCopy = { + title: '复制', + width: { width }, + height: { height }, + img: 复制, + disableimg: 复制, +}; +const setCopyAll = { + title: '复制部件', + width: { width }, + height: { height }, + img: 复制部件, + disableimg: 复制部件, +}; +const setDelete = { + title: '删除', + width: { width }, + height: { height }, + img: 删除, + disableimg: 删除, +}; +const setProcess = { + title: '工序', + width: { width }, + height: { height }, + img: 选择工序, + disableimg: 删除, +}; +const setMaterial = { + title: '材料', + width: { width }, + height: { height }, + img: 选择材料, + disableimg: 选择材料, +}; + + +const { Header, Content, Sider } = Layout; +const { TabPane } = Tabs; +// const { confirm } = Modal; +class CommonBillDeliver extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + /** 行选择 */ + onRowClick = (name, record) => { + if (name === 'control') { + this.props.onTableSelectRowChange(name, [record.sId]); + } + }; + + onChange = (checkedValues) => { + this.props.onSaveState({ + dataPersonArray: checkedValues, + }); + }; + getMenuStatus = (menu) => { + if (menu.sControlName === 'BtnImport') { + return !this.props.enabled; + } + }; + /** 上传后执行函数 */ + handleUploadChangeFile = async (info) => { + const { file } = info; + const { + masterData, sModelsId, app, token, sModelsType, slaveConfig, slaveData, + } = this.props; + if (file.response) { + if (file.response.code === 1) { + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + message.error(errorInfo[0].sReason); + return; + } + /* 把之前存放的数据删除 */ + const slaveDelData = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = 'del'; + slaveDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], returnData[0]); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + await returnData.forEach(async (tableDataRow) => { + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf('_sRealValue_'); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId); + if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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, + }); + } + } + if (!tableDataRow.dNProductPrice) { + tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + } + const models = 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.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models); + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + } + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + /** 上传后执行函数 */ + handleBeforeUpload = () => { + // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!isLt10M) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */ + // } + }; + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const uploadInfo = { + sPicturePath, + sFileName: file.name, + }; + const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmpty(tableData[tableData.length - 1].sPicturePath)) { + tableData[tableData.length - 1].sPicturePath = uploadInfo.sPicturePath; + tableData[tableData.length - 1] = { ...tableData[tableData.length - 1], sPicturePath: uploadInfo.sPicturePath, sFileName: uploadInfo.sFileName }; + } else { + const tableDataRow = this.props.onDataRowAdd(name, true); + tableColumn.forEach((slaveChild) => { + const ckey = slaveChild.dataIndex; + if (ckey === 'sProductNo' || ckey === 'sProductName') { + tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : ''; + } else if (ckey === 'iOrder') { + tableDataRow[ckey] = ''; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + } + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, sCheckRemark, + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue; + if (bCkxTmpCheck === '1') { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach((item) => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(','); + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_System_AutoSendCheckMsg', + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: sCheckRemark, + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString, + }, + }; + + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null); + const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId }; + const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false, + }); + return; + } + } else { /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false, + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false, + }); + }; + handleTableModal = async () => { + const { + sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, sModelsType, + } = this.props; + const addState = {}; + let treeState = {}; + if (this.props.sModelsType.includes('sales/salesOrder')) { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + let dropdownProductClassifyId; + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId); + if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) { + const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(','); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dStockupQty, 0); + tableDataRowAdd.sAllId = tableDataRowAdd.sId; + tableDataRowAdd.sControlParentId = ''; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + if (sModelsType === 'sales/salesOrderPack') { + const sSlaveId = slaveSelectedRowKeys[0]; + if (commonUtils.isNotEmptyObject(sSlaveId)) { + treeState = this.props.onGetControlTreeData(controlData, true, sSlaveId); + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState, + ...treeState, + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + + if (iIndex > -1) { + this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]); + } + }; + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + }; + handleOkModal = async () => { + const { + controlData, materialsData, processData, slaveData, slaveSelectedRowKeys, + } = this.props; + const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const mtData = materialsData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType !== '3'); + const p3Data = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '3'); /* 成品工序 */ + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ''; + let pDetail = ''; + const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + await ctData.forEach((controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? '' : ' '; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ''; + let ipDetail = ''; + const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId)); + // let materialsIdDropDown; + // const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName'); + // if (materialsIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]); + // materialsIdDropDown = sqlDropDownData.dropDownData; + // } + materials.forEach((mItem, i) => { + const fh = i === 0 ? '' : ','; + imDetail = `${imDetail}${fh} ${mItem.sMaterialsName}`; + }); + // processPropsType + const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId)); + // let processIdDropDown; + // const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + // if (processIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]); + // processIdDropDown = sqlDropDownData.dropDownData; + // } + // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName'); + process.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + ipDetail = `${ipDetail}${fh} ${pItem.sProcessName}`; + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + /* 成品工序 */ + let ip3Detail = ''; + if (commonUtils.isNotEmptyArr(p3Data)) { + p3Data.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + ip3Detail = `${ip3Detail}${fh} ${pItem.sProcessName}`; + }); + } + if (commonUtils.isNotEmptyObject(ip3Detail)) { + if (commonUtils.isNotEmptyObject(pDetail)) { + pDetail = `${pDetail},${ip3Detail}`; + } else { + pDetail = ip3Detail; + } + } + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ''; + slaveData[slaveIndex].sProcessMemo = ''; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + materialsData, + processData, + slaveData, + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterData = (name, dataIndex, value, record) => { + const { slaveSelectedRowKeys } = this.props; + if (name === 'process') { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + } else if (name === 'slaveChild') { + return commonUtils.isNotEmptyStr(record.sDelivergooodSlaveId) && record.sDelivergooodSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase()); + } else { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + } + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys, slaveSelectedRowKeys } = this.props; + if (data !== undefined) { + const newArr = data.filter((item) => { + if (name === 'control') { + return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } else { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } + }); + return newArr.length; + } + }; + /* 包装工单过滤行 */ /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterDataPack = (name, dataIndex, value, record) => { + if (name === 'process') { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3') || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + } else { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2') || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + } + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterDataPack = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys } = this.props; + if (data !== undefined && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) { + const newArr = data.filter((item) => { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString())); + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag, bchild) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig, + } = this.props; + let tableDataRow = {}; + if (name === 'control') { + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + if ((bchild === 'childNode' || bchild === 'sameNode') && (commonUtils.isEmptyArr(treeSelectedKeys) || commonUtils.isEmptyArr(controlSelectedRowKeys))) { + message.warn('请选择部件!'); // 请选择部件 + return; + } + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); + }); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + if (sModelsType.includes('sales/salesOrder')) { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + /* 树形部件节点增加同级部件、增加子级部件 */ + if (sModelsType === 'sales/salesOrderPack') { + if (bchild === 'sameNode') { /* 添加同级 */ + const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]); + /* 找到同级子元素的sControlParentId */ + if (iIndex > -1) { + tableDataRow.sControlParentId = controlData[iIndex].sControlParentId; + /* 找到同级父级sAllId */ + const pId = controlData[iIndex].sControlParentId; + const sControlParentId = controlData.findIndex(item => item.sId === pId); + if (sControlParentId > -1) { + const sAllId = controlData[sControlParentId].sAllId; + if (commonUtils.isEmptyObject(sAllId)) { + message.warn('部件数据生成错误![sAllId为空]'); + return; + } + tableDataRow.sAllId = `${controlData[sControlParentId].sAllId},${tableDataRow.sId}`; + } else { + tableDataRow.sAllId = tableDataRow.sId; + } + } + } + if (bchild === 'childNode') { /* 添加子级 */ + tableDataRow.sControlParentId = treeSelectedKeys[0]; + const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]); + if (iIndex > -1) { + const sAllId = controlData[iIndex].sAllId; + if (commonUtils.isEmptyObject(sAllId)) { + message.warn('子部件数据生成错误![sAllId为空]'); // 获取父节点的sAllId + return; + } + tableDataRow.sAllId = `${controlData[iIndex].sAllId},${tableDataRow.sId}`; + } + } + } + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.props.onGetControlTreeData(tableData, true, tableDataRow.sSlaveId); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId], ...treeState }); + } else if (name === 'materials' || name === 'process') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts'); + message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]); + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') { + message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + otherDeliverTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sDelivergooodSlaveId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sDelivergooodSlaveId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys, isTree) => { + const { + sModelsType, slaveSelectedRowKeys, slaveData, + } = this.props; + if (name === 'control') { + // const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; /* 删除时,选中行取删除参数传过来的 */ + const { + controlData, treeSelectedKeys, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (isTree) { + /* 删除该节点及所有子节点 */ + const controlChildData = controlData.filter(item => commonUtils.isNotEmptyObject(item.sAllId) && item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(controlData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + const sSlaveId = slaveData[iSlaveIndex].sId; + treeState = this.props.onGetControlTreeData(controlReturnData.controlData, true, sSlaveId); + } + } + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + ...treeState, + }); + return true; + } else { + message.warn('请选择要删除的部件!'); + return false; + } + } else if (name === 'slave' && sModelsType === 'sales/salesSgoods') { + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const slaveChildReturnData = this.otherDeliverTableDel('slaveChild', slaveSelectedRowKeys); + const slaveReturnData = this.props.onDataRowDel(name, isWait, slaveSelectedRowKeys); + this.props.onSaveState({ + ...slaveChildReturnData, + ...slaveReturnData, + }); + return true; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { + sModelsType, controlData, processData, materialsData, + } = this.props; + if (sModelsType === 'sales/salesOrder' && name === 'slave') { + const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true); + } + const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true); + } + const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, tableName, sModelsType, + } = this.props; + const tableSelectedRowKeys = []; + if (name === 'productProcessInfo') { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ''; + let sConfigMasterIdControl = ''; + let sConfigMasterIdMaterials = ''; + let sConfigMasterIdProcess = ''; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro')); + } + const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }); + } + } else if (tableName === 'slave' && selectConfig.sControlName === 'BtnChooseMaterials') { + this.props.onSelect('slave', selectConfig, selectData); + } else if (sModelsType.includes('cashier/') && selectConfig.sControlName === 'BtnImportFormData') { + const { slaveData } = this.props; + let tableDataNew = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + tableDataNew = slaveData; + tableDataNew.forEach((item, index) => { + const handleType = item.handleType; + if (commonUtils.isEmptyObject(handleType) || handleType === 'update') { + tableDataNew[index] = { ...item, handleType: 'del' }; + } + }); + } + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + let tableDataRow = {}; // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataNew.push(tableDataRow); + }); + this.props.onSaveState({ slaveData: tableDataNew, importFormDataVisible: false }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType.includes('sales/salesOrder')) { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== '3') { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === '3') { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys }); + } + }; + + /** 树节点选中 */ + handleTreeSelect = (name, checkedKeys, e) => { + let { controlSelectedRowKeys } = this.props; + controlSelectedRowKeys = checkedKeys; /* 把树形选中节点赋值给表格部件选中节点 */ + this.props.onTreeSelect(name, checkedKeys, e); + this.props.onSaveState({ + controlSelectedRowKeys, + }); + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + handleGetDataOk = () => { + this.props.onDataImport('zero'); + } + handleGetDataCancel = () => { + this.props.onDataImport('all'); + } + colseGetDataVisible = () => { + this.props.onSaveState({ isGetDataVisible: false }); + } + + /* 审核备注文本框改变事件 */ + textChange= (e, record) => { + const sCheckRemark = commonUtils.isNotEmptyObject(record) && commonUtils.isNotEmptyObject(e.target.value) ? e.target.value : ''; + this.props.onSaveState({ sCheckRemark });/* 审核备注 */ + } + // ----------------------------数据修改回带end ---------------------------- // + + render() { + const { + pageLoading, masterConfig, visible, checkConditions, checkPersonData, visibleModal, processChooseVisible, materialsChooseVisible, app, sTabId, sModelsType, enabled, slaveSelectedRowKeys, + } = this.props; + const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */ + const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */ + const columns = [{ + title: checkCondition, + dataIndex: 'condition', + key: 'condition', + }, { + title: checkSmemo, + dataIndex: 'sMemo', + key: 'sMemo', + render: (text, record) => { + return ( +
+ { this.textChange(e, record); }} /> +
+ ); + }, + }]; + let chooseProcessConfig; + let onChooseProcessIndex; + /* 获取toolbar 选择工序 */ + if (commonUtils.isNotEmptyObject(masterConfig)) { + onChooseProcessIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + if (onChooseProcessIndex > -1) { + chooseProcessConfig = this.props.masterConfig.gdsconfigformslave[onChooseProcessIndex]; + } + } + /* 获取toolbar 选择材料 */ + let chooseMaterialsConfig; + const modalWidth = '1132'; + const fixedAutoHeight = sModelsType === 'sales/salesOrderPack' ? 120 : 66; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + if (iIndex > -1) { + chooseMaterialsConfig = masterConfig.gdsconfigformslave[iIndex]; + } + } + /* 若销售订单从表选中行被工单或其他调用 则材料与工艺只能查看不能操作 */ + let bUsed = enabled; + if (sModelsType.includes('sales/salesOrder') && enabled && commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const { slaveData } = this.props; + const iSlaveDataIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iSlaveDataIndex > -1) { + const sWorkOrderUsed = slaveData[iSlaveDataIndex].sWorkOrderUsed; + if (commonUtils.isNotEmptyObject(sWorkOrderUsed)) { + bUsed = false; + } + } + } + + const controlPropsType = { + ...commonBusiness.getTableTypes('control', this.props), + tableProps: { + CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight, setCopyAll, setProcess, setMaterial, chooseProcessConfigRow: chooseProcessConfig, chooseMaterialsConfigRow: chooseMaterialsConfig, onRow: (record) => { return { onClick: () => { this.onRowClick('control', record); } }; }, + }, + filteredValue: this.props.slaveSelectedRowKeys, + onFilterData: this.handleFilterSlaveData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onKeyDown: this.props.onKeyDown, + onDelRow: this.handleTableDel, + enabled: bUsed, + }; + const name = 'controlTree'; + const treeProps = { + ...commonBusiness.getTreeTypes('tree', this.props), + isSearch: false, + checkable: false, + disabled: false, + checkedAll: false, + unChecked: false, + [`${name}Column`]: this.props[`${name}Column`], + [`${name}Config`]: this.props[`${name}Config`], + [`${name}Data`]: this.props[`${name}Data`], + getFloatNum: this.props.getFloatNum, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getDateFormat: this.props.getDateFormat, + onDoubleClick: this.props.onDoubleClick, + onSelect: this.handleTreeSelect, + expandedKeys: this.props.expandedKeys, + showLine: true, + }; + const materialsPropsType = { + ...commonBusiness.getTableTypes('materials', this.props), + tableProps: { CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight }, + filteredValue: this.props.controlSelectedRowKeys, + onFilterData: this.handleFilterData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onKeyDown: this.props.onKeyDown, + enabled: bUsed, + }; + const processPropsType = { + ...commonBusiness.getTableTypes('process', this.props), + tableProps: { CalLastWidth: modalWidth, AutoTableHeight: 132 }, + filteredValue: this.props.controlSelectedRowKeys, + onFilterData: this.handleFilterData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onChooseProcessRow: this.handleTableChooseProcess, + onKeyDown: this.props.onKeyDown, + enabled: bUsed, + }; + let searchProcessType = {}; + // let chooseProcessConfig = {}; + if (commonUtils.isNotEmptyObject(this.props.processChooseData)) { + // const iIndex = this.props.processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + // if (iIndex > -1) { + // chooseProcessConfig = this.props.processConfig.gdsconfigformslave[iIndex]; + // } + + searchProcessType = { + app: { + ...this.props.app, + currentPane: { + name: 'process', + config: chooseProcessConfig, + conditonValues: this.props.getSqlCondition(chooseProcessConfig), + title: this.props.processChooseData.sMenuName, + route: this.props.processChooseData.sName, + formId: this.props.processChooseData.sId, + key: this.props.sModelsId + this.props.processChooseData.sId, + sModelsType: this.props.processChooseData.sModelType, + select: this.handleSelect, + selectCancel: this.props.onSelectCancel, + }, + }, + dispatch: this.props.dispatch, + content: this.props.content, + id: new Date().getTime().toString(), + realizeHeight: this.props.realizeHeight, /* 拖动偏移高度 */ + }; + } + + + let searchMaterialsType = {}; + // let chooseMaterialsConfig = {}; + if (commonUtils.isNotEmptyObject(this.props.materialsChooseData) && this.props.tableName !== 'slave') { + // const iIndex = this.props.materialsConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + // if (iIndex > -1) { + // chooseMaterialsConfig = this.props.materialsConfig.gdsconfigformslave[iIndex]; + // } + + searchMaterialsType = { + app: { + ...this.props.app, + currentPane: { + name: 'materials', + config: chooseMaterialsConfig, + conditonValues: this.props.getSqlCondition(chooseMaterialsConfig), + title: this.props.materialsChooseData.sMenuName, + route: this.props.materialsChooseData.sName, + formId: this.props.materialsChooseData.sId, + key: this.props.sModelsId + this.props.materialsChooseData.sId, + sModelsType: this.props.materialsChooseData.sModelsType, + select: this.handleSelect, + selectCancel: this.props.onSelectCancel, + }, + }, + dispatch: this.props.dispatch, + content: this.props.content, + id: new Date().getTime().toString(), + realizeHeight: this.props.realizeHeight, + }; + } + const pane = app.panes.filter(paneTmp => paneTmp.key === sTabId)[0]; + const setMaterailRemark = commonFunc.showMessage(app.commonConst, 'setMaterailRemark');/* 选择材料与工艺 */ + const setProcessTitle = commonFunc.showMessage(app.commonConst, 'setProcess');/* 选择工序标题 */ + const setMaterialTitle = commonFunc.showMessage(app.commonConst, 'setMaterial');/* 选择材料标题 */ + const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */ + const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */ + const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */ + const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */ + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateAdd = {this.props.enabled ? setAdd.img : setAdd.disableimg} ; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateAddChild = {this.props.enabled ? setAddChild.img : setAddChild.disableimg }; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateCopy = {this.props.enabled ? setCopy.img : setCopy.disableimg}; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateUpdate = {this.props.enabled ? setCopyAll.img : setCopyAll.disableimg }; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateDel = {this.props.enabled ? setDelete.img : setDelete.disableimg}; + return ( +
+ +
+ + { + visible ? + {BtnClose}, + , + ]} + > + +
{checkPerson}
+
+ + + { commonUtils.isNotEmptyObject(checkPersonData) ? + checkPersonData.map((item) => { + return ( +
+ {item.sUserName} + + ); + }) + : '' + } + + + + + : '' + } + { + visibleModal ? + {BtnClose}, + , + ]} + > + { + (pane.notCurrentPane ? false : processChooseVisible) ? + + + + : '' + } + { + (pane.notCurrentPane ? false : materialsChooseVisible) ? + + + + : '' + } +
+ { + sModelsType === 'sales/salesOrderPack' ? +
+
+ +
+
+
+
+ {operateAdd} + {operateAddChild} + {operateCopy} + {operateUpdate} + {operateDel} +
+
+ +
+ +
+
+
: +
+ +
+ } +
+ +
+
+ +
+
+ + : ''} +
+ + + ); + } +} + +const BillDeliverComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + slaveData, + slavePagination, + onlyMaster, + AutoTableHeight, + sModelsId, + app, + onlyMasterAndSlave, + masterConfig, + slaveConfig, + isSmall, + isGetDataVisible, + onGetDataCancel, + onGetDataOk, + colseGetDataVisible, + sModelsType, + masterData, + } = props; + /* 回带表单 */ + onReturnForm(form); + const pagination = { + pageSize: commonConfig.pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // size: 'large', + + // showQuickJumper: true, + hideOnSinglePage: false, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0]; + let setMaterialRemark = { + title: '材料与工艺', + width: { width }, + height: { height }, + img: 材料与工艺, + disableimg: 材料与工艺不可用, + }; + /* 获取toolbar 选择材料 */ + let searchMaterialsType = {}; + let chooseMaterialsConfig = {}; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + if (iIndex > -1) { + chooseMaterialsConfig = slaveConfig.gdsconfigformslave[iIndex]; + } + } + if (commonUtils.isNotEmptyObject(props.materialsChooseData)) { + searchMaterialsType = { + app: { + ...props.app, + currentPane: { + name: 'materials', + config: chooseMaterialsConfig, + conditonValues: props.getSqlCondition(chooseMaterialsConfig), + title: props.materialsChooseData.sMenuName, + route: props.materialsChooseData.sName, + formId: props.materialsChooseData.sId, + key: sModelsId + props.materialsChooseData.sId, + sModelsType: props.materialsChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + realizeHeight: props.realizeHeight, /* 拖动偏移高度 */ + }; + } + + /* 导入收付款未清数据 */ + let importPopupProps = {}; + let importPopupTitle = '导入未清数据'; + if (commonUtils.isNotEmptyObject(props)) { + let importPopupConfig = {}; + const { + masterConfig, sModelsId, + } = props; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnImportFormData' && item.bVisible); + if (iIndex > -1) { + importPopupConfig = masterConfig.gdsconfigformslave[iIndex]; + importPopupTitle = commonUtils.isNotEmptyObject(importPopupConfig) && commonUtils.isNotEmptyObject(importPopupConfig.sActiveName) ? importPopupConfig.sActiveName : importPopupTitle; + importPopupProps = { + app: { + ...props.app, + currentPane: { + name: 'commonPopup', + config: importPopupConfig, + conditonValues: {}, + title: importPopupTitle, + route: '/indexPage/commonList', + formRoute: '/indexPage/commonList', + formId: importPopupConfig.sActiveId, + key: sModelsId + importPopupConfig.sId, + sModelsType: 'search/importFormData', + select: props.onSelect, + selectCancel: props.handleCancelModal.bind(this, 'importFormDataVisible'), + bFilterProName: props.bFilterProName, /* 存储过程查询ID */ + bFilterProValue: props.bFilterProValue, /* 存储过程查询VALUE */ + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + realizeHeight: props.realizeHeight, /* 拖动偏移高度 */ + }; + } + } + } + + // const saleOrder = commonFunc.showMessage(app.commonConst, 'saleOrder');/* 销售订单 */ + setMaterialRemark = props.sModelsType !== undefined && props.sModelsType.includes('sales/salesOrder') ? setMaterialRemark : null; + const autoHeight = AutoTableHeight - 90; + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, AutoTableHeight: autoHeight, + }, + templateProps, + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下一行 + 说明:添加keyDown事件透传 + */ + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + onDelRow: props.onDelRow, + }; + + const slaveChildTableProps = { + ...commonBusiness.getTableTypes('slaveChild', props), + filteredValue: props.slaveSelectedRowKeys, + onFilterData: props.onFilterData, + tableProps: { + setAdd, setCopy, setDelete, pagination, onChange: props.onTitleChange, + }, + templateProps, + bRowClick: true, + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下一行 + 说明:添加keyDown事件透传 + */ + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + + let gdsconfigformmasterId = ''; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + + const sNotEmpty = 'sParentId,sProductId'; + let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`; + /* 送货单需要传客户id */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile, /* 文件上传 */ + accept: 'xls/*', + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + }, + }; + const uploadPropsSales = props.onUploadPropsSales(); + const MainContent = commonFunc.showMessage(app.commonConst, 'MainContent');/* 主体内容 */ + const isGetData = commonFunc.showMessage(app.commonConst, 'isGetData');/* 确认获取库存为零的数据吗 */ + const isFilterGetDataZero = commonFunc.showMessage(app.commonConst, 'isFilterGetDataZero'); + const isAllGetData = commonFunc.showMessage(app.commonConst, 'isAllGetData'); + const CheckInfo = commonFunc.showMessage(app.commonConst, 'CheckInfo');/* 审批信息 */ + const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */ + /* + if (props.sModelsType === 'sales/salesOrder') { + const btnUpload = ( + + + ); + slaveTableProps.tableProps.newButton = btnUpload; + } + */ + + return ( +
+ +
+
+ + { commonUtils.isNotEmptyArr(ImportData) ? +
+ {BtnimportData} +
: ''} +
+
+ + +
+
+ +
+
+ { onlyMaster ? +
+
+ +
+
: +
+
+ +
+ + +
+ +
+
+ +
+ +
+
+
+
} + { onlyMasterAndSlave ? +
+
+ +
+ + + + + +
: '' } +
+ +
+
+
+
+ { + isGetDataVisible ? + + {isAllGetData} + , + , + ]} + > +

{isGetData}

+
+ : '' + } + { + props.materialsChooseVisible && !props.visibleModal ? + + + + : '' + } + { + props.importFormDataVisible ? + + + + : '' + } + { + props.contextMenuModalVisible ? + + : '' + } + + ); +}); + +export default CommonBase(CommonDeliverSales(CommonBillDeliver)); diff --git a/src/components/Common/CommonBillDeliverEvent.js b/src/components/Common/CommonBillDeliverEvent.js new file mode 100644 index 0000000..6892d7e --- /dev/null +++ b/src/components/Common/CommonBillDeliverEvent.js @@ -0,0 +1,5207 @@ +/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ +/** + * Created by pm on 2021-08-17 用于送货单个性化. + */ +import React, { Component } from 'react'; +import { Modal, message } from 'antd-v4'; +import moment from 'moment'; +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ +import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ +import * as commonServices from '../../services/services'; /* 服务类 */ +import commonConfig from '../../utils/config'; +import * as commonFunc from './commonFunc'; + +const { confirm } = Modal; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + changleCustomerId: '', + dPackQtyChange: 0, + }; + this.form = {}; /* 表单对象 */ + const { sModelsId, sModelsType } = props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sSrcNo', []); + } + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, sModelsType, formRoute, + } = nextProps; + const { + slaveConfig: slaveConfigOld, + masterConfig: masterConfigOld, + app, + employeeConfig: employeeConfigOld, + } = nextProps; + if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0 && (sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' && sModelsType !== 'quality/accident' && sModelsType !== 'purchase/purchaseEnquiry' && sModelsType !== 'complaint/complaint' && sModelsType !== 'print/printLabel' && sModelsType !== 'commonBill/onlyMaster' && formRoute.indexOf('indexOee') === -1)) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const BtnDesignFunctionConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnBsOperation.BtnDesignFunction') : {}; + const reportDesign = commonFunc.showMessage(app.commonConst, 'reportDesign');/* 报表设计 */ + if (commonUtils.isEmptyObject(BtnDesignFunctionConfig)) { + masterConfig.gdsconfigformslave.push({ + bCanInput: false, + bEntireLine: false, + bFilter: false, + bFind: false, + bFirstEmpty: false, + bIsOther: false, + bMultipleChoice: false, + bNewRecord: false, + bNotEmpty: false, + bNotRepeat: false, + bReadonly: false, + bSum: false, + bTree: false, + bVisible: true, + iColValue: 1, + iFitWidth: 120, + /* iIncrement: 26154, */ + iOrder: 1, + iTag: 0, + iVisCount: 0, + iconName: 'menu-unfold', + sActiveKey: '', + sAssignField: '', + sBig5: '', + sBig5DropDown: '', + sBrandsId: '1111111111', + sChinese: '报表设计', + sChineseDropDown: '', + sColor: '', + sColorTerms: '', + sControlName: 'BtnBsOperation.BtnDesignFunction', + sDateFormat: '', + sDefault: '', + sDropDownType: '', + sEnglish: '', + sEnglishDropDown: '', + sFilterSql: '', + /* sId: '19211681019715580740769130', */ + sKeyUpFilter: '', + sMaxValue: '', + sMinValue: '', + sName: '', + sNotRepeatColumn: '', + /* sParentId: '19211681019715428730724240', */ + sRelation: '', + sSelectRelation: '', + sSqlCondition: '', + sSubsidiaryId: '1111111111', + showDropDown: '', + showName: reportDesign, + }); + } + /* bGrd代表是否是表格 */ + let slaveConfig = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult')[0]; + let slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + const checkConfig = formData.filter(item => item.bGrd && item.sTbName === 'sysbillcheckresult')[0]; + const checkColumn = commonFunc.getHeaderConfig(checkConfig); + let addState = {}; + if (formRoute === '/indexPage/commonBill' && sModelsType === 'cost/cosexpenseshare') { + const { sModelsId } = this.props; + const { sId, sParentId } = slaveConfig; + let sAssignStandardConfig = {}; + const filterData = slaveConfig.gdsconfigformslave.filter(item => item.sName === 'sAssignStandard'); + if (commonUtils.isNotEmptyArr(filterData)) { + sAssignStandardConfig = filterData[0]; + } + const url = `${commonConfig.server_host}costCenter/getCostCenterConfig?sModelsId=${sModelsId}`; + const body = { + sId, + sParentId, + sAssignStandardConfig, + }; + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows) && rows.length > 0) { + slaveConfig = rows[0]; + slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + } + } else { /* 失败s */ + this.props.getServiceError(dataReturn); + return []; + } + } + if (formRoute === '/indexPage/commonBill' || formRoute === '/indexPage/commonBillDeliver') { + if (sId === '') { + const config = {}; + let addState1 = {}; + if (sModelsType.includes('sales/salesOrder')) { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordermaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + const colorConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderparam'.toUpperCase())[0]; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + const packConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrolcombine'.toUpperCase())[0]; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + config.controlConfig = controlConfig; + config.materialsConfig = materialsConfig; + config.processConfig = processConfig; + config.colorConfig = colorConfig; + config.packConfig = packConfig; + addState1 = { + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + colorConfig, + colorColumn, + packConfig, + packColumn, + }; + } else if (sModelsType === 'purchase/purchaseOrder') { + const orderDetailConfig = formData.filter(item => item.sTbName.toUpperCase() === 'purpurchaseorderDetail'.toUpperCase())[0]; + const orderDetailColumn = commonFunc.getHeaderConfig(orderDetailConfig); + config.orderDetailConfig = orderDetailConfig; + this.handleGetOneMemoData('orderDetail', orderDetailConfig); + addState1 = { + orderDetailConfig, + orderDetailColumn, + }; + } else if (sModelsType === 'sales/salesSgoods') { /* 个性化送货单 */ + const slaveChildConfig = formData.filter(item => item.sTbName.toUpperCase() === 'saldelivergoodsslavechildren'.toUpperCase())[0]; + const slaveChildColumn = commonFunc.getHeaderConfig(slaveChildConfig); + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + addState1 = { + slaveChildConfig, + slaveChildColumn, + }; + } + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + addState = { ...addState, ...addState1 }; + // if (sModelsType.includes('sales/salesOrder') || sModelsType === 'purchase/purchaseOrder') { + // this.props.onSaveState(addState1); + // } + } else { + this.handleGetData(masterConfig, slaveConfig, checkConfig); + if (sModelsType.includes('sales/salesOrder')) { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordermaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + const colorConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderparam'.toUpperCase())[0]; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + const packConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrolcombine'.toUpperCase())[0]; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + this.props.onSaveState({ + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + colorConfig, + colorColumn, + packConfig, + packColumn, + }); + } else if (sModelsType === 'manufacture/workOrder3') { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductcontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductmaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + this.handleGetMemoData(controlConfig, materialsConfig, processConfig); + this.props.onSaveState({ + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + }); + } else if (sModelsType === 'purchase/purchaseOrder') { + const orderDetailConfig = formData.filter(item => item.sTbName.toUpperCase() === 'purpurchaseorderDetail'.toUpperCase())[0]; + const orderDetailColumn = commonFunc.getHeaderConfig(orderDetailConfig); + this.handleGetOneMemoData('orderDetail', orderDetailConfig); + this.props.onSaveState({ + orderDetailConfig, + orderDetailColumn, + }); + } else if (sModelsType === 'sales/salesSgoods') { /* 个性化送货单 */ + const slaveChildConfig = formData.filter(item => item.sTbName.toUpperCase() === 'saldelivergoodsslavechildren'.toUpperCase())[0]; + const slaveChildColumn = commonFunc.getHeaderConfig(slaveChildConfig); + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + this.props.onSaveState({ + slaveChildConfig, + slaveChildColumn, + }); + } + } + } + this.props.onSaveState({ + masterConfig, slaveConfig, slaveColumn, checkConfig, checkColumn, sId, pageLoading: false, ...addState, + }); + } else if (commonUtils.isEmptyObject(masterConfigOld) && formData.length === 1 && (sModelsType === 'cashier/financialTransfer' || sModelsType === 'purchase/purchaseEnquiry' || sModelsType === 'cashier/financialAdjustment' || sModelsType === 'print/printLabel' || sModelsType === 'complaint/complaint' || sModelsType === 'commonBill/onlyMaster') && formRoute.indexOf('indexOee') === -1) { + const config = {}; + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + let addState = {}; + if (formRoute === '/indexPage/commonBill') { + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } else { + this.handleGetData(masterConfig, undefined, undefined); + } + } + addState.onlyMaster = true; + if (formRoute === '/indexPage/printlabel') { + config.masterConfig = masterConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } + this.props.onSaveState({ + masterConfig, sId, pageLoading: false, ...addState, + }); + } else if (commonUtils.isEmptyObject(slaveConfigOld) && commonUtils.isEmptyObject(masterConfigOld) && formData.length === 2 && (sModelsType === 'quality/accident') && formRoute.indexOf('indexOee') === -1) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const slaveConfig = formData.filter(item => item.bGrd && item.sTbName === 'mftqualityaccidentSlave')[0]; + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + let addState = {}; + if (formRoute === '/indexPage/commonBill') { + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } else { + this.handleGetData(masterConfig, slaveConfig, undefined); + } + } + addState.onlyMaster = true; + addState.onlyMasterAndSlave = true; + this.props.onSaveState({ + masterConfig, sId, slaveConfig, slaveColumn, pageLoading: false, ...addState, + }); + } else if (formRoute.indexOf('indexOee') > -1 && commonUtils.isEmptyObject(employeeConfigOld) && commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) { + if (formRoute === '/indexOee/labelPrint' && commonUtils.isEmpty(slaveConfigOld)) { /* 入库标签打印 */ + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData[0]; + const slaveConfig = formData[0]; + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + // this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sSqlCondition: { sParentId: sId } } }); + this.handleGetOneMemoData('slave', slaveConfig); + this.props.onSaveState({ + masterConfig, sId, slaveConfig, slaveColumn, pageLoading: false, + }); + } + } + } + + shouldComponentUpdate(nextProps) { + const { slaveColumn, masterConfig } = nextProps; + return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); + } + + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下onKeyDown函数 + 需求变更:为解决bug 2031添加 + */ + /** 键盘事件监听 */ + onKeyDown = (e, record, sName, name) => { + const { [`${name}Data`]: tableData, [`${name}Column`]: tableColumn, [`${name}Config`]: tableConfig } = this.props; + + let keyCode = e.keyCode; + let firstName; + let bEnter = false; + if (keyCode === 13) { + // 判断当前单元格是否是最后,不是则跳到下一格,是则跳到下一行第一格 + bEnter = true; + const uniqueTableId = `table_${this.props.sModelsId}_${tableConfig.sId}`; + const currentTable = document.getElementById(uniqueTableId); + const currentTr = currentTable.querySelector(`tr[data-row-key="${record.sId}"]`); + const allInput = currentTr.querySelectorAll(`input[id*="${record.sId}"]`); + const iIndex = Array.from(allInput).findIndex(item => item.getAttribute('id') === `${sName}${record.sId}`); + if (iIndex < allInput.length - 1) { + keyCode = 39; + } else { + const oFirstInput = allInput[0]; + firstName = oFirstInput.getAttribute('id').replace(record.sId, ''); + keyCode = 40; + } + } + + // 以下if条件为 为解决bug2031问题入口 需求:收款单里输入的收款金额,上下键操作把加减金额改为选择上下行(通过上下方向键切换行数) + if ([38, 40].includes(keyCode)) { // 上键、下键 + e.preventDefault(); + if (tableData.length > 1) { // 当从表行数大于一行时才有上下移动的意义 + const index = tableData.findIndex(item => item.sId === record.sId); // 获取当前编辑行的下标 + if (index > -1) { + if (keyCode === 38 && index > 0) { // 方向键上键 且 当前编辑行下标大于0时,为0时无法向上 + const lastSid = tableData[index - 1].sId; // 获取上一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [lastSid] }, () => commonUtils.focus(`${sName}${lastSid}`)); + } + if (keyCode === 40 && index < tableData.length - 1) { // 方向键下键 且 当前编辑行下标小于最大值时,为最大值时无法向下 + const nextSid = tableData[index + 1].sId; // 获取下一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [nextSid] }, () => commonUtils.focus(`${firstName || sName}${nextSid}`)); + } + } + } + } + const move = (keyCode, cursortPosition, columnIndex, currentElement) => { + const inputType = currentElement.getAttribute('type'); + const value = currentElement.value; + if (keyCode === 37 && columnIndex > 0 && cursortPosition < 1) { // 左移 则 列下标必须大于0, 且光标在最左侧 + const lastId = `${tableColumn[columnIndex - 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(lastId, e)) move(keyCode, cursortPosition, columnIndex - 1, currentElement); // 递归 + } + if (keyCode === 39 && columnIndex < tableColumn.length - 1) { // 右移 则 列下标必须小于列数量-1 + if (!record[sName] || cursortPosition >= value.length || inputType === 'search' || bEnter) { // 当前列为空 或 光标位置不小于当前值的长度 + const nextId = `${tableColumn[columnIndex + 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(nextId, e)) move(keyCode, cursortPosition, columnIndex + 1, currentElement); // 递归 + } + } + }; + if ([37, 39].includes(keyCode)) { // 左键、右键 + const currentElement = document.getElementById(`${sName}${record.sId}`); // 当前编辑框对象 + if (currentElement) { + const cursortPosition = commonUtils.getCursortPosition(currentElement); // 光标位置 + const columnIndex = tableColumn.findIndex(item => item.dataIndex === sName); // 当前列下标 + move(keyCode, cursortPosition, columnIndex, currentElement); + } + } + } + + /* 单击右键全部更新,弹出窗选择后,更新此列所有数据 (只更新非只读字段) */ + onContextMenu = (e, record, showConfig, tbName) => { + const contextMenuConfig = []; + const showConfigNew = JSON.parse(JSON.stringify(showConfig)); /* 深拷贝配置 */ + contextMenuConfig.push(showConfigNew); + this.props.onSaveState({ + contextMenuModalVisible: true, /* 右击全部更新弹窗 */ + contextMenuConfig, /* 右击字段配置 数组形式 */ + contextMenuRecord: record, /* 右击数据 */ + contextMenuName: showConfig.showName, /* 右击字段 */ + contextMenuTbName: tbName, /* 右击字段 */ + }); + } + + /** 获取应收账款 */ + getCustomerReceipt = async (masterData) => { + const { sModelsId } = this.props; + if (!commonUtils.isEmpty(masterData.sCustomerId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { sProName: 'Sp_Receivables_AR', paramsMap: { sStatistics: masterData.sCustomerId } }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + const [returnData] = dataReturn.dataset.rows[0].dataSet.outData; + const masterDataNew = { + ...masterData, + dNoReceiptMoney: returnData.dNoReceiptMoney, + dDueReceiptMoney: returnData.dNoReceiptMoney, + }; + this.props.onSaveState({ masterData: masterDataNew }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + }; + + /** 获取上查下查数据 */ + getSearchUpDownData = async (showConfig) => { + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}searchupdown/getSearchUpDown/${showConfig.sId}?sModelsId=${sModelsId}`; + const conditonValues = this.props.getSqlCondition(showConfig); + if (commonUtils.isNotEmptyObject(conditonValues)) { + const iIndex = Object.keys(conditonValues).findIndex(item => commonUtils.isEmpty(conditonValues[item])); + if (iIndex === -1) { + /* 调用后台接口 */ + const body = { + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + return dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + }; + handlePackDataAdd= (item, index, sControlId) => { + const tableDataRow = {}; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.sSlaveId = item.sId; + tableDataRow.sParentId = item.sParentId; + tableDataRow.sControlId = sControlId; + tableDataRow.iOrder = item.iOrder; + tableDataRow.sProductId = item.sProductId; /* 产品id */ + tableDataRow.sCustomerId = item.sCustomerId; /* 客户id */ + tableDataRow.sCustomerName = item.sCustomerName; /* 客户名称 */ + tableDataRow.sProductName = item.sProductName; /* 产品名称 */ + tableDataRow.sProductNo = item.sProductNo; /* 产品编号 */ + tableDataRow.dProductQty = commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); /* 生产数量 */ /* 生产数量 */ + tableDataRow.sProductUnit = item.sProductUnit; /* 单位 */ + tableDataRow.sProductStyle = item.sProductStyle; /* 产品规格 */ + return tableDataRow; + } + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig, checkConfig, bEditClick) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + await this.props.handleGetDataOne({ + name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick, + }); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []); + if (!commonUtils.isEmptyObject(slaveConfig)) { + const getData = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if (commonUtils.isNotEmptyObject(getData) && commonUtils.isNotEmptyArr(getData.slaveData)) { + getData.slaveData.forEach((item, iIndex) => { + if (commonUtils.isNotEmptyObject(item.sReportParam)) { + item = { ...item, ...commonUtils.convertStrToObj(item.sReportParam) }; + getData.slaveData[iIndex] = item; + } + }); + this.props.onSaveState({ ...getData }); + } + if (commonUtils.isNotEmptyStr(getData.slaveData)) { + const selectRowKey = getData.slaveData[0].sId; + const selectRowKeyArr = []; + selectRowKeyArr.push(selectRowKey); + this.handleTableSelectRowChange('slave', selectRowKeyArr); + } + } + + if (!commonUtils.isEmptyObject(checkConfig)) { + this.props.handleGetDataSet({ + name: 'check', configData: checkConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + /* 获取表数据 */ + handleGetMemoData = async (controlConfig, materialsConfig, processConfig, colorConfig, packConfig) => { + const { currentId, sModelsType } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + const addStateControl = await this.props.handleGetDataSet({ + name: 'control', configData: controlConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + const { controlData, controlSelectedRowKeys } = addStateControl; /* 同步树选中节点与部件选中节点 */ + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(controlData, true); + } + this.props.handleGetDataSet({ + name: 'materials', configData: materialsConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + const addStateProcess = await this.props.handleGetDataSet({ + name: 'process', configData: processConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if (addStateProcess) { + if (Array.isArray(addStateProcess.processData)) { + // eslint-disable-next-line array-callback-return + addStateProcess.processData.map((itemProcess) => { + if (commonUtils.isNotEmptyObject(sModelsType.includes('quotation/') ? itemProcess.sProcessParam : sModelsType.includes('manufacture/') ? itemProcess.sWorkOrderParam : itemProcess.sProcessParam)) { + itemProcess.sProcessParamStr = ''; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(itemProcess[`sParam${i.toString()}`])) { + itemProcess.sProcessParamStr += `${itemProcess[`sParam${i.toString()}`]}:${itemProcess[`sParamValue${i.toString()}`]},`; + } + } + if (itemProcess.sProcessParamStr === '') { + itemProcess.sProcessParamStr = '工艺参数'; + } + } + }); + addStateProcess.processData = this.sortData(addStateControl.controlData, addStateProcess.processData); + } + } + if (commonUtils.isNotEmptyObject(colorConfig)) { + this.props.handleGetDataSet({ + name: 'color', configData: colorConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + if (commonUtils.isNotEmptyObject(packConfig)) { + this.props.handleGetDataSet({ + name: 'pack', configData: packConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + this.props.onSaveState({ + pageLoading: false, ...addStateControl, ...addStateProcess, ...treeState, treeSelectedKeys: controlSelectedRowKeys, + }); + }; + /* 获取单张表数据 */ + handleGetOneMemoData = (memoName, memoConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + if (commonUtils.isNotEmptyObject(sId)) { /* 解决detail数据没有问题 */ + this.props.handleGetDataSet({ + name: memoName, configData: memoConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + /** 获取部件树 */ + handleGetControlTreeData= (controlDataOld, isWait, sSlaveId) => { + /* 生成部件树结构 */ + let treeData = []; + const expandedKeys = []; + let { treeSelectedKeys } = this.props; + let controlData = []; + if (commonUtils.isNotEmptyObject(sSlaveId)) { + controlData = controlDataOld.filter(item => item.sSlaveId === sSlaveId); + } else { + controlData = controlDataOld; + } + if (commonUtils.isNotEmptyArr(controlData)) { + const rootData = commonUtils.isNotEmptyArr(controlData) ? controlData.filter(item => commonUtils.isEmpty(item.sControlParentId)) : []; /* 找到所有一级树结构 */ + rootData.forEach((item) => { + const treeDataRow = {}; + const { sId, sPartsName } = item; + treeDataRow.key = sId; + treeDataRow.showName = sPartsName; + treeDataRow.sAllId = item.sAllId; + const children = this.handleGetControlTreeChildData(sId, controlData); + let sChildren = '1'; /* 树形结构最后一个节点设置为1 */ + if (commonUtils.isNotEmptyArr(children)) { + sChildren = '0'; /* 树形结构其他节点设置为0 */ + } + treeDataRow.sChildren = sChildren; + /* 添加sChildren,sAllId 值 */ + const iIndex = controlData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + // controlData[iIndex].sAllId = sAllId; + controlData[iIndex].sChildren = sChildren; + } + treeDataRow.children = commonUtils.isNotEmptyArr(children) ? children : []; + treeData.push(treeDataRow); + }); + if (commonUtils.isEmptyArr(treeSelectedKeys)) { + expandedKeys.push(treeData[treeData.length - 1].key); + } + } else { + treeSelectedKeys = []; + treeData = []; + } + if (isWait) { + return { treeData }; + } else { + this.props.onSaveState({ + treeData, + // expandedKeys, + }); + } + }; + + /** 获取子节点数据 */ + handleGetControlTreeChildData= (sParentId, controlData) => { + if (commonUtils.isNotEmptyObject(sParentId) && commonUtils.isNotEmptyArr(controlData)) { + const childTree = commonUtils.isNotEmptyArr(controlData) ? controlData.filter(item => item.sControlParentId === sParentId) : []; + const children = []; + if (commonUtils.isNotEmptyArr(childTree)) { + childTree.forEach((child) => { + const { sId, sPartsName } = child; + const treeDataRow = {}; + treeDataRow.key = sId; + treeDataRow.showName = sPartsName; + treeDataRow.parentKey = sParentId; + treeDataRow.sAllId = child.sAllId; + const data = this.handleGetControlTreeChildData(sId, controlData); + let sChildren = '1'; /* 最后一个节点设置为1 */ + if (commonUtils.isNotEmptyArr(data)) { + sChildren = '0'; + } + treeDataRow.sChildren = sChildren; + /* 添加sChildren,sAllId 值 */ + const iIndex = controlData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + // controlData[iIndex].sAllId = sAllId; + controlData[iIndex].sChildren = sChildren; + } + treeDataRow.children = commonUtils.isNotEmptyArr(data) ? data : []; + children.push(treeDataRow); + }); + } + return children; + } + }; + + /** 根据key查找树节点并改变属性 */ + handleSearchNodes= (key, data, showNameNew) => { + if (commonUtils.isNotEmptyObject(showNameNew)) { + data.forEach((item) => { + if (item.key === key) { + item.showName = showNameNew; + } else if (commonUtils.isNotEmptyArr(item.children)) { + this.handleSearchNodes(key, item.children, showNameNew); + } + }); + } + }; + + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, app, token, + } = this.props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + 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 = commonFunc.getDefaultData(masterConfig); + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + let slaveData = []; + const controlData = []; + const materialsData = []; + const processData = []; + const orderDetailData = []; + const dailyData = []; + const packData = []; + const colorData = []; + // const slaveTotal = []; + // const tableDataTotal = {}; + 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) }; + if (commonBusiness.getGeyPayDate(masterData) !== undefined) { + masterData.tGetPayDate = commonBusiness.getGeyPayDate(masterData); + } + let sWareHouseNameDropDown; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (iIndex > -1 && commonUtils.isEmptyObject(masterData.sWareHouseId)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + let dataUrl; + let condition; + if (models === 'Product') { + dataUrl = `${commonConfig.server_host}eleProductStock/getProductWareHouse?sModelsId=${sModelsId}`; + condition = { sProductId: copyTo.slaveData[0].sProductId }; + } else { + dataUrl = `${commonConfig.server_host}eleMaterialsStock/getMaterialsWareHouse?sModelsId=${sModelsId}`; + condition = { sMaterialsId: copyTo.slaveData[0].sMaterialsId, sMaterialsStyle: copyTo.slaveData[0].sMaterialsStyle }; + } + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const sWareHouseId = dataReturn.dataset.rows.length > 0 ? dataReturn.dataset.rows[0].sWareHouseId : ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iIndex]); + sWareHouseNameDropDown = sqlDropDownData.dropDownData; + if (commonUtils.isNotEmptyArr(sWareHouseNameDropDown) && !sModelsType.includes('materialsStock/productionmaterialsadjust')) { + const { sAssignField } = masterConfig.gdsconfigformslave[iIndex]; + const iWareHouseNameIndex = sWareHouseNameDropDown.findIndex(item => item.sId === sWareHouseId); + if (iWareHouseNameIndex > -1) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(sAssignField, sWareHouseNameDropDown[iWareHouseNameIndex]) }; + } + } + } + } + + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + if (slaveAssignField !== '') { + let iCount = 0; + let flagCopyTo = false; + if (commonUtils.isEmptyArr(copyTo.controlData)) { + flagCopyTo = true; + } + 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) }; // 取赋值字段 + if ((!commonUtils.isEmpty(slaveRow.dProductQty) && slaveRow.dProductQty !== slaveRow.dSrcQty) || + (!commonUtils.isEmpty(slaveRow.dAuxiliaryQty) && slaveRow.dAuxiliaryQty !== slaveRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, slaveRow); + } + if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) { + slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) }; + } + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + slaveRow.sWareHouseId = masterData.sWareHouseId; + slaveRow.sWareHouseNo = masterData.sWareHouseNo; + slaveRow.sWareHouseName = masterData.sWareHouseName; + slaveRow.sLocationId = masterData.sLocationId; + slaveRow.sLocationNo = masterData.sLocationNo; + slaveRow.sLocationName = masterData.sLocationName; + slaveRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + slaveRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + slaveRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + slaveRow.sOriginalId = slaveItem.sSlaveId;/* 翻单前的sId */ + /* 若复制到没有序号,则序号从1自增 */ + if (commonUtils.isEmptyNumber(slaveRow.iOrder)) { + iCount += 1; + slaveRow.iOrder = iCount; + } + if (sModelsType === 'purchase/purchaseInstore') { + const iIndex = app.systemData.findIndex(item => item.sName === 'CbxMaterialsDefine'); + if (iIndex > -1) { + const sCbxMaterialsDefine = app.systemData[iIndex].sValue; + if (sCbxMaterialsDefine === 'datenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDD'); + } else if (sCbxMaterialsDefine === 'datetimenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm'); + } else if (sCbxMaterialsDefine === 'yearnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYY'); + } else if (sCbxMaterialsDefine === 'yearmonthnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMM'); + } else if (sCbxMaterialsDefine === 'worknum') { + slaveRow.sDefineNo = slaveRow.sWorkOrderNo; + } else if (sCbxMaterialsDefine === 'manuualno') { + slaveRow.sDefineNo = slaveRow.sManualNo; + } else if (sCbxMaterialsDefine === 'createnownum') { /* 批号根据生产日期+当前日期 */ + slaveRow.sDefineNo = moment(slaveRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm'); + } + } + } else if (sModelsType === 'productStock/productInStore' || sModelsType === 'outside/outsideinstoreAll') { /* 成品入库、整单发外入库 */ + const iIndex = app.systemData.findIndex(item => item.sName === 'CbxProductDefine'); + if (iIndex > -1) { + const sCbxProductDefine = app.systemData[iIndex].sValue; + if (sCbxProductDefine === 'datenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDD'); + } else if (sCbxProductDefine === 'datetimenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm'); + } else if (sCbxProductDefine === 'yearnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYY'); + } else if (sCbxProductDefine === 'yearmonthnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMM'); + } else if (sCbxProductDefine === 'worknum') { + slaveRow.sDefineNo = slaveRow.sWorkOrderNo; + } else if (sCbxProductDefine === 'manuualno') { + slaveRow.sDefineNo = slaveRow.sManualNo; + } else if (sCbxProductDefine === 'worktimenum') { /* 批号根据工单号码+日期时间批号 */ + slaveRow.sDefineNo = slaveRow.sWorkOrderNo + moment(new Date()).format('YYYYMMDDHH'); + } else if (sCbxProductDefine === 'yearToDate') { /* 2259 批号根据工单制单日期年月日,年取两位 */ + slaveRow.sDefineNo = moment(copyTo.masterData.tCreateDate || new Date()).format('YYMMDD'); + } + } + } else if (sModelsType === 'sales/salesCheck') { + slaveRow.dSrcNoCheckMoney = slaveRow.dProductForeignMoney; + } else if (sModelsType === 'purchase/purchasecheck') { + slaveRow.dSrcNoCheckMoney = slaveRow.dMaterialsMoney; + } else if (sModelsType === 'purchase/purchaseOrder') { // bug 2171 修正 吕杰 2021-03-26 + const dProcurementCycle = commonUtils.isNull(slaveRow.dProcurementCycle, 0); + const tCreateDate = masterData && commonUtils.isNotEmptyObject(masterData.tCreateDate) ? masterData.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + slaveRow.tDeliverDate = tDeliverDate; + slaveRow.dProcurementCycle = dProcurementCycle; + } + slaveData.push(slaveRow); + + if (sModelsType.includes('sales/salesOrder') && flagCopyTo && commonUtils.isNotEmptyArr(copyTo.slaveData)) { + const { token } = this.props; + const sSlaveId = commonUtils.isNotEmptyStr(slaveItem.sSlaveId) ? slaveItem.sSlaveId : slaveItem.sId; + const sParentId = commonUtils.isNotEmptyStr(slaveItem.sParentId) ? slaveItem.sParentId : slaveItem.sId; + let condition = {}; + if (sModelsType === 'sales/salesOrderPack') { + condition = { sParentId }; + } else { + condition = { sSlaveId }; + } + /* 通用报价单:101251240115016244276286330 */ + const dataUrl = slaveItem.sFormId === '19211681019715780306452560' || slaveItem.sFormId === '101251240115016076506222050' + || slaveItem.sFormId === '101251240115016036175782700' || slaveItem.sFormId === '101251240115016002356125200' || slaveItem.sFormId === '101251240115016244276286330' ? + `${commonConfig.server_host}salesorder/getQuotationPartsInfo?sModelsId=${sModelsId}` : + `${commonConfig.server_host}salesorder/getPartsInfo?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + slaveItem.sId = sSlaveId; + copyTo.controlData = returnData.controlData; + copyTo.materialsData = returnData.materialsData; + copyTo.processData = returnData.processData; + copyTo.packData = returnData.packData; + copyTo.colorData = returnData.colorData; + } else { + this.props.getServiceError(dataReturn); + } + } + + const copyToControlConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.control`.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + if (controlAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.controlData)) { + const treeCopyNodes = new Map(); + let controlFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + controlFilterData = copyTo.controlData; + } else { + controlFilterData = copyTo.controlData.filter(controlItem => controlItem.sSlaveId === slaveItem.sId); + } + await controlFilterData.forEach(async (controlItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.control = controlItem; + let controlRow = commonFunc.getDefaultData(config.controlConfig, newCopyTo); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(controlRow.dProductQty) && controlRow.dProductQty !== controlRow.dSrcQty) || + (!commonUtils.isEmpty(controlRow.dAuxiliaryQty) && controlRow.dAuxiliaryQty !== controlRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, controlRow); + } + controlRow.handleType = 'add'; + controlRow.sId = commonUtils.createSid(); + controlRow.sOriginalId = controlItem.sId; /* 复制前的部件表sId */ + controlRow.sParentId = masterData.sId; + controlRow.sSlaveId = slaveRow.sId; + if (sModelsType === 'sales/salesOrderPack') { + /* 如果有树形结构 则sAllId,sControlParentId赋值 */ + const sAllOldId = controlItem.sAllId; + let arr = []; + if (commonUtils.isNotEmptyObject(sAllOldId)) { + arr = sAllOldId.split(','); + } + const newId = controlRow.sId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + controlRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + controlRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + controlRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(controlItem.sId, sNewParentAllId); + } + controlData.push(controlRow); + + const copyToMaterialsConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.materials`.toLowerCase()); + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + if (materialsAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.materialsData)) { + let materialsFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + materialsFilterData = copyTo.materialsData.filter(materialsItem => materialsItem.sControlId === controlItem.sId); + } else { + materialsFilterData = copyTo.materialsData.filter(materialsItem => materialsItem.sSlaveId === slaveItem.sId && materialsItem.sControlId === controlItem.sId); + } + await materialsFilterData.forEach(async (materialsItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(materialsRow.dProductQty) && materialsRow.dProductQty !== materialsRow.dSrcQty) || + (!commonUtils.isEmpty(materialsRow.dAuxiliaryQty) && materialsRow.dAuxiliaryQty !== materialsRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, materialsRow); + } + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sParentId = masterData.sId; + materialsRow.sControlId = controlRow.sId; + materialsRow.sPartsName = controlRow.sPartsName; + materialsRow.sSlaveId = slaveRow.sId; + // 材料对应工序的ID要变化 + if (commonUtils.isNotEmptyArr(copyTo.processData)) { + const iProcessIndex = processData.findIndex(item => item.sControlId === controlRow.sId && item.sSrcProcessTbId === materialsItem.sProcessTbId); + if (iProcessIndex > -1) { + materialsRow.sProcessTbId = processData[iProcessIndex].sId; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + materialsRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + materialsRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + materialsData.push(materialsRow); + }); + } + } + const copyToProcessConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.process`.toLowerCase()); + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + if (processAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.processData)) { + let processFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + processFilterData = copyTo.processData.filter(processItem => processItem.sControlId === controlItem.sId); + } else { + processFilterData = copyTo.processData.filter(processItem => processItem.sSlaveId === slaveItem.sId && processItem.sControlId === controlItem.sId); + } + processFilterData.forEach((processItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(processRow.dProductQty) && processRow.dProductQty !== processRow.dSrcQty) || + (!commonUtils.isEmpty(processRow.dAuxiliaryQty) && processRow.dAuxiliaryQty !== processRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'process'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, processRow); + } + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processRow.sSlaveId = slaveRow.sId; + processData.push(processRow); + }); + } + } + /* 合版表复制到 */ + if (sModelsType === 'sales/salesOrderPack') { + const copyToPackConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.pack`.toLowerCase()); + const packAssignField = commonUtils.isNotEmptyArr(copyToPackConfig) ? copyToPackConfig[0].sAssignField : ''; + if (commonUtils.isNotEmptyObject(packAssignField)) { + /* 复制到时增加合版表 */ + if (commonUtils.isNotEmptyArr(copyTo.packData)) { + await copyTo.packData.filter(item => item.sSlaveId === slaveItem.sId && item.sControlId === controlItem.sId).forEach(async (packItem) => { + newCopyTo.pack = packItem; + let packRow = commonFunc.getDefaultData(config.packConfig, newCopyTo); // 取默认值 + packRow = { ...packRow, ...commonFunc.getAssignFieldValue(packAssignField, packItem, newCopyTo) }; // 取赋值字段 + /* sSlaveId赋值 */ + const packRowAdd = this.handlePackDataAdd(slaveRow, 0, controlRow.sId); + packRow = { ...packRow, ...packRowAdd }; + + /* 将控制表中的合版备注sId为新的sId */ + let JsonData = []; + const jsonStr = controlRow.sCombinedMemo; + if (commonUtils.isNotEmptyObject(jsonStr) && commonUtils.isJSON(jsonStr)) { + JsonData = JSON.parse(jsonStr); + if (commonUtils.isNotEmptyArr(JsonData)) { + let sCombinedMemoNew = ''; + JsonData.forEach((item, index) => { + if (item.sId === packItem.sId) { + JsonData[index].sId = packRow.sId; + } + }); + sCombinedMemoNew = JSON.stringify(JsonData); + controlRow.sCombinedMemo = sCombinedMemoNew; + const icontrolIndex = controlData.findIndex(item => item.sId === controlRow.sId); + if (icontrolIndex) { + controlData[icontrolIndex] = { ...controlData[icontrolIndex], sCombinedMemo: sCombinedMemoNew }; + } + } + } + + packData.push(packRow); + }); + } + } + } + }); + } + + const copyToMaterialsConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.materials`.toLowerCase()); + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + if (materialsAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.materialsData)) { + let materialsFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + materialsFilterData = copyTo.materialsData.filter(item => item.sType === '2'); + } else { + materialsFilterData = copyTo.materialsData.filter(item => item.sSlaveId === slaveItem.sId && item.sType === '2'); + } + await materialsFilterData.forEach(async (materialsItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.materials = materialsItem; + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(materialsRow.dProductQty) && materialsRow.dProductQty !== materialsRow.dSrcQty) || + (!commonUtils.isEmpty(materialsRow.dAuxiliaryQty) && materialsRow.dAuxiliaryQty !== materialsRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, materialsRow); + } + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sParentId = masterData.sId; + materialsRow.sSlaveId = slaveRow.sId; + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + materialsRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + materialsRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + materialsData.push(materialsRow); + }); + } + } + const copyToProcessConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.process`.toLowerCase()); + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + if (processAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.processData)) { + let processFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + processFilterData = copyTo.processData.filter(item => item.sType === '3'); + } else { + processFilterData = copyTo.processData.filter(item => item.sSlaveId === slaveItem.sId && item.sType === '3'); + } + processFilterData.forEach((processItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.process = processItem; + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(processRow.dProductQty) && processRow.dProductQty !== processRow.dSrcQty) || + (!commonUtils.isEmpty(processRow.dAuxiliaryQty) && processRow.dAuxiliaryQty !== processRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'process'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, processRow); + } + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sParentId = masterData.sId; + processRow.sSlaveId = slaveRow.sId; + /* 通用报价单的合版部件名称换成新生成的控制表sId */ + if (commonUtils.isNotEmptyObject(processRow.sCombinePartsName)) { + /* 新的sCombinePartsName赋值 */ + let sCombinePartsNameStr = ''; /* 新生成合版部件名称 */ + const sCombinePartsNameOldArr = processRow.sCombinePartsName.split(','); + if (commonUtils.isNotEmptyArr(sCombinePartsNameOldArr)) { + const controlFilterData = controlData.filter(item => sCombinePartsNameOldArr.includes(item.sOriginalId)); + if (commonUtils.isNotEmptyArr(controlFilterData)) { + controlFilterData.forEach((item) => { + sCombinePartsNameStr += `${item.sId},`; + }); + } + sCombinePartsNameStr = commonUtils.isNotEmptyObject(sCombinePartsNameStr) ? sCombinePartsNameStr.substr(0, sCombinePartsNameStr.length - 1) : ''; + processRow.sCombinePartsName = sCombinePartsNameStr; + } + } + processData.push(processRow); + }); + } + } + /* 颜色表 */ + const copyToColorConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.param`.toLowerCase()); + const colorAssignField = commonUtils.isNotEmptyArr(copyToColorConfig) ? copyToColorConfig[0].sAssignField : ''; + if (colorAssignField !== '') { + if (commonUtils.isNotEmptyArr(copyTo.colorData)) { + if (commonUtils.isNotEmptyObject(config.colorConfig)) { + copyTo.colorData.forEach((colorItem) => { + newCopyTo.color = colorItem; + let colorRow = commonFunc.getDefaultData(config.colorConfig, newCopyTo); // 取默认值 + colorRow = { ...colorRow, ...commonFunc.getAssignFieldValue(colorAssignField, colorItem, newCopyTo) }; // 取赋值字段 + colorRow.handleType = 'add'; + colorRow.sId = commonUtils.createSid(); + colorRow.sParentId = masterData.sId; + colorData.push(colorRow); + }); + } + } + } + } + } + } + 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'); + 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) }; // 取赋值字段 + } + slaveData.push(tableDataRow); + }); + } + } + } + if (sModelsType === 'purchase/purchaseOrder' && !commonUtils.isEmpty(copyTo) && commonUtils.isNotEmptyArr(copyTo.copyOtherData)) { + const copyToDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.detail`.toLowerCase()); + const detailAssignField = commonUtils.isNotEmptyArr(copyToDetailConfig) ? copyToDetailConfig[0].sAssignField : ''; + if (detailAssignField !== '') { + const copyDetail = copyTo.copyOtherData.filter(item => item.name === 'detail')[0]; + const detail = copyDetail.data; + detail.forEach((detailItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.detail = detailItem; + let tempDetail = commonFunc.getDefaultData(config.orderDetailConfig, newCopyTo); // 取默认值 + tempDetail = { ...tempDetail, ...commonFunc.getAssignFieldValue(detailAssignField, detailItem, newCopyTo) }; // 取赋值字段 + const iIndex = slaveData.findIndex(slaveItem => slaveItem.sMaterialsId + slaveItem.sMaterialsStyle === detailItem.sMaterialsGS); + if (iIndex !== -1) { + slaveData[iIndex].sWorkOrderNo = commonUtils.isEmptyObject(slaveData[iIndex].sWorkOrderNo) ? detailItem.sWorkOrderNo : `${slaveData[iIndex].sWorkOrderNo},${detailItem.sWorkOrderNo}`; + } + tempDetail.handleType = 'add'; + tempDetail.sId = commonUtils.createSid(); + tempDetail.sParentId = masterData.sId; + orderDetailData.push(tempDetail); + }); + } + } + /* 剔除订单到收款单,费用分摊单据新增空行 */ + if (slaveData.length === 0 && commonUtils.isNotEmptyObject(configNew.slaveConfig) && this.props.sModelsType !== 'cashier/receipt' && this.props.sModelsType !== 'cashier/payment' && this.props.sModelsType !== 'cost/cosexpenseshare' + && sModelsType !== 'sales/salesInvoice' && sModelsType !== 'purchase/purchaseInvoice' && sModelsType !== 'purchase/outsideInvoice') { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + const 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 = 1; + slaveData.push(tableDataRowAdd); + } + if (sModelsType === 'sales/salesSgoods') { /* 送货单中如果只有一个仓库,默认带这个仓库 */ + // const sWareHouseNameDropDown = commonUtils.getStoreDropDownData(sModelsId, 'master', 'sWareHouseName'); + let sWareHouseNameDropDown; + const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (masterIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex]); + sWareHouseNameDropDown = sqlDropDownData.dropDownData; + } + if (commonUtils.isNotEmptyArr(sWareHouseNameDropDown) && sWareHouseNameDropDown.length === 1) { + const addStata = {}; + addStata.sWareHouseId = sWareHouseNameDropDown[0].sId; + addStata.sWareHouseNo = sWareHouseNameDropDown[0].sNo; + addStata.sWareHouseName = sWareHouseNameDropDown[0].sName; + addStata.sLocationId = sWareHouseNameDropDown[0].sLocationId; + addStata.sLocationNo = sWareHouseNameDropDown[0].sLocationNo; + addStata.sLocationName = sWareHouseNameDropDown[0].sLocationName; + addStata.sWareHouseLocationId = sWareHouseNameDropDown[0].sWareHouseLocationId; + addStata.sWareHouseLocationNo = sWareHouseNameDropDown[0].sWareHouseLocationNo; + addStata.sWareHouseLocationName = sWareHouseNameDropDown[0].sWareHouseLocationName; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (iIndex > -1) { + masterData = { ...masterData, ...addStata }; /* 主表赋默认仓库 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 从表赋默认仓库 */ + slaveData.forEach((item, index) => { + slaveData[index] = { ...item, ...addStata }; + }); + } + } + } + } + const treeState = this.handleGetControlTreeData(controlData, true); /* 加载树形结构数据 */ + const state = { + masterData, + slaveData, + slaveTotal: [], + slaveSelectedRowKeys: [], + checkData: [], + checkSelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + controlData, + materialsData, + processData, + dailyData, + packData, + colorData, + orderDetailData, + ...treeState, + processSelectedRowKeys: [], + controlSelectedRowKeys: [], + materialsSelectedRowKeys: [], + calculated: false, + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + /** 点击修改按钮操作 */ + handleEdit = async () => { + const { + masterConfig, slaveConfig, checkConfig, currentId, app, masterData, dispatch, billnosetting, + } = this.props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + // 判断是否全局都有配置 + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + let sValue = 0; + if (iIndex > -1) { + sValue = systemData[iIndex].sValue; // 全局配置的值; 1为开启:所有人都可以编辑,0是关闭; + } + const bModify = billnosetting.bModify; /* 勾选了可修改及代表普通用户非制单人可以修改单据 */ + if (!+sValue && !bModify && sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoUpdateByNoMakePerson')); + this.props.onSaveState({ + loading: false, + }); + 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; + } + const reset = (ws, config1) => { + clearTimeout(config1.timerServer); + clearTimeout(config1.serverTimer); + start(ws, config1); + }; + const start = (ws, config1) => { + config1.timerServer = setTimeout(() => { + const message = { sendFrom: this.props.app.userinfo.sId, connectTest: 'test' }; // param 存放其它参数 keyName 需要放入Redis的数据key,keyValue 需要放入Redis的数据key 的值 + ws.send(JSON.stringify(message)); + }, config1.timeoutServer); + }; + setTimeout(() => { + this.props.app.webSocket.onmessage = async (msg) => { + reset(this.props.app.webSocket, commonConfig); + 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 (rtmsg.action === 'update') { + await this.handleGetData(masterConfig, slaveConfig, checkConfig, 'update'); + this.props.onSaveState({ enabled: true, calculated: false, 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); + }; + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { masterData, gdsformconst } = this.props; + if (!commonUtils.isEmpty(masterData)) { + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + message.warning(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName); + return ''; + } + /** 数据审核 */ + await this.dataAudit(flag); + } else { + this.props.onSaveState({ + loading: false, + }); + } + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + message.destroy(); + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, checkConfig, token, sModelsType, controlConfig, materialsConfig, processConfig, colorConfig, packConfig, slaveData, orderDetailConfig, 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 : '', + }, + }; + let clearFlag = false; + if (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder')) { + if (commonUtils.isNotEmptyArr(slaveData)) { + for (const item of slaveData) { + if (commonUtils.isNotEmptyStr(item.sProductInfo)) { + clearFlag = true; + break; + } + } + } else { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + /* 数据审核 */ + const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (isWait) { + return returnData; + } else { + /* 接收返回值 */ + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + if (clearFlag && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder'))) { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } + let outData; + if (commonUtils.isNotEmptyObject(returnData.dataset)) { + outData = returnData.dataset.rows[0].dataSet.outData; + } + 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(); + // } + message.error(check + outData[0].sReturn); + return; + } + const checkConditions = []; + let checkPersonData = {}; + sReturnArray.forEach((item) => { + const checkCondition = item.split('-')[2]; + const iIndex = checkConditions.findIndex(itemCondition => itemCondition.condition === checkCondition); + if (iIndex <= -1) { + 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, + }); + return true; + } else { /* 失败 */ + this.props.getServiceError({ msg: check + dataReturn }); + } + } + } else { + message.success(check + returnData.msg); + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + message.error(outData[0].sReturn); + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + message.success(BtnCancelExamine + returnData.msg); + } + } + await this.handleGetData(masterConfig, slaveConfig, checkConfig); + if ((sModelsType.includes('sales/salesOrder') || sModelsType === 'manufacture/workOrder3') && !commonUtils.isEmpty(controlConfig)) { + await this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } else if (sModelsType === 'sales/salesSgoods' && !commonUtils.isEmpty(slaveChildConfig)) { + await this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + } + return true; + } + }; + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, sModelsId, currentId, masterData, masterConfig, slaveConfig, checkConfig, billnosetting, app, sModelsType, controlConfig, materialsConfig, processConfig, colorConfig, packConfig, orderDetailConfig, dispatch, slaveChildConfig, + } = this.props; + const { userinfo } = app; + const { copyTo } = app.currentPane; + 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, + }); + // 保存后更新panes,currentPane的checkedId,防止浏览器刷新时重新又变成新增。 + const iPaneIndex = app.panes.findIndex(item => item.key === app.currentPane.key); + app.panes[iPaneIndex].checkedId = masterData.sId; + app.currentPane.checkedId = masterData.sId; + dispatch({ type: 'app/savePanesAndCurrentPane', payload: { panes: app.panes, currentPane: app.currentPane } }); + + if (billnosetting.bAutoCheck) { + await this.handleAudit(1); + } else { + await this.handleGetData(masterConfig, slaveConfig, checkConfig); + if ((sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder')) && !commonUtils.isEmpty(controlConfig)) { + await this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } else if (sModelsType === 'sales/salesSgoods' && !commonUtils.isEmpty(slaveChildConfig)) { + await this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } + this.props.onSaveState({ + loading: false, + }); + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + /** toolbar校验保存 */ + handleValidateSave = () => { + this.form.validateFields(async (err) => { + /* 验证通过与不通过走不同的流程 */ + if (err) { /* 验证失败 */ + /* 直接渲染显示错误提示 */ + for (const key of Object.keys(err)) { + message.error(err[key].errors[0].message); + } + this.props.onSaveState({ + loading: false, + }); + } else { /* 验证成功 */ + const { + masterConfig, slaveConfig, slaveData, slaveDelData, app, sModelsType, controlConfig, controlData, controlDelData, materialsConfig, materialsData, materialsDelData, processConfig, processData, processDelData, colorConfig, colorData, colorDelData, packConfig, packData, packDelData, orderDetailConfig, orderDetailData, orderDetailDelData, + slaveChildConfig, slaveChildData, slaveChildDelData, + } = this.props; + let { masterData } = this.props; + if (sModelsType !== 'commonBill/onlyMaster' && commonUtils.isEmptyArr(slaveData) && !sModelsType.includes('sales/salesInvoice') && !sModelsType.includes('purchase/purchaseInvoice') && !sModelsType.includes('purchase/outsideInvoice') && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' + && !sModelsType.includes('cashier/receipt') && !sModelsType.includes('cashier/payment') && !sModelsType.includes('purchase/purchaseEnquiry')) { + message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + // && sModelsType === 'materialsStock/productionmaterialsadjust' + if (commonUtils.isNotEmptyArr(slaveData)) { + let flag = true; + for (const item of slaveData) { + if (sModelsType === 'materialsStock/productionmaterialsadjust') { + if (commonUtils.isNotEmptyStr(item.sWareHouseId)) { + if (masterData.sWareHouseId === item.sWareHouseId && masterData.sWarehouseLocationId === item.sWarehouseLocationId && masterData.sLocationId === item.sLocationId) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameMateMaterialWarehouse'));/* 材料调拨原仓库与调入仓库不能一致 */ + flag = false; + break; + } + } + } + // {"paper":"纸张","finished":"成品","half_finished":"半成品","accessories":"辅料","corrugated":"瓦楞"} + if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + if (sModelsType.includes('sales/')) { + message.error(item.sProductName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sProductName}"的规格 */ + } else { + message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sMaterialsName}"的规格 */ + } + flag = false; + break; + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if (commonUtils.isNotEmptyArr(slaveData) && sModelsType === 'materialsStock/productionmaterials') { + let flag = true; + const iIndex = app.systemData.findIndex(item => item.sName === 'CkxMaterialsStockLimit'); + if (iIndex > -1) { + const bCkxMaterialsStockLimit = app.systemData[iIndex].sValue; + if (bCkxMaterialsStockLimit === '1') { + flag = await this.handleEleMaterialsStoreCurrQty(slaveData); + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'purchase/purchaseEnquiry') { + delete masterData.maxBillNo; + } + if (sModelsType === 'sales/salesSgoods' && !commonUtils.isEmpty(slaveChildConfig)) { /* 送货单千彩 若子表没填 则不能保存! */ + if (commonUtils.isEmptyArr(slaveChildData)) { + message.error('未选择出库产品 不能保存!'); + this.props.onSaveState({ + loading: false, + }); + return; + } else if (!commonBusiness.validateTable(slaveChildConfig, slaveChildData, this.props, '2')) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'cashier/receipt' || sModelsType === 'cashier/payment') { + let flag = true; + if (masterData.sSettlementId === 'bank') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sBankAccount)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsBankAccount'));/* 收/付款条件为银行时,银行、银行账号为必填项 */ + flag = false; + } + } + if (masterData.sSettlementId === 'bill') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sInvoiceNo)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsInvoiceNo'));/* 收/付款条件为票据时,银行、票据号码为必填项 */ + flag = false; + } + } + let dslaveTotalMoney = 0; + let flagCheckSave = true; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + for (const item of slaveData) { + if (item.handleType !== 'del') { + if (commonUtils.isNotEmptyNumber(item.dTotalMoney)) { + dslaveTotalMoney += item.dTotalMoney; + } + const dBalanceMoney = commonUtils.isNull(item.dBalanceMoney, 0); + const dTotalMoney = commonUtils.isNull(item.dTotalMoney, 0); + const dRoundingMoney = commonUtils.isNull(item.dRoundingMoney, 0); + const dCount = dRoundingMoney + dTotalMoney; + let bWarning = false; + if (dBalanceMoney > 0 || dBalanceMoney === 0) { + if (dCount > dBalanceMoney) { + bWarning = true; + } + } else if (dCount < dBalanceMoney) { + bWarning = true; + } + if (bWarning) { + if (sModelsType.includes('cashier/receipt')) { + message.error(commonFunc.showMessage(app.commonConst, 'NoOverBalanceMoneyReceipt'));/* 总金额不能超过未收/付款宽金额 */ + } else if (sModelsType.includes('cashier/payment')) { + message.error(commonFunc.showMessage(app.commonConst, 'NoOverBalanceMoneyPay'));/* 总金额不能超过未收/付款宽金额 */ + } + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const flatDel = commonUtils.isNull(item.dTotalMoney, 0) !== 0 || commonUtils.isNull(item.dRoundingMoney, 0) !== 0; + if (!flatDel) { + item.handleType = undefined; /* 付款单和收款单,去掉收款和付款金额为0的记录 */ + } else { + flagCheckSave = false; + } + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0 && flagCheckSave) { + message.warning('表格内容不能为空![dTotalMoney或dRoundingMoney必须大于0]'); + this.props.onSaveState({ + loading: false, + }); + return; + } + const dPmoney = this.props.getFloatNum('dProductMoney'); + dslaveTotalMoney = commonUtils.convertFixNum(dslaveTotalMoney, dPmoney);/* 取系统设定小数位 */ + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyNumber(masterData.dTotalMoney) && commonUtils.isNotEmptyNumber(masterData.dAdvanceMoney) && commonUtils.convertFixNum(masterData.dTotalMoney - masterData.dAdvanceMoney, dPmoney) !== dslaveTotalMoney) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameTotalMoney'));/* 主从表总金额不一致 */ + flag = false; + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + /* 销售发票、采购发票、发外发票 ,去掉总金额+舍入为0的数据 */ + if (sModelsType === 'sales/salesInvoice' || sModelsType === 'purchase/purchaseInvoice' || sModelsType === 'purchase/outsideInvoice') { + let flagCheckSave = true; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + for (const item of slaveData) { + const flatDel = commonUtils.isNull(item.dTotalMoney, 0) !== 0 || commonUtils.isNull(item.dRoundingMoney, 0) !== 0; + if (!flatDel) { + item.handleType = undefined; /* 付款单和收款单,去掉收款和付款金额为0的记录 */ + } else { + flagCheckSave = false; + } + } + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0 && flagCheckSave) { + message.warning('表格内容不能为空![dTotalMoney或dRoundingMoney必须大于0]'); + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + if (sModelsType !== 'commonBill/onlyMaster' && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' && !sModelsType.includes('purchase/purchaseEnquiry')) { + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + } + if (sModelsType.includes('sales/salesOrder') && !commonUtils.isEmpty(controlConfig)) { + if (commonUtils.isNotEmptyArr(materialsData)) { + const flag = true; + // for (const item of materialsData) { /* 销售订单中的物料规格不是必填项,只有工单里才要判断必填 */ + // if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + // message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写规格 */ + // flag = false; + // break; + // } + // } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + data.push(commonBusiness.mergeData('control', controlConfig.sTbName, controlData, controlDelData)); + data.push(commonBusiness.mergeData('materials', materialsConfig.sTbName, materialsData, materialsDelData)); + data.push(commonBusiness.mergeData('process', processConfig.sTbName, processData, processDelData)); + if (commonUtils.isNotEmptyObject(colorConfig)) { + data.push(commonBusiness.mergeData('color', colorConfig.sTbName, colorData, colorDelData)); + } + if (commonUtils.isNotEmptyObject(packConfig)) { + data.push(commonBusiness.mergeData('pack', packConfig.sTbName, packData, packDelData)); + } + } + if (sModelsType === 'purchase/purchaseOrder' && !commonUtils.isEmpty(orderDetailConfig)) { + data.push(commonBusiness.mergeData('detail', orderDetailConfig.sTbName, orderDetailData, orderDetailDelData)); + } else if (sModelsType === 'sales/salesSgoods' && !commonUtils.isEmpty(slaveChildConfig)) { + data.push(commonBusiness.mergeData('slaveChild', slaveChildConfig.sTbName, slaveChildData, slaveChildDelData)); + } + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }); + } + }); + }; + + /* 切换作废状态 */ + handleOkChangeInvaild = async (props) => { + const { + sModelsId, masterData, masterConfig, handleType, + } = props; + const value = { + sClientType: '1', + sId: [masterData.sId], + sTableName: masterConfig.sTbName, + handleType, + }; + const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; + const { data } = await commonServices.postValueService(props.app.token, value, url); + if (data.code === 1) { + message.success(data.msg); + masterData.bInvalid = handleType === 'toVoid'; /* 作废状态 */ + props.onSaveState({ masterData }); + /* 审核(消审)后刷新跳转路由数据(commonList)的数据 */ + if (props.app.currentPane.refresh !== undefined) { + props.app.currentPane.refresh(); + } + } else { + props.getServiceError(data); + } + }; + + /* 作废、取消作废的公用函数 */ + handleInvalid = (obj) => { + const props = { ...this.props, ...this.state, ...obj }; + const onOkInvaild = this.handleOkChangeInvaild; + confirm({ + title: obj.title, + onOk() { + onOkInvaild(props); + }, + onCancel() { + }, + }); + }; + + /* 单据页上查下查跳转页面 */ + handleSearchUpDown = async (sId, sActiveId) => { + /* 待用数据声明 */ + const { dispatch, sTabId } = this.props; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + sParentId: sTabId, /* 父页面编号 */ + checkedId: sId, + }, + }); + }; + + /* 上查下查三级菜单 在上一条下一条时必须清除searchUpDownData */ + handleSearchUpDownThird = async (upDownKey) => { + /* 待用数据声明 */ + const { masterConfig, searchUpDownData: searchUpDownDataOld } = this.props; + /** 获取sqlCondition参数:{sSqlCondition,sId} */ + const searchUpDownData = commonUtils.isEmptyObject(searchUpDownDataOld) ? {} : { ...searchUpDownDataOld }; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const searchUpDownConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(`${upDownKey}`)); + for (const item of searchUpDownConfig) { + if (commonUtils.isEmptyArr(searchUpDownData[item.sControlName])) { + searchUpDownData[item.sControlName] = await this.getSearchUpDownData(item); + } + } + this.props.onSaveState({ searchUpDownData }); + } + }; + + /* 单据页复制到 */ + handleCopyTo = async (name, sActiveId) => { + /* 待用数据声明 */ + const { + masterConfig, + masterData, + slaveData, + controlData, + materialsData, + processData, + packData, + app, + token, + sModelsId, + formRoute, + } = this.props; + + // 从表有sCopyToCondition则不能复制,并提示 + if (commonUtils.isNotEmptyArr(slaveData) && name.includes('.')) { + const sCopyToConditionIndex = slaveData.findIndex(item => item.sCopyToCondition); + if (sCopyToConditionIndex !== -1) { + message.warning(slaveData[sCopyToConditionIndex].sCopyToCondition); + return; + } + } + + const copyTo = {}; + const copyToConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(name)); + copyTo.name = name; + copyTo.config = copyToConfig; + copyTo.masterData = masterData; + copyTo.slaveData = slaveData; + copyTo.controlData = controlData; + copyTo.materialsData = materialsData; + copyTo.processData = processData; + copyTo.packData = packData; + const tbSuffix = ''; + let sId = ''; + if (!commonUtils.isEmpty(slaveData)) { + sId = slaveData[0].sId; + } + + const dataUrl = `${commonConfig.server_host}bill/billCopyToCheck/?sModelsId=${sModelsId}&sActiveId=${sActiveId}&tbSuffix=${tbSuffix}&sName=${formRoute}`; + const values = { sSlaveId: sId }; + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + if (dataReturn.code === 1) { + // eslint-disable-next-line no-underscore-dangle + const _this = this; // 解决confirm中this指向问题; + if (dataReturn.dataset.rows.length > 0) { + confirm({ + title: commonFunc.showMessage(app.commonConst, 'beUsedToNew'), /* 单据已存在,是否填写新单据 */ + onOk() { + _this.handleDispatch(copyTo, sActiveId); + }, + onCancel() { + }, + }); + } else { + this.handleDispatch(copyTo, sActiveId); + } + } + }; + handleDispatch = (copyTo, sActiveId) => { + const { dispatch } = this.props; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + copyTo, + }, + }); + } + + /* 复制从产品工艺卡列表 */ + handleCopyFrom = async (obj) => { + /* 待用数据声明 */ + const { + slaveData, + } = this.props; + if (commonUtils.isEmptyStr(slaveData[0].sCustomerId)) { + message.error(commonFunc.showMessage(this.props.app.commonConst, 'pleaseInputCustomer'));/* 请填写客户 */ + return; + } + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${obj.copyFromSActiveId}?sModelsId=${obj.copyFromSActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + this.props.onSaveState({ productProcessInfoChooseVisible: true, productProcessInfoChooseData: returnData, productProcessInfoCopyFromKey: obj.copyFromKey }); + } else { + this.props.getServiceError(dataReturn); + } + }; + + /* 上一条、下一条、首条、末条 */ + handleSearchData = async (handleType) => { + const { + sModelsId, app, currentIndexFlag, currentPageNo, + } = this.props; + const { currentPane, token } = app; + const { + pages, sFilterOrderBy, bFilter, sListFormmasterId, currentIndex, + } = currentPane; + let currentPosition = currentIndexFlag ? currentPageNo : commonUtils.isEmptyObject(pages) ? 1 : (((pages.current - 1) * commonConfig.pageSize) + Number.parseInt(currentIndex, 10)) + 1; + if (currentIndex === undefined) { + currentPosition = 1; + } + if (handleType === 'first') { + currentPosition = 1; + } else if (handleType === 'end') { + currentPosition = pages.total; + } + if (!commonUtils.isNum(currentPosition)) { // 如果是列表直接点增加,就跳到第一条去 + currentPosition = 1; + } + + const value = { + sClientType: '1', sFilterOrderBy, bFilter, sListFormmasterId, currentPosition, handleType, iCountSum: pages.total, + }; + const url = `${commonConfig.server_host}business/getBusinessDataByIndex?sModelsId=${sModelsId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + /* 接收返回值 */ + /* 成功的话刷新页面(同步主表和从表数据),不成功就弹出错误提示 */ + if (data.code === 1) { + /* 数据查询成功 */ + const returnData = data.dataset.rows[0]; + const { masterConfig, slaveConfig, checkConfig } = this.props; + this.props.onSaveState({ + currentIndexFlag: true, + currentPageNo: returnData.currentPosition, + currentId: returnData.sId, + searchUpDownData: {}, + slaveSelectedRowKeys: [], + }); + this.handleGetData(masterConfig, slaveConfig, checkConfig); + return true; + } else { /* 失败 */ + this.props.getServiceError(data); + return false; + } + }; + + /* 取消操作 */ + handleCancel = (obj) => { + /* 待用数据声明 */ + const that = this; + const { + currentId, masterConfig, slaveConfig, checkConfig, app, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const onGetDataOk = this.handleGetData; + const onSaveStateOk = this.props.onSaveState; + const { copyTo } = app.currentPane; + confirm({ + title: obj.title, + onOk() { + // 解决新建页签sid为空的bug + if (!currentId) { + const { panes, currentPane } = that.props.app; + const currentPaneIndex = panes.findIndex(item => item.key === currentPane.key); + const newPanes = []; + if (currentPaneIndex > 0) { + panes.forEach((item, index) => { + if (index !== currentPaneIndex) { + newPanes.push(item); + } + }); + that.props.dispatch({ type: 'app/removePane', payload: { changePanes: newPanes, currentPane: panes[currentPaneIndex - 1] } });/* 关闭当前页签 */ + } + /* 复制到新增页签取消时 关闭页签 并清除操作记录 */ + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData, srcFormRoute, copyOtherData } = copyTo; + if (commonUtils.isNotEmptyObject(srcFormRoute) && srcFormRoute.includes('materialRequirementsPlanning')) { /* 物料需求计划用sWorkOrderMaterialId作为唯一键 */ + const sIdArray = []; + if (commonUtils.isNotEmptyArr(copyOtherData) && copyOtherData[0].name === 'detail' && commonUtils.isNotEmptyArr(copyOtherData[0].data)) { + const slaveDetailData = copyOtherData[0].data; + slaveDetailData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } else { /* 变更单、采购申请单 */ + slaveData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } + + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } else if (commonUtils.isNotEmptyArr(slaveData)) { + const sIdArray = []; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + } + + return; + } + // + onGetDataOk(masterConfig, slaveConfig, checkConfig); + onSaveStateOk({ enabled: false }); + 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); + }, + onCancel() { + }, + }); + }; + + /* 删除 */ + handleDel = (obj) => { + const props = { ...this.props, ...this.state }; + const onOkDel = this.handleOkDel; + confirm({ + title: obj.title, + onOk() { + onOkDel(props); + }, + onCancel() { + }, + }); + }; + + /* 确定要删除 */ + handleOkDel = async (props) => { + /* 数据参数 */ + const { + token, sModelsId, sModelsType, masterConfig, masterData, slaveConfig, checkConfig, orderDetailConfig, slaveChildConfig, app, + } = props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoDelByNoMakePerson')); + return; + } + } + } + const value = { + sClientType: '1', + data: { + sMasterTable: masterConfig.sTbName, + sId: [masterData.sId], + }, + }; + const sSlaveTable = []; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + sSlaveTable.push({ + tableName: slaveConfig.sTbName, + relationName: 'sParentId', + }); + } + if (commonUtils.isNotEmptyObject(checkConfig)) { + sSlaveTable.push({ + tableName: checkConfig.sTbName, + relationName: 'sParentId', + }); + } + if (sModelsType === 'purchase/purchaseOrder') { + sSlaveTable.push({ + tableName: orderDetailConfig.sTbName, + relationName: 'sParentId', + }); + } + if (sModelsType === 'sales/salesSgoods' && !commonUtils.isEmpty(slaveChildConfig)) { + sSlaveTable.push({ + tableName: slaveChildConfig.sTbName, + relationName: 'sParentId', + }); + } + value.sSlaveTable = sSlaveTable; + const { sBillNo, sId } = masterData || {}; + const url = `${commonConfig.server_host}business/delMasSlaBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + /* 数据删除成功 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleDelDataSuccess(props); + } else { /* 失败 */ + this.props.getServiceError(data); + } + }; + + /* 数据删除成功跳转到新路由即pane */ + handleDelDataSuccess = (props) => { + const { app } = props; + let { panes, currentPane } = app; + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ + panes = panes.filter(pane => pane.key !== currentPane.key); + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ + currentPane = panes[panes.length - 1]; + this.props.onRemovePane(panes, currentPane); + }; + + /** 添加表格空行 */ + handleTableAdd = (name, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + masterData, masterConfig, sModelsType, app, [`${name}Pagination`]: tablePagination, + } = this.props; + let { [`${name}Data`]: tableData } = this.props; + tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; + const tableDataRow = this.props.onDataRowAdd(name, true); + /* 添加行的业务处理拿出去 */ + if (sModelsType.includes('sales/')) { + if (commonUtils.isEmptyStr(masterData.sCustomerId)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => ((item.sName === 'sCustomerId' || item.sName === 'sCustomerNo' || item.sName === 'sCustomerName') && item.bVisible)); + if (iIndex > -1) { + const { showName } = masterConfig.gdsconfigformslave[iIndex]; + message.warn(showName + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空 + return; + } + } + } + tableDataRow.sWareHouseId = masterData.sWareHouseId; + tableDataRow.sWareHouseNo = masterData.sWareHouseNo; + tableDataRow.sWareHouseName = masterData.sWareHouseName; + tableDataRow.sLocationId = masterData.sLocationId; + tableDataRow.sLocationNo = masterData.sLocationNo; + tableDataRow.sLocationName = masterData.sLocationName; + tableDataRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } + }; + + /** 复制 */ + handleTableCopy = (name, isWait, isTree) => { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, [`${name}Pagination`]: tablePagination, sModelsType, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + const controlChildData = tableData.filter(item => item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(tableData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + const treeCopyNodes = new Map(); + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSrcSlaveId = ''; + tableDataRow.sSrcId = ''; + tableDataRow.dSrcQty = null; + tableDataRow.rowTag = null; + tableDataRow.sOrderdetailUsed = ''; + tableDataRow.sProductionUsed = ''; + tableDataRow.sWorkOrderUsed = ''; + tableDataRow.dWorkOrderQty = 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); + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + + if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsMemo)) { + tableDataRow.sMaterialsMemo = ''; + } + if (commonUtils.isNotEmptyObject(tableDataRow.sProcessMemo)) { + tableDataRow.sProcessMemo = ''; + } + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const sAllOldId = tableData[tableDataIndex].sAllId; + const arr = sAllOldId.split(','); + const newId = commonUtils.createSid(); + tableDataRow.sId = newId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + tableDataRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + tableDataRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + tableDataRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(sId, sNewParentAllId); + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(tableData, true); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, ...treeState }); + } + } + } + } + }; + + + /** 复制全部 */ + handleTableCopyAll = (name, isWait, isTree) => { + const { + slaveData, controlData, slaveSelectedRowKeys, materialsData, [`${name}Pagination`]: tablePagination, sModelsType, + } = this.props; + let { processData } = this.props; + if (name === 'slave') { + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of slaveSelectedRowKeys) { + const slaveDataIndex = slaveData.findIndex(item => item.sId === sId); + if (slaveDataIndex > -1) { + const slaveDataRow = JSON.parse(JSON.stringify(slaveData[slaveDataIndex])); + slaveDataRow.sId = commonUtils.createSid(); + slaveDataRow.handleType = 'add'; + slaveDataRow.key = slaveDataRow.sId; + const iOrderArr = []; + slaveData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + slaveDataRow.iOrder = commonUtils.isNotEmptyArr(slaveData) ? iOrderMax + 1 : 0; + slaveData.push(slaveDataRow); + if (sModelsType !== 'sales/salesOrderPack') { + if (commonUtils.isNotEmptyArr(controlData)) { + controlData.filter(itemControl => itemControl.sSlaveId === sId).forEach((itemControl) => { + const tableDataRow = JSON.parse(JSON.stringify(itemControl)); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSlaveId = slaveDataRow.sId; + controlData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + materialsData.filter(item => item.sControlId === itemControl.sId && item.sType !== '2').forEach((item) => { + const materialsRow = JSON.parse(JSON.stringify(item)); + materialsRow.sId = commonUtils.createSid(); + materialsRow.handleType = 'add'; + materialsRow.sControlId = tableDataRow.sId; + materialsRow.sPartsName = tableDataRow.sPartsName; + materialsRow.sSlaveId = tableDataRow.sSlaveId; + materialsData.push(materialsRow); + }); + processData.filter(item => item.sControlId === itemControl.sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processRow.sSlaveId = tableDataRow.sSlaveId; + processData.push(processRow); + }); + processData = this.sortData(controlData, processData); + }); + } + if (commonUtils.isNotEmptyArr(materialsData)) { /* 订单从表复制全部 复制成品材料 */ + materialsData.filter(item => item.sSlaveId === sId && item.sType === '2').forEach((materialsItem) => { + const materialsRow = JSON.parse(JSON.stringify(materialsItem)); + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = slaveDataRow.sId; + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(processData)) { /* 订单从表复制全部 复制成品工序 */ + processData.filter(item => item.sSlaveId === sId && item.sType === '3').forEach((processItem) => { + const processRow = JSON.parse(JSON.stringify(processItem)); + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = slaveDataRow.sId; + processData.push(processRow); + }); + } + } + } + this.props.onSaveState({ + slaveData, + [`${name}Pagination`]: { ...tablePagination, total: slaveData.length, current: 9999 }, + controlData, + materialsData, + processData, + }); + } + } + } else if (name === 'control') { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + /* 获取复制节点下的所有子节点 */ + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + const controlChildData = tableData.filter(item => item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(tableData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + const treeCopyNodes = new Map(); + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + const iOrderArr = []; + tableData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const sAllOldId = tableData[tableDataIndex].sAllId; + const arr = sAllOldId.split(','); + const newId = commonUtils.createSid(); + tableDataRow.sId = newId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + tableDataRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + tableDataRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + tableDataRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(sId, sNewParentAllId); + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(tableData, true); + } + /* 部件表复制其材料表、工序表 */ + materialsData.filter(item => item.sControlId === sId && item.sType !== '2').forEach((item) => { + const materialsRow = JSON.parse(JSON.stringify(item)); + materialsRow.sId = commonUtils.createSid(); + materialsRow.handleType = 'add'; + materialsRow.sControlId = tableDataRow.sId; + materialsRow.sPartsName = tableDataRow.sPartsName; + materialsData.push(materialsRow); + }); + processData.filter(item => item.sControlId === sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processData.push(processRow); + }); + processData = this.sortData(tableData, processData); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, + materialsData, + processData, + ...treeState, + }); + } + } + } + } + } + }; + + singlePQtyChange = (tableDataRow) => { + const bZfZf = tableDataRow.iPrintMode === 2; // 正反版 + const bSample = tableDataRow.dSumPQty >= 4; // 样本 + tableDataRow.iPrintModePo = tableDataRow.iPrintMode <= 2 ? 2 : tableDataRow.iPrintMode === 3 ? 0 : -1; + + if (bSample) { + if (tableDataRow.dSinglePQty > 0) { + tableDataRow.dPlateQty = Math.ceil(tableDataRow.dSumPQty / tableDataRow.dSinglePQty); + } + + if (bZfZf && (tableDataRow.iPrintModePo === 2)) { // 双面样本,正反 + if (tableDataRow.dPlateQty < 2) { // 不管建议放正自翻版了,点方式什么是什么 + tableDataRow.dPlateQty = 2; + tableDataRow.iStick = Math.ceil(commonUtils.isNull(tableDataRow.dPlateQty, 0) / 2); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty / 2); + } + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + } + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + if (tableDataRow.iStick > 0 && tableDataRow.dSinglePQty > 0) { + tableDataRow.dMachineQty = commonUtils.convertFixNum((commonUtils.isNull(tableDataRow.dPartsQty, 0) * commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty / tableDataRow.iStick, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } else { + tableDataRow.iStick = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + if (bZfZf && tableDataRow.iPrintModePo === 2) { + tableDataRow.dPlateQty = 2; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + + if (tableDataRow.dSinglePQty > 0) { + if (tableDataRow.iPage > 1) { // 笔记本 用 非样本 来做, 倍率是每页都一样才可以用 原先 /2 是指页数, 现在直接按张数 + tableDataRow.dMachineQty = commonUtils.convertFixNum((tableDataRow.dPartsQty * tableDataRow.iPage) / tableDataRow.dSinglePQty, 0); + } else { + tableDataRow.dMachineQty = commonUtils.convertFixNum(commonUtils.isNull(tableDataRow.dPartsQty, 0) / tableDataRow.dSinglePQty, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } + } + return tableDataRow; + }; + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, slaveConfig, + } = this.props; + if (name === 'control' && sModelsType.includes('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); + if (sModelsType === 'sales/salesOrderPack') { + if (sFieldName === 'sPartsName') { /* 部件名称与子部件同步 */ + const { sPartsName } = tableDataRow; + const { treeSelectedKeys, treeData } = this.props; + if (commonUtils.isNotEmptyArr(treeSelectedKeys)) { + this.handleSearchNodes(treeSelectedKeys[0], treeData, sPartsName); + } + } else if (sFieldName === 'dMachineQty') { /* 上机数量改变时,子级部件数量同步改变 */ + const { dMachineQty } = tableDataRow; + /* 查找该节的所有子节点,将上机数量改为部件数量 */ + tableData.forEach((item, index) => { + if (commonUtils.isNotEmptyObject(item.sAllId) && item.sAllId.indexOf(tableDataRow.sId) > -1 && item.sId !== tableDataRow.sId) { + const addstate = {}; + addstate.dPartsQty = dMachineQty; + tableData[index] = { ...tableData[index], ...addstate }; + } + }); + } + } + 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 === 'dProductQty' || sFieldName === 'dGiveQty') && name === 'slave' && (sModelsType.includes('sales/salesOrderPack') || sModelsType.includes('sales/salesOrder'))) { + if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) { + const dProductQty = commonUtils.isEmptyNumber(tableDataRow.dProductQty) ? 0 : tableDataRow.dProductQty; + const dGiveQty = commonUtils.isEmptyNumber(tableDataRow.dGiveQty) ? 0 : tableDataRow.dGiveQty; + const dStockupRate = commonUtils.isEmptyNumber(masterData.dStockupRate) ? 0 : masterData.dStockupRate; + if (dStockupRate !== 0) { /* 备货率不为0时,按照备货率计算,否则按照手填的算 */ + tableDataRow.dStockupQty = Math.round((dProductQty + dGiveQty) * dStockupRate); + } + } + } + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo' + || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) { + let productIdDropDown = []; + if (sFieldName === 'sProductStyle') { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + if (this.inputSearch) { + clearTimeout(this.inputSearch); + } + this.inputSearch = setTimeout(async () => { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], tableDataRow, tableDataRow.sProductName, 1); + productIdDropDown = sqlDropDownData.dropDownData; + }, 500); + } + } else { + productIdDropDown = dropDownData; + } + const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && !(commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/materials'))) { + 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 = ''; + } + tableDataRow.sMaterialsStyle = tableDataRow.sProductStyle; + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId) && tableDataRow.sProductId !== tableDataRow.sProductName) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const { sCustomerId } = masterData; /* 增加客户id参数 */ + const value = { + sProName: 'Sp_Cashier_GetProductPrice', + paramsMap: { + sProductGuid: changeValue.sProductId, + sCustomerId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dNProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; /* 产品单价 */ + const dProofingMoney = commonUtils.convertToNum(tableDataRow.dProofingMoney); /* 打样金额 */ + const dPlateMoney = commonUtils.convertToNum(tableDataRow.dPlateMoney); /* 制版金额 */ + const dKnifeMouldMoney = commonUtils.convertToNum(tableDataRow.dKnifeMouldMoney); /* 刀模金额 */ + const dProductQty = commonUtils.convertToNum(tableDataRow.dProductQty); /* 数量 */ + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetPrice } = app.decimals; + if (dProductQty === 0 || (dProofingMoney === 0 && dPlateMoney === 0 && dKnifeMouldMoney === 0)) { + const dProductForeignPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + tableDataRow.dProductForeignPrice = dProductForeignPrice; + tableDataRow.dProductPrice = commonUtils.convertFixNum(dProductForeignPrice * dCurrencyRate, dNetPrice); + } + } + + 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.includes('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/') || sModelsType.includes('sales/salesInvoice') || sModelsType.includes('purchase/purchaseInvoice') || sModelsType.includes('purchase/outsideInvoice')) && (sFieldName === 'dTotalMoney' || sFieldName === 'dRoundingMoney')) { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */ + const addStata = {}; + let { handleType } = masterData; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + addStata.handleType = handleType; + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetMoney } = app.decimals; + if (sFieldName === 'dTotalMoney') { + 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); + tableDataRow.dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dMoney / dCurrencyRate : 0, dNetMoney); + } + // if (commonUtils.isNotEmptyNumber(tableDataRow.dBalanceMoney) && (tableDataRow.dTotalMoney > tableDataRow.dBalanceMoney)) { // 发外发票,采购发票,销售发票 付款单、收款单总金额不能大于余额 + // const dTotalMoneyName = slaveConfig.gdsconfigformslave.filter(item => item.sName === sFieldName)[0].showName; + // const dBalanceMoneyName = slaveConfig.gdsconfigformslave.filter(item => item.sName === 'dBalanceMoney')[0].showName; + // message.error(`${dTotalMoneyName}不能大于${dBalanceMoneyName}!`); + // tableDataRow = { ...tableDataRow, dTotalMoney: tableDataRow.dBalanceMoney }; + // // tableDataRow.dTotalMoney = commonUtils.convertStrToNumber(masterData.dTotalMoney); + // addStata.dTotalMoney = commonUtils.convertStrToNumber(masterData.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); + } + }); + /* 计算外币金额 */ + if (commonUtils.isNotEmptyNumber(addStata.dTotalMoney)) { + addStata.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? addStata.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + } else if (sFieldName === 'dRoundingMoney') { + addStata.dRoundingMoney = 0; + if (iIndex > -1) { /* 选中行 */ + let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dRoundingMoney) ? tableDataRow.dRoundingMoney : 0; + dMoney = commonUtils.convertStrToNumber(dMoney); + addStata.dRoundingMoney = dMoney + commonUtils.convertStrToNumber(addStata.dRoundingMoney); + } + tableData.forEach((item, index) => { /* 非选中行 */ + if (index !== iIndex) { + const dMoney = commonUtils.isNotEmptyNumber(item.dRoundingMoney) ? item.dRoundingMoney : 0; + addStata.dRoundingMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dRoundingMoney, 6); + } + }); + } + masterData = { ...masterData, ...addStata }; + this.props.onSaveState({ masterData }); + } else if (sModelsType === 'purchase/purchaseOrder' && sFieldName === 'dProcurementCycle') { + /* 交货周期改变时,交货时间等于制单时间 +交货周期 */ + const dProcurementCycle = commonUtils.isNull(tableDataRow.dProcurementCycle, 0); + const tCreateDate = commonUtils.isNotEmptyObject(tableDataRow.tCreateDate) ? tableDataRow.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + tableDataRow.tDeliverDate = tDeliverDate; + } + // 取工艺卡数据 + if (sModelsType.includes('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 controlSelectedRowKeys = []; + controlSelectedData.forEach((item) => { + controlSelectedRowKeys.push(item.sId); + }); + const materialsReturnData = this.otherTableDel('materials', controlSelectedRowKeys); + const processReturnData = this.otherTableDel('process', controlSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedRowKeys); + 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)) { + const treeCopyNodes = new Map(); + // 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; + if (sModelsType === 'sales/salesOrderPack') { /* 树形 */ + /* CopyTo时sAllId,sControlParentId 设置 */ + const sAllOldId = controlItem.sAllId; + let arr = []; + if (commonUtils.isNotEmptyObject(sAllOldId)) { + arr = sAllOldId.split(','); + } + const newId = controlRow.sId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + controlRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + controlRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + controlRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(controlItem.sId, sNewParentAllId); + } + 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); + }); + } + /* 包装订单 生成树形 */ + let treeState = {}; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(controlData, true); + } + this.props.onSaveState({ + controlData, materialsData, processData, ...treeState, + }); + } + } + } else if (sModelsType.includes('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) + commonUtils.isNull(tableDataRow.dStockupQty, 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; + } + } + /* 选择材料后 交货周期改变 则交货时间等于制单时间+交货周期 */ + const dProcurementCycle = commonUtils.isNull(tableDataRow.dProcurementCycle, 0); + const tCreateDate = commonUtils.isNotEmptyObject(tableDataRow.tCreateDate) ? tableDataRow.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + tableDataRow.tDeliverDate = tDeliverDate; + // else { + // this.props.getServiceError(returnData); + // } + } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') { + const dPmoney = this.props.getFloatNum('dProductMoney'); + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dProductForeignMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); + const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ + tableDataRow.dProductForeignMoney = dProductForeignMoney; + tableDataRow.dProductMoney = dProductMoney; + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + const dProductForeignMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); + const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ + tableDataRow.dProductForeignMoney = dProductForeignMoney; + tableDataRow.dProductMoney = dProductMoney; + tableDataRow.dLossMoney = 0; + } + } else if (sModelsType === 'purchase/purchasecheck' && sFieldName === 'dLossMoney' && name === 'slave') { + const dPmoney = this.props.getFloatNum('dProductMoney'); + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); + tableDataRow.dMaterialsMoney = dMoney; + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + tableDataRow.dMaterialsMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); + tableDataRow.dLossMoney = 0; + } + } else if (sModelsType === 'cost/cosexpenseshare') { /* 改变费用分摊单据从表成本中心金额,总金额随之改变 */ + if (sFieldName.indexOf('dCostCenter') > -1) { + const { slaveColumn, app } = this.props; + const { dNetMoney } = app.decimals; + let dAllMoney = 0; + slaveColumn.forEach((item) => { + const sName = item.dataIndex; + if (sName.indexOf('dCostCenter') > -1) { + dAllMoney += commonUtils.isNotEmptyNumber(tableDataRow[sName]) ? commonUtils.convertFixNum(tableDataRow[sName], dNetMoney) : 0; + } + }); + tableDataRow.dShareMoney = commonUtils.convertFixNum(dAllMoney, dNetMoney); + } + } else if (sModelsType === 'purchase/purchaseInstore' && name === 'slave') { /* 采购入库 材料批次=材料生产日期tSReserve1(此客户手输)+当前日期 */ + if (sFieldName === 'tProductionDate') { + tableDataRow.sDefineNo = moment(tableDataRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm'); + } + } + /* 各种金额,税额,价格计算 */ + let 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/') || sModelsType.includes('semigoodsStock/') || sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { + if (sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { + tableDataRow.dAuxiliaryQty = tableDataRow.dProductQty; + } + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); + + if (sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { /* 如果是材料销售模块/销售对账 如果是材料 则用换算数量*单价 算金额 */ + /* 材料逻辑计算 */ + if (commonUtils.isNotEmptyNumber('dMaterialsQty') && tableDataRow.dMaterialsQty !== 0 && commonUtils.isNotEmptyObject(tableDataRow.sMaterialsUnit)) { + let modelsNew = ''; + if (models === 'Product') { /* 计算前将Product替换为Materials */ + modelsNew = 'Materials'; + + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetPrice } = app.decimals; + const dForeignPrice = tableDataRow[`d${models}ForeignPrice`]; + if (commonUtils.isNotEmptyNumber(dForeignPrice)) { + /* 只有外币单价情況下 要算本位币单价 */ + const dProductPrice = commonUtils.convertFixNum(dForeignPrice * dCurrencyRate, dNetPrice); + tableDataRow[`d${models}Price`] = dProductPrice; + } + + tableDataRow[`dN${modelsNew}Price`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}ForeignPrice`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}Price`] = tableDataRow[`d${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}ForeignMoney`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}Money`] = tableDataRow[`d${models}Money`]; + tableDataRow.bSalesMaterials = true;/* 材料销售 销售对账 材料计算 */ + models = 'Materials'; + sFieldName = commonUtils.isNotEmptyObject(sFieldName) ? sFieldName.replace('Product', 'Materials') : sFieldName; + } + } + } + } + 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; + if (commonUtils.isNotEmptyObject(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 (name === 'slaveChild' || sFieldName === 'dProductQty') { + const { slaveSelectedRowKeys, slaveData } = this.props; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + const tableFilterData = tableData.filter(item => item.sDelivergooodSlaveId === slaveData[iIndex].sId); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + let dSlaveProductQty = tableDataRow.dProductQty; + tableFilterData.forEach((item) => { + if (item.sId !== tableDataRow.sId) { + dSlaveProductQty += commonUtils.isNull(item.dProductQty, 0); + } + }); + if (commonUtils.isNotEmptyNumber(dSlaveProductQty) && dSlaveProductQty !== 0) { + const addState = {}; + addState.dProductQty = dSlaveProductQty; + addState.handleType = commonUtils.isEmpty(slaveData[iIndex].handleType) ? 'update' : slaveData[iIndex].handleType; + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + this.props.onSaveState({ slaveData }); + } + } + } + } + } + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + if (name === 'report') { // 报表设计 + this.props.onSaveState({ reportPropsEnabled: true }); + } else { + this.props.onSaveState({ enabled: true }); + } + this.props.onSaveState({ [`${name}Data`]: tableData }); + } + } + }; + + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + + 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.isNotEmptyArr(tableDataRow.dAuxiliaryQty) && tableDataRow.dAuxiliaryQty !== 0) { + tableDataRow.dProductQty = tableDataRow.dAuxiliaryQty; + } + } + 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 = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty'); + } else { + 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; + } + /* 材料销售模块金额价格逻辑处理 */ + handleCalculateMaterialsProductMoney= (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + if (sFieldName === `d${models}Qty` || sFieldName === `d${models}Price` || sFieldName === `dN${models}Price` || sFieldName === `d${models}ForeignPrice` || sFieldName === `d${models}ForeignMoney` || sFieldName === `d${models}Money` || sFieldName === 'sTaxId' || sFieldName === 'sTaxName') { + const { dNetMoney } = app.decimals; /* 设定金额保留的小数位 */ + let modelsNew = models; + if (models === 'Product') { /* 计算前将Product替换为Materials */ + modelsNew = 'Materials'; + } + let sFiledNameNew = sFieldName; + if (sFieldName === 'dProductQty') { /* 材料销售中的订单数量 等同于 dAuxiliaryQty */ + sFiledNameNew = 'dAuxiliaryQty'; + } else if (sFieldName === `d${models}Price`) { + sFiledNameNew = `d${modelsNew}Price`; + } else if (sFieldName === `dN${models}Price`) { + sFiledNameNew = `dN${modelsNew}Price`; + } else if (sFieldName === `d${models}ForeignPrice`) { + sFiledNameNew = `d${modelsNew}ForeignPrice`; + } else if (sFieldName === `d${models}Money`) { + sFiledNameNew = `d${modelsNew}Money`; + } else if (sFieldName === `dN${models}Money`) { + sFiledNameNew = `dN${modelsNew}Money`; + } else if (sFieldName === `d${models}ForeignMoney`) { + sFiledNameNew = `d${modelsNew}ForeignMoney`; + } + tableDataRow[`dN${modelsNew}Price`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`d${modelsNew}ForeignPrice`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}Price`] = tableDataRow[`d${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`d${modelsNew}ForeignMoney`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}Money`] = tableDataRow[`d${models}Money`]; + tableDataRow = commonBusiness.getCalculateAllMoney(app, modelsNew, sFiledNameNew, masterData, tableDataRow); + + let dMoney = tableDataRow[`d${modelsNew}Money`]; /* 金额 */ + let dForeignMoney = tableDataRow[`d${modelsNew}ForeignMoney`]; /* 外币金额 */ + let dPrice = tableDataRow[`d${modelsNew}Price`]; /* 单价 */ + const dQty = tableDataRow[`d${modelsNew}Qty`]; /* 换算数量 */ + let dTaxMoney = tableDataRow[`d${modelsNew}TaxMoney`]; /* 税额 */ + let dTaxNoMoney = tableDataRow[`d${modelsNew}NoTaxMoney`]; /* 税额 */ + dMoney = commonUtils.isNotEmptyNumber(dMoney) ? dMoney : 0; + dForeignMoney = commonUtils.isNotEmptyNumber(dForeignMoney) ? dForeignMoney : 0; + dPrice = commonUtils.isNotEmptyNumber(dPrice) ? dPrice : 0; + dTaxMoney = commonUtils.isNotEmptyNumber(dTaxMoney) ? dTaxMoney : 0; + dTaxNoMoney = commonUtils.isNotEmptyNumber(dTaxNoMoney) ? dTaxNoMoney : 0; + + tableDataRow[`d${models}Money`] = dMoney; + tableDataRow[`d${models}ForeignMoney`] = dForeignMoney; + tableDataRow[`d${models}Price`] = dPrice; + tableDataRow[`d${models}TaxMoney`] = dTaxMoney; + tableDataRow[`d${models}NoTaxMoney`] = dTaxNoMoney; + /* 单价计算 */ + let dForeignPrice = tableDataRow[`d${models}Price`]; + if (sFieldName === `d${models}ForeignMoney` || sFieldName === `d${models}Money`) { + dForeignPrice = commonUtils.isNotEmptyNumber(dQty) && dQty !== 0 ? commonUtils.convertFixNum(dForeignMoney / dQty, dNetMoney) : dPrice; + } + tableDataRow[`d${models}ForeignPrice`] = dForeignPrice; + } + 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 }); + } + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + // this.handleCustomerChange(name, changeValue); + const { + sModelsId, sModelsType, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token, + } = this.props; + const addState = {}; + 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 { + message.warn(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', []); + } 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) { + message.error(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' || sFieldName === 'sGetPayName') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'tInvoiceDate') { + 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 = ''; + } + } + 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; + } + } + 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); + 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' || + sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate') { + const slaveDataNew = []; + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + 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; + 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: returnData.masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + } else { + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); /* 没有发外公式情况下 进行计算 */ + } + } + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', returnData.masterData, tableDataRow); + } + } else if (sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate') { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, `d${models}Money`, returnData.masterData, tableDataRow); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + 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.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'); + 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) }; // 取赋值字段 + } + slaveDataNew.push(tableDataRow); + }); + addState.slaveData = slaveDataNew; + } else { + this.props.getServiceError(dataReturn); + } + } else if (sFieldName === 'sPeriodID') { + const master = returnData.masterData; + let { handleType } = master; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (handleType === 'add') { /* 费用分摊单据新增时,选择不同月份,自动获取从表的数据 */ + const { sModelsId } = this.props; + let url = `${commonConfig.server_host}costCenter/getCostCenterData?sModelsId=${sModelsId}`; + const body = { + sPeriodId: changeValue.sPeriodID, + }; + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:以下 4 行 + * BUG:2168 + * 说明:凭证导入表下主表月份切换从后台获取数据 + * 原代码: + */ + if (sModelsType === 'cashier/voucher') { + url = `${commonConfig.server_host}costCenter/getCosvoucherImportData?sModelsId=${sModelsId}`; + body.sWeek = masterDataOld.sWeek; + } + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset; + const slaveDataNew = []; + rows.forEach((row) => { + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:以下 13 行 + * BUG:2168 + * 说明:凭证导入表下主表月份切换从后台获取数据 + * 原代码: + */ + let tableDataRowAdd = row; + if (sModelsType === 'cashier/voucher') { + // 当主表中配置了转换信息时,对数据字段进行转换 + const index = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'Btnimport'); + if (index > -1) { + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = row; + const config = masterConfig.gdsconfigformslave[index]; + const slaveAssignField = config.sAssignField || ''; + tableDataRowAdd = { ...row, ...commonFunc.getAssignFieldValue(slaveAssignField, row, newCopyTo) }; + } + } + tableDataRowAdd.handleType = handleType; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + slaveDataNew.push(tableDataRowAdd); + }); + addState.slaveData = slaveDataNew; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } else if (sFieldName === 'sWeek' && sModelsType === 'cashier/voucher') { + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:此if内 + * BUG:2168 + * 说明:凭证导入表下主表周期切换从后台获取数据 + * 原代码: + */ + const master = returnData.masterData; + let { handleType } = master; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (handleType === 'add') { /* 费用分摊单据新增时,选择不同月份,自动获取从表的数据 */ + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}costCenter/getCosvoucherImportData?sModelsId=${sModelsId}`; + const body = { + sWeek: changeValue.sWeek, + sPeriodId: masterDataOld.sPeriodId, + }; + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset; + const slaveDataNew = []; + rows.forEach((row) => { + let tableDataRowAdd = row; + // 当主表中配置了转换信息时,对数据字段进行转换 + const index = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'Btnimport'); + if (index > -1) { + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = row; + const config = masterConfig.gdsconfigformslave[index]; + const slaveAssignField = config.sAssignField || ''; + tableDataRowAdd = { ...row, ...commonFunc.getAssignFieldValue(slaveAssignField, row, newCopyTo) }; + } + tableDataRowAdd.handleType = handleType; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + slaveDataNew.push(tableDataRowAdd); + }); + addState.slaveData = slaveDataNew; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + 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; + } + } + handleBtnPrint = (sActiveId, checked, eKey) => { + const { + app, sModelsId, masterConfig, masterData, slaveConfig, sModelsType, reportData, menuChildData, formRoute, controlConfig, + } = this.props; + if (sModelsType.includes('manufacture/workOrder')) { + this.handleUpdateProduction(); + } + const { token } = app; + const queryFilter = {}; + queryFilter[masterConfig.sId] = { sId: masterData.sId }; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; + } + const queryFilterJson = JSON.stringify(queryFilter); + // const masterDataJson = JSON.stringify(masterData); + /* 拿到打印报表名称 */ + let printReportName = 'report'; + let printCustomerReportName = 'report'; + if (commonUtils.isNotEmptyArr(reportData)) { + const iIndex = reportData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printReportName = reportData[iIndex].sReportName; + } + } + if (commonUtils.isNotEmptyArr(menuChildData)) { + const iIndex = menuChildData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printCustomerReportName = menuChildData[iIndex].sReportName; + } + } + let urlPrint = ''; + if (formRoute === '/indexPage/printlabel') { + if (commonUtils.isNotEmptyObject(masterData) && masterData.dTrunkQty !== undefined && masterData.dFractionQty !== undefined && masterData.dPackQty !== undefined) { // masterData中必填的三个字段 + // const param = masterDataJson; + /* 把masterData放在数组中 */ + const ListData = []; + ListData.push(masterData); + const param = JSON.stringify(ListData); + if (eKey.indexOf('BtnPrint.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + this.handleOpenPost(urlPrint, param); + } else { + const dTrunkQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dTrunkQty'); + const dFractionQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dFractionQty'); + const dPackQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dPackQty'); + if (masterData.dTrunkQty === undefined && commonUtils.isNotEmptyObject(dTrunkQtyName)) { + message.error(`${dTrunkQtyName[0].showName} 必填项!`); + } else if (masterData.dFractionQty === undefined && commonUtils.isNotEmptyObject(dFractionQtyName)) { + message.error(`${dFractionQtyName[0].showName} 必填项!`); + } else if (masterData.dPackQty === undefined && commonUtils.isNotEmptyObject(dPackQtyName)) { + message.error(`${dPackQtyName[0].showName} 必填项!`); + } + return; + } + } else if (eKey.indexOf('BtnPrint.') > -1) { + let { controlSelectedRowKeys } = this.props; + /* 不出现选择框,则打印全部;出现选择框,则打印勾选的 */ + let bisMutiSelect = false; + if (commonUtils.isNotEmptyObject(controlConfig) && commonUtils.isNotEmptyArr(controlConfig.gdsconfigformslave)) { + const filterData = controlConfig.gdsconfigformslave.filter(item => item.sControlName === 'bisMutiSelect'); + if (commonUtils.isNotEmptyArr(filterData)) { + bisMutiSelect = filterData[0].bVisible; + } + } + if (bisMutiSelect === false || bisMutiSelect === undefined) { + controlSelectedRowKeys = []; + } + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}&sControlIds=${commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys : []}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; + } + if (formRoute !== '/indexPage/printlabel') { + window.open(`${encodeURI(`${urlPrint}&queryFilter=${queryFilterJson}`)}&token=${encodeURIComponent(token)}`); + } + }; + handleOpenPost= (url, params) => { + const newWin = window.open(); + let formStr = ''; + formStr = `
` + + `` + + ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + handleUpdateProduction = async () => { + const { sModelsId, masterData } = this.props; + const { sBillNo, sId } = masterData || {}; + const dataUrl = `${commonConfig.server_host}business/addUpdateDelBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + const value = { + data: [{ + sTable: 'mftworkordermaster', + column: [{ handleType: 'update', sId: masterData.sId, bProduction: 1 }], + }], + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, dataUrl)).data; + if (dataReturn.code === 1) { + message.success(dataReturn.msg); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleTitleChange = (slavePagination) => { + this.props.onSaveState({ slavePagination }); + }; + + /* 工单、工艺卡、报价单控制表回带图片地址 */ + handleFilfileManageOk= async (controlFilfileData, controlFilfileDelData, sSrcSlaveId) => { + const { + controlData: tableData, app, sModelsId, token, controlConfig, + } = this.props; + if (commonUtils.isNotEmptyObject(sSrcSlaveId)) { + if (commonUtils.isNotEmptyArr(controlFilfileDelData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureDelData = controlFilfileDelData.filter(item => item.sType === '3'); /* 开料 */ + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureDelData)) { + controlsMaterialsPictureDelData.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMaterialsPicturePath) { + addState.sMaterialsPicturePath = ''; + } + }); + } + const sMachinePictureDelPath = controlFilfileDelData.filter(item => item.sType === '4'); /* 联版 */ + if (commonUtils.isNotEmptyArr(sMachinePictureDelPath)) { + sMachinePictureDelPath.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMachinePicturePath) { + addState.sMachinePicturePath = ''; + } + }); + } + if (commonUtils.isNotEmptyObject(addState) && (addState.sMachinePicturePath === '' || addState.sMaterialsPicturePath === '')) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (addState.sMaterialsPicturePath === '') { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (addState.sMachinePicturePath === '') { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + if (commonUtils.isNotEmptyArr(controlFilfileData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureData = controlFilfileData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureData)) { + addState.sMaterialsPicturePath = commonUtils.isNotEmptyObject(controlsMaterialsPictureData[0].sPicturePath) ? controlsMaterialsPictureData[0].sPicturePath : ''; /* 上机默认取上传图片的第一条 */ + } + const controlsMachinePictureData = controlFilfileData.filter(item => item.sType === '4'); + if (commonUtils.isNotEmptyArr(controlsMachinePictureData)) { + addState.sMachinePicturePath = commonUtils.isNotEmptyObject(controlsMachinePictureData[0].sPicturePath) ? controlsMachinePictureData[0].sPicturePath : ''; + } + if (commonUtils.isNotEmptyObject(addState)) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (commonUtils.isNotEmptyObject(addState.sMaterialsPicturePath) && addState.sMaterialsPicturePath !== sMaterialsPicturePath) { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (commonUtils.isNotEmptyObject(addState.sMachinePicturePath) && addState.sMachinePicturePath !== sMachinePicturePath) { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ tableData }); + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + } else { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); + } + } + // 收付款分摊 + handleShare = () => { + /* 分摊 */ + const { + sModelsType, masterData: masterDataOld, slaveData: slaveDataOld, app, + } = this.props; + if ((sModelsType.includes('cashier/receipt') && masterDataOld.sBillType !== 'customer') || + (sModelsType.includes('cashier/payment') && masterDataOld.sBillType !== 'supply')) { + return masterDataOld; + } + const { dNetMoney } = app.decimals; + const masterData = { ...masterDataOld }; + const slaveData = []; + if (commonUtils.isNotEmptyArr(slaveDataOld) && slaveDataOld.length > 0) { + slaveDataOld.forEach((item) => { + slaveData.push({ ...item }); + }); + } + + const dTotalMoney = masterData.dTotalMoney !== undefined ? masterData.dTotalMoney : 0; + let minusSum = 0; /* 负数求和 */ + let minusRoundingSum = 0; /* 负数舍入求和 */ + const minusData = []; /* 负数集 */ + let positiveSum = 0; /* 正数求和 */ + let positiveRoundingSum = 0; /* 正数舍入求和 */ + const positiveData = []; /* 正数集 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((child) => { + child.dTotalMoney = 0; + child.dRoundingMoney = commonUtils.isNum(child.dRoundingMoney) ? child.dRoundingMoney : 0; + if (child.dBalanceMoney < 0) { + minusSum -= Math.abs(child.dBalanceMoney); + minusRoundingSum -= Math.abs(child.dRoundingMoney); + minusData.push(child); + } else { + const positiveSumTemp = commonUtils.convertFixNum(child.dBalanceMoney, dNetMoney) + commonUtils.convertFixNum(positiveSum, dNetMoney); + positiveSum = commonUtils.convertFixNum(positiveSumTemp, dNetMoney); + const positiveRoundingSumTemp = commonUtils.convertFixNum(child.dRoundingMoney, dNetMoney) + commonUtils.convertFixNum(positiveRoundingSum, dNetMoney); + positiveRoundingSum = commonUtils.convertFixNum(positiveRoundingSumTemp, dNetMoney); + positiveData.push(child); + } + }); + } + if (commonUtils.convertFixNum(((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney, dNetMoney) <= 0) { + /* 够扣 */ + positiveSum -= minusRoundingSum; + positiveSum -= positiveRoundingSum; + positiveSum -= dTotalMoney; /* 去除分摊金额 */ + if (positiveSum >= 0) { + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + if (positiveSum <= dBalanceMoney) { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(positiveSum) - (dRoundingMoney * 1), dNetMoney); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + break; + } else { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveSum -= dBalanceMoney - (dRoundingMoney * 1); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + } + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + if (positiveData[i].handleType === undefined) { + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + } else { + /* 有预收 */ + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + minusData[i].dRoundingMoney = 0; + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + masterData.dAdvanceMoney = commonUtils.convertFixNum(Math.abs(positiveSum), dNetMoney); + masterData.bAdvance = true; + } + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + /* 分摊算外币金额 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((item, index) => { + slaveData[index].dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? item.dTotalMoney / dCurrencyRate : 0, dNetMoney); + }); + } + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + if (commonUtils.isNotEmptyNumber(masterData.dTotalMoney)) { + masterData.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? masterData.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + this.props.onSaveState({ masterData, slaveData }); + } else if (((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney > 0) { + /* 不够扣情况 */ + minusSum -= minusRoundingSum; + minusSum -= positiveRoundingSum; + minusSum -= dTotalMoney; /* 去除分摊金额 */ + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + if (Math.abs(minusSum) <= dBalanceMoney) { + positiveData[i].dTotalMoney = commonUtils.convertFixNum(Math.abs(minusSum) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + break; + } else { + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusSum = -(Math.abs(minusSum) - (dBalanceMoney * 1)); // - (dRoundingMoney * 1) + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + /* 分摊算外币金额 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((item, index) => { + slaveData[index].dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? item.dTotalMoney / dCurrencyRate : 0, dNetMoney); + }); + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; /* 主表分摊算外币金额 */ + if (commonUtils.isNotEmptyNumber(masterData.dTotalMoney)) { + masterData.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? masterData.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + this.props.onSaveState({ masterData, slaveData }); + } + // let allTotalMoney = 0; + // let allRoundingMoney = 0; + // slaveData.forEach((child) => { + // if (child.dTotalMoney !== undefined) { + // allTotalMoney += child.dTotalMoney * 1; + // } + // if (child.dRoundingMoney !== undefined) { + // allRoundingMoney += child.dRoundingMoney * 1; + // } + // }); + // this.props.onSaveState({ allTotalMoney, allRoundingMoney }); + return masterData; + }; + + handleImport = async (num) => { + const { + sModelsId, sModelsType, masterConfig, masterData, slaveData, slaveDelData: slaveDelDataOld, app, + } = this.props; + if (commonUtils.isEmpty(masterData.sWareHouseId)) { + message.error(commonFunc.getConfigShowName(masterConfig, 'sWareHouseId') + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空! + return; + } + let url; + if (sModelsType.includes('productStock/')) { + url = `${commonConfig.server_host}eleProductStock/getEleProductStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}&num=${num}`; + } else { + url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}&num=${num}`; + } + + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push({ ...item }); + }); + returnData.forEach((item, index) => { + const tableDataRow = this.props.onDataRowAdd('slave', true); + item.handleType = 'add'; + item.sParentId = masterData.sId; + item.iOrder = index + 1; + returnData[index] = { ...tableDataRow, ...item }; + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { + this.props.getServiceError(dataReturn); + } + this.props.onSaveState({ isGetDataVisible: false }); + }; + + handleOutTemplate = async () => { + const { + token, formData, + } = this.props; + const slaveConfig = formData.filter(item => item.sGrd === 'importTemplate')[0]; + window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${slaveConfig.sId}&token=${token}`; + }; + + /* 导出模版数据 */ + handleOutTemplateData = async () => { + const { + slaveConfig, formRoute, masterData, sortedInfo, + } = this.props; + const sort = commonUtils.isNotEmptyObject(sortedInfo) ? sortedInfo.order === 'ascend' ? 'asc' : 'desc' : ''; + const slaveOrderBy = commonUtils.isNotEmptyObject(sortedInfo) && Object.keys(sortedInfo).length > 0 ? { [sortedInfo.columnKey]: sort } : ''; // + const sId = commonUtils.isNotEmptyObject(masterData) ? masterData.sId : ''; + if (commonUtils.isNotEmptyObject(sId)) { + const sSqlCondition = { sParentId: sId }; + let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}&sName=${formRoute}`; + if (commonUtils.isNotEmptyObject(sSqlCondition)) { + url = `${url}&sSqlCondition=${encodeURIComponent(JSON.stringify(sSqlCondition))}`; + } + if (slaveOrderBy !== undefined && slaveOrderBy !== '' && Object.keys(slaveOrderBy).length > 0) { + url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(slaveOrderBy))}`; + } + window.open(url); + } else { + message.warn('没有主表数据!'); + } + }; + + /* 导入未清数据 */ + handleImportFormData = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + let bFilterProValue = ''; + let bFilterProName = ''; + if (sModelsType === 'cashier/payment') { /* 付款单 */ + const { sSupplyName, sSupplyId } = masterData; + if (commonUtils.isEmptyObject(sSupplyName)) { + message.error('供应商名称不能为空!'); + return; + } else { + bFilterProName = 'sSupplyGuid_pro'; + bFilterProValue = sSupplyId; + } + } else if (sModelsType === 'cashier/receipt') { /* 收款单 */ + const { sCustomerName, sCustomerId } = masterData; + if (commonUtils.isEmptyObject(sCustomerName)) { + message.error('客户名称不能为空!'); + return; + } else { + bFilterProName = 'sCustomerGuid_pro'; + bFilterProValue = sCustomerId; + } + } + this.props.onSaveState({ importFormDataVisible: true, bFilterProName, bFilterProValue }); + } + } + handleDesignFunction = () => { + this.props.onSaveState({ visibleStatement: true }); + }; + handleBatchPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchPriceUpdateData, visibleBatchPriceUpdate: true }); + } + }; + /* 有外币时,配置BtnBatchNPriceUpdate, 会调用这个方法 */ + handleBatchNPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchNPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchNPriceUpdateData, visibleBatchNPriceUpdate: true }); + } + }; + + /** 按钮操作事件 */ + handleButtonClick = (name) => { + if (name === 'BtnDesignFunction') { + this.handleDesignFunction(); + } else if (name === 'BtnBatchPriceUpdate') { + this.handleBatchPriceUpdate(); + } else if (name === 'BtnBatchNPriceUpdate') { + this.handleBatchNPriceUpdate(); + } else if (name === 'BtnOutTemplate') { + this.handleOutTemplate(); + } else if (name === 'BtnOutTemplateData') { /* 导出模版数据 */ + this.handleOutTemplateData(); + } + const { sModelsType } = this.props; + // 收付款分摊 + if (sModelsType.includes('cashier/') || sModelsType.includes('sales/') || sModelsType.includes('purchase/')) { + if (name === 'BtnShare') { + this.handleShare(); + } + if (sModelsType.includes('cashier/') && name === 'BtnImportFormData') { /* 导入未清数据 */ + this.handleImportFormData(name); + } + } else if (sModelsType.includes('materialsStock/') || sModelsType.includes('productStock/')) { + if (name === 'BtnImport') { + this.props.onSaveState({ isGetDataVisible: true }); + } + } + }; + + handleBtnChoose = async (name, sControlName, chooseConfig, recordIndex, tableName) => { + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${chooseConfig.sActiveId}?sModelsId=${chooseConfig.sActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const [returnData] = dataReturn.dataset.rows; + this.props.onSaveState({ + [`${name}ChooseVisible`]: true, [`${name}ChooseData`]: returnData, slaveSelectedIndex: recordIndex, tableName, + }); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleSelect = (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, slaveSelectedIndex, + } = this.props; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + // newCopyTo.slave = item; + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (name === 'slave' && selectConfig.sControlName === 'BtnChooseMaterials' && index === 0 && (commonUtils.isEmpty(tableData[slaveSelectedIndex].sProductName) || tableData[slaveSelectedIndex].sProductName === '')) { + tableData[slaveSelectedIndex] = { ...tableData[slaveSelectedIndex], ...tableDataRow }; + } else { + tableData.push(tableDataRow); + } + }); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}ChooseVisible`]: false }); + }; + + handleSelectCancel = (name) => { + this.props.onSaveState({ [`${name}ChooseVisible`]: false }); + }; + /* 双击弹出Memo */ + // handleGetMemo = (name, sValue, sMemoFiled, sRecord) => { + // const { sCurrMemoProps } = this.props; + // let { [`${name}Data`]: tableData } = this.props; + // const addStata = { [`${sMemoFiled}`]: sValue }; + // if (name !== 'master') { + // const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); + // let handleType = tableData[iIndex].handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData[iIndex] = { ...tableData[iIndex], ...addStata }; + // } else { + // let handleType = tableData.handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData = { ...tableData, ...addStata }; + // } + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); + // }; + // handleGetMemoCancel = () => { + // const { sCurrMemoProps } = this.props; + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps }); + // }; + // async await + handleEleMaterialsStoreCurrQty = async (slaveData) => { + const { sModelsId, app } = this.props; + let flag = true; + const InsufficientInventory = commonFunc.showMessage(app.commonConst, 'InsufficientInventory');/* 库存不足,不能领料 */ + const MateriaTransferQuantityVerificationFailed = commonFunc.showMessage(app.commonConst, 'MateriaTransferQuantityVerificationFailed');/* 材料调拨数量校验失败,请稍后操作 */ + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; + for (const item of slaveData) { + const body = { + sMaterialsId: item.sMaterialsId, /* 查询条件 */ + sMaterialsStyle: item.sMaterialsStyle, + sWareHouseId: item.sWareHouseId, + }; + if (commonUtils.isNotEmptyStr(item.sLocationId)) { + body.sLocationId = item.sLocationId; + } + if (commonUtils.isNotEmptyStr(item.sWarehouseLocationId)) { + body.sWarehouseLocationId = item.sWarehouseLocationId; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo)) { + body.sDefineNo = item.sDefineNo; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo2)) { + body.sDefineNo2 = item.sDefineNo2; + } + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const materials = dataReturn.dataset.rows[0]; + if (materials.dAuxiliaryQty < item.dAuxiliaryQty) { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + message.error(MateriaTransferQuantityVerificationFailed); + flag = false; + break; + } + } + return flag; + } + handleTableSelectRowChange = async (name, selectedRowKeys, changeValue) => { + if (name === 'slave' || name === 'master') { + const { token, sModelsId, [`${name}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys)) { + let url = ''; + let sCustomerId = ''; + if (sModelsId === '192116810113315228246447250' || sModelsId === '101251240115015952245193980') { + if (name === 'master') { + sCustomerId = changeValue.sCustomerId; + } else if (name === 'slave') { + const sCustomerIdIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (sCustomerIdIndex > -1) { + sCustomerId = tableData[sCustomerIdIndex].sCustomerId; + } + } + if (commonUtils.isNotEmptyObject(sCustomerId)) { + url = `${commonConfig.file_host_ebc}printReport/getReportByCustomerId/${sCustomerId}?sModelsId=${sModelsId}`; + const values = {}; + const masterReturn = (await commonServices.postValueService(token, values, url)).data; + if (masterReturn.code === 1) { + const menuChildData = masterReturn.dataset.rows; + this.props.onSaveState({ menuChildData }); + } + } + } else { + let sProcessId = ''; + if (name === 'master') { + sProcessId = changeValue.sProcessClassifyId; + } else if (name === 'slave') { + const sProcessIdIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (sProcessIdIndex > -1) { + sProcessId = tableData[sProcessIdIndex].sProcessClassifyId; + } + } + if (commonUtils.isNotEmptyObject(sProcessId)) { + url = `${commonConfig.file_host_ebc}printReport/getReportByProcessId/${sProcessId}?sModelsId=${sModelsId}`; + const values = {}; + const masterReturn = (await commonServices.postValueService(token, values, url)).data; + if (masterReturn.code === 1) { + const menuChildData = masterReturn.dataset.rows; + this.props.onSaveState({ menuChildData }); + } + } + } + } + } else if (name === 'control') { + const { treeData, sModelsType } = this.props; /* 赋值给树组件节点 */ + if (sModelsType === 'sales/salesOrderPack') { + let { treeSelectedKeys } = this.props; /* 赋值给树组件节点 */ + if (treeData !== undefined) { + treeSelectedKeys = selectedRowKeys; /* 把树形选中节点赋值给表格部件选中节点 */ + this.props.onSaveState({ treeSelectedKeys }); + } + } + } + /* 点按钮删除时,会触发行点击事件 导致selectedRowKeys为删除行的sId */ + const { [`${name}Data`]: tableData } = this.props; + if (Array.isArray(tableData) && tableData.length > 0 && selectedRowKeys.length) { + const iIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (iIndex === -1) { + if (commonUtils.isNotEmptyArr(tableData) && tableData.length > 0) { + selectedRowKeys = commonUtils.isNotEmptyArr(tableData) ? [tableData[0].sId] : []; + } + } + } + this.props.onTableSelectRowChange(name, selectedRowKeys); + } + // 获取重量 + handleGetWeight = async () => { + const { masterConfig, app } = this.props; + const url = app.rxtx.sUrl; + const returnData = (await commonServices.getService(app.token, url)).data; + if (returnData.code === 1) { + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnGetWeight'); + const sAssignField = masterConfig.gdsconfigformslave[iConfigIndex].sAssignField; + const sAssignFieldStr = sAssignField.split(':')[0]; + const sAssignFieldName = sAssignFieldStr.split('.')[0]; + const sAssignFieldKey = sAssignFieldStr.split('.')[1]; + const dWeight = returnData.dataset.rows[0].dWeight; + if (commonUtils.isNotEmptyObject([`${sAssignFieldName}Data`])) { + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + tableData[tableData.length - 1][sAssignFieldKey] = dWeight; + this.props.onSaveState({ tableData: [`${sAssignFieldName}Data`] }); + } + } else { + this.props.getServiceError(returnData); + } + } + handleViewClick = (name, sName, record) => { + if (name === 'process' && sName === 'sProcessParamStr') { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + const sProcessParam = JSON.parse(paramType); + modalVisible = true; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(sProcessParam[`sParam${i.toString()}`])) { + processConfig.gdsconfigformslave[iIndex].showName = sProcessParam[`sParam${i.toString()}`]; + processConfig.gdsconfigformslave[iIndex].bVisible = !sProcessParam[`sParam${i.toString()}`].includes('参数值'); + record[`sParam${i.toString()}`] = sProcessParam[`sParam${i.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndex]); + } else if (iIndex > -1) { + // processConfig.gdsconfigformslave[iIndex].showName = `sParamValue${i.toString()}`; + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } else { + modalVisible = false; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sProcessParamsModalVisible: modalVisible, + }); + } else { + this.props.onViewClick(name, sName, record); + } + }; + /* 选择基础颜色 */ + handleSelectSisColor = async (name, selectConfig, selectData) => { + const { enabled, processData, processSelectedRowId } = this.props; + if (enabled) { + let sColorSerialMemoStr = ''; + const jsonData = []; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const { + sId, sName, dColor, CreateDate, sMakePerson, + } = item; + const jsonObj = {}; + jsonObj.sId = sId; + jsonObj.sName = sName; /* 名称 */ + jsonObj.dColor = dColor; /* 色序 */ + jsonObj.CreateDate = CreateDate; + jsonObj.sMakePerson = sMakePerson; + sColorSerialMemoStr += `${sName}-${dColor},`; + jsonData.push(jsonObj); + }); + if (commonUtils.isNotEmptyObject(sColorSerialMemoStr)) { + sColorSerialMemoStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + } + } + const iIndex = processData.findIndex(item => item.sId === processSelectedRowId); + if (iIndex > -1) { + const addState = {}; + let { handleType } = processData[iIndex]; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + addState.handleType = handleType; + addState.sColorSerialMemo = sColorSerialMemoStr; + processData[iIndex] = { ...processData[iIndex], ...addState }; + } + } + this.props.onSaveState({ + sisColorChooseVisible: false, + }); + } + handleViewChoose= (name, sName, record) => { + const { sId } = record; /* 控制表主键 */ + const { enabled } = this.props; + const sisColorSelectedRowKeys = []; + let jsonData = []; + if (name === 'process' && sName === 'sColorSerialMemo') { + const { [`${name}Data`]: tableData } = this.props; + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + const sColorSerialMemo = tableData[iIndex].sColorSerialMemo; + + if (commonUtils.isNotEmptyObject(sColorSerialMemo)) { + try { + jsonData = JSON.parse(sColorSerialMemo); + jsonData.forEach((item) => { + sisColorSelectedRowKeys.push(item.sId); + }); + } catch (ex) { + console.log('ex', ex); + } + } + } + this.props.onSaveState({ + sisColorChooseVisible: true, + processSelectedRowId: sId, /* 工序表选中行sId */ + enabled, + sisColorSelectedRowKeys, + sisColorSelectedData: jsonData, + }); + } + } + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + /* 根据上机长、上机宽,材料长,材料宽 计算自动排版数 */ + handleResolveMachineComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let result1 = {}; + const productLengthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(productLength, 0)); /* 产品长 */ + const productWidthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(productWidth, 0)); /* 产品宽 */ + const maxMachineLengthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(maxMachineLength, 0)); /* 材料长 */ + const maxMachineWidthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(maxMachineWidth, 0)); /* 材料宽 */ + if (isNaN(productLengthTemp) || productLengthTemp === 0 || isNaN(productWidthTemp) || productWidthTemp === 0 || isNaN(maxMachineLengthTemp) || maxMachineLengthTemp === 0 || isNaN(maxMachineWidthTemp) || maxMachineWidthTemp === 0) { + return result1; + } + const vh = this.handleDescVerticalComposing(productLength, productWidth, maxMachineLength, maxMachineWidth); + const hv = this.handleDescHorizonalComposing(productLength, productWidth, maxMachineLength, maxMachineWidth); + const totalNumVH = vh.totalNum; + const totalNumHV = hv.totalNum; + if (totalNumVH === totalNumHV) { + if (vh.remaining === 0) { + result1 = vh; + } else { + result1 = hv; + } + } else if (totalNumVH > totalNumHV) { + result1 = vh; + } else { + result1 = hv; + } + return result1; + }; + + handleDescHorizonalComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let horizonalWWNum = 0; + let horizonalLWNum = 0; + let verticalLLNum = 0; + let verticalLWNum = 0; + let totalNum = 0;// 总的排列数目 + let totalLength = 0;// 上机长,即最大排列占据的长度 + let totalWidth = 0;// 上机宽,即最大排列占据的宽度 + + let mLength = 0; + let mWidth = 0; + let horizonalRemaining = 0; + // let fTempmarginW = 0; + // let fTempmarginL = 0; + // const mTemp = 0; + const dmargin = 0; + + const result1 = {}; + + if (maxMachineLength > maxMachineWidth || maxMachineLength === maxMachineWidth) { + mLength = maxMachineLength; + } else { + mLength = maxMachineWidth; + } + + if (maxMachineLength < maxMachineWidth || maxMachineLength === maxMachineWidth) { + mWidth = maxMachineLength; + } else { + mWidth = maxMachineWidth; + } + maxMachineLength = mLength; + maxMachineWidth = mWidth; + + // 按机器优先横排--竖向横排数量,即上述竖向横排一共排几行 + verticalLLNum = Math.floor(maxMachineLength / this.handleZeroToOne(productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 按机器优先横排--横向横排数量,即横向排列的时候,一行最多能排几个 + verticalLWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(productLength + commonUtils.convertFixNum(dmargin, 2))); + + totalNum += verticalLLNum * verticalLWNum; + + // 画册类,不能混排,而且只能是偶数,如果是奇数,则首选在长方向去掉一列, + horizonalRemaining = 0; + // fTempmarginW = 0;// 宽方向 需减少的出血 + // fTempmarginL = 0;// 长方向 需减少的出血 + horizonalWWNum = 0; + horizonalLWNum = 0; + + if (totalNum > 0) { + // 上述横排完成之后,剩余的右边宽度,用于竖向排列 + horizonalRemaining = maxMachineWidth - (verticalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))); + // 按机器优先长排--竖向横排一行能排的数量,即排完竖向之后,剩余的排横向的,看一行能排多少个 + + // / 剩余空间 横向 排数量 + horizonalWWNum = Math.floor(horizonalRemaining / (productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 剩余空间 竖向 排数量 + horizonalLWNum = Math.floor(maxMachineLength / (productLength + commonUtils.convertFixNum(dmargin, 2))); + } + + if (horizonalWWNum * horizonalLWNum === 0) { + // 不是混排的情况 + totalLength = verticalLLNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + totalWidth = verticalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalNum += horizonalWWNum * horizonalLWNum; + // 有可能是左边横向排列占用的长度更长,也有可能是剩余右侧的竖向排列方式占用的长度更长,最终更长的那个作为上机尺寸 + if (verticalLLNum * (productWidth + dmargin) > horizonalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) { + totalLength = verticalLLNum * (productWidth + dmargin); + } else { + totalLength = horizonalLWNum * (productLength + dmargin); + } + // 最终宽度是所有左侧横向排列占据的宽度以及右侧剩余空间竖向排列占据的宽度之和 + totalWidth = (verticalLWNum * (productLength + dmargin)) + (horizonalWWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2))); + } + + result1.remaining = horizonalLWNum * horizonalWWNum; + result1.iLengthComposing = verticalLLNum; + result1.iWidthComposing = verticalLWNum; + + + result1.sMethod = `W#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+L#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + result1.sMaterialMethod = `W#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+L#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + // 最终要保存排列之后的长和宽,按机器排的时候获取的是上机尺寸;按材料排的时候,就是最优材料排版 + if (totalLength > totalWidth) { + result1.totalLength = totalLength; + result1.totalWidth = totalWidth; + } else { + result1.totalLength = totalWidth; + result1.totalWidth = totalLength; + } + // 最终保存最大数目,以便比较最优排版数 + result1.totalNum = totalNum; + return result1; + }; + handleDescVerticalComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let horizonalWWNum = 0; + let horizonalLWNum = 0; + let verticalLLNum = 0; + let verticalLWNum = 0; + let mLength = 0; + let mWidth = 0; + let verticalRemaining = 0; + // eslint-disable-next-line no-unused-vars + let fTempmarginW = 0; + // eslint-disable-next-line no-unused-vars + let fTempmarginL = 0; + const result1 = {}; + // eslint-disable-next-line no-unused-vars + const TYHLLookupList = 0; + const dmargin = 0; + let totalNum = 0;// 总的排列数目 + let totalLength = 0;// 上机长,即最大排列占据的长度 + let totalWidth = 0; // 上机宽,即最大排列占据的宽度 + if (maxMachineLength >= maxMachineWidth) { + mLength = maxMachineLength; + } else { + mLength = maxMachineWidth; + } + + if (maxMachineLength <= maxMachineWidth) { + mWidth = maxMachineLength; + } else { + mWidth = maxMachineWidth; + } + maxMachineLength = mLength; + maxMachineWidth = mWidth; + // 画册类,不能混排,而且只能是偶数,如果是奇数,则首选在长方向去掉一列, + verticalRemaining = 0; + + fTempmarginW = 0;// 宽方向 需减少的出血 + fTempmarginL = 0;// 长方向 需减少的出血 + + horizonalWWNum = 0; + horizonalLWNum = 0; + + // 按机器优先长排--竖排竖方向排多少个 + verticalLLNum = Math.floor(maxMachineLength / this.handleZeroToOne(commonUtils.convertFixNum(productLength, 2) + commonUtils.convertFixNum(dmargin, 2))); + // 竖排横方向排多少个 + verticalLWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(commonUtils.convertFixNum(productWidth, 2) + commonUtils.convertFixNum(dmargin, 2))); + totalNum += verticalLLNum * verticalLWNum; + + if (totalNum > 0) { + // 上述竖排完成之后,剩余的长度 + verticalRemaining = maxMachineLength - (verticalLLNum * (commonUtils.convertFixNum(productLength, 2) + commonUtils.convertFixNum(dmargin, 2))); + // 剩余下面 竖向 排数量 + horizonalLWNum = Math.floor(verticalRemaining / this.handleZeroToOne(productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 剩余下面 横向 排数量 + horizonalWWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(productLength + commonUtils.convertFixNum(dmargin, 2))); + } + + if (horizonalWWNum * horizonalLWNum === 0) { + totalLength = verticalLLNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + totalWidth = verticalLWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalNum += horizonalLWNum * horizonalWWNum; + totalLength = (verticalLLNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) + ((productWidth + commonUtils.convertFixNum(dmargin, 2)) * horizonalLWNum); + // 最终宽度是所有左侧横向排列占据的宽度以及右侧剩余空间竖向排列占据的宽度之和 + if (verticalLWNum * (productWidth + dmargin) > horizonalWWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) { + totalWidth = verticalLWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalWidth = horizonalWWNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + } + } + result1.remaining = horizonalLWNum * horizonalWWNum; + result1.iLengthComposing = verticalLLNum; + result1.iWidthComposing = verticalLWNum; + result1.sMethod = `L#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+W#${commonUtils.convertNumberToStr(horizonalLWNum)}*${commonUtils.convertNumberToStr(horizonalWWNum)}`; + result1.sMaterialMethod = `L#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+W#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + // 最终要保存排列之后的长和宽,按机器排的时候获取的是上机尺寸;按材料排的时候,就是最优材料排版 + if (totalLength > totalWidth) { + result1.totalLength = totalLength; + result1.totalWidth = totalWidth; + } else { + result1.totalLength = totalWidth; + result1.totalWidth = totalLength; + } + // 最终保存最大数目,以便比较最优排版数 + result1.totalNum = Math.floor(totalNum); + return result1; + }; + handleZeroToOne = (num) => { + if (commonUtils.isEmptyNumber(num) && num === 0) { + num = 1; + } + return num; + }; + + /* 单据字段单击右键全部更新,弹出窗选择后,更新此列所有数据。(只更新非只读字段) */ + handleContextMenuOk=(contextMenuValue, contextMenuData, contextMenuType) => { + const { + contextMenuConfig, contextMenuTbName, [`${contextMenuTbName}Data`]: tableData, [`${contextMenuTbName}SelectedRowKeys`]: selectedRowKeys, + } = this.props; + if (commonUtils.isNotEmptyObject(contextMenuTbName) && commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(contextMenuConfig) && commonUtils.isNotEmptyObject(contextMenuConfig[0])) { + const tableConfig = contextMenuConfig[0]; + const tableFilterData = tableData.filter(item => selectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + let changeData = []; + const chooseType = commonUtils.isNotEmptyNumber(contextMenuType) ? contextMenuType : 1; + if (chooseType === 1) { + changeData = tableData; + } else if (chooseType === 2) { + changeData = tableData.filter(item => item.iRowNum === tableFilterData[0].iRowNum || item.iRowNum > tableFilterData[0].iRowNum); + } + // const tableDataRow = tableFilterData[0]; + if (commonUtils.isNotEmptyArr(changeData) && commonUtils.isNotEmptyObject(tableConfig.sName) && !commonUtils.isEmpty(contextMenuValue)) { + const sName = tableConfig.sName; + changeData.forEach((child) => { + const addState = {}; + addState[sName] = contextMenuValue; + const iIndex = tableData.findIndex(row => row.sId === child.sId); + if (iIndex > -1) { + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...addState, ...contextMenuData }; + const changeValue = { ...contextMenuData }; + changeValue[sName] = contextMenuValue; + /* 手动触发改变事件 */ + this.handleTableChange(contextMenuTbName, sName, changeValue, child.sId, [], false); + } + }); + } + } + } + } + this.props.onSaveState({ + [`${contextMenuTbName}Data`]: tableData, + contextMenuModalVisible: false, /* 右击全部更新弹窗 */ + }); + } + + /* 工单、工艺卡、报价单上移下移排序 */ + orderNum = (tableData, controlSelectedRowKeys) => { + /* 部件工序排序 */ + const tableFilterData = tableData.filter(item => controlSelectedRowKeys.includes(item.sControlId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableFilterData.forEach((item, index) => { + item.iOrder = index + 1; + item.handleType = commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType; + const index1 = tableData.findIndex(item1 => item1.sId === item.sId); + if (index1 > -1) { + tableData[index1] = { ...tableData[index1], ...item }; + } + }); + } + /* 成品工序 */ + const tableFilterCPData = tableData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(tableFilterCPData)) { + let num = 1001; + tableFilterCPData.forEach((item) => { + item.iOrder = num; + item.handleType = commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType; + const index1 = tableData.findIndex(item1 => item1.sId === item.sId); + num += 1; + if (index1 > -1) { + tableData[index1] = { ...tableData[index1], ...item }; + } + }); + } + return tableData; + }; + + /* 送货单个性化弹窗 选择数据带到从表字表 */ + handleSelectCommonPopup = (currentPaneName, selectConfig, selectData, tbName) => { + const { + [`${tbName}Data`]: tableData, [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, + } = this.props; + let { slaveChildData } = this.props; + const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; + let dProductQty = 0; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + if (commonUtils.isEmpty(slaveChildData)) { + slaveChildData = []; + } + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.slaveChild = item; + } + /* 库存数量叠加到从表的送货数量中 */ + dProductQty += commonUtils.isNull(item.dProductQty, 0); /* 赠送数量叠加 */ + let tableDataRowAdd = this.handleTableAdd('slaveChild', true); + item.handleType = 'add'; + tableDataRowAdd = { ...tableDataRowAdd, ...item }; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + tableDataRowAdd.sDelivergooodSlaveId = tableData[iIndex].sId; /* 选中从表的sId */ + slaveChildData.push(tableDataRowAdd); + }); + if (commonUtils.isNotEmptyNumber(dProductQty) && dProductQty !== 0) { + const addState = {}; + addState.dProductQty = dProductQty; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...addState }; + } + this.props.onSaveState({ [`${tbName}Data`]: tableData, slaveChildData }); + } + }; + + render() { + const { masterData } = this.props; + const imgSrc = commonBusiness.handleAddIcon(masterData); + return ( + + ); + } + }; +}; diff --git a/src/components/Common/CommonBillEvent.js b/src/components/Common/CommonBillEvent.js index 22496c2..767e6cc 100644 --- a/src/components/Common/CommonBillEvent.js +++ b/src/components/Common/CommonBillEvent.js @@ -1,7 +1,7 @@ /* eslint-disable */ /* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ import React, { Component } from 'react'; -import { Modal, notification, Progress } from 'antd'; +import { Modal, notification, Progress } from 'antd-v4'; import { message } from '@/utils/common/message'; import moment from 'moment'; import * as commonUtils from '@/utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonCalculator.js b/src/components/Common/CommonCalculator.js index 5faf9e5..18afd21 100644 --- a/src/components/Common/CommonCalculator.js +++ b/src/components/Common/CommonCalculator.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Button } from 'antd'; +import { Row, Col, Button } from 'antd-v4'; import * as commonUtils from '../../utils/utils'; import commonConfig from '../../utils/config'; import * as commonFunc from './commonFunc'; diff --git a/src/components/Common/CommonCheckBill/index.js b/src/components/Common/CommonCheckBill/index.js index 96d5b11..ff23f1b 100644 --- a/src/components/Common/CommonCheckBill/index.js +++ b/src/components/Common/CommonCheckBill/index.js @@ -16,7 +16,7 @@ import { Input, Divider, Collapse, -} from 'antd'; +} from 'antd-v4'; import { message } from '@/utils/common/message'; import CommonSales from '@/components/Common/CommonCheckBillEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonCheckBillEvent.js b/src/components/Common/CommonCheckBillEvent.js index 94f72e0..070396b 100644 --- a/src/components/Common/CommonCheckBillEvent.js +++ b/src/components/Common/CommonCheckBillEvent.js @@ -1,6 +1,6 @@ /* eslint-disable */ import React, { Component } from 'react'; -import { Modal, Progress } from 'antd'; +import { Modal, Progress } from 'antd-v4'; import { message } from '@/utils/common/message'; import moment from 'moment'; import * as commonUtils from '@/utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonClassifyEvent.js b/src/components/Common/CommonClassifyEvent.js index ecda1de..7468007 100644 --- a/src/components/Common/CommonClassifyEvent.js +++ b/src/components/Common/CommonClassifyEvent.js @@ -1,7 +1,7 @@ /* eslint-disable array-callback-return,no-undef,prefer-destructuring */ import React, { Component } from 'react'; import moment from 'moment'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import * as commonFunc from './commonFunc'; import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ import * as commonUtils from '../../utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonComponent/index.js b/src/components/Common/CommonComponent/index.js index 7d02053..51eb725 100644 --- a/src/components/Common/CommonComponent/index.js +++ b/src/components/Common/CommonComponent/index.js @@ -20,7 +20,7 @@ import { Table, Pagination, Tooltip, -} from 'antd'; +} from 'antd-v4'; import { EyeOutlined, FilePdfOutlined, diff --git a/src/components/Common/CommonComponent/index_new.js b/src/components/Common/CommonComponent/index_new.js index deceaac..cefc70e 100644 --- a/src/components/Common/CommonComponent/index_new.js +++ b/src/components/Common/CommonComponent/index_new.js @@ -14,7 +14,7 @@ import { Spin, message, Form, -} from 'antd'; +} from 'antd-v4'; import * as commonUtils from '@/utils/utils'; import styles from '@/index.less'; import Provinces from '@/assets/provinces.json'; diff --git a/src/components/Common/CommonComponentNew/index.tsx b/src/components/Common/CommonComponentNew/index.tsx index e5119c9..c9fa996 100644 --- a/src/components/Common/CommonComponentNew/index.tsx +++ b/src/components/Common/CommonComponentNew/index.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; -import { Form, Input, InputNumber, Select, Tooltip } from 'antd'; +import { Form, Input, InputNumber, Select, Tooltip } from 'antd-v4'; import * as commonUtils from "@/utils/utils"; -import type { SelectProps } from 'antd'; +import type { SelectProps } from 'antd-v4'; import type { PropsType, FormItemTypeKey } from './type'; const FormItemTypeEvent = (props: PropsType) => { diff --git a/src/components/Common/CommonCostomTabBill.js b/src/components/Common/CommonCostomTabBill.js new file mode 100644 index 0000000..7edf4a7 --- /dev/null +++ b/src/components/Common/CommonCostomTabBill.js @@ -0,0 +1,7028 @@ +/* eslint-disable */ + +import React, { Component, useEffect, useState, useRef } from "react"; +import { Form } from "@ant-design/compatible"; +import "@ant-design/compatible/assets/index.css"; +import { + Row, + Col, + Checkbox, + Layout, + Spin, + Tabs, + Avatar, + Button, + message, + Table, + Upload, + Radio, + Space, + Modal, + List, + Input, + Divider, + Collapse, +} from "antd-v4"; +import { + UploadOutlined, + RightOutlined, + DoubleRightOutlined, + PlusOutlined, + DeleteOutlined +} from "@ant-design/icons"; +import CommonNewSales from "@/components/Common/CommonNewTabBillEvent"; /* 继承销售模块业务功能 */ +import * as commonFunc from "@/components/Common/commonFunc"; /* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from "@/components/Common/ToolBar/ToolBarNew"; +import StaticEditTable from "@/components/Common/CommonTable"; /* 可编辑表格 */ +import styles from "@/index.less"; +import AssignmentField from "./AssignmentField"; +import CommonView from "@/components/Common/CommonView"; +import CommonViewTable from "@/components/Common/CommonViewTable"; +import CommonBase from "@/components/Common/CommonBase"; /* 获取配置及数据 */ +import * as commonBusiness from "@/components/Common/commonBusiness"; /* 单据业务功能 */ +import commonConfig from "@/utils/config"; +import * as commonUtils from "@/utils/utils"; /* 通用方法 */ +import * as commonServices from "@/services/services"; /* 服务类 */ +import AddIcon from "@/assets/add.svg"; +import DisableAddIcon from "@/assets/disableadd.svg"; +import CopyIcon from "@/assets/copy.svg"; +import CopyAllIcon from "@/assets/copyall.svg"; +import DisableCopyIcon from "@/assets/disablecopy.svg"; +import DisableCopyAllIcon from "@/assets/disablecopyall.svg"; +import DelIcon from "@/assets/delete.svg"; +import DisableDelIcon from "@/assets/disabledelete.svg"; /* 获取配置及数据 */ +import AntdDraggableModal from "@/components/Common/AntdDraggableModal"; +import CommonListSelect from "./CommonListSelect"; +import CommonViewDragable from "@/components/Common/CommonViewDragable"; +import CommonListSelectFlex from "@/components/Common/CommonListSelectFlex"; +import ContextMenuModal from '@/components/Common/ContextMenuModal'; + +const width = "18px"; +const height = "18px"; +const setAdd = { + title: "增加", + width: { width }, + height: { height }, + img: 添加, + disableimg: ( + 删除 + ) +}; +const setCopy = { + title: "复制", + width: { width }, + height: { height }, + img: 复制, + disableimg: ( + 复制 + ) +}; +const setCopyAll = { + title: "复制部件", + width: { width }, + height: { height }, + img: 复制部件, + disableimg: ( + 复制部件 + ) +}; +const setDelete = { + title: "删除", + width: { width }, + height: { height }, + img: 删除, + disableimg: ( + 删除 + ) +}; + +const { Header, Content } = Layout; +const { TabPane } = Tabs; +const { Panel } = Collapse; +let _this; +class CommonNewBill extends Component { + constructor(props) { + super(props); + this.state = { + currentTab: "10", + colTabKey: 12, + activeKey: ['1', '2'], + processTableId: `processTableId_${commonUtils.createSid()}`, + }; + _this = this; + this.commonViewHeight = 260; + this.maxTableNum = 12; + } + + componentWillReceiveProps() { + if (this.commonViewRef) { + const commonViewHeight = + this.commonViewRef.getBoundingClientRect().height + 147 + 30; + if (commonViewHeight > 177) { + this.commonViewHeight = commonViewHeight; + } + } + + if (!this.hasSeletLastTab) { + const { + formData = [], + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + masterConfig = {}, + sModelsId, + } = this.props; + + if (commonUtils.isNotEmptyArr(formData)) { + let defaultTab = null; + + const { gdsconfigformslave = [] } = masterConfig; + if (commonUtils.isNotEmptyArr(gdsconfigformslave)) { + const iIndex = gdsconfigformslave.findIndex( + item => + item.bVisible && + item.sControlName && + item.sControlName.substring(0, 1) === "z" && + item.sDefault + ); + if (iIndex !== -1) { + const defaultShowName = gdsconfigformslave[iIndex].showName; + const fomrDataIndex = formData.findIndex( + item => item.showName === defaultShowName + ); + const tabKeyList = [ + "10", + "20", + "30", + "40", + "50", + "60", + "70", + "80", + "90", + "100", + "110", + "150" + ]; + if (fomrDataIndex > 0) { + defaultTab = tabKeyList[fomrDataIndex - 1]; + } + } + } + + if (defaultTab) { + this.hasSeletLastTab = true; + this.setState({ currentTab: defaultTab }); + return; + } + + let currentTab = null; + if (onlySlave) { + currentTab = "10"; + } + if (onlySlave0) { + currentTab = "20"; + } + if (onlySlave1) { + currentTab = "30"; + } + if (onlyslave2) { + currentTab = "40"; + } + if (onlyslave3) { + currentTab = "50"; + } + if (onlyslave4) { + currentTab = "60"; + } + if (onlyslave5) { + currentTab = "70"; + } + if (onlyslave6) { + currentTab = "80"; + } + if (onlyslave7) { + currentTab = "90"; + } + if (onlyslave8) { + currentTab = "100"; + } + if (onlyslave9) { + currentTab = "110"; + } + if (onlyslave10) { + currentTab = "150"; + } + if(sModelsId === '12710101117172075846130') { + currentTab = "10"; + } + if (currentTab) { + this.hasSeletLastTab = true; + this.setState({ currentTab }); + } + } + } + } + + componentDidUpdate() { + if (window.refreshTabFlag) { + clearTimeout(this.flagTimer); + this.flagTimer = setTimeout(() => { + window.refreshTabFlag = 0; + this.props.onSaveState({ randomFlag: new Date().getTime() }); + }, 500); + } + } + + isSColorSerialMemo = React.createRef(); + + resetSColorSerialMemo = () => { + this.isSColorSerialMemo.current = false; + } + + /** 行选择 */ + onRowClick = (name, record) => { + if (name === "slave0Child1") { + this.props.onSaveState({ slave0SelectedRowKeys:[], slave0Child1SelectedRowKeys: [record.sId]}) + } + }; + + onChange = checkedValues => { + this.props.onSaveState({ + dataPersonArray: checkedValues + }); + }; + getMenuStatus = menu => { + if (menu.sControlName === "BtnImport") { + return !this.props.enabled; + } + }; + + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const uploadInfo = { + sPicturePath, + sFileName: file.name + }; + const tableDataRow = this.props.onDataRowAdd(name, true); + const { + [`${name}Column`]: tableColumn, + masterData, + [`${name}Data`]: tableData + } = this.props; + tableColumn.forEach(slaveChild => { + const ckey = slaveChild.dataIndex; + if (ckey === "sProductNo" || ckey === "sProductName") { + tableDataRow[ckey] = + masterData[ckey] !== undefined ? masterData[ckey] : ""; + } else if (ckey === "iOrder") { + tableDataRow[ckey] = ""; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) + ? undefined + : masterData.sCustomerId; + let existCustomerId = false; + if ( + sModelsType.includes("sales/") && + commonUtils.isNotEmptyStr(sCustomerId) + ) { + existCustomerId = true; + } else if (!sModelsType.includes("sales/")) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId /* 是否可用 */, + style: { + display: commonUtils.convertBooleanToDisplayBlock(true) + } /* 是否显示 */ + }; + } + }; + + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, + masterData, + app, + checkConditions, + sCheckModelId, + checkPersonData, + currentId, + masterConfig, + slaveConfig, + checkConfig + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter( + item => item.sName === "CkxTmpCheck" + )[0].sValue; + if (bCkxTmpCheck === "1") { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { + /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject( + this.props.dataPersonArray + ) + ? [] + : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach(item => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(","); + const url = `${ + commonConfig.server_host + }business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: "Sp_System_AutoSendCheckMsg", + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: "", + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString + } + }; + + const returnData = (await commonServices.postValueService( + app.token, + value, + url + )).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage( + app.commonConst, + "NoCheckMsg" + ); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage( + "examine", + "showImg", + currentId, + dataPersonString, + noCheckMsg, + null + ); + const urlCanCheckBill = `${ + commonConfig.server_host + }checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { + sCheckModelId, + checkPersonData, + sBillId: masterData.sId + }; + const returnCanCheckBill = (await commonServices.postValueService( + app.token, + valueCanCheckBill, + urlCanCheckBill + )).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false + }); + return; + } + } else { + /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage( + "reflush", + "showImg", + currentId, + dataPersonString, + noCheckMsg, + null + ); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { + /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false + }); + }; + handleTableModal = async () => { + const { + sModelsId, + controlData, + masterData, + slaveData, + controlConfig, + slaveSelectedRowKeys, + enabled, + slaveConfig + } = this.props; + const addState = {}; + if (this.props.sModelsType === "sales/salesOrder") { + const iSlaveIndex = slaveData.findIndex( + item => item.sId === slaveSelectedRowKeys[0] + ); + const iIndex = controlData.findIndex( + item => item.sSlaveId === slaveSelectedRowKeys[0] + ); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + let dropdownProductClassifyId; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex( + item => item.sName === "sProductClassifyId" + ); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "slave", + slaveConfig.gdsconfigformslave[slaveIndex] + ); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex( + item => item.sName === "sProductClassifyName" + ); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "slave", + slaveConfig.gdsconfigformslave[iIndex] + ); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex( + item => item.sId === slaveData[iSlaveIndex].sProductClassifyId + ); + if ( + commonUtils.isNotEmptyObject( + dropdownProductClassifyId[iProductClassifyIdIndex] + ) + ) { + const sAllPartsName = + dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(","); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData( + controlConfig, + allTableData + ); + tableDataRowAdd.handleType = "add"; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = + masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = slaveData[iSlaveIndex].dProductQty; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex( + item => item.sSlaveId === slaveSelectedRowKeys[0] + ); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex( + item => item.sControlName === "BtnChooseProcess" + ); + + if (iIndex > -1) { + this.props.onBtnChoose( + "process", + "BtnChooseProcess", + processConfig.gdsconfigformslave[iIndex] + ); + } + }; + handleCancelModal = modelVisible => { + this.props.onSaveState({ + [modelVisible]: false + }); + }; + handleOkModal = () => { + const { + controlData, + slave0Data, + processData, + sModelsId, + slaveData, + slaveSelectedRowKeys, + materialsConfig, + processConfig + } = this.props; + const ctData = controlData.filter( + item => + item.handleType !== "del" && item.sSlaveId === slaveSelectedRowKeys[0] + ); + const mtData = slave0Data.filter( + item => + item.handleType !== "del" && item.sSlaveId === slaveSelectedRowKeys[0] + ); + const pData = processData.filter( + item => + item.handleType !== "del" && + item.sSlaveId === slaveSelectedRowKeys[0] && + item.sType === "2" + ); + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ""; + let pDetail = ""; + const slaveIndex = slaveData.findIndex( + item => item.sId === slaveSelectedRowKeys[0] + ); + ctData.forEach(async (controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? "" : " "; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ""; + let ipDetail = ""; + const materials = mtData.filter( + materialsItem => materialsItem.sControlId === controlItem.sId + ); + let materialsIdDropDown; + const materialsIndex = materialsConfig.gdsconfigformslave.findIndex( + item => item.sName === "sMaterialsName" + ); + if (materialsIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "materials", + materialsConfig.gdsconfigformslave[materialsIndex] + ); + materialsIdDropDown = sqlDropDownData.dropDownData; + } + materials.forEach((mItem, i) => { + const fh = i === 0 ? "" : ","; + if (materialsIdDropDown) { + const materialsIdIndex = materialsIdDropDown.findIndex( + item => item.sId === mItem.sMaterialsId + ); + if (materialsIdIndex > -1) { + imDetail = `${imDetail}${fh} ${ + materialsIdDropDown[materialsIdIndex].sMaterialsName + }`; + } + } + }); + // processPropsType + const process = pData.filter( + processItem => processItem.sControlId === controlItem.sId + ); + let processIdDropDown; + const processIndex = processConfig.gdsconfigformslave.findIndex( + item => item.sName === "sProcessName" + ); + if (processIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "process", + processConfig.gdsconfigformslave[processIndex] + ); + processIdDropDown = sqlDropDownData.dropDownData; + } + process.forEach((pItem, i) => { + const fh = i === 0 ? "" : ","; + if (processIdDropDown) { + const processIdIndex = processIdDropDown.findIndex( + item => item.sId === pItem.sProcessId + ); + if (processIdIndex > -1) { + ipDetail = `${ipDetail}${fh} ${ + processIdDropDown[processIdIndex].sProcessName + }`; + } + } + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty( + slaveData[slaveIndex].handleType + ) + ? "update" + : slaveData[slaveIndex].handleType; + } else if ( + commonUtils.isNotEmptyArr(controlData) && + commonUtils.isEmptyArr(ctData) + ) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ""; + slaveData[slaveIndex].sProcessMemo = ""; + slaveData[slaveIndex].handleType = commonUtils.isEmpty( + slaveData[slaveIndex].handleType + ) + ? "update" + : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + slave0Data, + processData, + slaveData + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return ( + commonUtils.isNotEmptyStr(record.sSlaveId) && + record.sSlaveId + .toString() + .toLowerCase() + .includes(value.toLowerCase()) + ); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterData = () => { + return true; + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = name => { + const { + [`${name}Data`]: data, + controlSelectedRowKeys, + slaveSelectedRowKeys + } = this.props; + if (data !== undefined) { + const newArr = data.filter(item => { + if (name === "control") { + return ( + commonUtils.isNotEmptyStr(item.sSlaveId) && + item.sSlaveId + .toString() + .toLowerCase() + .includes(slaveSelectedRowKeys.toString()) + ); + } else { + return ( + commonUtils.isNotEmptyStr(item.sControlId) && + item.sControlId + .toString() + .toLowerCase() + .includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && + item.sSlaveId + .toString() + .toLowerCase() + .includes(slaveSelectedRowKeys.toString()) + ); + } + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag) => { + if (name === "materials") { + const { slave0Data: processData, slave0SelectedRowKeys: processSelectedRowKeys,} = this.props; + const tableData = this.props[`${name}Data`]; + tableDataRow = this.props.onDataRowAdd(name, true); + tableDataRow.sControlId = this.props.slave0Child1SelectedRowKeys[0]; + let processRow = {}; + if(commonUtils.isNotEmptyArr(processData) && commonUtils.isNotEmptyArr(processSelectedRowKeys)){ /* 没有工序选中行 则不进行数据过滤 */ + const iIndex = processData.findIndex(item => processSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + processRow = processData[iIndex]; + tableDataRow.sProcessId = processRow.sProcessId; /* 工序ID */ + tableDataRow.sProcessTbId = processRow.sId; /* 工序表格ID */ + } + } + tableData.push(tableDataRow); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}SelectedRowKeys`]: [tableDataRow.sId] + }); + } else { + this.props.onDataRowAdd(name, flag); + } + + return; + + + /* 外置处理业务 */ + const { + sModelsId, + sModelsType, + gdsformconst, + slaveData, + controlData, + controlSelectedRowKeys, + [`${name}Data`]: tableData, + slaveSelectedRowKeys, + slaveConfig + } = this.props; + let tableDataRow = {}; + if (name === "control") { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach(item => { + dPartsQty += + commonUtils.isNull(item.dProductQty, 0) + + commonUtils.isNull(item.dGiveQty, 0) + + commonUtils.isNull(item.dStockupQty, 0); + }); + // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductName'); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex( + item => item.sName === "sProductName" + ); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "slave", + slaveConfig.gdsconfigformslave[slaveIndex] + ); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex( + item => item.sId === slaveData[0].sProductId + ); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = + productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex( + item => item.sId === slaveSelectedRowKeys[0] + ); + if (iSlaveIndex > -1) { + if (sModelsType === "sales/salesOrder") { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = + commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + tableData.push(tableDataRow); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}SelectedRowKeys`]: [tableDataRow.sId] + }); + } else if (name === "materials" || name === "process") { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, "pleaseChooseParts"); + message.warn(msg === "" ? "请选择部件" : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex( + item => item.sId === controlSelectedRowKeys[0] + ); + const iSlaveIndex = slaveData.findIndex( + item => item.sId === slaveSelectedRowKeys[0] + ); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === "") { + message.warn( + commonFunc.showMessage(gdsformconst, "partsNameNotNull") + ); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}SelectedRowKeys`]: [tableDataRow.sId] + }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = "del"; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { + [`${name}Data`]: tableData, + [`${name}DelData`]: tableDelData, + [`${name}SelectedRowKeys`]: [] + }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys) => { + if (name === "control") { + const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel( + "materials", + tableSelectedRowKeys + ); + const processReturnData = this.otherTableDel( + "process", + tableSelectedRowKeys + ); + const controlReturnData = this.props.onDataRowDel( + name, + isWait, + tableSelectedRowKeys + ); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData + }); + return true; + } else { + return false; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { sModelsType, controlData, processData, materialsData } = this.props; + if (sModelsType === "sales/salesOrder" && name === "slave") { + const controlDataDel = controlData.filter( + item => item.sSlaveId === tableSelectedRowKeys[0] + ); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel( + "control", + isWait, + controlDataSelectedRowKeys, + true + ); + } + const materialsDataDel = materialsData.filter( + item => item.sSlaveId === tableSelectedRowKeys[0] + ); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel( + "materials", + isWait, + materialsDataSelectedRowKeys, + true + ); + } + const processDataDel = processData.filter( + item => item.sSlaveId === tableSelectedRowKeys[0] + ); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel( + "process", + isWait, + processDataSelectedRowKeys, + true + ); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, + [`${name}Config`]: tableConfig, + masterData, + masterConfig, + controlSelectedRowKeys, + sModelsId, + token, + app + } = this.props; + const tableSelectedRowKeys = []; + if (name === "productProcessInfo") { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ""; + let sConfigMasterIdControl = ""; + let sConfigMasterIdMaterials = ""; + let sConfigMasterIdProcess = ""; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter( + item => item.sName === "sConfigId" + )[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning( + commonFunc.showMessage(app.commonConst, "slaveParameterErro") + ); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning( + commonFunc.showMessage(app.commonConst, "controlParameterErro") + ); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning( + commonFunc.showMessage(app.commonConst, "materialsParameterErro") + ); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning( + commonFunc.showMessage(app.commonConst, "processParameterErro") + ); + } + const slaveUrl = `${ + commonConfig.server_host + }business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService( + token, + value, + slaveUrl + )).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach(item => { + item.handleType = "add"; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${ + commonConfig.server_host + }business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService( + token, + value, + controlUrl + )).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach(item => { + item.handleType = "add"; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${ + commonConfig.server_host + }business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService( + token, + value, + materialsUrl + )).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach(item => { + item.handleType = "add"; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${ + commonConfig.server_host + }business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService( + token, + value, + processUrl + )).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach(item => { + item.handleType = "add"; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, + materialsData, + controlData, + slaveData, + [`${name}ChooseVisible`]: false, + [`${name}SelectedRowKeys`]: tableSelectedRowKeys + }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) + ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) + : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach(item => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { + ...tableDataRow, + ...commonFunc.getAssignFieldValue( + selectConfig.sAssignField, + item, + newCopyTo + ) + }; // 取赋值字段 + tableDataRow.handleType = "add"; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType === "sales/salesOrder") { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) + ? slaveData.findIndex( + item => item.sId === slaveSelectedRowKeys[0] + ) + : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== "3") { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === "3") { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ + [`${name}Data`]: tableDataNew, + [`${name}ChooseVisible`]: false, + [`${name}SelectedRowKeys`]: tableSelectedRowKeys + }); + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = + tableData.findIndex(item => item.sId === g1.sControlId) === -1 + ? 999 + : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = + tableData.findIndex(item => item.sId === g2.sControlId) === -1 + ? 999 + : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return ( + parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - + parseInt(sPartOrder2 + g2.sType + sOrder2, 10) + ); + }); + return processData; + }; + /** 上传后执行函数 */ + handleBeforeUpload = () => {}; + + handleTabChange = key => { + setTimeout(() => { + this.setState({ + currentTab: key + }); + }, 0); + }; + + + handleActiveKey = (value) => { + this.setState({ + colTabKey: value, + activeKey: value + }); + } + + + handleMenuClick = e => { + let { sId } = this.props.masterData; + const Type = e.key; + const { token } = this.props.app; + const { sType } = this.props.app.userinfo; + if (Type === "formSlave") { + /* 根据从表勾选数据 生成从表数据 */ + const { slaveSelectedRowKeys } = this.props; + if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) { + message.warn("请选择数据"); + return; + } + sId = slaveSelectedRowKeys; + } + const downloadUrl = `${ + commonConfig.server_host + }sqlfile/scriptSqlDownload?methodName=${Type}&sId=${sId}&token=${token}&sType=${sType}`; + window.open(downloadUrl); + this.props.onSaveState({ + downloadUrl + }); + }; + handleSlaveInit = async name => { + const { app, masterData, [`${name}Data`]: slaveData } = this.props; + if (masterData.sName !== null && masterData.sName !== undefined) { + message.warn("该节点不能初始化!"); + return; + } + const comfiled = { + path: "gdsconfigform", + pathTwo: "Gdsconfigformmaster", + pathSlave: "Gdsconfigformslave", + pathCustom: "Customslave", + pathInit: "GdsconfigformslaveByMaster", + pathSlaveSelect: "gdsmodule", + pathSlaveSelectTwo: "SelectFormData" + }; + const url = `${commonConfig.server_host}${comfiled.path}/get${ + comfiled.pathInit + }?sParentId=${masterData.sId}&sTbName=${masterData.sTbName}&sType=${ + masterData.sType + }`; + const dataReturn = (await commonServices.getService( + this.props.app.token, + url + )).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const tempData = dataReturn.dataset.rows; + const initData = []; + tempData.forEach(item => { + item.handleType = "add"; + initData.push(item); + }); + const newData = [...slaveData, ...initData]; + this.props.onSaveState({ slaveData: newData, enabled: true }); + message.success("初始化成功!"); + } else { + message.warn("当前表格无需初始化!"); + } + } else { + /* 失败 */ + this.props.getServiceError(dataReturn); + } + }; + handleCopyRow = (name, toname) => { + this.props.onCopyRow(name, toname); + }; + handleCopy2Custom = () => { + let toname = "slave2"; + for (let i = 0; i < 10; i++) { + const slaveConfigName = `slave${i}Config`; + const slaveConfig = this.props[slaveConfigName]; + if (slaveConfig && commonUtils.isNotEmptyObject(slaveConfig)) { + if (slaveConfig.sTbName === "gdsconfigformcustomslave") { + toname = `slave${i}`; + break; + } + } + } + this.props.onCopyRow("slave", toname); + }; + /** 添加行 */ + handleAddRow = (name, index) => { + this.props.onDataRowAdd(name, null, index); + }; + /** 删除行 */ + handleDelRow = name => { + const { [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + if (this.props.onDataRowDel(name, false, tableSelectedRowKeys)) { + message.success("删除成功!"); + } + }; + + /* 字段双击弹出 */ + handleFieldDoubleClick = (sValue, showConfig, tbName) => { + const { + [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, + [`${tbName}Data`]: tableData + } = this.props; + if ( + commonUtils.isNotEmptyObject(showConfig) && + showConfig.sName === "sAssignField" + ) { + let tableDataRow = {}; + if (commonUtils.isNotEmptyArr(tableData)) { + const tableFilterData = tableData.filter(item => + tableSelectedRowKeys.includes(item.sId) + ); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableDataRow = tableFilterData[0]; + } + } + const sAssignFieldColumn = [ + { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: "sNewName", + title: "现字段", + width: "220px", + editable: true, + bNotSort: true + }, + { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: "sOldName", + title: "源字段", + width: "220px", + editable: true, + bNotSort: true + } + ]; + const sAssignFieldData = []; + if ( + commonUtils.isNotEmptyObject(tableDataRow) && + commonUtils.isNotEmptyObject(sValue) + ) { + const selectedRowKeys = []; + const sAssignFieldDataTemp = sValue.split(","); + sAssignFieldDataTemp.forEach(index => { + const aAssignFieldObj = {}; + const splitData = index.split(":"); + if (commonUtils.isNotEmptyArr(splitData)) { + aAssignFieldObj.sId = commonUtils.createSid(); + aAssignFieldObj.sNewName = splitData[0]; + aAssignFieldObj.sOldName = splitData[1]; + sAssignFieldData.push(aAssignFieldObj); + } + selectedRowKeys[0] = sAssignFieldData[0].sId; + }); + const { enabled } = this.props; + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData, + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId /* 选中行的sId */, + enabled + }); + } else { + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData: [], + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId /* 选中行的sId */ + }); + } + } + }; + /* 拿到赋值字段 */ + handleGetsAssignField = (data, sFieldName) => { + if (sFieldName === "sAssignField") { + const { + sAssignFieldRowId, + sAssignFieldName + } = this.props; /* 双击弹出赋值窗体的行ID */ + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData)) { + const iIndex = tableData.findIndex( + item => item.sId === sAssignFieldRowId + ); + const newData = {}; + /* 将数组变成赋值字符串 */ + let sAssignFieldStr = ""; + const len = data.length; + data.forEach((item, index) => { + sAssignFieldStr += `${item.sNewName}:${item.sOldName}`; + if (index !== len - 1) { + sAssignFieldStr += ","; + } + }); + newData.sAssignField = sAssignFieldStr; + newData.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) + ? "update" + : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...newData }; + this.props.onSaveState({ [`${sAssignFieldName}Data`]: tableData }); + } + } + }; + + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) + ? undefined + : masterData.sCustomerId; + let existCustomerId = false; + if ( + sModelsType.includes("sales/") && + commonUtils.isNotEmptyStr(sCustomerId) + ) { + existCustomerId = true; + } else if (!sModelsType.includes("sales/")) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId /* 是否可用 */, + style: { + display: commonUtils.convertBooleanToDisplayBlock(true) + } /* 是否显示 */ + }; + } + }; + + handleUploadChangeFile = async info => { + const { file } = info; + const { + masterData, + sModelsId, + app, + token, + sModelsType, + slaveConfig, + slaveData + } = this.props; + if (file.response) { + if (file.response.code === 1) { + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + const importErrorData = errorInfo; + this.props.onSaveState({ + showImportErrorVisible: true, + importData: importErrorData + }); + return; + } + /* 把之前存放的数据删除 */ + const slaveDelData = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach(item => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = "del"; + slaveDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if ( + productIdDropDown === undefined && + commonUtils.isNotEmptyArr(returnData) + ) { + /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = slaveConfig.gdsconfigformslave.findIndex( + item => item.sName === "sProductName" + ); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData( + sModelsId, + "slave", + slaveConfig.gdsconfigformslave[iIndex], + returnData[0] + ); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + await returnData.forEach(async tableDataRow => { + tableDataRow.handleType = "add"; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf("_sRealValue_"); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex( + item => + (item.sId === tableDataRow.sProductId || + item.sNId === tableDataRow.sProductId) && + item.sProductStyle === tableDataRow.sProductStyle + ); + if ( + iProductIdIndex === -1 && + commonUtils.isNotEmptyObject(sModelsType) && + sModelsType.includes("sales/salesOrder") + ) { + /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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 + }); + } + } + if (!tableDataRow.dNProductPrice) { + tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + } + const models = + 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.props.onMaterialsChange( + tableDataRow, + sModelsId, + masterData, + {}, + "dAuxiliaryQty", + app, + token, + models + ); + tableDataRow = commonBusiness.getCalculateAllMoney( + app, + models, + "dAuxiliaryQty", + masterData, + tableDataRow + ); + } else { + tableDataRow = commonBusiness.getCalculateAllMoney( + app, + models, + "dProductQty", + masterData, + tableDataRow + ); + } + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { + /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + + handleSelectRowChange = async (name, selectedKeys) => { + const { slave0Child1Data, [`${name}Data`]: tableData } = this.props; + + let addState = this.props.onTableSelectRowChange(name, selectedKeys, true); + const { [`${name}Config`]: config = {} } = this.props; + if (config.showName === "工艺评审") { + //... + } + if (name === 'slave') { + if (selectedKeys.length > 0) { + const iSlaveIndex = tableData.findIndex(item => item.sId === selectedKeys[0]); + const iControlIndex = slave0Child1Data?.findIndex( + controlItem => { + const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === tableData[iSlaveIndex].sProductNo); + return controlItem.sProductCardId === tableData[0].sBomId && + commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + }); + if (iControlIndex > -1) { + addState.slave0Child1SelectedRowKeys = [slave0Child1Data[iControlIndex].sId]; + _this.controlFilterData = [slave0Child1Data[iControlIndex]]; + } + addState.slave0SelectedRowKeys = []; + } + + } + if(name ==='slave0Child1' && config.showName === "合格率评审") { + addState.slave0SelectedRowKeys = []; /* 部件表选中时 清空工序的选中 */ + } else if(name ==='slave0') { + addState.materials1SelectedRowKeys = []; /* 工序选中时,油墨选中清空 */ + } + this.props.onSaveState(addState); + }; + + handleReturnForm = form => { + this.form = form; + this.props.onReturnForm(form); + }; + + handleValidateSave = () => { + this.form.validateFields(async err => { + /* 验证通过与不通过走不同的流程 */ + if (err) { + /* 验证失败 */ + /* 直接渲染显示错误提示 */ + for (const key of Object.keys(err)) { + message.error(err[key].errors[0].message); + } + this.props.onSaveState({ + loading: false + }); + } else { + const { app } = this.props; + /* 验证成功 */ + // 遍历出所有表格名称 + const configNameList = Object.keys(this.props) + .filter( + item => + (item && item.startsWith("slave") && item.endsWith("Config")) || + item.includes("revision") || + item.includes("materials") + ) + .map(item => item.replace("Config", "")); + configNameList.unshift("master"); + + // 验证表格数据 + let validateFlag = true; + + for (let i = 0; i < configNameList.length; i++) { + const tbName = configNameList[i]; + const { + [`${tbName}Config`]: tableConfig, + [`${tbName}Data`]: tableData + } = this.props; + const validateFun = + tbName === "master" + ? commonBusiness.validateMaster + : commonBusiness.validateTable; + + validateFlag = + commonUtils.isNotEmptyArr(tableData) && + commonUtils.isNotEmptyObject(tableConfig) + ? validateFun(tableConfig, tableData, this.props) + : true; + if (!validateFlag) { + break; + } + if (tableConfig && tableConfig.bNotCanEmpty) { + validateFlag = false; + if (commonUtils.isEmptyArr(tableData)) { + message.error( + commonFunc.showMessage(app.commonConst, "slaveNotNull") + ); // 表格不能为空! + } + } + if (!validateFlag) { + break; + } + } + + if (!validateFlag) { + this.props.onSaveState({ + loading: false + }); + return; + } + + this.props.onSaveState({ + loading: false + }); + + const data = []; + configNameList.forEach(tbName => { + const { + [`${tbName}Config`]: tableConfig, + [`${tbName}Data`]: tableData, + [`${tbName}DelData`]: tableDelData + } = this.props; + if (tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery") { + const tableDataNew = tbName === "master" ? [tableData] : tableData; + data.push( + commonBusiness.mergeData( + tbName, + tableConfig.sTbName, + tableDataNew, + tableDelData + ) + ); + } + }); + + /* 塞入材料数据 */ + // 获取材料表格(工序物料) + const iMIndex = configNameList.findIndex(item => item === 'materials'); /* 判断是否包含materials */ + let materialsTableName; + const slaveNameArr2 = Object.keys(this.props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(this.props[key]) && + this.props[key].sTbName === "salsalesordermaterials" && + (this.props[key].showName === "工序物料" || this.props[key].showName === "全部材料") + ); + + if (slaveNameArr2.length && iMIndex === -1) { + materialsTableName = slaveNameArr2[0].split("Config")[0]; + const { + [`${materialsTableName}Config`]: tableMaterialsConfig, + [`${materialsTableName}Data`]: tableMaterialsData, + [`${materialsTableName}DelData`]: tableMaterialsDelData + } = this.props; + if (tableMaterialsConfig && tableMaterialsConfig.sTbName && tableMaterialsConfig.sSqlStr !== "noQuery") { + const tableMaterialsDataNew = + materialsTableName === "master" + ? [tableMaterialsData] + : tableMaterialsData; + data.push( + commonBusiness.mergeData( + materialsTableName, + tableMaterialsConfig.sTbName, + tableMaterialsDataNew, + tableMaterialsDelData + ) + ); + } + } + + this.props.onSaveData({ + data, + sClientType: "1", + sSysLogSrcId: this.props.masterData.sId + }); + } + }); + }; + + handleToolBarClick = e => { + const { item = {} } = e; + const { props = {} } = item; + const { name } = props; + if (name === "选择工艺卡") { + this.handleChooseProcessCard(); + return true; + } + return false; + }; + + handleChooseProcessCard = () => { + const { addStateMap } = this.props; + const configName = Object.keys(addStateMap).find( + key => addStateMap[key].sTbName === "salsalesordercontrol" + ); + const processConfigName = Object.keys(addStateMap).find( + key => addStateMap[key].sTbName === "salsalesorderprocess" + ); + if (configName && processConfigName) { + const tableName = configName.replace("Config", ""); + const tableData = this.props[tableName + "Data"]; + + const processTableName = processConfigName.replace("Config", ""); + const processTableData = this.props[processTableName + "Data"]; + + const productCardRadios = tableData.reduce((result, item) => { + const { sProductCardId, sProductCardNo, sId } = item; + const iIndex = result.findIndex(item => item.value === sProductCardId); + + if (iIndex === -1) { + if (!this.currentProductCardValue) { + this.currentProductCardValue = `${sProductCardId}-${sId}`; + } + const line1 =
{`工艺卡-${sProductCardNo}`}
; + let line2 = ""; + + const processTableFilterData = processTableData.filter( + item => item.sControlId === sId + ); + + if (processTableFilterData.length) { + line2 = ( +
+ {工艺流程:} + {processTableFilterData.map((item, index) => { + if (index !== processTableFilterData.length - 1) { + return ( + + {item.sProcessName} + + + ); + } else { + return {item.sProcessName}; + } + })} +
+ ); + } + + result.push( + + {line1} + {line2} + + ); + } + return result; + }, []); + const _this = this; + Modal.confirm({ + title: "选择工艺卡", + // icon: , + content: ( + { + this.currentProductCardValue = value; + }} + defaultValue={this.currentProductCardValue} + > + {productCardRadios} + + ), + okText: "确认", + cancelText: "取消", + onOk() { + const [sProductCardId, sId] = _this.currentProductCardValue.split( + "-" + ); + const sValue = { + sProductCardId + }; + _this.handleToForceComplete(sValue, sId); + } + }); + } + }; + + handleToForceComplete = async (sValue, sId) => { + const { app, sModelsId, formRoute, masterConfig } = this.props; + + const { token } = app; + let iIndex = -1; + if (masterConfig && Array.isArray(masterConfig.gdsconfigformslave)) { + iIndex = masterConfig.gdsconfigformslave.findIndex( + item => + item.sControlName === "BtnForceComplete" || + item.sControlName === "BtnNoPurchase" + ); + } + if (iIndex < 0) return; + const btnConfig = masterConfig.gdsconfigformslave[iIndex]; + const sRelation = btnConfig.sRelation; + const url = `${ + commonConfig.server_host + }bill/billForceComplete?sModelsId=${sModelsId}&sName=${formRoute}`; + const values = { sqlParam: sRelation, sId, sReason: sValue }; + + const masterReturn = (await commonServices.postValueService( + token, + values, + url + )).data; + if (masterReturn.code === 1) { + message.success(masterReturn.msg); + this.props.onButtonClick("BtnRefresh"); + } else { + this.props.getServiceError(masterReturn); + } + }; + + handleCancelProductCombinationChooseModal = () => { + this.props.onSaveState({ productCombinationVisible: false }); + }; + + handleSelectProductCombination = () => { + const { + slave0Child1Data: controlData, sCombinationsControlId, packData, enabled, app, + } = this.props; + let { packSelectedRowKeys: selectedRowKeys } = this.props; + let sCombinedMemo = ''; + const tableCombineSelectedData = []; + // selectedRowKeys = commonUtils.isNotEmptyArr(selectedRowKeys) ? selectedRowKeys : []; + const maxArr = []; + const maxMap = new Map(); + let dSumCombineQty = 0; + for (const tableDataRow of packData) { + const { + sId, sProductNo, dCombineQty, dProductQty, dFactProductQty, sCombinePartsName, + } = tableDataRow; + if (dCombineQty > 0) { /* 排版数大于0时,把数据带回到控制表 */ + const jsonObj = {}; + jsonObj.sId = sId; + jsonObj.sProductNo = sProductNo; /* 产品编号 */ + jsonObj.dCombineQty = commonUtils.isNotEmptyNumber(dCombineQty) ? dCombineQty : 0; /* 排版数 */ + jsonObj.dProductQty = commonUtils.isNotEmptyNumber(dProductQty) ? dProductQty : 0; /* 生产数 */ + jsonObj.dFactProductQty = commonUtils.isNotEmptyNumber(dFactProductQty) ? dFactProductQty : 0; /* 实际生产数 */ + jsonObj.sCombinePartsName = sCombinePartsName; /* 合版部件名称 */ + dSumCombineQty += dCombineQty; + tableCombineSelectedData.push(jsonObj); + maxMap.set(Math.floor(dProductQty / dCombineQty), jsonObj); + maxArr.push(Math.floor(dProductQty / dCombineQty)); + } + } + /* 没勾选的合版数据 合拼排版数置为0 */ + // const packNoChooseData = packData.filter(item => item.sControlId === sCombinationsControlId && !selectedRowKeys.includes(item.sId)); + // if (commonUtils.isNotEmptyArr(packNoChooseData) && packNoChooseData.length > 0) { + // packNoChooseData.forEach((item) => { + // const iIndex = packData.findIndex(child => child.sId === item.sId); + // if (iIndex > -1) { + // packData[iIndex].dCombineQty = 0; + // packData[iIndex].handleType = commonUtils.isEmpty(packData[iIndex].handleType) ? 'update' : packData[iIndex].handleType; + // } + // }); + // } + + let iMax = 0; + if (commonUtils.isNotEmptyArr(maxArr)) { + iMax = Math.max(...maxArr); + } + sCombinedMemo = commonUtils.isNotEmptyArr(tableCombineSelectedData) ? JSON.stringify(tableCombineSelectedData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + const iControlIndex = controlData.findIndex(item => item.sId === sCombinationsControlId); + if (iControlIndex > -1 && enabled) { + const addState = {}; + const maxObj = maxMap.get(iMax); + let { handleType } = controlData[iControlIndex]; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + addState.handleType = handleType; + addState.sCombinedMemo = sCombinedMemo; + addState.dPartsQty = maxObj.dProductQty; + addState.dSinglePQty = commonUtils.isNotEmptyObject(maxObj) ? maxObj.dCombineQty : 0; + addState.iCombineNum = dSumCombineQty; + controlData[iControlIndex] = { ...controlData[iControlIndex], ...addState }; + console.log('maxObj', maxObj); + } + + console.log('controlData确定', controlData); + this.props.onSaveState({ + productCombinationVisible: false, + packData, + slave0Child1Data:controlData, + }); + }; + + handleGetHeight = (minusNum = 0, bHalf) => { + let commonViewHeight = this.commonViewHeight; + if (bHalf) { + return `calc((100vh - ${commonViewHeight}px) / 2 - ${minusNum}px)`; + } else { + return `calc(100vh - ${commonViewHeight + minusNum}px)`; + } + }; + + handleGetTableTypesNew = name => { + const { dataRelationJson = {} } = this.props; + let result = {}; + const relateName = dataRelationJson[name]; + if (relateName) { + result = { + name: relateName, + data: this.props[`${relateName}Data`], + selectedRowKeys: this.props[`${relateName}SelectedRowKeys`] + }; + } + return result; + }; + + handleTableFilterData = (name, data, record) => { + if (name === "slave") { + const { bSecondMainMaterials } = this.props; + let slaveInfoDataNew = []; + if (commonUtils.isNotEmptyArr(data)) { + const bMaterials = + Object.keys(record).includes("sMaterialsId") && + Object.keys(record).includes("sMaterialsStyle"); + if (bMaterials) { + if(bSecondMainMaterials) { /* 二级工单材料过滤 */ + slaveInfoDataNew = data.filter( + item => + `${item.sMaterialsId}${item.sMaterialsStyle}` === + `${record.sMaterialsId}${record.sMaterialsStyle}` && + item.sMaterialStructure === '2' + && (commonUtils.isEmpty(record.sControlId) || `${item.sOrderControlId}` === `${record.sControlId}`) + ); + }else { /* 一级工单材料过滤 */ + slaveInfoDataNew = data.filter( + item => + `${item.sMaterialsId}${item.sMaterialsStyle}` === + `${record.sMaterialsId}${record.sMaterialsStyle}` && + item.sMaterialStructure === '1' + && (commonUtils.isEmpty(record.sControlId) || `${item.sOrderControlId}` === `${record.sControlId}`) + ); + } + } else { + slaveInfoDataNew = data.filter( + item => item.sSqlConditionId === record.sSqlConditionId + ); + } + } + return slaveInfoDataNew; + } + }; + + /* + 过滤替代料 根据子从表数据源过滤替代料数据 + */ + handleFilterMaterialData = (name, dataIndex, value, record) => { + // const { slave3Child0InfoSelectedRowKeys } = this.props; + const { slave3Child0SelectedRowKeys } = this.props; + if (value === undefined) { + return true; + } + if (name === "slave3Child0Child0") { + return ( + commonUtils.isNotEmptyObject(record.sParentMaterialsId) && + commonUtils.isNotEmptyArr(slave3Child0SelectedRowKeys) && + slave3Child0SelectedRowKeys.includes(record.sSrcMaterialsTbId) + ); + } + }; + + handleViewChoose = (name, sName, record) => { + if (sName === "sParams") { + const slaveSelectOneData = record; + const sProcessParamsSelects = []; + let sParamData = []; + let paramType = ""; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + paramType = slaveSelectOneData.sWorkOrderParam; + } + if (commonUtils.isEmpty(paramType)) { + message.warn("无工艺参数!"); + return; + } + /* 工序参数以表格形式展示 列 */ + const sParamConfig = { + bisMutiSelect: false, + bMutiSelect: false + }; + const gdsconfigformslave = [ + { + sId: commonUtils.createSid(), + sName: "sId", + showName: "主键", + bVisible: false, + iFitWidth: 200 + }, + { + sId: commonUtils.createSid(), + sName: "bSelfCbx", + showName: "选择", + bVisible: true, + iFitWidth: 37 + }, + { + sId: commonUtils.createSid(), + sName: "sParamKey", + showName: "参数主键", + bVisible: false, + iFitWidth: 200 + }, + { + sId: commonUtils.createSid(), + sName: "sParamName", + showName: "参数名", + bVisible: true, + iFitWidth: 230 + }, + { + sId: commonUtils.createSid(), + sName: "sParamValue", + showName: "参数值", + bVisible: true + } + ]; + sParamConfig.gdsconfigformslave = gdsconfigformslave; + const sParamColumn = commonFunc.getHeaderConfig(sParamConfig); + if (commonUtils.isNotEmptyObject(paramType)) { + /* 要把数据以表格的形式显示出来 */ + let sParamJsonObj = commonUtils.convertStrToObj(paramType, []); + + for (const key of Object.keys(sParamJsonObj)) { + if ( + key.includes("sParam") && + !key.includes("DropDown") && + !key.includes("Default") + ) { + const obj = {}; + obj.sId = commonUtils.createSid(); + obj.sParamKey = key; + obj.sParamName = sParamJsonObj[key]; + /* 找到数字 找到下拉数据源 */ + const num = key.replace(/[^\d]/g, "").trim(); + if (Number(num)) { + const number = Number(num); + const sParamDropDownKey = `sParamDropDown${number}`; + obj.sDropDownData = sParamJsonObj[sParamDropDownKey]; /* 下拉 */ + const sParamDefaultKey = `sParamDefault${number}`; + obj.sParamValue = sParamJsonObj[sParamDefaultKey]; /* 默认值 */ + } + sParamData.push(obj); + } + } + /* 将sParam1中的数据 还原到sParamData数据中 */ + if (commonUtils.isNotEmptyObject(record.sParams)) { + let selectedData = []; + try { + selectedData = JSON.parse(record.sParams); + } catch (e) { + try { + selectedData = JSON.parse(record.sParams.replace(/'/g, '"')); + } catch (error) { + selectedData = []; + } + } + + if (commonUtils.isNotEmptyArr(selectedData)) { + selectedData.forEach(itemS => { + const iIndex = sParamData.findIndex( + item => item.sParamName === itemS.sParamName + ); + if (iIndex > -1) { + const addState = {}; + addState.sParamValue = itemS.sParamValue; + addState.bSelfCbx = itemS.bSelfCbx; + sParamData[iIndex] = { ...sParamData[iIndex], ...addState }; + } + }); + } + + /* 如果数据集有一个是非选中的则非选中状态 否则全选 */ + if (commonUtils.isNotEmptyArr(sParamColumn)) { + const iIndex = sParamColumn.findIndex( + item => item.dataIndex === "bSelfCbx" + ); + if (iIndex > -1) { + const filterData = sParamData.filter(item => !item.bSelfCbx); + if (commonUtils.isNotEmptyArr(filterData)) { + sParamColumn[iIndex] = { + ...sParamColumn[iIndex], + bCheckAll: false + }; + } else { + sParamColumn[iIndex] = { + ...sParamColumn[iIndex], + bCheckAll: true + }; + } + } + } + } + } + this.props.onSaveState({ + processTableName: name, + processRecord: record, + sProcessParamsSelects, + sParamsModalVisible: true, + sParamConfig, + sParamColumn, + sParamData, + sParamModalType: "sWork" + }); + } else if (sName === "sColorSerialMemo") { + this.isSColorSerialMemo.current = true; + const { slave0Data: tableData, enabled } = this.props; + const { sId } = record; /* 控制表主键 */ + const sisColorSelectedRowKeys = []; + let jsonData = []; + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + const sColorSerialMemo = tableData[iIndex].sColorSerialMemo; + + if (commonUtils.isNotEmptyObject(sColorSerialMemo)) { + try { + jsonData = JSON.parse(sColorSerialMemo); + } catch (e) { + try { + jsonData = JSON.parse(sColorSerialMemo.replace(/'/g, '"')); + } catch (ex) { + // console.log('ex', ex); + } + } + jsonData.forEach(item => { + sisColorSelectedRowKeys.push(item.sId); + }); + } + } + this.props.onSaveState({ + processTableName: name, + sisColorChooseVisible: true, + processSelectedRowId: sId /* 工序表选中行sId */, + enabled, + sisColorSelectedRowKeys, + sisColorSelectedData: jsonData + }); + } else if (name === 'slave0Child1' && sName === 'sCombinedMemo') { /* 打开合版信息蓝色链接逻辑体 */ + const { formData, slaveData, slave0Child1Data: controlData} = this.props; + const addState = {}; + const packConfig = formData.find(item => item.sTbName === "salsalesordercontrolcombine" && item.showName === '销售合版表' ); /* 销售合版表 */ + const name= 'pack'; + if(commonUtils.isNotEmptyObject(packConfig)) { /* 特殊处理更新材料信息 */ + addState[`${name}Config`] = packConfig; + addState[`${name}Column`] = commonFunc.getHeaderConfig(packConfig); + addState[`${name}PageSize`] = + commonUtils.isNotEmptyNumber(packConfig.iPageSize) && packConfig.iPageSize !== 0 + ? packConfig.iPageSize + : packConfig.pageSize; + } + /* 拿从表的选中行 */ + const slaveRow = handleGetSelectedData(this.props,'slave'); + const sSlaveCombinedMemo = slaveRow?.sCombinedMemo; + const sControlCombinedMemo = record.sCombinedMemo; + let jsonArr = []; + let sControlCombinedMemoArr = []; + if(sControlCombinedMemo && commonUtils.isJSON(sControlCombinedMemo)) { + sControlCombinedMemoArr = JSON.parse(sControlCombinedMemo); + } + + if(sSlaveCombinedMemo && commonUtils.isJSON(sSlaveCombinedMemo)) { + const sSlaveCombinedMemoArr = JSON.parse(sSlaveCombinedMemo); + if(commonUtils.isNotEmptyArr(sSlaveCombinedMemoArr)) { + sSlaveCombinedMemoArr.forEach((item) => { + item.dProductQty = item.dModifyProductQty; + delete item.dRealQty; + delete item.dReCombinedQty; + delete item.dReMergeProductionQty; + item.sControlId = record.sId; + item.sPartsName = record.sPartsName; + const iCombinedIndex = sControlCombinedMemoArr.findIndex(combinedItem => combinedItem.sProductNo === item.sProductNo); + item.dCombineQty = iCombinedIndex > -1 ? sControlCombinedMemoArr[iCombinedIndex].dCombineQty : 0; + jsonArr.push(item); + }) + } + } + + if(commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + const tableRow = JSON.parse(JSON.stringify(item)); + const iIndex = jsonArr.findIndex(row => row.sProductId === tableRow.sProductId); + tableRow.sControlId = record.sId; + tableRow.sPartsName = record.sPartsName; + const iCombinedIndex = sControlCombinedMemoArr.findIndex(combinedItem => combinedItem.sProductNo === item.sProductNo); + tableRow.dCombineQty = iCombinedIndex > -1 ? sControlCombinedMemoArr[iCombinedIndex].dCombineQty : 0; + delete tableRow.sCombinedMemo; + if(iIndex > -1) { + tableRow.dProductQty = commonUtils.convertFixNum(commonUtils.isNull(jsonArr[iIndex].dProductQty, 0), 2) + + commonUtils.convertFixNum(commonUtils.isNull(tableRow.dProductQty, 0), 2); + jsonArr[iIndex] = tableRow; + } else { + jsonArr.push(tableRow); + } + }) + } + + if (commonUtils.isNotEmptyArr(controlData)) { + // 取合版数最大产出数 + const maxArr = []; + const maxMap = new Map(); + let sumArea = 0; + for (const tableDataRow of jsonArr) { + const { dCombineQty, dProductQty: dProductQtyOld } = tableDataRow; + const dProductQty = (dProductQtyOld - commonUtils.isNull(tableDataRow.dRealQty, 0) - commonUtils.isNull(tableDataRow.dReCombinedQty, 0) - commonUtils.isNull(tableDataRow.dReMergeProductionQty, 0)); + if (dCombineQty > 0) { /* 排版数大于0时,把数据带回到控制表 */ + maxMap.set(Math.floor(dProductQty / dCombineQty), tableDataRow); + maxArr.push(Math.floor(dProductQty / dCombineQty)); + tableDataRow.dArea = tableDataRow.dProductLength * tableDataRow.dProductWidth > 0 ? Math.round(tableDataRow.dProductLength * tableDataRow.dProductWidth * dCombineQty, 2) : 0; + sumArea += tableDataRow.dArea; + } + } + let iMax = 0; + if (commonUtils.isNotEmptyArr(maxArr)) { + iMax = Math.max(...maxArr); + } + const maxObj = maxMap.get(iMax); + for (const tableDataRow of jsonArr) { + if (tableDataRow.dCombineQty > 0) { /* 排版数大于0时,把数据带回到控制表 */ + tableDataRow.dFactProductQty = Math.floor((maxObj.dProductQty - commonUtils.isNull(maxObj.dRealQty, 0) - commonUtils.isNull(maxObj.dReCombinedQty, 0) - commonUtils.isNull(maxObj.dReMergeProductionQty, 0)) / maxObj.dCombineQty * tableDataRow.dCombineQty); + tableDataRow.dCombineCoefficient = sumArea > 0 ? Math.round(tableDataRow.dArea / sumArea * 100, 2) : 0; + } + } + + for (const tableDataRow of sControlCombinedMemoArr) { + if (tableDataRow.dCombineQty > 0 && jsonArr.findIndex(item => item.sProductNo === tableDataRow.sProductNo) <= -1) { // 排版数大于0时,不存在的合版信息也加入 + delete tableDataRow.dProductQty; + jsonArr.push(tableDataRow); + } + } + + const sCombinedMemo = commonUtils.isNotEmptyArr(jsonArr) && jsonArr.filter(item => item.dCombineQty > 0).length > 0 ? JSON.stringify(jsonArr.filter(item => item.dCombineQty > 0)) : ''; /* JSON对象转换为字符串 */ + const iControlIndex = controlData.findIndex(item => item.sId === record.sId); + if (iControlIndex > -1) { + controlData[iControlIndex].sCombinedMemo = sCombinedMemo; + controlData[iControlIndex].handleType = commonUtils.isEmpty(record.handleType) ? 'update' : record.handleType; + } + addState.slave0Child1Data = controlData; + addState.packData = jsonArr; + addState.sCombinationsControlId = record.sId; + } + console.log('addState打开', addState); + this.props.onSaveState({ + productCombinationVisible: true, + ...addState, + }); + } + }; + + handleCostomChange = async (name, showConfig, other) => { + const { + app, + sModelsId, + [`${name}Data`]: tableData, + [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + masterData, + slave1Child0Config, + slave2Child0Config, + slave2Child0InfoConfig, + slave6Child1Config, + slave6Child1InfoConfig, + } = this.props; + const iIndex = + commonUtils.isNotEmptyObject(tableSelectedRowKeys) && + commonUtils.isNotEmptyArr(tableData) + ? tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)) + : -1; + let slaveRow = {}; + if (iIndex > -1) { + slaveRow = tableData[iIndex]; + } else if (commonUtils.isNotEmptyArr(tableData) && tableData.length > 0) { + slaveRow = tableData[0]; + } + if ( + commonUtils.isNotEmptyObject(showConfig) && + showConfig.sControlName && + showConfig.sControlName.includes("BtnCustom.dSplitworkQty") + ) { + if (masterData.bFirstCalc !== 1) { + message.error("请先操作参数运算!"); + return; + } + this.props.onSaveState({ pageLoading: true }); + /* 拆分工单单据 - 拆分工单 生成工单 */ + const sButtonParam = showConfig.sButtonParam; + if ( + commonUtils.isNotEmptyObject(sButtonParam) && + commonUtils.isJSON(sButtonParam) + ) { + const proObj = JSON.parse(sButtonParam); + const proName = proObj.sproName; + const sRowData = slaveRow; + const value = { + sProName: proName, + sProInParam: JSON.stringify({ params: sRowData }) + }; + if (other?.iFlag === 1) { + value.iFlag = 1; + } + const url = `${ + commonConfig.server_host + }procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService( + app.token, + value, + url + )).data; + if (returnData.code === 1) { + message.success(returnData.msg); + this.props.onSaveState({ pageLoading: false }); + const conditonValues = this.props.onGetSqlConditionValues(slave1Child0Config); + const addState1 = await this.props.handleGetDataSet({ + name: 'slave1Child0', configData: slave1Child0Config, condition: { sSqlCondition: { ...conditonValues, sParentId: masterData.sId } }, isWait: true, + }); + this.props.onSaveState({ + ...addState1 + }); + // this.props.onButtonClick("BtnRefresh"); + } else { + this.props.onSaveState({ pageLoading: false }); + this.props.getServiceError({ + ...returnData, + fn: () => this.handleCostomChange(name, showConfig, { iFlag: 1 }) + }); + } + } else { + message.error("请正确配置存储过程名称!"); + } + } else if ( + commonUtils.isNotEmptyObject(showConfig) && + showConfig.sControlName && + (showConfig.sControlName.includes("BtnCustom.tEstimateCompletDate") || + showConfig.sControlName.includes("BtnCustom.tRecalculatedDate")) + ) { + /* 单生管评审单据 - 生管评审 - 交期推算 */ + const { + app, + sModelsId, + [`${name}Data`]: tableData, + slaveSelectedRowKeys: tableSelectedRowKeys + } = this.props; + const index = + commonUtils.isNotEmptyObject(tableSelectedRowKeys) && + commonUtils.isNotEmptyArr(tableData) + ? tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)) + : -1; + slaveRow = index > -1 ? tableData[index] : slaveRow; + const controlRow = handleGetSelectedData(this.props, 'slave0Child1'); /* 控制表当前选中行 */ + const sButtonParam = showConfig.sButtonParam; + if ( + commonUtils.isNotEmptyObject(sButtonParam) && + commonUtils.isJSON(sButtonParam) + ) { + const proObj = JSON.parse(sButtonParam); + const proName = proObj.sproName; + let sRowData = slaveRow; + //取第一条BOM的id + console.log('addState1addState1', name, tableData); + sRowData = { ...sRowData, sBomId: tableData[0].sBomId }; + const value = { + sProName: proName, + sProInParam: JSON.stringify({ params: sRowData, control: controlRow }) + }; + if (other?.iFlag === 1) { + value.iFlag = 1; + } + const url = `${ + commonConfig.server_host + }procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService( + app.token, + value, + url + )).data; + if (returnData.code === 1) { + message.success(returnData.msg); + if (showConfig.sControlName.includes("BtnCustom.tEstimateCompletDate")) { + const conditonValues1 = this.props.onGetSqlConditionValues(slave2Child0Config); + const addState1 = await this.props.handleGetDataSet({ + name: 'slave2Child0', configData: slave2Child0Config, condition: { sSqlCondition: { ...conditonValues1, sParentId: masterData.sId } }, isWait: true, + }); + const conditonValues2 = this.props.onGetSqlConditionValues(slave2Child0InfoConfig); + const addState2 = await this.props.handleGetDataSet({ + name: 'slave2Child0Info', configData: slave2Child0InfoConfig, condition: { sSqlCondition: { ...conditonValues2, sParentId: masterData.sId } }, isWait: true, + }); + tableData[index].handleType = commonUtils.isEmpty(tableData[index].handleType) ? "update" : tableData[index].handleType; + tableData[index].tEstimateCompletDate = returnData.dataset?.rows[0].dataSet?.proData[0].tEstimateCompletDate; + this.props.onSaveState({ + ...addState1, ...addState2, + }); + } else if (showConfig.sControlName.includes("BtnCustom.tRecalculatedDate")) { + const conditonValues1 = this.props.onGetSqlConditionValues(slave6Child1Config); + const addState1 = await this.props.handleGetDataSet({ + name: 'slave6Child1', configData: slave6Child1Config, condition: { sSqlCondition: { ...conditonValues1, sParentId: masterData.sId } }, isWait: true, + }); + const conditonValues2 = this.props.onGetSqlConditionValues(slave6Child1InfoConfig); + const addState2 = await this.props.handleGetDataSet({ + name: 'slave6Child1Info', configData: slave6Child1InfoConfig, condition: { sSqlCondition: { ...conditonValues2, sParentId: masterData.sId } }, isWait: true, + }); + tableData[index].handleType = commonUtils.isEmpty(tableData[index].handleType) ? "update" : tableData[index].handleType; + tableData[index].tRecalculatedDate = returnData.dataset?.rows[0].dataSet?.proData[0].tRecalculatedDate; + this.props.onSaveState({ + ...addState1, ...addState2, [`${name}Data`]: tableData + }); + } + + // this.props.onButtonClick("BtnRefresh"); + } else { + this.props.getServiceError({ + ...returnData, + fn: () => this.handleCostomChange(name, showConfig, { iFlag: 1 }) + }); + } + } else { + message.error("请正确配置存储过程名称!"); + } + } + }; + + handleGetParamsValue = ({ sName, sValue, record = {} }) => { + const jsonData = commonUtils.convertStrToObj(sValue, []); + if (sName === "sParams") { + const { sWorkOrderParam: sWorkOrderParamStr } = record; + const sWorkOrderParam = commonUtils.convertStrToObj( + sWorkOrderParamStr, + {} + ); + const sWorkOrderData = + jsonData.find(item => item.sParamType === "sWorkOrder") || {}; + const { data = {} } = sWorkOrderData; + const result = []; + Object.keys(data).forEach(key => { + if (sWorkOrderParam[key] !== undefined) { + result.push(`${sWorkOrderParam[key]}: ${data[key]}`); + } + }); + return result.join(";"); + } + + return sValue; + }; + + // 刷新工单交期 + handleRefreshGdjq = async() => { + const { currentId, slave2Child0Config, slave2Child0InfoConfig } = this.props; + const sId = currentId !== undefined ? currentId : ''; + const conditonValues1 = this.props.onGetSqlConditionValues(slave2Child0Config); + let returnData1 = await this.props.handleGetDataSet({ + name: "slave2Child0", + configData: slave2Child0Config, + condition: { sSqlCondition: { ...conditonValues1, sParentId: sId } }, + isWait: true, + }); + + const conditonValues2 = this.props.onGetSqlConditionValues(slave2Child0Config); + let returnData2 = await this.props.handleGetDataSet({ + name: "slave2Child0Info", + configData: slave2Child0InfoConfig, + condition: { sSqlCondition: { ...conditonValues2, sParentId: sId } }, + isWait: true, + }); + + this.props.onSaveState({ + ...returnData1, + ...returnData2 + }); + } + + handleSelectCommonPopup = (currentPaneName, selectConfig, selectData, tbName) => { + if (selectConfig?.sControlName?.includes('popupSingle') + && selectConfig?.sControlName?.includes('edit') + ) { + this.handleRefreshGdjq(); + return; + } + + this.props.onSelectCommonPopup (currentPaneName, selectConfig, selectData, tbName); + const { slave1Config } = this.props; + if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dSplitworkQty') { /* 拆分工单 */ + const iIndex = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnCustom.dSplitworkQty'); + if (iIndex > -1) { + this.handleCostomChange(tbName, slave1Config.gdsconfigformslave[iIndex], { iFlag: 1 }); + } + + } + } + + // 删除全部材料 + handleDelAllMaterials = (filterData, bPartDel) => { + const { materialsSelectedRowKeys = [] } = this.props; + const partFilterData = filterData.filter(item => materialsSelectedRowKeys.includes(item.sId)); + if (bPartDel) { + if (!partFilterData.length) { + message.info("请先选择要删除的数据!"); + return; + } + } + + const delAll = () => { + const sIds = filterData.map(item => item.sId); + this.props.onDataRowDel("materials", false, sIds); + } + + const delPart = () => { + const sIds = partFilterData.map(item => item.sId); + this.props.onDataRowDel("materials", false, sIds); + } + + Modal.confirm({ + title: `确认要删除${bPartDel ? "选中" : "全部"}吗?`, + onOk() { + bPartDel ? delPart() : delAll(); + }, + okText: '确定', + cancelText: '取消' + }); + + } + + // ----------------------------数据修改回带wend ---------------------------- // + + render() { + const { + pageLoading, + visible, + checkConditions, + checkPersonData, + app + } = this.props; + const checkCondition = commonFunc.showMessage( + app.commonConst, + "checkCondition" + ); /* 审核条件 */ + const checkSmemo = commonFunc.showMessage( + app.commonConst, + "checkSmemo" + ); /* 备注 */ + const columns = [ + { + title: checkCondition, + dataIndex: "condition", + key: "condition" + }, + { + title: checkSmemo, + dataIndex: "sMemo", + key: "sMemo" + } + ]; + const btnSure = commonFunc.showMessage( + app.commonConst, + "btnSure" + ); /* 确认 */ + const check = commonFunc.showMessage(app.commonConst, "check"); /* 审核 */ + const BtnClose = commonFunc.showMessage( + app.commonConst, + "BtnClose" + ); /* 关闭 */ + const checkPerson = commonFunc.showMessage( + app.commonConst, + "checkPerson" + ); /* 审核人 */ + return ( +
+ +
+ { + this.setState({ currentTab }); + }} + onUploadChangeFile={this.handleUploadChangeFile} /* xls文件导入 */ + onTabChange={this.handleTabChange} + onActiveKey={this.handleActiveKey} + onUploadChange={this.handleUploadChange} + getMenuStatus={this.getMenuStatus} + onBeforeUpload={this.handleBeforeUpload} + onUploadPropsSales={this.handleUploadPropsSales} + onDataRowModal={this.handleTableModal} + onDataRowDel={this.handleSlaveTableDel} + handleMenuClick={this.handleMenuClick} + handleSlaveInit={this.handleSlaveInit} + handleCopy2Custom={this.handleCopy2Custom} + handleCopyRow={this.handleCopyRow} + handleAddRow={this.handleAddRow} + handleDelRow={this.handleDelRow} + getSlaveInfos={this.getSlaveInfos} + onGetsAssignField={this.handleGetsAssignField} + handleFieldDoubleClick={this.handleFieldDoubleClick} + onSelectRowChange={this.handleSelectRowChange} + onRowClick ={this.onRowClick} + onReturnForm={this.handleReturnForm} + onSubmit={this.handleValidateSave} + onToolBarClick={this.handleToolBarClick} + onGetHeight={this.handleGetHeight} + onGetTableTypesNew={this.handleGetTableTypesNew} + onTableFilterData={this.handleTableFilterData} + onFilterData={this.handleFilterMaterialData} + onCostomChange={this.handleCostomChange} + onViewChoose={this.handleViewChoose} + onGetParamsValue={this.handleGetParamsValue} + onDataRowAdd={this.handleTableAdd} + onCancelProductCombinationChooseModal={this.handleCancelProductCombinationChooseModal} + onSelectProductCombination={this.handleSelectProductCombination} + onSelectCommonPopup={this.handleSelectCommonPopup} + onDelAllMaterials={this.handleDelAllMaterials} + /> + {visible ? ( + + {BtnClose} + , + + ]} + > +
+
{checkPerson}
+
+ + + {commonUtils.isNotEmptyObject(checkPersonData) + ? checkPersonData.map(item => { + return ( +
+ + {item.sUserName} + + + ); + }) + : ""} + + + + + ) : ( + "" + )} + + + + ); + } +} + +const BillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + } +})(props => { + const { form, onReturnForm, masterData } = props; + /* 回带表单 */ + onReturnForm(form); + /* 获取AssignmentField中的props */ + const assignmentFieldProps = { + visibleAssignmentField: props.visibleAssignmentField /* 是否展示 */, + sAssignFieldData: props.sAssignFieldData /* 数据 */, + sAssignFieldColumn: props.sAssignFieldColumn /* 表头 */, + selectedRowKeys: props.selectedRowKeys /* 选中 */, + sAssignFieldSelectedRowKeys: props.selectedRowKeys /* 选中 */, + onSaveState: props.onSaveState /* 保存数据方法 */, + onDataRowAdd: props.handleAddRow.bind(this, "sAssignField"), + onDataRowDel: props.handleDelRow.bind(this, "sAssignField"), + onDataRowCopy: props.handleCopyRow.bind(this, "sAssignField"), + // onRowClick: props.handleRowClick.bind(this, 'sAssignField'), + config: props.config, + app: props.app, + enabled: props.enabled, + onDataChange: props.onChange, + onGetsAssignField: props.onGetsAssignField, + handleFieldDoubleClick: props.handleFieldDoubleClick + }; + + if (!masterData) { + return ""; + } + + return ( + + + + + + {/* */} + + + +
+ +
+
+ + + {/* */} + + + +
+ +
+ +
+
+ + ); +}); + +// 头部工具栏按钮 +const HeaderComponent = props => { + const { + app, + formData, + sModelsId, + sModelsType, + masterConfig, + masterData + } = props; + + const templateProps = formData.filter( + item => item.sGrd === "importTemplate" + )[0]; + let gdsconfigformmasterId = ""; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + const sNotEmpty = "sParentId,sProductId"; + let uploadUrl = `${ + commonConfig.server_host + }import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${ + app.token + }`; + /* 送货单需要传客户id */ + if ( + commonUtils.isNotEmptyObject(sModelsType) && + sModelsType === "sales/salesSgoods" && + commonUtils.isNotEmptyObject(masterData) + ) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${ + commonConfig.server_host + }import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${ + app.token + }`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile /* 文件上传 */, + accept: "xls/*", + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + } + }; + + const uploadPropsSales = props.onUploadPropsSales(); + const BtnimportData = commonFunc.showMessage( + app.commonConst, + "importData" + ); /* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) + ? masterConfig.gdsconfigformslave.filter( + item => item.sControlName.includes("ImportData") && item.bVisible + ) + : ""; /* 后台是否配置导入 */ + return ( +
+
+ +
+ {commonUtils.isNotEmptyArr(ImportData) ? ( +
+ + + {BtnimportData} +
+ ) : ( + "" + )} +
+ ); +}; + +// 主表表单左侧切换按钮 +const LeftTabComponent = props => { + const { + bShowSlaveTop, + masterConfig, + slaveTopConfig, + currentTopValue = "master" + } = props; + if (!bShowSlaveTop) { + return ""; + } + + const options = [ + { + label: masterConfig.showName, + value: "master" + }, + { + label: slaveTopConfig.showName, + value: "slaveTop" + } + ]; + const onChange = ({ target: { value } }) => { + props.onSaveState({ currentTopValue: value }); + }; + return ( +
+ +
+ ); +}; + +// 主表表单内容 +const CommonViewComponent = props => { + let { slaveTopData = [], masterData = {} } = props; + const { + dataRelationJson, + currentTopValue, + // bShowSlaveTop, + slaveTopConfig = {} + } = props; + const [expended, setExpanded] = useState(false); + const commonViewHeight = useRef(0); + + useEffect( + () => { + props.onSaveState({ currentExpanded: expended }); + }, + [expended] + ); + + const style = { + position: "relative" + }; + if (!expended) { + style.maxHeight = 97; + style.overflow = "hidden"; + } + + if (slaveTopConfig.sSqlStr === "noQuery" && dataRelationJson.slaveTop) { + slaveTopData = props[`${dataRelationJson.slaveTop}Data`]; + } + + const { sBusinessType } = masterData; + + /* 树形展示 */ + const bTree = + slaveTopConfig && + slaveTopConfig.sTableType === "single" && + commonUtils.isNotEmptyArr(slaveTopData) && ( + slaveTopData.findIndex(item => commonUtils.isNotEmptyObject(item.sFatherSlaveId)) > -1 || + slaveTopData.length > 1 + ); + // useEffect( + // () => { + // if (bTree) { + // setExpanded(true); + // } + // }, + // [bTree] + // ); + + return ( +
+
{ + _this.commonViewRef = ref; + if (ref && currentTopValue !== "slaveTop") { + const { height } = ref.getBoundingClientRect(); + if (height) { + commonViewHeight.current = height; + } + } + }} + style={style} + > + {bTree ? ( + + ) : ( + + )} +
+ { + setExpanded(!expended); + }} + /> +
+
+
+ ); +}; + +// 与主表表单切换的从表 +const SlaveTopTableComponent = props => { + const { commonViewHeight, slaveTopConfig, sModelsId } = props; + + const tableProps = { + ...commonBusiness.getTableTypes("slaveTop", props), + ...props.onGetTableTypesNew("slaveTop"), + tableProps: { + setNoCommonOperate: true + }, + onSelectRowChange: (tableName, selectedRowKeys) => { + props.onSelectRowChange(tableName, selectedRowKeys); + + props.onSaveState({ + // slave0Child1SelectedRowKeys: [], + currentSelectedSlaveData: props[`${tableName}Data`].find( + item => item.sId === selectedRowKeys[0] + ) + }); + }, + fixedHeight: 120, + noVlistTable: true + }; + + /* 树形展示 */ + const bTree = + slaveTopConfig && + slaveTopConfig.sTableType === "single" && + commonUtils.isNotEmptyArr(tableProps.data) && + tableProps.data.findIndex(item => + commonUtils.isNotEmptyObject(item.sFatherSlaveId) + ) > -1; + + if (bTree) { + tableProps.data = commonUtils.genTreeByArr( + tableProps.data, + "sId", + "sFatherSlaveId" + ); + } + + return ( +
+ +
+ ); +}; + +// 状态图标 +const AvatarComponent = props => { + const checkPerson = props.imgPersonSrc + ? commonUtils.isNotEmptyObject(props.masterData) + ? props.masterData.sCheckPerson + : "" + : ""; + const sInfo = props.imgPersonSrc ? "已审核" : ""; + return ( +
+
+ +
+ {checkPerson} + {sInfo} +
+
+
+ ); +}; + +// 第一层tab内容 +const TabsLv1Component = props => { + const { masterConfig = {}, masterData = {} } = props; + const { gdsconfigformslave = [] } = masterConfig; + const [showTabList, setShowTabList] = useState([]); + const sBusinessTypeConfig = gdsconfigformslave.find( + item => item.bVisible && item.sName === "sBusinessType" + ); + let sButtonEnabled = "[]"; + if (sBusinessTypeConfig) { + sButtonEnabled = sBusinessTypeConfig.sButtonEnabled; + } + useEffect( + () => { + const rules = commonUtils.convertStrToObj(sButtonEnabled, []); + let iIndex = -1; + try { + iIndex = rules.findIndex( + item => + item.condition[0].bFilterName === "sBusinessType" && + item.condition[0].bFilterValue === masterData.sBusinessType + ); + } catch (error) {} + if (iIndex !== -1) { + const { showColumn } = rules[iIndex]; + setShowTabList(showColumn); + } else { + setShowTabList([]); + } + }, + [masterData.sBusinessType] + ); + + const tabsRef = useRef(null); + + useEffect( + () => { + if (tabsRef.current) { + const oList = tabsRef.current.querySelector(".ant-tabs-nav-list"); + if (oList) { + const oLastTab = oList.querySelectorAll(".ant-tabs-tab"); + const bHasActive = oList.querySelector(".ant-tabs-tab-active"); + if (oLastTab && oLastTab.length && !bHasActive) { + const nodeKey = oLastTab[oLastTab.length - 1].getAttribute( + "data-node-key" + ); + if (nodeKey) { + props.onSaveCurrentTab(nodeKey); + } + } + } + } + }, + [showTabList] + ); + + return ( +
+ + {getMasterCommonViewTabComponent(props, showTabList)} + {getSlaveTabCompnent(props, showTabList)} + +
+ ); +}; + +// 主表commonViewTab页签 +const getMasterCommonViewTabComponent = (props, showTabList) => { + const { masterConfig } = props; + if (commonUtils.isEmptyObject(masterConfig)) { + return ""; + } + + /* 取 masterConfig中有多少个Tab页签配置 */ + const masterShowConfig = masterConfig.gdsconfigformslave.filter( + item => item.bVisible && item.sName !== "" + ); + /* 有Tab的配置 */ + const diliverConfigTypeArr = []; + masterShowConfig.forEach(child => { + if (child.sControlName.indexOf("_") > -1) { + const tableType = child.sControlName.split("_")[1]; + const isIndex = diliverConfigTypeArr.findIndex( + item => item === tableType + ); + if (isIndex === -1) { + diliverConfigTypeArr.push(tableType); + } + } + }); + + if (!diliverConfigTypeArr.length) { + return ""; + } + + const oTabPane = diliverConfigTypeArr.map(item => { + let num = item.replace(/[^\d]/g, "").trim(); + const tabName = item.replace(/\d+/g, ""); + if (showTabList.length && !showTabList.includes(tabName)) { + return ""; + } + + return ( + +
+ +
+
+ ); + }); + + return oTabPane; +}; + +const getiOrder = (config, type, defaultValue) => { + let slaveOrder = defaultValue; + const iIndex = config.gdsconfigformslave.findIndex( + item => item.sControlName === type && item.bVisible + ); + if (iIndex !== -1) { + slaveOrder = config.gdsconfigformslave[iIndex].sDefault; + } + return slaveOrder; +}; + +// 非主表tab页签 +const getSlaveTabCompnent = (props, showTabList) => { + const { addStateMap } = props; + return new Array(_this.maxTableNum).fill("").map((_, index) => { + const slaveIndex = index === 0 ? "" : index - 1; + + // 是否有配置文件 + const bShow = + props[`onlySlave${slaveIndex}`] || props[`onlyslave${slaveIndex}`]; + if (!bShow) { + return ""; + } + + const { [`slave${slaveIndex}Config`]: config = {}, slaveData, slaveSelectedRowKeys } = props; + const { showName: tabInfo } = config; + + if (showTabList.length && !showTabList.includes(tabInfo)) { + return ""; + } + + const { gdsconfigformslave } = config; + const tableName = `slave${slaveIndex}`; + + if (config.showName.includes('_hide')) { + return ""; + } + + // 是否有子从表(是 -> 展示二级tab) + let bHasChildSlave = false; + if ( + commonUtils.isNotEmptyObject(addStateMap) && + commonUtils.isNotEmptyObject(config) + ) { + // 从表的sChildTableName是否包含子从表sGrd + const iKey = Object.keys(addStateMap).some( + key => + config.sChildTableName && + config.sChildTableName.split(",").includes(addStateMap[key].sGrd) + ); + if (iKey) { + bHasChildSlave = true; + // slaveIndex = iKey.split("slave")[1].split("Child")[0]; + } + } + + if (tableName === 'slave1') { + const iConfigIndex = gdsconfigformslave.findIndex(item => item.sName === 'dConsumeQty'); + if (iConfigIndex > -1 && commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && commonUtils.isNotEmptyArr(slaveData)) { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + gdsconfigformslave[iConfigIndex].bReadonly = slaveData[iSlaveIndex].sFatherSlaveId === ''; + } + } + + // 从表表格宽度 + let salveIColValue = 24; + const iIndex = gdsconfigformslave.findIndex( + item => + item.sControlName === "bShowAllTable" || + item.sControlName === "bShowSlaveTable" + ); + if (iIndex !== -1 && !gdsconfigformslave[iIndex].bVisible) { + salveIColValue = 0; + } else { + const iShowLeftIndex = gdsconfigformslave.findIndex( + item => item.sControlName === "bShowLeft" && item.bVisible + ); + if (iShowLeftIndex !== -1) { + salveIColValue = gdsconfigformslave[iShowLeftIndex].iColValue; + } + + // 是否有表格字段 + const bShowTable = gdsconfigformslave.some( + item => + item.sName !== "" && + item.bVisible && + item.sControlName.indexOf("Btn") === -1 + ); + + if (!bShowTable) { + salveIColValue = 0; + } + } + + // 获取各部分顺序 + const slaveOrder = getiOrder(config, "slaveOrder", 0); + const viewTableOrder = getiOrder(config, "viewTableOrder", 10); + const slaveChildOrder = getiOrder(config, "slaveChildOrder", 20); + + const porpsNew = { + ...props, + tableName, + bHasChildSlave, + slaveOrder, + viewTableOrder, + slaveChildOrder, + salveIColValue + }; + + return ( + +
+ + + + + +
+
+ ); + }); +}; + +/** + * 从表组件 + * sControlName:bShowLeft,bVisible,取iColValue作宽度 + * iColValue为0时不显示,默认为24 + */ +const SlaveTableComponent = props => { + const { + tableName, + sModelsType, + slaveOrder, + salveIColValue, + bHasChildSlave, + bAutoHeight, + AutoTableHeight, + slaveData, + } = props; + const { + [`${tableName}Config`]: config, + [`${tableName}Data`]: data, + [`${tableName}Pagination`]: sPagination, + sModelsId, + } = props; + + if (!salveIColValue) { + // 是否有表单组件 + const bHasViewConfigs = config.gdsconfigformslave.some( + item => + item.sName !== "" && + item.bControl && + item.sControlName.indexOf("Btn") === -1 && + item.sControlName.indexOf("_") === -1 + ); + return bHasViewConfigs ?
: ""; + } + + // 表格是否分页 + const bPagination = commonUtils.isNotEmptyObject(config) + ? config.bPagination + : false; + + let pagination = false; + if (bPagination) { + // 分页 + let pageSize = commonConfig.pageSize; + const pageSizeTemp = props[`${tableName}PageSize`]; + if (commonUtils.isNotEmptyNumber(pageSizeTemp) && pageSizeTemp !== 0) { + pageSize = pageSizeTemp; + } + + const isSmall = false; + pagination = { + pageSize, + total: commonUtils.isEmptyArr(data) ? 0 : data.length, + current: commonUtils.isEmptyObject(sPagination) ? 1 : sPagination.current, + ...sPagination, + hideOnSinglePage: false, + size: isSmall ? "small" : "large", + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall + }; + } + + // 是否展示操作按钮 + let bShowOperate = true; + if (commonUtils.isNotEmptyObject(config)) { + const condition1 = config.sTbName === "sysbillcheckresult"; + const condition2 = config.gdsconfigformslave.some( + item => + item.sControlName && item.sControlName.includes("setNoCommonOperate") + ); + if (condition1 || condition2) { + bShowOperate = false; + } + } + + const listType = "commonMultiList"; + const setOpterationColumn = + sModelsType !== "cost/cosexpenseshare" && + sModelsType !== listType && + bShowOperate + ? "Y" + : ""; + + const baseProps = commonBusiness.getTableTypes(tableName, props); + + /* 过滤部件数据 */ + const dataFilter = (tableProps, type) => { + let oriData = commonUtils.isNotEmptyArr(tableProps.data) + ? tableProps.data + : []; + let config = commonUtils.isNotEmptyArr(tableProps.config) + ? tableProps.config + : []; + let res = []; + const bPassRateTable = + config.showName === "合格率评审"; /* 根据首选、备选过滤合格率评审数据 */ + if (type === "slave0Child1" && bPassRateTable) { + // const { currentProductTechnologyVer, currentProductCardId } = props; + // const controlFilterData = oriData + // .filter( + // item => + // item.sProductCardId === currentProductCardId && + // item.sProductTechnologyVer === currentProductTechnologyVer + // ) + // .reduce((result, item) => { + // const slaveSelectedRow = + // props.currentSelectedSlaveData || props.slaveData[0]; + // const sCombinedMemoArr = commonUtils.isJSON(item.sCombinedMemo) + // ? JSON.parse(item.sCombinedMemo) + // : []; + // + // const getSlaveSelectedRowChildren = (allData, sId) => { + // let result = []; + // allData.forEach(item => { + // if (item.sFatherSlaveId === sId) { + // result.push(item); + // result = [ + // ...result, + // ...getSlaveSelectedRowChildren(allData, item.sId) + // ]; + // } + // }); + // return result; + // }; + // const slaveSelectedRowChildren = getSlaveSelectedRowChildren( + // props.slaveData, + // slaveSelectedRow.sId + // ); + // const slaveRows = [slaveSelectedRow, ...slaveSelectedRowChildren]; + // const len = sCombinedMemoArr.filter( + // item => + // item.sProductNo && + // slaveRows.some( + // slaveRow => slaveRow.sProductNo === item.sProductNo + // ) + // ).length; + // if (len) { + // result.push(item); + // } + // return result; + // }, []); + // + // res = controlFilterData; + // _this.controlFilterData = controlFilterData; + res = _this.controlFilterData; + } else if ( + (type === "materials" && (config.showName === "工序物料" || config.showName === "全部材料" )) || + (type === "slave0" && config.showName === "工艺评审") + ) { + /* 根据部件选中行 过滤材料、工序 */ + const { + currentProductTechnologyVer, + currentProductCardId, + slave0Child1SelectedRowKeys + } = props; + + const slave0Child1Data = + _this.controlFilterData || props.slave0Child1Data; + + const iSIndex = commonUtils.isNotEmptyArr(slave0Child1Data) + ? slave0Child1Data.findIndex(item => + slave0Child1SelectedRowKeys.includes(item.sId) + ) + : -1; + let slaveRow = {}; + if (iSIndex > -1) { + slaveRow = slave0Child1Data[iSIndex]; + } else if (commonUtils.isNotEmptyArr(slave0Child1Data)) { + const controlFilterData = slave0Child1Data.filter( + item => + item.sProductCardId === currentProductCardId && + item.sProductTechnologyVer === currentProductTechnologyVer + ); + if ( + commonUtils.isNotEmptyArr(controlFilterData) && + controlFilterData.length === 1 + ) { + slaveRow = controlFilterData[0]; + } + } + let filterData = []; + if (commonUtils.isNotEmptyObject(slaveRow)) { + filterData = oriData.filter(item => item.sControlId === slaveRow.sId); + } + res = filterData; + } else if(type ==='slave4' && config.showName === '物料采购时间'){ + if(commonUtils.isNotEmptyArr(props.slave0Child1SelectedRowKeys)) { + res = oriData.filter(item => item.sOrderControlId === props.slave0Child1SelectedRowKeys[0] && (item.sNons !== "非标")); + } else { + res = oriData; + } + } else { + res = oriData; + } + return res; + }; + + let bForbiddenDrag = true; /* 禁止拖动 */ + if (baseProps.name === 'slave0' && config.showName === '工艺评审') { + if(sModelsId === '12710101117054908553170' || sModelsId ==='12710101117183304335380') { + bForbiddenDrag = false; + } + baseProps.tableId = props.processTableId; + baseProps.onDrag = props.onDrag; + baseProps.dragHandle = true; + baseProps.noVlistTable = true; + baseProps.bForbiddenDrag = bForbiddenDrag; /* 是否可以拖动 */ + } + + // 表格属性 + const tableProps = { + ...baseProps, + ...props.onGetTableTypesNew(tableName), + onSelectRowChange: props.onSelectRowChange, + setOpterationColumn, + fixedHeight: !bAutoHeight + ? props.onGetHeight( + baseProps.headerColumn.some(item => item.title.includes("-")) + ? 110 + : 80, + bHasChildSlave && salveIColValue === 24 + ) + : null, + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + pagination, + onChange: props.onTitleChange.bind(this, tableName), + AutoTableHeight + }, + data: dataFilter(baseProps, tableName) + }; + + if(config.showName === '合格率评审'){ + tableProps.tableProps.onRow =(record => { + return { + onClick: () => { props.onRowClick(tableName, record); }, + // onMouseEnter: () => { props.onRowMouseEnter('slaveInfo', record); }, + }; + }) + tableProps.tableProps.setProcess = true; + + let chooseProcessConfigRow; + /* 获取toolbar 选择工序 */ + if (commonUtils.isNotEmptyObject(config)) { + const onChooseProcessIndex = config.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + if (onChooseProcessIndex > -1) { + chooseProcessConfigRow = config.gdsconfigformslave[onChooseProcessIndex]; + } + } + tableProps.tableProps.chooseProcessConfigRow = chooseProcessConfigRow; + + if(commonUtils.isNotEmptyArr(slaveData)) { + if(commonUtils.isEmptyObject(slaveData[0].sMainProductTechnologyId) && commonUtils.isEmptyObject(slaveData[0].sSpareProductTechnologyId) ) { + tableProps.bLimitOperate = true; + } + } + } + if (baseProps.name === 'slave0' && config.showName === '工艺评审') { + tableProps.fixedHeight = props.materialsPackup ? 'calc(38vh + 60px)' : 'calc(16vh)'; + } + + /* 树形展示 */ + const bTree = + config.sTableType === "single" && + commonUtils.isNotEmptyArr(tableProps.data) && + tableProps.data.some(rowData => + commonUtils.isNotEmptyObject(rowData.sFatherSlaveId) + ); + + if (bTree) { + tableProps.data = commonUtils.genTreeByArr( + tableProps.data, + "sId", + "sFatherSlaveId" + ); + } + + const { name } = tableProps; + const tableInfoName = `${name}Info`; + const bGxwl = tableProps.config.showName === "工序物料" || tableProps.config.showName === "全部材料"; + if (!bGxwl && commonUtils.isNotEmptyObject(props[`${tableInfoName}Config`])) { + const tableInfoProps = { + ...commonBusiness.getTableTypes(tableInfoName, props), + tableProps: { + rowKey: "sId", + pagination: false, + rowSelection: null + // onChange: props.onTitleChange.bind(this, "slaveInfo") + } + }; + tableProps.setExpandedRowRender = "Y"; + tableProps.slaveInfo = tableInfoProps; + tableProps.onTableFilterData = props.onTableFilterData; + } + + // 多表树形展示 + useEffect(async () => { + const { config, name } = tableProps; + const { sTableType, sGrd } = config; + if (sTableType === "multiple") { + const { formData, currentId } = props; + const sId = currentId !== undefined ? currentId : ""; + const tableInfoConfig = formData.find( + item => item.sGrd === `${sGrd}_child` + ); + if (tableInfoConfig) { + let addState = {}; + if (tableInfoConfig.sSqlStr !== "noQuery") { + const conditonValues = props.onGetSqlConditionValues(tableInfoConfig); + addState = + (await props.handleGetDataSet({ + name: `${name}Info`, + configData: tableInfoConfig, + condition: { + sSqlCondition: { ...conditonValues, sParentId: sId } + }, + isWait: true + })) || {}; + } + addState[`${name}InfoConfig`] = tableInfoConfig; + addState[`${name}InfoColumn`] = commonFunc.getHeaderConfig( + tableInfoConfig + ); + addState[`${name}InfoPageSize`] = + commonUtils.isNotEmptyNumber(tableInfoConfig.iPageSize) && + tableInfoConfig.iPageSize !== 0 + ? tableInfoConfig.iPageSize + : commonConfig.pageSize; + + props.onSaveState(addState); + } + } + }, []); + + return ( +
+ + + ); +}; + +/** + * 从表form表单 + * sControlName:bShowRight,bVisible,取iColValue作宽度 + * 没有配置iColValue,没有配置表格字段,iColValue宽度为24 + * iColValue为0时不显示,默认为0 + */ +const CommonViewTableComponent = props => { + const { tableName, viewTableOrder, viewConfigsCostom, formData } = props; + const { name: tableNameNew = tableName } = props.onGetTableTypesNew( + tableName + ); + let { + [`${tableName}Config`]: config = {}, + [`${tableName}SelectedRowKeys`]: selectedRowKeys = [] + } = props; + + + let { [`${tableNameNew}Data`]: data } = props; + // 从表表格变化时重新取selectedRowKeys 暂时不知道什么原因是slave1. + if (tableNameNew === 'slave' || tableNameNew === 'slave5') { + selectedRowKeys = props[`${tableNameNew}SelectedRowKeys`] ? props[`${tableNameNew}SelectedRowKeys`] : []; + } + + if(tableNameNew === 'slave0Child1') { + selectedRowKeys = props[`${tableNameNew}SelectedRowKeys`] ? props[`${tableNameNew}SelectedRowKeys`] : []; + } + + if ((tableName === "slave0Child1" || tableName ==='slave2Child1' || tableName ==='slave0Child4') && _this.controlFilterData) { + data = _this.controlFilterData; + } + + let { gdsconfigformslave = [] } = config; + + // 判断是否工序参数展示 + const bShowProcessParam = gdsconfigformslave.some( + item => item.sControlName === "sProcessParamType" + ); + if (bShowProcessParam) { + return ""; + } + + // 展示右侧 + const iShowRightIndex = gdsconfigformslave.findIndex( + item => item.sControlName === "bShowRight" && item.bVisible + ); + + // 设置宽度 + let iColValue = 0; + if (iShowRightIndex !== -1) { + iColValue = gdsconfigformslave[iShowRightIndex].iColValue; + } + + // 是否有表格字段 + const bShowTable = + gdsconfigformslave.some( + item => + item.sName !== "" && + item.bVisible && + item.sControlName.indexOf("Btn") === -1 + ) && + !gdsconfigformslave.some( + item => item.sControlName.indexOf("hideAllFields") !== -1 + ); + + // 如果是孙表格 + if (tableName.split("Child").length >= 3) { + iColValue = 24; + } + + if (!iColValue) { + if (!bShowTable) { + iColValue = 24; + } else { + return ""; + } + } + + const { currentPane = {} } = props.app; + const { title = "" } = currentPane; + + const getGdsconfigformslaveNew = (gdsconfigformslaveOld, bOldOrderValue) => { + const { slaveData, slaveSelectedRowKeys }= props; + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? + slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)) : 0: -1; + const slaveRow = iIndex > -1 ? slaveData[iIndex] : {}; + const bHideCondition = bOldOrderValue + ? slaveRow?.bOldOrder + : props.slaveData?.some(item => !item.bOldOrder); + if (bHideCondition) { + const gdsconfigformslaveNew = JSON.parse(JSON.stringify(gdsconfigformslaveOld)) + const dPlanAdd = gdsconfigformslaveNew.find(item => item.sName === "dPlanAdd" || item.sControlName === "dPlanAdd"); + const dSpecialAdd = gdsconfigformslaveNew.find(item => item.sName === "dSpecialAdd" || item.sControlName === "dSpecialAdd"); + if (dPlanAdd) { + dPlanAdd.bReadonly = true; + } + if (dSpecialAdd) { + dSpecialAdd.bReadonly = true; + } + return gdsconfigformslaveNew; + } + return gdsconfigformslaveOld; + } + + // 订单工艺评审合格率, 如果从表bOldOrder为true,则dPlanAdd、dSpecialAdd字段只读 + if (title.indexOf("订单工艺评审") !== -1 || title.indexOf("补单工艺评审") !== -1) { + if (tableName === 'slave0Child1' || tableName === 'slave2Child1') { + gdsconfigformslave = getGdsconfigformslaveNew(gdsconfigformslave, true); + } + } + + // 订单生管评审合格率, 如果从表bOldOrder为FALSE,则dPlanAdd、dSpecialAdd字段只读 + if (title.indexOf("订单生管评审") !== -1 || title.indexOf("补单生管评审") !== -1) { + if (tableName === 'slave0Child1' || tableName === 'slave2Child1') { + gdsconfigformslave = getGdsconfigformslaveNew(gdsconfigformslave, false); + } + } + + + // 表单字段 + const viewConfigs = + viewConfigsCostom || + gdsconfigformslave.filter( + item => + (item.sName !== "" && + item.bControl && + item.sControlName.indexOf("Btn") === -1 && + item.sControlName.indexOf("_") === -1) || + (item.sControlName && item.sControlName.indexOf("DividerArea") !== -1) + ); + + // 数据为选中行数据 + const [viewRow, setViewRow] = useState({}); + useEffect( + () => { + if ( + commonUtils.isNotEmptyArr(selectedRowKeys) && + commonUtils.isNotEmptyArr(data) + ) { + const iIndex = data.findIndex(item => + selectedRowKeys.includes(item.sId) + ); + + if (iIndex > -1) { + setViewRow(data[iIndex]); + } else { + setViewRow(data[0]); + } + } else if (commonUtils.isNotEmptyArr(data)) { + setViewRow(data[0]); + } else { + setViewRow({}); + } + }, + [selectedRowKeys[0], JSON.stringify(data)] + ); + + // 上批下批不同标红 + const [viewConfigsNew, setViewConfigsNew] = useState([]); + const { sChildTableName } = config; + const childConfig = + formData.find( + item => + item.sGrd === sChildTableName && + (item.showName.includes("对比") || item.showName.includes("上批")) + ) || {}; + const childName = `${tableName}Child0`; + const childData = props[`${childName}Data`] || []; + const { gdsconfigformslave: childGdsconfigformslave = [] } = childConfig; + useEffect( + () => { + const childViewRow = childData[0] || {}; + const configFilter = gdsconfigformslave.filter( + item => item.bControl && item.sName + ); + const childConfigFilter = childGdsconfigformslave.filter( + item => item.bControl && item.sName + ); + if ( + commonUtils.isNotEmptyArr(configFilter) && + commonUtils.isNotEmptyArr(childConfigFilter) && + commonUtils.isNotEmptyObject({ ...viewRow, ...childViewRow }) + ) { + const tempViewConfigs = JSON.parse(JSON.stringify(viewConfigs)); + configFilter.forEach(item => { + const { sName } = item; + const iChildIndex = childConfigFilter.findIndex( + item => item.sName === `${sName}Up` + ); + if (iChildIndex !== -1) { + const value = viewRow[`${sName}Up`]; + const childValue = viewRow[sName]; + const iIndex = tempViewConfigs.findIndex( + item => item.sName === sName + ); + + const bDiff = value !== undefined && value !== childValue; + tempViewConfigs[iIndex].costomStyle = bDiff + ? styles.costomTabBillDiff + : ""; + } + }); + + setViewConfigsNew(tempViewConfigs); + } + }, + [JSON.stringify(data), JSON.stringify(childData), viewRow] + ); + + + const [viewProps, setViewProps] = useState({}); + useEffect( + () => { + const viewConfigsBase = commonUtils.isNotEmptyArr(viewConfigsNew) ? viewConfigsNew : viewConfigs; + if (['12710101117055480463460'].includes(props?.sModelsId)) { + const index = viewConfigsBase?.findIndex( i => i && i.sName === 'tEstimateCompletDate'); + if (index >= 0) { + if (!props.enabled) { + viewConfigsBase[index].buttonbReadonly = true; + } else { + viewConfigsBase[index].buttonbReadonly = false; + } + } + } + setViewProps({ + ...props, + viewConfigs: viewConfigsBase, + tableConfig: config, + iColValueView: iColValue, + viewRow, + tableName: tableNameNew, + slaveName: tableName, + viewOrder: viewTableOrder + }); + }, + [ + viewConfigsNew, + JSON.stringify(viewConfigs), + viewRow, + props.enabled, + props.showTableName, + props.masterData, + ] + ); + + return ; +}; + +// 获取从表form表单(额外) +const getCommonViewTableComponentExtra = props => { + const { tableName, viewTableOrder = 5 } = props; + const { [`${tableName}Config`]: config = {} } = props; + + const { gdsconfigformslave = [] } = config; + const viewConfigs = gdsconfigformslave.filter( + item => + item.sName !== "" && + item.bControl && + item.sControlName.indexOf("Btn") === -1 && + item.sControlName.indexOf("_") !== -1 + ); + if (viewConfigs.length === 0) { + return ""; + } + + const viewJson = viewConfigs.reduce((result, item) => { + const group = item.sControlName.split("_"); + const tabInfo = group[1].replace(/\d+/g, ""); + let num = group[1].replace(/[^\d]/g, "").trim(); + num = num === "" ? 1 : num; + if (!result[tabInfo]) { + result[tabInfo] = { + num, + viewConfigs: [] + }; + } + result[tabInfo].viewConfigs.push(item); + return result; + }, {}); + + return Object.keys(viewJson).map(tabInfo => { + const { num, viewConfigs } = viewJson[tabInfo]; + + return ( + + + + ); + }); +}; + +// 获取从表form表单(额外) +const getCommonViewTableComponentCombine = props => { + const { tableName, viewTableOrder = 5 } = props; + const { [`${tableName}Config`]: config = {} } = props; + + const { gdsconfigformslave = [] } = config; + const viewConfigs = gdsconfigformslave.filter( + item => + item.sName === 'dCombinedQty' + ); + if(commonUtils.isNotEmptyArr(viewConfigs)) { + viewConfigs[0].bControl = false; + } + if (viewConfigs.length === 0) { + return ""; + } + + return ( + + ); +}; + +/** + * 子从表格组件 + */ +const SlaveChildTableComponent = props => { + const { + sModelsType, + addStateMap, + tableName, + bHasChildSlave, + slaveChildOrder, + salveIColValue, + [`${tableName}Config`]: slaveConfig, + masterData, + masterConfig = [], + currentProductCardId + } = props; + + if (!bHasChildSlave) { + return ""; + } + + // 是否工艺评审(特殊处理) + const bGyps = + slaveConfig.showName && slaveConfig.showName.includes("工艺评审"); + // 是否生管评审(特殊处理) + const bSgps = false; + // slaveConfig.showName && slaveConfig.showName.includes("生管评审"); + // 是否物资评审(特殊处理) + const bWzps = + slaveConfig.showName && slaveConfig.showName.includes("物资评审"); + // 是否品管评审(特殊处理) + const bPgps = + slaveConfig.showName && slaveConfig.showName.includes("品管评审"); + + // 是否有表单字段 + const bHasViewConfigs = slaveConfig.gdsconfigformslave.some( + item => + item.sName !== "" && + item.bControl && + item.sControlName.indexOf("Btn") === -1 + ); + + const slaveChildNameArr = Object.keys(addStateMap) + .filter( + key => + slaveConfig.sChildTableName + .split(",") + .includes(addStateMap[key].sGrd) && + addStateMap[key].sGrd.indexOf("_wz") === -1 + ) + .map(key => key.split("Config")[0]); + + /* 过滤非标材料数据 */ + const dataFilterTable = (tableProps, type) => { + let oriData = commonUtils.isNotEmptyArr(tableProps.data) + ? tableProps.data + : []; + let config = commonUtils.isNotEmptyArr(tableProps.config) + ? tableProps.config + : []; + let res = []; + const bNoPassMaterials = + config.showName === "非标材料"; /* 根据首选、备选过滤合格率评审数据 */ + + const bMaterialsInfo = + config.showName === "物料信息"; /* 根据首选、备选过滤合格率评审数据 */ + + if (type === "slave0Child2" && bNoPassMaterials) { + /* 根据部件选中行 过滤材料、工序 */ + const { + slaveData, slaveSelectedRowKeys, + currentProductTechnologyVer, + currentProductCardId, + slave0Child1Data, + slave0Child1SelectedRowKeys, + currentSelectedSlaveData, + materialsData + } = props; + + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? + slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)) : 0: -1; + const slaveRow = iIndex > -1 ? slaveData[iIndex] : {}; + const iControlIndex = commonUtils.isNotEmptyArr(slave0Child1Data) ? + slave0Child1Data.findIndex( + controlItem => { + const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === slaveRow?.sProductNo); + return controlItem.sProductCardId === currentProductCardId && + commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + }) : -1; + const controlFilterData = iControlIndex > -1 ? [slave0Child1Data[iControlIndex]] : []; + const filterData = commonUtils.isNotEmptyArr(materialsData) && commonUtils.isNotEmptyArr(controlFilterData) + ? materialsData.filter( + item => + item.sControlId === controlFilterData[0].sId && + (item.sNons === "非标") + // (item.sNons === "非标" || item.sZmldlt === "版材") + ) + : []; + res = filterData; + }else if(type === 'slave0Child3') { /* 改版处 */ + const { currentProductCardId, slaveSelectedRowKeys } = props; + if(commonUtils.isNotEmptyArr(oriData)) { + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + res = oriData.filter(item => item.sProductCardId === currentProductCardId && item.sSlaveId === slaveSelectedRowKeys[0]) + } else { + res = oriData.filter(item => item.sProductCardId === currentProductCardId) + } + } + } else if (type === "slave1Child0") { + const { slave1Child0Data, slaveSelectedRowKeys } = props; + // 拆分工单后过滤订单从表数据 + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const filterData = commonUtils.isNotEmptyArr(slave1Child0Data) + ? slave1Child0Data.filter(item => item.sOrderSplitSlaveId === slaveSelectedRowKeys[0]) + : []; + res = filterData; + } else { + res = oriData; + } + + } else if(type === 'slave3Child0' && bMaterialsInfo){ /* 物料信息 过滤逻辑 */ + /* 默认过滤条件 + sInkBOMsMaterialsId 空或null + bMainMaterials 等于 1 + sParentMaterialsId 空或null + 切换查看二级: + sInkBOMsMaterialsId 不等于空 + bMainMaterials 等于 1 + sParentMaterialsId 空或null */ + const { materialsData, bSecondMainMaterials } = props; + if(commonUtils.isNotEmptyArr(materialsData)) { + let materialsFilterData = materialsData; + if(commonUtils.isNotEmptyArr(_this.controlFilterData)) { + materialsFilterData = materialsData.filter(item => item.sControlId === _this.controlFilterData[0].sId && (item.sNons !== "非标")); + } + if(bSecondMainMaterials) { /* 切换查看二级: */ + res = materialsFilterData.filter(item => commonUtils.isEmptyObject(item.sParentMaterialsId) + && item.sMaterialStructure === '2' + && item.bMainMaterials && (item.sNons !== "非标") + ) + } else { /* 默认过滤 */ + res = materialsFilterData.filter(item => commonUtils.isEmptyObject(item.sParentMaterialsId) + && item.sMaterialStructure === '1' + && item.bMainMaterials && (item.sNons !== "非标") + ) + } + + } + } else if((type === "slave2Child0" || type ==='slave6Child1') && config.showName === "工单交期"){ /* 根据从表选中行与工单交期sOrderSlaveId关系过滤工单交期数据 */ + const slaveSelectedRow = commonUtils.isNotEmptyArr(props.slaveData) ? props.currentSelectedSlaveData || props.slaveData[0]:{}; + if(commonUtils.isNotEmptyObject(slaveSelectedRow)) { + const filterData = oriData.filter(item => item.sOrderSlaveId === slaveSelectedRow.sId && (item.sNons !== "非标")); + if(commonUtils.isNotEmptyArr(filterData)) { + res = filterData; + } + } + + }else if(type === "slave6Child0" && config.showName === "物料到货时间变化记录"){ /* 物料到货时间变化记录 */ + if(commonUtils.isNotEmptyArr(props.slave0Child1SelectedRowKeys)) { + res = oriData.filter(item => item.sOrderControlId === props.slave0Child1SelectedRowKeys[0] && (item.sNons !== "非标")); + } else { + res = oriData; + } + }else if(type === "slave5Child5"){ /* 车间产前提醒 */ + const slaveSelectedRow = commonUtils.isNotEmptyArr(props.slaveData) ? props.currentSelectedSlaveData || props.slaveData[0]:{}; + if(commonUtils.isNotEmptyObject(slaveSelectedRow)) { + res = oriData.filter(item => item.sSlaveId === slaveSelectedRow.sId); + } else { + res = oriData; + } + } else { + res = oriData; + } + return res; + }; + + const tablePropsList = []; + slaveChildNameArr.forEach(slaveChildName => { + // 是否展示操作按钮 + let bShowOperate = true; + const config = props[`${slaveChildName}Config`]; + if (commonUtils.isNotEmptyObject(config)) { + const condition1 = config.sTbName === "sysbillcheckresult"; + const condition2 = config.gdsconfigformslave.some( + item => + item.sControlName && item.sControlName.includes("setNoCommonOperate") + ); + if (condition1 || condition2) { + bShowOperate = false; + } + } + + const listType = "commonMultiList"; + const setOpterationColumn = + sModelsType !== "cost/cosexpenseshare" && + sModelsType !== listType && + bShowOperate + ? "Y" + : ""; + const item = { + ...commonBusiness.getTableTypes(`${slaveChildName}`, props), + ...props.onGetTableTypesNew(`${slaveChildName}`), + // tableBelone: 'list', + setOpterationColumn, + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + AutoTableHeight: bHasViewConfigs ? window.innerHeight - 500 : null + }, + data: dataFilterTable( + commonBusiness.getTableTypes(`${slaveChildName}`, props), + slaveChildName + ) + }; + + const hideAllFields = item.config.gdsconfigformslave.some( + item => item.sControlName.indexOf("hideAllFields") !== -1 + ); + if (hideAllFields) { + item.headerColumn = []; + } + + /* 树形展示 */ + const bTree = + config.sTableType === "single" && + commonUtils.isNotEmptyArr(item.data) && + item.data.some(rowData => + commonUtils.isNotEmptyObject(rowData.sFatherSlaveId) + ); + + if (bTree) { + item.data = commonUtils.genTreeByArr(item.data, "sId", "sFatherSlaveId"); + } + + item.sChildTableName = item.config.sChildTableName; + if (bHasViewConfigs) { + // 如果从表位置是表单展示 + item.fixedHeight = null; + } else if (item.sChildTableName) { + // 如果有孙从表 + item.fixedHeight = props.onGetHeight(80, true); + } + // else if (bGyps) { + // // 如果是工艺评审 + // item.fixedHeight = props.onGetHeight(120); + // } + else if (salveIColValue === 24) { + // 如果有从表,并且占了24格 + item.fixedHeight = props.onGetHeight(80, true); + } else { + item.fixedHeight = props.onGetHeight(80); + } + tablePropsList.push(item); + }); + + tablePropsList.forEach(tableProps => { + const { name } = tableProps; + const tableInfoName = `${name}Info`; + if (commonUtils.isNotEmptyObject(props[`${tableInfoName}Config`])) { + const tableInfoProps = { + ...commonBusiness.getTableTypes(tableInfoName, props), + tableProps: { + rowKey: "sId", + pagination: false, + bSlaveInfo: true + // rowSelection: null + // onChange: props.onTitleChange.bind(this, "slaveInfo") + } + }; + tableProps.setExpandedRowRender = "Y"; + tableProps.slaveInfo = tableInfoProps; + tableProps.onTableFilterData = props.onTableFilterData; + } + if(name === 'slave3Child0') { + tableProps.sourceAllData = props.materialsData; + tableProps.fixedHeight = props.wzPackup ? 500 : tableProps.fixedHeight; + } + }); + + + // 多表树形展示 + useEffect( + () => { + if (tablePropsList.length) { + tablePropsList.forEach(async (tableProps, index) => { + const { config, name } = tableProps; + const { sTableType, sGrd } = config; + if (sTableType === "multiple") { + const { formData, currentId } = props; + const sId = currentId !== undefined ? currentId : ""; + const tableInfoConfig = formData.find( + item => item.sGrd === `${sGrd}_child` + ); + if (tableInfoConfig) { + let addState = {}; + if (tableInfoConfig.sSqlStr !== "noQuery") { + const conditonValues = props.onGetSqlConditionValues( + tableInfoConfig + ); + addState = + (await props.handleGetDataSet({ + name: `${name}Info`, + configData: tableInfoConfig, + condition: { + sSqlCondition: { ...conditonValues, sParentId: sId } + }, + isWait: true + })) || {}; + } + if (name === 'slave3Child0') { + addState[`${name}Data`] = props.materialsData; + } + addState[`${name}InfoConfig`] = tableInfoConfig; + addState[`${name}InfoColumn`] = commonFunc.getHeaderConfig( + tableInfoConfig + ); + addState[`${name}InfoPageSize`] = + commonUtils.isNotEmptyNumber(tableInfoConfig.iPageSize) && + tableInfoConfig.iPageSize !== 0 + ? tableInfoConfig.iPageSize + : commonConfig.pageSize; + + // const replaceMaterials = + // "slave3Child0Child0Data"; /* 替换物料数据 */ + // const slaveInfoData = commonUtils.isNotEmptyObject(addState) + // ? addState[`${name}InfoData`] + // : []; + // const filterData = commonUtils.isNotEmptyArr(slaveInfoData) + // ? slaveInfoData.filter(item => + // commonUtils.isNotEmptyObject(item.sParentMaterialsId) + // ) + // : []; + // addState[replaceMaterials] = commonUtils.isNotEmptyArr(filterData) + // ? filterData + // : []; + props.onSaveState(addState); + } + } + }); + } + }, + [tablePropsList.length, props.bRefreshTime] + ); + + let iColValue = 24; + if (salveIColValue > 0 && salveIColValue < 24) { + iColValue = 24 - salveIColValue; + } + + const { gdsconfigformslave = [] } = masterConfig; + const [hideTabList, setHideTabList] = useState([]); + const sBusinessTypeConfig = gdsconfigformslave.find( + item => item.bVisible && item.sName === "sBusinessType" + ); + let sButtonEnabled = "[]"; + if (sBusinessTypeConfig) { + sButtonEnabled = sBusinessTypeConfig.sButtonEnabled; + } + + useEffect( + () => { + const rules = commonUtils.convertStrToObj(sButtonEnabled, []); + let iIndex = -1; + try { + iIndex = rules.findIndex( + item => + item.condition[0].bFilterName === "sBusinessType" && + item.condition[0].bFilterValue === masterData.sBusinessType + ); + } catch (error) {} + if (iIndex !== -1) { + const { hideColumn } = rules[iIndex]; + setHideTabList(hideColumn); + } else { + setHideTabList([]); + } + }, + [masterData.sBusinessType] + ); + + // TabPane排序 + const tabRef = useRef(null); + useEffect(() => { + if (tabRef.current) { + const oNavList = tabRef.current.querySelector(".ant-tabs-nav-list"); + if (oNavList) { + const tabs = Array.from(oNavList.children); + tabs.sort((a, b) => { + const keyA = a.getAttribute("data-node-key") || 999; + const keyB = b.getAttribute("data-node-key") || 999; + return keyA < keyB ? -1 : keyA > keyB ? 1 : 0; + }); + oNavList.innerHTML = ""; + tabs.forEach(tab => oNavList.appendChild(tab)); + } + } + }, []); + + return ( + + {/* {bGyps && ( + + + + + + + )} */} + + + + + + ) + } + : bWzps + ? { + left: ( +
+ {/* + + + + + + + + */} +
+ ) + } + : bGyps + ? { + left: ( +
+ {/* {currentProductCardId !== "preVersion" && ( + + )} + {currentProductCardId === "preVersion" && ( + + )} */} +
+ ) + } + : null + } + > + {tablePropsList.map((tableProps, index) => { + const tabInfo = tableProps.config.showName; + if ( + (hideTabList && + hideTabList.length && + hideTabList.includes(tabInfo)) || (tableProps.config.showName.includes('_hide')) + ) { + return ""; + } + /* 根据config 解析数据 */ + const arr = + tableProps.config && + tableProps.config.sGrd && + tableProps.config.sGrd.split("_"); /* slave5_1_1 */ + const firstTable = arr[0]; /* 第二层:物资评审 - 物料信息 */ + return ( + <> + + {tableProps.headerColumn.length !== 0 && ( + +
+ + + {bPgps && ( + + )} + + )} + + + {bWzps && ( +
+ { + props.onSaveState({wzPackup: !props.wzPackup}); + }} + /> +
+ )} + {!props.wzPackup && tableProps.sChildTableName && ( + <> + + + )} + {bPgps && + !tableProps.headerColumn.length && ( +
+ +
+ )} + + {getCommonViewTableComponentExtra({ + ...props, + tableName: slaveChildNameArr[index] + })} + + ); + })} + + + + +
+ + + + + ); +}; + +// 工序参数展示 +const CommonViewDragableComponent = props => { + const { tableName, currentProductTechnologyVer, currentProductCardId, slaveData, slaveSelectedRowKeys, slave0Child1Data:controlData } = props; + const { [`${tableName}Config`]: config } = props; + // 是否工艺卡 + const bGyk = + config.showName && + (config.showName.includes("工艺卡") || + config.showName.includes("印品工艺") || + config.showName.includes("BOM&BOP")); + + const bWl = config.showName && + (config.showName.includes("物料信息")); + if (bWl) { + const materialsInfoArr = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesordermaterials" && + (props[key].showName === "工序物料" || props[key].showName === "全部材料") + ); + useEffect(() => { + if (!materialsInfoArr.length) { + handleGetTableData(props, "materials"); + } + }, []); + } + if(commonUtils.isNotEmptyArr(controlData)) { + let sProductNo = ''; + let sBomId = ''; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && commonUtils.isNotEmptyArr(slaveData)) { + const iIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + sProductNo = iIndex >-1 ? slaveData[iIndex].sProductNo : ''; + sBomId = iIndex >-1 ? slaveData[iIndex].sBomId : ''; + } + const controlFilterData = controlData + .filter(controlItem => { + const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === sProductNo); + return controlItem.sProductCardId === sBomId && + // controlItem.sProductTechnologyVer === currentProductTechnologyVer && + commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + } + ); + _this.controlFilterData = controlFilterData; + } else { + _this.controlFilterData = []; + } + + if (!bGyk) { + return ""; + } + // 获取部件表格(印品基本资料) + let partsTableName; + const slaveNameArr = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesordercontrol" && + (props[key].showName === "印品基本资料" || + props[key].showName === "合格率评审") + ); + + if (slaveNameArr.length) { + partsTableName = slaveNameArr[0].split("Config")[0]; + } + + useEffect(() => { + if (!slaveNameArr.length) { + handleGetTableData(props, "control"); + } + }, []); + + // 获取工序表格(工艺评审) + let processTableName; + const slaveNameArr1 = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesorderprocess" && + props[key].showName === "工艺评审" + ); + + if (slaveNameArr1.length) { + processTableName = slaveNameArr1[0].split("Config")[0]; + } + const bProcessHeight = 'calc(16vh)'; + + // 获取材料表格(工序物料/全部材料) + let materialsTableName; + const slaveNameArr2 = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesordermaterials" && + (props[key].showName === "工序物料" || props[key].showName === "全部材料") + ); + + if (slaveNameArr2.length) { + materialsTableName = slaveNameArr2[0].split("Config")[0]; + } + + useEffect(() => { + if (!slaveNameArr2.length) { + handleGetTableData(props, "materials"); + } + }, []); + + const tabChange = (e) => { + props.onActiveKey(e); + }; + + const materialsFilterNew = (data, type) => { + const { materialsData:materials0Data, slave0SelectedRowKeys:processSelectedRowKeys, slave0Data:processData, + slave0Child1SelectedRowKeys:controlSelectedRowKeys, slave0Child1Data:controlData, currentProductTechnologyVer, + currentProductCardId, + } = props; + let oriData = materials0Data || []; // commonUtils.isNotEmptyArr(data.data) ? data.data : []; + let res = []; + let newData = []; + let processRow = {}; + let controlRow = {}; + + if(commonUtils.isNotEmptyArr(controlData) && commonUtils.isNotEmptyArr(controlSelectedRowKeys)){ /* 没有工序选中行 则不进行数据过滤 */ + const iIndex = controlData.findIndex(item => controlSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + controlRow = controlData[iIndex]; + } + } + + if(commonUtils.isNotEmptyArr(processData) && commonUtils.isNotEmptyArr(processSelectedRowKeys)){ /* 没有工序选中行 则不进行数据过滤 */ + const iIndex = processData.findIndex(item => processSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + processRow = processData[iIndex]; + } + } + if (type === 'materials') { + /* 根据工序表选中行的部件id +工序id 过滤全部材料数据 */ + if(commonUtils.isNotEmptyObject(processRow) && commonUtils.isNotEmptyObject(controlRow)){ + const filterData = oriData.filter(item => item.sControlId === processRow.sControlId && item.sProcessId === processRow.sProcessId && item.sProcessTbId === processRow.sId + && commonUtils.isEmptyObject(item.sParentMaterialsId) && (item.sNons !== "非标") ); + if (commonUtils.isNotEmptyArr(filterData)) { + newData = filterData.filter(item => ((commonUtils.isEmptyObject(item.sInkBOMId) && commonUtils.isEmptyObject(item.sInkBOMsSlaveId) && commonUtils.isEmptyObject(item.sInkBOMsMaterialsId)) || + ( (commonUtils.isNotEmptyObject(item.sInkBOMsMaterialsId) && commonUtils.isNotEmptyObject(item.sInkBOMId) && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId)))) && (item.sNons !== "非标") + ); + } + res = newData; + } else if(commonUtils.isNotEmptyObject(controlRow)){ + const filterData = oriData.filter(item => item.sControlId === controlRow.sId && commonUtils.isEmptyObject(item.sParentMaterialsId) && (item.sNons !== "非标") ); + if (commonUtils.isNotEmptyArr(filterData)) { + newData = filterData.filter(item => ((commonUtils.isEmptyObject(item.sInkBOMId) && commonUtils.isEmptyObject(item.sInkBOMsSlaveId) && commonUtils.isEmptyObject(item.sInkBOMsMaterialsId)) || + ( (commonUtils.isNotEmptyObject(item.sInkBOMsMaterialsId) && commonUtils.isNotEmptyObject(item.sInkBOMId) && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId)))) && (item.sNons !== "非标") + ); + } + res = newData; + } else { + res = commonUtils.isEmptyArr(oriData) ? oriData : oriData.filter(item => commonUtils.isEmptyObject(item.sParentMaterialsId) + && item.sProductCardId === currentProductCardId && (item.sNons !== "非标")); + res = commonUtils.isEmptyArr(oriData) ? oriData : res.filter(item => ((commonUtils.isEmptyObject(item.sInkBOMId) && commonUtils.isEmptyObject(item.sInkBOMsSlaveId) && commonUtils.isEmptyObject(item.sInkBOMsMaterialsId)) || + ( (commonUtils.isNotEmptyObject(item.sInkBOMsMaterialsId) && commonUtils.isNotEmptyObject(item.sInkBOMId) && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId))) && (item.sNons !== "非标")) + ); + } + + } else if (type === 'materials1' || type === 'materials2' || type === 'materials3') { + /* 过滤后的 materials0Data */ + let materials0FilterData = []; + if(commonUtils.isNotEmptyObject(processRow) && commonUtils.isNotEmptyArr(materials0Data)){ + const filterData = materials0Data.filter(item => (item.sControlId === processRow.sControlId && item.sProcessId === processRow.sProcessId && item.sProcessTbId === processRow.sId && commonUtils.isEmptyObject(item.sParentMaterialsId)) && (item.sNons !== "非标")); + if (commonUtils.isNotEmptyArr(filterData)) { + materials0FilterData = filterData; + } + }else if(commonUtils.isNotEmptyObject(controlRow) && commonUtils.isNotEmptyArr(materials0Data)){ + const filterData = materials0Data.filter(item => item.sControlId === controlRow.sId && commonUtils.isEmptyObject(item.sParentMaterialsId) && (item.sNons !== "非标")); + if (commonUtils.isNotEmptyArr(filterData)) { + materials0FilterData = filterData; + } + } + if (commonUtils.isNotEmptyArr(materials0FilterData)) { + materials0FilterData = materials0FilterData.filter(item => item.sProductCardId === currentProductCardId && (item.sNons !== "非标")); + const config = data.config; + const sSqlCondition = config ? config.sSqlCondition : 'materials0.sBclassifyName.油墨'; + if (sSqlCondition) { + let targetTbName = sSqlCondition.split('.')[0]; /* 1.表名 control */ + if(commonUtils.isEmptyObject(targetTbName)) { + targetTbName = 'materials0'; + } + let filteredValue = sSqlCondition.split('.')[1]; /* 2.解析filterValue: controlSelectedRowKeys */ + let sParentKey = sSqlCondition.split('.')[2]; /* 2.解析本身表对应的值,如控制表筛选材料表 则材料表的sControlId = 控制表的controlSelectedRowKeys[0] */ + /* 双重条件 */ + if(commonUtils.isEmptyObject(targetTbName)){ + if(type === 'materials1') { /* materials0.sBclassifyName.油墨 */ + filteredValue = 'sBclassifyName'; + sParentKey = '油墨'; + } else if(type ==='materials2') { /* materials0.sBclassifyName.电化铝 */ + filteredValue = 'sBclassifyName'; + sParentKey = '电化铝'; + } + } + if (targetTbName === 'materials0') { + let filterData = []; + if(type === 'materials1') { /* 油墨 */ + filterData = materials0FilterData.filter(item => sParentKey && sParentKey.includes(item[filteredValue]) && + ( + (commonUtils.isNotEmptyObject(item.sInkBOMsMaterialsId) && commonUtils.isNotEmptyObject(item.sInkBOMId) && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId)) || + (commonUtils.isEmptyObject(item.sInkBOMsMaterialsId) && commonUtils.isEmptyObject(item.sInkBOMId) && commonUtils.isEmptyObject(item.sInkBOMsSlaveId)) + ) + && (item.sNons !== "非标")); + }else if(type === 'materials2') { /* 电化铝 */ + filterData = materials0FilterData.filter(item => sParentKey && sParentKey.includes(item[filteredValue]) && commonUtils.isEmptyObject(item.sParentMaterialsId) && (item.sNons !== "非标")); + } else if(type === 'materials3') { /* 包材 */ + filterData = materials0FilterData.filter(item => sParentKey && sParentKey.includes(item[filteredValue]) && commonUtils.isEmptyObject(item.sParentMaterialsId) && (item.sNons !== "非标")); + } + newData = filterData; + } + } + + } + res = newData; + } else if( type === 'materials1Child') { /* 过滤油墨子集 */ + const { materialsData, materials1SelectedRowKeys } = props; + let materials1Row ={}; /* 油墨子级 */ + if(commonUtils.isNotEmptyArr(materialsData) && commonUtils.isNotEmptyArr(materials1SelectedRowKeys)){ /* 没有工序选中行 则不进行数据过滤 */ + const iIndex = materialsData.findIndex(item => materials1SelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + materials1Row = materials0Data[iIndex]; + } + res = materialsData.filter(item => item.sInkFatherMaterialsTbId === materials1Row.sId); + // res = materialsData.filter(item => commonUtils.isNotEmptyObject(item.sInkBOMId) && item.sInkBOMId === materials1Row.sInkBOMId + // && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId) && item.sInkBOMsSlaveId === materials1Row.sInkBOMsSlaveId && + // commonUtils.isEmptyObject(item.sInkBOMsMaterialsId) && item.sProductCardId === currentProductCardId); + } + } else if(type ==='materialsChild') { /* 全部材料 过滤替代料 */ + const { materialsSelectedRowKeys:materials0SelectedRowKeys } = props; + let materials0Row ={}; + if(commonUtils.isNotEmptyArr(materials0Data) && commonUtils.isNotEmptyArr(materials0SelectedRowKeys)){ /* 没有工序选中行 则不进行数据过滤 */ + const iIndex = materials0Data.findIndex(item => materials0SelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + materials0Row = materials0Data[iIndex]; + } + } + if(commonUtils.isNotEmptyObject(materials0Row)) { /* 根据工序过滤所有替代料 */ + if(commonUtils.isNotEmptyObject(materials0Row.sAluminumBomId)) { /* 电化铝替代料过滤, 相同编号的共享替代料信息 */ + res = oriData.filter(item => item.sParentMaterialsId === materials0Row.sId || + ( commonUtils.isNotEmptyObject(item.sParentMaterialsId) && + commonUtils.isNotEmptyObject(item.sMaterialsNo) && + item.sProductCardId === currentProductCardId && + item.sMaterialsNo1 === materials0Row.sMaterialsNo) ); + } else { + res = oriData.filter(item => item.sParentMaterialsId === materials0Row.sId && item.sProductCardId === currentProductCardId); + } + } else if(commonUtils.isNotEmptyObject(processRow)) { /* 根据工序过滤所有替代料 */ + res = oriData.filter(item => item.sProcessId === processRow.sProcessId && item.sProcessTbId === processRow.sId + && commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sProductCardId === currentProductCardId); + } else if(commonUtils.isNotEmptyObject(controlRow)){ + res = oriData.filter(item => item.sControlId=== controlRow.sId && commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sProductCardId === currentProductCardId); + } else { + res = oriData.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sProductCardId === currentProductCardId); /* 没有选中 则展示全部替代料 */ + } + + } else { + res = oriData; + } + return res; + } + + /* 处理可折叠页签标题名称 */ + const panelExtra = (type) => { + let str = ''; + /* 根据materials找到其组所有配置头 */ + const { formData } = props; + + let radioConfigArr = []; + if(commonUtils.isNotEmptyArr(formData)) { + radioConfigArr = formData.filter(item => commonUtils.isNotEmptyObject(item.sGrd) && item.sGrd.includes(type) && item.sGrd.split('_').length <3 );} + + if (type === 'materials') { + str = ( +
+ tabChange(e.target.value)}> + { + radioConfigArr.map((child, index) => { + const radioTitle = child.showName; + const radioValue = index + 2 + 10; + return( + {radioTitle} + ) + }) + } + +
+ ) + } + return str; + } + + const bMaterialsHeight = props.gongxuPackup ? 'calc(28vh + 60px)' : 'calc(12vh)'; + const { materialsInfoList, materialsChildInfoList } = props; + /* 循环展示材料表 */ + const materialsTablePropsList = {}; + if (commonUtils.isNotEmptyArr(materialsInfoList)) { + materialsInfoList.forEach((item, index) => { + const tableNameProps = index === 0 ? `materialsTable` : `materialsTable${index}`; + const tableName = index === 0 ? `materials` : `materials${index}`; + materialsTablePropsList[`${tableNameProps}Props`] = { + ...commonBusiness.getTableTypes(tableName, props), + // tableBelone: 'list', + data: materialsFilterNew(commonBusiness.getTableTypes(tableName, props), tableName, false), + tableProps: { + setAdd, + setCopy, + setDelete, + // AutoTableHeight: bMaterialsHeight, + }, + fixedHeight: bMaterialsHeight + }; + }); + } + + /* 展示材料表 子从表 */ + const materialsChildTablePropsList = {}; + if (commonUtils.isNotEmptyArr(materialsChildInfoList)) { + materialsChildInfoList.forEach((item, index) => { + materialsChildTablePropsList[`${item}TableProps`] = { + ...commonBusiness.getTableTypes(`${item}`, props), + data: materialsFilterNew(commonBusiness.getTableTypes(item, props), item, false), + // tableBelone: 'list', + tableProps: { + setAdd, + setCopy, + setDelete, + // AutoTableHeight: bMaterialsHeight, + }, + onDrag: props.onDrag, + fixedHeight: bMaterialsHeight + }; + if(item === 'materialsChild') { + if(commonUtils.isNotEmptyArr(slaveData)) { + if(commonUtils.isEmptyObject(slaveData[0].sMainProductTechnologyId) && commonUtils.isEmptyObject(slaveData[0].sSpareProductTechnologyId) ) { + materialsChildTablePropsList[`${item}TableProps`].bLimitOperate = true; + } + } + } + }); + } + + // 获取改版处表格(改版处) + const slaveNameArr3 = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesorderrevision" && + props[key].showName === "改版处" + ); + + useEffect(() => { + if (!slaveNameArr3.length) { + handleGetTableData(props, "revision"); + } + }, []); + + const getDividerTitle = title => { + return ( + <> +
+
+
+
+ {title} + { + title === "工序信息" ? ( +
+ { + props.onSaveState({ gongxuPackup: !props.gongxuPackup }); + }} + /> +
+ ) : "" + } + { + title === "材料信息" ? ( +
+ { + props.onSaveState({ materialsPackup: !props.materialsPackup }); + }} + /> +
+ ) : "" + } + + ); + }; + + return ( + + {partsTableName && ( +
+ + {getDividerTitle("部件信息")} + + + + )} + {processTableName && ( + + + {getDividerTitle("工序信息")} + + { + !props.gongxuPackup ? ( + + ) : "" + } + + )} + {materialsTableName && ( + + + {getDividerTitle("材料信息")} + + {/*按照印品PBOM材料方式展示材料信息*/} + { + !props.materialsPackup ? + + )} + showArrow={true} + extra={panelExtra('materials')} + key="1" + > + { props.materialsInfoList?.map((item, index) => { + let num = 12 + index; + const tablePropsName = index === 0 ? `materialsTableProps` : `materialsTable${index}Props`; + const materialsOtherPropsType = materialsTablePropsList[tablePropsName]; + let sWidth = '100%'; + let sRightWidth = '100%'; + /* 全部材料 是否可排序 */ + let bMaterialsSort = false; + bMaterialsSort = commonUtils.isNotEmptyObject(materialsOtherPropsType) && commonUtils.isNotEmptyObject(materialsOtherPropsType.config) && + commonUtils.isNotEmptyArr(materialsOtherPropsType.config.gdsconfigformslave) && + commonUtils.isNotEmptyArr(materialsOtherPropsType.config.gdsconfigformslave.filter(item => item.sControlName === 'handleSort' && item.bVisible)) ? true : false ; + + /* 找到子级 左右列 */ + let materialsChildTableProps ={}; + let materialsChildTableTitle = '子表记录'; + if(commonUtils.isNotEmptyArr(materialsChildInfoList)) { + const iIndex = materialsChildInfoList.findIndex(child => child.includes(item) ); + if(iIndex > -1) { + materialsChildTableProps = materialsChildTablePropsList[`${item}ChildTableProps`]; + sWidth = '58%'; + sRightWidth = '42%'; + materialsChildTableTitle = commonUtils.isNotEmptyObject(materialsChildTableProps) && commonUtils.isNotEmptyObject(materialsChildTableProps.config) ? materialsChildTableProps.config.sChinese : ''; + } else { + sWidth = '100%'; + } + }else { + sWidth = '100%'; + } + const { currentPane = {} } = props.app; + const { title = "" } = currentPane; + const bGyps = title.indexOf("订单工艺评审") !== -1; + return ( + props.colTabKey === num && +
+
+ { + index === 0 && bGyps ? +
+ + + + +
+ : "" + } + +
+ { + commonUtils.isNotEmptyObject(materialsChildTableProps)? +
+
+ {materialsChildTableTitle} +
+ +
+ : '' + } +
+ ) + }) } +
+
: '' + + } + + )} + + ); +}; + +// 额外加载表格 +const handleGetTableData = async (props, sGrdName) => { + const { formData, currentId, queryConfigArr, dataRelationJson } = props; + const sId = currentId !== undefined ? currentId : ""; + const config = formData.find(item => item.sGrd === sGrdName); + if (config) { + const name = sGrdName; + let addState = {}; + if (config.sSqlStr !== "noQuery") { + const conditonValues = props.onGetSqlConditionValues(config); + addState = + (await props.handleGetDataSet({ + name, + configData: config, + condition: { + sSqlCondition: { ...conditonValues, sParentId: sId } + }, + isWait: true + })) || {}; + } else { + const { sTbName } = config; + const iIndex = queryConfigArr.findIndex( + item => item[1].sTbName === sTbName + ); + if (iIndex !== -1) { + addState.dataRelationJson = { + ...dataRelationJson, + [name]: queryConfigArr[iIndex][0] + }; + } + } + addState[`${name}Config`] = config; + addState[`${name}Column`] = commonFunc.getHeaderConfig(config); + addState[`${name}PageSize`] = + commonUtils.isNotEmptyNumber(config.iPageSize) && config.iPageSize !== 0 + ? config.iPageSize + : commonConfig.pageSize; + + props.onSaveState(addState); + } +}; + +// 工序参数展示 +const CommonViewDragableComponentBak = props => { + const { tableName } = props; + const { [`${tableName}Config`]: config } = props; + const { gdsconfigformslave } = config; + const iIndex = gdsconfigformslave.findIndex( + item => item.sControlName === "sProcessParamType" + ); + if (iIndex === -1) { + return ""; + } + const { sDefault } = gdsconfigformslave[iIndex]; + const sParamList = ["sProcess", "sReport", "sWorkOrder", "sNorm", "sTest"]; + if (!sParamList.includes(sDefault)) { + return ""; + } + + const slaveName = tableName.split("Child")[0]; + const commonViewDragableProps = { + ...props, + hideTabsNav: true, + sParamData: [ + { + sParamType: sDefault, + sParamName: "参数" + } + ], + tableName: slaveName + }; + return ; +}; + +// 工艺卡部件选择 +const ProcessCardComponent = props => { + const slaveNameArr = Object.keys(props).filter( + key => + key && + key.includes("Config") && + commonUtils.isNotEmptyObject(props[key]) && + props[key].sTbName === "salsalesorderprocess" && + props[key].sSqlStr && + props[key].sSqlStr !== "noTable" && + props[key].sSqlStr !== "noQuery" + ); + + let slaveName = ""; + if (slaveNameArr.length) { + slaveName = slaveNameArr[0].split("Config")[0]; + } + + if (!slaveName) { + return ""; + } + + const childIndex = new Array(10).fill("").findIndex((_, index) => { + const config = props[`${slaveName}Child${index}Config`]; + return ( + commonUtils.isNotEmptyObject(config) && + config.sTbName === "salsalesordercontrol" + ); + }); + + let tableName = "control"; + if ( + commonUtils.isNotEmptyObject(props[`${slaveName}Child${childIndex}Config`]) + ) { + tableName = `${slaveName}Child${childIndex}`; + } + + const { [`${tableName}Data`]: tableData = [], slaveData = [] } = props; + + const [productCardOptions, setProductCardOptions] = useState([]); + const [partsOptions, setPartsOptions] = useState([]); + + const [productCardValue, setProductCardValue] = useState(""); + const [partsValue, setPartsValue] = useState(""); + + useEffect(() => { + if (!commonUtils.isNotEmptyArr(tableData)) { + handleGetTableData(props, tableName); + } + }, []); + + // 获取工艺卡 + useEffect( + () => { + const { slaveData, bReset } = props; + // 默认或者processCardUpdate为ture时才更新 + if (props.processCardUpdate || props.processCardUpdate === undefined) { + /* 将tableData中 currentSelectType 根据从表对应 */ + if ( + commonUtils.isNotEmptyArr(tableData) && + commonUtils.isNotEmptyArr(productCardOptions) + ) { + tableData.forEach((item, index) => { + const { + sProductCardId, + sProductCardNo, + sProductTechnologyVer + } = item; + let { currentSelectType } = item; + if (commonUtils.isEmptyObject(currentSelectType)) { + /* 首次加载 找不到选择项目 */ + if (commonUtils.isNotEmptyArr(slaveData)) { + if (item.sProductCardId === slaveData[0].sBomId) { + currentSelectType = slaveData[0].sSelectType; + } else { + currentSelectType = + slaveData[0].sSelectType === "mainVersion" + ? "preVersion" + : "mainVersion"; + } + } else { + currentSelectType = "mainVersion"; + } + } + /* + 循环控制表,填充工艺落线数据 + */ + const iIndex = productCardOptions.findIndex( + key => key.value && key.value.includes(currentSelectType) + ); + if (iIndex > -1) { + let sVer = commonUtils.isEmptyObject(sProductTechnologyVer) + ? "已载入" + : sProductTechnologyVer; + const obj = { + label: + currentSelectType === "mainVersion" + ? `首选版本:${sVer}` + : `备选版本:${sVer}`, + value: `${currentSelectType},${sProductCardId},${sVer}`, + data: item + }; + productCardOptions[iIndex] = { + ...productCardOptions[iIndex], + ...obj + }; + } + }); + } + + if (!productCardOptions.length) { + productCardOptions.push({ + label: "首选版本:无", + value: "mainVersion", + data: {} + }); + + productCardOptions.push({ + label: "备选版本:无", + value: "preVersion", + data: {} + }); + } else { + props.onSaveState({ processCardUpdate: false }); + } + + /* 取消回置Radio */ + if(bReset){ + if(tableData !== undefined && productCardOptions.length ){ + productCardOptions.forEach((item, index) => { + const iIndex = tableData.findIndex(row => item.value.includes(row.sProductCardId) ); + if(iIndex === -1) { + const obj ={ + label: index === 0 ? "首选版本:无" : '备选版本:无', + value: index === 0 ? "mainVersion": 'preVersion', + data: {} + }; + productCardOptions[index] = {...productCardOptions[index], ...obj} + } + + }) + } + } + + + if ( + commonUtils.isNotEmptyArr(tableData) && + tableData.length === 1 && + productCardOptions.length === 1 + ) { + productCardOptions.push({ + label: + tableData[0].currentSelectType === "mainVersion" + ? "备选版本:无" + : "首选版本:无", + value: + tableData[0].currentSelectType === "mainVersion" + ? "preVersion" + : "mainVersion", + data: {} + }); + } + + /* + 根据从表的sSelectType, 定位当前版本在哪个Radio + */ + if (productCardOptions.length) { + let iType = 0; + // const { currentSelectType:currentSelectType1 } = props; + if (commonUtils.isNotEmptyArr(slaveData)) { + const currentSelectType = slaveData[0].sSelectType; + const iIndex = productCardOptions.findIndex( + item => item.value && item.value.includes(currentSelectType) + ); + if (iIndex === -1) { + iType = 0; + } else { + iType = iIndex; + } + } + setProductCardOptions(productCardOptions); + setProductCardValue(productCardOptions[iType].value); + } + } + }, + [JSON.stringify(tableData), JSON.stringify(slaveData)] + ); + + // 获取部件 + useEffect( + () => { + if (productCardValue) { + const partsOptions = tableData + .filter(item => item.sProductCardId === productCardValue) + .map(item => ({ label: item.sPartsName, value: item.sId })); + if (partsOptions.length) { + setPartsOptions(partsOptions); + setPartsValue(partsOptions[0].value); + } else if (productCardValue === "preVersion") { + setPartsOptions([{ label: "备选版本", value: "preVersion" }]); + setPartsValue("preVersion"); + } + } + }, + [productCardValue] + ); + + // 当工艺卡id变化时候,保存到props中 + useEffect( + () => { + if (productCardValue) { + const { slaveData, slaveSelectedRowKey, slave0Child1Data: controlData } = props; + let { + [`${tableName}SelectedRowKeys`]: controlSelectedRowKeys = [] + } = props; + const [ + version, + sProductCardId, + sProductTechnologyVer + ] = productCardValue.split(","); + const currentSelectType = version; + // 要保存到props的数据 + // 。。。 + /* 将首选、备选方案选择的值 更新到从表中 */ + // if (commonUtils.isNotEmptyArr(slaveData)) { + // const addState = {}; + // addState.sBomId = sProductCardId; + // addState.sProductTechnologyVer = sProductTechnologyVer; + // addState.sSelectType = version; + // if (version === "mainVersion") { + // addState.sMainProductTechnologyId = sProductCardId; + // } else if (version === "preVersion") { + // addState.sSpareProductTechnologyId = sProductCardId; + // } + // addState.handleType = commonUtils.isEmpty(slaveData[0].handleType) + // ? "update" + // : slaveData[0].handleType; + // slaveData[0] = { ...slaveData[0], ...addState }; + // } + /* 将切换的版本存到slave中 */ + let slaveRow = {}; + let iSlaveIndex = -1; + if(commonUtils.isNotEmptyArr(slaveData)) { + if(commonUtils.isNotEmptyArr(slaveSelectedRowKey)) { + iSlaveIndex = slaveData.findIndex(item => slaveSelectedRowKey.includes(item.sId)); + } else { + iSlaveIndex = 0; + } + } + if(iSlaveIndex > -1) { + slaveRow = slaveData[iSlaveIndex]; + } + const addState = {}; + if(commonUtils.isNotEmptyObject(slaveRow)) { + addState.sBomId = sProductCardId; + addState.sProductTechnologyVer = sProductTechnologyVer; + addState.sSelectType = currentSelectType; + addState.handleType = commonUtils.isEmpty(slaveRow.handleType) ? 'update' : slaveRow.handleType; + if (currentSelectType === "mainVersion") { + addState.sMainProductTechnologyId = sProductCardId; + } else if (currentSelectType === "preVersion") { + addState.sSpareProductTechnologyId = sProductCardId; + } + slaveData[iSlaveIndex] ={...slaveRow, ...addState}; + } + + /* 切换时 默认控制表属于该版本的第一条 */ + if (commonUtils.isNotEmptyArr(controlData)) { + /* 找当前版本下的第一条部件 作为默认部件 */ + if ( + commonUtils.isNotEmptyArr(slaveData) && + commonUtils.isNotEmptyArr(controlData) + ) { + // const controlFilterData = controlData + // .filter(controlItem => { + // const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + // const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === slaveRow.sProductNo); + // return controlItem.sProductCardId === currentProductCardId && + // controlItem.sProductTechnologyVer === currentProductTechnologyVer && + // commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + // } + // ); + + const iIndex = controlData.findIndex( + controlItem => { + const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === slaveRow.sProductNo); + return controlItem.sProductCardId === slaveData[0].sBomId && + commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + } + ); + if (iIndex > -1) { + controlSelectedRowKeys = [controlData[iIndex].sId]; + } else { + controlSelectedRowKeys = []; + } + } + } + + if(commonUtils.isNotEmptyArr(_this.controlFilterData) && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) { + _this.controlFilterData = controlData.filter(item => controlSelectedRowKeys.includes(item.sId)); + } + + props.onSaveState({ + currentProductCardId: sProductCardId, + currentSelectType, + currentProductTechnologyVer: sProductTechnologyVer, + slave0Child1SelectedRowKeys: [], + slaveData, + [`${tableName}SelectedRowKeys`]: controlSelectedRowKeys + }); + } + }, + [productCardValue] + ); + + // 当部件id变化时候,保存到props中 + useEffect( + () => { + if (partsValue) { + /* 首先版本、备选版本类型 + 版本ID 过滤部件条件 */ + const currentSelectType = + partsValue === "preVersion" ? "preVersion" : " mainVersion"; + const currentVersionInfo = currentSelectType + "-" + partsValue; + props.onSaveState({ + currentPartsId: partsValue, + currentSelectType, + currentVersionInfo + }); + } + }, + [partsValue] + ); + + const onChange = (type, { target: { value } }) => { + if (type === "0") { + setProductCardValue(value); + } else if (type === "1") { + setPartsValue(value); + } + }; + + // 判断是否显示选择POM、选择传票按钮 + const { slave0Config = {}, masterData = {}, slave0Child1Data: controlData, enabled, slaveConfig,sModelsId } = props; + const { gdsconfigformslave = [] } = slave0Config; + const bHasChoosePOM = gdsconfigformslave.some( + item => item.sControlName && item.sControlName.includes("_choosePBOM") + ); + const bHasChooseTicket = gdsconfigformslave.some( + item => item.sControlName && item.sControlName.includes("_chooseTicket") + ); + + /* 拆分工单后 工艺路线置灰 */ + let bDisabledRoute = false; + if(commonUtils.isNotEmptyArr(masterData)) { + bDisabledRoute = masterData.bSplit || masterData.sBusinessType === 'ZS01-5'; + if(!bDisabledRoute){ + if(!masterData.bSplit && masterData.bPD){ + if(commonUtils.isNotEmptyArr(controlData) && controlData.length === 1) { + bDisabledRoute = true; + } + + } + } + } + + /* 是否显示合版数量区域 */ + let bShowCombineArea = false; + if(slaveConfig && slaveConfig.gdsconfigformslave) { + bShowCombineArea = slaveConfig.gdsconfigformslave.findIndex(item => item.sName ==='dCombinedQty') > -1 + } + let bShowRoute = true; + if(sModelsId === '12710101117172075846130') { + bShowRoute = false + } + + return ( +
+ {productCardValue && bShowRoute ? ( +
+ + 工艺路线: + + + {/* */} + {/* {productCardValue === "preVersion" && ( */} + { + bShowCombineArea ? +
+ { + getCommonViewTableComponentCombine({ + ...props, + tableName: 'slave' + }) + } +
: false + } + + + {bHasChoosePOM && ( + + )} + {bHasChooseTicket && ( + + )} + + {/* )} */} +
+ ) : ( + "" + )} +
+ ); +}; + +// 工艺评审按钮 +const ProcessCardBtnsComponent = props => { + return ""; + return ( +
+ + + + + + + + + + + +
+ ); +}; + +// 孙表格 +const GrandChildTableComponent = props => { + const { + addStateMap, + tableName, + sChildTableName, + formData, + currentId, + bGyps, + sModelsType + } = props; + const sId = currentId !== undefined ? currentId : ""; + const config = formData.find(item => item.sGrd === sChildTableName); + const name = `${tableName}Child0`; + + /* 替代料单独处理 */ + const configRm = formData.find(item => item.showName === '印品PBOM替代料'); /* 更换材料 */ + const nameRm = `${tableName}Child1`; + + /* 更换材料单独处理 */ + const configCm = formData.find(item => item.showName === '更换材料'); /* 更换材料 */ + const nameCm = `${tableName}Child2`; + + const bWzps = + props[`${tableName}Config`].showName.indexOf("物资评审") !== -1 || + props[`${tableName}Config`].showName.indexOf("物料信息") !== -1; + + // 没有配置或者, 返回空 + if (commonUtils.isEmptyObject(config)) { + return ""; + } + if (commonUtils.isEmptyObject(configRm) && bWzps) { + return ""; + } + if (commonUtils.isEmptyObject(configCm) && bWzps) { + return ""; + } + useEffect(async () => { + let addState = {}; + if (config.sSqlStr !== "noQuery") { + const conditonValues = props.onGetSqlConditionValues(config); + addState = + (await props.handleGetDataSet({ + name, + configData: config, + condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, + isWait: true + })) || {}; + } + addState[`${name}Config`] = config; + addState[`${name}Column`] = commonFunc.getHeaderConfig(config); + addState[`${name}PageSize`] = + commonUtils.isNotEmptyNumber(config.iPageSize) && config.iPageSize !== 0 + ? config.iPageSize + : commonConfig.pageSize; + if(commonUtils.isNotEmptyObject(configCm)) { /* 特殊处理更新材料信息 */ + addState[`${nameCm}Config`] = configCm; + addState[`${nameCm}Column`] = commonFunc.getHeaderConfig(configCm); + addState[`${nameCm}PageSize`] = + commonUtils.isNotEmptyNumber(configCm.iPageSize) && configCm.iPageSize !== 0 + ? configCm.iPageSize + : commonConfig.pageSize; + } + if(commonUtils.isNotEmptyObject(configRm)) { /* 特殊处理更新材料信息 */ + addState[`${nameRm}Config`] = configRm; + addState[`${nameRm}Column`] = commonFunc.getHeaderConfig(configRm); + addState[`${nameRm}PageSize`] = + commonUtils.isNotEmptyNumber(configRm.iPageSize) && configRm.iPageSize !== 0 + ? configRm.iPageSize + : configRm.pageSize; + } + props.onSaveState(addState); + }, []); + + const { bGrdVisible } = config; + const { gdsconfigformslave } = config; + const bHasDividerArea = gdsconfigformslave.some( + item => item.sControlName && item.sControlName.includes("DividerArea") + ); + /* 根据config 解析数据 */ + const arr = config.sGrd && config.sGrd.split("_"); /* slave5_1_1 */ + const firstTable = arr[0]; /* 第一层:品管评审 */ + let secondTable = ""; /* 第二层 :客户投诉 */ + if (arr.length > 1) { + const secondFlag = Number(arr[1]) - 1; + secondTable = firstTable + "_" + secondFlag; + } + + /* 控制提取上次信息按钮状态 */ + let disabled = false; + if (firstTable) { + const { [`${firstTable}Config`]: firstTableConfig } = props; + const filterConfig = commonUtils.isNotEmptyObject(firstTableConfig) + ? firstTableConfig.gdsconfigformslave.filter( + item => item.sControlName && item.sControlName.includes("BtnExtract") + ) + : {}; + if (commonUtils.isNotEmptyArr(filterConfig)) { + disabled = filterConfig[0].bReadonly; + } + if(!disabled) { + disabled = !props.enabled; + } + } + if (!bGrdVisible) { + // 表单形式展示 + return ( + <> +
+ {!bHasDividerArea && {config.showName}} + +
+ + + ); + } + + const otherTableProps = {}; + // if (config.sSqlStr === "noQuery") { + // const tempConfigName = Object.keys(addStateMap).find( + // key => + // addStateMap[key].sSqlStr !== "noQuery" && + // addStateMap[key].sTbName === config.sTbName + // ); + + // if (tempConfigName) { + // const tempName = tempConfigName.split("Config")[0]; + // otherTableProps.name = tempName; + // otherTableProps.data = props[`${tempName}Data`]; + // } + // } + + + + const bRm = commonUtils.isNotEmptyObject(configRm) + const bCm = commonUtils.isNotEmptyObject(configCm); /* 是否展示更换材料页签 */ + + // 是否展示操作按钮 + let bShowOperate = true; + if (commonUtils.isNotEmptyObject(config)) { + const condition1 = config.sTbName === "sysbillcheckresult"; + const condition2 = config.gdsconfigformslave.some( + item => + item.sControlName && item.sControlName.includes("setNoCommonOperate") + ); + if (condition1 || condition2) { + bShowOperate = false; + } + } + + const isSpecialType = (['12710101117055564119120'].includes(props.sModelsId) || + props?.slave3Child0Child2Config?.gdsconfigformslave?.find(i => i && ['sTypeShowAll'].includes(i.sControlName))); + + /* 根据主料过滤替代料数据 */ + const dataMaterialsFilter = (tableProps, type) => { + let oriData = commonUtils.isNotEmptyArr(tableProps.data) + ? tableProps.data + : []; + let config = commonUtils.isNotEmptyArr(tableProps.config) + ? tableProps.config + : []; + let res = []; + const bReplaceMaterials = + config.showName === "印品PBOM替代料"; /* 根据首选、备选过滤合格率评审数据 */ + if (type === "slave3Child0Child1" && bReplaceMaterials) { + /* 替代料数据 */ + /* 主料数据是slave3Child0 */ + const { + materialsData: materailsData = [], + slave3Child0SelectedRowKeys: materialsSelecteRowKeys + } = props; + let materialsFilterData = materailsData; + if(commonUtils.isNotEmptyArr(_this.controlFilterData)) { + materialsFilterData = materailsData.filter(item => item.sControlId === _this.controlFilterData[0].sId && (item.sNons !== "非标")); + } + const iPIndex = commonUtils.isNotEmptyArr(materailsData) && commonUtils.isNotEmptyArr(materialsSelecteRowKeys) + ? materailsData.findIndex(item => + materialsSelecteRowKeys.includes(item.sId) + ) + : -1; + let materialsRow = {}; + // if (iPIndex > -1) { + // materialsRow = materailsData[iPIndex]; + // } + let filterData = []; + if (commonUtils.isNotEmptyArr(materailsData)) { + if(commonUtils.isEmptyObject(materialsRow)) { + filterData = materialsFilterData.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sNons !=='替代料'); + } else { + filterData = materialsFilterData.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sParentMaterialsId === materialsRow.sId && item.sNons !=='替代料'); + } + + } + res = filterData; + } else if (type === "slave3Child0Child2" && config.showName ==='更换材料') { + /* 替代料数据 */ + /* 主料数据是slave3Child0 */ + const { + materialsData: materailsData, + slave3Child0SelectedRowKeys: materialsSelecteRowKeys + } = props; + const iPIndex = commonUtils.isNotEmptyArr(materailsData) && commonUtils.isNotEmptyArr(materialsSelecteRowKeys) + ? materailsData.findIndex(item => + materialsSelecteRowKeys.includes(item.sId) + ) + : -1; + let materialsRow = {}; + if (iPIndex > -1) { + materialsRow = materailsData[iPIndex]; + } + let filterData = []; + if (commonUtils.isNotEmptyArr(materailsData)) { + if(commonUtils.isEmptyObject(materialsRow) || isSpecialType) { + filterData = materailsData.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId) && item.sNons ==='替代料'); + }else { + filterData = materailsData.filter( + item => + commonUtils.isNotEmptyObject(item.sParentMaterialsId) && + item.sParentMaterialsId === materialsRow.sId && item.sNons ==='替代料' + ); + } + + } + const { slave3Child0SelectedRowKeys = [] } = props; + filterData.forEach(item => { + if (item.sParentMaterialsId && item.sParentMaterialsId === slave3Child0SelectedRowKeys[0]) { + item.costomRowColor = "yellow"; + } else { + delete item.costomRowColor; + } + }) + res = filterData; + } else { + res = oriData; + } + return res; + }; + + const listType = "commonMultiList"; + const setOpterationColumn = + sModelsType !== "cost/cosexpenseshare" && + sModelsType !== listType && + bShowOperate + ? "Y" + : ""; + + const baseProps = commonBusiness.getTableTypes(name, props); + const tableProps = { + ...baseProps, + ...otherTableProps, + setOpterationColumn, + // filteredValue: props.slave3Child0InfoSelectedRowKeys, + // onFilterData: props.onFilterData, + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + onChange: props.onTitleChange.bind(this, tableName) + // AutoTableHeight: 300 + }, + // fixedHeight: "calc(100% - 250px)" + fixedHeight: props.onGetHeight( + (baseProps.headerColumn.some(item => item.title.includes("-")) + ? 375 + : 345) + (bGyps ? 20 : 0) + ) + }; + + const cmBaseProps = commonBusiness.getTableTypes(nameCm, props); + + const cmProps = { + ...cmBaseProps, + ...otherTableProps, + setOpterationColumn, + // filteredValue: props.slave3Child0InfoSelectedRowKeys, + // onFilterData: props.onFilterData, + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + onChange: props.onTitleChange.bind(this, tableName), + AutoTableHeight: 300 + }, + data: dataMaterialsFilter(cmBaseProps, nameCm), + sParentSelectedRowKeys: commonUtils.isNotEmptyArr(props.slave3Child0SelectedRowKeys) ? props.slave3Child0SelectedRowKeys[0] : undefined, + // fixedHeight: "calc(100% - 250px)" + }; + + if (!isSpecialType) { + cmProps.fixedHeight = props.onGetHeight( + (baseProps.headerColumn.some(item => item.title.includes("-")) + ? 375 + : 345) + (bGyps ? 20 : 0) + ); + delete cmProps.tableProps.AutoTableHeight; + } + + const rmBaseProps = commonBusiness.getTableTypes(nameRm, props); + + const rmProps = { + ...rmBaseProps, + ...otherTableProps, + setOpterationColumn, + // filteredValue: props.slave3Child0InfoSelectedRowKeys, + // onFilterData: props.onFilterData, + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + onChange: props.onTitleChange.bind(this, tableName) + // AutoTableHeight: 300 + }, + data: dataMaterialsFilter(rmBaseProps, nameRm), + sParentSelectedRowKeys: commonUtils.isNotEmptyArr(props.slave3Child0SelectedRowKeys) ? props.slave3Child0SelectedRowKeys[0] : undefined, + // fixedHeight: "calc(100% - 250px)" + fixedHeight: props.onGetHeight( + (baseProps.headerColumn.some(item => item.title.includes("-")) + ? 375 + : 345) + (bGyps ? 20 : 0) + ) + }; + /* 树形展示 */ + const bTree = + config.sTableType === "single" && + commonUtils.isNotEmptyArr(tableProps.data) && + tableProps.data.some(rowData => + commonUtils.isNotEmptyObject(rowData.sFatherSlaveId) + ); + + if (bTree) { + tableProps.data = commonUtils.genTreeByArr( + tableProps.data, + "sId", + "sFatherSlaveId" + ); + } + + if (bWzps) { + tableProps.fixedHeight = props.onGetHeight(80, true); + } + + return ( + + // + // + // ) + // } + // : null + // } + > + + + + { + bRm ? + + + : '' + } + { + bCm ? + + + : '' + } + + + ); +}; + +// 备注列表 +const MemoListComponent = props => { + const { tableName, enabled } = props; + const { + [`${tableName}Config`]: config, + [`${tableName}Data`]: data = [], + [`${tableName}SelectedRowKeys`]: selectedRowKeys = [] + } = props; + + const configData = config.gdsconfigformslave.filter( + item => + item.sName && + item.sName.indexOf("Memo") !== -1 && + item.bVisible && + item.sControlName === "extraMemo" + ); + + const selectedDataIndex = data.findIndex(item => + selectedRowKeys.includes(item.sId) + ); + const selectedData = selectedDataIndex !== -1 ? data[selectedDataIndex] : {}; + + if (!configData.length) { + return ""; + } + + const { sName, iTag } = configData[0]; + const [listValue, setListValue] = useState([]); + + useEffect( + () => { + if (selectedDataIndex === -1) { + return; + } + + const fieldValue = selectedData[sName] || ""; + const listValueNew = fieldValue.split("\n\n"); + setListValue(listValueNew); + }, + [selectedRowKeys[0], selectedData[sName]] + ); + + const timer = useRef(null); + useEffect( + () => { + if (selectedDataIndex === -1) { + return; + } + clearTimeout(timer.current); + timer.current = setTimeout(() => { + const dataRow = listValue.reduce((result, item, index) => { + result += item; + if (index < listValue.length - 1) { + result += "\n\n"; + } + return result; + }, ""); + const newData = [...data]; + newData[selectedDataIndex][sName] = dataRow; + props.onSaveState({ + [`${tableName}Data`]: newData + }); + }, 500); + }, + [listValue] + ); + + return ( +
+ + {configData[0].showName} + + } + dataSource={listValue} + style={{ + paddingLeft: 10, + paddingRight: 10, + maxHeight: props.onGetHeight(55), + overflow: "auto" + }} + renderItem={(item, index) => { + const bDisabled = !enabled || iTag === 1; + const inputProps = { + value: item, + disabled: bDisabled, + // disabled: false, + readOnly: configData[0].readOnly, + autoSize: { minRows: 1, maxRows: 100 }, + onChange: ({ target: { value } }) => { + setListValue(prev => { + const newList = [...prev]; + newList[index] = value; + return newList; + }); + } + }; + return ( + + + {index + ? !bDisabled && ( + + } + > +
+
+ + + + +
+ {[""].map(() => { + const commonViewDragableProps = { + ...props, + hideTabsNav: true, + // bSimpleMode: true, + comparedTableId: props.processTableId, + sParamData: [ + // { + // sParamType: 'sProcess', + // sParamName: '工序参数', + // }, + // { + // sParamType: 'sReport', + // sParamName: '上报参数' + // }, + { + sParamType: "sWorkOrder", + sParamName: "工单参数" + } + // { + // sParamType: 'sNorm', + // sParamName: '标准书参数' + // }, + // { + // sParamType: 'sTest', + // sParamName: '测试参数' + // } + ], + tableName: "slave0" + }; + return ; + })} +
+ + ) : ( + "" + ); +}; + +// 合版信息弹窗 +const ModalComponentPack = props => { + const { app, productCombinationVisible } = props; + const setProductCombinationTitle = commonFunc.showMessage(app.commonConst, 'setProductCombination');/* 选择合拼产品标题 */ + const packTableProps = { + ...commonBusiness.getTableTypes('pack', props), + onKeyDown: props.onKeyDown, + tableProps: { + setCopy, setDelete, CalLastWidth: '1150', AutoTableHeight: '300px', + }, + bRowClick: true, + }; + return props.productCombinationVisible ? ( + +
+
+ +
+
+
+ ) : ( + "" + ); +}; + +const ModalComponentMenu = props => { + const { contextMenuModalVisible } = props; + return contextMenuModalVisible ? ( + + ) : ( + "" + ); +}; + +// 按钮弹窗功能 +const handleOpenModal = (props, type) => { + const { masterConfig = {}, slave0Config = {} } = props; + const { gdsconfigformslave = [] } = masterConfig; + let iIndex = gdsconfigformslave.findIndex( + item => item.sControlName && item.sControlName.includes(`_${type}`) + ); + let obj = {}; + if (type && (type.includes("choosePBOM") || type.includes("chooseTicket"))) { + iIndex = commonUtils.isNotEmptyObject(slave0Config) + ? slave0Config.gdsconfigformslave.findIndex( + item => item.sControlName && item.sControlName.includes(`_${type}`) + ) + : -1; + if (iIndex > -1) { + const { + showName, + sActiveId, + sControlName + } = slave0Config.gdsconfigformslave[iIndex]; + obj = { + name: showName, + copyFromKey: sControlName, + copyFromSActiveId: sActiveId + }; + } + } else { + if (iIndex !== -1) { + const { showName, sActiveId, sControlName } = gdsconfigformslave[iIndex]; + const obj = { + name: showName, + copyFromKey: sControlName, + copyFromSActiveId: sActiveId + }; + props.onCopyFrom(obj); + } + } + if (commonUtils.isNotEmptyObject(obj)) { + props.onCopyFrom(obj); + } + // _this.controlFilterData = null; +}; + +/* 提取功能 */ +const handleBtnExtract = (props, type, pTable, bAll) => { + /* 上批数据 */ + const { [`${pTable}Config`]: pTableConfig, dataRelationJson, slave5Child5Data } = props; + let { [`${pTable}Data`]: pTableData, [`${pTable}SelectedRowKeys`]: pTableSelectedRowKeys } = props; /* 上批数据上层数据集 */ + if (commonUtils.isEmpty(pTableData)) { + pTableData = []; + } + + let iIndex = 0; + let iUIndex = 0; + if (commonUtils.isNotEmptyArr(pTableSelectedRowKeys)) { + iIndex = pTableData.findIndex(item => item.sId === pTableSelectedRowKeys[0]); + } + + /* 从父级找到所有的提取配置 */ + if (bAll) { + /* 提取全部 */ + const filterConfig = commonUtils.isNotEmptyObject(pTableConfig) + ? pTableConfig.gdsconfigformslave.filter( + item => item.sControlName && item.sControlName.includes("BtnExtract") + ) + : {}; + if (commonUtils.isNotEmptyArr(filterConfig)) { + filterConfig.forEach(item => { + const sControlName = item.sControlName; + const type = sControlName.replace("BtnExtract", "").trim(); + const num = type && type.split("_")[1]; + const upType = pTable + "Child" + num + "Child0"; /* 上批对比的表名 */ + const relateName = dataRelationJson[upType]; + let upTableData = props[`${relateName}Data`]; /* 真实存在的数据集 如,slave0Child3Child0真实数据集 取得是slaveData */ + const upTableSelectedRowKeys = props[`${relateName}SelectedRowKeys`]; + if (commonUtils.isEmptyArr(upTableData)) { + upTableData = []; + } + + if (commonUtils.isNotEmptyArr(upTableSelectedRowKeys)) { + iUIndex = upTableData.findIndex(item => item.sId === upTableSelectedRowKeys[0]); + } + + const singleConfig = [item]; + if ( + commonUtils.isNotEmptyArr(singleConfig) && + commonUtils.isNotEmptyArr(upTableData) + ) { + const sAssignField = singleConfig[0].sAssignField; + let tableRow = {}; + tableRow = { + ...tableRow, + ...commonFunc.getAssignFieldValue(sAssignField, upTableData[iUIndex]) + }; // 取赋值字段 + if (commonUtils.isNotEmptyArr(pTableData)) { + const handleType = commonUtils.isEmpty(upTableData[iUIndex].handleType) + ? "update" + : upTableData[0].handleType; + pTableData[iIndex] = { ...pTableData[iIndex], ...tableRow, handleType }; + upTableData[iUIndex] = { ...upTableData[iUIndex], ...tableRow, handleType }; + } else { + pTableData.push(tableRow); + } + slave5Child5Data.forEach((tableDataRow, index) => { + slave5Child5Data[index] = { ...tableDataRow, + handleType: commonUtils.isEmpty(tableDataRow.handleType) ? "update" : tableDataRow.handleType, sMemo: tableDataRow.sUpMemo } + }); + props.onSaveState({ [`${pTable}Data`]: pTableData, slave5Child5Data }); + } + }); + } + } else { + const num = type && type.split("_")[1]; + const upType = pTable + "Child" + num + "Child0"; /* 上批对比的表名 */ + const relateName = dataRelationJson[upType]; /* 真实表名 */ + let upTableData = props[`${relateName}Data`]; /* 真实存在的数据集 如,slave0Child3Child0真实数据集 取得是slaveData */ + const upTableSelectedRowKeys = props[`${relateName}SelectedRowKeys`]; + if (commonUtils.isEmptyArr(upTableData)) { + upTableData = []; + } + + if (commonUtils.isNotEmptyArr(upTableSelectedRowKeys)) { + iUIndex = upTableData.findIndex(item => item.sId === upTableSelectedRowKeys[0]); + } + /* 上批数据到当前数据 */ + const singleConfig = commonUtils.isNotEmptyObject(pTableConfig) + ? pTableConfig.gdsconfigformslave.filter( + item => + item.sControlName && item.sControlName.includes(type + "BtnExtract") + ) + : {}; + if ( + commonUtils.isNotEmptyArr(singleConfig) && + commonUtils.isNotEmptyArr(upTableData) + ) { + const sAssignField = singleConfig[0].sAssignField; + let tableRow = {}; + tableRow = { + ...tableRow, + ...commonFunc.getAssignFieldValue(sAssignField, upTableData[iUIndex]) + }; // 取赋值字段 + if (commonUtils.isNotEmptyArr(pTableData)) { + const handleType = commonUtils.isEmpty(upTableData[iUIndex].handleType) + ? "update" + : upTableData[0].handleType; + pTableData[iIndex] = { ...pTableData[iIndex], ...tableRow }; + upTableData[iUIndex] = { ...upTableData[iUIndex], ...tableRow, handleType }; + } else { + pTableData.push(tableRow); + } + props.onSaveState({ [`${pTable}Data`]: pTableData }); + } else if (commonUtils.isEmptyArr(singleConfig)) { + message.error("请配置提取按钮!"); + } + } +}; + +const handleBtnParamPage = (props, comparedTableId, type) =>{ + /* 找到所选择控制表, 根据当前行找 上条,下条,首条,末条 */ + const { slave0Data} = props; + const processRow = handleGetSelectedData(props, 'slave0'); /* 工序当前选中行 */ + const controlRow = handleGetSelectedData(props, 'slave0Child1'); /* 控制表当前选中行 */ + let filterData = []; + if(commonUtils.isNotEmptyObject(controlRow) && commonUtils.isNotEmptyArr(slave0Data)){ + filterData = slave0Data.filter(item => item.sControlId === controlRow.sId); + } + + console.log('tableDataRow', slave0Data, controlRow, filterData); + let tableDataRow = {}; + if( commonUtils.isNotEmptyArr(filterData)) { + const iIndex = filterData.findIndex(item => item.sId === processRow.sId); + if(iIndex > -1) { + const len = filterData.length; + if (type === 'first') { + tableDataRow = filterData[0]; + + }else if (type === 'last') { + tableDataRow = filterData[len -1]; + + }else if (type === 'before') { + if(iIndex === 0 || iIndex > len -1) { + message.error('当前是首条'); + return; + } + tableDataRow = filterData[iIndex - 1]; + + }else if (type === 'next') { + if(iIndex === len-1 || iIndex > len -1) { + message.error('当前是末条'); + return; + } + tableDataRow = filterData[iIndex + 1]; + } + if(commonUtils.isNotEmptyObject(tableDataRow)) { + props.onSaveState({ slave0SelectedRowKeys: [tableDataRow.sId]}) + } + }else{ + message.error('数据错误!'); + } + } else{ + message.error('数据错误!'); + } + +} + +const handleGetSelectedData = (props, tableName) => { + const selectedRowKeys = props[`${tableName}SelectedRowKeys`] || []; + let selectedDataIndex = -1; + const tableData = props[`${tableName}Data`]; + if (commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + selectedDataIndex = tableData.findIndex( + item => item.sId === selectedRowKeys[0] + ); + } else { + selectedDataIndex = 0; + } + } + + if( selectedDataIndex > -1) { + console.log('工序选中行', props[`${tableName}Data`][selectedDataIndex]); + return props[`${tableName}Data`][selectedDataIndex]; + } else { + return {}; + } +}; + + +export default CommonBase(CommonNewSales(CommonNewBill)); diff --git a/src/components/Common/CommonElementEvent.js b/src/components/Common/CommonElementEvent.js index 50b312f..a278786 100644 --- a/src/components/Common/CommonElementEvent.js +++ b/src/components/Common/CommonElementEvent.js @@ -1,6 +1,6 @@ /* eslint-disable array-callback-return,no-undef,prefer-destructuring */ import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import commonConfig from '../../utils/config'; import * as commonFunc from './commonFunc'; import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ diff --git a/src/components/Common/CommonExamInfo/index.js b/src/components/Common/CommonExamInfo/index.js index dc0d509..ac1fae8 100644 --- a/src/components/Common/CommonExamInfo/index.js +++ b/src/components/Common/CommonExamInfo/index.js @@ -1,7 +1,7 @@ /* eslint-disable */ import React, { Component } from 'react'; import moment from 'moment'; -import { Input, Layout, Steps, Select, Button, Modal,message, Spin } from 'antd'; +import { Input, Layout, Steps, Select, Button, Modal,message, Spin } from 'antd-v4'; import { UserOutlined } from '@ant-design/icons'; import * as commonUtils from '@/utils/utils';/* 通用方法 */ import * as commonServices from '@/services/services';/* 服务类 */ diff --git a/src/components/Common/CommonGroupBill.js b/src/components/Common/CommonGroupBill.js new file mode 100644 index 0000000..87d9031 --- /dev/null +++ b/src/components/Common/CommonGroupBill.js @@ -0,0 +1,2400 @@ +/* eslint-disable */ + +import React, { Component } from 'react'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import {Row, Col, Checkbox, Layout, Spin, Tabs, Dropdown, Avatar, Button, message, Menu, Table, Upload} from 'antd-v4'; +import {DownOutlined, UploadOutlined,} from '@ant-design/icons'; +import CommonNewSales from '@/components/Common/CommonGroupBillEvent';/* 继承销售模块业务功能 */ +import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import styles from '@/index.less'; +import AssignmentField from './AssignmentField'; +import CommonView from '@/components/Common/CommonView'; +import CommonViewTable from '@/components/Common/CommonViewTable'; +import CommonViewDrag from '@/components/Common/CommonViewDrag'; +import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +import * as commonServices from '@/services/services';/* 服务类 */ +import AddIcon from '@/assets/add.svg'; +import DisableAddIcon from '@/assets/disableadd.svg'; +import CopyIcon from '@/assets/copy.svg'; +import CopyAllIcon from '@/assets/copyall.svg'; +import DisableCopyIcon from '@/assets/disablecopy.svg'; +import DisableCopyAllIcon from '@/assets/disablecopyall.svg'; +import DelIcon from '@/assets/delete.svg'; +import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */ +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from "./CommonListSelect"; +// import ProcessIcon from '../../assets/process.svg'; +// import DisableProcessIcon from '../../assets/disableprocess.svg'; +// import MateriallIcon from '../../assets/material.svg'; +// import DisableMateriallIcon from '../../assets/disablematerial.svg'; +// import SlaveMemo from './SlaveMemo'; + + +const width = '18px'; +const height = '18px'; +const setAdd = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 删除, +}; +const setCopy = { + title: '复制', + width: { width }, + height: { height }, + img: 复制, + disableimg: 复制, +}; +const setCopyAll = { + title: '复制部件', + width: { width }, + height: { height }, + img: 复制部件, + disableimg: 复制部件, +}; +const setDelete = { + title: '删除', + width: { width }, + height: { height }, + img: 删除, + disableimg: 删除, +}; +// const setProcess = { +// title: '工序', +// width: { width }, +// height: { height }, +// img: 选择工序, +// disableimg: 删除, +// }; +// const setMaterial = { +// title: '材料', +// width: { width }, +// height: { height }, +// img: 选择材料, +// disableimg: 选择材料, +// }; + +// console.log('btn; ', setAdd, setDelete, setCopy); +const { Header, Content } = Layout; +const { TabPane } = Tabs; +// const { confirm } = Modal; +class CommonNewBill extends Component { + constructor(props) { + super(props); + this.state = { + currentTab: 10, + processTableId: `processTableId_${commonUtils.createSid()}`, + }; + } + /** 行选择 */ + onRowClick = (name, record) => { + if (name === 'control') { + this.props.onTableSelectRowChange(name, [record.sId]); + } + }; + + onChange = (checkedValues) => { + this.props.onSaveState({ + dataPersonArray: checkedValues, + }); + }; + getMenuStatus = (menu) => { + if (menu.sControlName === 'BtnImport') { + return !this.props.enabled; + } + }; + + + /** 上传后执行函数 */ + // handleUploadChange = (info) => { + // const { file } = info; + // console.log(info, 'infoinfoinfoinfoinfoinfoinfoinfoinfo'); + // const { masterData, sModelsId, slaveConfig } = this.props; + // if (file.response) { + // if (file.response.code === 1) { + // /* 数据查询成功 */ + // const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + // if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + // return; + // } + // const returnData = file.response.dataset.rows[0].canbeInsert; + // returnData.forEach(async (tableDataRow) => { + // tableDataRow.handleType = 'add'; + // tableDataRow.sId = commonUtils.createSid(); + // tableDataRow.sParentId = masterData.sId; + // tableDataRow.key = tableDataRow.sId; + // for (const child of Object.keys(tableDataRow)) { + // const index = child.indexOf('_sRealValue_'); + // if (index > -1) { + // const property = child.substring(0, child.length - 12); + // tableDataRow[property] = tableDataRow[child]; + // } + // } + // // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductId'); + // let productIdDropDown; + // const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductId'); + // if (slaveIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + // productIdDropDown = sqlDropDownData.dropDownData; + // } + // if (productIdDropDown !== undefined) { + // const iProductIdIndex = 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, + // }); + // } + // } + // }); + // this.props.onSaveState({ slaveData: returnData }); + // } else { /* 失败 */ + // this.props.getServiceError(file.response); + // } + // } + // }; + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const uploadInfo = { + sPicturePath, + sFileName: file.name, + }; + const tableDataRow = this.props.onDataRowAdd(name, true); + const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props; + tableColumn.forEach((slaveChild) => { + const ckey = slaveChild.dataIndex; + if (ckey === 'sProductNo' || ckey === 'sProductName') { + tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : ''; + } else if (ckey === 'iOrder') { + tableDataRow[ckey] = ''; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue; + if (bCkxTmpCheck === '1') { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach((item) => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(','); + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_System_AutoSendCheckMsg', + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: '', + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString, + }, + }; + + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null); + const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId }; + const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false, + }); + return; + } + } else { /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false, + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false, + }); + }; + handleTableModal = async () => { + const { + sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, + } = this.props; + const addState = {}; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + // let dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyId'); + let dropdownProductClassifyId; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + // dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyName'); + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId); + if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) { + const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(','); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = slaveData[iSlaveIndex].dProductQty; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState, + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + + if (iIndex > -1) { + this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]); + } + }; + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + }; + handleOkModal = () => { + const { + controlData, slave0Data, processData, sModelsId, slaveData, slaveSelectedRowKeys, materialsConfig, processConfig, + } = this.props; + const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const mtData = slave0Data.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '2'); + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ''; + let pDetail = ''; + const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + ctData.forEach(async (controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? '' : ' '; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ''; + let ipDetail = ''; + const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId)); + // const materialsIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'materials', 'sMaterialsName'); + let materialsIdDropDown; + const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName'); + if (materialsIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]); + materialsIdDropDown = sqlDropDownData.dropDownData; + } + materials.forEach((mItem, i) => { + const fh = i === 0 ? '' : ','; + if (materialsIdDropDown) { + const materialsIdIndex = materialsIdDropDown.findIndex(item => item.sId === mItem.sMaterialsId); + if (materialsIdIndex > -1) { + imDetail = `${imDetail}${fh} ${materialsIdDropDown[materialsIdIndex].sMaterialsName}`; + } + } + }); + // processPropsType + const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId)); + // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName'); + let processIdDropDown; + const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + if (processIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]); + processIdDropDown = sqlDropDownData.dropDownData; + } + process.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + if (processIdDropDown) { + const processIdIndex = processIdDropDown.findIndex(item => item.sId === pItem.sProcessId); + if (processIdIndex > -1) { + ipDetail = `${ipDetail}${fh} ${processIdDropDown[processIdIndex].sProcessName}`; + } + } + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ''; + slaveData[slaveIndex].sProcessMemo = ''; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + slave0Data, + processData, + slaveData, + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + // eslint-disable-next-line no-unused-vars + handleFilterData = (name, dataIndex, value, record) => { + return true; + // const { slaveSelectedRowKeys } = this.props; + // if (name === 'process') { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } else { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys, slaveSelectedRowKeys } = this.props; + if (data !== undefined) { + const newArr = data.filter((item) => { + if (name === 'control') { + return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } else { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig, + } = this.props; + let tableDataRow = {}; + if (name === 'control') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); + }); + // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductName'); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + if (sModelsType === 'sales/salesOrder') { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else if (name === 'materials' || name === 'process') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts'); + message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]); + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') { + message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys) => { + if (name === 'control') { + const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + return true; + } else { + return false; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { + sModelsType, controlData, processData, materialsData, + } = this.props; + if (sModelsType === 'sales/salesOrder' && name === 'slave') { + const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true); + } + const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true); + } + const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, + } = this.props; + const tableSelectedRowKeys = []; + if (name === 'productProcessInfo') { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ''; + let sConfigMasterIdControl = ''; + let sConfigMasterIdMaterials = ''; + let sConfigMasterIdProcess = ''; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro')); + } + const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== '3') { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === '3') { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys }); + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + /** 上传后执行函数 */ + handleBeforeUpload = () => { + // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!isLt10M) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */ + // } + }; + + handleTabChange = (key) => { + setTimeout(() => { + this.setState({ + currentTab: key + }) + }, 0); + } + + handleMenuClick= (e) => { + let { sId } = this.props.masterData; + const Type = e.key; + const { token } = this.props.app; + const { sType } = this.props.app.userinfo; + if (Type === 'formSlave') { /* 根据从表勾选数据 生成从表数据 */ + const { slaveSelectedRowKeys } = this.props; + if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) { + message.warn('请选择数据'); + return; + } + sId = slaveSelectedRowKeys; + } + const downloadUrl = `${commonConfig.server_host}sqlfile/scriptSqlDownload?methodName=${Type + }&sId=${sId}&token=${token}&sType=${sType}`; + window.open(downloadUrl); + this.props.onSaveState({ + downloadUrl, + }); + }; + handleSlaveInit = async (name) => { + const { app, masterData, [`${name}Data`]: slaveData } = this.props; + if (masterData.sName !== null && masterData.sName !== undefined) { + message.warn('该节点不能初始化!'); + return; + } + // const comfiled = service.service_path.filter(item => (item.route === + // app.currentPane.route)).length <= 0 ? {} : + // service.service_path.filter(item => (item.route === + // app.currentPane.route))[0]; + const comfiled = { + path: 'gdsconfigform', + pathTwo: 'Gdsconfigformmaster', + pathSlave: 'Gdsconfigformslave', + pathCustom: 'Customslave', + pathInit: 'GdsconfigformslaveByMaster', + pathSlaveSelect: 'gdsmodule', + pathSlaveSelectTwo: 'SelectFormData', + }; + const url = `${commonConfig.server_host}${comfiled.path}/get${comfiled.pathInit + }?sParentId=${masterData.sId}&sTbName=${masterData.sTbName}&sType=${masterData.sType}`; + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const tempData = dataReturn.dataset.rows; + const initData = []; + tempData.forEach((item) => { + item.handleType = 'add'; + initData.push(item); + }); + const newData = [...slaveData, ...initData]; + this.props.onSaveState({ slaveData: newData, enabled: true }); + message.success('初始化成功!'); + } else { + message.warn('当前表格无需初始化!'); + } + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + }; + handleCopyRow = (name, toname) => { + this.props.onCopyRow(name, toname); + }; + handleCopy2Custom = () => { + let toname = 'slave2'; + for (let i = 0; i < 10; i++) { + const slaveConfigName = `slave${i}Config`; + const slaveConfig = this.props[slaveConfigName]; + if (slaveConfig && commonUtils.isNotEmptyObject(slaveConfig)) { + if (slaveConfig.sTbName === 'gdsconfigformcustomslave') { + toname = `slave${i}`; + break; + } + } + } + this.props.onCopyRow('slave', toname); + }; + /** 添加行 */ + handleAddRow = (name, index) => { + this.props.onDataRowAdd(name, null, index); + }; + /** 删除行 */ + handleDelRow = (name) => { + const { [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + if (this.props.onDataRowDel(name, false, tableSelectedRowKeys)) { + message.success('删除成功!'); + } + }; + + /* 字段双击弹出 */ + handleFieldDoubleClick = (sValue, showConfig, tbName) => { + const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, [`${tbName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyObject(showConfig) && showConfig.sName === 'sAssignField') { + let tableDataRow = {}; + if (commonUtils.isNotEmptyArr(tableData)) { + const tableFilterData = tableData.filter(item => tableSelectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableDataRow = tableFilterData[0]; + } + } + const sAssignFieldColumn = [ + { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sNewName', + title: '现字段', + width: '220px', + editable: true, + bNotSort: true, + }, { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sOldName', + title: '源字段', + width: '220px', + editable: true, + bNotSort: true, + }, + ]; + const sAssignFieldData = []; + if (commonUtils.isNotEmptyObject(tableDataRow) && commonUtils.isNotEmptyObject(sValue)) { + const selectedRowKeys = []; + const sAssignFieldDataTemp = sValue.split(','); + sAssignFieldDataTemp.forEach((index) => { + const aAssignFieldObj = {}; + const splitData = index.split(':'); + if (commonUtils.isNotEmptyArr(splitData)) { + aAssignFieldObj.sId = commonUtils.createSid(); + aAssignFieldObj.sNewName = splitData[0]; + aAssignFieldObj.sOldName = splitData[1]; + sAssignFieldData.push(aAssignFieldObj); + } + selectedRowKeys[0] = sAssignFieldData[0].sId; + }); + const { enabled } = this.props; + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData, + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + enabled, + }); + } else { + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData: [], + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + }); + } + } + }; + /* 拿到赋值字段 */ + handleGetsAssignField = (data, sFieldName) => { + if (sFieldName === 'sAssignField') { + const { sAssignFieldRowId, sAssignFieldName } = this.props; /* 双击弹出赋值窗体的行ID */ + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData)) { + const iIndex = tableData.findIndex(item => item.sId === sAssignFieldRowId); + const newData = {}; + /* 将数组变成赋值字符串 */ + let sAssignFieldStr = ''; + const len = data.length; + data.forEach((item, index) => { + sAssignFieldStr += `${item.sNewName}:${item.sOldName}`; + if (index !== (len - 1)) { + sAssignFieldStr += ','; + } + }); + newData.sAssignField = sAssignFieldStr; + newData.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...newData }; + this.props.onSaveState({ [`${sAssignFieldName}Data`]: tableData }); + } + } + } + + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleUploadChangeFile = async (info) => { + const { file } = info; + const { + masterData, sModelsId, app, token, sModelsType, slaveConfig, slaveData, + } = this.props; + if (file.response) { + if (file.response.code === 1) { + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + const importErrorData = errorInfo; + this.props.onSaveState({ + showImportErrorVisible: true, + importData: importErrorData + }); + return; + } + /* 把之前存放的数据删除 */ + const slaveDelData = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = 'del'; + slaveDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], returnData[0]); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + await returnData.forEach(async (tableDataRow) => { + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf('_sRealValue_'); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex(item => (item.sId === tableDataRow.sProductId || item.sNId === tableDataRow.sProductId) && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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, + }); + } + } + // if (!tableDataRow.dNProductPrice) { + // tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + // } + // const models = 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.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models); + // tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + // } else { + // tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + // } + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + + handleTableSelectRowChange = (name, selectedRowKeys, changeValue, chooseProcessParams) => { /* 表格行选择 */ + this.props.onTableSelectRowChange(name, selectedRowKeys, changeValue, chooseProcessParams); + } + + + // ----------------------------数据修改回带wend ---------------------------- // + + render() { + const { + pageLoading, visible, checkConditions, checkPersonData, app, + } = this.props; + const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */ + const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */ + const columns = [{ + title: checkCondition, + dataIndex: 'condition', + key: 'condition', + }, { + title: checkSmemo, + dataIndex: 'sMemo', + key: 'sMemo', + }]; + const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */ + const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */ + const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */ + const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */ + return ( +
+ +
+ + { + visible ? + {BtnClose}, + , + ]} + > +
+
{checkPerson}
+
+ + + { commonUtils.isNotEmptyObject(checkPersonData) ? + checkPersonData.map((item) => { + return ( +
+ {item.sUserName} + + ); + }) + : '' + } + + + + + : '' + } + + + + ); + } +} + +const BillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig} = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + AutoTableHeight, + masterConfig: masterConfigOld, + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + slaveData, + slave0Data, + slave1Data, + slave2Data, + slave3Data, + slave4Data, + slave5Data, + slave6Data, + slave7Data, + slave8Data, + slave9Data, + slave10Data, + masterConfig, + slaveConfig, + slave0Config, + slave1Config, + slave2Config, + slave3Config, + slave4Config, + slave5Config, + slave6Config, + slave7Config, + slave8Config, + slave9Config, + slave10Config, + slaveSelectedRowKeys, + slave0SelectedRowKeys, + slave1SelectedRowKeys, + slave2SelectedRowKeys, + slave3SelectedRowKeys, + slave4SelectedRowKeys, + app, + slavePagination, + slave0Pagination, + slave1Pagination, + slave2Pagination, + slave3Pagination, + slave4Pagination, + slave5Pagination, + slave6Pagination, + slave7Pagination, + slave8Pagination, + slave9Pagination, + slave10Pagination, + slavePageSize, + slave0PageSize, + slave1PageSize, + slave2PageSize, + slave3PageSize, + slave4PageSize, + slave5PageSize, + slave6PageSize, + slave7PageSize, + slave8PageSize, + slave9PageSize, + slave10PageSize, + sModelsType, + sModelsId, + } = props; + /* 回带表单 */ + onReturnForm(form); + const autoHeight = `calc( ${AutoTableHeight} - 96px)`; + const isSmall = false; + let pageSize = commonConfig.pageSize; + if (props.slaveConfig && props.slaveConfig.iPageSize) { + pageSize = props.slaveConfig.iPageSize; + } + + const sParamList = ['sProcess', 'sReport', 'sWorkOrder', 'sNorm', 'sTest']; // 右侧展示参数 + const sParamNameList = ['工序参数', '上报参数', '工单参数', '标准书参数', '测试参数']; // 右侧展示名称 + let bShowCommonViewDrag = false; + const sParamViewConfigList = sParamList.map((sName, index) => { + const paramConfig = props[`${sName}ParamConfig`]; + const bParamsTable = props[`b${sName}ParamTable`]; + let viewConfig = []; + if (bParamsTable) { + viewConfig = [{ + bVisible: true, + sName: 'sParamColumnConfig1' + }]; + bShowCommonViewDrag = true; + } else if (commonUtils.isNotEmptyObject(paramConfig) && commonUtils.isNotEmptyArr(paramConfig.gdsconfigformslave)) { + viewConfig = paramConfig.gdsconfigformslave.filter(item => item.bVisible); + bShowCommonViewDrag = true; + } + + if (masterConfig?.gdsconfigformslave) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === `${sName}Param`); + if (iIndex !== -1) { + sParamNameList[index] = masterConfig.gdsconfigformslave[iIndex].showName; + } + } + + return viewConfig; + }); + + const bPagination = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.bPagination : false; + const bPagination0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.bPagination : false; + const bPagination1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.bPagination : false; + const bPagination2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.bPagination : false; + const bPagination3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.bPagination : false; + const bPagination4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.bPagination : false; + const bPagination5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.bPagination : false; + const bPagination6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.bPagination : false; + const bPagination7 = commonUtils.isNotEmptyObject(slave7Config) ? slave7Config.bPagination : false; + const bPagination8 = commonUtils.isNotEmptyObject(slave8Config) ? slave8Config.bPagination : false; + const bPagination9 = commonUtils.isNotEmptyObject(slave9Config) ? slave9Config.bPagination : false; + const bPagination10 = commonUtils.isNotEmptyObject(slave10Config) ? slave10Config.bPagination : false; + + const pagination = !bPagination ? false : { + pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // showQuickJumper: true, + hideOnSinglePage: false, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination0 = !bPagination0 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave0PageSize) && slave0PageSize !== 0 ? slave0PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave0Data) ? 0 : slave0Data.length, + current: commonUtils.isEmptyObject(slave0Pagination) ? 1 : slave0Pagination.current, + ...slave0Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination1 = !bPagination1 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave1PageSize) && slave1PageSize !== 0 ? slave1PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave1Data) ? 0 : slave1Data.length, + current: commonUtils.isEmptyObject(slave1Pagination) ? 1 : slave1Pagination.current, + ...slave1Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination2 = !bPagination2 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave2PageSize) && slave2PageSize !== 0 ? slave2PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave2Data) ? 0 : slave2Data.length, + current: commonUtils.isEmptyObject(slave2Pagination) ? 1 : slave2Pagination.current, + ...slave2Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination3 = !bPagination3 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave3PageSize) && slave3PageSize !== 0 ? slave3PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave3Data) ? 0 : slave3Data.length, + current: commonUtils.isEmptyObject(slave3Pagination) ? 1 : slave3Pagination.current, + ...slave3Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination4 = !bPagination4 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave4PageSize) && slave4PageSize !== 0 ? slave4PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave4Data) ? 0 : slave4Data.length, + current: commonUtils.isEmptyObject(slave4Pagination) ? 1 : slave4Pagination.current, + ...slave4Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + const pagination5 = !bPagination5 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave5PageSize) && slave5PageSize !== 0 ? slave5PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave5Data) ? 0 : slave5Data.length, + current: commonUtils.isEmptyObject(slave5Pagination) ? 1 : slave5Pagination.current, + ...slave5Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination6 = !bPagination6 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave6PageSize) && slave6PageSize !== 0 ? slave6PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave6Data) ? 0 : slave6Data.length, + current: commonUtils.isEmptyObject(slave6Pagination) ? 1 : slave6Pagination.current, + ...slave6Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination7 = !bPagination7 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave7PageSize) && slave7PageSize !== 0 ? slave7PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave7Data) ? 0 : slave7Data.length, + current: commonUtils.isEmptyObject(slave7Pagination) ? 1 : slave7Pagination.current, + ...slave7Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination8 = !bPagination8 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave8PageSize) && slave8PageSize !== 0 ? slave8PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave8Data) ? 0 : slave8Data.length, + current: commonUtils.isEmptyObject(slave8Pagination) ? 1 : slave8Pagination.current, + ...slave8Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination9 = !bPagination9 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave9PageSize) && slave9PageSize !== 0 ? slave9PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave9Data) ? 0 : slave9Data.length, + current: commonUtils.isEmptyObject(slave9Pagination) ? 1 : slave9Pagination.current, + ...slave9Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination10 = !bPagination10 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave10PageSize) && slave10PageSize !== 0 ? slave10PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave10Data) ? 0 : slave10Data.length, + current: commonUtils.isEmptyObject(slave10Pagination) ? 1 : slave10Pagination.current, + ...slave10Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + /* 表1-commonView显示区域 */ + const ableConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + /* 选中行 */ + let showAll = true; /* 只显示表格 */ + let bShowLeft = true; /* 表格显示在左侧 */ + let iColValueView = 12; + let iColValueTable = 12; + // let slaveRow = {}; + // if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + // const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + // if (iIndex > -1) { + // slaveRow = slaveData[iIndex]; + // } else { + // slaveRow = slaveData[0]; + // } + // } else if (commonUtils.isNotEmptyArr(slaveData)) { + // slaveRow = slaveData[0]; + // } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iIndexArea = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll = false; + } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iShowLeft = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft > -1) { + bShowLeft = true; + iColValueTable = slaveConfig.gdsconfigformslave[iShowLeft].iColValue; + } else if (iShowRight > -1) { + bShowLeft = false; + iColValueTable = slaveConfig.gdsconfigformslave[iShowRight].iColValue; + } + } + } + iColValueView = commonUtils.isNotEmptyNumber(iColValueTable) ? 24 - iColValueTable : 12; + const iShowOrder = bShowLeft ? 1 : 100; + + + /* 表2-commonView显示区域 */ + const ableConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + let showAll0 = true; /* 只显示表格 */ + let bShowLeft0 = true; /* 表格显示在左侧 */ + let iColValueView0 = 12; + let iColValueTable0 = 12; + let slave0Row = {}; + if (commonUtils.isNotEmptyArr(slave0SelectedRowKeys)) { + const iIndex = slave0Data.findIndex(item => slave0SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave0Row = slave0Data[iIndex]; + } else { + slave0Row = slave0Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave0Data)) { + slave0Row = slave0Data[0]; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iIndexArea = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll0 = false; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iShowLeft0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft0 > -1) { + bShowLeft0 = true; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowLeft0].iColValue; + } else if (iShowRight0 > -1) { + bShowLeft0 = false; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowRight0].iColValue; + } + } + } + iColValueView0 = commonUtils.isNotEmptyNumber(iColValueTable0) ? 24 - iColValueTable0 : 12; + const iShowOrder0 = bShowLeft0 ? 1 : 100; + + + /* 表3-commonView显示区域 */ + const ableConfigs1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + let showAll1 = true; /* 只显示表格 */ + let bShowLeft1 = true; /* 表格显示在左侧 */ + let iColValueView1 = 12; + let iColValueTable1 = 12; + let slave1Row = {}; + if (commonUtils.isNotEmptyArr(slave1SelectedRowKeys)) { + const iIndex = slave1Data.findIndex(item => slave1SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave1Row = slave1Data[iIndex]; + } else { + slave1Row = slave1Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave1Data)) { + slave1Row = slave1Data[0]; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iIndexArea = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll1 = false; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iShowLeft1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft1 > -1) { + bShowLeft1 = true; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowLeft1].iColValue; + } else if (iShowRight1 > -1) { + bShowLeft1 = false; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowRight1].iColValue; + } + } + } + iColValueView1 = commonUtils.isNotEmptyNumber(iColValueTable1) ? 24 - iColValueTable1 : 12; + const iShowOrder1 = bShowLeft1 ? 1 : 100; + + + /* 表4-commonView显示区域 */ + const ableConfigs2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + let showAll2 = true; /* 只显示表格 */ + let bShowLeft2 = true; /* 表格显示在左侧 */ + let iColValueView2 = 12; + let iColValueTable2 = 12; + let slave2Row = {}; + if (commonUtils.isNotEmptyArr(slave2SelectedRowKeys)) { + const iIndex = slave2Data.findIndex(item => slave2SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave2Row = slave2Data[iIndex]; + } else { + slave2Row = slave2Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave2Data)) { + slave2Row = slave2Data[0]; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iIndexArea = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll2 = false; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iShowLeft2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft2 > -1) { + bShowLeft2 = true; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowLeft2].iColValue; + } else if (iShowRight2 > -1) { + bShowLeft2 = false; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowRight2].iColValue; + } + } + } + iColValueView2 = commonUtils.isNotEmptyNumber(iColValueTable2) ? 24 - iColValueTable2 : 12; + const iShowOrder2 = bShowLeft2 ? 1 : 100; + + /* 表5-commonView显示区域 */ + const ableConfigs3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + let showAll3 = true; /* 只显示表格 */ + let bShowLeft3 = true; /* 表格显示在左侧 */ + let iColValueView3 = 12; + let iColValueTable3 = 12; + let slave3Row = {}; + if (commonUtils.isNotEmptyArr(slave3SelectedRowKeys)) { + const iIndex = slave3Data.findIndex(item => slave3SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave3Row = slave3Data[iIndex]; + } else { + slave3Row = slave3Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave3Data)) { + slave3Row = slave3Data[0]; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iIndexArea = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll3 = false; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iShowLeft3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft3 > -1) { + bShowLeft3 = true; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowLeft3].iColValue; + } else if (iShowRight3 > -1) { + bShowLeft3 = false; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowRight3].iColValue; + } + } + } + iColValueView3 = commonUtils.isNotEmptyNumber(iColValueTable3) ? 24 - iColValueTable3 : 12; + const iShowOrder3 = bShowLeft3 ? 1 : 100; + + /* 表6-commonView显示区域 */ + const ableConfigs4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + let showAll4 = true; /* 只显示表格 */ + let bShowLeft4 = true; /* 表格显示在左侧 */ + let iColValueView4 = 12; + let iColValueTable4 = 12; + let slave4Row = {}; + if (commonUtils.isNotEmptyArr(slave4SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave4SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave4Row = slave4Data[iIndex]; + } else { + slave4Row = slave4Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave4Data)) { + slave4Row = slave4Data[0]; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iIndexArea = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll4 = false; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iShowLeft4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft4 > -1) { + bShowLeft4 = true; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowLeft4].iColValue; + } else if (iShowRight4 > -1) { + bShowLeft4 = false; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowRight4].iColValue; + } + } + } + iColValueView4 = commonUtils.isNotEmptyNumber(iColValueTable4) ? 24 - iColValueTable4 : 12; + const iShowOrder4 = bShowLeft4 ? 1 : 100; + + + const listType = 'commonMultiList'; + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination, onChange: props.onTitleChange.bind(this, 'slave'), AutoTableHeight: 500, + }, + }; + const slave0TableProps = { + ...commonBusiness.getTableTypes('slave0', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination : pagination0, onChange: props.onTitleChange.bind(this, 'slave0'), + }, + }; + const slave1TableProps = { + ...commonBusiness.getTableTypes('slave1', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination1, onChange: props.onTitleChange.bind(this, 'slave1'), + }, + }; + const slave2TableProps = { + ...commonBusiness.getTableTypes('slave2', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination2, onChange: props.onTitleChange.bind(this, 'slave2'), + }, + }; + const slave3TableProps = { + ...commonBusiness.getTableTypes('slave3', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination3, onChange: props.onTitleChange.bind(this, 'slave3'), + }, + }; + const slave4TableProps = { + ...commonBusiness.getTableTypes('slave4', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination4, onChange: props.onTitleChange.bind(this, 'slave4'), + }, + }; + const slave5TableProps = { + ...commonBusiness.getTableTypes('slave5', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination5, onChange: props.onTitleChange.bind(this, 'slave5'), + }, + }; + + const slave6TableProps = { + ...commonBusiness.getTableTypes('slave6', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination6, onChange: props.onTitleChange.bind(this, 'slave6'), + }, + }; + + const slave7TableProps = { + ...commonBusiness.getTableTypes('slave7', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination7, onChange: props.onTitleChange.bind(this, 'slave7'), + }, + }; + + const slave8TableProps = { + ...commonBusiness.getTableTypes('slave8', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination8, onChange: props.onTitleChange.bind(this, 'slave8'), + }, + }; + + const slave9TableProps = { + ...commonBusiness.getTableTypes('slave9', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination9, onChange: props.onTitleChange.bind(this, 'slave9'), + }, + }; + + const slave10TableProps = { + ...commonBusiness.getTableTypes('slave10', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination10, onChange: props.onTitleChange.bind(this, 'slave10'), + }, + }; + + /* 从表view */ + const sParamViewProps = { + ...props, + iColValueView, + }; + + sParamList.forEach((sName, index) => { + const i = index === 0 ? '' : index; + const paramData = props[`${sName}ParamData`]; + sParamViewProps[`view${i}Configs`] = sParamViewConfigList[index]; + sParamViewProps[`table${i}Config`] = sParamViewConfigList[index]; + sParamViewProps[`view${i}Row`] = commonUtils.isNotEmptyArr(paramData) ? paramData[0] : {}; + sParamViewProps[`table${i}Name`] = `${sName}Param`; + sParamViewProps[`panel${i}Name`] = `${sName}Panel`; + sParamViewProps[`tabPane${i}Config`] = { tab: sParamNameList[index], key: sName, i }; + }) + + /* 第二张表 */ + const slave0ViewProps = { + ...props, + viewConfigs: ableConfigs0, + tableConfig: slave0Config, + iColValueView:iColValueView0, + viewRow: slave0Row, + tableName: 'slave0', + }; + /* */ + const slave1ViewProps = { + ...props, + viewConfigs: ableConfigs1, + tableConfig: slave1Config, + iColValueView:iColValueView1, + viewRow: slave1Row, + tableName: 'slave1', + }; + /* 从表view */ + const slave2ViewProps = { + ...props, + viewConfigs: ableConfigs2, + tableConfig: slave2Config, + iColValueView:iColValueView2, + viewRow: slave2Row, + tableName: 'slave2', + }; + + /* pack表view */ + const slave3ViewProps = { + ...props, + viewConfigs: ableConfigs3, + tableConfig: slave3Config, + iColValueView:iColValueView3, + viewRow: slave3Row, + tableName: 'slave3', + }; + + const slave4ViewProps = { + ...props, + viewConfigs: ableConfigs4, + tableConfig: slave4Config, + iColValueView:iColValueView4, + viewRow: slave4Row, + tableName: 'slave4', + }; + + /* 获取AssignmentField中的props */ + const assignmentFieldProps = { + visibleAssignmentField: props.visibleAssignmentField, /* 是否展示 */ + sAssignFieldData: props.sAssignFieldData, /* 数据 */ + sAssignFieldColumn: props.sAssignFieldColumn, /* 表头 */ + selectedRowKeys: props.selectedRowKeys, /* 选中 */ + sAssignFieldSelectedRowKeys: props.selectedRowKeys, /* 选中 */ + onSaveState: props.onSaveState, /* 保存数据方法 */ + onDataRowAdd: props.handleAddRow.bind(this, 'sAssignField'), + onDataRowDel: props.handleDelRow.bind(this, 'sAssignField'), + onDataRowCopy: props.handleCopyRow.bind(this, 'sAssignField'), + // onRowClick: props.handleRowClick.bind(this, 'sAssignField'), + config: props.config, + app: props.app, + enabled: props.enabled, + onDataChange: props.onChange, + onGetsAssignField: props.onGetsAssignField, + handleFieldDoubleClick: props.handleFieldDoubleClick, + }; + + // const slaveInfo = commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + // const materialsInfo = commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 材料表 */ + // const checkInfo = commonFunc.showMessage(app.commonConst, 'zCheck'); /* 审核表 */ + // const slaveInfo0 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 工序表 */ + // const slaveInfo1 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表二 */ + // const slaveInfo2 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表三 */ + let slaveInfo = ''; + let materialsInfo = ''; + let checkInfo = ''; + let slaveInfo0 = ''; + let slaveInfo1 = ''; + let slaveInfo2 = ''; + let slaveInfo3 = ''; + let slaveInfo4 = ''; + let slaveInfo5 = ''; + let slaveInfo6 = ''; + let slaveInfo7 = ''; + let slaveInfo8 = ''; + + if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + slaveInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')[0].showName : commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + materialsInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')[0].showName : commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 表一 */ + checkInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')[0].showName : commonFunc.showMessage(app.commonConst, 'zCheck'); /* 表二 */ + slaveInfo0 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 表三 */ + slaveInfo1 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表四 */ + slaveInfo2 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表五 */ + slaveInfo3 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo3'); /* 表六 */ + slaveInfo4 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo4'); /* 表七 */ + slaveInfo5 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo5'); /* 表八 */ + slaveInfo6 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo6'); /* 表九 */ + slaveInfo7 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo7'); /* 表十 */ + slaveInfo8 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo8'); /* 表十一 */ + + } + + let productProcessInfoType = {}; + let productProcessInfoConfig = {}; + let processCardSearchResult = commonFunc.showMessage(app.commonConst, 'processCardSearchResult');/* 复制从工艺卡查询结果 */ + if (commonUtils.isNotEmptyObject(props.productProcessInfoChooseData)) { + const productProcessInfoCopyFromKey = props.productProcessInfoCopyFromKey; + const iIndex = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === productProcessInfoCopyFromKey); + if (iIndex > -1) { + productProcessInfoConfig = props.masterConfig.gdsconfigformslave[iIndex]; + processCardSearchResult = commonUtils.isNotEmptyObject(productProcessInfoConfig) && commonUtils.isNotEmptyObject(productProcessInfoConfig.sActiveName) ? productProcessInfoConfig.sActiveName : processCardSearchResult; + } + productProcessInfoType = { + app: { + ...props.app, + currentPane: { + name: 'productProcessInfo', + config: productProcessInfoConfig, + conditonValues: props.getSqlCondition(productProcessInfoConfig), + title: props.productProcessInfoChooseData.sMenuName, + route: props.productProcessInfoChooseData.sName, + formId: props.productProcessInfoChooseData.sId, + key: props.sModelsId + props.productProcessInfoChooseData.sId, + sModelsType: props.productProcessInfoChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + }; + } + + let isSysSetting = false; + if (props && props.app && props.app.currentPane && props.app.currentPane.title && props.app.currentPane && props.app.currentPane.title === "功能模块界面设置单据") { + isSysSetting = true; + } + const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0]; + let gdsconfigformmasterId = ''; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + const sNotEmpty = 'sParentId,sProductId'; + let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`; + /* 送货单需要传客户id */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile, /* 文件上传 */ + accept: 'xls/*', + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + }, + }; + + const uploadPropsSales = props.onUploadPropsSales(); + const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */ + + + /* 显示导入报错信息 */ + let importExcelProps = {}; + let importExcelTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, 'processCardSearchResult')) ? + commonFunc.showMessage(app.commonConst, 'importErrorMsg') : '导入校验信息'; /* 导入校验信息 */ + if (commonUtils.isNotEmptyObject(props)) { + importExcelProps = { + ...commonBusiness.getTableTypes('import', props), + tableProps: { + pagination:null, AutoTableHeight: 400, + }, + // data: bSingleTree && commonUtils.isNotEmptyArr(slaveData) ? commonUtils.genTreeByArr(slaveData, 'sId', 'sFatherSlaveId') : slaveData, + onDelRow: props.onDelRow, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + tableBelone: 'list', + }; + } + + // + // const menu = ( + // + // 生成主表当前数据(完全) + // 生成整表当前数据(完全) + // 生成从表当前数据 + // + // ); + /* 取 masterConfig中有多少个Tab页签配置 */ + const masterShowConfig = commonUtils.isNotEmptyObject(masterConfigOld) ? masterConfigOld.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; + const diliverConfigTypeArr = []; /* 有Tab的配置 */ + masterShowConfig.forEach((child) => { + if (child.sControlName.indexOf('_') > -1) { + const tableType = child.sControlName.split('_')[1]; + const isIndex = diliverConfigTypeArr.findIndex(item => item === tableType); + if (isIndex === -1) { + diliverConfigTypeArr.push(tableType); + } + } + }); + + /* 主表页签+表格页签排序规则,表格页签以10位一个间隔,10,20,30,40,50,60,如果想进行排序 则页签顺序介入其间即可 */ + /* 找到各个主表页签Tab所处的区间 */ + let diliverConfigTypeArr1 = []; + let diliverConfigTypeArr2= []; + let diliverConfigTypeArr3 = []; + let diliverConfigTypeArr4 = []; + let diliverConfigTypeArr5 = []; + let diliverConfigTypeArr6 = []; + for (const item of diliverConfigTypeArr) { + let numStr = item.replace(/[^\d]/g, '').trim(); + let num = Number(numStr); + if(!commonUtils.isEmpty(num)) { + if(num < 10) { /* 0- 10 */ + diliverConfigTypeArr1.push(item); + } else if(num < 20) { /* 10- 20 */ + diliverConfigTypeArr2.push(item); + } else if(num < 30) { /* 20- 30 */ + diliverConfigTypeArr3.push(item); + } else if(num < 40) { /* 30- 40 */ + diliverConfigTypeArr4.push(item); + } else if(num < 50) { /* 40- 50 */ + diliverConfigTypeArr5.push(item); + } else if(num < 60) { /* 50- 60 */ + diliverConfigTypeArr6.push(item); + } + } + } + + return ( + + +
+
+ +
+ { commonUtils.isNotEmptyArr(ImportData) ? +
+ {BtnimportData} +
: ''} +
+ + +
+
+
+
+
+
+
+ +
+ + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr1) ? + diliverConfigTypeArr1.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave ? + +
+ +
+ + + { + bShowCommonViewDrag ? : '' + } + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr2) ? + diliverConfigTypeArr2.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave0 ? + +
+ +
+ + + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr3) ? + diliverConfigTypeArr3.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave1 ? + +
+ +
+ + + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr4) ? + diliverConfigTypeArr4.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave2 ? + +
+ +
+ + + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr5) ? + diliverConfigTypeArr5.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave3 ? + +
+ +
+ + + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr6) ? + diliverConfigTypeArr6.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave4 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave5 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave6 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave7 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave8 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave9 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave10 ? + +
+ +
+ + + + + + : '' + } + + + + { + props.productProcessInfoChooseVisible ? + + + + : '' + } + { + props.showImportErrorVisible ? + + + + : '' + } +
+ +
+ + + + ); +}); + +export default CommonBase(CommonNewSales(CommonNewBill)); diff --git a/src/components/Common/CommonGroupBillEvent.js b/src/components/Common/CommonGroupBillEvent.js new file mode 100644 index 0000000..3111706 --- /dev/null +++ b/src/components/Common/CommonGroupBillEvent.js @@ -0,0 +1,4479 @@ +/* eslint-disable */ +import React, { Component } from 'react'; +import { Modal, message } from 'antd-v4'; +// import moment from 'moment'; +import * as commonUtils from '@/utils/utils'; /* 通用方法 */ +import {commonBusiness} from '@/components/Common/commonBusiness'; /* 单据业务功能 */ +import * as commonServices from '@/services/services'; /* 服务类 */ +import commonConfig from '@/utils/config'; +import * as commonFunc from '@/components/Common/commonFunc'; + + +const { confirm } = Modal; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + initSId: '' + } + // this.state = { + // masterConfig: {}, /* 主表配置 */ + // slaveConfig: {}, /* 从表配置 */ + // slaveColumn: [], /* 显示的从表表头 */ + // checkConfig: {}, /* 审核配置 */ + // checkColumn: [], /* 显示的审核表表头 */ + // + // billnosetting: {}, /* 是否自动审核 */ + // report: [], /* 打印模板 */ + // masterData: {}, /* 主表数据 */ + // slaveData: [], /* 从表数据 */ + // dataTotal: {}, /* 合计字段 */ + // checkData: [], /* 审核表数据 */ + // masterFlag: false, /* 是否获取主表数据 */ + // slaveFlag: false, /* 是否获取从表数据 */ + // checkFlag: false, /* 是否获取审核表数据 */ + // sId: '', /* 数据Id */ + // enabled: false, /* 页面是否可编辑 */ + // slaveSelectedRowKeys: [], /* 已选择的数据行(数据格式:数组) */ + // slaveDelData: [], /* 已删除的数据集合,保存的时候会与从表一并传给服务器(数据格式:数组) */ + // expand: false, /* 默认主表只显示2行 */ + // imgSrc: '', /* Avatar组件中的img中src的资源路径 */ + // currentIndexFlag: false, /* 默认不显示当前的数据在主表页的位置序号 */ + // }; + this.form = {}; /* 表单对象 */ + this.copyName = ''; + const { sModelsId, sModelsType } = props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sSrcNo', []); + } + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, + } = nextProps; + const { masterConfig: masterConfigOld, app } = nextProps; + if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) { + const sId = currentId !== undefined ? currentId : ''; + const masterConfig = formData.filter(item => !item.bGrd)[0]; + + const sReasonTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, 'sReason'))? + commonFunc.showMessage(app.commonConst, 'sReason') : '报错原因';/* 导入报错原因 */ + + /* 导入错误配置 */ + let importConfig = {}; + let importFilterData = formData.filter(item => item.bReportData && item.sGrd === 'importTemplate'); + if(commonUtils.isNotEmptyArr(importFilterData)) { + importConfig = formData.filter(item => item.bReportData && item.sGrd === 'importTemplate')[0]; + const iIndex = importConfig.gdsconfigformslave.findIndex(item => item.sName === 'sReason'); + if(iIndex === -1) { + importConfig.gdsconfigformslave.push({ + bCanInput: false, + bEntireLine: false, + bFilter: false, + bFind: false, + bFirstEmpty: false, + bIsOther: false, + bMultipleChoice: false, + bNewRecord: false, + bNotEmpty: false, + bNotRepeat: false, + bReadonly: false, + bSum: false, + bTree: false, + bVisible: true, + iColValue: 1, + iFitWidth: 200, + /* iIncrement: 26154, */ + iOrder: 1, + iTag: 0, + iVisCount: 0, + iconName: 'menu-unfold', + sActiveKey: '', + sAssignField: '', + sBig5: '', + sBig5DropDown: '', + sBrandsId: '1111111111', + sChinese: '报错原因', + sChineseDropDown: '', + sColor: '', + sColorTerms: '', + sControlName: '', + sDateFormat: '', + sDefault: '', + sDropDownType: '', + sEnglish: '', + sEnglishDropDown: '', + sFilterSql: '', + /* sId: '19211681019715580740769130', */ + sKeyUpFilter: '', + sMaxValue: '', + sMinValue: '', + sName: 'sReason', + sNotRepeatColumn: '', + /* sParentId: '19211681019715428730724240', */ + sRelation: '', + sSelectRelation: '', + sSqlCondition: '', + sSubsidiaryId: '1111111111', + showDropDown: '', + showName: sReasonTitle, + }); + } + } + let importColumn = []; + if (commonUtils.isNotEmptyObject(importConfig)) { + importColumn = commonFunc.getHeaderConfig(importConfig); + } + + const config = {}; + let addState = {}; + let addOtherState = {}; + let onlySlave = false; + let onlySlave0 = false; + let onlySlave1 = false; + let onlyslave2 = false; + let onlyslave3 = false; + let onlyslave4 = false; + let slaveColumn = []; + let slave0Column = []; + let slave1Column = []; + let slave2Column = []; + let slave3Column = []; + let slave4Column = []; + const slaveConfig = formData.length > 1 ? formData[1] : {}; + if (!commonUtils.isEmptyObject(slaveConfig) && slaveConfig.bGrdVisible) { + config.slaveConfig = slaveConfig; + slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + onlySlave = true; + const slavePageSize = commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyNumber(slaveConfig.iPageSize) && slaveConfig.iPageSize !== 0 ? + slaveConfig.iPageSize : commonConfig.pageSize; + addOtherState.slavePageSize = slavePageSize; + } + const slave0Config = formData.length > 2 ? formData[2] : {}; + if (!commonUtils.isEmptyObject(slave0Config) && slave0Config.bGrdVisible) { + config.slave0Config = slave0Config; + slave0Column = commonFunc.getHeaderConfig(slave0Config); + onlySlave0 = true; + const slave0PageSize = commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyNumber(slave0Config.iPageSize) && slave0Config.iPageSize !== 0 ? + slave0Config.iPageSize : commonConfig.pageSize; + addOtherState.slave0PageSize = slave0PageSize; + + } + const slave1Config = formData.length > 3 ? formData[3] : {}; + if (!commonUtils.isEmptyObject(slave1Config) && slave1Config.bGrdVisible) { + config.slave1Config = slave1Config; + slave1Column = commonFunc.getHeaderConfig(slave1Config); + onlySlave1 = true; + const slave1PageSize = commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyNumber(slave1Config.iPageSize) && slave1Config.iPageSize !== 0 ? + slave1Config.iPageSize : commonConfig.pageSize; + addOtherState.slave0PageSize = slave1PageSize; + } + const slave2Config = formData.length > 4 ? formData[4] : {}; + if (!commonUtils.isEmptyObject(slave2Config) && slave2Config.bGrdVisible) { + config.slave2Config = slave2Config; + slave2Column = commonFunc.getHeaderConfig(slave2Config); + onlyslave2 = true; + const slave2PageSize = commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyNumber(slave2Config.iPageSize) && slave2Config.iPageSize !== 0 ? + slave2Config.iPageSize : commonConfig.pageSize; + addOtherState.slave2PageSize = slave2PageSize; + } + const slave3Config = formData.length > 5 ? formData[5] : {}; + if (!commonUtils.isEmptyObject(slave3Config) && slave3Config.bGrdVisible) { + config.slave3Config = slave3Config; + slave3Column = commonFunc.getHeaderConfig(slave3Config); + onlyslave3 = true; + const slave3PageSize = commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyNumber(slave3Config.iPageSize) && slave3Config.iPageSize !== 0 ? + slave3Config.iPageSize : commonConfig.pageSize; + addOtherState.slave3PageSize = slave3PageSize; + } + const slave4Config = formData.length > 6 ? formData[6] : {}; + if (!commonUtils.isEmptyObject(slave4Config) && slave4Config.bGrdVisible) { + config.slave4Config = slave4Config; + slave4Column = commonFunc.getHeaderConfig(slave4Config); + onlyslave4 = true; + const slave4PageSize = commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyNumber(slave4Config.iPageSize) && slave4Config.iPageSize !== 0 ? + slave4Config.iPageSize : commonConfig.pageSize; + addOtherState.slave4PageSize = slave4PageSize; + } + /* commonNewBill 可以一带N表 */ + const tableConfigArr = formData.filter(item => item.bGrd && item.bGrdVisible); + const slaveOtherConfigArr = []; + if(commonUtils.isNotEmptyArr(tableConfigArr)) { + tableConfigArr.forEach((item, iIndex) => { + if(iIndex > 5) { + const iSlaveTag = iIndex - 1; + item.slaveNameTag = iSlaveTag; + slaveOtherConfigArr.push(item); + const slaveOtherConfigName = 'slave' + iSlaveTag + 'Config'; + let slaveOtherColumnName = 'slave' + iSlaveTag + 'Column'; + const onlyslaveTag= 'onlyslave' + iSlaveTag; + const slavePageSizeTag = 'slave' + iSlaveTag + 'PageSize'; + const slaveOtherColumn = commonFunc.getHeaderConfig(item); + addOtherState[slaveOtherConfigName] = item; + addOtherState[slaveOtherColumnName] = slaveOtherColumn; + addOtherState[onlyslaveTag] = true; + const slavePageSize = commonUtils.isNotEmptyObject(item) && commonUtils.isNotEmptyNumber(item.iPageSize) && item.iPageSize !== 0 ? + item.iPageSize : commonConfig.pageSize; + addOtherState[slavePageSizeTag] = slavePageSize; + } + }); + addOtherState.slaveOtherConfigArr = slaveOtherConfigArr; + } + + + config.masterConfig = masterConfig; + + if (sId === '') { + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + // 如果配置了bEmptyAddLine, 默认不添加空数据 + formData.forEach((item, index) => { + if (index > 0) { + const tempConfig = formData[index]; + const i = index === 1 ? '' : index - 2; + if (commonUtils.isNotEmptyObject(tempConfig) && tempConfig.bGrdVisible) { + const bEmptyAddLine = tempConfig.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + addState[`slave${i}Data`] = []; + } + } + } + }); + } else { + this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave5Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave6Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave7Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave8Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave9Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave10Config : null); + } + this.props.onSaveState({ + masterConfig, + sId, + pageLoading: false, + ...addState, + slaveConfig, + slaveColumn, + slave0Config, + slave0Column, + slave1Config, + slave1Column, + slave2Config, + slave2Column, + slave3Config, + slave3Column, + slave4Config, + slave4Column, + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + importConfig, + importColumn, + ...addOtherState + }); + } + } + + shouldComponentUpdate(nextProps) { + const { slaveColumn, masterConfig } = nextProps; + return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); + } + + /** 获取应收账款 */ + getCustomerReceipt = async (masterData) => { + const { sModelsId } = this.props; + if (!commonUtils.isEmpty(masterData.sCustomerId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { sProName: 'Sp_Receivables_AR', paramsMap: { sStatistics: masterData.sCustomerId } }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + const [returnData] = dataReturn.dataset.rows[0].dataSet.outData; + const masterDataNew = { + ...masterData, + dNoReceiptMoney: returnData.dNoReceiptMoney, + dDueReceiptMoney: returnData.dNoReceiptMoney, + }; + this.props.onSaveState({ masterData: masterDataNew }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + }; + + /** 获取上查下查数据 */ + getSearchUpDownData = async (showConfig) => { + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}searchupdown/getSearchUpDown/${showConfig.sId}?sModelsId=${sModelsId}`; + const conditonValues = this.props.getSqlCondition(showConfig); + if (commonUtils.isNotEmptyObject(conditonValues)) { + const iIndex = Object.keys(conditonValues).findIndex(item => commonUtils.isEmpty(conditonValues[item])); + if (iIndex === -1) { + /* 调用后台接口 */ + const body = { + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + return dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config) => { + const { currentId, app } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props; + await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick }); + let addStateSlave = {}; + if (!commonUtils.isEmptyObject(slaveConfig)) { + addStateSlave = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave) && commonUtils.isNotEmptyArr(addStateSlave.slaveData)) { + // let slaveDelData = []; + // addStateSlave.slaveData.forEach((item) => { + // item.handleType = 'del'; + // slaveDelData.push(item); + // }); + // addStateSlave.slaveData = [] + // let sDepartNameDropDown; + // const allTableData = {}; + // const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sDepartName'); + // if (masterIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex]); + // sDepartNameDropDown = sqlDropDownData.dropDownData; + // sDepartNameDropDown.forEach((item) => { + // 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 = 0; + // tableDataRowAdd.sDepartName = item.sName; + // addStateSlave.slaveData.push(tableDataRowAdd); + // }); + // } + if (app) { + const { currentPane } = app; + if (currentPane) { + const temp = addStateSlave.slaveData.find(item => + item.sName === app.currentPane.sName + ) + if (temp && bEditClick!=='update') { + addStateSlave.slaveSelectedRowKeys = [ temp.sId ]; + this.setState({ + initSId: temp.sId + }) + } else if (temp && bEditClick === 'update') { + /* 修改后 选中行不要消失 */ + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + addStateSlave.slaveSelectedRowKeys = slaveSelectedRowKeys; + } + + } + } + } + + if (commonUtils.isNotEmptyStr(addStateSlave.slaveData)) { + const selectRowKey = addStateSlave.slaveData[0].sId; + const selectRowKeyArr = []; + selectRowKeyArr.push(selectRowKey); + this.handleTableSelectRowChange('slave', selectRowKeyArr, addStateSlave.slaveData); + } + + + } + let addStateSlave1 = {}; + if (!commonUtils.isEmptyObject(slave1Config)) { + addStateSlave1 = await this.props.handleGetDataSet({ + name: 'slave1', configData: slave1Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + + let addStateSlave0 = {}; + if (!commonUtils.isEmptyObject(slave0Config)) { + addStateSlave0 = await this.props.handleGetDataSet({ + name: 'slave0', configData: slave0Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave0) && commonUtils.isNotEmptyArr(addStateSlave0.slave0Data)) { + // let slave0DelData = [] + // addStateSlave0.slave0Data.forEach((item) => { + // item.handleType = 'del'; + // slave0DelData.push(item); + // }); + // addStateSlave0.slave0Data = []; + // + // let sWorkCenterNameDropDown; + // const allTableData = {}; + // const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWorkCenterName'); + // if (master1Index > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[master1Index]); + // sWorkCenterNameDropDown = sqlDropDownData.dropDownData; + // console.log(sWorkCenterNameDropDown); + // sWorkCenterNameDropDown.forEach((item) => { + // 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; + // tableDataRowAdd.sDepartName = item.sName; + // item.sDepartName = item.sName; + // addStateSlave0.slave0Data.push(item); + // }) + // } + // } + } + + let addStateSlave2 = {}; + if (!commonUtils.isEmptyObject(slave2Config)) { + addStateSlave2 = await this.props.handleGetDataSet({ + name: 'slave2', configData: slave2Config, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + let addStateSlave3 = {}; + if (!commonUtils.isEmptyObject(slave3Config)) { + addStateSlave3 = await this.props.handleGetDataSet({ + name: 'slave3', configData: slave3Config, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + let addStateSlave4 = {}; + if (!commonUtils.isEmptyObject(slave4Config)) { + addStateSlave4 = await this.props.handleGetDataSet({ + name: 'slave4', configData: slave4Config, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + let addStateSlave5 = {}; + if (!commonUtils.isEmptyObject(slave5Config)) { + addStateSlave5 = await this.props.handleGetDataSet({ + name: 'slave5', configData: slave5Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + let addStateSlave6 = {}; + if (!commonUtils.isEmptyObject(slave6Config)) { + addStateSlave6 = await this.props.handleGetDataSet({ + name: 'slave6', configData: slave6Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + let addStateSlave7 = {}; + if (!commonUtils.isEmptyObject(slave7Config)) { + addStateSlave7 = await this.props.handleGetDataSet({ + name: 'slave7', configData: slave7Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + let addStateSlave8 = {}; + if (!commonUtils.isEmptyObject(slave8Config)) { + addStateSlave8 = await this.props.handleGetDataSet({ + name: 'slave8', configData: slave8Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + let addStateSlave9 = {}; + if (!commonUtils.isEmptyObject(slave9Config)) { + addStateSlave9 = await this.props.handleGetDataSet({ + name: 'slave9', configData: slave9Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + let addStateSlave10 = {}; + if (!commonUtils.isEmptyObject(slave10Config)) { + addStateSlave10 = await this.props.handleGetDataSet({ + name: 'slave10', configData: slave10Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + } + this.props.onSaveState({ + pageLoading: false, ...addStateSlave, ...addStateSlave0, ...addStateSlave1, ...addStateSlave2, ...addStateSlave3, ...addStateSlave4, + ...addStateSlave5, ...addStateSlave6, ...addStateSlave7, ...addStateSlave8, ...addStateSlave9, ...addStateSlave10, + viewDragRefreshTime: commonUtils.createSid(), + }); + + }; + /* 获取表数据 */ + handleGetMemoData = async (slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + const addStateSlave = slaveConfig ? await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }) : ''; + const addStateSlave0 = slave0Config ? await this.props.handleGetDataSet({ + name: 'slave0', configData: slave0Config, condition: { sSqlCondition: { sParentId: sId } }, + }) : ''; + const addStateSlave1 = slave1Config ? await this.props.handleGetDataSet({ + name: 'slave1', configData: slave1Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave2 = slave2Config ? await this.props.handleGetDataSet({ + name: 'slave2', configData: slave2Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave3 = slave3Config ? await this.props.handleGetDataSet({ + name: 'slave3', configData: slave3Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave4 = slave4Config ? await this.props.handleGetDataSet({ + name: 'slave4', configData: slave4Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }) : ''; + // addStateProcess.processData = this.sortData(addStateControl.controlData, addStateProcess.processData); + this.props.onSaveState({ + pageLoading: false, + ...addStateSlave, + ...addStateSlave0, + ...addStateSlave1, + ...addStateslave2, + ...addStateslave3, + ...addStateslave4, + + }); + }; + /* 获取单张表数据 */ + handleGetOneMemoData = (memoName, memoConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + if (commonUtils.isNotEmptyObject(sId)) { /* 解决detail数据没有问题 */ + this.props.handleGetDataSet({ + name: memoName, configData: memoConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, token, + } = this.props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + 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 = commonFunc.getDefaultData(masterConfig); + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + /* 新增产品/印件,如果是newRecord过来的,则要获取关联的客户信息 */ + if (this.props.app.currentPane.newRecordRelation !== undefined) { + const addStata = this.props.app.currentPane.newRecordRelation; + if (commonUtils.isNotEmptyObject(addStata) && commonUtils.isNotEmptyObject(addStata.sCustomerId)) { + masterData.sCustomerId = addStata.sCustomerId; + masterData.sCustomerNo = addStata.sCustomerNo; + masterData.sCustomerName = addStata.sCustomerName; + /* newRecord新增产品,客户不可修改 */ + const ssCustomerNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerName'); + if (ssCustomerNameIndex > -1) { + masterConfig.gdsconfigformslave[ssCustomerNameIndex].iTag = 1; + } + } + } + let slaveData = []; + let slave1Data = []; + let slave0Data = []; + let slave2Data = []; + let slave3Data = []; + let slave4Data = []; + + // const slaveTotal = []; + // const tableDataTotal = {}; + 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) }; + masterData.tGetPayDate = commonBusiness.getGeyPayDate(masterData); + + if (sModelsType === 'semigoodsStock/matchbill') { + const sConfigformId = commonUtils.isEmpty(copyTo.config[0]) ? '' : copyTo.config[0].sParentId; + const sControlName = copyTo.name; + const sSqlCondition = { sProductId: copyTo.slaveData[0].sProductId, sId: copyTo.masterData.sId }; + const condition = { sConfigformId, sControlName, sSqlCondition }; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfo/?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master)) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if(salveAssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + } + + if(slave0AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + 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); + }); + } + } + + if(slave1AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = commonUtils.createSid(); + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + } + + if(slave2AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = commonUtils.createSid(); + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + } + + if(slave3AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = commonUtils.createSid(); + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + } + + if(slave4AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = commonUtils.createSid(); + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } + } else { + this.props.getServiceError(dataReturn); + } + } else if(commonUtils.isNotEmptyArr(copyTo.config) && copyTo.config.filter(item => item.sControlName && item.sControlName.includes('TmpInfoBySql')).length> 1){ + const sTmpInfoConfig = copyTo.config.filter(item => item.sControlName && item.sControlName.includes('TmpInfoBySql'))[0]; + const sControlName = sTmpInfoConfig.sControlName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? '' : sTmpInfoConfig.sParentId; + if (commonUtils.isNotEmptyArr( copyTo.slaveData)) { + const sRowData = copyTo.slaveData; + const condition = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { + masterData = {...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo)}; + } + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo); // 取默认值 + if(salveDetailAssignField) { + slaveRow = {...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo)}; + } else if(salveAssignField) { + slaveRow = {...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo)}; // 取赋值字段 + } + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + 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); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo); // 取默认值 + slave1Row = {...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo)}; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = commonUtils.createSid(); + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo); // 取默认值 + slave2Row = {...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo)}; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = commonUtils.createSid(); + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo); // 取默认值 + slave3Row = {...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo)}; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = commonUtils.createSid(); + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo); // 取默认值 + slave4Row = {...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo)}; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = commonUtils.createSid(); + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } else { + this.props.getServiceError(dataReturn); + } + } else { + message.error('请正确配置参数!'); + } + } else { /* 走copyTo数据源 */ + const returnData = { + masterData : copyTo.masterData, + slave : commonUtils.isNotEmptyArr(copyTo.slaveData) ? copyTo.slaveData : [], + slave0 : commonUtils.isNotEmptyArr(copyTo.slave0Data) ? copyTo.slave0Data : [], + slave1 : commonUtils.isNotEmptyArr(copyTo.slave1Data) ? copyTo.slave1Data : [], + slave2 : commonUtils.isNotEmptyArr(copyTo.slave2Data) ? copyTo.slave2Data : [], + slave3 : commonUtils.isNotEmptyArr(copyTo.slave3Data) ? copyTo.slave3Data : [], + slave4 : commonUtils.isNotEmptyArr(copyTo.slave4Data) ? copyTo.slave4Data : [], + }; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master)) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if(salveAssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + } + + if(slave0AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + 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); + }); + } + } + + if(slave1AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = commonUtils.createSid(); + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + } + if(slave2AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = commonUtils.createSid(); + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + } + + if(slave3AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = commonUtils.createSid(); + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + } + + if(slave4AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = commonUtils.createSid(); + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } + + } + } + // /* 剔除订单到收款单新增空行 */ + let bUpload = false; + /* 图片文件不要新增空行 */ + if(commonUtils.isNotEmptyObject(configNew.slaveConfig)) { + const filterData = configNew.slaveConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnUpload') && item.bVisible); + if(commonUtils.isNotEmptyArr(filterData) && filterData.length > 0) { + bUpload = true; + } + } + if (slaveData.length === 0 && !bUpload && commonUtils.isNotEmptyObject(configNew.slaveConfig) && this.props.sModelsType !== 'cashier/receipt' && this.props.sModelsType !== 'cashier/payment') { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + const 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 = 1; + slaveData.push(tableDataRowAdd); + } + if(commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { + /* 重新塞入copyTo.masterData */ + copyTo.masterData = masterData; + } + + if(commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { + /* 重新塞入copyTo.masterData */ + copyTo.masterData = masterData; + } + + const { slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; + if (commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.bGrdVisible) { + const bEmptyAddLine = slaveConfig.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slaveData = []; + } + } + + if (commonUtils.isNotEmptyObject(slave0Config) && slave0Config.bGrdVisible) { + const bEmptyAddLine = slave0Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave0Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave1Config) && slave1Config.bGrdVisible) { + const bEmptyAddLine = slave1Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave1Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave2Config) && slave2Config.bGrdVisible) { + const bEmptyAddLine = slave2Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave2Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave3Config) && slave3Config.bGrdVisible) { + const bEmptyAddLine = slave3Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave3Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave4Config) && slave4Config.bGrdVisible) { + const bEmptyAddLine = slave4Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave4Data = []; + } + } + + const { slavePagination = {} } = this.props; + const slavePaginationNew = { + ...slavePagination, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: 999, + }; + masterData.enabled = true; + + const state = { + masterData, + slaveData, + slavePagination: slavePaginationNew, + slaveTotal: [], + slaveSelectedRowKeys: [], + slave1SelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + slave0Data, + slave1Data, + slave2Data, + slave3Data, + slave4Data, + processSelectedRowKeys: [], + controlSelectedRowKeys: [], + slave0SelectedRowKeys: [], + ...this.handleGetParam('sProcess', {}), + ...this.handleGetParam('sReport', {}), + ...this.handleGetParam('sWorkOrder', {}), + ...this.handleGetParam('sNorm', {}), + ...this.handleGetParam('sTest', {}), + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + /** 点击修改按钮操作 */ + handleEdit = async () => { + const { + masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, currentId, app, masterData, dispatch, + } = this.props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoUpdateByNoMakePerson')); + this.props.onSaveState({ + loading: false, + }); + 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; + } + const reset = (ws, config1) => { + clearTimeout(config1.timerServer); + clearTimeout(config1.serverTimer); + start(ws, config1); + }; + const start = (ws, config1) => { + config1.timerServer = setTimeout(() => { + const message = { sendFrom: this.props.app.userinfo.sId, connectTest: 'test' }; // param 存放其它参数 keyName 需要放入Redis的数据key,keyValue 需要放入Redis的数据key 的值 + ws.send(JSON.stringify(message)); + }, config1.timeoutServer); + }; + setTimeout(() => { + this.props.app.webSocket.onmessage = async (msg) => { + reset(this.props.app.webSocket, commonConfig); + 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 (rtmsg.action === 'update') { + await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, 'update'); + this.props.onSaveState({ enabled: true, loading: false }); + const { slaveData } = this.props; + if (commonUtils.isNotEmptyArr(slaveData)) { + const selectRowKey = slaveData[0].sId; + const selectRowKeyArr = []; + selectRowKeyArr.push(selectRowKey); + this.handleTableSelectRowChange('slave', selectRowKeyArr, slaveData); + } + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null); + }, timValue); + }; + + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { masterData, gdsformconst } = this.props; + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + message.warning(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName); + return ''; + } + /** 数据审核 */ + await this.dataAudit(flag); + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + message.destroy(); + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, slave2Config, slave1Config, token, sModelsType, slave4Config, slave0Config, slave3Config, slaveData, orderDetailConfig, + } = 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 : '', + }, + }; + let clearFlag = false; + if (sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder') { + for (const item of slaveData) { + if (commonUtils.isNotEmptyStr(item.sProductInfo)) { + clearFlag = true; + break; + } + } + } + /* 数据审核 */ + 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, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if ((sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder3') && !commonUtils.isEmpty(slave3Config)) { + await this.handleGetMemoData(slave4Config, slave0Config, slave3Config); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + if (clearFlag && (sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder')) { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } + 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(); + // } + message.error(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 { + message.success(check + returnData.msg); + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + message.error(outData[0].sReturn); + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + message.success(BtnCancelExamine + returnData.msg); + } + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + } + return true; + } + }; + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, + sModelsId, + currentId, + masterData, + masterConfig, + slaveConfig, + slave1Config, + billnosetting, + app, + // eslint-disable-next-line no-unused-vars + sModelsType, + // eslint-disable-next-line no-unused-vars + slave0Config, + // eslint-disable-next-line no-unused-vars + slave2Config, + // eslint-disable-next-line no-unused-vars + slave3Config, + // eslint-disable-next-line no-unused-vars + slave4Config, + dispatch, + } = this.props; + const { userinfo } = app; + const { copyTo } = app.currentPane; + 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 sIdArray = []; + if(commonUtils.isNotEmptyArr(copyTo.slaveData)) { + const { slaveData } = copyTo; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + } + /* 处理只有单主表解锁问题 */ + if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { + sIdArray.push(masterData.sSrcSlaveId); + } + + 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, + }); + // 保存后更新panes,currentPane的checkedId,防止浏览器刷新时重新又变成新增。 + const iPaneIndex = app.panes.findIndex(item => item.key === app.currentPane.key); + app.panes[iPaneIndex].checkedId = masterData.sId; + app.currentPane.checkedId = masterData.sId; + dispatch({ type: 'app/savePanesAndCurrentPane', payload: { panes: app.panes, currentPane: app.currentPane } }); + + /* 新记录时,关闭后能自动带值 */ + const callBackRecord = this.props.app.currentPane.newRecordMethod; + if (callBackRecord !== undefined) { + const sId = masterData.sId === undefined ? masterData.sid : masterData.sId;/* sId */ + /* 回调 传[新增的数据sId] */ + if (this.props.app.currentPane.newRecordMethod !== undefined) { + this.props.app.currentPane.newRecordMethod(sId); + } + } + + if (billnosetting.bAutoCheck) { + await this.handleAudit(1); + } else { + await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } + this.props.onSaveState({ + loading: false, + }); + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + /** toolbar校验保存 */ + handleValidateSave = () => { + this.form.validateFields(async (err) => { + /* 验证通过与不通过走不同的流程 */ + if (err) { /* 验证失败 */ + /* 直接渲染显示错误提示 */ + for (const key of Object.keys(err)) { + message.error(err[key].errors[0].message); + } + this.props.onSaveState({ + loading: false, + }); + } else { /* 验证成功 */ + const { + masterConfig, + slaveConfig, + slaveData, + slaveDelData, + app, + sModelsType, + slave0Config, + slaveColumn, + slave0Data, + slave0Column, + slave0DelData, + slave1Config, + slave1Column, + slave1Data, + slave1DelData, + slave2Config, + slave2Column, + slave2Data, + slave2DelData, + slave3Config, + slave3Column, + slave3Data, + slave3DelData, + slave4Config, + slave4Column, + slave4Data, + slave4DelData, + } = this.props; + let { masterData } = this.props; + // if (commonUtils.isEmptyArr(slaveData) && !sModelsType.includes('sales/salesInvoice') && !sModelsType.includes('purchase/purchaseInvoice') && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' + // && !sModelsType.includes('cashier/receipt') && !sModelsType.includes('cashier/payment') && !sModelsType.includes('purchase/purchaseEnquiry') || !commonBusiness.validateTable(slave0Config, materialsData, this.props)) { + // message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! + // this.props.onSaveState({ + // loading: false, + // }); + // return; + // } + if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props) || !commonBusiness.validateTable(slave1Config, slave1Data, this.props) || + (!commonBusiness.validateTable(slave0Config, slave0Data, this.props)) || !commonBusiness.validateTable(slave2Config, slave2Data, this.props) || + !commonBusiness.validateTable(slave3Config, slave3Data, this.props) || !commonBusiness.validateTable(slave4Config, slave4Data, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + + /* 根据配置校验 表格内容是否为空 */ + if(commonUtils.isNotEmptyObject(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(); + const tableConfigName = key; + const tableDataName = tablename +'Data'; + const tableConfig = this.props[tableConfigName]; + const tableData = this.props[tableDataName]; + if(tableConfig && tableConfig.bNotCanEmpty){ + if(commonUtils.isEmptyArr(tableData) ){ + message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 表格不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + } + } + } + } + + // && sModelsType === 'materialsStock/productionmaterialsadjust' + if (commonUtils.isNotEmptyArr(slaveData)) { + let flag = true; + for (const item of slaveData) { + if (sModelsType === 'materialsStock/productionmaterialsadjust') { + if (commonUtils.isNotEmptyStr(item.sWareHouseId)) { + if (masterData.sWareHouseId === item.sWareHouseId) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameMateMaterialWarehouse'));/* 材料调拨原仓库与调入仓库不能一致 */ + flag = false; + break; + } + } + } + // {"paper":"纸张","finished":"成品","half_finished":"半成品","accessories":"辅料","corrugated":"瓦楞"} + if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sMaterialsName}"的规格 */ + flag = false; + break; + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if (commonUtils.isNotEmptyArr(slaveData) && sModelsType === 'materialsStock/productionmaterials') { + const flag = await this.handleEleMaterialsStoreCurrQty(slaveData); + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'purchase/purchaseEnquiry') { + delete masterData.maxBillNo; + } + if (sModelsType === 'cashier/receipt' || sModelsType === 'cashier/payment') { + let flag = true; + if (masterData.sSettlementId === 'bank') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sBankAccount)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsBankAccount'));/* 收/付款条件为银行时,银行、银行账号为必填项 */ + flag = false; + } + } + if (masterData.sSettlementId === 'bill') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sInvoiceNo)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsInvoiceNo'));/* 收/付款条件为票据时,银行、票据号码为必填项 */ + flag = false; + } + } + let dslaveTotalMoney = 0; + for (const item of slaveData) { + if (item.handleType !== 'del') { + if (commonUtils.isNotEmptyNumber(item.dTotalMoney)) { + dslaveTotalMoney += item.dTotalMoney; + } + } + } + const dPmoney = this.props.getFloatNum('dProductMoney'); + dslaveTotalMoney = commonUtils.convertFixNum(dslaveTotalMoney, dPmoney);/* 取系统设定小数位 */ + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyNumber(masterData.dTotalMoney) && commonUtils.isNotEmptyNumber(masterData.dAdvanceMoney) && commonUtils.convertFixNum(masterData.dTotalMoney - masterData.dAdvanceMoney, dPmoney) !== dslaveTotalMoney) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameTotalMoney'));/* 主从表总金额不一致 */ + flag = false; + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + if (slaveConfig && commonUtils.isNotEmptyArr(slaveColumn)) { + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + } + if (slave0Config && commonUtils.isNotEmptyArr(slave0Column) && slave0Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave0', slave0Config.sTbName, slave0Data, slave0DelData)); + } + if (slave1Config && commonUtils.isNotEmptyArr(slave1Column) && slave1Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave1', slave1Config.sTbName, slave1Data, slave1DelData)); + } + if (slave2Config && commonUtils.isNotEmptyArr(slave2Column) && slave2Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave2', slave2Config.sTbName, slave2Data, slave2DelData)); + } + if (slave3Config && commonUtils.isNotEmptyArr(slave3Column) && slave3Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave3', slave3Config.sTbName, slave3Data, slave3DelData)); + } + if (slave4Config && commonUtils.isNotEmptyArr(slave4Column) && slave4Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave4', slave4Config.sTbName, slave4Data, slave4DelData)); + } + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }); + } + }); + }; + + /* 切换作废状态 */ + handleOkChangeInvaild = async (props) => { + const { + sModelsId, masterData, masterConfig, handleType, + } = props; + const value = { + sClientType: '1', + sId: [masterData.sId], + sTableName: masterConfig.sTbName, + handleType, + }; + const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; + const { data } = await commonServices.postValueService(props.app.token, value, url); + if (data.code === 1) { + message.success(data.msg); + masterData.bInvalid = handleType === 'toVoid'; /* 作废状态 */ + props.onSaveState({ masterData }); + /* 审核(消审)后刷新跳转路由数据(commonList)的数据 */ + if (props.app.currentPane.refresh !== undefined) { + props.app.currentPane.refresh(); + } + } else { + props.getServiceError(data); + } + }; + + /* 作废、取消作废的公用函数 */ + handleInvalid = (obj) => { + const props = { ...this.props, ...this.state, ...obj }; + const onOkInvaild = this.handleOkChangeInvaild; + confirm({ + title: obj.title, + onOk() { + onOkInvaild(props); + }, + onCancel() { + }, + }); + }; + + /* 单据页上查下查跳转页面 */ + handleSearchUpDown = async (sId, sActiveId) => { + /* 待用数据声明 */ + const { dispatch, sTabId } = this.props; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + sParentId: sTabId, /* 父页面编号 */ + checkedId: sId, + }, + }); + }; + + /* 上查下查三级菜单 在上一条下一条时必须清除searchUpDownData */ + handleSearchUpDownThird = async (upDownKey) => { + /* 待用数据声明 */ + const { masterConfig, searchUpDownData: searchUpDownDataOld } = this.props; + /** 获取sqlCondition参数:{sSqlCondition,sId} */ + const searchUpDownData = commonUtils.isEmptyObject(searchUpDownDataOld) ? {} : { ...searchUpDownDataOld }; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const searchUpDownConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(`${upDownKey}`)); + for (const item of searchUpDownConfig) { + if (commonUtils.isEmptyArr(searchUpDownData[item.sControlName])) { + searchUpDownData[item.sControlName] = await this.getSearchUpDownData(item); + } + } + this.props.onSaveState({ searchUpDownData }); + } + }; + + /* 单据页复制到 */ + handleCopyTo = (name, sActiveId) => { + /* 待用数据声明 */ + const { + dispatch, masterConfig, slave1Data, masterData, slaveData, slave2lData, slave0Data, slave3lData, slave4lData, + } = this.props; + + // 从表有sCopyToCondition则不能复制,并提示 + if (commonUtils.isNotEmptyArr(slaveData) && name.includes('.')) { + const sCopyToConditionIndex = slaveData.findIndex(item => item.sCopyToCondition); + if (sCopyToConditionIndex !== -1) { + message.warning(slaveData[sCopyToConditionIndex].sCopyToCondition); + return; + } + } + + const copyTo = {}; + const copyToConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(name)); + copyTo.name = name; + copyTo.config = copyToConfig; + copyTo.masterData = masterData; + copyTo.slaveData = slaveData; + copyTo.slave1Data = slave1Data; + copyTo.slave0Data = slave0Data; + copyTo.slave2lData = slave2lData; + copyTo.slave3lData = slave3lData; + copyTo.slave4lData = slave4lData; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + copyTo, + }, + }); + }; + + handleCopyFrom = async (obj) => { + // const { + // slaveData, masterData, masterConfig, + // } = this.props; + /* 根据sql条件进行判断 */ + // const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName === obj.copyFromKey); + // if (commonUtils.isNotEmptyArr(buttonConfig) && commonUtils.isNotEmptyObject(buttonConfig[0].sSqlCondition) && buttonConfig[0].sSqlCondition.includes('slave.')) { + // if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isEmptyStr(slaveData[0].sCustomerId) && commonUtils.isEmptyStr(masterData.sCustomerId)) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'pleaseInputCustomer'));/* 请填写客户 */ + // return; + // } + // } + this.copyName = obj.name; + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${obj.copyFromSActiveId}?sModelsId=${obj.copyFromSActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + if (obj.copyFromKey.includes('customizeFormInfo')) { /* 复制从自定义窗体 */ + this.props.onSaveState({ copyFromChooseVisible: true, copyFromChooseData: returnData, copyFromKey: obj.copyFromKey }); + } else { + this.props.onSaveState({ productProcessInfoChooseVisible: true, productProcessInfoChooseData: returnData, productProcessInfoCopyFromKey: obj.copyFromKey }); + } + } else { + this.props.getServiceError(dataReturn); + } + }; + + /* 上一条、下一条、首条、末条 */ + handleSearchData = async (handleType) => { + const { + sModelsId, app, currentIndexFlag, currentPageNo, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, + } = this.props; + const { currentPane, token } = app; + const { + pages, sFilterOrderBy, bFilter, sListFormmasterId, currentIndex, + } = currentPane; + let currentPosition = currentIndexFlag ? currentPageNo : commonUtils.isEmptyObject(pages) ? 1 : (((pages.current - 1) * commonConfig.pageSize) + Number.parseInt(currentIndex, 10)) + 1; + if (currentIndex === undefined) { + currentPosition = 1; + } + if (handleType === 'first') { + currentPosition = 1; + } else if (handleType === 'end') { + currentPosition = pages.total; + } + if (!commonUtils.isNum(currentPosition)) { // 如果是列表直接点增加,就跳到第一条去 + currentPosition = 1; + } + + const value = { + sClientType: '1', sFilterOrderBy, bFilter, sListFormmasterId, currentPosition, handleType, iCountSum: pages.total, + }; + const url = `${commonConfig.server_host}business/getBusinessDataByIndex?sModelsId=${sModelsId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + /* 接收返回值 */ + /* 成功的话刷新页面(同步主表和从表数据),不成功就弹出错误提示 */ + if (data.code === 1) { + /* 数据查询成功 */ + const returnData = data.dataset.rows[0]; + this.props.onSaveState({ + currentIndexFlag: true, + currentPageNo: returnData.currentPosition, + currentId: returnData.sId, + searchUpDownData: {}, + slaveSelectedRowKeys: [], + }); + this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + return true; + } else { /* 失败 */ + this.props.getServiceError(data); + return false; + } + }; + + /* 取消操作 */ + handleCancel = (obj) => { + /* 待用数据声明 */ + const { + currentId, masterConfig, slaveConfig, slave1Config, app, masterData, + } = this.props; + const that = this; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const onGetDataOk = this.handleGetData; + const onSaveStateOk = this.props.onSaveState; + const { copyTo } = app.currentPane; + confirm({ + title: obj.title, + onOk() { + const bChanged = commonBusiness.handleGetChanged(that.props) ; + if(bChanged) { + onGetDataOk(masterConfig, slaveConfig, slave1Config); + } + onSaveStateOk({ enabled: false }); + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData } = copyTo; + const sIdArray = []; + if(commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + } + /* 处理只有单主表解锁问题 */ + if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { + sIdArray.push(masterData.sSrcSlaveId); + } + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); + }, + onCancel() { + }, + }); + }; + + /* 删除 */ + handleDel = (obj) => { + const props = { ...this.props, ...this.state }; + const onOkDel = this.handleOkDel; + confirm({ + title: obj.title, + onOk() { + onOkDel(props); + }, + onCancel() { + }, + }); + }; + + /* 确定要删除 */ + handleOkDel = async (props) => { + /* 数据参数 */ + const { + token, sModelsId, sModelsType, masterConfig, masterData, slaveConfig, slave1Config, orderDetailConfig, app, formData, + } = props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoDelByNoMakePerson')); + return; + } + } + } + const value = { + sClientType: '1', + data: { + sMasterTable: masterConfig.sTbName, + sId: [masterData.sId], + }, + }; + const sSlaveTable = []; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + sSlaveTable.push({ + tableName: slaveConfig.sTbName, + relationName: 'sParentId', + }); + } + if (commonUtils.isNotEmptyObject(slave1Config)) { + sSlaveTable.push({ + tableName: slave1Config.sTbName, + relationName: 'sParentId', + }); + } + if (sModelsType === 'purchase/purchaseOrder') { + let orderDetailConfig ={}; + let orderDetailConfigArr = formData.filter(item => item.bGrd && item.sTbName === 'purpurchaseorderDetail'); + if(commonUtils.isNotEmptyArr(orderDetailConfigArr)) { + orderDetailConfig = orderDetailConfigArr[0]; + } + + if(commonUtils.isNotEmptyObject(orderDetailConfig)) { + sSlaveTable.push({ + tableName: orderDetailConfig.sTbName, + relationName: 'sParentId', + }); + } + + } + value.sSlaveTable = sSlaveTable; + const { sBillNo, sId } = masterData || {}; + const url = `${commonConfig.server_host}business/delMasSlaBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + /* 数据删除成功 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleDelDataSuccess(props); + } else { /* 失败 */ + this.props.getServiceError(data); + } + }; + + /* 数据删除成功跳转到新路由即pane */ + handleDelDataSuccess = (props) => { + const { app } = props; + let { panes, currentPane } = app; + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ + panes = panes.filter(pane => pane.key !== currentPane.key); + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ + currentPane = panes[panes.length - 1]; + this.props.onRemovePane(panes, currentPane); + }; + + /** 添加表格空行 */ + handleTableAdd = (name, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + masterData, masterConfig, sModelsType, app, + } = this.props; + let { [`${name}Data`]: tableData } = this.props; + tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; + const tableDataRow = this.props.onDataRowAdd(name, true); + /* 添加行的业务处理拿出去 */ + if (sModelsType.includes('sales/')) { + if (commonUtils.isEmptyStr(masterData.sCustomerId)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => ((item.sName === 'sCustomerId' || item.sName === 'sCustomerNo' || item.sName === 'sCustomerName') && item.bVisible)); + if (iIndex > -1) { + const { showName } = masterConfig.gdsconfigformslave[iIndex]; + message.warn(showName + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空 + return; + } + } + } + tableDataRow.sWareHouseId = masterData.sWareHouseId; + tableDataRow.sWareHouseNo = masterData.sWareHouseNo; + tableDataRow.sWareHouseName = masterData.sWareHouseName; + tableDataRow.sLocationId = masterData.sLocationId; + tableDataRow.sLocationNo = masterData.sLocationNo; + tableDataRow.sLocationName = masterData.sLocationName; + tableDataRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } + }; + + /** 复制 */ + handleTableCopy = (name, isWait) => { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSrcSlaveId = ''; + tableDataRow.sSrcId = ''; + tableDataRow.dSrcQty = null; + if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsMemo)) { + tableDataRow.sMaterialsMemo = ''; + } + if (commonUtils.isNotEmptyObject(tableDataRow.sProcessMemo)) { + tableDataRow.sProcessMemo = ''; + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); + } + } + } + } + }; + + handleTableCopyTo = (name, toname, isWait) => { + const { + [`${name}Data`]: tableData, [`${toname}Data`]: tablePersonData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + if (commonUtils.isNotEmptyObject(toname)) { + tablePersonData.push(tableDataRow); + this.props.onSaveState({ [`${toname}Data`]: tablePersonData, [`${toname}Pagination`]: { total: tablePersonData.length, current: 9999 } }); + message.success('操作成功!'); + } else { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); + } + } + } + } + } + }; + + /** 复制全部 */ + handleTableCopyAll = (name, isWait) => { + const { + slaveData, controlData, slaveSelectedRowKeys, slave0Data, + } = this.props; + let { processData } = this.props; + if (name === 'slave') { + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of slaveSelectedRowKeys) { + const slaveDataIndex = slaveData.findIndex(item => item.sId === sId); + if (slaveDataIndex > -1) { + const slaveDataRow = JSON.parse(JSON.stringify(slaveData[slaveDataIndex])); + slaveDataRow.sId = commonUtils.createSid(); + slaveDataRow.handleType = 'add'; + slaveDataRow.key = slaveDataRow.sId; + slaveData.push(slaveDataRow); + if (commonUtils.isNotEmptyArr(controlData)) { + controlData.filter(itemControl => itemControl.sSlaveId === sId).forEach((itemControl) => { + const tableDataRow = JSON.parse(JSON.stringify(itemControl)); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSlaveId = slaveDataRow.sId; + controlData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + slave0Data.filter(item => item.sControlId === itemControl.sId && item.sType !== '2').forEach((item) => { + const slave0Row = JSON.parse(JSON.stringify(item)); + slave0Row.sId = commonUtils.createSid(); + slave0Row.handleType = 'add'; + slave0Row.sControlId = tableDataRow.sId; + slave0Row.sPartsName = tableDataRow.sPartsName; + slave0Row.sSlaveId = tableDataRow.sSlaveId; + slave0Data.push(slave0Row); + }); + processData.filter(item => item.sControlId === itemControl.sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processRow.sSlaveId = tableDataRow.sSlaveId; + processData.push(processRow); + }); + processData = this.sortData(controlData, processData); + }); + } + if (commonUtils.isNotEmptyArr(slave0Data)) { /* 订单从表复制全部 复制成品材料 */ + slave0Data.filter(item => item.sSlaveId === sId && item.sType === '2').forEach((slave0Item) => { + const slave0Row = JSON.parse(JSON.stringify(slave0Item)); + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sSlaveId = slaveDataRow.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(processData)) { /* 订单从表复制全部 复制成品工序 */ + processData.filter(item => item.sSlaveId === sId && item.sType === '3').forEach((processItem) => { + const processRow = JSON.parse(JSON.stringify(processItem)); + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = slaveDataRow.sId; + processData.push(processRow); + }); + } + } + this.props.onSaveState({ + slaveData, + [`${name}Pagination`]: { total: slaveData.length, current: 9999 }, + controlData, + slave0Data, + processData, + }); + } + } + } else if (name === 'control') { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + slave0Data.filter(item => item.sControlId === sId && item.sType !== '2').forEach((item) => { + const slave0Row = JSON.parse(JSON.stringify(item)); + slave0Row.sId = commonUtils.createSid(); + slave0Row.handleType = 'add'; + slave0Row.sControlId = tableDataRow.sId; + slave0Row.sPartsName = tableDataRow.sPartsName; + slave0Data.push(slave0Row); + }); + processData.filter(item => item.sControlId === sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processData.push(processRow); + }); + processData = this.sortData(tableData, processData); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}Pagination`]: { total: tableData.length, current: 9999 }, + slave0Data, + processData, + }); + } + } + } + } + } + }; + + handleCloseProductProcessInfoChooseModal = () => { + this.props.onSaveState({ + productProcessInfoChooseVisible: false + }) + } + + singlePQtyChange = (tableDataRow) => { + const bZfZf = tableDataRow.iPrintMode === 2; // 正反版 + const bSample = tableDataRow.dSumPQty >= 4; // 样本 + tableDataRow.iPrintModePo = tableDataRow.iPrintMode <= 2 ? 2 : tableDataRow.iPrintMode === 3 ? 0 : -1; + + if (bSample) { + if (tableDataRow.dSinglePQty > 0) { + tableDataRow.dPlateQty = Math.ceil(tableDataRow.dSumPQty / tableDataRow.dSinglePQty); + } + + if (bZfZf && (tableDataRow.iPrintModePo === 2)) { // 双面样本,正反 + if (tableDataRow.dPlateQty < 2) { // 不管建议放正自翻版了,点方式什么是什么 + tableDataRow.dPlateQty = 2; + tableDataRow.iStick = Math.ceil(commonUtils.isNull(tableDataRow.dPlateQty, 0) / 2); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty / 2); + } + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + } + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + if (tableDataRow.iStick > 0 && tableDataRow.dSinglePQty > 0) { + tableDataRow.dMachineQty = commonUtils.convertFixNum((commonUtils.isNull(tableDataRow.dPartsQty, 0) * commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty / tableDataRow.iStick, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } else { + tableDataRow.iStick = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + if (bZfZf && tableDataRow.iPrintModePo === 2) { + tableDataRow.dPlateQty = 2; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + + if (tableDataRow.dSinglePQty > 0) { + if (tableDataRow.iPage > 1) { // 笔记本 用 非样本 来做, 倍率是每页都一样才可以用 原先 /2 是指页数, 现在直接按张数 + tableDataRow.dMachineQty = commonUtils.convertFixNum((tableDataRow.dPartsQty * tableDataRow.iPage) / tableDataRow.dSinglePQty, 0); + } else { + tableDataRow.dMachineQty = commonUtils.convertFixNum(commonUtils.isNull(tableDataRow.dPartsQty, 0) / tableDataRow.dSinglePQty, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } + } + return tableDataRow; + }; + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, slaveConfig, slave0Data, slaveData, + } = this.props; + const { dNetMoney, dNetPrice } = app.decimals; + if (name === 'control' && sModelsType === 'sales/salesOrder') { + const { [`${name}Data`]: tableData, slave0Data: slave0DataOld, slave2Data: slave2DataOld } = 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 slave0Data = []; + const slave2Data = []; + slave0DataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + slave0Data.push(itemNew); + }); + slave2DataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + slave2Data.push(itemNew); + }); + const slave0DataNew = this.sortData(tableData, slave0Data); + const slave2DataNew = this.sortData(tableData, slave2Data); + + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, slave0Data: slave0DataNew, slave2Data: slave2DataNew }); + } 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); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === sFieldName); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + 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; + } + // 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 slave0ReturnData = this.otherTableDel('slave0', tableSelectedRowKeys); + const slave2ReturnData = this.otherTableDel('slave2', tableSelectedRowKeys); + const slave3ReturnData = this.props.onDataRowDel('slave3', true, tableSelectedRowKeys); + this.props.onSaveState({ + ...slave0ReturnData, + ...slave2ReturnData, + ...slave3ReturnData, + }); + } + } 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, slave0Config, processConfig, + } = this.props; + let { controlData, slave0Data, processData } = this.props; + const sId = tableData[iIndex].sId; + const bCkxCopyFromTechnology = 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 slave0ReturnData = this.otherTableDel('slave0', controlSelectedData); + const processReturnData = this.otherTableDel('process', controlSelectedData); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData); + controlData = controlReturnData.controlData; + slave0Data = slave0ReturnData.slave0Data; + processData = processReturnData.processData; + this.props.onSaveState({ + ...slave0ReturnData, + ...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 copyToSlave0Config = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Slave0'.toLowerCase()); + const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[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.slave0Data)) { + returnData.slave0Data.filter(item => item.sControlId === controlItem.sId).forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sSlaveId = tableDataRow.sId; + slave0Row.sParentId = masterData.sId; + slave0Row.sControlId = controlRow.sId; + slave0Row.sPartsName = controlRow.sPartsName; + slave0Data.push(slave0Row); + }); + } + + 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.slave0Data)) { + // eslint-disable-next-line no-loop-func + returnData.slave0Data.filter(item => item.sType === '2').forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sSlaveId = tableDataRow.sId; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + + 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, slave0Data, 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.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; + } + // 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/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('semigoodsStock/')) { + 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; + if (commonUtils.isNotEmptyObject(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'); + } + } + + /* 在detail表(加工工序)中将每一个工序都填写单价,算出金额,几个工序金额应该汇总到slave表(回厂信息)最后一道工序金额中,并要自动算单价 */ + // /* 将改变数量、金额 汇总到slave0回厂信息表 */ + const iSlave0ProductIndex = slave0Data.findIndex(item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(',').includes(tableDataRow.sSrcSlaveId)); + if(iSlave0ProductIndex > -1) { + const addState ={}; + let dMaterialsProductMoneyAll = 0; + let dMaterialsProductPrice = 0; + const slaveORow = slave0Data[iSlave0ProductIndex]; + /* 合计该组金额 */ + const slaveFilterData = tableData.filter(item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(',').includes(item.sSrcSlaveId)); + if(commonUtils.isNotEmptyArr(slaveFilterData)) { + for (const one of slaveFilterData) { + if(one.sId === tableDataRow.sId) { + dMaterialsProductMoneyAll += tableDataRow.dMaterialsMoney; + } else { + dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); + } + } + } + // /* 更新数量 */ + // if(slaveORow.sCombineProcessIds){ + // const sFirstId =commonUtils.isNotEmptyArr(slaveORow.sCombineProcessIds.split(',')) ? slaveORow.sCombineProcessIds.split(',')[0] : '' ; /* 找到第一条 */ + // if(sFirstId === tableDataRow.sSrcSlaveId) { + // addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + // addState.dMaterialsQty = tableDataRow.dMaterialsQty; + // } + // } + + /* 更新数量(取同一部件,工序名称相同项数据的数量) */ + if(slaveORow.sCombineProcessIds){ + const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(','); + if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { + addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + addState.dMaterialsQty = tableDataRow.dMaterialsQty; + } + } + if(dMaterialsProductMoneyAll !==0) { + if(tableDataRow.dAuxiliaryQty !== 0 ) { + dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); + } + addState.dMaterialsMoney = dMaterialsProductMoneyAll; + addState.dMaterialsPrice = dMaterialsProductPrice; + } + addState.handleType = commonUtils.isEmpty(slave0Data[iSlave0ProductIndex].handleType) ? 'update' : slave0Data[iSlave0ProductIndex].handleType; + slave0Data[iSlave0ProductIndex] = { ...slave0Data[iSlave0ProductIndex], ... addState}; + slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney(app, masterData, slave0Data[iSlave0ProductIndex], 'Materials'); + } + this.props.onSaveState({ slave0Data, slaveData }); + } else if (sModelsType === 'outside/outsideprocess1' && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty')) { /* 工序发外 */ + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } + } + }; + + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + + handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') { + if (commonUtils.isEmpty(sComputeId)) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName === 'dConversionQty' ? 'dConversionQty' : 'dAuxiliaryQty', 'dMaterialsQty'); + } else { + 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; + } + + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + const { + sModelsId, sModelsType, masterData: masterDataOld,app, masterConfig, slaveConfig, token, + } = this.props; + let { slaveData, slave0Data } = this.props; + const addState = {}; + const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; + let bNewSlaveData = false; + + if ( sModelsType && (sModelsType.includes('sales/') || sModelsType.includes('productStock/')) && ( sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (commonUtils.isNotEmptyArr(slaveData)) { + // 从表有数据,请删除后修改客户!不能去掉 + if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { + bNewSlaveData = true; + } else { + message.warn(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', []); + } 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) { + message.error(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 === 'tDeliverDate') { + const slaveDataNew = []; + for (const item of slaveData) { + let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') && (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/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + let dMaterialsMoney = ''; + if (sModelsType && 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, + }); + console.log('sComputeId', sComputeId); + if (commonUtils.isNotEmptyObject(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData: returnData.masterData, tableDataRow, sComputeId, + }); + console.log('dMaterialsMoney', dMaterialsMoney); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + } + // else { + // tableDataRow.dMaterialsPrice = 0; + // tableDataRow.dMaterialsMoney = 0; + // } + } + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', returnData.masterData, tableDataRow); + } + } else if (sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate') { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, `dN${models}Money`, returnData.masterData, tableDataRow); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) { + tableDataRow.sWareHouseId = changeValue.sWareHouseId; + tableDataRow.sWareHouseNo = changeValue.sWareHouseNo; + tableDataRow.sWareHouseName = changeValue.sWareHouseName; + tableDataRow.sLocationId = changeValue.sLocationId; + tableDataRow.sLocationNo = changeValue.sLocationNo; + tableDataRow.sLocationName = changeValue.sLocationName; + 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 }); + + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + const slave0DataNew = []; + for (const item of slave0Data) { + let tableDataRow = { ...item }; + 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; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + slave0DataNew.push(tableDataRow); + } + addState.slave0Data = slave0DataNew; + } + } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (bNewSlaveData && commonUtils.isEmptyArr(slaveData)) { + 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 = 0; + 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 === 'sExpenseeName') { + let { slaveDelData, slave0DelData}= this.props; + const allTableData = {}; + allTableData.master = returnData.masterData; + const newCopyTo = {}; + newCopyTo.master = masterData; + const slaveDataNew = []; + const slave0DataNew = []; + if(commonUtils.isEmptyArr(slaveDelData)) { + slaveDelData = []; + } + if(commonUtils.isEmptyArr(slave0DelData)) { + slave0DelData = []; + } + //获取部门名称数据 + let sDepartNameDropDown; + const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sDepartName'); + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + if (masterIndex > -1) { + const config = masterConfig.gdsconfigformslave[masterIndex]; + const slaveAssignField = config.sAssignField || ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex], returnData.masterData); + sDepartNameDropDown = sqlDropDownData.dropDownData; + sDepartNameDropDown.forEach((item) => { + let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 + 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; + slaveDataNew.push(tableDataRowAdd); + }); + } + // 获取工作中心数据 + let sWorkCenterNameDropDown; + const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWorkCenterName'); + slave0Data.forEach((item) => { + item.handleType = 'del'; + slave0DelData.push(item); + }); + if (master1Index > -1) { + const config = masterConfig.gdsconfigformslave[master1Index]; + const slaveAssignField = config.sAssignField || ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[master1Index], returnData.masterData); + sWorkCenterNameDropDown = sqlDropDownData.dropDownData; + sWorkCenterNameDropDown.forEach((item) => { + let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 + 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; + slave0DataNew.push(tableDataRowAdd); + }) + } + addState.slaveData = slaveDataNew; + addState.slaveDelData = slaveDelData; + addState.slave0Data = slave0DataNew; + addState.slave0DelData = slave0DelData; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('semigoodsStock/')) { + const masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models); + returnData = { ...returnData, masterData }; + } + + /* 将改变数量、金额 汇总到slave0回厂信息表 */ + if (commonUtils.isNotEmptyArr(addState.slaveData) && commonUtils.isNotEmptyArr(addState.slave0Data)) { + const { dNetPrice } = app.decimals; + for (const tableDataRow of addState.slaveData) { + const iSlave0ProductIndex = addState.slave0Data.findIndex(item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(',').includes(tableDataRow.sSrcSlaveId)); + if(iSlave0ProductIndex > -1) { + const addState1 = {}; + let dMaterialsProductMoneyAll = 0; + let dMaterialsProductPrice = 0; + const slaveORow = slave0Data[iSlave0ProductIndex]; + /* 合计该组金额 */ + const slaveFilterData = addState.slaveData.filter(item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(',').includes(item.sSrcSlaveId)); + if(commonUtils.isNotEmptyArr(slaveFilterData)) { + for (const one of slaveFilterData) { + if(one.sId === tableDataRow.sId) { + dMaterialsProductMoneyAll += commonUtils.isNull(tableDataRow.dMaterialsMoney, 0); + } else { + dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); + } + } + } + + /* 更新数量(取同一部件,工序名称相同项数据的数量) */ + if(slaveORow.sCombineProcessIds){ + const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(','); + if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { + addState1.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + addState1.dMaterialsQty = tableDataRow.dMaterialsQty; + } + } + if(dMaterialsProductMoneyAll !==0) { + if(tableDataRow.dAuxiliaryQty !== 0) { + dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); + } + addState1.dMaterialsMoney = dMaterialsProductMoneyAll; + addState1.dMaterialsPrice = dMaterialsProductPrice; + } + addState1.handleType = commonUtils.isEmpty(addState.slave0Data[iSlave0ProductIndex].handleType) ? 'update' : addState.slave0Data[iSlave0ProductIndex].handleType; + addState.slave0Data[iSlave0ProductIndex] = { ...addState.slave0Data[iSlave0ProductIndex], ... addState1}; + addState.slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney(app, masterData, addState.slave0Data[iSlave0ProductIndex], 'Materials'); + } + } + } + + if (isWait) { + return { ...returnData, ...addState }; + } else { + this.props.onSaveState({ ...returnData, ...addState }); + return returnData; + } + } + + handleBtnPrint =async (sActiveId, checked, eKey) => { + const { + app, sModelsId, masterConfig, masterData, slaveConfig, sModelsType, reportData, menuChildData, formRoute, controlConfig, + } = this.props; + if (sModelsType === 'manufacture/workOrder') { + this.handleUpdateProduction(); + } + const { token } = app; + const queryFilter = {}; + queryFilter[masterConfig.sId] = { sId: masterData.sId }; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; + } + const queryFilterJson = JSON.stringify(queryFilter); + // const masterDataJson = JSON.stringify(masterData); + /* 拿到打印报表名称 */ + let printReportName = 'report'; + let printCustomerReportName = 'report'; + if (commonUtils.isNotEmptyArr(reportData)) { + const iIndex = reportData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printReportName = reportData[iIndex].sReportName; + } + } + if (commonUtils.isNotEmptyArr(menuChildData)) { + const iIndex = menuChildData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printCustomerReportName = menuChildData[iIndex].sReportName; + } + } + let urlPrint = ''; + if (formRoute === '/indexPage/printlabel') { + if (commonUtils.isNotEmptyObject(masterData) && masterData.dTrunkQty !== undefined && masterData.dFractionQty !== undefined && masterData.dPackQty !== undefined) { // masterData中必填的三个字段 + // const param = masterDataJson; + /* 把masterData放在数组中 */ + const ListData = []; + ListData.push(masterData); + const param = JSON.stringify(ListData); + if (eKey.indexOf('BtnPrint.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + this.handleOpenPost(urlPrint, param); + } else { + const dTrunkQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dTrunkQty'); + const dFractionQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dFractionQty'); + const dPackQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dPackQty'); + if (masterData.dTrunkQty === undefined && commonUtils.isNotEmptyObject(dTrunkQtyName)) { + message.error(`${dTrunkQtyName[0].showName} 必填项!`); + } else if (masterData.dFractionQty === undefined && commonUtils.isNotEmptyObject(dFractionQtyName)) { + message.error(`${dFractionQtyName[0].showName} 必填项!`); + } else if (masterData.dPackQty === undefined && commonUtils.isNotEmptyObject(dPackQtyName)) { + message.error(`${dPackQtyName[0].showName} 必填项!`); + } + return; + } + } else if (eKey.indexOf('BtnPrint.') > -1) { + let { controlSelectedRowKeys } = this.props; + /* 不出现选择框,则打印全部;出现选择框,则打印勾选的 */ + let bisMutiSelect = false; + if (commonUtils.isNotEmptyObject(controlConfig) && commonUtils.isNotEmptyArr(controlConfig.gdsconfigformslave)) { + const filterData = controlConfig.gdsconfigformslave.filter(item => item.sControlName === 'bisMutiSelect'); + if (commonUtils.isNotEmptyArr(filterData)) { + bisMutiSelect = filterData[0].bVisible; + } + } + if (bisMutiSelect === false || bisMutiSelect === undefined) { + controlSelectedRowKeys = []; + } + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}&sControlIds=${commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys : []}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; + } + if (formRoute !== '/indexPage/printlabel') { + window.open(`${encodeURI(`${urlPrint}&queryFilter=${queryFilterJson}`)}&token=${encodeURIComponent(token)}`); + } + }; + + handleOpenPost= (url, params) => { + const newWin = window.open(); + let formStr = ''; + formStr = `
` + + `` + + ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + handleUpdateProduction = async () => { + const { sModelsId, masterData } = this.props; + const { sBillNo, sId } = masterData || {}; + const dataUrl = `${commonConfig.server_host}business/addUpdateDelBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + const value = { + data: [{ + sTable: 'mftworkordermaster', + column: [{ handleType: 'update', sId: masterData.sId, bProduction: 1 }], + }], + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, dataUrl)).data; + if (dataReturn.code === 1) { + message.success(dataReturn.msg); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleTitleChange = (name, slavePagination) => { + this.props.onSaveState({ [`${name}Pagination`]: slavePagination }); + }; + + /* 工单、工艺卡、报价单控制表回带图片地址 */ + handleFilfileManageOk= async (controlFilfileData, controlFilfileDelData, sSrcSlaveId) => { + const { + controlData: tableData, app, sModelsId, token, controlConfig, + } = this.props; + if (commonUtils.isNotEmptyObject(sSrcSlaveId)) { + if (commonUtils.isNotEmptyArr(controlFilfileDelData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureDelData = controlFilfileDelData.filter(item => item.sType === '3'); /* 开料 */ + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureDelData)) { + controlsMaterialsPictureDelData.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMaterialsPicturePath) { + addState.sMaterialsPicturePath = ''; + } + }); + } + const sMachinePictureDelPath = controlFilfileDelData.filter(item => item.sType === '4'); /* 联版 */ + if (commonUtils.isNotEmptyArr(sMachinePictureDelPath)) { + sMachinePictureDelPath.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMachinePicturePath) { + addState.sMachinePicturePath = ''; + } + }); + } + if (commonUtils.isNotEmptyObject(addState) && (addState.sMachinePicturePath === '' || addState.sMaterialsPicturePath === '')) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (addState.sMaterialsPicturePath === '') { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (addState.sMachinePicturePath === '') { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + if (commonUtils.isNotEmptyArr(controlFilfileData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureData = controlFilfileData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureData)) { + addState.sMaterialsPicturePath = commonUtils.isNotEmptyObject(controlsMaterialsPictureData[0].sPicturePath) ? controlsMaterialsPictureData[0].sPicturePath : ''; /* 上机默认取上传图片的第一条 */ + } + const controlsMachinePictureData = controlFilfileData.filter(item => item.sType === '4'); + if (commonUtils.isNotEmptyArr(controlsMachinePictureData)) { + addState.sMachinePicturePath = commonUtils.isNotEmptyObject(controlsMachinePictureData[0].sPicturePath) ? controlsMachinePictureData[0].sPicturePath : ''; + } + if (commonUtils.isNotEmptyObject(addState)) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (commonUtils.isNotEmptyObject(addState.sMaterialsPicturePath) && addState.sMaterialsPicturePath !== sMaterialsPicturePath) { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (commonUtils.isNotEmptyObject(addState.sMachinePicturePath) && addState.sMachinePicturePath !== sMachinePicturePath) { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ tableData }); + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + } else { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); + } + } + // 收付款分摊 + handleShare = () => { + /* 分摊 */ + const { masterData: masterDataOld, slaveData: slaveDataOld, app } = this.props; + const { dNetMoney } = app.decimals; + const masterData = { ...masterDataOld }; + const slaveData = []; + slaveDataOld.forEach((item) => { + slaveData.push({ ...item }); + }); + + const dTotalMoney = masterData.dTotalMoney !== undefined ? masterData.dTotalMoney : 0; + let minusSum = 0; /* 负数求和 */ + let minusRoundingSum = 0; /* 负数舍入求和 */ + const minusData = []; /* 负数集 */ + let positiveSum = 0; /* 正数求和 */ + let positiveRoundingSum = 0; /* 正数舍入求和 */ + const positiveData = []; /* 正数集 */ + slaveData.forEach((child) => { + child.dTotalMoney = 0; + child.dRoundingMoney = commonUtils.isNum(child.dRoundingMoney) ? child.dRoundingMoney : 0; + if (child.dBalanceMoney < 0) { + minusSum -= Math.abs(child.dBalanceMoney); + minusRoundingSum -= Math.abs(child.dRoundingMoney); + minusData.push(child); + } else { + positiveSum += child.dBalanceMoney; + positiveRoundingSum += child.dRoundingMoney; + positiveData.push(child); + } + }); + if (commonUtils.convertFixNum(((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney, dNetMoney) <= 0) { + /* 够扣 */ + positiveSum -= minusRoundingSum; + positiveSum -= positiveRoundingSum; + positiveSum -= dTotalMoney; /* 去除分摊金额 */ + if (positiveSum >= 0) { + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + if (positiveSum <= dBalanceMoney) { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(positiveSum) - (dRoundingMoney * 1), dNetMoney); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + break; + } else { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveSum -= dBalanceMoney - (dRoundingMoney * 1); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + } + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + if (positiveData[i].handleType === undefined) { + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + } else { + /* 有预收 */ + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + minusData[i].dRoundingMoney = 0; + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + masterData.dAdvanceMoney = commonUtils.convertFixNum(Math.abs(positiveSum), dNetMoney); + masterData.bAdvance = true; + } + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + this.props.onSaveState({ masterData, slaveData }); + } else if (((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney > 0) { + /* 不够扣情况 */ + minusSum -= minusRoundingSum; + minusSum -= positiveRoundingSum; + minusSum -= dTotalMoney; /* 去除分摊金额 */ + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + if (Math.abs(minusSum) <= dBalanceMoney) { + positiveData[i].dTotalMoney = commonUtils.convertFixNum(Math.abs(minusSum) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + break; + } else { + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusSum = -(Math.abs(minusSum) - (dBalanceMoney * 1) - (dRoundingMoney * 1)); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + this.props.onSaveState({ masterData, slaveData }); + } + // let allTotalMoney = 0; + // let allRoundingMoney = 0; + // slaveData.forEach((child) => { + // if (child.dTotalMoney !== undefined) { + // allTotalMoney += child.dTotalMoney * 1; + // } + // if (child.dRoundingMoney !== undefined) { + // allRoundingMoney += child.dRoundingMoney * 1; + // } + // }); + // this.props.onSaveState({ allTotalMoney, allRoundingMoney }); + return masterData; + }; + + handleImport = async () => { + const { + sModelsId, sModelsType, masterConfig, masterData, slaveData, slaveDelData: slaveDelDataOld, app, + } = this.props; + if (commonUtils.isEmpty(masterData.sWareHouseId)) { + message.error(commonFunc.getConfigShowName(masterConfig, 'sWareHouseId') + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空! + return; + } + let url; + if (sModelsType.includes('productStock/')) { + url = `${commonConfig.server_host}eleProductStock/getEleProductStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; + } else { + url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; + } + + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push({ ...item }); + }); + returnData.forEach((item) => { + item.handleType = 'add'; + item.sParentId = masterData.sId; + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleOutTemplate = async () => { + const { + token, formData, + } = this.props; + const slaveConfig = formData.filter(item => item.sGrd === 'importTemplate')[0]; + window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${slaveConfig.sId}&token=${token}`; + }; + handleDesignFunction = () => { + this.props.onSaveState({ visibleStatement: true }); + }; + handleBatchPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchPriceUpdateData, visibleBatchPriceUpdate: true }); + } + }; + /** 按钮操作事件 */ + handleButtonClick = async (name) => { + if (name === 'BtnDesignFunction') { + this.handleDesignFunction(); + } else if (name === 'BtnBatchPriceUpdate') { + this.handleBatchPriceUpdate(); + } + const { sModelsType, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; + if (name === 'BtnRefresh') { + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + } else if (sModelsType.includes('cashier/') || sModelsType.includes('sales/') || sModelsType.includes('purchase/')) { + // 收付款分摊 + if (name === 'BtnShare') { + this.handleShare(); + } + if (sModelsType.includes('sales/') && name === 'BtnOutTemplate') { + this.handleOutTemplate(); + } + } else if (sModelsType.includes('materialsStock/') || sModelsType.includes('productStock/')) { + if (name === 'BtnImport') { + this.handleImport(); + } + } else if(name && name.includes('BtnTempSql')) { /* 通过BtnTempSql按钮 自定义调用Sql 并将数据回填到界面上 */ + const { masterConfig, slaveConfig, sModelsId, token } = this.props; + let { masterData,slaveData } = this.props; + const slave0Data = []; + const slave1Data = []; + const slave2Data = []; + const slave3Data = []; + const slave4Data = []; + const copyTo ={}; + copyTo.name = name; + copyTo.slaveData = slaveData; + const buttonConfigArr = masterConfig && masterConfig.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('BtnTempSql')); + const allConfig = { + slaveConfig, masterConfig, + }; + if(commonUtils.isNotEmptyArr(buttonConfigArr)) { + copyTo.config = buttonConfigArr; + const sTmpInfoConfig = buttonConfigArr.filter(item => item.sControlName && item.sControlName.includes('BtnTempSql'))[0]; + const sControlName = sTmpInfoConfig.sControlName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? '' : sTmpInfoConfig.sParentId; + if (commonUtils.isNotEmptyObject(sTmpInfoConfig)) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; + // const sRowData = copyTo.slaveData; + const sRowData = [masterData]; + const condition = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + slaveData = []; + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + let slaveRow = commonFunc.getDefaultData(allConfig.slaveConfig, newCopyTo); // 取默认值 + if (salveDetailAssignField) { + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + } else if (salveAssignField) { + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + } + slaveRow.handleType = 'add'; + slaveRow.sId = commonUtils.createSid(); + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + let slave0Row = commonFunc.getDefaultData(allConfig.slave0Config, newCopyTo); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + let slave1Row = commonFunc.getDefaultData(allConfig.slave1Config, newCopyTo); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = commonUtils.createSid(); + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + let slave2Row = commonFunc.getDefaultData(allConfig.slave2Config, newCopyTo); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = commonUtils.createSid(); + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + let slave3Row = commonFunc.getDefaultData(allConfig.slave3Config, newCopyTo); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = commonUtils.createSid(); + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + let slave4Row = commonFunc.getDefaultData(allConfig.slave4Config, newCopyTo); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = commonUtils.createSid(); + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + this.props.onSaveState({ slaveData, slave1Data, slave2Data, slave3Data, slave4Data}); + } else { + this.props.getServiceError(dataReturn); + } + } + } else { + message.error('请正确配置自定义按钮!'); + } + }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; + console.log('66666', allReturnMap); + } + this.props.onSaveState({ ...allReturnMap }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + + } + } + }; + + handleBtnChoose = async (name, sControlName, chooseConfig) => { + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${chooseConfig.sActiveId}?sModelsId=${chooseConfig.sActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const [returnData] = dataReturn.dataset.rows; + this.props.onSaveState({ [`${name}ChooseVisible`]: true, [`${name}ChooseData`]: returnData }); + } else { + this.props.getServiceError(dataReturn); + } + }; + handleViewClick = (name, sName, record, index , myConfig) => { + if (name === 'process' && sName === 'sProcessParamStr') { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + const sProcessParam = JSON.parse(paramType); + modalVisible = true; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(sProcessParam[`sParam${i.toString()}`])) { + processConfig.gdsconfigformslave[iIndex].showName = sProcessParam[`sParam${i.toString()}`]; + processConfig.gdsconfigformslave[iIndex].bVisible = !sProcessParam[`sParam${i.toString()}`].includes('参数值'); + record[`sParam${i.toString()}`] = sProcessParam[`sParam${i.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndex]); + } else if (iIndex > -1) { + // processConfig.gdsconfigformslave[iIndex].showName = `sParamValue${i.toString()}`; + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + + /* Begin 找到除了工艺参数以外的额外参数 通过对应字段找到该字段配置 */ + for (const key of Object.keys(slaveSelectOneData)) { + if (key.includes('sParam')) { + const iIndexOther = processConfig.gdsconfigformslave.findIndex(item => item.sName === key.replace('sParam', '').trim()); + if (iIndexOther > -1 && !commonUtils.isEmpty(slaveSelectOneData[key])) { + const fieldConfig = processConfig.gdsconfigformslave[iIndexOther]; + if (fieldConfig) { + const sFieldName = fieldConfig.sName; /* 字段名 */ + const bSrcName = `bParamConfig${fieldConfig.sName}`; + const bSrc = slaveSelectOneData[bSrcName]; + /* 如果不原配置 则同参数配置雷同 */ + if (!bSrc) { + processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = '1'; /* 从工序配置的DropDownData中拿数据 */ + } else { /* 走原配置读取数据源 */ + processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = ''; /* 从工序配置的DropDownData中拿数据 */ + } + processConfig.gdsconfigformslave[iIndexOther].bParam = true; /* 增加参数字段标识 */ + processConfig.gdsconfigformslave[iIndexOther].showName = sProcessParam[`sParam${sFieldName.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndexOther]); + } + } + } + } + /* END */ + } else { + modalVisible = false; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sProcessParamsModalVisible: modalVisible, + }); + } else if (name === 'process' && sName === 'sParams' && commonUtils.isNotEmptyObject(record.sParams)) { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let sParamData = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + /* 工序参数以表格形式展示 列 */ + const sParamConfig = { + bisMutiSelect: true, + bMutiSelect: false, + }; + const gdsconfigformslave = [{ + sId: commonUtils.createSid(), + sName: 'sId', + showName: '主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'bSelfCbx', + showName: '选择', + bVisible: true, + iFitWidth: 45, + }, { + sId: commonUtils.createSid(), + sName: 'sParamKey', + showName: '参数主键', + bVisible: true, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'sParamName', + showName: '参数名', + bVisible: true, + iFitWidth: 400, + }, { + sId: commonUtils.createSid(), + sName: 'sParamValue', + showName: '参数值', + bVisible: true, + }]; + sParamConfig.gdsconfigformslave = gdsconfigformslave; + const sParamColumn = commonFunc.getHeaderConfig(sParamConfig); + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + /* 将sParam1中的数据 还原到sParamData数据中 */ + sParamData = JSON.parse(record.sParams); + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sParamsModalVisible: true, + sParamConfig, + sParamColumn, + sParamData + }); + } else { + if(sName === 'myTableConfig') { + this.handleQuickViewClick(name, sName, record, index, myConfig ); + } else { + this.props.onViewClick(name, sName, record, index, myConfig ); + } + } + }; + + /* 获取表格数据 */ + handleGetTableConfig = async (name, sModelsId) => { + if(commonUtils.isNotEmptyObject(sModelsId)) { + const newConfig = await this.props.onGetTableConfig(name, sModelsId); + if(commonUtils.isNotEmptyObject(newConfig)) { + const newColumn = commonFunc.getHeaderConfig(newConfig); + this.props.onSaveState({[`${[name]}Config`]: newConfig, [`${[name]}Column`]: newColumn }) + } + } + } + + /* 快捷键跳转 */ + handleQuickViewClick = async (name, sName, record, index , myConfigArr) => { + const { + slaveConfig, + slaveData, + dispatch, + slaveFilterCondition, + slavePagination, + slaveOrderBy, + sModelsType, + formRoute, + treeFilterCondition, + app, + iPageSize, + sModelsId, + // slaveSelectedData, + // masterData, + // employeeConfig, + } = this.props; + console.log('myConfigArr',myConfigArr) + let picArr = []; + if(commonUtils.isNotEmptyArr(myConfigArr)) { + picArr = myConfigArr; + } + + if (picArr.length > 0) { + const getConfig = this.handleGetTableConfig; + const tableDataRow = record; + const iIndex = index; + const [{ sActiveId }] = picArr; + let [{ sActiveKey }] = picArr; + const sFormId = sActiveId === '1' ? commonUtils.isEmpty(tableDataRow.sFormId) ? tableDataRow.sSrcFormId : tableDataRow.sFormId : sActiveId; + if (commonUtils.isNotEmptyObject(sActiveKey) && sActiveKey.includes('.')) { /* 接口按钮跳转 如果有slave.对应字段 则需要取出对应字段 */ + const index = sActiveKey.lastIndexOf('.'); + sActiveKey = sActiveKey.substring(index + 1, sActiveKey.length); + } + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sFormId}?sModelsId=${sFormId}&sName=${formRoute}`; + const filterCondition = []; + const conditionValues = this.props.getSqlCondition(picArr[0], name, tableDataRow); + if (!commonUtils.isEmpty(conditionValues)) { + Object.keys(conditionValues).forEach((item) => { + if ((item === 'tStartDate_pro' || item.substring(0, 1) === 'p')) { + if (!commonUtils.isEmpty(conditionValues[item]) && conditionValues[item].length >= 2) { + const tStartDate = moment(conditionValues[item][0]).format(this.sDateFormat); + const tEndDate = moment(conditionValues[item][1]).add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if ((item === 'mStartDate_pro' || item.substring(0, 1) === 'm')) { + if (!commonUtils.isEmpty(conditionValues[item])) { + const tStartDate = moment(conditionValues[item]).startOf('month').format(this.sDateFormat); + const tEndDate = moment(conditionValues[item]).endOf('month').add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: `t${item.substring(1, item.length)}`, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if (item.substring(0, 1) === 't') { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: moment(conditionValues[item]).format(this.sDateFormat), + }); + } else { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: conditionValues[item], + }); + } + }); + } + this.props.dispatch({ + type: 'content/onRouter', + payload: { + url: sNameUrl, + refresh: getConfig.bind(this, name, sModelsId), /* 刷新方法 */ + sTabId: commonUtils.createSid(), + // sParentId: this.state.sTabId, + urlDataType: 'newPane', + checkedId: myConfigArr[0].sId, + sName: myConfigArr[0].sName, + bFilter: slaveFilterCondition, + pageSize: commonConfig.pageSize, + pages: slavePagination, + currentData: slaveData, + conditonValues: conditionValues, + newKey: tableDataRow[sActiveKey], + currentIndex: iIndex, + filterCondition, + }, + }); + } + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + masterData, masterConfig, token, sModelsId + } = this.props; + const _props = this.props; + const _this = this; + const copyConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.split('.').length === 2 && item.sControlName.includes(this.copyName))[0]; + const sConfigformId = commonUtils.isEmpty(copyConfig) ? '' : copyConfig.sParentId; + const sControlName = this.copyName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfo/?sModelsId=${sModelsId}`; + const addState = {}; + async function fetchData() { + for (let i = 0; i < selectData.length; i++) { + const sSqlCondition = { sProductId: selectData[i].sProductId, sId: selectData[i].sId }; + const condition = { sConfigformId, sControlName, sSqlCondition }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + for (const key in returnData) { + let arr = JSON.parse(JSON.stringify(returnData[key])); + arr.forEach((item, idx) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + let config = masterConfig.gdsconfigformslave.filter(item => item.sControlName.split('.').length === 3 && item.sControlName.includes(_this.copyName + '.' + key))[0]; + config = config ? config.sAssignField : copyConfig.sAssignField; + let mixData = commonFunc.getDefaultData(_props[`${key}Config`] || {}, newCopyTo); // 取默认值 + mixData = { ...mixData, ...commonFunc.getAssignFieldValue(config || copyConfig, item, newCopyTo) }; // 取赋值字段 + mixData.handleType = 'add'; + mixData.sId = commonUtils.createSid(); + mixData.sParentId = masterData.sId; + if (key === 'master') { + mixData.sFormId = _this.props.masterData.sFormId; + mixData.sId = _this.props.masterData.sId; + mixData.maxBillNo = 'sBillNo'; + arr[idx] = mixData; + } else { + mixData.sParentId = _this.props.masterData.sId; + arr[idx] = mixData; + } + }) + if (addState[`${key}Data`] === undefined) { + addState[`${key}Data`] = []; + } + addState[`${key}Data`] = addState[`${key}Data`].concat(arr); + } + } else { + _this.props.getServiceError(dataReturn); + } + } + } + await fetchData(); + if (addState.masterData) { + [addState.masterData] = addState.masterData; + } + if (Object.keys(addState).length) { + this.props.onSaveState({...addState}); + } + }; + + handleSelectCancel = (name) => { + this.props.onSaveState({ [`${name}ChooseVisible`]: false }); + }; + /* 双击弹出Memo */ + // handleGetMemo = (name, sValue, sMemoFiled, sRecord) => { + // const { sCurrMemoProps } = this.props; + // let { [`${name}Data`]: tableData } = this.props; + // const addStata = { [`${sMemoFiled}`]: sValue }; + // if (name !== 'master') { + // const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); + // let handleType = tableData[iIndex].handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData[iIndex] = { ...tableData[iIndex], ...addStata }; + // } else { + // let handleType = tableData.handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData = { ...tableData, ...addStata }; + // } + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); + // }; + // handleGetMemoCancel = () => { + // const { sCurrMemoProps } = this.props; + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps }); + // }; + // async await + handleEleMaterialsStoreCurrQty = async (slaveData) => { + const { sModelsId, app } = this.props; + let flag = true; + const InsufficientInventory = commonFunc.showMessage(app.commonConst, 'InsufficientInventory');/* 库存不足,不能领料 */ + const MateriaTransferQuantityVerificationFailed = commonFunc.showMessage(app.commonConst, 'MateriaTransferQuantityVerificationFailed');/* 材料调拨数量校验失败,请稍后操作 */ + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; + for (const item of slaveData) { + const body = { + sMaterialsId: item.sMaterialsId, /* 查询条件 */ + sMaterialsStyle: item.sMaterialsStyle, + sWareHouseId: item.sWareHouseId, + }; + if (commonUtils.isNotEmptyStr(item.sLocationId)) { + body.sLocationId = item.sLocationId; + } + if (commonUtils.isNotEmptyStr(item.sWarehouseLocationId)) { + body.sWarehouseLocationId = item.sWarehouseLocationId; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo)) { + body.sDefineNo = item.sDefineNo; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo2)) { + body.sDefineNo2 = item.sDefineNo2; + } + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const materials = dataReturn.dataset.rows[0]; + if (materials.dAuxiliaryQty < item.dAuxiliaryQty) { + message.error(`[${item.sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + message.error(MateriaTransferQuantityVerificationFailed); + flag = false; + break; + } + } + return flag; + } + handleBtnExportSql = () => { + + } + + componentDidUpdate() { + if (this.state.initSId) { + this.slaveTablePositon(); + } + } + + slaveTablePositon() { + if (!this.state.initSId) return; + const oSelectedTr = document.querySelector(`#dataBox tr[data-row-key='${this.state.initSId}']`); + if (oSelectedTr) { + const oTbody = oSelectedTr.parentNode.parentNode.parentNode; + if (oSelectedTr && oTbody) { + oTbody.scrollTop = oSelectedTr.offsetTop; + this.setState({ + initSId: '', + }); + } + } + } + + handleTableBlur = async (name, sFieldName, record, tableConfig) => { + const { sModelsId, app, token, sModelsType, [`${name}Data`]: tableData, [`${name}Data`]: tableSelectedRowKeys, masterData } = this.props; + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + let tableDataRow = {}; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') { + let iIndex = -1; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + iIndex = 0; + } else { + tableData.findIndex(item => item.sId === tableSelectedRowKeys.toString()) + } + tableDataRow = await this.handleMaterialsChange(record, sModelsId, masterData, {}, sFieldName, app, token, models); + if(iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData}) + } else { + this.props.onDropDownBlur(name, sFieldName, record, tableConfig); + } + }; + + handleTableSelectRowChange = (name, selectedRowKeys, newData) => { /* 表格行选择 */ + this.props.onTableSelectRowChange(name, selectedRowKeys); + if (name === 'slave') { /* 选择工序 从表表 */ + const { [`${name}Data`]: tableData } = this.props; + let slaveSelectOneData = {}; + if(commonUtils.isNotEmptyArr(selectedRowKeys)) { + let slaveNewData = commonUtils.isNotEmptyArr(newData) ? newData : tableData; + if(commonUtils.isNotEmptyArr(slaveNewData)) { + const iIndex = slaveNewData.findIndex( item => selectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + slaveSelectOneData = slaveNewData[iIndex]; + } + } + } + + this.props.onSaveState({ + ...this.handleGetParam('sProcess', slaveSelectOneData), + ...this.handleGetParam('sReport', slaveSelectOneData), + ...this.handleGetParam('sWorkOrder', slaveSelectOneData), + ...this.handleGetParam('sNorm', slaveSelectOneData), + ...this.handleGetParam('sTest', slaveSelectOneData), + }); + } + } + + handleGetParam = (name, slaveSelectOneData) => { + let paramsConfig = {}; + let paramData ={}; + let paramListConfig ={}; + let paramListData = []; + const addState ={}; + paramsConfig.gdsconfigformslave = []; + const sType = name +'Param'; + const bTable = 'b'+ name.replace('s','').trim() + 'ParamTable'; + const paramType = commonUtils.isNotEmptyObject(slaveSelectOneData) ? slaveSelectOneData[sType] : ''; + if (commonUtils.isNotEmptyObject(paramType) && !slaveSelectOneData[bTable]) { + paramData = { ...paramData, ...commonUtils.convertStrToObj(paramType) }; + paramData.sId = commonUtils.createSid(); + const gdsconfigformslaveSid = {} ; + gdsconfigformslaveSid.sName = 'sId'; + gdsconfigformslaveSid.showName = 'sId'; + gdsconfigformslaveSid.bVisible = false; + paramsConfig.gdsconfigformslave.push(gdsconfigformslaveSid); + const bMustFieldName = ['12710101117313076578090', '12710101117054908553170'].includes(this.props.sModelsId) || ['/indexPage/commonCostomTabBill'].includes(this.props.formRoute) ? 'sParamNotFirstEmpty' : 'sParamNotEmpty'; + if (commonUtils.isNotEmptyObject(paramType)) { + for (const key of Object.keys(paramData)) { + const num = key.replace('sParam', '').trim(); + const sParamColumnConfig = 'sParamColumnConfig' + num; + if(key.includes('sParam') && (commonUtils.isEmptyObject(paramData[sParamColumnConfig]) || key.includes('sParamColumnConfig')) + && !key.includes('sParamDropDown') && !key.includes('sParamDefault') + && !key.includes(bMustFieldName) && !key.includes('sParamReadOnly') && !key.includes('sParamAssFieldName') + && !key.includes('sParamFieldName') && !key.includes('sParamNotZero') && !key.includes('sParamDropDownType') + && !key.includes('sParamSqlCondition') && !key.includes('sParamKeyUpFilter')) { + const gdsconfigformslave = {} ; + const num = Number(key.replace('sParam','')); + gdsconfigformslave.sName = key; + gdsconfigformslave.sNameParam = commonUtils.isEmpty(paramData['sParamFieldName' + num]) ? key : paramData['sParamFieldName' + num]; + gdsconfigformslave.showName = paramData[key]; + gdsconfigformslave.bVisible = true; + gdsconfigformslave.sAssignField = commonUtils.isEmpty(paramData['sParamAssignField' + num]) ? '' : paramData['sParamAssignField' + num]; + if (paramData['sParamNotZero' + num]) { + gdsconfigformslave.bNotZero = true; + } + /* 判断是否是sql下拉 */ + const sqlDrownName = 'sParamDropDown'+ num; + if (!commonUtils.isEmpty(paramData[sqlDrownName])) { + if (paramData['sParamDropDownType' + num] === 'sql') { + gdsconfigformslave.sDropDownType = 'sql'; + gdsconfigformslave.showDropDown = paramData[sqlDrownName]; + gdsconfigformslave.sSqlCondition = paramData['sParamSqlCondition' + num]; + gdsconfigformslave.sKeyUpFilter = paramData['sParamKeyUpFilter' + num] + } else { + gdsconfigformslave.sDropDownType = 'const'; + const conStr = JSON.stringify(paramData[sqlDrownName]); + gdsconfigformslave.showDropDown = conStr; + } + } + + if(key.includes('sParamColumnConfig')) { + let sParamNum = key.replace('sParamColumnConfig','').trim(); /* 不同参数的表格名称,通过序号区分 */ + const sParamTableName = 'param'+ sParamNum + 'List'; + const sParamTableConfig = 'param'+ sParamNum + 'ListConfig'; + const sParamTableColumn = 'param'+ sParamNum + 'ListColumn'; + const sParamColumnConfigStr = paramData[key]; + const paramListConfig = commonUtils.isJSON(sParamColumnConfigStr) ? JSON.parse(sParamColumnConfigStr) : {}; + let paramListColumn = []; + if (commonUtils.isNotEmptyObject(paramListConfig)) { + paramListColumn = commonFunc.getHeaderConfig(paramListConfig); + addState[sParamTableName] = sParamTableName; + addState[sParamTableConfig] = paramListConfig; + addState[sParamTableColumn] = sParamTableColumn; + } + } + + paramsConfig.gdsconfigformslave.push(gdsconfigformslave); + } + } + } + addState[`b${name}ParamTable`] = false; + }else if (commonUtils.isNotEmptyObject(paramType) && slaveSelectOneData[bTable]){ + /* 工序参数以表格形式展示 列 */ + // let paramListData = []; + paramListConfig = { + bisMutiSelect: false, + bMutiSelect: false, + }; + const gdsconfigformslave = [{ + sId: commonUtils.createSid(), + sName: 'sId', + showName: '主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'bSelfCbx', + showName: '选择', + bVisible: true, + iFitWidth: 37, + }, { + sId: commonUtils.createSid(), + sName: 'sParamKey', + showName: '参数主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'sParamName', + showName: '参数名', + bVisible: true, + iFitWidth: 230, + }, { + sId: commonUtils.createSid(), + sName: 'sParamValue', + showName: '参数值', + bVisible: true, + }]; + paramListConfig.gdsconfigformslave = gdsconfigformslave; + const paramListColumn = commonFunc.getHeaderConfig(paramListConfig); + if (commonUtils.isNotEmptyObject(paramType)) { + /* 要把数据以表格的形式显示出来 */ + const sParamJsonObj = JSON.parse(paramType); + for (const key of Object.keys(sParamJsonObj)) { + if (key.includes('sParam') && !key.includes('DropDown') && !key.includes('Default')) { + const obj = {}; + obj.sId = commonUtils.createSid(); + obj.sParamKey = key; + obj.sParamName = sParamJsonObj[key]; + /* 找到数字 找到下拉数据源 */ + const num = key.replace(/[^\d]/g, '').trim(); + if (Number(num)) { + const number = Number(num); + const sParamDropDownKey = `sParamDropDown${number}`; + obj.sDropDownData = sParamJsonObj[sParamDropDownKey]; /* 下拉 */ + const sParamDefaultKey = `sParamDefault${number}`; + obj.sParamValue = sParamJsonObj[sParamDefaultKey]; /* 默认值 */ + } + paramListData.push(obj); + } + } + } + addState[`${name}ParamListConfig`] = paramListConfig; + addState[`${name}ParamListColumn`] = paramListColumn; + addState[`${name}ParamListData`] = paramListData; + addState[`b${name}ParamTable`] = true; /* 是否已表格显示 */ + console.log('addState', addState); + paramsConfig = paramListConfig; + } else { + paramsConfig.gdsconfigformslave = []; + paramData = {}; + addState[`b${name}ParamTable`]= false; + } + return { + [`${name}ParamConfig`]: paramsConfig, + [`${name}ParamData`]: commonUtils.isNotEmptyArr(paramListData) ? paramListData : [ paramData ], + ...addState, + }; + } + + /* 动态参数标题选择框 全选/取消全选 */ + handleCheckParamChange = (name) => { + const { + processData, + processRecord, + processConfig, + sParamData, + sParamColumn, + enabled, + } = this.props; + /* 全选 取消全选功能 */ + if(commonUtils.isNotEmptyArr(sParamData)) { + /* 标题bSelfCbx加标识 */ + const iIndex = sParamColumn.findIndex(item=>item.dataIndex ==='bSelfCbx'); + if(iIndex > -1) { + let bSelfCbx = false; + if(sParamColumn[iIndex].bCheckAll) { + bSelfCbx = false; + } else { + bSelfCbx = true; + } + sParamColumn[iIndex] = {...sParamColumn[iIndex],bCheckAll:bSelfCbx} + sParamData.forEach((item, index) => { + sParamData[index] = { ...sParamData[index], bSelfCbx: bSelfCbx }; + }) + } + this.props.onSaveState({ + sParamData, + sParamColumn + }) + } + } + + render() { + const { masterData } = this.props; + const imgSrc = commonBusiness.handleAddIcon(masterData); + return ( + + ); + } + }; +}; diff --git a/src/components/Common/CommonImportDataEvent.js b/src/components/Common/CommonImportDataEvent.js index a4f7a21..a932639 100644 --- a/src/components/Common/CommonImportDataEvent.js +++ b/src/components/Common/CommonImportDataEvent.js @@ -1,6 +1,6 @@ /* eslint-disable array-callback-return,no-undef,prefer-destructuring */ import React, { Component } from 'react'; -import { message } from 'antd'; +import { message } from 'antd-v4'; import commonConfig from '../../utils/config'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonServices from './../../services/services'; /* 服务类 */ diff --git a/src/components/Common/CommonJurisdictionNewEvent.js b/src/components/Common/CommonJurisdictionNewEvent.js index d9eca03..6a6eda3 100644 --- a/src/components/Common/CommonJurisdictionNewEvent.js +++ b/src/components/Common/CommonJurisdictionNewEvent.js @@ -1,6 +1,6 @@ /* eslint-disable array-callback-return,no-undef,prefer-destructuring */ import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import commonConfig from '../../utils/config'; import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ import * as commonUtils from '../../utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonListA.js b/src/components/Common/CommonListA.js index a9f7f2d..090f3bd 100644 --- a/src/components/Common/CommonListA.js +++ b/src/components/Common/CommonListA.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Slider } from 'antd'; +import { Layout, Spin, Slider } from 'antd-v4'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; diff --git a/src/components/Common/CommonListEditEvent.js b/src/components/Common/CommonListEditEvent.js index cda276b..d7dac24 100644 --- a/src/components/Common/CommonListEditEvent.js +++ b/src/components/Common/CommonListEditEvent.js @@ -4,7 +4,7 @@ * Created by mar105 on 2019-03-27. */ import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from './commonFunc'; /* 通用单据方法 */ import commonConfig from '../../utils/config'; diff --git a/src/components/Common/CommonListLeft/index.js b/src/components/Common/CommonListLeft/index.js index edc74a4..a6623cd 100644 --- a/src/components/Common/CommonListLeft/index.js +++ b/src/components/Common/CommonListLeft/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { Form, Icon } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Slider, Button } from 'antd'; +import { Layout, Spin, Slider, Button } from 'antd-v4'; import { MessageOutlined, MinusOutlined } from '@ant-design/icons'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonListSelect/index.js b/src/components/Common/CommonListSelect/index.js index 66351b8..26dac06 100644 --- a/src/components/Common/CommonListSelect/index.js +++ b/src/components/Common/CommonListSelect/index.js @@ -3,7 +3,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import { UploadOutlined } from '@ant-design/icons'; -import { Layout, Spin, Button, message, Upload, Modal } from 'antd'; +import { Layout, Spin, Button, message, Upload, Modal } from 'antd-v4'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ diff --git a/src/components/Common/CommonListSelectAssignment.js b/src/components/Common/CommonListSelectAssignment.js index 883ea43..4020eae 100644 --- a/src/components/Common/CommonListSelectAssignment.js +++ b/src/components/Common/CommonListSelectAssignment.js @@ -4,7 +4,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, Row, Col } from 'antd'; +import { Layout, Spin, Button, Row, Col } from 'antd-v4'; import CommonListEvent from './CommonListEvent';/* 继承销售模块业务功能 */ // import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from './commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonListSelectFlex/index.js b/src/components/Common/CommonListSelectFlex/index.js index 97122c5..83d1790 100644 --- a/src/components/Common/CommonListSelectFlex/index.js +++ b/src/components/Common/CommonListSelectFlex/index.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, Row, Col, message } from 'antd'; +import { Layout, Spin, Button, Row, Col, message } from 'antd-v4'; import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from '@/components/Common//CommonTable';/* 可编辑表格 */ import StaticEditTree from '@/components/Common/Tree/StaticTree'; diff --git a/src/components/Common/CommonListSelectMulti/index.js b/src/components/Common/CommonListSelectMulti/index.js index 3e44c9e..bcceeaf 100644 --- a/src/components/Common/CommonListSelectMulti/index.js +++ b/src/components/Common/CommonListSelectMulti/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { DownOutlined } from '@ant-design/icons'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, Row, Col, message } from 'antd'; +import { Layout, Spin, Button, Row, Col, message } from 'antd-v4'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ // import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from '@/components/Common//commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonListSelectParam/index.js b/src/components/Common/CommonListSelectParam/index.js new file mode 100644 index 0000000..e5d86d6 --- /dev/null +++ b/src/components/Common/CommonListSelectParam/index.js @@ -0,0 +1,997 @@ +/* eslint-disable */ +import React, { Component } from 'react'; +import '@ant-design/compatible/assets/index.css'; +import { Form } from '@ant-design/compatible'; +import { Spin, Tabs, message, Modal, Tooltip } from 'antd-v4'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +// import * as commonUtils from '../../utils/utils'; /* 通用方法 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import * as commonFunc from '@/components/Common/commonFunc'; +import ShowType from '@/components/Common/CommonComponent'; +import RGL, { WidthProvider } from 'react-grid-layout'; +import layoutStyle from './index.less' + +const { TabPane } = Tabs; +const ReactGridLayout = WidthProvider(RGL); +/** + 此组件是选择工序、放大镜弹窗等的通用窗体 + */ +class CommonListSelectParam extends Component { + constructor(props) { + super(props); + this.state = { + modalLoaded: null, // 弹窗是否加载完成 + }; + + this.selectedData = []; // 选中数据 + this.refIds = {}; // 记录所有组件的id + this.copyData = {}; + this.formData = {}; + this.currentTab = null; // 多tab时当前选中tab + this.initEventLoaded = false; // 已加载初始化event事件 + this.sidJson = {}; + } + + componentDidMount() { + if (this.props.bInModal && !this.state.modalLoaded) { + this.setState({ modalLoaded: true }); + } else { + this.setState({ modalLoaded: false }); + } + } + + componentWillReceiveProps() { + this.refIds = []; + } + + componentDidUpdate() { + if (!this.initEventLoaded && this.layoutRef) { + this.layoutRef.addEventListener( + "mousedown", + this.handleSelectMouseDownEvent + ); + document.addEventListener("mouseup", this.handleSelectMouseUpEvent); + document.addEventListener("mousemove", this.handleSelectMouseMoveEvent); + document.addEventListener("copy", this.handleCopyEvent); + document.addEventListener('paste', this.handlePasteEvent); + this.initEventLoaded = true; + } + if (this.layoutRef) { + const { x: baseX, y: baseY } = this.layoutRef.getBoundingClientRect(); + this.baseX = baseX; + this.baseY = baseY; + } + } + + componentWillUnmount() { + if (this.layoutRef) { + this.layoutRef.removeEventListener( + "mousedown", + this.handleSelectMouseDownEvent + ); + document.removeEventListener("mouseup", this.handleSelectMouseUpEvent); + document.removeEventListener( + "mousemove", + this.handleSelectMouseMoveEvent + ); + document.removeEventListener("copy", this.handleCopyEvent); + document.removeEventListener('paste', this.handlePasteEvent); + } + } + + // 鼠标按下事件 + handleSelectMouseDownEvent = e => { + if (e.button === 2) { + return; + } + if (e?.target?.classList?.contains('ant-tabs-tab-btn')) { + return; + } + const { showAllParam, sParamType } = this.props; + this.selectedData = []; + let activeKey = ''; + let oTabpane = null; + if (!showAllParam) { + activeKey = sParamType; + oTabpane = this.layoutRef; + } else { + activeKey = this.currentTab; + oTabpane = this.layoutRef.querySelector( + ".ant-tabs-tabpane:not(.ant-tabs-tabpane-hidden)" + ) + } + + this.refIds[activeKey]?.forEach(id => { + const dom = oTabpane.querySelector(`#${id}`); + if (dom) { + const oChecked = dom.querySelector(".divChecked"); + oChecked ? (oChecked.style.display = "none") : ""; + } + }); + + this.bMousedwon = true; + const { clientX, clientY } = e; + + this.clientX = clientX; + this.clientY = clientY; + + this.selectAreaRef.style.left = clientX - this.baseX + "px"; + this.selectAreaRef.style.top = clientY - this.baseY + "px"; + this.selectAreaRef.style.width = "1px"; + this.selectAreaRef.style.height = "1px"; + + this.setState({ maskVisible: true }); + }; + + // 鼠标抬起事件 + handleSelectMouseUpEvent = e => { + const bMousedwonBak = this.bMousedwon; + this.bMousedwon = false; + if (bMousedwonBak) { + this.setState({ maskVisible: false }); + } + }; + + // 鼠标移动事件 + handleSelectMouseMoveEvent = e => { + if (this.bMousedwon && this.selectAreaRef) { + + const { showAllParam, sParamType } = this.props; + this.selectedData = []; + let activeKey = ''; + let oTabpane = null; + if (!showAllParam) { + activeKey = sParamType; + oTabpane = this.layoutRef; + } else { + activeKey = this.currentTab; + oTabpane = this.layoutRef.querySelector( + ".ant-tabs-tabpane:not(.ant-tabs-tabpane-hidden)" + ) + } + + const { clientX, clientY } = e; + const x1 = Math.min(clientX, this.clientX); + const x2 = Math.max(clientX, this.clientX); + const y1 = Math.min(clientY, this.clientY); + const y2 = Math.max(clientY, this.clientY); + + this.selectAreaRef.style.left = x1 - this.baseX + "px"; + this.selectAreaRef.style.top = y1 - this.baseY + "px"; + this.selectAreaRef.style.width = x2 - x1 + "px"; + this.selectAreaRef.style.height = y2 - y1 + "px"; + + const { + right: right1, + left: left1, + bottom: bottom1, + top: top1 + } = this.selectAreaRef.getBoundingClientRect(); + const selectedData = []; + this.refIds[activeKey]?.forEach(id => { + const dom = oTabpane.querySelector(`#${id}`); + if (dom) { + const { + right: right2, + left: left2, + bottom: bottom2, + top: top2 + } = dom.getBoundingClientRect(); + if ( + !( + right1 < left2 || + left1 > right2 || + bottom1 < top2 || + top1 > bottom2 + ) + ) { + selectedData.push(id); + dom.querySelector(".divChecked").style.display = ""; + } else { + dom.querySelector(".divChecked").style.display = "none"; + } + } + }); + this.selectedData = selectedData; + } + }; + + // 复制操作 + handleCopyEvent = e => { + if (!this.props.bInModal && this.props.commonParamVisible) { + return; + } + if (commonUtils.isNotEmptyArr(this.selectedData)) { + const clipboardData = e.clipboardData; + if (!clipboardData) { + return; + } + e.preventDefault(); + + const { showAllParam, sParamType } = this.props; + let activeKey = ''; + if (!showAllParam) { + activeKey = sParamType; + } else { + activeKey = this.currentTab; + } + + // 获取当前tab页布局 + const { tempLayout: layout, viewRow } = this.copyData[activeKey]; + const formData = this.formData[activeKey]; + const { processSelectedData } = this.props; + + const selectedLayout = layout.filter(item => + this.selectedData.includes(item.i) + ); + + const [minX, maxX, minY, maxY] = selectedLayout.reduce( + (result, item) => { + const { x, y, w, h } = item; + result = [ + Math.min(result[0], x), + Math.max(result[1], x + w), + Math.min(result[2], y), + Math.max(result[3], y + h) + ]; + return result; + }, + [999, 0, 999, 0] + ); + + const tableW = maxX - minX; + const tableH = maxY - minY; + + const filledArr = []; + const tableContent = `
${new Array(tableH) + .fill("") + .map((_, trIndex) => { + return `${new Array(tableW) + .fill("") + .map((_, tdIndex) => { + const startX = minX + tdIndex; + const startY = minY + trIndex; + const iIndex = selectedLayout.findIndex( + item => item.x === startX && item.y === startY + ); + if (iIndex !== -1) { + const { i, w, h } = selectedLayout[iIndex]; + // 记录占据的单元格位置 + for (let j = startX; j < startX + w; j++) { + for (let k = startY; k < startY + h; k++) { + filledArr.push(`${j}_${k}`); + } + } + + // const title = viewRow[i]; + let { value } = formData[`${i}_${activeKey}Param_${processSelectedData[0].sId}`] || {}; + value = value === undefined ? "" : value; + // return ``; + return ``; + } else if (filledArr.includes(`${startX}_${startY}`)) { + return ""; + } else { + return ""; + } + }) + .join("")}`; + }) + .join("")}
${title}${value}${value}
`; + + clipboardData.setData("text/plain", tableContent); + } + }; + + // 粘贴操作 + handlePasteEvent = e => { + if (!this.props.bInModal && this.props.commonParamVisible) { + return; + } + + const { showAllParam, sParamType } = this.props; + let activeKey = ''; + if (!showAllParam) { + activeKey = sParamType; + } else { + activeKey = this.currentTab; + } + + // 获取当前tab页布局 + const { tempLayout: layout, tableConfig } = this.copyData[activeKey]; + + const selectedLayout = layout.filter(item => + this.selectedData.includes(item.i) + ); + + selectedLayout.sort(({ x: x1, y: y1 }, { x: x2, y: y2 }) => y1 === y2 ? x1 - x2 : y1 - y2); + const iArr = selectedLayout.map(item => item.i); + + const html = e.clipboardData.getData('text/html'); + const $doc = new DOMParser().parseFromString(html,'text/html'); + // 加载所有的行 + const $trs = $doc.querySelectorAll('table tr'); + const tableArr = []; + $trs.forEach(tr => { + tr.querySelectorAll('td').forEach(td => { + tableArr.push({ + value: td.innerHTML.replace(/<[^>]+>/g, "").trim(), + colspan: td.getAttribute('colspan') || 1, + rowspan: td.getAttribute('rowspan') || 1, + }) + }) + }) + + const { processData, processSelectedData, sParamData } = this.props; + const copyExcel2ShowType = async (iArr) => { + const newState = {}; + const addState = {}; + const sParams = []; + for (let index = 0; index < iArr.length; index++) { + const sName = iArr[index]; + if (tableArr[index]) { + const { value } = tableArr[index]; + newState[`${sName}_${activeKey}Param_${processSelectedData[0].sId}`] = value; + addState[sName.replace('sParam', 'sParamValue')] = value; + + const config = {}; + const iIndex = tableConfig.findIndex(item => item.sName === sName); + if (iIndex !== -1) { + config.showDropDown = tableConfig[iIndex].showDropDown; + config.sParamName = tableConfig[iIndex].showName; + } + sParams.push({ + ...config, + sId: commonUtils.createSid(), + sParamKey: sName, + sParamValue: value, + bSelfCbx: true, + handleType: 'update' + }); + } + } + addState.sParams = JSON.stringify(sParams); + + const iIndex = processData.findIndex(item => item.sId === processSelectedData[0].sId); + const processDataNew = [...processData]; + if (iIndex !== -1) { + processDataNew[iIndex] = {...processDataNew[iIndex], ...addState } + } + + this.props.onSaveState({ + masterData: { ...this.props.masterData, ...newState }, + commonListSelectParamId: commonUtils.createSid(), + processData: processDataNew, + }); + + } + + if (commonUtils.isNotEmptyArr(iArr) && commonUtils.isNotEmptyArr(tableArr)) { + if (iArr.length !== tableArr.length) { + Modal.confirm({ + title: '温馨提示:', + content: 'excel数据数量与组件数量不一致, 强制匹配?', + okText: '确认', + onOk() { + copyExcel2ShowType(iArr); + }, + }); + } else { + copyExcel2ShowType(iArr); + } + } else if (commonUtils.isNotEmptyArr(iArr) && commonUtils.isEmptyArr(tableArr)) { + message.info('粘贴板无excel数据'); + } + }; + + + // 初始化布局数据 + handleGetInitLayout = (configs, panel = "[]") => { + if ( panel === "[]") { // 如果没有保存过布局数据 + let flag = 0; + return configs.map((item, index) => { + if (index % 4 === 0 && index !== 0) { + flag++; + } + const minH = item.sName && item.sName.includes('sParamColumnConfig') ? 2 : 1; + return { + i: item.sName, + x: (index - flag * 4) * 3, + y: flag, + w: 3, + h: minH, + minH, + } + }); + } else { // 如果保存过布局数据 + // 判断配置数据和布局数据的sName是否一致 + const arrAdd = configs.map(item => item.sName); // 新增的字段 + const arrDel = []; // 删除的字段 + const panelArr = JSON.parse(panel); + panelArr.forEach(({ i: sName }, index) => { + const minH = sName && sName.includes('sParamColumnConfig')? 2 : 1; + panelArr[index].minH = minH; + panelArr[index].h = Math.max(panelArr[index].h, minH); + const iIndex = arrAdd.findIndex(item => item === sName); + if (iIndex !== -1) { + arrAdd.splice(iIndex, 1); + } else { + arrDel.push(sName); + } + }); + + if (commonUtils.isEmptyArr(arrAdd) && commonUtils.isEmptyArr(arrDel)) { // 数据没有变化 + return panelArr; + } + + if (commonUtils.isNotEmptyArr(arrDel)) { // 有删除的数据 + arrDel.forEach(sName => { + const iIndex = panelArr.findIndex(item => item.i === sName); + if (iIndex !== -1) { + panelArr.splice(iIndex, 1); + } + }); + } + + if (commonUtils.isNotEmptyArr(arrAdd)) { // 有新增的数据 + let newY = 0; // 新增数据的开始行位置 + panelArr.forEach(({y, h}) => { + newY = Math.max(y + h, newY); + }); + + let flag = 0; + arrAdd.forEach((sName, index) => { + if (index % 4 === 0 && index !== 0) { + flag++; + } + const minH = sName && sName.includes('sParamColumnConfig') ? 2 : 1; + panelArr.push({ + i: sName, + x: (index - flag * 4) * 3, + y: flag + newY, + w: 3, + h: minH, + minH, + }); + }) + } + return panelArr; + } + } + + handleGetParam = (name, slaveSelectOneData) => { + const addState ={}; + const paramsConfig = {}; + let paramData = {}; + paramsConfig.gdsconfigformslave = []; + let paramListConfig ={}; + let paramListData = []; + let paramListColumn = []; + const sType = `${name}Param`; + const bTable = slaveSelectOneData['b'+ name.replace('s','').trim() + 'ParamTable'] ; + const paramType = commonUtils.isNotEmptyObject(slaveSelectOneData) ? slaveSelectOneData[sType] : ''; + if (commonUtils.isNotEmptyObject(paramType)) { + /* 表格显示 */ + if(bTable) { + /* 工序参数以表格形式展示 列 */ + // let paramListData = []; + paramListConfig = { + bisMutiSelect: false, + bMutiSelect: false, + }; + const gdsconfigformslave = [{ + sId: commonUtils.createSid(), + sName: 'sId', + showName: '主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'bSelfCbx', + showName: '选择', + bVisible: true, + iFitWidth: 37, + }, { + sId: commonUtils.createSid(), + sName: 'sParamKey', + showName: '参数主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'sParamName', + showName: '参数名', + bVisible: true, + iFitWidth: 230, + }, { + sId: commonUtils.createSid(), + sName: 'sParamValue', + showName: '参数值', + bVisible: true, + }]; + paramListConfig.gdsconfigformslave = gdsconfigformslave; + paramListColumn = commonFunc.getHeaderConfig(paramListConfig); + if (commonUtils.isNotEmptyObject(paramType)) { + /* 要把数据以表格的形式显示出来 */ + const sParamJsonObj = JSON.parse(paramType); + for (const key of Object.keys(sParamJsonObj)) { + if (key.includes('sParam') && !key.includes('DropDown') && !key.includes('Default')) { + const obj = {}; + obj.sId = commonUtils.createSid(); + obj.sParamKey = key; + obj.sParamName = sParamJsonObj[key]; + /* 找到数字 找到下拉数据源 */ + const num = key.replace(/[^\d]/g, '').trim(); + if (Number(num)) { + const number = Number(num); + const sParamDropDownKey = `sParamDropDown${number}`; + obj.sDropDownData = sParamJsonObj[sParamDropDownKey]; /* 下拉 */ + const sParamDefaultKey = `sParamDefault${number}`; + obj.sParamValue = sParamJsonObj[sParamDefaultKey]; /* 默认值 */ + } + paramListData.push(obj); + } + } + } + addState[`${name}ParamListConfig`] = paramListConfig; + addState[`${name}ParamListColumn`] = paramListColumn; + addState[`${name}ParamListData`] = paramListData; + addState[`b${name}ParamTable`] = true; /* 是否已表格显示 */ + console.log('addState', addState); + }else{ /* 控件显示 */ + paramData = { ...paramData, ...commonUtils.convertStrToObj(paramType) }; + if (this.sidJson[`${slaveSelectOneData.sId}_${name}`]) { + paramData.sId = this.sidJson[`${slaveSelectOneData.sId}_${name}`]; + } else { + paramData.sId = commonUtils.createSid(); + this.sidJson[`${slaveSelectOneData.sId}_${name}`] = paramData.sId; + } + const gdsconfigformslaveSid = {}; + gdsconfigformslaveSid.sName = 'sId'; + gdsconfigformslaveSid.showName = 'sId'; + gdsconfigformslaveSid.bVisible = false; + paramsConfig.gdsconfigformslave.push(gdsconfigformslaveSid); + for (const key of Object.keys(paramData)) { + const num = key.replace('sParam', '').trim(); + const sParamColumnConfig = 'sParamColumnConfig' + num; + if(key.includes('sParam') && (commonUtils.isEmptyObject(paramData[sParamColumnConfig]) || key.includes('sParamColumnConfig')) + && !key.includes('sParamDropDown') && !key.includes('sParamDefault') ) { + const gdsconfigformslave = {}; + gdsconfigformslave.sName = key; + gdsconfigformslave.showName = paramData[key]; + gdsconfigformslave.bVisible = true; + /* 判断是否是sql下拉 */ + const num = Number(key.replace('sParam', '')); + const sqlDrownName = `sParamDropDown${num}`; + if (!commonUtils.isEmpty(paramData[sqlDrownName])) { + gdsconfigformslave.sDropDownType = 'const'; + const conStr = JSON.stringify(paramData[sqlDrownName]); + gdsconfigformslave.showDropDown = conStr; + } + paramsConfig.gdsconfigformslave.push(gdsconfigformslave); + } + } + } + } else { + paramsConfig.gdsconfigformslave = []; + paramData = {}; + } + return { + [`${name}ParamConfig`]: paramsConfig, + [`${name}ParamData`]: [paramData], + // ...addState, + [`${name}ParamListConfig`] : paramListConfig, + [`${name}ParamListColumn`] : paramListColumn, + [`${name}ParamListData`] : paramListData, + [`b${name}ParamTable`] : bTable, /* 是否已表格显示 */ + }; + }; + + handleChange = (_tableName, _sName, record) => { + const { masterData, processData, processSelectedData } = this.props; + if(commonUtils.isNotEmptyArr(processSelectedData) && commonUtils.isNotEmptyObject(_sName)) { + const iProcessIndex = processData.findIndex(item => item.sId === processSelectedData[0].sId); + if (iProcessIndex > -1) { + let sParams = processSelectedData[0].sParams; + const sParamsData = JSON.parse(sParams); + const sParamKey = commonUtils.isNotEmptyArr(_sName.split('_')) && _sName.split('_').length > 2 ? _sName.split('_')[0] : ''; + const sProcessId = commonUtils.isNotEmptyArr(_sName.split('_')) && _sName.split('_').length > 2 ? _sName.split('_')[2] : ''; + if (commonUtils.isNotEmptyArr(sParamsData)) { + const iPIndex = sParamsData.findIndex(item => item.sParamKey === sParamKey); + if (iPIndex > -1) { + const addState = { + sParamValue: record[_sName], + bSelfCbx: true + }; + sParamsData[iPIndex] = {...sParamsData[iPIndex], ...addState}; + } + } + const sParamsNew = JSON.stringify(sParamsData); + processSelectedData.sParams = sParamsNew; + const addProcessState = {}; + addProcessState.sParams = sParamsNew; + addProcessState.handleType= commonUtils.isEmpty(processData[iProcessIndex].handleType) ? 'update' : processData[iProcessIndex].handleType; + processData[iProcessIndex] ={...processData[iProcessIndex], ...addProcessState}; + } + } + + this.props.onSaveState({ + masterData: { ...masterData, ...record, processData } + }); + } + + handleGetTabParams = () => { + const { + // masterConfig, + slaveData, + } = this.props; + const sParamList = ['sProcess', 'sReport', 'sWorkOrder', 'sNorm', 'sTest']; + const sParamNameList = ['工序参数', '上报参数', '工单参数', '标准书参数', '测试参数']; + + const oTabPane = sParamList.map((sName, index) => { + // if (masterConfig?.gdsconfigformslave) { + // const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === `${sName}Param`); + // if (iIndex !== -1) { + // sParamNameList[index] = masterConfig.gdsconfigformslave[iIndex].showName; + // } + // } + + const { + [`${sName}ParamConfig`]: sParamConfig, + [`b${sName}ParamTable`]: bParamTable, + } = this.handleGetParam(sName, slaveData[0]); + const tableConfig = commonUtils.isNotEmptyObject(sParamConfig) && commonUtils.isNotEmptyArr(sParamConfig.gdsconfigformslave) + ? sParamConfig.gdsconfigformslave.filter(item => item.bVisible) : []; + + if (commonUtils.isEmptyArr(tableConfig) && !bParamTable) { + return ''; + } + + if (!this.currentTab) { + this.currentTab = sName; + } + + return ( + + + + ); + }) + + + return ( + { + this.currentTab = key; + }} + > + { oTabPane } + + ); + } + + handleGetRefIds = () => { + return this.refIds; + } + + handleSetRefIds = (refIds) => { + this.refIds = refIds; + } + + handleSaveCopyData = (sParamType, data) => { + this.copyData[sParamType] = data; + } + + handleSaveFormData = (sParamType, data) => { + this.formData[sParamType] = data; + } + + render() { + const { pageLoading, showAllParam, bInModal } = this.props; + const { maskVisible, modalLoaded } = this.state; + + return ( + (!bInModal || modalLoaded) &&
+ +
{ this.layoutRef = ref; }}> + { + showAllParam ? + this.handleGetTabParams() : + + } +
+
+
+
{ + this.selectAreaRef = ref; + }} + /> +
+
+ +
+ ); + } +} + +const CommonParamsComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig, sParamType } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + // props.onSaveFormData(sParamType, obj); + // console.log('=====obj', obj); + return obj; + }, +})((props) => { + const { + slaveData, + sParamType, + processSelectedData, + onGetInitLayout, + onGetParam, + onGetRefIds, + onSetRefIds, + onSaveCopyData, + enabled, + } = props; + + const sTypeName = `${sParamType}Param`; + const sTypePanel = `${sParamType}Panel`; + // 是否展示 + let bShown = false; + if (commonUtils.isNotEmptyArr(slaveData)) { + const sReportParam = slaveData[0][sTypeName]; + if (sReportParam && commonUtils.isJSON(sReportParam) && commonUtils.isNotEmptyObject(JSON.parse(sReportParam))) { + bShown = true; + } + } + + if (!bShown) { + return ''; + } + + const { [`${sTypeName}Config`]: sReportParamConfig, [`${sTypeName}Data`]:sReportParamData, + [`${sTypeName}ListConfig`]: paramListConfig,[`${sTypeName}ListColumn`]: paramListColumn, + [`${sTypeName}ListData`] : paramListData, [`b${sTypeName}Table`]: bParamTable, + } = onGetParam(sParamType, slaveData[0]); + + const sReportViewConfig = commonUtils.isNotEmptyObject(sReportParamConfig) && commonUtils.isNotEmptyArr(sReportParamConfig.gdsconfigformslave) + ? sReportParamConfig.gdsconfigformslave.filter(item => item.bVisible) : []; + + let tableConfig = sReportViewConfig; + const viewRow = commonUtils.isNotEmptyArr(sReportParamData) ? sReportParamData[0] : {}; + if (bParamTable) { + tableConfig = [{ + bVisible: true, + sName: 'sParamColumnConfig1' + }]; + } + let tempLayout = onGetInitLayout(tableConfig, slaveData[0][sTypePanel]); + + const sTableName = sTypeName +'List'; + const sTableConfig = sTypeName +'ListConfig'; + const sTableColumn = sTypeName +'ListColumn'; + const sTableData = sTypeName +'ListData'; + const key = 'sParamColumnConfig1'; + + const paramListTableProps = { + ...commonBusiness.getTableTypes(sTableName, {...props, [sTableConfig]: paramListConfig, [sTableColumn]: paramListColumn, + [sTableData]: paramListData }), + tableProps:{}, + // data: paramListData1, + }; + + onSaveCopyData(sParamType, { tempLayout, viewRow, tableConfig }); + + const getAutoTableHeight = () => { + if (props.bInModal) { + return 385; + } else { + const oProcessTable = document.querySelector(`#${props.processTableId}`); + if (oProcessTable) { + const oBody = oProcessTable.querySelector('.ant-table-body'); + if (oBody) { + return oBody.getBoundingClientRect().height; + } + } + } + return 'auto'; + } + + return bParamTable && + tableConfig.some(item => item.sName === "sParamColumnConfig1") ? ( +
+ +
+ ) : ( + + + { + bParamTable ? + (
+
+ item.i === key) ? tempLayout.find(item => item.i === key).h : 2} + /> +
+
) + : + tableConfig.map((child) => { + const iRowNum = child.iColValue === 1 ? 6 : 1; /* 1个字段占的网格个数 ,网格总个数是24 */ + const iColValue = sMemo ? 24 : child.iColValue * iRowNum; /* 产品部要求 备注设置成一行到底 */ /* 跨度 */ + const sMemo = child.sName.toLowerCase().endsWith('memo'); + let enabledNew = enabled && !child.bReadonly; + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + const sFormulaMemo = child.sName.toString() === 'sFormulaMemo' ? 'none' : 'block'; + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + + let w = 3; + const iIndex = tempLayout.findIndex(item => item.i === child.sName); + if (iIndex !== -1) { + w = tempLayout[iIndex].w; + } + const flexWidth = w !== 1 ? (3 * 33) / w : 0; + const formItemLayout = { + labelCol: { + flex: flexWidth + "%", + style: { + color: "rgba(0, 0, 0, 0.65)", + backgroundColor: "#BFEFFF" + } + }, + wrapperCol: { flex: "auto" } + }; + + const showTypeProps = { + name: sTypeName, + form: props.form, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getFloatNum: props.getFloatNum, + onChange: props.onChange, + showConfig: {...child, sName: `${child.sName}_${sTypeName}_${processSelectedData[0].sId}`}, + formItemLayout, + textArea: sMemo, + enabled: enabledNew, + bTable: false, + formRoute: props.formRoute, + + app: props.app, + iColValue, + record: viewRow, + sId: viewRow.sId, + bViewTable: true, + onViewClick: props.handleViewClick, + onFieldDoubleClick: props.handleFieldDoubleClick, + }; + + /* 如果包含sParamColumnConfig 则渲染表格,否则渲染为View */ + if (child.sName && child.sName.includes('sParamColumnConfig')) { + const paramListConfigStr = child.showName; + const paramListConfig = commonUtils.isJSON(paramListConfigStr) ? JSON.parse(paramListConfigStr) : {}; + let paramListColumn = []; + if (commonUtils.isNotEmptyObject(paramListConfig)) { + paramListColumn = commonFunc.getHeaderConfig(paramListConfig); + } + const paramListTableProps = { + ...commonBusiness.getTableTypes('paramList', {...props, paramListConfig, paramListColumn }), + tableProps:{}, + data: [], + }; + return ( +
+ config.i === child.sName).h} + /> +
+ ) + } else { + const refIds = onGetRefIds(); + if ( + refIds[sParamType] && + !refIds[sParamType].includes(child.sName) + ) { + refIds[sParamType].push(child.sName); + } else { + refIds[sParamType] = [child.sName]; + } + onSetRefIds(refIds); + const showType = ( + + ); + return ( +
+ {w === 1 ? ( + +
{showType}
+
+ ) : ( + showType + )} +
+
+ ); + } + })} + + ); +}); + +export default CommonListSelectParam; diff --git a/src/components/Common/CommonListSelectParam/index.less b/src/components/Common/CommonListSelectParam/index.less new file mode 100644 index 0000000..c65412d --- /dev/null +++ b/src/components/Common/CommonListSelectParam/index.less @@ -0,0 +1,359 @@ +.editModeStyle { + :global { + + .react-resizable { + position: relative; + } + + .react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + background-repeat: no-repeat; + background-origin: content-box; + box-sizing: border-box; + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+'); + background-position: bottom right; + padding: 0 3px 3px 0; + } + + .react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); + } + + .react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; + } + + .react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); + } + + .react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); + } + + .react-resizable-handle-w, + .react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; + } + + .react-resizable-handle-w { + left: 0; + transform: rotate(135deg); + } + + .react-resizable-handle-e { + right: 0; + transform: rotate(315deg); + } + + .react-resizable-handle-n, + .react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; + } + + .react-resizable-handle-n { + top: 0; + transform: rotate(225deg); + } + + .react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); + } + + .react-grid-layout { + position: relative; + transition: height 200ms ease; + } + + .react-grid-item { + transition: all 200ms ease; + transition-property: left, top; + } + + .react-grid-item img { + pointer-events: none; + user-select: none; + } + + .react-grid-item.cssTransforms { + transition-property: transform; + } + + .react-grid-item.resizing { + z-index: 1; + will-change: width, height; + } + + .react-grid-item.react-draggable-dragging { + transition: none; + z-index: 3; + will-change: transform; + } + + .react-grid-item.dropping { + visibility: hidden; + } + + .react-grid-item.react-grid-placeholder { + background: red; + opacity: 0.2; + transition-duration: 100ms; + z-index: 2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + } + + .react-grid-item>.react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + } + + .react-grid-item>.react-resizable-handle::after { + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 5px; + height: 5px; + border-right: 2px solid rgba(0, 0, 0, 0.4); + border-bottom: 2px solid rgba(0, 0, 0, 0.4); + } + + .react-resizable-hide>.react-resizable-handle { + display: none; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-w, + .react-grid-item>.react-resizable-handle.react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-w { + left: 0; + transform: rotate(135deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-e { + right: 0; + transform: rotate(315deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-n, + .react-grid-item>.react-resizable-handle.react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-n { + top: 0; + transform: rotate(225deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); + } + } +} +.viewMode { + border: 1px solid black; + + .dragout { + width: 15px; + height: 100%; + background: rgba(95, 95, 95, 0.7); + position: absolute; + top: 0; + left: 0; + } + + .closePanel { + width: 15px; + height: 15px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; + } +} +.commonLayout { + width: 100%; + height: 100%; + + + .editMode { + border: 1px solid black; + + .dragout { + width: 15px; + height: 100%; + background: rgba(95, 95, 95, 0.7); + position: absolute; + top: 0; + left: 0; + } + + .closePanel { + width: 15px; + height: 15px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; + } + } + + .dropdownPlus { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } + + :global { + + + .blankPanel { + background: #efefef; + min-height: 100%; + } + + .ant-tabs-top>.ant-tabs-nav { + margin: 0; + min-height: 30px; + + .ant-tabs-tab { + border-right: 1px solid #d9d9d9 !important; + } + } + + .speacialNote { + position: absolute; + left: 32%; + top: 5px; + font-size: 12px; + color: #000 !important; + } + + .selected-tab { + background: rgb(251, 214, 211) !important; + } + } + + .hideTab { + :global { + .ant-tabs-nav { + display: none; + } + } + } +} + +.tabPane { + position: relative; + width: 100%; + height: calc(100vh - 155px); + overflow: auto; +} + +.tabContent { + :global { + .ant-spin-nested-loading, .ant-spin-container { + height: 100%; + } + .ant-tabs-content { + padding: 10px 0 30px 0; + } + } +} + +.showType { + :global { + *:not(.ant-select-arrow):not(.sActiveIdStyle_viewChooseSpan) { + height: 100% !important; + } + } +} + +.divChecked { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(65, 173, 250, 0.3); +} + +.mask { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99999; + :global { + .maskContent { + position: relative; + width: 100%; + height: 100%; + .maskSelectArea { + position: absolute; + border: 1px solid rgb(97, 97, 97); + background: rgba(97, 97, 97, 0.1); + } + } + } +} \ No newline at end of file diff --git a/src/components/Common/CommonListSelectProductMaterial.js b/src/components/Common/CommonListSelectProductMaterial.js index c01913e..c1ad920 100644 --- a/src/components/Common/CommonListSelectProductMaterial.js +++ b/src/components/Common/CommonListSelectProductMaterial.js @@ -8,7 +8,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, Row, Col } from 'antd'; +import { Layout, Spin, Button, Row, Col } from 'antd-v4'; import CommonListEvent from './CommonListEvent';/* 继承销售模块业务功能 */ import * as commonFunc from './commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from './CommonTable';/* 可编辑表格 */ diff --git a/src/components/Common/CommonListSelectTree/index.js b/src/components/Common/CommonListSelectTree/index.js index ee4f3d2..af9d361 100644 --- a/src/components/Common/CommonListSelectTree/index.js +++ b/src/components/Common/CommonListSelectTree/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { DownOutlined } from '@ant-design/icons'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, Row, Col, message } from 'antd'; +import { Layout, Spin, Button, Row, Col, message } from 'antd-v4'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ // import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from '@/components/Common//commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ diff --git a/src/components/Common/CommonListTabEvent.js b/src/components/Common/CommonListTabEvent.js index 0f66f49..5f9fdad 100644 --- a/src/components/Common/CommonListTabEvent.js +++ b/src/components/Common/CommonListTabEvent.js @@ -4,7 +4,7 @@ * Created by mar105 on 2019-03-27. */ import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from './commonFunc'; /* 通用单据方法 */ import commonConfig from '../../utils/config'; diff --git a/src/components/Common/CommonListTree/index.js b/src/components/Common/CommonListTree/index.js index b576146..910f5be 100644 --- a/src/components/Common/CommonListTree/index.js +++ b/src/components/Common/CommonListTree/index.js @@ -9,7 +9,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin } from 'antd'; +import { Layout, Spin } from 'antd-v4'; import CommonListTreeEvent from '../CommonListTreeEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '../commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import Toolbar from '../ToolBar/ToolBarNew'; diff --git a/src/components/Common/CommonListTreeEvent.js b/src/components/Common/CommonListTreeEvent.js index ac21120..50c8f2f 100644 --- a/src/components/Common/CommonListTreeEvent.js +++ b/src/components/Common/CommonListTreeEvent.js @@ -3,7 +3,7 @@ * Created by mar105 on 2019-03-27. */ import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonFunc from './commonFunc'; /* 通用单据方法 */ import commonConfig from '../../utils/config'; diff --git a/src/components/Common/CommonListTreeSelect/index.js b/src/components/Common/CommonListTreeSelect/index.js index 3bcbd79..a1bc791 100644 --- a/src/components/Common/CommonListTreeSelect/index.js +++ b/src/components/Common/CommonListTreeSelect/index.js @@ -5,7 +5,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Layout, Spin, Button, message } from 'antd'; +import { Layout, Spin, Button, message } from 'antd-v4'; import CommonListTreeEvent from '@/components/Common/CommonListTreeEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ diff --git a/src/components/Common/CommonNewBill.js b/src/components/Common/CommonNewBill.js index 92e00fc..9fde7ea 100644 --- a/src/components/Common/CommonNewBill.js +++ b/src/components/Common/CommonNewBill.js @@ -3,7 +3,7 @@ import React, { Component, useState, useRef, useEffect } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import {Row, Col, Checkbox, Layout, Spin, Tabs, Dropdown, Avatar, Button, Menu, Table, Upload} from 'antd'; +import {Row, Col, Checkbox, Layout, Spin, Tabs, Dropdown, Avatar, Button, Menu, Table, Upload} from 'antd-v4'; import { message } from '@/utils/common/message'; import {DownOutlined, UploadOutlined,} from '@ant-design/icons'; import CommonNewSales from '@/components/Common/CommonNewBillEvent';/* 继承销售模块业务功能 */ diff --git a/src/components/Common/CommonNewBillEvent.js b/src/components/Common/CommonNewBillEvent.js index eda7432..ce94333 100644 --- a/src/components/Common/CommonNewBillEvent.js +++ b/src/components/Common/CommonNewBillEvent.js @@ -1,6 +1,6 @@ /* eslint-disable */ import React, { Component } from 'react'; -import { Modal, Progress } from 'antd'; +import { Modal, Progress } from 'antd-v4'; import { message } from '@/utils/common/message'; // import moment from 'moment'; import * as commonUtils from '@/utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonNewListBill.js b/src/components/Common/CommonNewListBill.js new file mode 100644 index 0000000..8564741 --- /dev/null +++ b/src/components/Common/CommonNewListBill.js @@ -0,0 +1,2788 @@ +/* eslint-disable */ + +import React, { Component } from 'react'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import {Row, Col, Checkbox, Layout, Spin, Tabs, Dropdown, Avatar, Button, message, Menu, Table, Upload} from 'antd-v4'; +import {DownOutlined, UploadOutlined,} from '@ant-design/icons'; +import CommonNewSales from '@/components/Common/CommonNewTabBillEvent';/* 继承销售模块业务功能 */ +import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import styles from '@/index.less'; +import AssignmentField from './AssignmentField'; +import CommonView from '@/components/Common/CommonView'; +import CommonViewTable from '@/components/Common/CommonViewTable'; +import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +import * as commonServices from '@/services/services';/* 服务类 */ +import AddIcon from '@/assets/add.svg'; +import DisableAddIcon from '@/assets/disableadd.svg'; +import CopyIcon from '@/assets/copy.svg'; +import CopyAllIcon from '@/assets/copyall.svg'; +import DisableCopyIcon from '@/assets/disablecopy.svg'; +import DisableCopyAllIcon from '@/assets/disablecopyall.svg'; +import DelIcon from '@/assets/delete.svg'; +import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */ +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from "./CommonListSelect"; +import WorkCalendar from '@/components/Common/WorkCalendar/WorkCalendar'; + +// import ProcessIcon from '../../assets/process.svg'; +// import DisableProcessIcon from '../../assets/disableprocess.svg'; +// import MateriallIcon from '../../assets/material.svg'; +// import DisableMateriallIcon from '../../assets/disablematerial.svg'; +// import SlaveMemo from './SlaveMemo'; + + +const width = '18px'; +const height = '18px'; +const setAdd = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 删除, +}; +const setCopy = { + title: '复制', + width: { width }, + height: { height }, + img: 复制, + disableimg: 复制, +}; +const setCopyAll = { + title: '复制部件', + width: { width }, + height: { height }, + img: 复制部件, + disableimg: 复制部件, +}; +const setDelete = { + title: '删除', + width: { width }, + height: { height }, + img: 删除, + disableimg: 删除, +}; +// const setProcess = { +// title: '工序', +// width: { width }, +// height: { height }, +// img: 选择工序, +// disableimg: 删除, +// }; +// const setMaterial = { +// title: '材料', +// width: { width }, +// height: { height }, +// img: 选择材料, +// disableimg: 选择材料, +// }; + +// console.log('btn; ', setAdd, setDelete, setCopy); +const { Header, Content } = Layout; +const { TabPane } = Tabs; +// const { confirm } = Modal; +class CommonNewBill extends Component { + constructor(props) { + super(props); + this.state = { + currentTab: '10' + }; + } + + componentWillReceiveProps() { + if (!this.hasSeletLastTab) { + const { + formData = [], + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + } = this.props; + if (commonUtils.isNotEmptyArr(formData)) { + let currentTab = null; + if (onlySlave) { + currentTab = '10'; + } + if (onlySlave0) { + currentTab = '20'; + } + if (onlySlave1) { + currentTab = '30'; + } + if (onlyslave2) { + currentTab = '40'; + } + if (onlyslave3) { + currentTab = '50'; + } + if (onlyslave4) { + currentTab = '60'; + } + if (onlyslave5) { + currentTab = '70'; + } + if (onlyslave6) { + currentTab = '80'; + } + if (onlyslave7) { + currentTab = '90'; + } + if (onlyslave8) { + currentTab = '100'; + } + if (onlyslave9) { + currentTab = '110'; + } + if (onlyslave10) { + currentTab = '150'; + } + if (currentTab) { + this.hasSeletLastTab = true; + this.setState({ currentTab }); + } + } + } + } + + /** 行选择 */ + onRowClick = (name, record) => { + if (name === 'control') { + this.props.onTableSelectRowChange(name, [record.sId]); + } + }; + + onChange = (checkedValues) => { + this.props.onSaveState({ + dataPersonArray: checkedValues, + }); + }; + getMenuStatus = (menu) => { + if (menu.sControlName === 'BtnImport') { + return !this.props.enabled; + } + }; + + + /** 上传后执行函数 */ + // handleUploadChange = (info) => { + // const { file } = info; + // console.log(info, 'infoinfoinfoinfoinfoinfoinfoinfoinfo'); + // const { masterData, sModelsId, slaveConfig } = this.props; + // if (file.response) { + // if (file.response.code === 1) { + // /* 数据查询成功 */ + // const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + // if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + // return; + // } + // const returnData = file.response.dataset.rows[0].canbeInsert; + // returnData.forEach(async (tableDataRow) => { + // tableDataRow.handleType = 'add'; + // tableDataRow.sId = commonUtils.createSid(); + // tableDataRow.sParentId = masterData.sId; + // tableDataRow.key = tableDataRow.sId; + // for (const child of Object.keys(tableDataRow)) { + // const index = child.indexOf('_sRealValue_'); + // if (index > -1) { + // const property = child.substring(0, child.length - 12); + // tableDataRow[property] = tableDataRow[child]; + // } + // } + // // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductId'); + // let productIdDropDown; + // const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductId'); + // if (slaveIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + // productIdDropDown = sqlDropDownData.dropDownData; + // } + // if (productIdDropDown !== undefined) { + // const iProductIdIndex = 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, + // }); + // } + // } + // }); + // this.props.onSaveState({ slaveData: returnData }); + // } else { /* 失败 */ + // this.props.getServiceError(file.response); + // } + // } + // }; + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const uploadInfo = { + sPicturePath, + sFileName: file.name, + }; + const tableDataRow = this.props.onDataRowAdd(name, true); + const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props; + tableColumn.forEach((slaveChild) => { + const ckey = slaveChild.dataIndex; + if (ckey === 'sProductNo' || ckey === 'sProductName') { + tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : ''; + } else if (ckey === 'iOrder') { + tableDataRow[ckey] = ''; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue; + if (bCkxTmpCheck === '1') { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach((item) => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(','); + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_System_AutoSendCheckMsg', + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: '', + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString, + }, + }; + + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null); + const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId }; + const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false, + }); + return; + } + } else { /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false, + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false, + }); + }; + handleTableModal = async () => { + const { + sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, + } = this.props; + const addState = {}; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + // let dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyId'); + let dropdownProductClassifyId; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + // dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyName'); + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId); + if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) { + const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(','); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = slaveData[iSlaveIndex].dProductQty; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState, + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + + if (iIndex > -1) { + this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]); + } + }; + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + }; + handleOkModal = () => { + const { + controlData, slave0Data, processData, sModelsId, slaveData, slaveSelectedRowKeys, materialsConfig, processConfig, + } = this.props; + const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const mtData = slave0Data.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '2'); + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ''; + let pDetail = ''; + const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + ctData.forEach(async (controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? '' : ' '; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ''; + let ipDetail = ''; + const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId)); + // const materialsIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'materials', 'sMaterialsName'); + let materialsIdDropDown; + const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName'); + if (materialsIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]); + materialsIdDropDown = sqlDropDownData.dropDownData; + } + materials.forEach((mItem, i) => { + const fh = i === 0 ? '' : ','; + if (materialsIdDropDown) { + const materialsIdIndex = materialsIdDropDown.findIndex(item => item.sId === mItem.sMaterialsId); + if (materialsIdIndex > -1) { + imDetail = `${imDetail}${fh} ${materialsIdDropDown[materialsIdIndex].sMaterialsName}`; + } + } + }); + // processPropsType + const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId)); + // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName'); + let processIdDropDown; + const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + if (processIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]); + processIdDropDown = sqlDropDownData.dropDownData; + } + process.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + if (processIdDropDown) { + const processIdIndex = processIdDropDown.findIndex(item => item.sId === pItem.sProcessId); + if (processIdIndex > -1) { + ipDetail = `${ipDetail}${fh} ${processIdDropDown[processIdIndex].sProcessName}`; + } + } + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ''; + slaveData[slaveIndex].sProcessMemo = ''; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + slave0Data, + processData, + slaveData, + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + // eslint-disable-next-line no-unused-vars + handleFilterData = (name, dataIndex, value, record) => { + return true; + // const { slaveSelectedRowKeys } = this.props; + // if (name === 'process') { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } else { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys, slaveSelectedRowKeys } = this.props; + if (data !== undefined) { + const newArr = data.filter((item) => { + if (name === 'control') { + return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } else { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig, + } = this.props; + let tableDataRow = {}; + if (name === 'control') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); + }); + // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductName'); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + if (sModelsType === 'sales/salesOrder') { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else if (name === 'materials' || name === 'process') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts'); + message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]); + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') { + message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys) => { + if (name === 'control') { + const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + return true; + } else { + return false; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { + sModelsType, controlData, processData, materialsData, + } = this.props; + if (sModelsType === 'sales/salesOrder' && name === 'slave') { + const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true); + } + const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true); + } + const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, + } = this.props; + const tableSelectedRowKeys = []; + if (name === 'productProcessInfo') { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ''; + let sConfigMasterIdControl = ''; + let sConfigMasterIdMaterials = ''; + let sConfigMasterIdProcess = ''; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro')); + } + const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== '3') { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === '3') { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys }); + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + /** 上传后执行函数 */ + handleBeforeUpload = () => { + // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!isLt10M) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */ + // } + }; + + handleTabChange = (key) => { + setTimeout(() => { + this.setState({ + currentTab: key + }) + }, 0); + } + + handleMenuClick= (e) => { + let { sId } = this.props.masterData; + const Type = e.key; + const { token } = this.props.app; + const { sType } = this.props.app.userinfo; + if (Type === 'formSlave') { /* 根据从表勾选数据 生成从表数据 */ + const { slaveSelectedRowKeys } = this.props; + if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) { + message.warn('请选择数据'); + return; + } + sId = slaveSelectedRowKeys; + } + const downloadUrl = `${commonConfig.server_host}sqlfile/scriptSqlDownload?methodName=${Type + }&sId=${sId}&token=${token}&sType=${sType}`; + window.open(downloadUrl); + this.props.onSaveState({ + downloadUrl, + }); + }; + handleSlaveInit = async (name) => { + const { app, masterData, [`${name}Data`]: slaveData } = this.props; + if (masterData.sName !== null && masterData.sName !== undefined) { + message.warn('该节点不能初始化!'); + return; + } + // const comfiled = service.service_path.filter(item => (item.route === + // app.currentPane.route)).length <= 0 ? {} : + // service.service_path.filter(item => (item.route === + // app.currentPane.route))[0]; + const comfiled = { + path: 'gdsconfigform', + pathTwo: 'Gdsconfigformmaster', + pathSlave: 'Gdsconfigformslave', + pathCustom: 'Customslave', + pathInit: 'GdsconfigformslaveByMaster', + pathSlaveSelect: 'gdsmodule', + pathSlaveSelectTwo: 'SelectFormData', + }; + const url = `${commonConfig.server_host}${comfiled.path}/get${comfiled.pathInit + }?sParentId=${masterData.sId}&sTbName=${masterData.sTbName}&sType=${masterData.sType}`; + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const tempData = dataReturn.dataset.rows; + const initData = []; + tempData.forEach((item) => { + item.handleType = 'add'; + initData.push(item); + }); + const newData = [...slaveData, ...initData]; + this.props.onSaveState({ slaveData: newData, enabled: true }); + message.success('初始化成功!'); + } else { + message.warn('当前表格无需初始化!'); + } + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + }; + handleCopyRow = (name, toname) => { + this.props.onCopyRow(name, toname); + }; + handleCopy2Custom = () => { + let toname = 'slave2'; + for (let i = 0; i < 10; i++) { + const slaveConfigName = `slave${i}Config`; + const slaveConfig = this.props[slaveConfigName]; + if (slaveConfig && commonUtils.isNotEmptyObject(slaveConfig)) { + if (slaveConfig.sTbName === 'gdsconfigformcustomslave') { + toname = `slave${i}`; + break; + } + } + } + this.props.onCopyRow('slave', toname); + }; + /** 添加行 */ + handleAddRow = (name, index) => { + this.props.onDataRowAdd(name, null, index); + }; + /** 删除行 */ + handleDelRow = (name) => { + const { [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + if (this.props.onDataRowDel(name, false, tableSelectedRowKeys)) { + message.success('删除成功!'); + } + }; + + /* 字段双击弹出 */ + handleFieldDoubleClick = (sValue, showConfig, tbName) => { + const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, [`${tbName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyObject(showConfig) && showConfig.sName === 'sAssignField') { + let tableDataRow = {}; + if (commonUtils.isNotEmptyArr(tableData)) { + const tableFilterData = tableData.filter(item => tableSelectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableDataRow = tableFilterData[0]; + } + } + const sAssignFieldColumn = [ + { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sNewName', + title: '现字段', + width: '220px', + editable: true, + bNotSort: true, + }, { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sOldName', + title: '源字段', + width: '220px', + editable: true, + bNotSort: true, + }, + ]; + const sAssignFieldData = []; + if (commonUtils.isNotEmptyObject(tableDataRow) && commonUtils.isNotEmptyObject(sValue)) { + const selectedRowKeys = []; + const sAssignFieldDataTemp = sValue.split(','); + sAssignFieldDataTemp.forEach((index) => { + const aAssignFieldObj = {}; + const splitData = index.split(':'); + if (commonUtils.isNotEmptyArr(splitData)) { + aAssignFieldObj.sId = commonUtils.createSid(); + aAssignFieldObj.sNewName = splitData[0]; + aAssignFieldObj.sOldName = splitData[1]; + sAssignFieldData.push(aAssignFieldObj); + } + selectedRowKeys[0] = sAssignFieldData[0].sId; + }); + const { enabled } = this.props; + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData, + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + enabled, + }); + } else { + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData: [], + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + }); + } + } + }; + /* 拿到赋值字段 */ + handleGetsAssignField = (data, sFieldName) => { + if (sFieldName === 'sAssignField') { + const { sAssignFieldRowId, sAssignFieldName } = this.props; /* 双击弹出赋值窗体的行ID */ + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData)) { + const iIndex = tableData.findIndex(item => item.sId === sAssignFieldRowId); + const newData = {}; + /* 将数组变成赋值字符串 */ + let sAssignFieldStr = ''; + const len = data.length; + data.forEach((item, index) => { + sAssignFieldStr += `${item.sNewName}:${item.sOldName}`; + if (index !== (len - 1)) { + sAssignFieldStr += ','; + } + }); + newData.sAssignField = sAssignFieldStr; + newData.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...newData }; + this.props.onSaveState({ [`${sAssignFieldName}Data`]: tableData }); + } + } + } + + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleUploadChangeFile = async (info) => { + const { file } = info; + const { + masterData, sModelsId, app, token, sModelsType, slaveConfig, slaveData, + } = this.props; + if (file.response) { + if (file.response.code === 1) { + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + const importErrorData = errorInfo; + this.props.onSaveState({ + showImportErrorVisible: true, + importData: importErrorData + }); + return; + } + /* 把之前存放的数据删除 */ + const slaveDelData = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = 'del'; + slaveDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], returnData[0]); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + await returnData.forEach(async (tableDataRow) => { + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf('_sRealValue_'); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex(item => (item.sId === tableDataRow.sProductId || item.sNId === tableDataRow.sProductId) && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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, + }); + } + } + if (!tableDataRow.dNProductPrice) { + tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + } + const models = 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.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models); + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + } + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + + // ----------------------------数据修改回带wend ---------------------------- // + + render() { + const { + pageLoading, visible, checkConditions, checkPersonData, app, + } = this.props; + const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */ + const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */ + const columns = [{ + title: checkCondition, + dataIndex: 'condition', + key: 'condition', + }, { + title: checkSmemo, + dataIndex: 'sMemo', + key: 'sMemo', + }]; + const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */ + const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */ + const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */ + const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */ + return ( +
+ +
+ + { + visible ? + {BtnClose}, + , + ]} + > + +
{checkPerson}
+
+ + + { commonUtils.isNotEmptyObject(checkPersonData) ? + checkPersonData.map((item) => { + return ( +
+ {item.sUserName} + + ); + }) + : '' + } + + + + + : '' + } + + + + ); + } +} + +const BillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig} = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + AutoTableHeight, + masterConfig: masterConfigOld, + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + slaveData, + slave0Data, + slave1Data, + slave2Data, + slave3Data, + slave4Data, + slave5Data, + slave6Data, + slave7Data, + slave8Data, + slave9Data, + slave10Data, + masterConfig, + slaveConfig, + slave0Config, + slave1Config, + slave2Config, + slave3Config, + slave4Config, + slave5Config, + slave6Config, + slave7Config, + slave8Config, + slave9Config, + slave10Config, + slaveSelectedRowKeys, + slave0SelectedRowKeys, + slave1SelectedRowKeys, + slave2SelectedRowKeys, + slave3SelectedRowKeys, + slave4SelectedRowKeys, + slave5SelectedRowKeys, + slave6SelectedRowKeys, + app, + slavePagination, + slave0Pagination, + slave1Pagination, + slave2Pagination, + slave3Pagination, + slave4Pagination, + slave5Pagination, + slave6Pagination, + slave7Pagination, + slave8Pagination, + slave9Pagination, + slave10Pagination, + slavePageSize, + slave0PageSize, + slave1PageSize, + slave2PageSize, + slave3PageSize, + slave4PageSize, + slave5PageSize, + slave6PageSize, + slave7PageSize, + slave8PageSize, + slave9PageSize, + slave10PageSize, + sModelsType, + sModelsId, + addStateMap, + slaveInfoList, + slaveChildInfoList + } = props; + /* 回带表单 */ + onReturnForm(form); + const autoHeight = `calc( ${AutoTableHeight} - 96px)`; + const isSmall = false; + let pageSize = commonConfig.pageSize; + if (props.slaveConfig && props.slaveConfig.iPageSize) { + pageSize = props.slaveConfig.iPageSize; + } + + const bPagination = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.bPagination : false; + const bPagination0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.bPagination : false; + const bPagination1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.bPagination : false; + const bPagination2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.bPagination : false; + const bPagination3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.bPagination : false; + const bPagination4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.bPagination : false; + const bPagination5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.bPagination : false; + const bPagination6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.bPagination : false; + const bPagination7 = commonUtils.isNotEmptyObject(slave7Config) ? slave7Config.bPagination : false; + const bPagination8 = commonUtils.isNotEmptyObject(slave8Config) ? slave8Config.bPagination : false; + const bPagination9 = commonUtils.isNotEmptyObject(slave9Config) ? slave9Config.bPagination : false; + const bPagination10 = commonUtils.isNotEmptyObject(slave10Config) ? slave10Config.bPagination : false; + + const pagination = !bPagination ? false : { + pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // showQuickJumper: true, + hideOnSinglePage: false, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination0 = !bPagination0 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave0PageSize) && slave0PageSize !== 0 ? slave0PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave0Data) ? 0 : slave0Data.length, + current: commonUtils.isEmptyObject(slave0Pagination) ? 1 : slave0Pagination.current, + ...slave0Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination1 = !bPagination1 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave1PageSize) && slave1PageSize !== 0 ? slave1PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave1Data) ? 0 : slave1Data.length, + current: commonUtils.isEmptyObject(slave1Pagination) ? 1 : slave1Pagination.current, + ...slave1Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination2 = !bPagination2 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave2PageSize) && slave2PageSize !== 0 ? slave2PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave2Data) ? 0 : slave2Data.length, + current: commonUtils.isEmptyObject(slave2Pagination) ? 1 : slave2Pagination.current, + ...slave2Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination3 = !bPagination3 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave3PageSize) && slave3PageSize !== 0 ? slave3PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave3Data) ? 0 : slave3Data.length, + current: commonUtils.isEmptyObject(slave3Pagination) ? 1 : slave3Pagination.current, + ...slave3Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination4 = !bPagination4 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave4PageSize) && slave4PageSize !== 0 ? slave4PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave4Data) ? 0 : slave4Data.length, + current: commonUtils.isEmptyObject(slave4Pagination) ? 1 : slave4Pagination.current, + ...slave4Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + const pagination5 = !bPagination5 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave5PageSize) && slave5PageSize !== 0 ? slave5PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave5Data) ? 0 : slave5Data.length, + current: commonUtils.isEmptyObject(slave5Pagination) ? 1 : slave5Pagination.current, + ...slave5Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination6 = !bPagination6 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave6PageSize) && slave6PageSize !== 0 ? slave6PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave6Data) ? 0 : slave6Data.length, + current: commonUtils.isEmptyObject(slave6Pagination) ? 1 : slave6Pagination.current, + ...slave6Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination7 = !bPagination7 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave7PageSize) && slave7PageSize !== 0 ? slave7PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave7Data) ? 0 : slave7Data.length, + current: commonUtils.isEmptyObject(slave7Pagination) ? 1 : slave7Pagination.current, + ...slave7Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination8 = !bPagination8 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave8PageSize) && slave8PageSize !== 0 ? slave8PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave8Data) ? 0 : slave8Data.length, + current: commonUtils.isEmptyObject(slave8Pagination) ? 1 : slave8Pagination.current, + ...slave8Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination9 = !bPagination9 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave9PageSize) && slave9PageSize !== 0 ? slave9PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave9Data) ? 0 : slave9Data.length, + current: commonUtils.isEmptyObject(slave9Pagination) ? 1 : slave9Pagination.current, + ...slave9Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination10 = !bPagination10 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave10PageSize) && slave10PageSize !== 0 ? slave10PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave10Data) ? 0 : slave10Data.length, + current: commonUtils.isEmptyObject(slave10Pagination) ? 1 : slave10Pagination.current, + ...slave10Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + /* 表1-commonView显示区域 */ + const ableConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + /* 选中行 */ + let showAll = true; /* 只显示表格 */ + let bShowLeft = true; /* 表格显示在左侧 */ + let bShowList = true; + let iColValueView = 12; + let iColValueTable = 12; + let slaveRow = {}; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slaveRow = slaveData[iIndex]; + } else { + slaveRow = slaveData[0]; + } + } else if (commonUtils.isNotEmptyArr(slaveData)) { + slaveRow = slaveData[0]; + } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iIndexArea = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll = false; + } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iShowLeft = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft > -1) { + bShowLeft = true; + iColValueTable = slaveConfig.gdsconfigformslave[iShowLeft].iColValue; + } else if (iShowRight > -1) { + bShowLeft = false; + iColValueTable = slaveConfig.gdsconfigformslave[iShowRight].iColValue; + } + } + } + iColValueView = commonUtils.isNotEmptyNumber(iColValueTable) ? 24 - iColValueTable : 12; + const iShowOrder = bShowLeft ? 1 : 100; + /* 如果左侧列表没有一个字段显示 那么左侧树形不显示 */ + if(commonUtils.isEmptyArr(listConfigs)) { + showAll = true; + bShowList = false; + iColValueView = 24; + } + + + /* 表2-commonView显示区域 */ + const ableConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll0 = true; /* 只显示表格 */ + let bShowLeft0 = true; /* 表格显示在左侧 */ + let bShowList0 = true; + let iColValueView0 = 12; + let iColValueTable0 = 12; + let slave0Row = {}; + if (commonUtils.isNotEmptyArr(slave0SelectedRowKeys)) { + const iIndex = slave0Data.findIndex(item => slave0SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave0Row = slave0Data[iIndex]; + } else { + slave0Row = slave0Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave0Data)) { + slave0Row = slave0Data[0]; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iIndexArea = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll0 = false; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iShowLeft0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft0 > -1) { + bShowLeft0 = true; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowLeft0].iColValue; + } else if (iShowRight0 > -1) { + bShowLeft0 = false; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowRight0].iColValue; + } + } + } + iColValueView0 = commonUtils.isNotEmptyNumber(iColValueTable0) ? 24 - iColValueTable0 : 12; + const iShowOrder0 = bShowLeft0 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs0)) { + bShowList0 = false; + iColValueView0 = 24; + } + if(commonUtils.isEmptyObject(slave0Config)) { /* 若没配置表格 则不显示 */ + bShowList0 = false; + } + + /* 表3-commonView显示区域 */ + const ableConfigs1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll1 = true; /* 只显示表格 */ + let bShowLeft1 = true; /* 表格显示在左侧 */ + let bShowList1 = true; + let iColValueView1 = 12; + let iColValueTable1 = 12; + let slave1Row = {}; + if (commonUtils.isNotEmptyArr(slave1SelectedRowKeys)) { + const iIndex = slave1Data.findIndex(item => slave1SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave1Row = slave1Data[iIndex]; + } else { + slave1Row = slave1Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave1Data)) { + slave1Row = slave1Data[0]; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iIndexArea = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll1 = false; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iShowLeft1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft1 > -1) { + bShowLeft1 = true; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowLeft1].iColValue; + } else if (iShowRight1 > -1) { + bShowLeft1 = false; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowRight1].iColValue; + } + } + } + iColValueView1 = commonUtils.isNotEmptyNumber(iColValueTable1) ? 24 - iColValueTable1 : 12; + const iShowOrder1 = bShowLeft1 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs1)) { + bShowList1 = false; + iColValueView1 = 24; + } + if(commonUtils.isEmptyObject(slave1Config)) { /* 若没配置表格 则不显示 */ + bShowList1 = false; + } + + + /* 表4-commonView显示区域 */ + const ableConfigs2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll2 = true; /* 只显示表格 */ + let bShowLeft2 = true; /* 表格显示在左侧 */ + let bShowList2 = true; + let iColValueView2 = 12; + let iColValueTable2 = 12; + let slave2Row = {}; + if (commonUtils.isNotEmptyArr(slave2SelectedRowKeys)) { + const iIndex = slave2Data.findIndex(item => slave2SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave2Row = slave2Data[iIndex]; + } else { + slave2Row = slave2Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave2Data)) { + slave2Row = slave2Data[0]; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iIndexArea = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll2 = false; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iShowLeft2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft2 > -1) { + bShowLeft2 = true; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowLeft2].iColValue; + } else if (iShowRight2 > -1) { + bShowLeft2 = false; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowRight2].iColValue; + } + } + } + iColValueView2 = commonUtils.isNotEmptyNumber(iColValueTable2) ? 24 - iColValueTable2 : 12; + const iShowOrder2 = bShowLeft2 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs2)) { + bShowList2 = false; + iColValueView2 = 24; + } + + + /* 表5-commonView显示区域 */ + const ableConfigs3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll3 = true; /* 只显示表格 */ + let bShowLeft3 = true; /* 表格显示在左侧 */ + let bShowList3 = true; + let iColValueView3 = 12; + let iColValueTable3 = 12; + let slave3Row = {}; + if (commonUtils.isNotEmptyArr(slave3SelectedRowKeys)) { + const iIndex = slave3Data.findIndex(item => slave3SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave3Row = slave3Data[iIndex]; + } else { + slave3Row = slave3Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave3Data)) { + slave3Row = slave3Data[0]; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iIndexArea = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll3 = false; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iShowLeft3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft3 > -1) { + bShowLeft3 = true; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowLeft3].iColValue; + } else if (iShowRight3 > -1) { + bShowLeft3 = false; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowRight3].iColValue; + } + } + } + iColValueView3 = commonUtils.isNotEmptyNumber(iColValueTable3) ? 24 - iColValueTable3 : 12; + const iShowOrder3 = bShowLeft3 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs3)) { + bShowList3 = false; + iColValueView3 = 24; + } + + + /* 表6-commonView显示区域 */ + const ableConfigs4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll4 = true; /* 只显示表格 */ + let bShowLeft4 = true; /* 表格显示在左侧 */ + let bShowList4 = true; + let iColValueView4 = 12; + let iColValueTable4 = 12; + let slave4Row = {}; + if (commonUtils.isNotEmptyArr(slave4SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave4SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave4Row = slave4Data[iIndex]; + } else { + slave4Row = slave4Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave4Data)) { + slave4Row = slave4Data[0]; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iIndexArea = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll4 = false; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iShowLeft4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft4 > -1) { + bShowLeft4 = true; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowLeft4].iColValue; + } else if (iShowRight4 > -1) { + bShowLeft4 = false; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowRight4].iColValue; + } + } + } + iColValueView4 = commonUtils.isNotEmptyNumber(iColValueTable4) ? 24 - iColValueTable4 : 12; + const iShowOrder4 = bShowLeft4 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs4)) { + bShowList4 = false; + iColValueView4 = 24; + } + + + + /* 表6-commonView显示区域 */ + const ableConfigs5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll5 = true; /* 只显示表格 */ + let bShowLeft5 = true; /* 表格显示在左侧 */ + let bShowList5 = true; + let iColValueView5 = 12; + let iColValueTable5 = 12; + let slave5Row = {}; + if (commonUtils.isNotEmptyArr(slave5SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave5SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave5Row = slave5Data[iIndex]; + } else { + slave5Row = slave5Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave5Data)) { + slave5Row = slave5Data[0]; + } + if (commonUtils.isNotEmptyObject(slave5Config) && commonUtils.isNotEmptyArr(slave5Config.gdsconfigformslave)) { + const iIndexArea = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll5 = false; + } + if (commonUtils.isNotEmptyObject(slave5Config) && commonUtils.isNotEmptyArr(slave5Config.gdsconfigformslave)) { + const iShowLeft5 = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight5 = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft5 > -1) { + bShowLeft5 = true; + iColValueTable5 = slave5Config.gdsconfigformslave[iShowLeft5].iColValue; + } else if (iShowRight5 > -1) { + bShowLeft5 = false; + iColValueTable5 = slave5Config.gdsconfigformslave[iShowRight5].iColValue; + } + } + } + iColValueView5 = commonUtils.isNotEmptyNumber(iColValueTable5) ? 24 - iColValueTable5 : 12; + const iShowOrder5 = bShowLeft5 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs5)) { + bShowList5 = false; + iColValueView5 = 24; + } + + + + const ableConfigs6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll6 = true; /* 只显示表格 */ + let bShowLeft6 = true; /* 表格显示在左侧 */ + let bShowList6 = true; + let iColValueView6 = 12; + let iColValueTable6 = 12; + let slave6Row = {}; + if (commonUtils.isNotEmptyArr(slave6SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave6SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave6Row = slave6Data[iIndex]; + } else { + slave6Row = slave6Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave6Data)) { + slave6Row = slave6Data[0]; + } + if (commonUtils.isNotEmptyObject(slave6Config) && commonUtils.isNotEmptyArr(slave6Config.gdsconfigformslave)) { + const iIndexArea = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll6 = false; + } + if (commonUtils.isNotEmptyObject(slave6Config) && commonUtils.isNotEmptyArr(slave6Config.gdsconfigformslave)) { + const iShowLeft6 = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight6 = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft6 > -1) { + bShowLeft6 = true; + iColValueTable4 = slave6Config.gdsconfigformslave[iShowLeft6].iColValue; + } else if (iShowRight6 > -1) { + bShowLeft6 = false; + iColValueTable5 = slave6Config.gdsconfigformslave[iShowRight6].iColValue; + } + } + } + iColValueView6 = commonUtils.isNotEmptyNumber(iColValueTable6) ? 24 - iColValueTable6 : 12; + const iShowOrder6 = bShowLeft6 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs6)) { + bShowList6 = false; + iColValueView6 = 24; + } + + + + const listType = 'commonMultiList' ; + const bCheck = commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.sTbName === 'sysbillcheckresult' ? true : false; + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination, onChange: props.onTitleChange.bind(this, 'slave'), + }, + }; + + let bCheck0 = commonUtils.isNotEmptyObject(slave0Config) && slave0Config.sTbName === 'sysbillcheckresult' ? true : false; + + if(commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('setNoCommonOperate')) )) { + bCheck0 = true; + } + + const slave0TableProps = { + ...commonBusiness.getTableTypes('slave0', props), + tableBelone: (sModelsType === listType) || bCheck ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination : pagination0, onChange: props.onTitleChange.bind(this, 'slave0'), + }, + }; + let bCheck1 = commonUtils.isNotEmptyObject(slave1Config) && slave1Config.sTbName === 'sysbillcheckresult' ? true : false; + + if(commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('setNoCommonOperate')) )) { + bCheck1 = true; + } + + const slave1TableProps = { + ...commonBusiness.getTableTypes('slave1', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination1, onChange: props.onTitleChange.bind(this, 'slave1'), + }, + }; + const bCheck2 = commonUtils.isNotEmptyObject(slave2Config) && slave2Config.sTbName === 'sysbillcheckresult' ? true : false; + const slave2TableProps = { + ...commonBusiness.getTableTypes('slave2', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination2, onChange: props.onTitleChange.bind(this, 'slave2'), + }, + }; + const slave3TableProps = { + ...commonBusiness.getTableTypes('slave3', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination3, onChange: props.onTitleChange.bind(this, 'slave3'), + }, + }; + const slave4TableProps = { + ...commonBusiness.getTableTypes('slave4', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination4, onChange: props.onTitleChange.bind(this, 'slave4'), + }, + }; + const slave5TableProps = { + ...commonBusiness.getTableTypes('slave5', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination5, onChange: props.onTitleChange.bind(this, 'slave5'), + }, + }; + + const slave6TableProps = { + ...commonBusiness.getTableTypes('slave6', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination6, onChange: props.onTitleChange.bind(this, 'slave6'), + }, + }; + + const slave7TableProps = { + ...commonBusiness.getTableTypes('slave7', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination7, onChange: props.onTitleChange.bind(this, 'slave7'), + }, + }; + + const slave8TableProps = { + ...commonBusiness.getTableTypes('slave8', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination8, onChange: props.onTitleChange.bind(this, 'slave8'), + }, + }; + + const slave9TableProps = { + ...commonBusiness.getTableTypes('slave9', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination9, onChange: props.onTitleChange.bind(this, 'slave9'), + }, + }; + + const slave10TableProps = { + ...commonBusiness.getTableTypes('slave10', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination10, onChange: props.onTitleChange.bind(this, 'slave10'), + }, + }; + + + /* 从表view */ + const slaveViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView, + viewRow: slaveRow, + tableName: 'slave', + }; + + /* 第二张表 */ + const slave0ViewProps = { + ...props, + viewConfigs: ableConfigs0, + tableConfig: slave0Config, + iColValueView:iColValueView0, + viewRow: slave0Row, + tableName: 'slave0', + }; + /* */ + const slave1ViewProps = { + ...props, + viewConfigs: ableConfigs1, + tableConfig: slave1Config, + iColValueView:iColValueView1, + viewRow: slave1Row, + tableName: 'slave1', + }; + /* 从表view */ + const slave2ViewProps = { + ...props, + viewConfigs: ableConfigs2, + tableConfig: slave2Config, + iColValueView:iColValueView2, + viewRow: slave2Row, + tableName: 'slave2', + }; + + /* pack表view */ + const slave3ViewProps = { + ...props, + viewConfigs: ableConfigs3, + tableConfig: slave3Config, + iColValueView:iColValueView3, + viewRow: slave3Row, + tableName: 'slave3', + }; + + const slave4ViewProps = { + ...props, + viewConfigs: ableConfigs4, + tableConfig: slave4Config, + iColValueView:iColValueView4, + viewRow: slave4Row, + tableName: 'slave4', + }; + + const slave5ViewProps = { + ...props, + viewConfigs: ableConfigs5, + tableConfig: slave5Config, + iColValueView:iColValueView5, + viewRow: slave5Row, + tableName: 'slave5', + }; + + const slave6ViewProps = { + ...props, + viewConfigs: ableConfigs6, + tableConfig: slave6Config, + iColValueView:iColValueView6, + viewRow: slave6Row, + tableName: 'slave6', + }; + + + /* 根据配置 自定义父级页签,子级页签 */ + const slaveTablePropsList = {}; + if (commonUtils.isNotEmptyArr(slaveInfoList)) { + slaveInfoList.forEach((item, index) => { + // const slaveTablePagination = { + // pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, + // ...slavePagination, + // size: isSmall ? 'small' : 'large', + // pageSizeOptions: commonConfig.pageSizeOptions, + // showSizeChanger: !isSmall, + // showQuickJumper: !isSmall, + // hideOnSinglePage: true, + // }; + slaveTablePropsList[`slaveTable${index}Props`] = { + ...commonBusiness.getTableTypes(`slave${index}`, props), + // tableBelone: 'list', + tableProps: { + setAdd, + setCopy, + setDelete, + AutoTableHeight: '100%', + }, + }; + }); + } + + + const slaveChildTablePropsList = {}; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + slaveChildInfoList.forEach((item, index) => { + let configName = ''; + if(item && item.includes('-')) { + configName = item.split('-')[0]; + } + slaveChildTablePropsList[`${configName}TableProps`] = { + ...commonBusiness.getTableTypes(`${configName}`, props), + // tableBelone: 'list', + tableProps: { + setAdd, + setCopy, + setDelete, + // AutoTableHeight: '100%', + }, + }; + }); + } + + + const slaveChildViewProps = {}; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + slaveChildInfoList.forEach((item, index) => { + let configName = ''; + if(item && item.includes('-')) { + configName = item.split('-')[0]; + } + const childConfig = commonUtils.isNotEmptyObject(addStateMap) ? addStateMap[`${configName}Config`] : []; + const childViewConfig = commonUtils.isNotEmptyObject(childConfig) ? childConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + + slaveChildViewProps[`${configName}ViewProps`] = { + ...props, + viewConfigs: childViewConfig, + tableConfig: childConfig, + iColValueView : 12, + viewRow: slave0Row, + tableName: 'slave', + }; + }); + } + console.log('slaveChildTablePropsList', slaveChildTablePropsList); + console.log('slaveChildViewProps', slaveChildViewProps); + + + /* 获取AssignmentField中的props */ + const assignmentFieldProps = { + visibleAssignmentField: props.visibleAssignmentField, /* 是否展示 */ + sAssignFieldData: props.sAssignFieldData, /* 数据 */ + sAssignFieldColumn: props.sAssignFieldColumn, /* 表头 */ + selectedRowKeys: props.selectedRowKeys, /* 选中 */ + sAssignFieldSelectedRowKeys: props.selectedRowKeys, /* 选中 */ + onSaveState: props.onSaveState, /* 保存数据方法 */ + onDataRowAdd: props.handleAddRow.bind(this, 'sAssignField'), + onDataRowDel: props.handleDelRow.bind(this, 'sAssignField'), + onDataRowCopy: props.handleCopyRow.bind(this, 'sAssignField'), + // onRowClick: props.handleRowClick.bind(this, 'sAssignField'), + config: props.config, + app: props.app, + enabled: props.enabled, + onDataChange: props.onChange, + onGetsAssignField: props.onGetsAssignField, + handleFieldDoubleClick: props.handleFieldDoubleClick, + }; + + // const slaveInfo = commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + // const materialsInfo = commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 材料表 */ + // const checkInfo = commonFunc.showMessage(app.commonConst, 'zCheck'); /* 审核表 */ + // const slaveInfo0 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 工序表 */ + // const slaveInfo1 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表二 */ + // const slaveInfo2 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表三 */ + let slaveInfo = ''; + let materialsInfo = ''; + let checkInfo = ''; + let slaveInfo0 = ''; + let slaveInfo1 = ''; + let slaveInfo2 = ''; + let slaveInfo3 = ''; + let slaveInfo4 = ''; + let slaveInfo5 = ''; + let slaveInfo6 = ''; + let slaveInfo7 = ''; + let slaveInfo8 = ''; + + if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + slaveInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')[0].showName : commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + materialsInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')[0].showName : commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 表一 */ + checkInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')[0].showName : commonFunc.showMessage(app.commonConst, 'zCheck'); /* 表二 */ + slaveInfo0 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 表三 */ + slaveInfo1 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表四 */ + slaveInfo2 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表五 */ + slaveInfo3 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo3'); /* 表六 */ + slaveInfo4 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo4'); /* 表七 */ + slaveInfo5 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo5'); /* 表八 */ + slaveInfo6 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo6'); /* 表九 */ + slaveInfo7 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo7'); /* 表十 */ + slaveInfo8 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo8'); /* 表十一 */ + + } + + let productProcessInfoType = {}; + let productProcessInfoConfig = {}; + let processCardSearchResult = commonFunc.showMessage(app.commonConst, 'processCardSearchResult');/* 复制从工艺卡查询结果 */ + if (commonUtils.isNotEmptyObject(props.productProcessInfoChooseData)) { + const productProcessInfoCopyFromKey = props.productProcessInfoCopyFromKey; + const iIndex = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === productProcessInfoCopyFromKey); + if (iIndex > -1) { + productProcessInfoConfig = props.masterConfig.gdsconfigformslave[iIndex]; + processCardSearchResult = commonUtils.isNotEmptyObject(productProcessInfoConfig) && commonUtils.isNotEmptyObject(productProcessInfoConfig.sActiveName) ? productProcessInfoConfig.sActiveName : processCardSearchResult; + } + productProcessInfoType = { + app: { + ...props.app, + currentPane: { + name: 'productProcessInfo', + config: productProcessInfoConfig, + conditonValues: props.getSqlCondition(productProcessInfoConfig), + title: props.productProcessInfoChooseData.sMenuName, + route: props.productProcessInfoChooseData.sName, + formId: props.productProcessInfoChooseData.sId, + key: props.sModelsId + props.productProcessInfoChooseData.sId, + sModelsType: props.productProcessInfoChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + }; + } + + let isSysSetting = false; + if (props && props.app && props.app.currentPane && props.app.currentPane.title && props.app.currentPane && props.app.currentPane.title === "功能模块界面设置单据") { + isSysSetting = true; + } + const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0]; + let gdsconfigformmasterId = ''; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + const sNotEmpty = 'sParentId,sProductId'; + let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`; + /* 送货单需要传客户id */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile, /* 文件上传 */ + accept: 'xls/*', + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + }, + }; + + const uploadPropsSales = props.onUploadPropsSales(); + const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */ + + + /* 显示导入报错信息 */ + let importExcelProps = {}; + let importExcelTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, 'processCardSearchResult')) ? + commonFunc.showMessage(app.commonConst, 'importErrorMsg') : '导入校验信息'; /* 导入校验信息 */ + if (commonUtils.isNotEmptyObject(props)) { + importExcelProps = { + ...commonBusiness.getTableTypes('import', props), + tableProps: { + pagination:null, AutoTableHeight: 400, + }, + // data: bSingleTree && commonUtils.isNotEmptyArr(slaveData) ? commonUtils.genTreeByArr(slaveData, 'sId', 'sFatherSlaveId') : slaveData, + onDelRow: props.onDelRow, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + tableBelone: 'list', + }; + } + + // + // const menu = ( + // + // 生成主表当前数据(完全) + // 生成整表当前数据(完全) + // 生成从表当前数据 + // + // ); + /* 取 masterConfig中有多少个Tab页签配置 */ + const masterShowConfig = commonUtils.isNotEmptyObject(masterConfigOld) ? masterConfigOld.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; + const diliverConfigTypeArr = []; /* 有Tab的配置 */ + masterShowConfig.forEach((child) => { + if (child.sControlName.indexOf('_') > -1) { + const tableType = child.sControlName.split('_')[1]; + const isIndex = diliverConfigTypeArr.findIndex(item => item === tableType); + if (isIndex === -1) { + diliverConfigTypeArr.push(tableType); + } + } + }); + + /* 主表页签+表格页签排序规则,表格页签以10位一个间隔,10,20,30,40,50,60,如果想进行排序 则页签顺序介入其间即可 */ + /* 找到各个主表页签Tab所处的区间 */ + let diliverConfigTypeArr1 = []; + let diliverConfigTypeArr2= []; + let diliverConfigTypeArr3 = []; + let diliverConfigTypeArr4 = []; + let diliverConfigTypeArr5 = []; + let diliverConfigTypeArr6 = []; + for (const item of diliverConfigTypeArr) { + let numStr = item.replace(/[^\d]/g, '').trim(); + let num = Number(numStr); + if(!commonUtils.isEmpty(num)) { + if(num < 10) { /* 0- 10 */ + diliverConfigTypeArr1.push(item); + } else if(num < 20) { /* 10- 20 */ + diliverConfigTypeArr2.push(item); + } else if(num < 30) { /* 20- 30 */ + diliverConfigTypeArr3.push(item); + } else if(num < 40) { /* 30- 40 */ + diliverConfigTypeArr4.push(item); + } else if(num < 50) { /* 40- 50 */ + diliverConfigTypeArr5.push(item); + } else if(num < 60) { /* 50- 60 */ + diliverConfigTypeArr6.push(item); + } + } + } + + return ( + + +
+
+ +
+ { commonUtils.isNotEmptyArr(ImportData) ? +
+ {BtnimportData} +
: ''} +
+ + +
+
+ +
+
+ { + props.sModelsType === 'element/workcalendar' ? + : +
+
+ +
+ + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr1) ? + diliverConfigTypeArr1.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave ? + +
+ + { + bShowList ? +
+ + : '' + + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr2) ? + diliverConfigTypeArr2.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave0 ? + +
+ + { + bShowList0 ? + commonUtils.isNotEmptyObject(addStateMap) && commonUtils.isNotEmptyObject(addStateMap['slave0Child0Config']) ? +
+ + + + + + + { props.slaveChildInfoList?.map((item, index) => { + let num = 1 + index; + let tabName = '子页签' + num; + let tableName = ''; + if(item && item.includes('-')) { + tabName = item.split('-')[1]; + tableName= item.split('-')[0]; + } + + /* 找到子级 左右列 */ + let slaveChildTableProps ={}; + let slaveChildView ={}; + if(commonUtils.isNotEmptyArr(slaveChildInfoList)) { + const iIndex = slaveChildInfoList.findIndex(child => child.includes(item)); + if(iIndex > -1) { + slaveChildTableProps = slaveChildTablePropsList[`${tableName}TableProps`]; + slaveChildView = slaveChildViewProps[`${tableName}ViewProps`]; + } + } + return ( + +
+ +
+ + + + + + + ) + }) } + + + + + : + + + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr3) ? + diliverConfigTypeArr3.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave1 ? + +
+ + { + bShowList1 ? + commonUtils.isNotEmptyObject(addStateMap) && commonUtils.isNotEmptyObject(addStateMap['slave1Child0Config']) ? +
+ + + + + + { props.slaveInfoList?.map((item, index) => { + let num = 12 + index; + /* 找到子级 左右列 */ + let slaveChildTableProps ={}; + let slaveChildView ={}; + if(commonUtils.isNotEmptyArr(slaveChildInfoList)) { + const iIndex = slaveChildInfoList.findIndex(child => child.includes(item)); + if(iIndex > -1) { + slaveChildTableProps = slaveChildTablePropsList[`${item}ChildTableProps`]; + slaveChildView = slaveChildViewProps[`${item}ViewProps`]; + } + } + return ( +
+ +
+ +
+ + + + + + + + ) + }) } + + + + + + : + + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr4) ? + diliverConfigTypeArr4.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave2 ? + +
+ + { + bShowList2 ? +
+ + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr5) ? + diliverConfigTypeArr5.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave3 ? + +
+ + { + bShowList3 ? +
+ + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr6) ? + diliverConfigTypeArr6.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave4 ? + +
+ + { + bShowList4 ? +
+ + : '' + } + + + + : '' + } + { + onlyslave5 ? + +
+ + { + bShowList5 ? +
+ + : '' + } + + + + : '' + } + { + onlyslave6 ? + +
+ + { + bShowList6 ? +
+ + : '' + } + + + + : '' + } + { + onlyslave7 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave8 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave9 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave10 ? + +
+ +
+ + + + + + : '' + } + + + } + + { + props.productProcessInfoChooseVisible ? + + + + : '' + } + { + props.showImportErrorVisible ? + + + + : '' + } +
+ +
+ + + + ); +}); + +export default CommonBase(CommonNewSales(CommonNewBill)); diff --git a/src/components/Common/CommonNewTabBill.js b/src/components/Common/CommonNewTabBill.js new file mode 100644 index 0000000..1361999 --- /dev/null +++ b/src/components/Common/CommonNewTabBill.js @@ -0,0 +1,3008 @@ +/* eslint-disable */ + +import React, { Component } from 'react'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import {Row, Col, Checkbox, Layout, Spin, Tabs, Dropdown, Avatar, Button, message, Menu, Table, Upload} from 'antd-v4'; +import {DownOutlined, UploadOutlined,} from '@ant-design/icons'; +import CommonNewSales from '@/components/Common/CommonNewTabBillEvent';/* 继承销售模块业务功能 */ +import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import styles from '@/index.less'; +import AssignmentField from './AssignmentField'; +import CommonView from '@/components/Common/CommonView'; +import CommonViewTable from '@/components/Common/CommonViewTable'; +import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +import * as commonServices from '@/services/services';/* 服务类 */ +import AddIcon from '@/assets/add.svg'; +import DisableAddIcon from '@/assets/disableadd.svg'; +import CopyIcon from '@/assets/copy.svg'; +import CopyAllIcon from '@/assets/copyall.svg'; +import DisableCopyIcon from '@/assets/disablecopy.svg'; +import DisableCopyAllIcon from '@/assets/disablecopyall.svg'; +import DelIcon from '@/assets/delete.svg'; +import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */ +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from "./CommonListSelect"; +import WorkCalendar from '@/components/Common/WorkCalendar/WorkCalendar'; +import CommonListSelectParam from '@/components/Common/CommonListSelectParam'; + +// import ProcessIcon from '../../assets/process.svg'; +// import DisableProcessIcon from '../../assets/disableprocess.svg'; +// import MateriallIcon from '../../assets/material.svg'; +// import DisableMateriallIcon from '../../assets/disablematerial.svg'; +// import SlaveMemo from './SlaveMemo'; + + +const width = '18px'; +const height = '18px'; +const setAdd = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 删除, +}; +const setCopy = { + title: '复制', + width: { width }, + height: { height }, + img: 复制, + disableimg: 复制, +}; +const setCopyAll = { + title: '复制部件', + width: { width }, + height: { height }, + img: 复制部件, + disableimg: 复制部件, +}; +const setDelete = { + title: '删除', + width: { width }, + height: { height }, + img: 删除, + disableimg: 删除, +}; +// const setProcess = { +// title: '工序', +// width: { width }, +// height: { height }, +// img: 选择工序, +// disableimg: 删除, +// }; +// const setMaterial = { +// title: '材料', +// width: { width }, +// height: { height }, +// img: 选择材料, +// disableimg: 选择材料, +// }; + +// console.log('btn; ', setAdd, setDelete, setCopy); +const { Header, Content } = Layout; +const { TabPane } = Tabs; +// const { confirm } = Modal; +class CommonNewBill extends Component { + constructor(props) { + super(props); + this.state = { + currentTab: '10' + }; + } + + componentWillReceiveProps() { + if (!this.hasSeletLastTab) { + const { + formData = [], + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + masterConfig = {}, + } = this.props; + + + if (commonUtils.isNotEmptyArr(formData)) { + let defaultTab = null; + + const { gdsconfigformslave = [] } = masterConfig; + if (commonUtils.isNotEmptyArr(gdsconfigformslave)) { + const iIndex = gdsconfigformslave.findIndex(item => + item.bVisible + && item.sControlName + && item.sControlName.includes('zSlaveInfo') + && item.sDefault + ); + if (iIndex !== -1) { + const defaultShowName = gdsconfigformslave[iIndex].showName; + const fomrDataIndex = formData.findIndex(item => item.showName === defaultShowName); + const tabKeyList = ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100', '110', '150'] + if (fomrDataIndex > 0) { + defaultTab = tabKeyList[fomrDataIndex - 1]; + } + } + } + + if (defaultTab) { + this.hasSeletLastTab = true; + this.setState({ currentTab: defaultTab }); + return; + } + + let currentTab = null; + if (onlySlave) { + currentTab = '10'; + } + if (onlySlave0) { + currentTab = '20'; + } + if (onlySlave1) { + currentTab = '30'; + } + if (onlyslave2) { + currentTab = '40'; + } + if (onlyslave3) { + currentTab = '50'; + } + if (onlyslave4) { + currentTab = '60'; + } + if (onlyslave5) { + currentTab = '70'; + } + if (onlyslave6) { + currentTab = '80'; + } + if (onlyslave7) { + currentTab = '90'; + } + if (onlyslave8) { + currentTab = '100'; + } + if (onlyslave9) { + currentTab = '110'; + } + if (onlyslave10) { + currentTab = '150'; + } + if (currentTab) { + this.hasSeletLastTab = true; + this.setState({ currentTab }); + } + } + } + } + + /** 行选择 */ + onRowClick = (name, record) => { + if (name === 'control') { + this.props.onTableSelectRowChange(name, [record.sId]); + } + }; + + onChange = (checkedValues) => { + this.props.onSaveState({ + dataPersonArray: checkedValues, + }); + }; + getMenuStatus = (menu) => { + if (menu.sControlName === 'BtnImport') { + return !this.props.enabled; + } + }; + + + /** 上传后执行函数 */ + // handleUploadChange = (info) => { + // const { file } = info; + // console.log(info, 'infoinfoinfoinfoinfoinfoinfoinfoinfo'); + // const { masterData, sModelsId, slaveConfig } = this.props; + // if (file.response) { + // if (file.response.code === 1) { + // /* 数据查询成功 */ + // const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + // if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + // return; + // } + // const returnData = file.response.dataset.rows[0].canbeInsert; + // returnData.forEach(async (tableDataRow) => { + // tableDataRow.handleType = 'add'; + // tableDataRow.sId = commonUtils.createSid(); + // tableDataRow.sParentId = masterData.sId; + // tableDataRow.key = tableDataRow.sId; + // for (const child of Object.keys(tableDataRow)) { + // const index = child.indexOf('_sRealValue_'); + // if (index > -1) { + // const property = child.substring(0, child.length - 12); + // tableDataRow[property] = tableDataRow[child]; + // } + // } + // // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductId'); + // let productIdDropDown; + // const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductId'); + // if (slaveIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + // productIdDropDown = sqlDropDownData.dropDownData; + // } + // if (productIdDropDown !== undefined) { + // const iProductIdIndex = 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, + // }); + // } + // } + // }); + // this.props.onSaveState({ slaveData: returnData }); + // } else { /* 失败 */ + // this.props.getServiceError(file.response); + // } + // } + // }; + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const uploadInfo = { + sPicturePath, + sFileName: file.name, + }; + const tableDataRow = this.props.onDataRowAdd(name, true); + const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props; + tableColumn.forEach((slaveChild) => { + const ckey = slaveChild.dataIndex; + if (ckey === 'sProductNo' || ckey === 'sProductName') { + tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : ''; + } else if (ckey === 'iOrder') { + tableDataRow[ckey] = ''; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue; + if (bCkxTmpCheck === '1') { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach((item) => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(','); + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_System_AutoSendCheckMsg', + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: '', + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString, + }, + }; + + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null); + const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId }; + const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false, + }); + return; + } + } else { /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false, + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false, + }); + }; + handleTableModal = async () => { + const { + sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, + } = this.props; + const addState = {}; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + // let dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyId'); + let dropdownProductClassifyId; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + // dropdownProductClassifyId = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductClassifyName'); + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId); + if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) { + const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(','); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = slaveData[iSlaveIndex].dProductQty; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState, + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + + if (iIndex > -1) { + this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]); + } + }; + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + }; + handleOkModal = () => { + const { + controlData, slave0Data, processData, sModelsId, slaveData, slaveSelectedRowKeys, materialsConfig, processConfig, + } = this.props; + const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const mtData = slave0Data.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '2'); + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ''; + let pDetail = ''; + const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + ctData.forEach(async (controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? '' : ' '; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ''; + let ipDetail = ''; + const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId)); + // const materialsIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'materials', 'sMaterialsName'); + let materialsIdDropDown; + const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName'); + if (materialsIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]); + materialsIdDropDown = sqlDropDownData.dropDownData; + } + materials.forEach((mItem, i) => { + const fh = i === 0 ? '' : ','; + if (materialsIdDropDown) { + const materialsIdIndex = materialsIdDropDown.findIndex(item => item.sId === mItem.sMaterialsId); + if (materialsIdIndex > -1) { + imDetail = `${imDetail}${fh} ${materialsIdDropDown[materialsIdIndex].sMaterialsName}`; + } + } + }); + // processPropsType + const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId)); + // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName'); + let processIdDropDown; + const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + if (processIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]); + processIdDropDown = sqlDropDownData.dropDownData; + } + process.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + if (processIdDropDown) { + const processIdIndex = processIdDropDown.findIndex(item => item.sId === pItem.sProcessId); + if (processIdIndex > -1) { + ipDetail = `${ipDetail}${fh} ${processIdDropDown[processIdIndex].sProcessName}`; + } + } + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ''; + slaveData[slaveIndex].sProcessMemo = ''; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + slave0Data, + processData, + slaveData, + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + // eslint-disable-next-line no-unused-vars + handleFilterData = (name, dataIndex, value, record) => { + return true; + // const { slaveSelectedRowKeys } = this.props; + // if (name === 'process') { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } else { + // return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + // commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + // } + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys, slaveSelectedRowKeys } = this.props; + if (data !== undefined) { + const newArr = data.filter((item) => { + if (name === 'control') { + return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } else { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig, + } = this.props; + let tableDataRow = {}; + if (name === 'control') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); + }); + // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', 'sProductName'); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + if (sModelsType === 'sales/salesOrder') { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else if (name === 'materials' || name === 'process') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts'); + message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]); + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') { + message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys) => { + if (name === 'control') { + const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + return true; + } else { + return false; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { + sModelsType, controlData, processData, materialsData, + } = this.props; + if (sModelsType === 'sales/salesOrder' && name === 'slave') { + const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true); + } + const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true); + } + const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, + } = this.props; + const tableSelectedRowKeys = []; + if (name === 'productProcessInfo') { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ''; + let sConfigMasterIdControl = ''; + let sConfigMasterIdMaterials = ''; + let sConfigMasterIdProcess = ''; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro')); + } + const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType === 'sales/salesOrder') { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== '3') { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === '3') { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys }); + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + /** 上传后执行函数 */ + handleBeforeUpload = () => { + // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!isLt10M) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */ + // } + }; + + handleTabChange = (key) => { + setTimeout(() => { + this.setState({ + currentTab: key + }) + }, 0); + } + + handleMenuClick= (e) => { + let { sId } = this.props.masterData; + const Type = e.key; + const { token } = this.props.app; + const { sType } = this.props.app.userinfo; + if (Type === 'formSlave') { /* 根据从表勾选数据 生成从表数据 */ + const { slaveSelectedRowKeys } = this.props; + if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) { + message.warn('请选择数据'); + return; + } + sId = slaveSelectedRowKeys; + } + const downloadUrl = `${commonConfig.server_host}sqlfile/scriptSqlDownload?methodName=${Type + }&sId=${sId}&token=${token}&sType=${sType}`; + window.open(downloadUrl); + this.props.onSaveState({ + downloadUrl, + }); + }; + handleSlaveInit = async (name) => { + const { app, masterData, [`${name}Data`]: slaveData } = this.props; + if (masterData.sName !== null && masterData.sName !== undefined) { + message.warn('该节点不能初始化!'); + return; + } + // const comfiled = service.service_path.filter(item => (item.route === + // app.currentPane.route)).length <= 0 ? {} : + // service.service_path.filter(item => (item.route === + // app.currentPane.route))[0]; + const comfiled = { + path: 'gdsconfigform', + pathTwo: 'Gdsconfigformmaster', + pathSlave: 'Gdsconfigformslave', + pathCustom: 'Customslave', + pathInit: 'GdsconfigformslaveByMaster', + pathSlaveSelect: 'gdsmodule', + pathSlaveSelectTwo: 'SelectFormData', + }; + const url = `${commonConfig.server_host}${comfiled.path}/get${comfiled.pathInit + }?sParentId=${masterData.sId}&sTbName=${masterData.sTbName}&sType=${masterData.sType}`; + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const tempData = dataReturn.dataset.rows; + const initData = []; + tempData.forEach((item) => { + item.handleType = 'add'; + initData.push(item); + }); + const newData = [...slaveData, ...initData]; + this.props.onSaveState({ slaveData: newData, enabled: true }); + message.success('初始化成功!'); + } else { + message.warn('当前表格无需初始化!'); + } + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + }; + handleCopyRow = (name, toname) => { + this.props.onCopyRow(name, toname); + }; + handleCopy2Custom = () => { + let toname = 'slave2'; + for (let i = 0; i < 10; i++) { + const slaveConfigName = `slave${i}Config`; + const slaveConfig = this.props[slaveConfigName]; + if (slaveConfig && commonUtils.isNotEmptyObject(slaveConfig)) { + if (slaveConfig.sTbName === 'gdsconfigformcustomslave') { + toname = `slave${i}`; + break; + } + } + } + this.props.onCopyRow('slave', toname); + }; + /** 添加行 */ + handleAddRow = (name, index) => { + this.props.onDataRowAdd(name, null, index); + }; + /** 删除行 */ + handleDelRow = (name) => { + const { [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + if (this.props.onDataRowDel(name, false, tableSelectedRowKeys)) { + message.success('删除成功!'); + } + }; + + /* 字段双击弹出 */ + handleFieldDoubleClick = (sValue, showConfig, tbName) => { + const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, [`${tbName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyObject(showConfig) && showConfig.sName === 'sAssignField') { + let tableDataRow = {}; + if (commonUtils.isNotEmptyArr(tableData)) { + const tableFilterData = tableData.filter(item => tableSelectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableDataRow = tableFilterData[0]; + } + } + const sAssignFieldColumn = [ + { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sNewName', + title: '现字段', + width: '220px', + editable: true, + bNotSort: true, + }, { + sId: commonUtils.createSid(), + sParentId: tableDataRow.sId, + dataIndex: 'sOldName', + title: '源字段', + width: '220px', + editable: true, + bNotSort: true, + }, + ]; + const sAssignFieldData = []; + if (commonUtils.isNotEmptyObject(tableDataRow) && commonUtils.isNotEmptyObject(sValue)) { + const selectedRowKeys = []; + const sAssignFieldDataTemp = sValue.split(','); + sAssignFieldDataTemp.forEach((index) => { + const aAssignFieldObj = {}; + const splitData = index.split(':'); + if (commonUtils.isNotEmptyArr(splitData)) { + aAssignFieldObj.sId = commonUtils.createSid(); + aAssignFieldObj.sNewName = splitData[0]; + aAssignFieldObj.sOldName = splitData[1]; + sAssignFieldData.push(aAssignFieldObj); + } + selectedRowKeys[0] = sAssignFieldData[0].sId; + }); + const { enabled } = this.props; + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData, + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + enabled, + }); + } else { + this.props.onSaveState({ + sAssignFieldColumn, + visibleAssignmentField: true, + sAssignFieldData: [], + sAssignFieldName: tbName, + sAssignFieldRowId: tableDataRow.sId, /* 选中行的sId */ + }); + } + } + }; + /* 拿到赋值字段 */ + handleGetsAssignField = (data, sFieldName) => { + if (sFieldName === 'sAssignField') { + const { sAssignFieldRowId, sAssignFieldName } = this.props; /* 双击弹出赋值窗体的行ID */ + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData)) { + const iIndex = tableData.findIndex(item => item.sId === sAssignFieldRowId); + const newData = {}; + /* 将数组变成赋值字符串 */ + let sAssignFieldStr = ''; + const len = data.length; + data.forEach((item, index) => { + sAssignFieldStr += `${item.sNewName}:${item.sOldName}`; + if (index !== (len - 1)) { + sAssignFieldStr += ','; + } + }); + newData.sAssignField = sAssignFieldStr; + newData.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...newData }; + this.props.onSaveState({ [`${sAssignFieldName}Data`]: tableData }); + } + } + } + + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + handleUploadChangeFile = async (info) => { + const { file } = info; + const { + masterData, sModelsId, app, token, sModelsType, slaveConfig, slaveData, + } = this.props; + if (file.response) { + if (file.response.code === 1) { + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + // message.error(errorInfo[0].sReason); + const importErrorData = errorInfo; + this.props.onSaveState({ + showImportErrorVisible: true, + importData: importErrorData + }); + return; + } + /* 把之前存放的数据删除 */ + const slaveDelData = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = 'del'; + slaveDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], returnData[0]); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + await returnData.forEach(async (tableDataRow) => { + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf('_sRealValue_'); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex(item => (item.sId === tableDataRow.sProductId || item.sNId === tableDataRow.sProductId) && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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, + }); + } + } + if (!tableDataRow.dNProductPrice) { + tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + } + const models = 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.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models); + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + } + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + + // ----------------------------数据修改回带wend ---------------------------- // + + render() { + const { + pageLoading, visible, checkConditions, checkPersonData, app, + } = this.props; + const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */ + const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */ + const columns = [{ + title: checkCondition, + dataIndex: 'condition', + key: 'condition', + }, { + title: checkSmemo, + dataIndex: 'sMemo', + key: 'sMemo', + }]; + const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */ + const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */ + const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */ + const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */ + return ( +
+ +
+ + { + visible ? + {BtnClose}, + , + ]} + > +
+
{checkPerson}
+
+ + + { commonUtils.isNotEmptyObject(checkPersonData) ? + checkPersonData.map((item) => { + return ( +
+ {item.sUserName} + + ); + }) + : '' + } + + + + + : '' + } + + + + ); + } +} + +const BillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig} = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + AutoTableHeight, + masterConfig: masterConfigOld, + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + onlyslave5, + onlyslave6, + onlyslave7, + onlyslave8, + onlyslave9, + onlyslave10, + slaveData, + slave0Data, + slave1Data, + slave2Data, + slave3Data, + slave4Data, + slave5Data, + slave6Data, + slave7Data, + slave8Data, + slave9Data, + slave10Data, + masterConfig, + slaveConfig, + slave0Config, + slave1Config, + slave2Config, + slave3Config, + slave4Config, + slave5Config, + slave6Config, + slave7Config, + slave8Config, + slave9Config, + slave10Config, + slaveSelectedRowKeys, + slave0SelectedRowKeys, + slave1SelectedRowKeys, + slave2SelectedRowKeys, + slave3SelectedRowKeys, + slave4SelectedRowKeys, + slave5SelectedRowKeys, + slave6SelectedRowKeys, + app, + slavePagination, + slave0Pagination, + slave1Pagination, + slave2Pagination, + slave3Pagination, + slave4Pagination, + slave5Pagination, + slave6Pagination, + slave7Pagination, + slave8Pagination, + slave9Pagination, + slave10Pagination, + slavePageSize, + slave0PageSize, + slave1PageSize, + slave2PageSize, + slave3PageSize, + slave4PageSize, + slave5PageSize, + slave6PageSize, + slave7PageSize, + slave8PageSize, + slave9PageSize, + slave10PageSize, + sModelsType, + sModelsId, + addStateMap, + slaveInfoList, + slaveChildInfoList + } = props; + /* 回带表单 */ + onReturnForm(form); + const autoHeight = `calc( ${AutoTableHeight} - 96px)`; + const isSmall = false; + let pageSize = commonConfig.pageSize; + if (props.slaveConfig && props.slaveConfig.iPageSize) { + pageSize = props.slaveConfig.iPageSize; + } + + const bPagination = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.bPagination : false; + const bPagination0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.bPagination : false; + const bPagination1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.bPagination : false; + const bPagination2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.bPagination : false; + const bPagination3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.bPagination : false; + const bPagination4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.bPagination : false; + const bPagination5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.bPagination : false; + const bPagination6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.bPagination : false; + const bPagination7 = commonUtils.isNotEmptyObject(slave7Config) ? slave7Config.bPagination : false; + const bPagination8 = commonUtils.isNotEmptyObject(slave8Config) ? slave8Config.bPagination : false; + const bPagination9 = commonUtils.isNotEmptyObject(slave9Config) ? slave9Config.bPagination : false; + const bPagination10 = commonUtils.isNotEmptyObject(slave10Config) ? slave10Config.bPagination : false; + + const pagination = !bPagination ? false : { + pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // showQuickJumper: true, + hideOnSinglePage: false, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination0 = !bPagination0 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave0PageSize) && slave0PageSize !== 0 ? slave0PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave0Data) ? 0 : slave0Data.length, + current: commonUtils.isEmptyObject(slave0Pagination) ? 1 : slave0Pagination.current, + ...slave0Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination1 = !bPagination1 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave1PageSize) && slave1PageSize !== 0 ? slave1PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave1Data) ? 0 : slave1Data.length, + current: commonUtils.isEmptyObject(slave1Pagination) ? 1 : slave1Pagination.current, + ...slave1Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination2 = !bPagination2 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave2PageSize) && slave2PageSize !== 0 ? slave2PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave2Data) ? 0 : slave2Data.length, + current: commonUtils.isEmptyObject(slave2Pagination) ? 1 : slave2Pagination.current, + ...slave2Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination3 = !bPagination3 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave3PageSize) && slave3PageSize !== 0 ? slave3PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave3Data) ? 0 : slave3Data.length, + current: commonUtils.isEmptyObject(slave3Pagination) ? 1 : slave3Pagination.current, + ...slave3Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination4 = !bPagination4 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave4PageSize) && slave4PageSize !== 0 ? slave4PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave4Data) ? 0 : slave4Data.length, + current: commonUtils.isEmptyObject(slave4Pagination) ? 1 : slave4Pagination.current, + ...slave4Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + const pagination5 = !bPagination5 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave5PageSize) && slave5PageSize !== 0 ? slave5PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave5Data) ? 0 : slave5Data.length, + current: commonUtils.isEmptyObject(slave5Pagination) ? 1 : slave5Pagination.current, + ...slave5Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination6 = !bPagination6 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave6PageSize) && slave6PageSize !== 0 ? slave6PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave6Data) ? 0 : slave6Data.length, + current: commonUtils.isEmptyObject(slave6Pagination) ? 1 : slave6Pagination.current, + ...slave6Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination7 = !bPagination7 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave7PageSize) && slave7PageSize !== 0 ? slave7PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave7Data) ? 0 : slave7Data.length, + current: commonUtils.isEmptyObject(slave7Pagination) ? 1 : slave7Pagination.current, + ...slave7Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination8 = !bPagination8 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave8PageSize) && slave8PageSize !== 0 ? slave8PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave8Data) ? 0 : slave8Data.length, + current: commonUtils.isEmptyObject(slave8Pagination) ? 1 : slave8Pagination.current, + ...slave8Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination9 = !bPagination9 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave9PageSize) && slave9PageSize !== 0 ? slave9PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave9Data) ? 0 : slave9Data.length, + current: commonUtils.isEmptyObject(slave9Pagination) ? 1 : slave9Pagination.current, + ...slave9Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const pagination10 = !bPagination10 ? false : { + pageSize: commonUtils.isNotEmptyNumber(slave10PageSize) && slave10PageSize !== 0 ? slave10PageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slave10Data) ? 0 : slave10Data.length, + current: commonUtils.isEmptyObject(slave10Pagination) ? 1 : slave10Pagination.current, + ...slave10Pagination, + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + + /* 表1-commonView显示区域 */ + const ableConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + /* 选中行 */ + let showAll = true; /* 只显示表格 */ + let bShowLeft = true; /* 表格显示在左侧 */ + let bShowList = true; + let iColValueView = 12; + let iColValueTable = 12; + let slaveRow = {}; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slaveRow = slaveData[iIndex]; + } else { + slaveRow = slaveData[0]; + } + } else if (commonUtils.isNotEmptyArr(slaveData)) { + slaveRow = slaveData[0]; + } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iIndexArea = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll = false; + } + if (commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyArr(slaveConfig.gdsconfigformslave)) { + const iShowLeft = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft > -1) { + bShowLeft = true; + iColValueTable = slaveConfig.gdsconfigformslave[iShowLeft].iColValue; + } else if (iShowRight > -1) { + bShowLeft = false; + iColValueTable = slaveConfig.gdsconfigformslave[iShowRight].iColValue; + } + } + } + iColValueView = commonUtils.isNotEmptyNumber(iColValueTable) ? 24 - iColValueTable : 12; + const iShowOrder = bShowLeft ? 1 : 100; + /* 如果左侧列表没有一个字段显示 那么左侧树形不显示 */ + if(commonUtils.isEmptyArr(listConfigs)) { + showAll = true; + bShowList = false; + iColValueView = 24; + } + + + /* 表2-commonView显示区域 */ + const ableConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll0 = true; /* 只显示表格 */ + let bShowLeft0 = true; /* 表格显示在左侧 */ + let bShowList0 = true; + let iColValueView0 = 12; + let iColValueTable0 = 12; + let slave0Row = {}; + if (commonUtils.isNotEmptyArr(slave0SelectedRowKeys)) { + const iIndex = slave0Data.findIndex(item => slave0SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave0Row = slave0Data[iIndex]; + } else { + slave0Row = slave0Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave0Data)) { + slave0Row = slave0Data[0]; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iIndexArea = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll0 = false; + } + if (commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave)) { + const iShowLeft0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight0 = slave0Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft0 > -1) { + bShowLeft0 = true; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowLeft0].iColValue; + } else if (iShowRight0 > -1) { + bShowLeft0 = false; + iColValueTable0 = slave0Config.gdsconfigformslave[iShowRight0].iColValue; + } + } + } + iColValueView0 = commonUtils.isNotEmptyNumber(iColValueTable0) ? 24 - iColValueTable0 : 12; + const iShowOrder0 = bShowLeft0 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs0)) { + bShowList0 = false; + iColValueView0 = 24; + } + if(commonUtils.isEmptyObject(slave0Config)) { /* 若没配置表格 则不显示 */ + bShowList0 = false; + } + + /* 表3-commonView显示区域 */ + const ableConfigs1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs1 = commonUtils.isNotEmptyObject(slave1Config) ? slave1Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll1 = true; /* 只显示表格 */ + let bShowLeft1 = true; /* 表格显示在左侧 */ + let bShowList1 = true; + let iColValueView1 = 12; + let iColValueTable1 = 12; + let slave1Row = {}; + if (commonUtils.isNotEmptyArr(slave1SelectedRowKeys)) { + const iIndex = slave1Data.findIndex(item => slave1SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave1Row = slave1Data[iIndex]; + } else { + slave1Row = slave1Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave1Data)) { + slave1Row = slave1Data[0]; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iIndexArea = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll1 = false; + } + if (commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave)) { + const iShowLeft1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight1 = slave1Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft1 > -1) { + bShowLeft1 = true; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowLeft1].iColValue; + } else if (iShowRight1 > -1) { + bShowLeft1 = false; + iColValueTable1 = slave1Config.gdsconfigformslave[iShowRight1].iColValue; + } + } + } + iColValueView1 = commonUtils.isNotEmptyNumber(iColValueTable1) ? 24 - iColValueTable1 : 12; + const iShowOrder1 = bShowLeft1 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs1)) { + bShowList1 = false; + iColValueView1 = 24; + } + if(commonUtils.isEmptyObject(slave1Config)) { /* 若没配置表格 则不显示 */ + bShowList1 = false; + } + + + /* 表4-commonView显示区域 */ + const ableConfigs2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs2 = commonUtils.isNotEmptyObject(slave2Config) ? slave2Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll2 = true; /* 只显示表格 */ + let bShowLeft2 = true; /* 表格显示在左侧 */ + let bShowList2 = true; + let iColValueView2 = 12; + let iColValueTable2 = 12; + let slave2Row = {}; + if (commonUtils.isNotEmptyArr(slave2SelectedRowKeys)) { + const iIndex = slave2Data.findIndex(item => slave2SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave2Row = slave2Data[iIndex]; + } else { + slave2Row = slave2Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave2Data)) { + slave2Row = slave2Data[0]; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iIndexArea = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll2 = false; + } + if (commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyArr(slave2Config.gdsconfigformslave)) { + const iShowLeft2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight2 = slave2Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft2 > -1) { + bShowLeft2 = true; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowLeft2].iColValue; + } else if (iShowRight2 > -1) { + bShowLeft2 = false; + iColValueTable2 = slave2Config.gdsconfigformslave[iShowRight2].iColValue; + } + } + } + iColValueView2 = commonUtils.isNotEmptyNumber(iColValueTable2) ? 24 - iColValueTable2 : 12; + const iShowOrder2 = bShowLeft2 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs2)) { + bShowList2 = false; + iColValueView2 = 24; + } + + + /* 表5-commonView显示区域 */ + const ableConfigs3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs3 = commonUtils.isNotEmptyObject(slave3Config) ? slave3Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll3 = true; /* 只显示表格 */ + let bShowLeft3 = true; /* 表格显示在左侧 */ + let bShowList3 = true; + let iColValueView3 = 12; + let iColValueTable3 = 12; + let slave3Row = {}; + if (commonUtils.isNotEmptyArr(slave3SelectedRowKeys)) { + const iIndex = slave3Data.findIndex(item => slave3SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave3Row = slave3Data[iIndex]; + } else { + slave3Row = slave3Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave3Data)) { + slave3Row = slave3Data[0]; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iIndexArea = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll3 = false; + } + if (commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyArr(slave3Config.gdsconfigformslave)) { + const iShowLeft3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight3 = slave3Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft3 > -1) { + bShowLeft3 = true; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowLeft3].iColValue; + } else if (iShowRight3 > -1) { + bShowLeft3 = false; + iColValueTable3 = slave3Config.gdsconfigformslave[iShowRight3].iColValue; + } + } + } + iColValueView3 = commonUtils.isNotEmptyNumber(iColValueTable3) ? 24 - iColValueTable3 : 12; + const iShowOrder3 = bShowLeft3 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs3)) { + bShowList3 = false; + iColValueView3 = 24; + } + + + /* 表6-commonView显示区域 */ + const ableConfigs4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs4 = commonUtils.isNotEmptyObject(slave4Config) ? slave4Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll4 = true; /* 只显示表格 */ + let bShowLeft4 = true; /* 表格显示在左侧 */ + let bShowList4 = true; + let iColValueView4 = 12; + let iColValueTable4 = 12; + let slave4Row = {}; + if (commonUtils.isNotEmptyArr(slave4SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave4SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave4Row = slave4Data[iIndex]; + } else { + slave4Row = slave4Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave4Data)) { + slave4Row = slave4Data[0]; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iIndexArea = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll4 = false; + } + if (commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave)) { + const iShowLeft4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight4 = slave4Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft4 > -1) { + bShowLeft4 = true; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowLeft4].iColValue; + } else if (iShowRight4 > -1) { + bShowLeft4 = false; + iColValueTable4 = slave4Config.gdsconfigformslave[iShowRight4].iColValue; + } + } + } + iColValueView4 = commonUtils.isNotEmptyNumber(iColValueTable4) ? 24 - iColValueTable4 : 12; + const iShowOrder4 = bShowLeft4 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs4)) { + bShowList4 = false; + iColValueView4 = 24; + } + + + + /* 表6-commonView显示区域 */ + const ableConfigs5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs5 = commonUtils.isNotEmptyObject(slave5Config) ? slave5Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll5 = true; /* 只显示表格 */ + let bShowLeft5 = true; /* 表格显示在左侧 */ + let bShowList5 = true; + let iColValueView5 = 12; + let iColValueTable5 = 12; + let slave5Row = {}; + if (commonUtils.isNotEmptyArr(slave5SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave5SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave5Row = slave5Data[iIndex]; + } else { + slave5Row = slave5Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave5Data)) { + slave5Row = slave5Data[0]; + } + if (commonUtils.isNotEmptyObject(slave5Config) && commonUtils.isNotEmptyArr(slave5Config.gdsconfigformslave)) { + const iIndexArea = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll5 = false; + } + if (commonUtils.isNotEmptyObject(slave5Config) && commonUtils.isNotEmptyArr(slave5Config.gdsconfigformslave)) { + const iShowLeft5 = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight5 = slave5Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft5 > -1) { + bShowLeft5 = true; + iColValueTable5 = slave5Config.gdsconfigformslave[iShowLeft5].iColValue; + } else if (iShowRight5 > -1) { + bShowLeft5 = false; + iColValueTable5 = slave5Config.gdsconfigformslave[iShowRight5].iColValue; + } + } + } + iColValueView5 = commonUtils.isNotEmptyNumber(iColValueTable5) ? 24 - iColValueTable5 : 12; + const iShowOrder5 = bShowLeft5 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs5)) { + bShowList5 = false; + iColValueView5 = 24; + } + + + + const ableConfigs6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const listConfigs6 = commonUtils.isNotEmptyObject(slave6Config) ? slave6Config.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + let showAll6 = true; /* 只显示表格 */ + let bShowLeft6 = true; /* 表格显示在左侧 */ + let bShowList6 = true; + let iColValueView6 = 12; + let iColValueTable6 = 12; + let slave6Row = {}; + if (commonUtils.isNotEmptyArr(slave6SelectedRowKeys)) { + const iIndex = slave4Data.findIndex(item => slave6SelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + slave6Row = slave6Data[iIndex]; + } else { + slave6Row = slave6Data[0]; + } + } else if (commonUtils.isNotEmptyArr(slave6Data)) { + slave6Row = slave6Data[0]; + } + if (commonUtils.isNotEmptyObject(slave6Config) && commonUtils.isNotEmptyArr(slave6Config.gdsconfigformslave)) { + const iIndexArea = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll6 = false; + } + if (commonUtils.isNotEmptyObject(slave6Config) && commonUtils.isNotEmptyArr(slave6Config.gdsconfigformslave)) { + const iShowLeft6 = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight6 = slave6Config.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft6 > -1) { + bShowLeft6 = true; + iColValueTable4 = slave6Config.gdsconfigformslave[iShowLeft6].iColValue; + } else if (iShowRight6 > -1) { + bShowLeft6 = false; + iColValueTable5 = slave6Config.gdsconfigformslave[iShowRight6].iColValue; + } + } + } + iColValueView6 = commonUtils.isNotEmptyNumber(iColValueTable6) ? 24 - iColValueTable6 : 12; + const iShowOrder6 = bShowLeft6 ? 1 : 100; + if(commonUtils.isEmptyArr(listConfigs6)) { + bShowList6 = false; + iColValueView6 = 24; + } + + + + const listType = 'commonMultiList' ; + const bCheck = commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.sTbName === 'sysbillcheckresult' ? true : false; + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination, onChange: props.onTitleChange.bind(this, 'slave'), + }, + }; + + let bCheck0 = commonUtils.isNotEmptyObject(slave0Config) && slave0Config.sTbName === 'sysbillcheckresult' ? true : false; + + if(commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyArr(slave0Config.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('setNoCommonOperate')) )) { + bCheck0 = true; + } + + const slave0TableProps = { + ...commonBusiness.getTableTypes('slave0', props), + tableBelone: (sModelsType === listType) || bCheck ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination : pagination0, onChange: props.onTitleChange.bind(this, 'slave0'), + }, + }; + let bCheck1 = commonUtils.isNotEmptyObject(slave1Config) && slave1Config.sTbName === 'sysbillcheckresult' ? true : false; + + if(commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyArr(slave1Config.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('setNoCommonOperate')) )) { + bCheck1 = true; + } + + const slave1TableProps = { + ...commonBusiness.getTableTypes('slave1', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination1, onChange: props.onTitleChange.bind(this, 'slave1'), + }, + }; + const bCheck2 = commonUtils.isNotEmptyObject(slave2Config) && slave2Config.sTbName === 'sysbillcheckresult' ? true : false; + const slave2TableProps = { + ...commonBusiness.getTableTypes('slave2', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination2, onChange: props.onTitleChange.bind(this, 'slave2'), + }, + }; + const slave3TableProps = { + ...commonBusiness.getTableTypes('slave3', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination3, onChange: props.onTitleChange.bind(this, 'slave3'), + }, + }; + + let bCheck4 = commonUtils.isNotEmptyObject(slave4Config) && slave4Config.sTbName === 'sysbillcheckresult' ? true : false; + + if(commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyArr(slave4Config.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('setNoCommonOperate')) )) { + bCheck4 = true; + } + const slave4TableProps = { + ...commonBusiness.getTableTypes('slave4', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination4, onChange: props.onTitleChange.bind(this, 'slave4'), + }, + }; + const slave5TableProps = { + ...commonBusiness.getTableTypes('slave5', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination5, onChange: props.onTitleChange.bind(this, 'slave5'), + }, + }; + + const slave6TableProps = { + ...commonBusiness.getTableTypes('slave6', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination6, onChange: props.onTitleChange.bind(this, 'slave6'), + }, + }; + + const slave7TableProps = { + ...commonBusiness.getTableTypes('slave7', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination7, onChange: props.onTitleChange.bind(this, 'slave7'), + }, + }; + + const slave8TableProps = { + ...commonBusiness.getTableTypes('slave8', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination8, onChange: props.onTitleChange.bind(this, 'slave8'), + }, + }; + + const slave9TableProps = { + ...commonBusiness.getTableTypes('slave9', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination9, onChange: props.onTitleChange.bind(this, 'slave9'), + }, + }; + + const slave10TableProps = { + ...commonBusiness.getTableTypes('slave10', props), + tableBelone: sModelsType === listType ? 'list' : '', /* 新需求:做个1带N的只可查看不可编辑的表格,模块类型名:commonMultiList */ + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, pagination: pagination10, onChange: props.onTitleChange.bind(this, 'slave10'), + }, + }; + + + /* 从表view */ + const slaveViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView, + viewRow: slaveRow, + tableName: 'slave', + }; + + /* 第二张表 */ + const slave0ViewProps = { + ...props, + viewConfigs: ableConfigs0, + tableConfig: slave0Config, + iColValueView:iColValueView0, + viewRow: slave0Row, + tableName: 'slave0', + }; + /* */ + const slave1ViewProps = { + ...props, + viewConfigs: ableConfigs1, + tableConfig: slave1Config, + iColValueView:iColValueView1, + viewRow: slave1Row, + tableName: 'slave1', + }; + /* 从表view */ + const slave2ViewProps = { + ...props, + viewConfigs: ableConfigs2, + tableConfig: slave2Config, + iColValueView:iColValueView2, + viewRow: slave2Row, + tableName: 'slave2', + }; + + /* pack表view */ + const slave3ViewProps = { + ...props, + viewConfigs: ableConfigs3, + tableConfig: slave3Config, + iColValueView:iColValueView3, + viewRow: slave3Row, + tableName: 'slave3', + }; + + const slave4ViewProps = { + ...props, + viewConfigs: ableConfigs4, + tableConfig: slave4Config, + iColValueView:iColValueView4, + viewRow: slave4Row, + tableName: 'slave4', + }; + + const slave5ViewProps = { + ...props, + viewConfigs: ableConfigs5, + tableConfig: slave5Config, + iColValueView:iColValueView5, + viewRow: slave5Row, + tableName: 'slave5', + }; + + const slave6ViewProps = { + ...props, + viewConfigs: ableConfigs6, + tableConfig: slave6Config, + iColValueView:iColValueView6, + viewRow: slave6Row, + tableName: 'slave6', + }; + + + /* 根据配置 自定义父级页签,子级页签 */ + const slaveTablePropsList = {}; + if (commonUtils.isNotEmptyArr(slaveInfoList)) { + slaveInfoList.forEach((item, index) => { + // const slaveTablePagination = { + // pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, + // ...slavePagination, + // size: isSmall ? 'small' : 'large', + // pageSizeOptions: commonConfig.pageSizeOptions, + // showSizeChanger: !isSmall, + // showQuickJumper: !isSmall, + // hideOnSinglePage: true, + // }; + slaveTablePropsList[`slaveTable${index}Props`] = { + ...commonBusiness.getTableTypes(`slave${index}`, props), + // tableBelone: 'list', + tableProps: { + setAdd, + setCopy, + setDelete, + AutoTableHeight: '100%', + }, + }; + }); + } + + + const slaveChildTablePropsList = {}; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + slaveChildInfoList.forEach((item, index) => { + let configName = ''; + if(item && item.includes('-')) { + configName = item.split('-')[0]; + } + const childConfig = commonUtils.isNotEmptyObject(addStateMap) ? addStateMap[`${configName}Config`] : []; + const childViewConfig = commonUtils.isNotEmptyObject(childConfig) ? childConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const childListConfigs = commonUtils.isNotEmptyObject(childConfig) ? childConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + slaveChildTablePropsList[`${configName}TableProps`] = { + ...commonBusiness.getTableTypes(`${configName}`, props), + // tableBelone: 'list', + tableProps: { + setAdd, + setCopy, + setDelete, + AutoTableHeight: window.innerHeight - 350, + }, + bShowChildList : commonUtils.isNotEmptyArr(childListConfigs), + iShowChildListColValue : commonUtils.isNotEmptyArr(childViewConfig) ? 12 : 24, + }; + }); + } + + + const slaveChildViewProps = {}; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + slaveChildInfoList.forEach((item, index) => { + let configName = ''; + if(item && item.includes('-')) { + configName = item.split('-')[0]; + } + const childConfig = commonUtils.isNotEmptyObject(addStateMap) ? addStateMap[`${configName}Config`] : []; + const childViewConfig = commonUtils.isNotEmptyObject(childConfig) ? childConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bControl && item.sControlName.indexOf('Btn') === -1) : []; + const childListConfigs = commonUtils.isNotEmptyObject(childConfig) ? childConfig.gdsconfigformslave.filter(item => item.sName !== '' && item.bVisible && item.sControlName.indexOf('Btn') === -1) : []; + + slaveChildViewProps[`${configName}ViewProps`] = { + ...props, + viewConfigs: childViewConfig, + tableConfig: childConfig, + iColValueView : commonUtils.isNotEmptyArr(childListConfigs) ? 12 : 24, + viewRow: slave0Row, + tableName: configName, + bShowChildView: commonUtils.isNotEmptyArr(childViewConfig), + }; + }); + } + + /* 获取AssignmentField中的props */ + const assignmentFieldProps = { + visibleAssignmentField: props.visibleAssignmentField, /* 是否展示 */ + sAssignFieldData: props.sAssignFieldData, /* 数据 */ + sAssignFieldColumn: props.sAssignFieldColumn, /* 表头 */ + selectedRowKeys: props.selectedRowKeys, /* 选中 */ + sAssignFieldSelectedRowKeys: props.selectedRowKeys, /* 选中 */ + onSaveState: props.onSaveState, /* 保存数据方法 */ + onDataRowAdd: props.handleAddRow.bind(this, 'sAssignField'), + onDataRowDel: props.handleDelRow.bind(this, 'sAssignField'), + onDataRowCopy: props.handleCopyRow.bind(this, 'sAssignField'), + // onRowClick: props.handleRowClick.bind(this, 'sAssignField'), + config: props.config, + app: props.app, + enabled: props.enabled, + onDataChange: props.onChange, + onGetsAssignField: props.onGetsAssignField, + handleFieldDoubleClick: props.handleFieldDoubleClick, + }; + + // const slaveInfo = commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + // const materialsInfo = commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 材料表 */ + // const checkInfo = commonFunc.showMessage(app.commonConst, 'zCheck'); /* 审核表 */ + // const slaveInfo0 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 工序表 */ + // const slaveInfo1 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表二 */ + // const slaveInfo2 = commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表三 */ + let slaveInfo = ''; + let materialsInfo = ''; + let checkInfo = ''; + let slaveInfo0 = ''; + let slaveInfo1 = ''; + let slaveInfo2 = ''; + let slaveInfo3 = ''; + let slaveInfo4 = ''; + let slaveInfo5 = ''; + let slaveInfo6 = ''; + let slaveInfo7 = ''; + let slaveInfo8 = ''; + + if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + slaveInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')[0].showName : commonFunc.showMessage(app.commonConst, 'MainContent'); /* 从表信息 */ + materialsInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zMaterials')[0].showName : commonFunc.showMessage(app.commonConst, 'zMaterials'); /* 表一 */ + checkInfo = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zCheck')[0].showName : commonFunc.showMessage(app.commonConst, 'zCheck'); /* 表二 */ + slaveInfo0 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 表三 */ + slaveInfo1 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表四 */ + slaveInfo2 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表五 */ + slaveInfo3 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo3'); /* 表六 */ + slaveInfo4 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo4'); /* 表七 */ + slaveInfo5 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo5'); /* 表八 */ + slaveInfo6 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo6'); /* 表九 */ + slaveInfo7 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo7'); /* 表十 */ + slaveInfo8 = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo8'); /* 表十一 */ + + } + + let productProcessInfoType = {}; + let productProcessInfoConfig = {}; + let processCardSearchResult = commonFunc.showMessage(app.commonConst, 'processCardSearchResult');/* 复制从工艺卡查询结果 */ + if (commonUtils.isNotEmptyObject(props.productProcessInfoChooseData)) { + const productProcessInfoCopyFromKey = props.productProcessInfoCopyFromKey; + const iIndex = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === productProcessInfoCopyFromKey); + if (iIndex > -1) { + productProcessInfoConfig = props.masterConfig.gdsconfigformslave[iIndex]; + processCardSearchResult = commonUtils.isNotEmptyObject(productProcessInfoConfig) && commonUtils.isNotEmptyObject(productProcessInfoConfig.sActiveName) ? productProcessInfoConfig.sActiveName : processCardSearchResult; + } + productProcessInfoType = { + app: { + ...props.app, + currentPane: { + name: 'productProcessInfo', + config: productProcessInfoConfig, + conditonValues: props.getSqlCondition(productProcessInfoConfig), + title: props.productProcessInfoChooseData.sMenuName, + route: props.productProcessInfoChooseData.sName, + formId: props.productProcessInfoChooseData.sId, + key: props.sModelsId + props.productProcessInfoChooseData.sId, + sModelsType: props.productProcessInfoChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + }; + } + + let isSysSetting = false; + if (props && props.app && props.app.currentPane && props.app.currentPane.title && props.app.currentPane && props.app.currentPane.title === "功能模块界面设置单据") { + isSysSetting = true; + } + const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0]; + let gdsconfigformmasterId = ''; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + const sNotEmpty = 'sParentId,sProductId'; + let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`; + /* 送货单需要传客户id */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile, /* 文件上传 */ + accept: 'xls/*', + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + }, + }; + + const uploadPropsSales = props.onUploadPropsSales(); + const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */ + + + /* 显示导入报错信息 */ + let importExcelProps = {}; + let importExcelTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, 'processCardSearchResult')) ? + commonFunc.showMessage(app.commonConst, 'importErrorMsg') : '导入校验信息'; /* 导入校验信息 */ + if (commonUtils.isNotEmptyObject(props)) { + importExcelProps = { + ...commonBusiness.getTableTypes('import', props), + tableProps: { + pagination:null, AutoTableHeight: 400, + }, + // data: bSingleTree && commonUtils.isNotEmptyArr(slaveData) ? commonUtils.genTreeByArr(slaveData, 'sId', 'sFatherSlaveId') : slaveData, + onDelRow: props.onDelRow, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + tableBelone: 'list', + }; + } + + // + // const menu = ( + // + // 生成主表当前数据(完全) + // 生成整表当前数据(完全) + // 生成从表当前数据 + // + // ); + /* 取 masterConfig中有多少个Tab页签配置 */ + const masterShowConfig = commonUtils.isNotEmptyObject(masterConfigOld) ? masterConfigOld.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; + const diliverConfigTypeArr = []; /* 有Tab的配置 */ + masterShowConfig.forEach((child) => { + if (child.sControlName.indexOf('_') > -1) { + const tableType = child.sControlName.split('_')[1]; + const isIndex = diliverConfigTypeArr.findIndex(item => item === tableType); + if (isIndex === -1) { + diliverConfigTypeArr.push(tableType); + } + } + }); + + /* 主表页签+表格页签排序规则,表格页签以10位一个间隔,10,20,30,40,50,60,如果想进行排序 则页签顺序介入其间即可 */ + /* 找到各个主表页签Tab所处的区间 */ + let diliverConfigTypeArr1 = []; + let diliverConfigTypeArr2= []; + let diliverConfigTypeArr3 = []; + let diliverConfigTypeArr4 = []; + let diliverConfigTypeArr5 = []; + let diliverConfigTypeArr6 = []; + for (const item of diliverConfigTypeArr) { + let numStr = item.replace(/[^\d]/g, '').trim(); + let num = Number(numStr); + if(!commonUtils.isEmpty(num)) { + if(num < 10) { /* 0- 10 */ + diliverConfigTypeArr1.push(item); + } else if(num < 20) { /* 10- 20 */ + diliverConfigTypeArr2.push(item); + } else if(num < 30) { /* 20- 30 */ + diliverConfigTypeArr3.push(item); + } else if(num < 40) { /* 30- 40 */ + diliverConfigTypeArr4.push(item); + } else if(num < 50) { /* 40- 50 */ + diliverConfigTypeArr5.push(item); + } else if(num < 60) { /* 50- 60 */ + diliverConfigTypeArr6.push(item); + } + } + } + + return ( + + +
+
+ +
+ { commonUtils.isNotEmptyArr(ImportData) ? +
+ {BtnimportData} +
: ''} +
+ + +
+
+ +
+
+ { + props.sModelsType === 'element/workcalendar' ? + : +
+
+ +
+ + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr1) ? + diliverConfigTypeArr1.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave ? + +
+ + { + bShowList ? +
+ + : '' + + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr2) ? + diliverConfigTypeArr2.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave0 ? + +
+ + { + bShowList0 ? + commonUtils.isNotEmptyObject(addStateMap) && commonUtils.isNotEmptyObject(addStateMap['slave0Child0Config']) ? +
+ + { + [''].map(() => { + let showTable = true; + const { gdsconfigformslave = [] } = slave0Config; + const iIndex = gdsconfigformslave.findIndex(item => item.sControlName === 'bShowAllTable'); + if (iIndex !== -1) { + showTable = gdsconfigformslave[iIndex].bGrdVisible; + } + return ( + <>{ showTable ? + + + : '' + } + ); + }) + } + + + { props.slaveChildInfoList?.filter(item => item.includes('slave0Child')).map((item, index) => { + if(item.includes('slave0')) { + let num = 1 + index; + let tabName = '子页签' + num; + let tableName = ''; + if (item && item.includes('-')) { + tabName = item.split('-')[1]; + tableName = item.split('-')[0]; + } + + /* 找到子级 动态加载布局配置 */ + let slaveChildTableProps = {}; + let slaveChildView = {}; + let bShowChildList = true; + let bShowChildView = true; + let bShowSelectParam = false; + let sCommonParamProps = {}; + let iShowChildListColValue = 12; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + const iIndex = slaveChildInfoList.findIndex(child => child.includes(item)); + if (iIndex > -1) { + slaveChildTableProps = slaveChildTablePropsList[`${tableName}TableProps`]; + slaveChildView = slaveChildViewProps[`${tableName}ViewProps`]; + bShowChildList = slaveChildTableProps.bShowChildList; + iShowChildListColValue = slaveChildTableProps.iShowChildListColValue; + bShowChildView = slaveChildView.bShowChildView; + + const { config = {} } = slaveChildTableProps; + const { gdsconfigformslave = [] } = config; + const sProcessParamTypeIndex = gdsconfigformslave.findIndex(item => item.sControlName === 'sProcessParamType'); + if (sProcessParamTypeIndex !== -1) { + const { sDefault } = gdsconfigformslave[sProcessParamTypeIndex]; + const sParamList = ['sProcess', 'sReport', 'sWorkOrder', 'sNorm', 'sTest']; + if (sParamList.includes(sDefault)) { + bShowChildView = false; + bShowSelectParam = true; + + sCommonParamProps = { + ...props, + sParamType: sDefault, /* 参数类型 */ + slaveData: [], + processSelectedData: [], + }; + const { slave0Data = [], slave0SelectedRowKeys = []} = props; + if (commonUtils.isNotEmptyArr(slave0SelectedRowKeys)) { + sCommonParamProps.slaveData = slave0Data.filter(item => item.sId === slave0SelectedRowKeys[0]); + sCommonParamProps.processSelectedData = sCommonParamProps.slaveData; + } + } + } + + } + } + + return ( + +
+ + { + bShowChildList ?
+ + : '' + } + { + bShowChildView ? : '' + } + { + bShowSelectParam ? + + + : '' + } + + + + ) + } + }) } + + + + + : + + + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr3) ? + diliverConfigTypeArr3.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlySlave1 ? + +
+ + { + bShowList1 ? + commonUtils.isNotEmptyObject(addStateMap) && commonUtils.isNotEmptyObject(addStateMap['slave1Child0Config']) ? +
+ + { + [''].map(() => { + let showTable = true; + const { gdsconfigformslave = [] } = slave1Config; + const iIndex = gdsconfigformslave.findIndex(item => item.sControlName === 'bShowAllTable'); + if (iIndex !== -1) { + showTable = gdsconfigformslave[iIndex].bGrdVisible; + } + return ( + <>{ showTable ? + + + : '' + } + ); + }) + } + + + { props.slaveChildInfoList?.filter(item => item.includes('slave1Child')).map((item, index) => { + let num = 1 + index; + let tabName = '子页签' + num; + let tableName = ''; + if(item && item.includes('-')) { + tabName = item.split('-')[1]; + tableName= item.split('-')[0]; + } + + /* 找到子级 动态加载布局配置 */ + let slaveChildTableProps ={}; + let slaveChildView ={}; + let bShowChildList = true; + let bShowChildView = true; + let iShowChildListColValue = 12; + if(commonUtils.isNotEmptyArr(slaveChildInfoList)) { + const iIndex = slaveChildInfoList.findIndex(child => child.includes(item)); + if(iIndex > -1) { + slaveChildTableProps = slaveChildTablePropsList[`${tableName}TableProps`]; + slaveChildView = slaveChildViewProps[`${tableName}ViewProps`]; + bShowChildList = slaveChildTableProps.bShowChildList; + iShowChildListColValue = slaveChildTableProps.iShowChildListColValue; + bShowChildView = slaveChildView.bShowChildView; + } + } + return ( + +
+ + { + bShowChildList ?
+ + : '' + } + { + bShowChildView ? : '' + } + + + + + ) + }) } + + + + + : + + + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr4) ? + diliverConfigTypeArr4.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave2 ? + +
+ + { + bShowList2 ? +
+ + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr5) ? + diliverConfigTypeArr5.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave3 ? + +
+ + { + bShowList3 ? +
+ + : '' + } + + + + : '' + } + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr6) ? + diliverConfigTypeArr6.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + let num = item.replace(/[^\d]/g, '').trim(); + const tabName = item.replace(/\d+/g,''); + return ( + +
+ +
+
+ ); + }) + : '' + } + { + onlyslave4 ? + +
+ + { + bShowList4 ? + commonUtils.isNotEmptyObject(addStateMap) && commonUtils.isNotEmptyObject(addStateMap['slave4Child0Config']) ? +
+ + { + [''].map(() => { + let showTable = true; + const { gdsconfigformslave = [] } = slave4Config; + const iIndex = gdsconfigformslave.findIndex(item => item.sControlName === 'bShowAllTable'); + if (iIndex !== -1) { + showTable = gdsconfigformslave[iIndex].bGrdVisible; + } + return ( + <>{ showTable ? + + + : '' + } + ); + }) + } + + + { props.slaveChildInfoList?.filter(item => item.includes('slave4Child')).map((item, index) => { + if(item.includes('slave4')) { + let num = 1 + index; + let tabName = '子页签' + num; + let tableName = ''; + if (item && item.includes('-')) { + tabName = item.split('-')[1]; + tableName = item.split('-')[0]; + } + + /* 找到子级 动态加载布局配置 */ + let slaveChildTableProps = {}; + let slaveChildView = {}; + let bShowChildList = true; + let bShowChildView = true; + let iShowChildListColValue = 12; + if (commonUtils.isNotEmptyArr(slaveChildInfoList)) { + const iIndex = slaveChildInfoList.findIndex(child => child.includes(item)); + if (iIndex > -1) { + slaveChildTableProps = slaveChildTablePropsList[`${tableName}TableProps`]; + slaveChildView = slaveChildViewProps[`${tableName}ViewProps`]; + bShowChildList = slaveChildTableProps.bShowChildList; + iShowChildListColValue = slaveChildTableProps.iShowChildListColValue; + bShowChildView = slaveChildView.bShowChildView; + + } + } + return ( + +
+ + { + bShowChildList ? +
+ + : '' + } + { + bShowChildView ? + : '' + } + + + + + ) + } + }) } + + + + + : + + + : '' + } + + + + : '' + } + { + onlyslave5 ? + +
+ + { + bShowList5 ? +
+ + : '' + } + + + + : '' + } + { + onlyslave6 ? + +
+ + { + bShowList6 ? +
+ + : '' + } + + + + : '' + } + { + onlyslave7 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave8 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave9 ? + +
+ +
+ + + + + + : '' + } + { + onlyslave10 ? + +
+ +
+ + + + + + : '' + } + + + } + + { + props.productProcessInfoChooseVisible ? + + + + : '' + } + { + props.showImportErrorVisible ? + + + + : '' + } +
+ +
+ + + + ); +}); + +export default CommonBase(CommonNewSales(CommonNewBill)); diff --git a/src/components/Common/CommonNewTabBillEvent.js b/src/components/Common/CommonNewTabBillEvent.js new file mode 100644 index 0000000..f46d8d9 --- /dev/null +++ b/src/components/Common/CommonNewTabBillEvent.js @@ -0,0 +1,7049 @@ +/* eslint-disable */ +import React, { Component } from 'react'; +import { Modal, message, Progress } from 'antd-v4'; +// import moment from 'moment'; +import * as commonUtils from '@/utils/utils'; /* 通用方法 */ +import {commonBusiness} from '@/components/Common/commonBusiness'; /* 单据业务功能 */ +import * as commonServices from '@/services/services'; /* 服务类 */ +import commonConfig from '@/utils/config'; +import * as commonFunc from '@/components/Common/commonFunc'; +import styles from '@/components/Common/ToolBar/index.less'; + + +const { confirm } = Modal; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + initSId: '' + } + // this.state = { + // masterConfig: {}, /* 主表配置 */ + // slaveConfig: {}, /* 从表配置 */ + // slaveColumn: [], /* 显示的从表表头 */ + // checkConfig: {}, /* 审核配置 */ + // checkColumn: [], /* 显示的审核表表头 */ + // + // billnosetting: {}, /* 是否自动审核 */ + // report: [], /* 打印模板 */ + // masterData: {}, /* 主表数据 */ + // slaveData: [], /* 从表数据 */ + // dataTotal: {}, /* 合计字段 */ + // checkData: [], /* 审核表数据 */ + // masterFlag: false, /* 是否获取主表数据 */ + // slaveFlag: false, /* 是否获取从表数据 */ + // checkFlag: false, /* 是否获取审核表数据 */ + // sId: '', /* 数据Id */ + // enabled: false, /* 页面是否可编辑 */ + // slaveSelectedRowKeys: [], /* 已选择的数据行(数据格式:数组) */ + // slaveDelData: [], /* 已删除的数据集合,保存的时候会与从表一并传给服务器(数据格式:数组) */ + // expand: false, /* 默认主表只显示2行 */ + // imgSrc: '', /* Avatar组件中的img中src的资源路径 */ + // currentIndexFlag: false, /* 默认不显示当前的数据在主表页的位置序号 */ + // }; + this.form = {}; /* 表单对象 */ + this.copyName = ''; + const { sModelsId, sModelsType } = props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sSrcNo', []); + } + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, formRoute, + } = nextProps; + const { masterConfig: masterConfigOld, app } = nextProps; + if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) { + const sId = currentId !== undefined ? currentId : ''; + const masterConfig = formData.filter(item => !item.bGrd)[0]; + + const sReasonTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, 'sReason'))? + commonFunc.showMessage(app.commonConst, 'sReason') : '报错原因';/* 导入报错原因 */ + + /* 导入错误配置 */ + let importConfig = {}; + let importFilterData = formData.filter(item => item.bReportData && item.sGrd === 'importTemplate'); + if(commonUtils.isNotEmptyArr(importFilterData)) { + importConfig = formData.filter(item => item.bReportData && item.sGrd === 'importTemplate')[0]; + const iIndex = importConfig.gdsconfigformslave.findIndex(item => item.sName === 'sReason'); + if(iIndex === -1) { + importConfig.gdsconfigformslave.push({ + bCanInput: false, + bEntireLine: false, + bFilter: false, + bFind: false, + bFirstEmpty: false, + bIsOther: false, + bMultipleChoice: false, + bNewRecord: false, + bNotEmpty: false, + bNotRepeat: false, + bReadonly: false, + bSum: false, + bTree: false, + bVisible: true, + iColValue: 1, + iFitWidth: 200, + /* iIncrement: 26154, */ + iOrder: 1, + iTag: 0, + iVisCount: 0, + iconName: 'menu-unfold', + sActiveKey: '', + sAssignField: '', + sBig5: '', + sBig5DropDown: '', + sBrandsId: '1111111111', + sChinese: '报错原因', + sChineseDropDown: '', + sColor: '', + sColorTerms: '', + sControlName: '', + sDateFormat: '', + sDefault: '', + sDropDownType: '', + sEnglish: '', + sEnglishDropDown: '', + sFilterSql: '', + /* sId: '19211681019715580740769130', */ + sKeyUpFilter: '', + sMaxValue: '', + sMinValue: '', + sName: 'sReason', + sNotRepeatColumn: '', + /* sParentId: '19211681019715428730724240', */ + sRelation: '', + sSelectRelation: '', + sSqlCondition: '', + sSubsidiaryId: '1111111111', + showDropDown: '', + showName: sReasonTitle, + }); + } + } + let importColumn = []; + if (commonUtils.isNotEmptyObject(importConfig)) { + importColumn = commonFunc.getHeaderConfig(importConfig); + } + + const config = {}; + let addState = {}; + let addOtherState = {}; + let configArr = []; + let onlySlave = false; + let onlySlave0 = false; + let onlySlave1 = false; + let onlyslave2 = false; + let onlyslave3 = false; + let onlyslave4 = false; + let slaveColumn = []; + let slave0Column = []; + let slave1Column = []; + let slave2Column = []; + let slave3Column = []; + let slave4Column = []; + + const getSlaveConfig = (config) => { + if (config && config.sGrd && config.sGrd.includes('_')) { + return {}; + } else { + return config; + } + } + + const slaveConfig = formData.length > 1 ? getSlaveConfig(formData[1]) : {}; + if (!commonUtils.isEmptyObject(slaveConfig) && slaveConfig.bGrdVisible) { + config.slaveConfig = slaveConfig; + slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + onlySlave = true; + const slavePageSize = commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyNumber(slaveConfig.iPageSize) && slaveConfig.iPageSize !== 0 ? + slaveConfig.iPageSize : commonConfig.pageSize; + addOtherState.slavePageSize = slavePageSize; + } + const slave0Config = formData.length > 2 ? getSlaveConfig(formData[2]) : {}; + if (!commonUtils.isEmptyObject(slave0Config) && slave0Config.bGrdVisible) { + config.slave0Config = slave0Config; + slave0Column = commonFunc.getHeaderConfig(slave0Config); + onlySlave0 = true; + const slave0PageSize = commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyNumber(slave0Config.iPageSize) && slave0Config.iPageSize !== 0 ? + slave0Config.iPageSize : commonConfig.pageSize; + addOtherState.slave0PageSize = slave0PageSize; + + } + const slave1Config = formData.length > 3 ? getSlaveConfig(formData[3]) : {}; + if (!commonUtils.isEmptyObject(slave1Config) && slave1Config.bGrdVisible) { + config.slave1Config = slave1Config; + slave1Column = commonFunc.getHeaderConfig(slave1Config); + onlySlave1 = true; + const slave1PageSize = commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyNumber(slave1Config.iPageSize) && slave1Config.iPageSize !== 0 ? + slave1Config.iPageSize : commonConfig.pageSize; + addOtherState.slave0PageSize = slave1PageSize; + } + const slave2Config = formData.length > 4 ? getSlaveConfig(formData[4]) : {}; + if (!commonUtils.isEmptyObject(slave2Config) && slave2Config.bGrdVisible) { + config.slave2Config = slave2Config; + slave2Column = commonFunc.getHeaderConfig(slave2Config); + onlyslave2 = true; + const slave2PageSize = commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyNumber(slave2Config.iPageSize) && slave2Config.iPageSize !== 0 ? + slave2Config.iPageSize : commonConfig.pageSize; + addOtherState.slave2PageSize = slave2PageSize; + } + const slave3Config = formData.length > 5 ? getSlaveConfig(formData[5]) : {}; + if (!commonUtils.isEmptyObject(slave3Config) && slave3Config.bGrdVisible) { + config.slave3Config = slave3Config; + slave3Column = commonFunc.getHeaderConfig(slave3Config); + onlyslave3 = true; + const slave3PageSize = commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyNumber(slave3Config.iPageSize) && slave3Config.iPageSize !== 0 ? + slave3Config.iPageSize : commonConfig.pageSize; + addOtherState.slave3PageSize = slave3PageSize; + } + const slave4Config = formData.length > 6 ? getSlaveConfig(formData[6]) : {}; + if (!commonUtils.isEmptyObject(slave4Config) && slave4Config.bGrdVisible) { + config.slave4Config = slave4Config; + slave4Column = commonFunc.getHeaderConfig(slave4Config); + onlyslave4 = true; + const slave4PageSize = commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyNumber(slave4Config.iPageSize) && slave4Config.iPageSize !== 0 ? + slave4Config.iPageSize : commonConfig.pageSize; + addOtherState.slave4PageSize = slave4PageSize; + } + /* commonNewBill 可以一带N表 */ + const tableConfigArr = formData.filter(item => item.bGrd && item.bGrdVisible && !(item.sGrd && item.sGrd.split('_').length > 2)); + const slaveOtherConfigArr = []; + + let slaveInfoList = ['slave']; /* 父表格名配置集合 */ + let slaveChildInfoList = []; /* 子表格名配置集合 */ + const addStateConfig ={}; /* 所有表格配置集合 */ + addStateConfig['slaveConfig'] = slaveConfig; + + let addStateMap ={}; /* 所有表格配置集合 */ + + if(commonUtils.isNotEmptyArr(tableConfigArr)) { + tableConfigArr.forEach((item, iIndex) => { + if(iIndex > 5) { + const iSlaveTag = iIndex - 1; + item.slaveNameTag = iSlaveTag; + slaveOtherConfigArr.push(item); + const slaveOtherConfigName = 'slave' + iSlaveTag + 'Config'; + let slaveOtherColumnName = 'slave' + iSlaveTag + 'Column'; + const onlyslaveTag= 'onlyslave' + iSlaveTag; + const slavePageSizeTag = 'slave' + iSlaveTag + 'PageSize'; + const slaveOtherColumn = commonFunc.getHeaderConfig(item); + addOtherState[slaveOtherConfigName] = item; + addOtherState[slaveOtherColumnName] = slaveOtherColumn; + addOtherState[onlyslaveTag] = true; + const slavePageSize = commonUtils.isNotEmptyObject(item) && commonUtils.isNotEmptyNumber(item.iPageSize) && item.iPageSize !== 0 ? + item.iPageSize : commonConfig.pageSize; + addOtherState[slavePageSizeTag] = slavePageSize; + } + /* 封装父级表格 */ + let num = 0; + if(iIndex > 0) { + num = iIndex -1; + slaveInfoList.push(`slave${num}`); + addStateConfig[`slave${num}Config`] = item; + } + /* 找到父级页签下面的子级页签数据集 */ + const childFormData = formData.filter(child => !child.bGrdVisible && child.sGrd && item.sChildTableName && item.sChildTableName.includes(child.sGrd) && child.sGrd !== 'slave' ); + if(commonUtils.isNotEmptyArr(childFormData)) { + childFormData.forEach((child, tag) => { + addOtherState[`slave${num}Child${tag}Config`] = child; + addStateConfig[`slave${num}Child${tag}Config`] = child; + addOtherState[`slave${num}Child${tag}Column`] = commonFunc.getHeaderConfig(child); + const sChildName = child.showName; + slaveChildInfoList.push(`slave${num}Child${tag}-${sChildName}`); + }); + } + + }); + addStateMap = addStateConfig; + + addOtherState.slaveOtherConfigArr = slaveOtherConfigArr; + } + + + config.masterConfig = masterConfig; + + const slaveTopConfig = formData.find(item => item.sGrd === 'slave'); + if (slaveTopConfig) { + addOtherState.bShowSlaveTop = true; + addOtherState.slaveTopConfig = slaveTopConfig; + addOtherState.slaveTopColumn = commonFunc.getHeaderConfig(slaveTopConfig); + } + + /* 取材料组配置放在数组 */ + const addState2 ={}; /* 存储材料数据集 */ + let materialsInfoList = []; + let materialsChildInfoList = []; + const materialsFormData = formData.filter(item => item.sGrd && item.sGrd.includes('materials') && item.sGrd.split('_').length <3 ); + // const materialsFormData = formData.filter(item => item.sTbName !== 'mftworkordermaterials' && item.sGrd && item.sGrd.includes('materials') && item.bGrdVisible ); + /* 找到除了材料,成品材料外的其他所有父级材料 */ + + if(commonUtils.isNotEmptyArr(materialsFormData)) { + materialsInfoList.push('materials'); + materialsFormData.forEach((item, index) => { + if(index > 0) { + addState2[`materials${index}Config`] = item; + addStateConfig[`materials${index}Config`] = item; + addState2[`materials${index}Column`] = commonFunc.getHeaderConfig(item); + /* 找到该配置的子从表 */ + const childFormData = formData.filter(child => child.sGrd === item.sChildTableName && child.sGrd && child.sGrd.includes('materials')); + if (commonUtils.isNotEmptyArr(childFormData)) { + childFormData.forEach((child, num) => { + addState2[`materials${index}ChildConfig`] = child; + addStateConfig[`materials${index}ChildConfig`] = child; + addState2[`materials${index}ChildColumn`] = commonFunc.getHeaderConfig(child); + // materialsInfoList.push(child.showName); + const sChildName = item.showName + num + 1; + materialsChildInfoList.push(`materials${index}Child`); + }); + } + materialsInfoList.push(`materials${index}`); + }else { + const childFormData = formData.filter(child => child.sGrd === item.sChildTableName && child.sGrd && child.sGrd.includes('materials')); + if (commonUtils.isNotEmptyArr(childFormData)) { + childFormData.forEach((child, num) => { + addState2[`materialsChildConfig`] = child; + addStateConfig[`materialsChildConfig`] = child; + addState2[`materialsChildColumn`] = commonFunc.getHeaderConfig(child); + // materialsInfoList.push(child.showName); + const sChildName = item.showName + num + 1; + materialsChildInfoList.push(`materialsChild`); + }); + } + } + }); + } + + if (sId === '') { + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + // 如果配置了bEmptyAddLine, 默认不添加空数据 + formData.forEach((item, index) => { + if (index > 0) { + const tempConfig = formData[index]; + const i = index === 1 ? '' : index - 2; + if (commonUtils.isNotEmptyObject(tempConfig) && tempConfig.bGrdVisible) { + const bEmptyAddLine = tempConfig.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + addState[`slave${i}Data`] = []; + } + } + } + }); + } else { + if (formRoute === '/indexPage/commonCostomTabBill') { + configArr = [ + ['master', masterConfig], + ['slave', slaveConfig], + ['slave0', slave0Config], + ['slave1', slave1Config], + ['slave2', slave2Config], + ['slave3', slave3Config], + ['slave4', slave4Config], + ].concat( + Object.keys(addOtherState) + .filter(key => key.includes('Config') && !key.includes('Arr')) + .map(key => [key.replace('Config', ''), addOtherState[key]]) + ); + + const queryConfigArr = configArr.filter(([_, config]) => config.sSqlStr !== 'noQuery'); + addState.queryConfigArr = queryConfigArr; + + this.handleGetData1(queryConfigArr, undefined, { type: 'init' }); + + const dataRelationJson = {}; + const noQueryConfigArr = configArr.filter(([_, config]) => config.sSqlStr === 'noQuery'); + noQueryConfigArr.forEach(item => { + const [name, config] = item; + const { sTbName } = config; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + /* 上批数据逻辑处理 */ + const childNoQueryConfigArr = formData.filter(item => item.sSqlStr === 'noQuery' && (item.showName.includes("对比") || item.showName.includes("上批"))) || []; + if(commonUtils.isNotEmptyArr(childNoQueryConfigArr)) { + childNoQueryConfigArr.forEach(itemChild => { + const { sTbName } = itemChild; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + const arr = itemChild.sGrd.split('_'); + const num = arr.length > 0 && Number(arr[1]) -1; + const name = arr[0]+'Child'+ num +'Child0'; + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + } + addState.dataRelationJson = dataRelationJson; + } else { + this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave5Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave6Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave7Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave8Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave9Config : null, + commonUtils.isNotEmptyObject(addOtherState)? addOtherState.slave10Config : null, + Object.keys(addOtherState) + .filter(key => key.includes('Child') && key.includes('Config') || key === 'slaveTopConfig') + .map(key => ({ name: key.replace('Config', ''), config: addOtherState[key] })), + ); + } + } + this.props.onSaveState({ + masterConfig, + sId, + pageLoading: false, + ...addState, + slaveConfig, + slaveColumn, + slave0Config, + slave0Column, + slave1Config, + slave1Column, + slave2Config, + slave2Column, + slave3Config, + slave3Column, + slave4Config, + slave4Column, + onlySlave, + onlySlave0, + onlySlave1, + onlyslave2, + onlyslave3, + onlyslave4, + importConfig, + importColumn, + addStateMap, + slaveInfoList, + slaveChildInfoList, + ...addOtherState, + configArr, + ...addState2, + materialsInfoList, + materialsChildInfoList, + }); + } + } + + shouldComponentUpdate(nextProps) { + const { slaveColumn, masterConfig } = nextProps; + return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); + } + + /** 获取应收账款 */ + getCustomerReceipt = async (masterData) => { + const { sModelsId } = this.props; + if (!commonUtils.isEmpty(masterData.sCustomerId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { sProName: 'Sp_Receivables_AR', paramsMap: { sStatistics: masterData.sCustomerId } }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + const [returnData] = dataReturn.dataset.rows[0].dataSet.outData; + const masterDataNew = { + ...masterData, + dNoReceiptMoney: returnData.dNoReceiptMoney, + dDueReceiptMoney: returnData.dNoReceiptMoney, + }; + this.props.onSaveState({ masterData: masterDataNew }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + }; + + /** 获取上查下查数据 */ + getSearchUpDownData = async (showConfig) => { + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}searchupdown/getSearchUpDown/${showConfig.sId}?sModelsId=${sModelsId}`; + const conditonValues = this.props.getSqlCondition(showConfig); + if (commonUtils.isNotEmptyObject(conditonValues)) { + const iIndex = Object.keys(conditonValues).findIndex(item => commonUtils.isEmpty(conditonValues[item])); + if (iIndex === -1) { + /* 调用后台接口 */ + const body = { + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + return dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config, slaveChildConfigArr) => { + if (this.props.queryConfigArr) { + this.handleGetData1(this.props.queryConfigArr, bEditClick); + return; + } + + const { currentId, app } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props; + const conditonValues = this.handleGetSqlConditionValues(masterConfig) + await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sSqlCondition: { ...conditonValues }, sId, pageSize: '', pageNum: '' }, bEditClick }); + let addStateSlave = {}; + if (!commonUtils.isEmptyObject(slaveConfig)) { + const conditonValues = this.handleGetSqlConditionValues(slaveConfig); + addStateSlave = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave) && commonUtils.isNotEmptyArr(addStateSlave.slaveData)) { + // let slaveDelData = []; + // addStateSlave.slaveData.forEach((item) => { + // item.handleType = 'del'; + // slaveDelData.push(item); + // }); + // addStateSlave.slaveData = [] + // let sDepartNameDropDown; + // const allTableData = {}; + // const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sDepartName'); + // if (masterIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex]); + // sDepartNameDropDown = sqlDropDownData.dropDownData; + // sDepartNameDropDown.forEach((item) => { + // 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 = 0; + // tableDataRowAdd.sDepartName = item.sName; + // addStateSlave.slaveData.push(tableDataRowAdd); + // }); + // } + if (app) { + const { currentPane } = app; + if (currentPane) { + const temp = addStateSlave.slaveData.find(item => + item.sName === app.currentPane.sName + ) + if (temp && bEditClick!=='update') { + addStateSlave.slaveSelectedRowKeys = [ temp.sId ]; + this.setState({ + initSId: temp.sId + }) + } else if (temp && bEditClick === 'update') { + /* 修改后 选中行不要消失 */ + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + addStateSlave.slaveSelectedRowKeys = slaveSelectedRowKeys; + } + + } + } + } + } + let addStateSlave1 = {}; + if (!commonUtils.isEmptyObject(slave1Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave1Config); + addStateSlave1 = await this.props.handleGetDataSet({ + name: 'slave1', configData: slave1Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + + let addStateSlave0 = {}; + if (!commonUtils.isEmptyObject(slave0Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave0Config); + addStateSlave0 = await this.props.handleGetDataSet({ + name: 'slave0', configData: slave0Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + + if (commonUtils.isNotEmptyArr(addStateSlave0.slave0Data)) { + addStateSlave0.slave0SelectedRowKeys = [addStateSlave0.slave0Data[0].sId]; + } + + + // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave0) && commonUtils.isNotEmptyArr(addStateSlave0.slave0Data)) { + // let slave0DelData = [] + // addStateSlave0.slave0Data.forEach((item) => { + // item.handleType = 'del'; + // slave0DelData.push(item); + // }); + // addStateSlave0.slave0Data = []; + // + // let sWorkCenterNameDropDown; + // const allTableData = {}; + // const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWorkCenterName'); + // if (master1Index > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[master1Index]); + // sWorkCenterNameDropDown = sqlDropDownData.dropDownData; + // console.log(sWorkCenterNameDropDown); + // sWorkCenterNameDropDown.forEach((item) => { + // 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; + // tableDataRowAdd.sDepartName = item.sName; + // item.sDepartName = item.sName; + // addStateSlave0.slave0Data.push(item); + // }) + // } + // } + } + + let addStateSlave2 = {}; + if (!commonUtils.isEmptyObject(slave2Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave2Config); + addStateSlave2 = await this.props.handleGetDataSet({ + name: 'slave2', configData: slave2Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, + }); + } + let addStateSlave3 = {}; + if (!commonUtils.isEmptyObject(slave3Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave3Config); + addStateSlave3 = await this.props.handleGetDataSet({ + name: 'slave3', configData: slave3Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, + }); + } + let addStateSlave4 = {}; + if (!commonUtils.isEmptyObject(slave4Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave4Config); + addStateSlave4 = await this.props.handleGetDataSet({ + name: 'slave4', configData: slave4Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, + }); + } + let addStateSlave5 = {}; + if (!commonUtils.isEmptyObject(slave5Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave5Config); + addStateSlave5 = await this.props.handleGetDataSet({ + name: 'slave5', configData: slave5Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + let addStateSlave6 = {}; + if (!commonUtils.isEmptyObject(slave6Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave6Config); + addStateSlave6 = await this.props.handleGetDataSet({ + name: 'slave6', configData: slave6Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + let addStateSlave7 = {}; + if (!commonUtils.isEmptyObject(slave7Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave7Config); + addStateSlave7 = await this.props.handleGetDataSet({ + name: 'slave7', configData: slave7Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + let addStateSlave8 = {}; + if (!commonUtils.isEmptyObject(slave8Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave8Config); + addStateSlave8 = await this.props.handleGetDataSet({ + name: 'slave8', configData: slave8Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + let addStateSlave9 = {}; + if (!commonUtils.isEmptyObject(slave9Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave9Config); + addStateSlave9 = await this.props.handleGetDataSet({ + name: 'slave9', configData: slave9Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + let addStateSlave10 = {}; + if (!commonUtils.isEmptyObject(slave10Config)) { + const conditonValues = this.handleGetSqlConditionValues(slave10Config); + addStateSlave10 = await this.props.handleGetDataSet({ + name: 'slave10', configData: slave10Config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + } + + let addState = {}; + if (commonUtils.isNotEmptyArr(slaveChildConfigArr)) { + for (let i = 0; i < slaveChildConfigArr.length; i++) { + const { name, config } = slaveChildConfigArr[i]; + const conditonValues = this.handleGetSqlConditionValues(config); + const returnData = await this.props.handleGetDataSet({ + name, configData: config, condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, isWait: true, + }); + addState = { ...addState, ...returnData }; + } + } + + this.props.onSaveState({ + pageLoading: false, ...addStateSlave, ...addStateSlave0, ...addStateSlave1, ...addStateSlave2, ...addStateSlave3, ...addStateSlave4, + ...addStateSlave5, ...addStateSlave6, ...addStateSlave7, ...addStateSlave8, ...addStateSlave9, ...addStateSlave10, + ...addState, + }); + + }; + + handleGetData1 = async (configArr, bEditClick, other, isWait) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + + let addState = {}; + + const masterConfig = configArr[0][1]; + const conditonValues = this.handleGetSqlConditionValues(masterConfig) + await this.props.handleGetDataOne({ + name: 'master', + configData: masterConfig, + condition: { sSqlCondition: { ...conditonValues }, sId, pageSize: '', pageNum: '' }, + bEditClick, + }); + + for (let i = 1; i < configArr.length; i++) { + const item = configArr[i]; + const [name, config] = item; + if (commonUtils.isNotEmptyObject(config) && config.sSqlStr !== "noQuery") { + const conditonValues = this.handleGetSqlConditionValues(config); + let returnData = await this.props.handleGetDataSet({ + name, + configData: config, + condition: { sSqlCondition: { ...conditonValues, sParentId: sId } }, + isWait: true, + }); + if(commonUtils.isNotEmptyObject(returnData)) { + returnData = JSON.parse(JSON.stringify(returnData)) + } + const defaultSelectedRowKeys = []; + + if (commonUtils.isNotEmptyObject(returnData)) { + const data = returnData[`${name}Data`]; + if (commonUtils.isNotEmptyArr(data)) { + if (name === 'slave0Child1' && commonUtils.isNotEmptyArr(addState.slaveSelectedRowKeys)) { + const iSlaveIndex = addState.slaveData.findIndex(item => item.sId === addState.slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + const iControlIndex = data.findIndex(item => item.sProductCardId === addState.slaveData[iSlaveIndex].sBomId && item.sCombinedMemo.includes(addState.slaveData[iSlaveIndex].sProductNo)); + if (iControlIndex > -1) { + defaultSelectedRowKeys.push(data[iControlIndex].sId); + } + } + } else { + defaultSelectedRowKeys.push(data[0].sId); + } + } + } + + addState = { ...addState, ...returnData, [`${name}SelectedRowKeys`]: defaultSelectedRowKeys }; + if (other?.type !== 'init') { + addState.bRefreshTime = new Date().getTime(); + delete addState.slave0Child1SelectedRowKeys; + if(!bEditClick) { + delete addState.slaveSelectedRowKeys; /* 非加载、修改模式下 不重置从表选中 */ + } + } + addState.processCardUpdate = true; + } + } + + if(isWait){ + return addState; + } else { + this.props.onSaveState(addState); + } + + } + + // 额外加载表格 + handleGetTableData = async (props, sGrdName) => { + const { formData, currentId, queryConfigArr, dataRelationJson } = props; + const sId = currentId !== undefined ? currentId : ""; + const config = formData.find(item => item.sGrd === sGrdName); + if (config) { + const name = sGrdName; + let addState = {}; + if (config.sSqlStr !== "noQuery") { + const conditonValues = this.handleGetSqlConditionValues(config); + addState = + (await props.handleGetDataSet({ + name, + configData: config, + condition: { + sSqlCondition: { ...conditonValues, sParentId: sId } + }, + isWait: true + })) || {}; + } else { + const { sTbName } = config; + const iIndex = queryConfigArr.findIndex( + item => item[1].sTbName === sTbName + ); + if (iIndex !== -1) { + addState.dataRelationJson = { + ...dataRelationJson, + [name]: queryConfigArr[iIndex][0] + }; + } + } + addState[`${name}Config`] = config; + addState[`${name}Column`] = commonFunc.getHeaderConfig(config); + addState[`${name}PageSize`] = + commonUtils.isNotEmptyNumber(config.iPageSize) && config.iPageSize !== 0 + ? config.iPageSize + : commonConfig.pageSize; + props.onSaveState(addState); + } + }; + + + // 获取sqlCondition值 + handleGetSqlConditionValues = (config) => { + let conditonValues = {}; + const { sSqlCondition } = config; + if (commonUtils.isNotEmptyObject(sSqlCondition)) { + const tableName = sSqlCondition.split('.')[0]; + if (tableName === 'master') { + conditonValues = this.props.getSqlCondition(config, 'master', this.props.masterData); + } else { + let tableDataRow = {}; + const selectedRowKeys = this.props[`${tableName}SelectedRowKeys`]; + const tableData = this.props[`${tableName}Data`] || []; + if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isNotEmptyArr(tableData)) { + tableDataRow = tableData.find(item => item.sId === selectedRowKeys[0]) || {}; + } else { + tableDataRow = tableData[0] || {}; + } + conditonValues = this.props.getSqlCondition(config, tableName, tableDataRow); + } + } + + const { app = {} } = this.props; + const { currentPane = {} } = app; + const { sSqlConditionValues = {} } = currentPane; + return { ...sSqlConditionValues, ...conditonValues }; + } + + + /* 获取表数据 */ + handleGetMemoData = async (slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + const addStateSlave = slaveConfig ? await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slaveConfig), sParentId: sId } }, isWait: true, + }) : ''; + const addStateSlave0 = slave0Config ? await this.props.handleGetDataSet({ + name: 'slave0', configData: slave0Config, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slave0Config), sParentId: sId } }, + }) : ''; + const addStateSlave1 = slave1Config ? await this.props.handleGetDataSet({ + name: 'slave1', configData: slave1Config, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slave1Config), sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave2 = slave2Config ? await this.props.handleGetDataSet({ + name: 'slave2', configData: slave2Config, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slave2Config), sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave3 = slave3Config ? await this.props.handleGetDataSet({ + name: 'slave3', configData: slave3Config, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slave3Config), sParentId: sId } }, isWait: true, + }) : ''; + const addStateslave4 = slave4Config ? await this.props.handleGetDataSet({ + name: 'slave4', configData: slave4Config, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(slave4Config), sParentId: sId } }, isWait: true, + }) : ''; + // addStateProcess.processData = this.sortData(addStateControl.controlData, addStateProcess.processData); + this.props.onSaveState({ + pageLoading: false, + ...addStateSlave, + ...addStateSlave0, + ...addStateSlave1, + ...addStateslave2, + ...addStateslave3, + ...addStateslave4, + + }); + }; + /* 获取单张表数据 */ + handleGetOneMemoData = (memoName, memoConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + if (commonUtils.isNotEmptyObject(sId)) { /* 解决detail数据没有问题 */ + this.props.handleGetDataSet({ + name: memoName, configData: memoConfig, condition: { sSqlCondition: { ...this.handleGetSqlConditionValues(memoConfig), sParentId: sId } }, + }); + } + }; + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, token, + } = this.props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + 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 = commonFunc.getDefaultData(masterConfig); + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + /* 新增产品/印件,如果是newRecord过来的,则要获取关联的客户信息 */ + if (this.props.app.currentPane.newRecordRelation !== undefined) { + const addStata = this.props.app.currentPane.newRecordRelation; + if (commonUtils.isNotEmptyObject(addStata) && commonUtils.isNotEmptyObject(addStata.sCustomerId)) { + masterData.sCustomerId = addStata.sCustomerId; + masterData.sCustomerNo = addStata.sCustomerNo; + masterData.sCustomerName = addStata.sCustomerName; + /* newRecord新增产品,客户不可修改 */ + const ssCustomerNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerName'); + if (ssCustomerNameIndex > -1) { + masterConfig.gdsconfigformslave[ssCustomerNameIndex].iTag = 1; + } + } + } + let slaveData = []; + let slave1Data = []; + let slave0Data = []; + let slave2Data = []; + let slave3Data = []; + let slave4Data = []; + + // const slaveTotal = []; + // const tableDataTotal = {}; + 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) }; + masterData.tGetPayDate = commonBusiness.getGeyPayDate(masterData); + + if (sModelsType === 'semigoodsStock/matchbill') { + const sConfigformId = commonUtils.isEmpty(copyTo.config[0]) ? '' : copyTo.config[0].sParentId; + const sControlName = copyTo.name; + const sSqlCondition = { sProductId: copyTo.slaveData[0].sProductId, sId: copyTo.masterData.sId }; + const condition = { sConfigformId, sControlName, sSqlCondition }; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfo/?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master)) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if(salveAssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + const newSid = commonUtils.createSid(); + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + } + + if(slave0AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + } + + if(slave1AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + const newSid = commonUtils.createSid(); + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = newSid; + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + } + + if(slave2AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + const newSid = commonUtils.createSid(); + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = newSid; + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + } + + if(slave3AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + const newSid = commonUtils.createSid(); + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = newSid; + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + } + + if(slave4AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + const newSid = commonUtils.createSid(); + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = newSid; + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } + } else { + this.props.getServiceError(dataReturn); + } + } else if(commonUtils.isNotEmptyArr(copyTo.config) && copyTo.config.filter(item => item.sControlName && item.sControlName.includes('TmpInfoBySql')).length> 1){ + const sTmpInfoConfig = copyTo.config.filter(item => item.sControlName && item.sControlName.includes('TmpInfoBySql'))[0]; + const sControlName = sTmpInfoConfig.sControlName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? '' : sTmpInfoConfig.sParentId; + if (commonUtils.isNotEmptyArr( copyTo.slaveData)) { + const sRowData = copyTo.slaveData; + const condition = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { + masterData = {...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo)}; + } + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + const newSid = commonUtils.createSid(); + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 + if(salveDetailAssignField) { + slaveRow = {...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo)}; + } else if(salveAssignField) { + slaveRow = {...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo)}; // 取赋值字段 + } + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = {...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo)}; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + const newSid = commonUtils.createSid(); + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 + slave1Row = {...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo)}; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = newSid; + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + const newSid = commonUtils.createSid(); + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 + slave2Row = {...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo)}; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = newSid; + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + const newSid = commonUtils.createSid(); + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 + slave3Row = {...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo)}; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = newSid; + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + const newSid = commonUtils.createSid(); + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 + slave4Row = {...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo)}; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = newSid; + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } else { + this.props.getServiceError(dataReturn); + } + } else { + message.error('请正确配置参数!'); + } + } else { /* 走copyTo数据源 */ + const returnData = { + masterData : copyTo.masterData, + slave : commonUtils.isNotEmptyArr(copyTo.slaveData) ? copyTo.slaveData : [], + slave0 : commonUtils.isNotEmptyArr(copyTo.slave0Data) ? copyTo.slave0Data : [], + slave1 : commonUtils.isNotEmptyArr(copyTo.slave1Data) ? copyTo.slave1Data : [], + slave2 : commonUtils.isNotEmptyArr(copyTo.slave2Data) ? copyTo.slave2Data : [], + slave3 : commonUtils.isNotEmptyArr(copyTo.slave3Data) ? copyTo.slave3Data : [], + slave4 : commonUtils.isNotEmptyArr(copyTo.slave4Data) ? copyTo.slave4Data : [], + }; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master)) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if(salveAssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + const newSid = commonUtils.createSid(); + let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + } + + if(slave0AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + } + + if(slave1AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + const newSid = commonUtils.createSid(); + let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = newSid; + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + } + if(slave2AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + const newSid = commonUtils.createSid(); + let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = newSid; + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + } + + if(slave3AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + const newSid = commonUtils.createSid(); + let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = newSid; + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + } + + if(slave4AssignField) { + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + const newSid = commonUtils.createSid(); + let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = newSid; + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + } + + } + } + // /* 剔除订单到收款单新增空行 */ + let bUpload = false; + /* 图片文件不要新增空行 */ + if(commonUtils.isNotEmptyObject(configNew.slaveConfig)) { + const filterData = configNew.slaveConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnUpload') && item.bVisible); + if(commonUtils.isNotEmptyArr(filterData) && filterData.length > 0) { + bUpload = true; + } + } + if (slaveData.length === 0 && !bUpload && commonUtils.isNotEmptyObject(configNew.slaveConfig) && this.props.sModelsType !== 'cashier/receipt' && this.props.sModelsType !== 'cashier/payment') { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + const newSid = commonUtils.createSid(); + const tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData, { newSid }); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + slaveData.push(tableDataRowAdd); + } + if(commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { + /* 重新塞入copyTo.masterData */ + copyTo.masterData = masterData; + } + + if(commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { + /* 重新塞入copyTo.masterData */ + copyTo.masterData = masterData; + } + + const { slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; + if (commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.bGrdVisible) { + const bEmptyAddLine = slaveConfig.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slaveData = []; + } + } + + if (commonUtils.isNotEmptyObject(slave0Config) && slave0Config.bGrdVisible) { + const bEmptyAddLine = slave0Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave0Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave1Config) && slave1Config.bGrdVisible) { + const bEmptyAddLine = slave1Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave1Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave2Config) && slave2Config.bGrdVisible) { + const bEmptyAddLine = slave2Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave2Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave3Config) && slave3Config.bGrdVisible) { + const bEmptyAddLine = slave3Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave3Data = []; + } + } + + if (commonUtils.isNotEmptyObject(slave4Config) && slave4Config.bGrdVisible) { + const bEmptyAddLine = slave4Config.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { + slave4Data = []; + } + } + + const { slavePagination = {} } = this.props; + const slavePaginationNew = { + ...slavePagination, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: 999, + }; + masterData.enabled = true; + + const state = { + masterData, + slaveData, + slavePagination: slavePaginationNew, + slaveTotal: [], + slaveSelectedRowKeys: [], + slave1SelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + slave0Data, + slave1Data, + slave2Data, + slave3Data, + slave4Data, + processSelectedRowKeys: [], + controlSelectedRowKeys: [], + slave0SelectedRowKeys: [], + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + /** 点击修改按钮操作 */ + handleEdit = async () => { + const { sModelsId } = this.props; + const { + masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, currentId, app, masterData, dispatch, formRoute, formData, configArr, + } = this.props; + const addState ={}; + let addReturn ={}; + const specialModelsIds = [ + "12710101117055581460260", + "12710101117120232946320", + "12710101117120233168500", + "12710101117170330526240", + "12710101117190388194910", + "12710101117190384474730", + "12710101117190384977550", + "12710101117190385855980" + ]; + + // 可以多人同时操作 + if (specialModelsIds.includes(sModelsId)) { + if (formRoute === '/indexPage/commonCostomTabBill') { + if(commonUtils.isNotEmptyArr(configArr)) { + const queryConfigArr = configArr.filter(([_, config]) => config.sSqlStr !== 'noQuery'); + addState.queryConfigArr = queryConfigArr; + addReturn = this.handleGetData1(queryConfigArr,undefined, { type: 'init'}, true); + const materialsConfigArr = formData.filter(item => item.sTbName === 'salsalesordermaterials' && + (item.showName === "工序物料" || item.showName === "全部材料")) || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(materialsConfigArr)) { + this.handleGetTableData(this.props, 'materials'); + } + const revisionArr = formData.filter(item => item.sTbName === 'salsalesorderrevision' && item.showName === "改版处") || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(revisionArr)) { + this.handleGetTableData(this.props, 'revision'); + } + const dataRelationJson = {}; + const relateRelationJson = {}; + const noQueryConfigArr = configArr.filter(([_, config]) => config.sSqlStr === 'noQuery'); + noQueryConfigArr.forEach(item => { + const [name, config] = item; + const { sTbName } = config; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + const childMaterialsInfoArr = formData.filter(item => item.sSqlStr === 'noQuery' && item.showName.includes("物料信息") )|| []; + if(commonUtils.isNotEmptyArr(childMaterialsInfoArr)) { + relateRelationJson['slave3Child0'] = 'materials'; + } + /* 上批数据逻辑处理 */ + const childNoQueryConfigArr = formData.filter(item => item.sSqlStr === 'noQuery' && (item.showName.includes("对比") || item.showName.includes("上批"))) || []; + if(commonUtils.isNotEmptyArr(childNoQueryConfigArr)) { + childNoQueryConfigArr.forEach(itemChild => { + const { sTbName } = itemChild; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + const arr = itemChild.sGrd.split('_'); + const num = arr.length > 0 && Number(arr[1]) -1; + const name = arr[0]+'Child'+ num +'Child0'; + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + } + addState.dataRelationJson = dataRelationJson; + addState.relateRelationJson = relateRelationJson; + addState.processCardUpdate = true; + // addState.slave3Child0InfoData = []; + } + }else { + await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, 'update'); + } + this.props.onSaveState({ enabled: true, loading: false , ...addReturn, ...addState }); + return; + } + + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoUpdateByNoMakePerson')); + this.props.onSaveState({ + loading: false, + }); + 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; + } + const reset = (ws, config1) => { + clearTimeout(config1.timerServer); + clearTimeout(config1.serverTimer); + start(ws, config1); + }; + const start = (ws, config1) => { + config1.timerServer = setTimeout(() => { + const message = { sendFrom: this.props.app.userinfo.sId, connectTest: 'test' }; // param 存放其它参数 keyName 需要放入Redis的数据key,keyValue 需要放入Redis的数据key 的值 + ws.send(JSON.stringify(message)); + }, config1.timeoutServer); + }; + setTimeout(() => { + this.props.app.webSocket.onmessage = async (msg) => { + reset(this.props.app.webSocket, commonConfig); + 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 (rtmsg.action === 'update') { + if (formRoute === '/indexPage/commonCostomTabBill') { + if(commonUtils.isNotEmptyArr(configArr)) { + const queryConfigArr = configArr.filter(([_, config]) => config.sSqlStr !== 'noQuery'); + addState.queryConfigArr = queryConfigArr; + addReturn = this.handleGetData1(queryConfigArr,undefined, { type: 'init'}, true); + const materialsConfigArr = formData.filter(item => item.sTbName === 'salsalesordermaterials' && + (item.showName === "工序物料" || item.showName === "全部材料")) || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(materialsConfigArr)) { + this.handleGetTableData(this.props, 'materials'); + } + const revisionArr = formData.filter(item => item.sTbName === 'salsalesorderrevision' && item.showName === "改版处") || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(revisionArr)) { + this.handleGetTableData(this.props, 'revision'); + } + const dataRelationJson = {}; + const relateRelationJson = {}; + const noQueryConfigArr = configArr.filter(([_, config]) => config.sSqlStr === 'noQuery'); + noQueryConfigArr.forEach(item => { + const [name, config] = item; + const { sTbName } = config; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + const childMaterialsInfoArr = formData.filter(item => item.sSqlStr === 'noQuery' && item.showName.includes("物料信息") )|| []; + if(commonUtils.isNotEmptyArr(childMaterialsInfoArr)) { + relateRelationJson['slave3Child0'] = 'materials'; + } + /* 上批数据逻辑处理 */ + const childNoQueryConfigArr = formData.filter(item => item.sSqlStr === 'noQuery' && (item.showName.includes("对比") || item.showName.includes("上批"))) || []; + if(commonUtils.isNotEmptyArr(childNoQueryConfigArr)) { + childNoQueryConfigArr.forEach(itemChild => { + const { sTbName } = itemChild; + const iIndex = queryConfigArr.findIndex(item => item[1].sTbName === sTbName); + if (iIndex !== -1) { + const arr = itemChild.sGrd.split('_'); + const num = arr.length > 0 && Number(arr[1]) -1; + const name = arr[0]+'Child'+ num +'Child0'; + dataRelationJson[name] = queryConfigArr[iIndex][0]; + } + }); + } + addState.dataRelationJson = dataRelationJson; + addState.relateRelationJson = relateRelationJson; + addState.processCardUpdate = true; + // addState.slave3Child0InfoData = []; + } + }else { + await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, 'update'); + } + this.props.onSaveState({ enabled: true, loading: false , ...addReturn, ...addState }); + } else if (this.props.app.webSocket.homeAction) { + this.props.app.webSocket.homeAction(msg); + } + }; + this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null); + }, timValue); + }; + + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + const { masterData, gdsformconst } = this.props; + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + message.warning(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName); + return ''; + } + /** 数据审核 */ + await this.dataAudit(flag); + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + message.destroy(); + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, slave2Config, slave1Config, token, sModelsType, slave4Config, slave0Config, slave3Config, slaveData, orderDetailConfig, + } = 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 : '', + }, + }; + let clearFlag = false; + if (sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder') { + for (const item of slaveData) { + if (commonUtils.isNotEmptyStr(item.sProductInfo)) { + clearFlag = true; + break; + } + } + } + /* 数据审核 */ + 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, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if ((sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder3') && !commonUtils.isEmpty(slave3Config)) { + await this.handleGetMemoData(slave4Config, slave0Config, slave3Config); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + if (clearFlag && (sModelsType === 'sales/salesOrder' || sModelsType === 'manufacture/workOrder')) { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } + 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(); + // } + message.error(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 { + message.success(check + returnData.msg); + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + message.error(outData[0].sReturn); + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + message.success(BtnCancelExamine + returnData.msg); + } + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + } + return true; + } + }; + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, + sModelsId, + currentId, + masterData, + masterConfig, + slaveConfig, + slave1Config, + billnosetting, + app, + // eslint-disable-next-line no-unused-vars + sModelsType, + // eslint-disable-next-line no-unused-vars + slave0Config, + // eslint-disable-next-line no-unused-vars + slave2Config, + // eslint-disable-next-line no-unused-vars + slave3Config, + // eslint-disable-next-line no-unused-vars + slave4Config, + dispatch, + formData, + } = this.props; + const { userinfo } = app; + const { copyTo } = app.currentPane; + 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 sIdArray = []; + if(commonUtils.isNotEmptyArr(copyTo.slaveData)) { + const { slaveData } = copyTo; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + } + /* 处理只有单主表解锁问题 */ + if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { + sIdArray.push(masterData.sSrcSlaveId); + } + + 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, + }); + // 保存后更新panes,currentPane的checkedId,防止浏览器刷新时重新又变成新增。 + const iPaneIndex = app.panes.findIndex(item => item.key === app.currentPane.key); + app.panes[iPaneIndex].checkedId = masterData.sId; + app.currentPane.checkedId = masterData.sId; + dispatch({ type: 'app/savePanesAndCurrentPane', payload: { panes: app.panes, currentPane: app.currentPane } }); + + /* 新记录时,关闭后能自动带值 */ + const callBackRecord = this.props.app.currentPane.newRecordMethod; + if (callBackRecord !== undefined) { + const sId = masterData.sId === undefined ? masterData.sid : masterData.sId;/* sId */ + /* 回调 传[新增的数据sId] */ + if (this.props.app.currentPane.newRecordMethod !== undefined) { + this.props.app.currentPane.newRecordMethod(sId); + } + } + + if (billnosetting.bAutoCheck) { + await this.handleAudit(1); + } else { + await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + const materialsConfigArr = formData.filter(item => item.sTbName === 'salsalesordermaterials' && + (item.showName === "工序物料" || item.showName === "全部材料")) || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(materialsConfigArr)) { + this.handleGetTableData(this.props, 'materials'); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } + this.props.onSaveState({ + loading: false, + }); + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + /** toolbar校验保存 */ + handleValidateSave = () => { + this.form.validateFields(async (err) => { + /* 验证通过与不通过走不同的流程 */ + if (err) { /* 验证失败 */ + /* 直接渲染显示错误提示 */ + for (const key of Object.keys(err)) { + message.error(err[key].errors[0].message); + } + this.props.onSaveState({ + loading: false, + }); + } else { /* 验证成功 */ + const { + masterConfig, + slaveConfig, + slaveData, + slaveDelData, + app, + sModelsType, + slave0Config, + slaveColumn, + slave0Data, + slave0Column, + slave0DelData, + slave1Config, + slave1Column, + slave1Data, + slave1DelData, + slave2Config, + slave2Column, + slave2Data, + slave2DelData, + slave3Config, + slave3Column, + slave3Data, + slave3DelData, + slave4Config, + slave4Column, + slave4Data, + slave4DelData, + } = this.props; + let { masterData } = this.props; + // if (commonUtils.isEmptyArr(slaveData) && !sModelsType.includes('sales/salesInvoice') && !sModelsType.includes('purchase/purchaseInvoice') && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' + // && !sModelsType.includes('cashier/receipt') && !sModelsType.includes('cashier/payment') && !sModelsType.includes('purchase/purchaseEnquiry') || !commonBusiness.validateTable(slave0Config, materialsData, this.props)) { + // message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! + // this.props.onSaveState({ + // loading: false, + // }); + // return; + // } + if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props) || !commonBusiness.validateTable(slave1Config, slave1Data, this.props) || + (!commonBusiness.validateTable(slave0Config, slave0Data, this.props)) || !commonBusiness.validateTable(slave2Config, slave2Data, this.props) || + !commonBusiness.validateTable(slave3Config, slave3Data, this.props) || !commonBusiness.validateTable(slave4Config, slave4Data, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + + /* 根据配置校验 表格内容是否为空 */ + if(commonUtils.isNotEmptyObject(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(); + const tableConfigName = key; + const tableDataName = tablename +'Data'; + const tableConfig = this.props[tableConfigName]; + const tableData = this.props[tableDataName]; + if(tableConfig && tableConfig.bNotCanEmpty){ + if(commonUtils.isEmptyArr(tableData) ){ + message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 表格不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + } + } + } + } + + // && sModelsType === 'materialsStock/productionmaterialsadjust' + if (commonUtils.isNotEmptyArr(slaveData)) { + let flag = true; + for (const item of slaveData) { + if (sModelsType === 'materialsStock/productionmaterialsadjust') { + if (commonUtils.isNotEmptyStr(item.sWareHouseId)) { + if (masterData.sWareHouseId === item.sWareHouseId) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameMateMaterialWarehouse'));/* 材料调拨原仓库与调入仓库不能一致 */ + flag = false; + break; + } + } + } + // {"paper":"纸张","finished":"成品","half_finished":"半成品","accessories":"辅料","corrugated":"瓦楞"} + if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sMaterialsName}"的规格 */ + flag = false; + break; + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if (commonUtils.isNotEmptyArr(slaveData) && sModelsType === 'materialsStock/productionmaterials') { + const flag = await this.handleEleMaterialsStoreCurrQty(slaveData); + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'purchase/purchaseEnquiry') { + delete masterData.maxBillNo; + } + if (sModelsType === 'cashier/receipt' || sModelsType === 'cashier/payment') { + let flag = true; + if (masterData.sSettlementId === 'bank') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sBankAccount)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsBankAccount'));/* 收/付款条件为银行时,银行、银行账号为必填项 */ + flag = false; + } + } + if (masterData.sSettlementId === 'bill') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sInvoiceNo)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsInvoiceNo'));/* 收/付款条件为票据时,银行、票据号码为必填项 */ + flag = false; + } + } + let dslaveTotalMoney = 0; + for (const item of slaveData) { + if (item.handleType !== 'del') { + if (commonUtils.isNotEmptyNumber(item.dTotalMoney)) { + dslaveTotalMoney += item.dTotalMoney; + } + } + } + const dPmoney = this.props.getFloatNum('dProductMoney'); + dslaveTotalMoney = commonUtils.convertFixNum(dslaveTotalMoney, dPmoney);/* 取系统设定小数位 */ + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyNumber(masterData.dTotalMoney) && commonUtils.isNotEmptyNumber(masterData.dAdvanceMoney) && commonUtils.convertFixNum(masterData.dTotalMoney - masterData.dAdvanceMoney, dPmoney) !== dslaveTotalMoney) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameTotalMoney'));/* 主从表总金额不一致 */ + flag = false; + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + if (slaveConfig && commonUtils.isNotEmptyArr(slaveColumn)) { + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + } + if (slave0Config && commonUtils.isNotEmptyArr(slave0Column) && slave0Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave0', slave0Config.sTbName, slave0Data, slave0DelData)); + } + if (slave1Config && commonUtils.isNotEmptyArr(slave1Column) && slave1Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave1', slave1Config.sTbName, slave1Data, slave1DelData)); + } + if (slave2Config && commonUtils.isNotEmptyArr(slave2Column) && slave2Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave2', slave2Config.sTbName, slave2Data, slave2DelData)); + } + if (slave3Config && commonUtils.isNotEmptyArr(slave3Column) && slave3Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave3', slave3Config.sTbName, slave3Data, slave3DelData)); + } + if (slave4Config && commonUtils.isNotEmptyArr(slave4Column) && slave4Config.sTbName !== 'sysbillcheckresult') { + data.push(commonBusiness.mergeData('slave4', slave4Config.sTbName, slave4Data, slave4DelData)); + } + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }); + } + }); + }; + + /* 切换作废状态 */ + handleOkChangeInvaild = async (props) => { + const { + sModelsId, masterData, masterConfig, handleType, + } = props; + const value = { + sClientType: '1', + sId: [masterData.sId], + sTableName: masterConfig.sTbName, + handleType, + }; + const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; + const { data } = await commonServices.postValueService(props.app.token, value, url); + if (data.code === 1) { + message.success(data.msg); + masterData.bInvalid = handleType === 'toVoid'; /* 作废状态 */ + props.onSaveState({ masterData }); + /* 审核(消审)后刷新跳转路由数据(commonList)的数据 */ + if (props.app.currentPane.refresh !== undefined) { + props.app.currentPane.refresh(); + } + } else { + props.getServiceError(data); + } + }; + + /* 作废、取消作废的公用函数 */ + handleInvalid = (obj) => { + const props = { ...this.props, ...this.state, ...obj }; + const onOkInvaild = this.handleOkChangeInvaild; + confirm({ + title: obj.title, + onOk() { + onOkInvaild(props); + }, + onCancel() { + }, + }); + }; + + /* 单据页上查下查跳转页面 */ + handleSearchUpDown = async (sId, sActiveId) => { + /* 待用数据声明 */ + const { dispatch, sTabId } = this.props; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + sParentId: sTabId, /* 父页面编号 */ + checkedId: sId, + }, + }); + }; + + /* 上查下查三级菜单 在上一条下一条时必须清除searchUpDownData */ + handleSearchUpDownThird = async (upDownKey) => { + /* 待用数据声明 */ + const { masterConfig, searchUpDownData: searchUpDownDataOld } = this.props; + /** 获取sqlCondition参数:{sSqlCondition,sId} */ + const searchUpDownData = commonUtils.isEmptyObject(searchUpDownDataOld) ? {} : { ...searchUpDownDataOld }; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const searchUpDownConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(`${upDownKey}`)); + for (const item of searchUpDownConfig) { + if (commonUtils.isEmptyArr(searchUpDownData[item.sControlName])) { + searchUpDownData[item.sControlName] = await this.getSearchUpDownData(item); + } + } + this.props.onSaveState({ searchUpDownData }); + } + }; + + /* 单据页复制到 */ + handleCopyTo = async (name, sActiveId) => { + /* 待用数据声明 */ + const { + dispatch, masterConfig, slave1Data, masterData, slaveData, slave2lData, slave0Data, slave3lData, slave4lData, sModelsId, app, + token, + formRoute, + } = this.props; + + // 从表有sCopyToCondition则不能复制,并提示 + if (commonUtils.isNotEmptyArr(slaveData) && name.includes('.')) { + const sCopyToConditionIndex = slaveData.findIndex(item => item.sCopyToCondition); + if (sCopyToConditionIndex !== -1) { + message.warning(slaveData[sCopyToConditionIndex].sCopyToCondition); + return; + } + } + + const copyTo = {}; + const copyToConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(name)); + copyTo.name = name; + copyTo.config = copyToConfig; + copyTo.masterData = masterData; + copyTo.slaveData = slaveData; + copyTo.slave1Data = slave1Data; + copyTo.slave0Data = slave0Data; + copyTo.slave2lData = slave2lData; + copyTo.slave3lData = slave3lData; + copyTo.slave4lData = slave4lData; + + let sId = ''; + if (!commonUtils.isEmpty(slaveData)) { + sId = slaveData[0].sId; + } + + if (commonUtils.isNotEmptyObject(name) && name.toLowerCase().includes('btncopyto.tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */ + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(copyToConfig) ? '' : copyToConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(name) ? name : 'BtnCopyTo.TmpInfoBySql'; + const sRowData = masterData; + 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 = name.replace('BtnCopyTo.','').trim(); + if(key === masterName) { + copyTo.masterData = returnData[key][0]; + }else { + copyTo[sName] = returnData[key]; + } + } + if (commonUtils.isNotEmptyArr(copyTo.masterData) && Array.isArray(copyTo.masterData)) { + copyTo.masterData = copyTo.masterData[0]; + } + } + } else { + this.props.getServiceError(dataReturn); + } + } + + const tbSuffix = ''; + const dataUrl = `${commonConfig.server_host}bill/billCopyToCheck/?sModelsId=${sModelsId}&sActiveId=${sActiveId}&tbSuffix=${tbSuffix}&sName=${formRoute}`; + const values = { sSlaveId: sId }; + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ + loading: false, + }); + // eslint-disable-next-line no-underscore-dangle + const _this = this; // 解决confirm中this指向问题; + if (dataReturn.dataset.rows.length > 0) { + confirm({ + title: commonFunc.showMessage(app.commonConst, 'beUsedToNew'), /* 单据已存在,是否填写新单据 */ + onOk() { + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + copyTo, + }, + }); + }, + onCancel() { + }, + }); + } else { + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + copyTo, + }, + }); + } + } + + + }; + + handleCopyFrom = async (obj) => { + // const { + // slaveData, masterData, masterConfig, + // } = this.props; + /* 根据sql条件进行判断 */ + // const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName === obj.copyFromKey); + // if (commonUtils.isNotEmptyArr(buttonConfig) && commonUtils.isNotEmptyObject(buttonConfig[0].sSqlCondition) && buttonConfig[0].sSqlCondition.includes('slave.')) { + // if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isEmptyStr(slaveData[0].sCustomerId) && commonUtils.isEmptyStr(masterData.sCustomerId)) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'pleaseInputCustomer'));/* 请填写客户 */ + // return; + // } + // } + this.copyName = obj.name; + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${obj.copyFromSActiveId}?sModelsId=${obj.copyFromSActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + if (obj.copyFromKey.includes('customizeFormInfo')) { /* 复制从自定义窗体 */ + this.props.onSaveState({ copyFromChooseVisible: true, copyFromChooseData: returnData, copyFromKey: obj.copyFromKey }); + } else { + this.props.onSaveState({ productProcessInfoChooseVisible: true, productProcessInfoChooseData: returnData, productProcessInfoCopyFromKey: obj.copyFromKey }); + } + } else { + this.props.getServiceError(dataReturn); + } + }; + + /* 上一条、下一条、首条、末条 */ + handleSearchData = async (handleType) => { + const { + sModelsId, app, currentIndexFlag, currentPageNo, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, formData, + } = this.props; + const { currentPane, token } = app; + const { + pages, sFilterOrderBy, bFilter, sListFormmasterId, currentIndex, + } = currentPane; + let currentPosition = currentIndexFlag ? currentPageNo : commonUtils.isEmptyObject(pages) ? 1 : (((pages.current - 1) * commonConfig.pageSize) + Number.parseInt(currentIndex, 10)) + 1; + if (currentIndex === undefined) { + currentPosition = 1; + } + if (handleType === 'first') { + currentPosition = 1; + } else if (handleType === 'end') { + currentPosition = pages.total; + } + if (!commonUtils.isNum(currentPosition)) { // 如果是列表直接点增加,就跳到第一条去 + currentPosition = 1; + } + + const value = { + sClientType: '1', sFilterOrderBy, bFilter, sListFormmasterId, currentPosition, handleType, iCountSum: pages.total, + }; + const url = `${commonConfig.server_host}business/getBusinessDataByIndex?sModelsId=${sModelsId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + /* 接收返回值 */ + /* 成功的话刷新页面(同步主表和从表数据),不成功就弹出错误提示 */ + if (data.code === 1) { + /* 数据查询成功 */ + const returnData = data.dataset.rows[0]; + this.props.onSaveState({ + currentIndexFlag: true, + currentPageNo: returnData.currentPosition, + currentId: returnData.sId, + searchUpDownData: {}, + slaveSelectedRowKeys: [], + }); + this.handleGetData1(this.props.queryConfigArr, undefined, { type: 'init' }); + // this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + const materialsConfigArr = formData.filter(item => item.sTbName === 'salsalesordermaterials' && + (item.showName === "工序物料" || item.showName === "全部材料")) || []; + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(materialsConfigArr)) { + this.handleGetTableData(this.props, 'materials'); + } + return true; + } else { /* 失败 */ + this.props.getServiceError(data); + return false; + } + }; + + /* 取消操作 */ + handleCancel = (obj) => { + /* 待用数据声明 */ + const { + currentId, masterConfig, slaveConfig, slave1Config, app, masterData, + slave0Config, slave2Config, slave3Config, slave4Config, formData, configArr + } = this.props; + const that = this; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const onGetDataOk = this.handleGetData; + const onGetData1 = this.handleGetData1; + const onGetTableData = this.handleGetTableData; + const onSaveStateOk = this.props.onSaveState; + const { copyTo } = app.currentPane; + const materialsConfigArr = formData.filter(item => item.sTbName === 'salsalesordermaterials' && + (item.showName === "工序物料" || item.showName === "全部材料")) || []; + let queryConfigArr = []; + if(commonUtils.isNotEmptyArr(configArr)) { + queryConfigArr = configArr.filter(([_, config]) => config.sSqlStr !== 'noQuery'); + } + const addState ={}; + confirm({ + title: obj.title, + onOk() { + if(commonUtils.isNotEmptyArr(queryConfigArr)) { + addState.queryConfigArr = queryConfigArr; + onGetData1(queryConfigArr,undefined, { type: 'init'}); + addState.processCardUpdate = true; + addState.bReset = true; + // addState.slave3Child0InfoData = []; + } + // onGetDataOk(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + const bChanged = commonBusiness.handleGetChanged(that.props) ; + if(bChanged) { + /* 获取物料数据 */ + if(commonUtils.isNotEmptyArr(materialsConfigArr)) { + onGetTableData(that.props, 'materials'); + } + } + onSaveStateOk({ enabled: false, ...addState }); + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData } = copyTo; + const sIdArray = []; + if(commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + } + /* 处理只有单主表解锁问题 */ + if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { + sIdArray.push(masterData.sSrcSlaveId); + } + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); + }, + onCancel() { + }, + }); + }; + + /* 删除 */ + handleDel = (obj) => { + const props = { ...this.props, ...this.state }; + const onOkDel = this.handleOkDel; + confirm({ + title: obj.title, + onOk() { + onOkDel(props); + }, + onCancel() { + }, + }); + }; + + /* 确定要删除 */ + handleOkDel = async (props) => { + /* 数据参数 */ + const { + token, sModelsId, sModelsType, masterConfig, masterData, slaveConfig, slave1Config, orderDetailConfig, app, formData, + } = props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoDelByNoMakePerson')); + return; + } + } + } + const value = { + sClientType: '1', + data: { + sMasterTable: masterConfig.sTbName, + sId: [masterData.sId], + }, + }; + const sSlaveTable = []; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + sSlaveTable.push({ + tableName: slaveConfig.sTbName, + relationName: 'sParentId', + }); + } + if (commonUtils.isNotEmptyObject(slave1Config)) { + sSlaveTable.push({ + tableName: slave1Config.sTbName, + relationName: 'sParentId', + }); + } + if (sModelsType === 'purchase/purchaseOrder') { + let orderDetailConfig ={}; + let orderDetailConfigArr = formData.filter(item => item.bGrd && item.sTbName === 'purpurchaseorderDetail'); + if(commonUtils.isNotEmptyArr(orderDetailConfigArr)) { + orderDetailConfig = orderDetailConfigArr[0]; + } + + if(commonUtils.isNotEmptyObject(orderDetailConfig)) { + sSlaveTable.push({ + tableName: orderDetailConfig.sTbName, + relationName: 'sParentId', + }); + } + + } + value.sSlaveTable = sSlaveTable; + const { sBillNo, sId } = masterData || {}; + const url = `${commonConfig.server_host}business/delMasSlaBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + /* 数据删除成功 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleDelDataSuccess(props); + } else { /* 失败 */ + this.props.getServiceError(data); + } + }; + + /* 数据删除成功跳转到新路由即pane */ + handleDelDataSuccess = (props) => { + const { app } = props; + let { panes, currentPane } = app; + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ + panes = panes.filter(pane => pane.key !== currentPane.key); + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ + currentPane = panes[panes.length - 1]; + this.props.onRemovePane(panes, currentPane); + }; + + /** 添加表格空行 */ + handleTableAdd = (name, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + masterData, masterConfig, sModelsType, app, + } = this.props; + const addState ={}; + let { [`${name}Data`]: tableData , [`${name}Config`]: tableConfig } = this.props; + tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; + const tableDataRow = this.props.onDataRowAdd(name, true); + /* 添加行的业务处理拿出去 */ + if (sModelsType.includes('sales/')) { + if (commonUtils.isEmptyStr(masterData.sCustomerId)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => ((item.sName === 'sCustomerId' || item.sName === 'sCustomerNo' || item.sName === 'sCustomerName') && item.bVisible)); + if (iIndex > -1) { + const { showName } = masterConfig.gdsconfigformslave[iIndex]; + message.warn(showName + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空 + return; + } + } + } + tableDataRow.sWareHouseId = masterData.sWareHouseId; + tableDataRow.sWareHouseNo = masterData.sWareHouseNo; + tableDataRow.sWareHouseName = masterData.sWareHouseName; + tableDataRow.sLocationId = masterData.sLocationId; + tableDataRow.sLocationNo = masterData.sLocationNo; + tableDataRow.sLocationName = masterData.sLocationName; + tableDataRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + if(commonUtils.isNotEmptyObject(tableConfig) && tableConfig.showName === '非标材料') { /* 非标材料数据插入到材料表 */ + tableDataRow.sNons = '非标'; + const { slave0Child1Data:controlData, slaveData, slaveSelectedRowKeys, currentProductCardId }= this.props; + let { materialsData }= this.props; + if(commonUtils.isEmptyArr(materialsData)) { + materialsData = []; + } + const currentSelectedSlaveData = this.props.currentSelectedSlaveData || this.props.slaveData[0]; + let controlSeletedRowKeys = []; + if(commonUtils.isNotEmptyObject(currentSelectedSlaveData) && commonUtils.isNotEmptyArr(controlData)) { + let iSlaveIndex = 0; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + } + const iIndex = controlData.findIndex(controlItem => { + const sCombinedMemoArr = JSON.parse(controlItem.sCombinedMemo); + const sCombinedMemoFilterArr = sCombinedMemoArr.filter(item => item.dCombineQty > 0 && item.sProductNo === slaveData[iSlaveIndex].sProductNo); + return controlItem.sProductCardId === slaveData[0].sBomId && + commonUtils.isNotEmptyArr(sCombinedMemoFilterArr) + }); + // const iIndex = controlData.findIndex(item => item.sProductCardId === slaveRow.sBomId); + if(iIndex > -1) { + controlSeletedRowKeys = [controlData[iIndex].sId]; + console.log('部件表',[controlData[iIndex].sId]); + } + } + if(commonUtils.isNotEmptyArr(controlSeletedRowKeys)) { + tableDataRow.sControlId = commonUtils.isNotEmptyArr(controlSeletedRowKeys) ? controlSeletedRowKeys[0] : ''; + tableDataRow.sProductCardId = slaveData[0].sBomId; + materialsData.push(tableDataRow); + }else { + message.error('请选择对应的部件!'); + } + addState.materialsData = materialsData; + + } else if(commonUtils.isNotEmptyObject(tableConfig) && name !=='materialsChild' && name === 'slave3Child0Child1') { /* 新增替代料 */ + const { slave3Child0SelectedRowKeys: tableSelectedRowKeys, currentProductCardId, materialsData : tableInfo =[] } = this.props; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择替代料的父级!'); + return; + } + name = 'materails'; + const tableDataRow = this.props.onDataRowAdd(name, true); + tableDataRow.sParentMaterialsId = tableSelectedRowKeys[0]; + tableDataRow.sProductCardId = currentProductCardId; + tableInfo.push(tableDataRow); + addState.materialsData = tableInfo; + } else if(commonUtils.isNotEmptyObject(tableConfig) && tableConfig.showName === '更换材料') { /* 新增替代料 */ + const { slave3Child0SelectedRowKeys: tableSelectedRowKeys, currentProductCardId, materialsData : tableInfo =[] } = this.props; + if (this.props.bSecondMainMaterials) { + message.error('二级材料不能增加替代料!'); + return; + } + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择替代料的父级!'); + return; + } + const sOriginalName = name; + name = 'materials'; + const tableDataRow = this.props.onDataRowAdd(name, true); + tableDataRow.sParentMaterialsId = tableSelectedRowKeys[0]; + tableDataRow.sNons = '替代料'; + tableDataRow.sProductCardId = currentProductCardId; + tableInfo.push(tableDataRow); + addState.materialsData = tableInfo; + addState[`${sOriginalName}SelectedRowKeys`]=[tableDataRow.sId]; + } else if(commonUtils.isNotEmptyObject(tableConfig) && tableConfig.showName === '工单物资评审') { /* 树形 */ + const { slave3Child0SelectedRowKeys: tableSelectedRowKeys, slave3Child0Data : tableSum =[] } = this.props; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择数据!'); + } + const iIndex = tableSum.findIndex(item => tableSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + tableDataRow.sMaterialsId = tableSum[iIndex].sMaterialsId; + tableDataRow.sMaterialsName= tableSum[iIndex].sMaterialsName; + tableDataRow.sMaterialsStyle = tableSum[iIndex].sMaterialsStyle; + } + }else if(name === 'slave0Child1' && tableConfig.showName === '合格率评审'){ + const { slaveData ,slaveSelectedRowKeys, currentSelectType,currentProductCardId, currentProductTechnologyVer}= this.props; + let slaveRow = {}; + if(commonUtils.isNotEmptyArr(slaveData)) { + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + slaveRow = slaveData[iIndex]; + } + } + + } + + + tableDataRow.sProductTechnologyVer = currentProductTechnologyVer; + tableDataRow.sProductCardId = currentProductCardId; + tableDataRow.sProductCardNo = currentProductTechnologyVer; + tableDataRow.currentSelectType = currentSelectType; + tableDataRow.sSlaveId = commonUtils.isNotEmptyObject(slaveRow) ? slaveRow.sId : ''; + tableDataRow.iOrder = currentSelectType.includes('preVersion') ? tableData.length + 1000 : tableData.length+10; + + if(commonUtils.isNotEmptyObject(slaveRow)) { + const { sId, sProductNo, dProductQty, dCombineQty, dFactProductQty,sCombinePartsName }= slaveRow; + const tableCombineSelectedData =[]; + const jsonObj = {}; + jsonObj.sId = sId; + jsonObj.sProductNo = sProductNo; /* 产品编号 */ + jsonObj.dCombineQty = commonUtils.isNotEmptyNumber(dCombineQty) ? dCombineQty : 1; /* 排版数 */ + jsonObj.dProductQty = commonUtils.isNotEmptyNumber(dProductQty) ? dProductQty : 0; /* 生产数 */ + jsonObj.dFactProductQty = commonUtils.isNotEmptyNumber(dFactProductQty) ? dFactProductQty : 0; /* 实际生产数 */ + jsonObj.sCombinePartsName = sCombinePartsName; /* 合版部件名称 */ + tableCombineSelectedData.push(jsonObj); + const sCombinedMemo = commonUtils.isNotEmptyArr(tableCombineSelectedData) ? JSON.stringify(tableCombineSelectedData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + tableDataRow.sCombinedMemo =commonUtils.isNotEmptyObject(sCombinedMemo)? sCombinedMemo: '合版信息'; + } + } else if(name === 'slave0Child3') { /* 改版处 */ + const { currentProductCardId }= this.props; + const slaveRow = this.handleGetSelectedData(this.props, 'slave'); + tableDataRow.sProductCardId = currentProductCardId; + tableDataRow.sSlaveId = slaveRow?.sId; + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId], ...addState }); + } + }; + + /** 复制 */ + handleTableCopy = (name, isWait) => { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSrcSlaveId = ''; + tableDataRow.sSrcId = ''; + tableDataRow.dSrcQty = null; + if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsMemo)) { + tableDataRow.sMaterialsMemo = ''; + } + if (commonUtils.isNotEmptyObject(tableDataRow.sProcessMemo)) { + tableDataRow.sProcessMemo = ''; + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); + } + } + } + } + }; + + handleTableCopyTo = (name, toname, isWait) => { + const { + [`${name}Data`]: tableData, [`${toname}Data`]: tablePersonData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + if (commonUtils.isNotEmptyObject(toname)) { + tablePersonData.push(tableDataRow); + this.props.onSaveState({ [`${toname}Data`]: tablePersonData, [`${toname}Pagination`]: { total: tablePersonData.length, current: 9999 } }); + message.success('操作成功!'); + } else { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); + } + } + } + } + } + }; + + /** 复制全部 */ + handleTableCopyAll = (name, isWait) => { + const { + slaveData, controlData, slaveSelectedRowKeys, slave0Data, + } = this.props; + let { processData } = this.props; + if (name === 'slave') { + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of slaveSelectedRowKeys) { + const slaveDataIndex = slaveData.findIndex(item => item.sId === sId); + if (slaveDataIndex > -1) { + const slaveDataRow = JSON.parse(JSON.stringify(slaveData[slaveDataIndex])); + slaveDataRow.sId = commonUtils.createSid(); + slaveDataRow.handleType = 'add'; + slaveDataRow.key = slaveDataRow.sId; + slaveData.push(slaveDataRow); + if (commonUtils.isNotEmptyArr(controlData)) { + controlData.filter(itemControl => itemControl.sSlaveId === sId).forEach((itemControl) => { + const tableDataRow = JSON.parse(JSON.stringify(itemControl)); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSlaveId = slaveDataRow.sId; + controlData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + slave0Data.filter(item => item.sControlId === itemControl.sId && item.sType !== '2').forEach((item) => { + const slave0Row = JSON.parse(JSON.stringify(item)); + slave0Row.sId = commonUtils.createSid(); + slave0Row.handleType = 'add'; + slave0Row.sControlId = tableDataRow.sId; + slave0Row.sPartsName = tableDataRow.sPartsName; + slave0Row.sSlaveId = tableDataRow.sSlaveId; + slave0Data.push(slave0Row); + }); + processData.filter(item => item.sControlId === itemControl.sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processRow.sSlaveId = tableDataRow.sSlaveId; + processData.push(processRow); + }); + processData = this.sortData(controlData, processData); + }); + } + if (commonUtils.isNotEmptyArr(slave0Data)) { /* 订单从表复制全部 复制成品材料 */ + slave0Data.filter(item => item.sSlaveId === sId && item.sType === '2').forEach((slave0Item) => { + const slave0Row = JSON.parse(JSON.stringify(slave0Item)); + slave0Row.handleType = 'add'; + slave0Row.sId = commonUtils.createSid(); + slave0Row.sSlaveId = slaveDataRow.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(processData)) { /* 订单从表复制全部 复制成品工序 */ + processData.filter(item => item.sSlaveId === sId && item.sType === '3').forEach((processItem) => { + const processRow = JSON.parse(JSON.stringify(processItem)); + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = slaveDataRow.sId; + processData.push(processRow); + }); + } + } + this.props.onSaveState({ + slaveData, + [`${name}Pagination`]: { total: slaveData.length, current: 9999 }, + controlData, + slave0Data, + processData, + }); + } + } + } else if (name === 'control') { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + slave0Data.filter(item => item.sControlId === sId && item.sType !== '2').forEach((item) => { + const slave0Row = JSON.parse(JSON.stringify(item)); + slave0Row.sId = commonUtils.createSid(); + slave0Row.handleType = 'add'; + slave0Row.sControlId = tableDataRow.sId; + slave0Row.sPartsName = tableDataRow.sPartsName; + slave0Data.push(slave0Row); + }); + processData.filter(item => item.sControlId === sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processData.push(processRow); + }); + processData = this.sortData(tableData, processData); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}Pagination`]: { total: tableData.length, current: 9999 }, + slave0Data, + processData, + }); + } + } + } + } + } + }; + + handleCloseProductProcessInfoChooseModal = () => { + this.props.onSaveState({ + productProcessInfoChooseVisible: false + }) + } + + singlePQtyChange = (tableDataRow) => { + const bZfZf = tableDataRow.iPrintMode === 2; // 正反版 + const bSample = tableDataRow.dSumPQty >= 4; // 样本 + tableDataRow.iPrintModePo = tableDataRow.iPrintMode <= 2 ? 2 : tableDataRow.iPrintMode === 3 ? 0 : -1; + + if (bSample) { + if (tableDataRow.dSinglePQty > 0) { + tableDataRow.dPlateQty = Math.ceil(tableDataRow.dSumPQty / tableDataRow.dSinglePQty); + } + + if (bZfZf && (tableDataRow.iPrintModePo === 2)) { // 双面样本,正反 + if (tableDataRow.dPlateQty < 2) { // 不管建议放正自翻版了,点方式什么是什么 + tableDataRow.dPlateQty = 2; + tableDataRow.iStick = Math.ceil(commonUtils.isNull(tableDataRow.dPlateQty, 0) / 2); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty / 2); + } + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + } + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + if (tableDataRow.iStick > 0 && tableDataRow.dSinglePQty > 0) { + tableDataRow.dMachineQty = commonUtils.convertFixNum((commonUtils.isNull(tableDataRow.dPartsQty, 0) * commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty / tableDataRow.iStick, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } else { + tableDataRow.iStick = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + if (bZfZf && tableDataRow.iPrintModePo === 2) { + tableDataRow.dPlateQty = 2; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + + if (tableDataRow.dSinglePQty > 0) { + if (tableDataRow.iPage > 1) { // 笔记本 用 非样本 来做, 倍率是每页都一样才可以用 原先 /2 是指页数, 现在直接按张数 + tableDataRow.dMachineQty = commonUtils.convertFixNum((tableDataRow.dPartsQty * tableDataRow.iPage) / tableDataRow.dSinglePQty, 0); + } else { + tableDataRow.dMachineQty = commonUtils.convertFixNum(commonUtils.isNull(tableDataRow.dPartsQty, 0) / tableDataRow.dSinglePQty, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } + } + return tableDataRow; + }; + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, slaveConfig, slave0Data, slaveData, [`${name}Config`]: tableConfig, + } = this.props; + const { dNetMoney, dNetPrice } = app.decimals; + if (name === 'control' && sModelsType === 'sales/salesOrder') { + const { [`${name}Data`]: tableData, slave0Data: slave0DataOld, slave2Data: slave2DataOld } = 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 slave0Data = []; + const slave2Data = []; + slave0DataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + slave0Data.push(itemNew); + }); + slave2DataOld.forEach((item) => { + const itemNew = { ...item }; + if (itemNew.sControlId === sId) { + itemNew.sPartsName = tableDataRow.sPartsName; + } + slave2Data.push(itemNew); + }); + const slave0DataNew = this.sortData(tableData, slave0Data); + const slave2DataNew = this.sortData(tableData, slave2Data); + + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, slave0Data: slave0DataNew, slave2Data: slave2DataNew }); + } else if(commonUtils.isNotEmptyObject(tableConfig) && tableConfig.showName === '非标材料') { + const { materialsData } = this.props; + const addState = {}; + let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + if(commonUtils.isNotEmptyArr(materialsData)) { + const iMIndex = materialsData.findIndex(item => item.sId === tableDataRow.sId ); + if(iMIndex > -1) { + let { handleType } = materialsData[iMIndex]; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + materialsData[iMIndex] = {...materialsData[iMIndex], ...changeValue, handleType}; + } + addState.materialsData = materialsData; + } + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, ...addState }); + }else if(commonUtils.isNotEmptyObject(tableConfig) && (tableConfig.showName === '物料信息' )) { + name = 'materials'; + const { + [`${name}Data`]: tableData, + } = this.props; + const tableDataRow = await this.props.onDataChange('materials', sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData }); + }else if(commonUtils.isNotEmptyObject(tableConfig) && name !== 'materialsChild' && ( name === 'slave3Child0Child1' || tableConfig.showName === '更换材料')) { + name = 'materials'; + const { + [`${name}Data`]: tableData, masterData, slave3Child0SelectedRowKeys, + } = this.props; + let tableDataRow = await this.props.onDataChange('materials', sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + /* 各种金额,税额,价格计算 */ + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + if (sFieldName.includes('Qty')) { + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); + } + /* 叠加用量 */ + if(commonUtils.isEmptyArr(slave3Child0SelectedRowKeys)) { + message.error('请选择物料!'); + return; + } + let dAuxiliarySumQty = 0; + const filterData = tableData.filter(item => item.sParentMaterialsId && slave3Child0SelectedRowKeys.includes(item.sParentMaterialsId) && item.sNons === '替代料' + && item.sMaterialsType !== '2'); + if(commonUtils.isNotEmptyArr(filterData)) { + filterData.forEach(item => { + if(item.sId !== sId) { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + } else { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(tableDataRow.dAuxiliaryQty, 0), 2); + } + }); + const iFatherIndex = tableData.findIndex(item => slave3Child0SelectedRowKeys.includes(item.sId) ); + if(false && iFatherIndex > -1) { // 20240926 杭需求 替代料数量变化时,物料信息替代料数据不要变化,点击MRP计算后会自动带出 + const addState = {}; + addState.dReplaceStockAuxiliaryQty = dAuxiliarySumQty; + addState.handleType = commonUtils.isEmpty(tableData[iFatherIndex].handleType) ? 'update' : tableData[iFatherIndex].handleType; + tableData[iFatherIndex] ={...tableData[iFatherIndex], ...addState}; + } + } + + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData }); + } else if(commonUtils.isNotEmptyObject(tableConfig) && (tableConfig.showName === '生管评审' || tableConfig.showName === '子件信息') ) { + name = 'slave'; + const { + [`${name}Data`]: tableData, controlData, controlSelectedRowKeys, materials0Data, materials0SelectedRowKeys, + } = this.props; + const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData }); + } else if (name === 'materials1' || name === 'materials2' || name === 'materials3' || name === 'materialsChild' || name === 'materials1Child') { + name = 'materials'; + const { [`${name}Data`]: tableData} = this.props; + // let oldRowMap = {}; + // if(sFieldName === 'sInkBOM') { + // const iOldIndex = tableData.findIndex(item => item.sId === sId); + // if(iOldIndex > -1) { + // const tableDataOldRow = JSON.parse(JSON.stringify(tableData[iOldIndex])); + // oldRowMap ={ + // sInkBOMId : tableDataOldRow.sInkBOMId, + // sInkBOMsSlaveId : tableDataOldRow.sInkBOMsSlaveId, + // sInkBOMsMaterialsId : tableDataOldRow.sInkBOMsMaterialsId, + // sProcessTbId : tableDataOldRow.sProcessTbId, + // sProcessId : tableDataOldRow.sProcessId, + // sControlId : tableDataOldRow.sControlId, + // } + // } + // } + const tableDataRow = await this.props.onDataChange('materials', sFieldName, changeValue, sId, dropDownData, true); + if (tableDataRow === undefined) return; + // tableDataRow.oldRowMap = oldRowMap; + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData }); + } 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); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === sFieldName); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + 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; + } + // 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 slave0ReturnData = this.otherTableDel('slave0', tableSelectedRowKeys); + const slave2ReturnData = this.otherTableDel('slave2', tableSelectedRowKeys); + const slave3ReturnData = this.props.onDataRowDel('slave3', true, tableSelectedRowKeys); + this.props.onSaveState({ + ...slave0ReturnData, + ...slave2ReturnData, + ...slave3ReturnData, + }); + } + } 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, slave0Config, processConfig, + } = this.props; + let { controlData, slave0Data, processData } = this.props; + const sId = tableData[iIndex].sId; + const bCkxCopyFromTechnology = 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 slave0ReturnData = this.otherTableDel('slave0', controlSelectedData); + const processReturnData = this.otherTableDel('process', controlSelectedData); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData); + controlData = controlReturnData.controlData; + slave0Data = slave0ReturnData.slave0Data; + processData = processReturnData.processData; + this.props.onSaveState({ + ...slave0ReturnData, + ...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 copyToSlave0Config = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Slave0'.toLowerCase()); + const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[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; + const newSid = commonUtils.createSid(); + let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo, { newSid }); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + controlRow.handleType = 'add'; + controlRow.sId = newSid; + controlRow.sSlaveId = tableDataRow.sId; + controlRow.sParentId = masterData.sId; + controlData.push(controlRow); + + if (commonUtils.isNotEmptyArr(returnData.slave0Data)) { + returnData.slave0Data.filter(item => item.sControlId === controlItem.sId).forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sSlaveId = tableDataRow.sId; + slave0Row.sParentId = masterData.sId; + slave0Row.sControlId = controlRow.sId; + slave0Row.sPartsName = controlRow.sPartsName; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + returnData.processData.filter(item => item.sControlId === controlItem.sId).forEach((processItem) => { + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processData.push(processRow); + }); + } + }); + } + if (commonUtils.isNotEmptyArr(returnData.slave0Data)) { + // eslint-disable-next-line no-loop-func + returnData.slave0Data.filter(item => item.sType === '2').forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sSlaveId = tableDataRow.sId; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + // eslint-disable-next-line no-loop-func + returnData.processData.filter(item => item.sType === '3').forEach((processItem) => { + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processData.push(processRow); + }); + } + this.props.onSaveState({ controlData, slave0Data, 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.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; + } + // 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/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('semigoodsStock/')) { + 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; + if (commonUtils.isNotEmptyObject(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'); + } + } + + /* 在detail表(加工工序)中将每一个工序都填写单价,算出金额,几个工序金额应该汇总到slave表(回厂信息)最后一道工序金额中,并要自动算单价 */ + // /* 将改变数量、金额 汇总到slave0回厂信息表 */ + const iSlave0ProductIndex = slave0Data.findIndex(item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(',').includes(tableDataRow.sSrcSlaveId)); + if(iSlave0ProductIndex > -1) { + const addState ={}; + let dMaterialsProductMoneyAll = 0; + let dMaterialsProductPrice = 0; + const slaveORow = slave0Data[iSlave0ProductIndex]; + /* 合计该组金额 */ + const slaveFilterData = tableData.filter(item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(',').includes(item.sSrcSlaveId)); + if(commonUtils.isNotEmptyArr(slaveFilterData)) { + for (const one of slaveFilterData) { + if(one.sId === tableDataRow.sId) { + dMaterialsProductMoneyAll += tableDataRow.dMaterialsMoney; + } else { + dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); + } + } + } + // /* 更新数量 */ + // if(slaveORow.sCombineProcessIds){ + // const sFirstId =commonUtils.isNotEmptyArr(slaveORow.sCombineProcessIds.split(',')) ? slaveORow.sCombineProcessIds.split(',')[0] : '' ; /* 找到第一条 */ + // if(sFirstId === tableDataRow.sSrcSlaveId) { + // addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + // addState.dMaterialsQty = tableDataRow.dMaterialsQty; + // } + // } + + /* 更新数量(取同一部件,工序名称相同项数据的数量) */ + if(slaveORow.sCombineProcessIds){ + const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(','); + if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { + addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + addState.dMaterialsQty = tableDataRow.dMaterialsQty; + } + } + if(dMaterialsProductMoneyAll !==0) { + if(tableDataRow.dAuxiliaryQty !== 0 ) { + dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); + } + addState.dMaterialsMoney = dMaterialsProductMoneyAll; + addState.dMaterialsPrice = dMaterialsProductPrice; + } + addState.handleType = commonUtils.isEmpty(slave0Data[iSlave0ProductIndex].handleType) ? 'update' : slave0Data[iSlave0ProductIndex].handleType; + slave0Data[iSlave0ProductIndex] = { ...slave0Data[iSlave0ProductIndex], ... addState}; + slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney(app, masterData, slave0Data[iSlave0ProductIndex], 'Materials'); + } + this.props.onSaveState({ slave0Data, slaveData }); + } else if (sModelsType === 'outside/outsideprocess1' && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty')) { /* 工序发外 */ + tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials'); + } + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } + } + }; + + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + + otherCommonTableDel = (name, tableSelectedRowKeys, sKey) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = commonUtils.isNotEmptyArr(tableData) ? tableData.findIndex(item => item[sKey] === sId) : -1; + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item[sId] === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') { + if (commonUtils.isEmpty(sComputeId)) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName === 'dConversionQty' ? 'dConversionQty' : 'dAuxiliaryQty', 'dMaterialsQty'); + } else { + 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; + } + + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + const { + sModelsId, sModelsType, masterData: masterDataOld,app, masterConfig, slaveConfig, token, + } = this.props; + let { slaveData, slave0Data } = this.props; + const addState = {}; + const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew; + let bNewSlaveData = false; + + if ( sModelsType && (sModelsType.includes('sales/') || sModelsType.includes('productStock/')) && ( sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (commonUtils.isNotEmptyArr(slaveData)) { + // 从表有数据,请删除后修改客户!不能去掉 + if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { + bNewSlaveData = true; + } else { + message.warn(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', []); + } 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) { + message.error(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 === 'tDeliverDate') { + const slaveDataNew = []; + for (const item of slaveData) { + let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') && (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/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + let dMaterialsMoney = ''; + if (sModelsType && 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, + }); + console.log('sComputeId', sComputeId); + if (commonUtils.isNotEmptyObject(sComputeId)) { + dMaterialsMoney = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData: returnData.masterData, tableDataRow, sComputeId, + }); + console.log('dMaterialsMoney', dMaterialsMoney); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + } + // else { + // tableDataRow.dMaterialsPrice = 0; + // tableDataRow.dMaterialsMoney = 0; + // } + } + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', returnData.masterData, tableDataRow); + } + } else if (sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate') { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, `dN${models}Money`, returnData.masterData, tableDataRow); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) { + tableDataRow.sWareHouseId = changeValue.sWareHouseId; + tableDataRow.sWareHouseNo = changeValue.sWareHouseNo; + tableDataRow.sWareHouseName = changeValue.sWareHouseName; + tableDataRow.sLocationId = changeValue.sLocationId; + tableDataRow.sLocationNo = changeValue.sLocationNo; + tableDataRow.sLocationName = changeValue.sLocationName; + 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 }); + + if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') { + const slave0DataNew = []; + for (const item of slave0Data) { + let tableDataRow = { ...item }; + 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; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + slave0DataNew.push(tableDataRow); + } + addState.slave0Data = slave0DataNew; + } + } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (bNewSlaveData && commonUtils.isEmptyArr(slaveData)) { + const slaveDataNew = []; + const allTableData = {}; + allTableData.master = returnData.masterData; + const newSid = commonUtils.createSid(); + const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + 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 === 'sExpenseeName') { + let { slaveDelData, slave0DelData}= this.props; + const allTableData = {}; + allTableData.master = returnData.masterData; + const newCopyTo = {}; + newCopyTo.master = masterData; + const slaveDataNew = []; + const slave0DataNew = []; + if(commonUtils.isEmptyArr(slaveDelData)) { + slaveDelData = []; + } + if(commonUtils.isEmptyArr(slave0DelData)) { + slave0DelData = []; + } + //获取部门名称数据 + let sDepartNameDropDown; + const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sDepartName'); + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + if (masterIndex > -1) { + const config = masterConfig.gdsconfigformslave[masterIndex]; + const slaveAssignField = config.sAssignField || ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex], returnData.masterData); + sDepartNameDropDown = sqlDropDownData.dropDownData; + sDepartNameDropDown.forEach((item) => { + const newSid = commonUtils.createSid(); + let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + slaveDataNew.push(tableDataRowAdd); + }); + } + // 获取工作中心数据 + let sWorkCenterNameDropDown; + const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWorkCenterName'); + slave0Data.forEach((item) => { + item.handleType = 'del'; + slave0DelData.push(item); + }); + if (master1Index > -1) { + const config = masterConfig.gdsconfigformslave[master1Index]; + const slaveAssignField = config.sAssignField || ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[master1Index], returnData.masterData); + sWorkCenterNameDropDown = sqlDropDownData.dropDownData; + sWorkCenterNameDropDown.forEach((item) => { + const newSid = commonUtils.createSid(); + let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + slave0DataNew.push(tableDataRowAdd); + }) + } + addState.slaveData = slaveDataNew; + addState.slaveDelData = slaveDelData; + addState.slave0Data = slave0DataNew; + addState.slave0DelData = slave0DelData; + } + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') || sModelsType.includes('semigoodsStock/') ? 'Product' : 'Materials'; + if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('semigoodsStock/')) { + const masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models); + returnData = { ...returnData, masterData }; + } + + /* 将改变数量、金额 汇总到slave0回厂信息表 */ + if (commonUtils.isNotEmptyArr(addState.slaveData) && commonUtils.isNotEmptyArr(addState.slave0Data)) { + const { dNetPrice } = app.decimals; + for (const tableDataRow of addState.slaveData) { + const iSlave0ProductIndex = addState.slave0Data.findIndex(item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(',').includes(tableDataRow.sSrcSlaveId)); + if(iSlave0ProductIndex > -1) { + const addState1 = {}; + let dMaterialsProductMoneyAll = 0; + let dMaterialsProductPrice = 0; + const slaveORow = slave0Data[iSlave0ProductIndex]; + /* 合计该组金额 */ + const slaveFilterData = addState.slaveData.filter(item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(',').includes(item.sSrcSlaveId)); + if(commonUtils.isNotEmptyArr(slaveFilterData)) { + for (const one of slaveFilterData) { + if(one.sId === tableDataRow.sId) { + dMaterialsProductMoneyAll += commonUtils.isNull(tableDataRow.dMaterialsMoney, 0); + } else { + dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); + } + } + } + + /* 更新数量(取同一部件,工序名称相同项数据的数量) */ + if(slaveORow.sCombineProcessIds){ + const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(','); + if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { + addState1.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; + addState1.dMaterialsQty = tableDataRow.dMaterialsQty; + } + } + if(dMaterialsProductMoneyAll !==0) { + if(tableDataRow.dAuxiliaryQty !== 0) { + dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); + } + addState1.dMaterialsMoney = dMaterialsProductMoneyAll; + addState1.dMaterialsPrice = dMaterialsProductPrice; + } + addState1.handleType = commonUtils.isEmpty(addState.slave0Data[iSlave0ProductIndex].handleType) ? 'update' : addState.slave0Data[iSlave0ProductIndex].handleType; + addState.slave0Data[iSlave0ProductIndex] = { ...addState.slave0Data[iSlave0ProductIndex], ... addState1}; + addState.slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney(app, masterData, addState.slave0Data[iSlave0ProductIndex], 'Materials'); + } + } + } + + if (isWait) { + return { ...returnData, ...addState }; + } else { + this.props.onSaveState({ ...returnData, ...addState }); + return returnData; + } + } + + handleBtnPrint =async (sActiveId, checked, eKey) => { + const { + app, sModelsId, masterConfig, masterData, slaveConfig, sModelsType, reportData, menuChildData, formRoute, controlConfig, + } = this.props; + if (sModelsType === 'manufacture/workOrder') { + this.handleUpdateProduction(); + } + const { token } = app; + const queryFilter = {}; + queryFilter[masterConfig.sId] = { sId: masterData.sId }; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; + } + const queryFilterJson = JSON.stringify(queryFilter); + // const masterDataJson = JSON.stringify(masterData); + /* 拿到打印报表名称 */ + let printReportName = 'report'; + let printCustomerReportName = 'report'; + if (commonUtils.isNotEmptyArr(reportData)) { + const iIndex = reportData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printReportName = reportData[iIndex].sReportName; + } + } + if (commonUtils.isNotEmptyArr(menuChildData)) { + const iIndex = menuChildData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printCustomerReportName = menuChildData[iIndex].sReportName; + } + } + let urlPrint = ''; + if (formRoute === '/indexPage/printlabel') { + if (commonUtils.isNotEmptyObject(masterData) && masterData.dTrunkQty !== undefined && masterData.dFractionQty !== undefined && masterData.dPackQty !== undefined) { // masterData中必填的三个字段 + // const param = masterDataJson; + /* 把masterData放在数组中 */ + const ListData = []; + ListData.push(masterData); + const param = JSON.stringify(ListData); + if (eKey.indexOf('BtnPrint.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + this.handleOpenPost(urlPrint, param); + } else { + const dTrunkQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dTrunkQty'); + const dFractionQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dFractionQty'); + const dPackQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dPackQty'); + if (masterData.dTrunkQty === undefined && commonUtils.isNotEmptyObject(dTrunkQtyName)) { + message.error(`${dTrunkQtyName[0].showName} 必填项!`); + } else if (masterData.dFractionQty === undefined && commonUtils.isNotEmptyObject(dFractionQtyName)) { + message.error(`${dFractionQtyName[0].showName} 必填项!`); + } else if (masterData.dPackQty === undefined && commonUtils.isNotEmptyObject(dPackQtyName)) { + message.error(`${dPackQtyName[0].showName} 必填项!`); + } + return; + } + } else if (eKey.indexOf('BtnPrint.') > -1) { + let { controlSelectedRowKeys } = this.props; + /* 不出现选择框,则打印全部;出现选择框,则打印勾选的 */ + let bisMutiSelect = false; + if (commonUtils.isNotEmptyObject(controlConfig) && commonUtils.isNotEmptyArr(controlConfig.gdsconfigformslave)) { + const filterData = controlConfig.gdsconfigformslave.filter(item => item.sControlName === 'bisMutiSelect'); + if (commonUtils.isNotEmptyArr(filterData)) { + bisMutiSelect = filterData[0].bVisible; + } + } + if (bisMutiSelect === false || bisMutiSelect === undefined) { + controlSelectedRowKeys = []; + } + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}&sControlIds=${commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys : []}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; + } + if (formRoute !== '/indexPage/printlabel') { + window.open(`${encodeURI(`${urlPrint}&queryFilter=${queryFilterJson}`)}&token=${encodeURIComponent(token)}`); + } + }; + + handleOpenPost= (url, params) => { + const newWin = window.open(); + let formStr = ''; + formStr = `
` + + `` + + ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + handleUpdateProduction = async () => { + const { sModelsId, masterData } = this.props; + const { sBillNo, sId } = masterData || {}; + const dataUrl = `${commonConfig.server_host}business/addUpdateDelBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + const value = { + data: [{ + sTable: 'mftworkordermaster', + column: [{ handleType: 'update', sId: masterData.sId, bProduction: 1 }], + }], + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, dataUrl)).data; + if (dataReturn.code === 1) { + message.success(dataReturn.msg); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleTitleChange = (name, slavePagination) => { + this.props.onSaveState({ [`${name}Pagination`]: slavePagination }); + }; + + /* 工单、工艺卡、报价单控制表回带图片地址 */ + handleFilfileManageOk= async (controlFilfileData, controlFilfileDelData, sSrcSlaveId) => { + const { + controlData: tableData, app, sModelsId, token, controlConfig, + } = this.props; + if (commonUtils.isNotEmptyObject(sSrcSlaveId)) { + if (commonUtils.isNotEmptyArr(controlFilfileDelData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureDelData = controlFilfileDelData.filter(item => item.sType === '3'); /* 开料 */ + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureDelData)) { + controlsMaterialsPictureDelData.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMaterialsPicturePath) { + addState.sMaterialsPicturePath = ''; + } + }); + } + const sMachinePictureDelPath = controlFilfileDelData.filter(item => item.sType === '4'); /* 联版 */ + if (commonUtils.isNotEmptyArr(sMachinePictureDelPath)) { + sMachinePictureDelPath.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMachinePicturePath) { + addState.sMachinePicturePath = ''; + } + }); + } + if (commonUtils.isNotEmptyObject(addState) && (addState.sMachinePicturePath === '' || addState.sMaterialsPicturePath === '')) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (addState.sMaterialsPicturePath === '') { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (addState.sMachinePicturePath === '') { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + if (commonUtils.isNotEmptyArr(controlFilfileData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureData = controlFilfileData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureData)) { + addState.sMaterialsPicturePath = commonUtils.isNotEmptyObject(controlsMaterialsPictureData[0].sPicturePath) ? controlsMaterialsPictureData[0].sPicturePath : ''; /* 上机默认取上传图片的第一条 */ + } + const controlsMachinePictureData = controlFilfileData.filter(item => item.sType === '4'); + if (commonUtils.isNotEmptyArr(controlsMachinePictureData)) { + addState.sMachinePicturePath = commonUtils.isNotEmptyObject(controlsMachinePictureData[0].sPicturePath) ? controlsMachinePictureData[0].sPicturePath : ''; + } + if (commonUtils.isNotEmptyObject(addState)) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (commonUtils.isNotEmptyObject(addState.sMaterialsPicturePath) && addState.sMaterialsPicturePath !== sMaterialsPicturePath) { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (commonUtils.isNotEmptyObject(addState.sMachinePicturePath) && addState.sMachinePicturePath !== sMachinePicturePath) { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ tableData }); + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + } else { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); + } + } + // 收付款分摊 + handleShare = () => { + /* 分摊 */ + const { masterData: masterDataOld, slaveData: slaveDataOld, app } = this.props; + const { dNetMoney } = app.decimals; + const masterData = { ...masterDataOld }; + const slaveData = []; + slaveDataOld.forEach((item) => { + slaveData.push({ ...item }); + }); + + const dTotalMoney = masterData.dTotalMoney !== undefined ? masterData.dTotalMoney : 0; + let minusSum = 0; /* 负数求和 */ + let minusRoundingSum = 0; /* 负数舍入求和 */ + const minusData = []; /* 负数集 */ + let positiveSum = 0; /* 正数求和 */ + let positiveRoundingSum = 0; /* 正数舍入求和 */ + const positiveData = []; /* 正数集 */ + slaveData.forEach((child) => { + child.dTotalMoney = 0; + child.dRoundingMoney = commonUtils.isNum(child.dRoundingMoney) ? child.dRoundingMoney : 0; + if (child.dBalanceMoney < 0) { + minusSum -= Math.abs(child.dBalanceMoney); + minusRoundingSum -= Math.abs(child.dRoundingMoney); + minusData.push(child); + } else { + positiveSum += child.dBalanceMoney; + positiveRoundingSum += child.dRoundingMoney; + positiveData.push(child); + } + }); + if (commonUtils.convertFixNum(((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney, dNetMoney) <= 0) { + /* 够扣 */ + positiveSum -= minusRoundingSum; + positiveSum -= positiveRoundingSum; + positiveSum -= dTotalMoney; /* 去除分摊金额 */ + if (positiveSum >= 0) { + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + if (positiveSum <= dBalanceMoney) { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(positiveSum) - (dRoundingMoney * 1), dNetMoney); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + break; + } else { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveSum -= dBalanceMoney - (dRoundingMoney * 1); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + } + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + if (positiveData[i].handleType === undefined) { + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + } else { + /* 有预收 */ + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + minusData[i].dRoundingMoney = 0; + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + masterData.dAdvanceMoney = commonUtils.convertFixNum(Math.abs(positiveSum), dNetMoney); + masterData.bAdvance = true; + } + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + this.props.onSaveState({ masterData, slaveData }); + } else if (((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney > 0) { + /* 不够扣情况 */ + minusSum -= minusRoundingSum; + minusSum -= positiveRoundingSum; + minusSum -= dTotalMoney; /* 去除分摊金额 */ + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + if (Math.abs(minusSum) <= dBalanceMoney) { + positiveData[i].dTotalMoney = commonUtils.convertFixNum(Math.abs(minusSum) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + break; + } else { + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusSum = -(Math.abs(minusSum) - (dBalanceMoney * 1) - (dRoundingMoney * 1)); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + this.props.onSaveState({ masterData, slaveData }); + } + // let allTotalMoney = 0; + // let allRoundingMoney = 0; + // slaveData.forEach((child) => { + // if (child.dTotalMoney !== undefined) { + // allTotalMoney += child.dTotalMoney * 1; + // } + // if (child.dRoundingMoney !== undefined) { + // allRoundingMoney += child.dRoundingMoney * 1; + // } + // }); + // this.props.onSaveState({ allTotalMoney, allRoundingMoney }); + return masterData; + }; + + handleImport = async () => { + const { + sModelsId, sModelsType, masterConfig, masterData, slaveData, slaveDelData: slaveDelDataOld, app, + } = this.props; + if (commonUtils.isEmpty(masterData.sWareHouseId)) { + message.error(commonFunc.getConfigShowName(masterConfig, 'sWareHouseId') + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空! + return; + } + let url; + if (sModelsType.includes('productStock/')) { + url = `${commonConfig.server_host}eleProductStock/getEleProductStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; + } else { + url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; + } + + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push({ ...item }); + }); + returnData.forEach((item) => { + item.handleType = 'add'; + item.sParentId = masterData.sId; + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleOutTemplate = async () => { + const { + token, formData, + } = this.props; + const slaveConfig = formData.filter(item => item.sGrd === 'importTemplate')[0]; + window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${slaveConfig.sId}&token=${token}`; + }; + handleDesignFunction = () => { + this.props.onSaveState({ visibleStatement: true }); + }; + handleBatchPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchPriceUpdateData, visibleBatchPriceUpdate: true }); + } + }; + /** 按钮操作事件 */ + handleButtonClick = async (name) => { + if (['BtnOut'].includes(name)) { /* 导出模版数据 */ + this.handleOut(); + return; + } + if (name === 'BtnDesignFunction') { + this.handleDesignFunction(); + } else if (name === 'BtnBatchPriceUpdate') { + this.handleBatchPriceUpdate(); + } + const { sModelsType, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; + if (name === 'BtnRefresh') { + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); + } else if (sModelsType.includes('cashier/') || sModelsType.includes('sales/') || sModelsType.includes('purchase/')) { + // 收付款分摊 + if (name === 'BtnShare') { + this.handleShare(); + } + if (sModelsType.includes('sales/') && name === 'BtnOutTemplate') { + this.handleOutTemplate(); + } + } else if (sModelsType.includes('materialsStock/') || sModelsType.includes('productStock/')) { + if (name === 'BtnImport') { + this.handleImport(); + } + } else if(name && name.includes('BtnTempSql')) { /* 通过BtnTempSql按钮 自定义调用Sql 并将数据回填到界面上 */ + const { masterConfig, slaveConfig, sModelsId, token } = this.props; + let { masterData,slaveData } = this.props; + const slave0Data = []; + const slave1Data = []; + const slave2Data = []; + const slave3Data = []; + const slave4Data = []; + const copyTo ={}; + copyTo.name = name; + copyTo.slaveData = slaveData; + const buttonConfigArr = masterConfig && masterConfig.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('BtnTempSql')); + const allConfig = { + slaveConfig, masterConfig, + }; + if(commonUtils.isNotEmptyArr(buttonConfigArr)) { + copyTo.config = buttonConfigArr; + const sTmpInfoConfig = buttonConfigArr.filter(item => item.sControlName && item.sControlName.includes('BtnTempSql'))[0]; + const sControlName = sTmpInfoConfig.sControlName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? '' : sTmpInfoConfig.sParentId; + if (commonUtils.isNotEmptyObject(sTmpInfoConfig)) { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; + // const sRowData = copyTo.slaveData; + const sRowData = [masterData]; + const condition = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + slaveData = []; + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase()); + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase()); + const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); + const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); + const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); + const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); + const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ''; + const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ''; + const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ''; + const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ''; + const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ''; + if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; + } + if (commonUtils.isNotEmptyArr(returnData.slave)) { + returnData.slave.forEach((slaveItem) => { + newCopyTo.slave = slaveItem; + const newSid = commonUtils.createSid(); + let slaveRow = commonFunc.getDefaultData(allConfig.slaveConfig, newCopyTo, { newSid }); // 取默认值 + if (salveDetailAssignField) { + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; + } else if (salveAssignField) { + slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 + } + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveData.push(slaveRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave0)) { + returnData.slave0.forEach((slave0Item) => { + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(allConfig.slave0Config, newCopyTo, { newSid }); // 取默认值 + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave1)) { + returnData.slave1.forEach((slave1Item) => { + newCopyTo.slave1 = slave1Item; + const newSid = commonUtils.createSid(); + let slave1Row = commonFunc.getDefaultData(allConfig.slave1Config, newCopyTo, { newSid }); // 取默认值 + slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 + slave1Row.handleType = 'add'; + slave1Row.sId = newSid; + slave1Row.sParentId = masterData.sId; + slave1Data.push(slave1Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave2)) { + returnData.slave2.forEach((slave2Item) => { + newCopyTo.slave2 = slave2Item; + const newSid = commonUtils.createSid(); + let slave2Row = commonFunc.getDefaultData(allConfig.slave2Config, newCopyTo, { newSid }); // 取默认值 + slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 + slave2Row.handleType = 'add'; + slave2Row.sId = newSid; + slave2Row.sParentId = masterData.sId; + slave2Data.push(slave2Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave3)) { + returnData.slave3.forEach((slave3Item) => { + newCopyTo.slave3 = slave3Item; + const newSid = commonUtils.createSid(); + let slave3Row = commonFunc.getDefaultData(allConfig.slave3Config, newCopyTo, { newSid }); // 取默认值 + slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 + slave3Row.handleType = 'add'; + slave3Row.sId = newSid; + slave3Row.sParentId = masterData.sId; + slave3Data.push(slave3Row); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.slave4)) { + returnData.slave4.forEach((slave4Item) => { + newCopyTo.slave4 = slave4Item; + const newSid = commonUtils.createSid(); + let slave4Row = commonFunc.getDefaultData(allConfig.slave4Config, newCopyTo, { newSid }); // 取默认值 + slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 + slave4Row.handleType = 'add'; + slave4Row.sId = newSid; + slave4Row.sParentId = masterData.sId; + slave4Data.push(slave4Row); + }); + } + this.props.onSaveState({ slaveData, slave1Data, slave2Data, slave3Data, slave4Data}); + } else { + this.props.getServiceError(dataReturn); + } + } + } else { + message.error('请正确配置自定义按钮!'); + } + }else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */ + if(name === 'BtnCalcPassRate') { + this.handleBtnCalcByRate(name); + }else { + this.handleBtnCalc(name); + } + } else if (name && name.includes('BtnLookSwitch')) { /* 查看二级物料1 dSumCompleteConsumptionStockQty */ + const addState = {}; + // const { slave3Child0Config } = this.props; + // const tableConfigArr = slave3Child0Config?.gdsconfigformslave; + // if(commonUtils.isNotEmptyArr(tableConfigArr)) { + // const filterData = tableConfigArr.filter(item => item.sName === 'dSumCompleteConsumptionStockQty'); + // if(commonUtils.isNotEmptyArr(filterData)) { + // filterData.forEach((row, index) => { + // const iIndex = tableConfigArr.findIndex(item => item.sName === row.sName); + // if(iIndex > -1) { + // tableConfigArr[iIndex].bVisible = true; + // } + // }) + // } + // + // const iHideIndex = tableConfigArr.findIndex(item => item.sName === 'dSumCompleteAvailableStockQty'); + // if(iHideIndex > -1) { + // slave3Child0Config.gdsconfigformslave[iHideIndex].bVisible = false; + // } + // + // } + // addState.slave3Child0Config = slave3Child0Config; + this.props.onSaveState({ bSecondMainMaterials: true, ...addState }, () => { + this.handleTableScroll(); + }); + } else if (name && name.includes('BtnLook')) { /* 查看全部 */ + const addState = {}; + // const { slave3Child0Config } = this.props; + // const tableConfigArr = slave3Child0Config?.gdsconfigformslave; + // if(commonUtils.isNotEmptyArr(tableConfigArr)) { + // const iIndex = tableConfigArr.findIndex(item => item.sName === 'dSumCompleteAvailableStockQty'); + // if(iIndex > -1) { + // slave3Child0Config.gdsconfigformslave[iIndex].bVisible = true; + // } + // const filterData = tableConfigArr.filter(item => item.sName === 'dSumCompleteConsumptionStockQty'); + // if(commonUtils.isNotEmptyArr(filterData)) { + // filterData.forEach((row, index) => { + // const iIndex = tableConfigArr.findIndex(item => item.sName === row.sName); + // if(iIndex > -1) { + // tableConfigArr[iIndex].bVisible = false; + // } + // }) + // } + // } + // + // addState.slave3Child0Config = slave3Child0Config; + this.props.onSaveState({ slave3Child0SelectedRowKeys: [], slave3Child0Child1SelectedRowKeys: [], bSecondMainMaterials: false, ...addState }, () => { + this.handleTableScroll(); + }); + } + }; + /** + * 表头滚动问题 + */ + handleTableScroll = () => { + const scrollParent = document?.querySelector('.scrollInfo'); + const bodyScroll = scrollParent?.querySelector('.ant-table-body'); + const headScroll = scrollParent?.querySelector('.ant-table-header'); + bodyScroll?.scrollTo(0, 0); + headScroll?.scrollTo(0, 0); + } + + /* 导出Excel */ + handleOut = async () => { + const { + slaveConfig, formRoute, masterData, + } = this.props; + + /* 导出使用Post提交 */ + const url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&sName=${formRoute}&token=${encodeURIComponent(this.props.app.token)}`; + const conditionValuesStr = JSON.stringify({ sId: masterData?.sId, sBillNo: masterData?.sBillNo }); + this.handleOpenOut(url, '', '', undefined, conditionValuesStr); + }; + + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + handleOpenOut = (url, bFilter, slaveOrderBy, sGroupByList, conditionValues) => { + const newWin = window.open(); + let formStr = ''; + // 设置样式为隐藏,打开新标签再跳转页面前,如果有可现实的表单选项,用户会看到表单内容数据 + formStr = `
` + + ``; + if (commonUtils.isNotEmptyObject(conditionValues)) { + formStr += ``; + } + formStr += ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + /* 通用计算 */ + handleBtnCalc = async (name) => { + const { masterConfig, masterData, sModelsId, } = this.props; + this.props.onSaveState({ pageLoading:true }); + 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) && tableConfig.sSqlStr!=='noQuery') { + 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)) { + if (name === 'slave3Child0') { + // console.log('slaveNameList', name, tableConfig.sTbName); + tableData = returnData[name +'.MaterialsSum']; /* 动态配置 */ + 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); + } + } else { + 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; + allReturnMap.pageLoading = false; + } + this.props.onSaveState({ ...allReturnMap }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + this.props.onSaveState({ pageLoading:false }); + } + + } + } + + /* 合格率评审计算 */ + handleBtnCalcByRate = async (name, addMap) => { + const { masterConfig, masterData, sModelsId, } = this.props; + this.props.onSaveState({ pageLoading:true }); + 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)) { + if(name === 'slave' || name ==='slave0Child1' || name === 'materials' || name ==='slave0') { + 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) => { + if(name === 'slave' || name ==='slave0Child1' || name === 'materials' || name ==='slave0') { + 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 = masterData; + if(commonUtils.isNotEmptyObject(allReturnMap.masterData)){ + allReturnMap.masterData.enabled = true; + } + allReturnMap.pageLoading = false; + console.log('计算结果返回', allReturnMap); + } + this.props.onSaveState({ ...allReturnMap }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + this.props.onSaveState({ pageLoading:false }); + } + + } + } + + handleBtnChoose = async (name, sControlName, chooseConfig) => { + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${chooseConfig.sActiveId}?sModelsId=${chooseConfig.sActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const [returnData] = dataReturn.dataset.rows; + this.props.onSaveState({ [`${name}ChooseVisible`]: true, [`${name}ChooseData`]: returnData }); + } else { + this.props.getServiceError(dataReturn); + } + }; + handleViewClick = (name, sName, record, index , myConfig) => { + if (name === 'process' && sName === 'sProcessParamStr') { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + const sProcessParam = JSON.parse(paramType); + modalVisible = true; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(sProcessParam[`sParam${i.toString()}`])) { + processConfig.gdsconfigformslave[iIndex].showName = sProcessParam[`sParam${i.toString()}`]; + processConfig.gdsconfigformslave[iIndex].bVisible = !sProcessParam[`sParam${i.toString()}`].includes('参数值'); + record[`sParam${i.toString()}`] = sProcessParam[`sParam${i.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndex]); + } else if (iIndex > -1) { + // processConfig.gdsconfigformslave[iIndex].showName = `sParamValue${i.toString()}`; + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + + /* Begin 找到除了工艺参数以外的额外参数 通过对应字段找到该字段配置 */ + for (const key of Object.keys(slaveSelectOneData)) { + if (key.includes('sParam')) { + const iIndexOther = processConfig.gdsconfigformslave.findIndex(item => item.sName === key.replace('sParam', '').trim()); + if (iIndexOther > -1 && !commonUtils.isEmpty(slaveSelectOneData[key])) { + const fieldConfig = processConfig.gdsconfigformslave[iIndexOther]; + if (fieldConfig) { + const sFieldName = fieldConfig.sName; /* 字段名 */ + const bSrcName = `bParamConfig${fieldConfig.sName}`; + const bSrc = slaveSelectOneData[bSrcName]; + /* 如果不原配置 则同参数配置雷同 */ + if (!bSrc) { + processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = '1'; /* 从工序配置的DropDownData中拿数据 */ + } else { /* 走原配置读取数据源 */ + processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = ''; /* 从工序配置的DropDownData中拿数据 */ + } + processConfig.gdsconfigformslave[iIndexOther].bParam = true; /* 增加参数字段标识 */ + processConfig.gdsconfigformslave[iIndexOther].showName = sProcessParam[`sParam${sFieldName.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndexOther]); + } + } + } + } + /* END */ + } else { + modalVisible = false; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sProcessParamsModalVisible: modalVisible, + }); + } else if (name === 'process' && sName === 'sParams' && commonUtils.isNotEmptyObject(record.sParams)) { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let sParamData = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + /* 工序参数以表格形式展示 列 */ + const sParamConfig = { + bisMutiSelect: true, + bMutiSelect: false, + }; + const gdsconfigformslave = [{ + sId: commonUtils.createSid(), + sName: 'sId', + showName: '主键', + bVisible: false, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'bSelfCbx', + showName: '选择', + bVisible: true, + iFitWidth: 45, + }, { + sId: commonUtils.createSid(), + sName: 'sParamKey', + showName: '参数主键', + bVisible: true, + iFitWidth: 200, + }, { + sId: commonUtils.createSid(), + sName: 'sParamName', + showName: '参数名', + bVisible: true, + iFitWidth: 400, + }, { + sId: commonUtils.createSid(), + sName: 'sParamValue', + showName: '参数值', + bVisible: true, + }]; + sParamConfig.gdsconfigformslave = gdsconfigformslave; + const sParamColumn = commonFunc.getHeaderConfig(sParamConfig); + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + /* 将sParam1中的数据 还原到sParamData数据中 */ + sParamData = JSON.parse(record.sParams); + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sParamsModalVisible: true, + sParamConfig, + sParamColumn, + sParamData + }); + } else { + if(sName === 'myTableConfig') { + this.handleQuickViewClick(name, sName, record, index, myConfig ); + } else { + this.props.onViewClick(name, sName, record, index, myConfig ); + } + } + }; + + /* 获取表格数据 */ + handleGetTableConfig = async (name, sModelsId) => { + if(commonUtils.isNotEmptyObject(sModelsId)) { + const newConfig = await this.props.onGetTableConfig(name, sModelsId); + if(commonUtils.isNotEmptyObject(newConfig)) { + const newColumn = commonFunc.getHeaderConfig(newConfig); + this.props.onSaveState({[`${[name]}Config`]: newConfig, [`${[name]}Column`]: newColumn }) + } + } + } + + /* 快捷键跳转 */ + handleQuickViewClick = async (name, sName, record, index , myConfigArr) => { + const { + slaveConfig, + slaveData, + dispatch, + slaveFilterCondition, + slavePagination, + slaveOrderBy, + sModelsType, + formRoute, + treeFilterCondition, + app, + iPageSize, + sModelsId, + // slaveSelectedData, + // masterData, + // employeeConfig, + } = this.props; + console.log('myConfigArr',myConfigArr) + let picArr = []; + if(commonUtils.isNotEmptyArr(myConfigArr)) { + picArr = myConfigArr; + } + + if (picArr.length > 0) { + const getConfig = this.handleGetTableConfig; + const tableDataRow = record; + const iIndex = index; + const [{ sActiveId }] = picArr; + let [{ sActiveKey }] = picArr; + const sFormId = sActiveId === '1' ? commonUtils.isEmpty(tableDataRow.sFormId) ? tableDataRow.sSrcFormId : tableDataRow.sFormId : sActiveId; + if (commonUtils.isNotEmptyObject(sActiveKey) && sActiveKey.includes('.')) { /* 接口按钮跳转 如果有slave.对应字段 则需要取出对应字段 */ + const index = sActiveKey.lastIndexOf('.'); + sActiveKey = sActiveKey.substring(index + 1, sActiveKey.length); + } + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sFormId}?sModelsId=${sFormId}&sName=${formRoute}`; + const filterCondition = []; + const conditionValues = this.props.getSqlCondition(picArr[0], name, tableDataRow); + if (!commonUtils.isEmpty(conditionValues)) { + Object.keys(conditionValues).forEach((item) => { + if ((item === 'tStartDate_pro' || item.substring(0, 1) === 'p')) { + if (!commonUtils.isEmpty(conditionValues[item]) && conditionValues[item].length >= 2) { + const tStartDate = moment(conditionValues[item][0]).format(this.sDateFormat); + const tEndDate = moment(conditionValues[item][1]).add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if ((item === 'mStartDate_pro' || item.substring(0, 1) === 'm')) { + if (!commonUtils.isEmpty(conditionValues[item])) { + const tStartDate = moment(conditionValues[item]).startOf('month').format(this.sDateFormat); + const tEndDate = moment(conditionValues[item]).endOf('month').add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: `t${item.substring(1, item.length)}`, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if (item.substring(0, 1) === 't') { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: moment(conditionValues[item]).format(this.sDateFormat), + }); + } else { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: conditionValues[item], + }); + } + }); + } + this.props.dispatch({ + type: 'content/onRouter', + payload: { + url: sNameUrl, + refresh: getConfig.bind(this, name, sModelsId), /* 刷新方法 */ + sTabId: commonUtils.createSid(), + // sParentId: this.state.sTabId, + urlDataType: 'newPane', + checkedId: myConfigArr[0].sId, + sName: myConfigArr[0].sName, + bFilter: slaveFilterCondition, + pageSize: commonConfig.pageSize, + pages: slavePagination, + currentData: slaveData, + conditonValues: conditionValues, + newKey: tableDataRow[sActiveKey], + currentIndex: iIndex, + filterCondition, + }, + }); + } + }; + + handleSelect = async (name, selectConfig, selectData) => { + const { + masterConfig, token, sModelsId, currentSelectType, currentVersionInfo + } = this.props; + const _props = this.props; + const _this = this; + /* slave0Child1 - control */ + /* slave0 - process */ + /* materials - materials */ + let { masterData, slaveSelectedRowKeys ,slaveData, slave0Child1Data: controlDataOld, materialsData: materialsDataOld, slave0Data: processDataOld, colorData: colorDataOld, + slave0ChildDelData: controlDelDataOld, materialsDelData: materialsDelDataOld, slave0DelData: processDelDataOld, colorDelData: colorDelDataOld, + slaveConfig, slave0Child1Config:controlConfig, materialsConfig,slave0Config:processConfig, colorConfig, packConfig,} = this.props; + async function fetchData() { + const addState ={}; + for (let i = 0; i < selectData.length; i++) { + const sSqlCondition = { sProductId: selectData[i].sProductId, sId: selectData[i].sId }; + const condition = { sConfigformId, sControlName, sSqlCondition }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + for (const key in returnData) { + let arr = JSON.parse(JSON.stringify(returnData[key])); + arr.forEach((item, idx) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + let config = masterConfig.gdsconfigformslave.filter(item => item.sControlName.split('.').length === 3 && item.sControlName.includes(_this.copyName + '.' + key))[0]; + config = config ? config.sAssignField : copyConfig.sAssignField; + const newSid = commonUtils.createSid(); + let mixData = commonFunc.getDefaultData(_props[`${key}Config`] || {}, newCopyTo, { newSid }); // 取默认值 + mixData = { ...mixData, ...commonFunc.getAssignFieldValue(config || copyConfig, item, newCopyTo) }; // 取赋值字段 + mixData.handleType = 'add'; + mixData.sId = newSid; + mixData.sParentId = masterData.sId; + if (key === 'master') { + mixData.sFormId = _this.props.masterData.sFormId; + mixData.sId = _this.props.masterData.sId; + mixData.maxBillNo = 'sBillNo'; + arr[idx] = mixData; + } else { + mixData.sParentId = _this.props.masterData.sId; + arr[idx] = mixData; + } + }) + if (addState[`${key}Data`] === undefined) { + addState[`${key}Data`] = []; + } + addState[`${key}Data`] = addState[`${key}Data`].concat(arr); + } + } else { + _this.props.getServiceError(dataReturn); + } + } + } + + if(selectConfig && selectConfig.sControlName && selectConfig.sControlName.includes('_choose')) { + if (commonUtils.isNotEmptyArr(selectData)) { + const { currentProductCardId, currentProductTechnologyVer, currentSelectType }= this.props; + let controlData = commonUtils.isNotEmptyArr(controlDataOld) ? JSON.parse(JSON.stringify(controlDataOld)): []; + let materialsData = commonUtils.isNotEmptyArr(materialsDataOld) ? JSON.parse(JSON.stringify(materialsDataOld)): []; + let processData = commonUtils.isNotEmptyArr(processDataOld) ? JSON.parse(JSON.stringify(processDataOld)): []; + let colorData = []; + let packData = []; + let slave0Child2Data = []; + const addState = {}; + const { slave0Child1DelData, slave0DelData } = this.props; + const controlDelData = commonUtils.isEmptyArr(slave0Child1DelData) ? [] : slave0Child1DelData; + const materialsDelData = commonUtils.isEmptyArr(materialsDelDataOld) ? [] : materialsDelDataOld; + const processDelData = commonUtils.isEmptyArr(slave0DelData) ? [] : slave0DelData; + + if(commonUtils.isNotEmptyArr(controlData)) { + const iIndex = controlData.findIndex(item => item.sProductCardId === selectData[0].sProductCardId); + if(iIndex > -1 && currentProductCardId !== controlData[iIndex].sProductCardId) { + message.error('当前工艺路线已存在,请勿重复选择!'); + return ; + } + } + /* 根据选中的版本号,先删除在插入 */ + if(commonUtils.isNotEmptyArr(controlData)){ + const controlFilterData = controlData.filter(item=> item.sProductCardId === currentProductCardId && item.sProductTechnologyVer === currentProductTechnologyVer); + if(commonUtils.isNotEmptyArr(controlFilterData)) { + controlFilterData.forEach((item) => { + item.handleType = 'del'; + controlDelData.push(item); + const iDelIndex = controlData.findIndex(itemDel => itemDel.sId === item.sId); + if(iDelIndex > -1) { + controlData.splice(iDelIndex, 1); + } + + /* 删除材料、工序 */ + const processFilterData = processData.filter(itemDel=> itemDel.sControlId === item.sId); + if(commonUtils.isNotEmptyArr(processFilterData)) { + processFilterData.forEach((item) => { + item.handleType = 'del'; + processDelData.push(item); + const iDelIndex = processData.findIndex(itemDel => itemDel.sId === item.sId); + if (iDelIndex > -1) { + processData.splice(iDelIndex, 1); + } + }); + } + + const materialsFilterData = materialsData.filter(itemDel=> itemDel.sControlId === item.sId); + if(commonUtils.isNotEmptyArr(materialsFilterData)) { + materialsFilterData.forEach((item) => { + item.handleType = 'del'; + materialsDelData.push(item); + const iDelIndex = materialsData.findIndex(itemDel => itemDel.sId === item.sId); + if (iDelIndex > -1) { + materialsData.splice(iDelIndex, 1); + } + }); + } + }); + + } + } + addState.slave0Child1DelData = controlDelData; + addState.slave0DelData = processDelData; + addState.materialsDelData = materialsDelData; + + const config = {}; + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + config.controlConfig = controlConfig; + config.materialsConfig = materialsConfig; + config.processConfig = processConfig; + config.colorConfig = colorConfig; + config.packConfig = packConfig; + let iSlaveIndex = -1; + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + slaveSelectedRowKeys = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0].sId : []; + } + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + } + let condition = ''; + let dataUrl = ''; + if(selectConfig.sControlName.includes('choosePBOM')) { + dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}` + condition = { sCardId: selectData[0].sId, sRowData: slaveData }; + }else if(selectConfig.sControlName.includes('chooseTicket')) { + dataUrl= `${commonConfig.server_host}salesorder/getPartsInfo?sModelsId=${sModelsId}`; + condition = { sSlaveId: selectData[0].sSlaveId, sRowData: slaveData }; + } + /* 复制从工单功能 */ + const { productProcessInfoCopyFromKey } = this.props; + let bCopyFromWorkOrder = false; + if (commonUtils.isNotEmptyObject(productProcessInfoCopyFromKey) && productProcessInfoCopyFromKey.includes('BtnCopyFrom.sworkorder')) { + // bCopyFromWorkOrder = true; + condition = { sWorkOrderId: selectData[0].sId, slaveData }; + // dataUrl = `${commonConfig.server_host}salesorder/getCopyFromWorkOrder/?sModelsId=${sModelsId}`; + dataUrl = `${commonConfig.server_host}salesorder/getWorkOrderToWorkOrder/?sModelsId=${sModelsId}`; + } + + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (!bCopyFromWorkOrder && dataReturn.code === 1) { + const copyTo = { config: processConfig.gdsconfigformslave, name: selectConfig.sControlName }; + const returnData = dataReturn.dataset.rows[0]; + const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}`.toLowerCase()); + const copyToSlaveDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const copyToControlConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.control`.toLowerCase()); + const copyToControlDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.controldetail`.toLowerCase()); + const copyToMaterialsConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.materials`.toLowerCase()); + const copyToProcessConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.process`.toLowerCase()); + const copyToColorConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.param`.toLowerCase()); + const copyToPackConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.pack`.toLowerCase()); + const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ''; + const slaveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ''; + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + const controlDetailAssignField = commonUtils.isNotEmptyArr(copyToControlDetailConfig) ? copyToControlDetailConfig[0].sAssignField : ''; + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + const colorAssignField = commonUtils.isNotEmptyArr(copyToColorConfig) ? copyToColorConfig[0].sAssignField : ''; + const packAssignField = commonUtils.isNotEmptyArr(copyToPackConfig) ? copyToPackConfig[0].sAssignField : ''; + + let contorlDetailData = []; + if (!commonUtils.isEmpty(controlDetailAssignField)) { + const dataUrl = `${commonConfig.server_host}business/getSelectLimit/${copyToControlDetailConfig[0].sId}?sModelsId=${this.props.sModelsId}&sName=`; + const conditonValues = this.props.getSqlCondition(copyToControlDetailConfig[0], '', {}); + const body = { + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + const json = await commonServices.postValueService(this.props.app.token, body, dataUrl); + const { rows } = json.data.dataset; + if (rows) { + contorlDetailData = rows; + } + } + + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0]; + + if (iSlaveIndex > -1) { + slaveData[iSlaveIndex] = { ...slaveData[iSlaveIndex], ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, selectData[0], newCopyTo) }; // 取赋值字段 + } + + const bProcessAssort = false; + let returnProcessAssort = []; + let processAssignAssort = ''; + let dropDownDataProcessName; + if (bProcessAssort) { + const dataUrl = `${commonConfig.server_host}salesorder/getProcessAssort?sModelsId=${sModelsId}`; + const dataProcessAssort = (await commonServices.postValueService(token, {}, dataUrl)).data; + if (dataProcessAssort.code === 1) { + returnProcessAssort = dataProcessAssort.dataset.rows[0].processassort; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', config.processConfig.gdsconfigformslave[iIndex]); + dropDownDataProcessName = sqlDropDownData.dropDownData; + processAssignAssort = config.processConfig.gdsconfigformslave[iIndex].sAssignField; + } + } + } + /* 从表数据赋值 */ + /* 将首选、备选方案选择的值 更新到从表中 */ + if( commonUtils.isNotEmptyObject(slaveData)) { + let addState = {}; + // slaveData[0] ={...slaveData[0], ...addState}; + + //树型数据时修改 + const iSlave0Index = slaveData.findIndex(item => commonUtils.isEmpty(item.sFatherSlaveId)); + slaveData.forEach((slaveItem, iIndex) => { + // 暂时先使用主工艺卡id + addState.sBomId = selectData[0].sProductCardId; + addState.sProductTechnologyVer = selectData[0].sProductTechnologyVer; + addState.sSelectType = currentSelectType; + addState.handleType = commonUtils.isEmpty(slaveItem.handleType) ? 'update' : slaveItem.handleType; + if (currentSelectType === "mainVersion") { + addState.sMainProductTechnologyId = selectData[0].sProductCardId; + } else if (currentSelectType === "preVersion") { + addState.sSpareProductTechnologyId = selectData[0].sProductCardId; + } + if (commonUtils.isNotEmptyArr(returnData.slaveData)) { + const iReturnSlaveIndex = returnData.slaveData.findIndex(item => item.sProductId === slaveItem.sProductId); + addState = {...addState, ...commonFunc.getAssignFieldValue(slaveDetailAssignField, iReturnSlaveIndex > -1 ? returnData.slaveData[iReturnSlaveIndex] : returnData.slaveData[0], newCopyTo) }; + + if (iSlave0Index > -1 && slaveData.length > 1 && slaveData.findIndex(item => item.sFatherSlaveId !== '') > -1 && slaveData[iSlave0Index].sProductId !== slaveData[iIndex].sProductId) { + addState.dProductQty = (slaveData[iSlave0Index].dProductQty - slaveData[iSlave0Index].dRealQty) * (addState.dCombineCoefficient && addState.dCombineCoefficient > 0 ? addState.dCombineCoefficient : 1); + } + } else { + addState = {...addState, ...commonFunc.getAssignFieldValue(slaveDetailAssignField, selectData[0], newCopyTo)}; + } + + // const iSrcIndex = returnData.slaveData.findIndex(item => item.sProductId === slaveData[iIndex].sProductId); + // if (iSrcIndex > -1) { + // addState.sBomId = returnData.slaveData[iSrcIndex].sSlaveId; + // addState.sProductTechnologyVer = returnData.slaveData[iSrcIndex].sProductTechnologyVer; + // if (currentSelectType === "mainVersion") { + // addState.sMainProductTechnologyId = returnData.slaveData[iSrcIndex].sSlaveId; + // } else if (currentSelectType === "preVersion") { + // addState.sSpareProductTechnologyId = returnData.slaveData[iSrcIndex].sSlaveId; + // } + // } + slaveData[iIndex] = { ...slaveItem, ...addState }; + }); + } + + // 新赋值后,要重新给。 + newCopyTo.master = copyTo.masterData; + newCopyTo.slave = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0]; + + if (commonUtils.isNotEmptyArr(returnData.controlData)) { + let dProductQty = 0; + /* 主表配置bProductQtyAdd 则代表产品数量不叠加备货数 赠送数 */ + let bProductQtySelf = false; + if (commonUtils.isNotEmptyObject(this.props.masterConfig) && commonUtils.isNotEmptyArr(this.props.masterConfig.gdsconfigformslave)) { + const iIndex = this.props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bProductQtySelf'); + if (iIndex > -1) { + bProductQtySelf = true; + } + } + if (commonUtils.isNotEmptyArr(returnData.slaveData)) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.slaveData[0], newCopyTo) }; // 取赋值字段 + } else { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, selectData[0], newCopyTo) }; // 取赋值字段 + } + const treeCopyNodes = new Map(); + returnData.controlData.forEach((controlItem) => { + newCopyTo.control = controlItem; + const newSid = commonUtils.createSid(); + let controlRow = commonFunc.getDefaultData(config.controlConfig, newCopyTo, { newSid }); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + if (!commonUtils.isEmpty(controlDetailAssignField) && commonUtils.isNotEmptyArr(contorlDetailData)) { + const iDetailIndex = contorlDetailData.findIndex(item => controlRow.sCombinedMemo.includes(item.sProductNo)); + if (iDetailIndex > -1) { + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlDetailAssignField, contorlDetailData[iDetailIndex], newCopyTo) }; // 取赋值字段 + } + } + + controlRow.handleType = 'add'; + controlRow.sId = newSid; + controlRow.sParentId = masterData.sId; + controlRow.dPartsQty = dProductQty; + controlRow.sOriginalId = controlItem.sId; + const sAllOldId = controlItem.sAllId; + controlRow.sProductTechnologyVer = selectData[0].sProductTechnologyVer; + controlRow.sProductCardId = selectData[0].sProductCardId; + controlRow.sProductCardNo = selectData[0].sProductCardNo; + controlRow.currentSelectType = currentSelectType; + controlRow.sSlaveId = commonUtils.isNotEmptyArr(slaveData) && slaveData[0].sId ? slaveData[0].sId : ''; + controlRow.iOrder = currentSelectType.includes('preVersion') ? 1000 : 10; + let arr = []; + if (commonUtils.isNotEmptyObject(sAllOldId)) { + arr = sAllOldId.split(','); + } + const newId = controlRow.sId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + controlRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + controlRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + controlRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(controlItem.sId, sNewParentAllId); + controlData.push(controlRow); + controlData.sort((a, b) => a.iOrder - b.iOrder); /* 按照序号排序 */ + + /* 增加合版表 */ + if (commonUtils.isNotEmptyArr(returnData.packData) && false) { + returnData.packData.filter(item => item.sControlId === controlItem.sId).forEach(async (packItem) => { + newCopyTo.pack = packItem; + let packRow = commonFunc.getDefaultData(config.packConfig, newCopyTo); // 取默认值 + packRow = { ...packRow, ...commonFunc.getAssignFieldValue(packAssignField, packItem, newCopyTo) }; // 取赋值字段 + packRow.sOriginalId = packItem.sId;/* 翻单前的sId */ + /* sSlaveId赋值 */ + const iSlaveIndex = slaveData.findIndex(item => item.sOriginalId === packItem.sSlaveId); + if (iSlaveIndex > -1) { + const slaveDataRow = slaveData[iSlaveIndex]; + const packRowAdd = this.handlePackDataAdd(slaveDataRow, 0, controlRow.sId, 'add'); + if (commonUtils.isNotEmptyObject(packRowAdd)) { + packRow = { ...packRow, ...packRowAdd }; + /* 将控制表中的合版备注sId为新的sId */ + let JsonData = []; + const jsonStr = controlRow.sCombinedMemo; + if (commonUtils.isNotEmptyObject(jsonStr) && commonUtils.isJSON(jsonStr)) { + JsonData = JSON.parse(jsonStr); + if (commonUtils.isNotEmptyArr(JsonData)) { + let sCombinedMemoNew = ''; + JsonData.forEach((item, index) => { + if (item.sId === packItem.sId) { + JsonData[index].sId = packRow.sId; + } + }); + sCombinedMemoNew = JSON.stringify(JsonData); + controlRow.sCombinedMemo = sCombinedMemoNew; + const icontrolIndex = controlData.findIndex(item => item.sId === controlRow.sId); + if (icontrolIndex) { + controlData[icontrolIndex] = { ...controlData[icontrolIndex], sCombinedMemo: sCombinedMemoNew }; + } + } + } + packData.push(packRow); + } + } + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + returnData.processData.filter(item => item.sControlId === controlItem.sId && item.sType !== '3').forEach((processItem) => { + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processRow.sSlaveId = commonUtils.isNotEmptyArr(slaveData) && slaveData[0].sId ? slaveData[0].sId : ''; + processRow.sProductCardId = selectData[0].sProductCardId; + /* 根据合版表的源sOriginalId找到新sId */ + let sNewIds = ''; + let sNewNames = ''; + const sOldIds = processItem.sCombinePartsName; + if (commonUtils.isNotEmptyObject(sOldIds)) { + const sOldArr = sOldIds.split(','); + for (const sId of sOldArr) { + const index = packData.findIndex(item => item.sOriginalId === sId); + if (index > -1) { + const tableDataRow = packData[index]; + sNewIds += `${tableDataRow.sId},`; + sNewNames += `${tableDataRow.sCustomerName}-${tableDataRow.sProductName}-${tableDataRow.sCombinePartsName},`; + } + } + sNewIds = commonUtils.isNotEmptyObject(sNewIds) ? sNewIds.substr(0, sNewIds.length - 1) : ''; + sNewNames = commonUtils.isNotEmptyObject(sNewNames) ? sNewNames.substr(0, sNewNames.length - 1) : ''; + } + processRow.sCombinePartsName = sNewIds; + processRow.sCombinePartsNameNew = sNewNames; + processData.push(processRow); + + // 配套工序 + if (bProcessAssort) { + returnProcessAssort.filter(item => item.sParentId === processRow.sProcessId).forEach(((itemProcessAssort) => { + const iIndex = dropDownDataProcessName.findIndex(item => item.sId === itemProcessAssort.sProcessId); + const iProcessIndex = returnData.processData.findIndex(item => item.sProcessId === itemProcessAssort.sProcessId && item.sControlId === controlItem.sId); + const iNewProcessIndex = processData.findIndex(item => item.sProcessId === itemProcessAssort.sProcessId && item.sControlId === controlRow.sId); + if (iIndex > -1 && iProcessIndex < 0 && iNewProcessIndex < 0) { + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignAssort, dropDownDataProcessName[iIndex], newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processRow.sType = dropDownDataProcessName[iIndex].sType; + processData.push(processRow); + } + })); + } + }); + } + + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + returnData.materialsData.filter(item => item.sControlId === controlItem.sId && item.sType !== '2').forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + materialsRow.sParentId = masterData.sId; + materialsRow.sControlId = controlRow.sId; + materialsRow.sPartsName = controlRow.sPartsName; + materialsRow.sSlaveId = commonUtils.isNotEmptyArr(slaveData) && slaveData[0].sId ? slaveData[0].sId : ''; + materialsRow.sOriginalId = materialsItem.sId; + materialsRow.sProductCardId = selectData[0].sProductCardId; + materialsRow.sZmldlt = materialsItem.sZmldlt; + materialsRow.sInkFatherMaterialsTbId = materialsItem.sInkFatherMaterialsTbId; + // 材料对应工序的ID要变化 + if (commonUtils.isNotEmptyArr(returnData.processData)) { + const iProcessIndex = processData.findIndex(item => item.sControlId === controlRow.sId && item.sSrcProcessTbId === materialsItem.sProcessTbId); + if (iProcessIndex > -1) { + materialsRow.sProcessTbId = processData[iProcessIndex].sId; + } + } + materialsData.push(materialsRow); + }); + } + + /* 将 materialsData中sParentMaterialsId替换为最新的sid */ + if(commonUtils.isNotEmptyArr(materialsData)) { + const materialsFilterData = materialsData.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId)); + if(commonUtils.isNotEmptyArr(materialsFilterData)) { + materialsFilterData.forEach((filterItem, index) => { + const iIndex = materialsData.findIndex(item => item.sOriginalId === filterItem.sParentMaterialsId); + if(iIndex > -1) { + const iNexIndex = materialsData.findIndex(item => item.sId === filterItem.sId); + if (iNexIndex > -1) { + const addState = {}; + addState.sMaterialsNo1 = materialsData[iIndex].sMaterialsNo; /* 原材料编号 */ + addState.sMaterialsName1 = materialsData[iIndex].sMaterialsName; /* 原材料名称 */ + addState.bAlternative = true; + addState.sParentMaterialsId = materialsData[iIndex].sId; + materialsData[iNexIndex] = { ...materialsData[iNexIndex], ...addState}; + } + } + + }); + } + + const materialsInkFilterData = materialsData.filter(item => commonUtils.isNotEmptyObject(item.sInkFatherMaterialsTbId)); + if(commonUtils.isNotEmptyArr(materialsInkFilterData)) { + materialsInkFilterData.forEach((filterItem, index) => { + const iIndex = materialsData.findIndex(item => item.sOriginalId === filterItem.sInkFatherMaterialsTbId); + if(iIndex > -1) { + const iNexIndex = materialsData.findIndex(item => item.sId === filterItem.sId); + if(iNexIndex > -1) { + materialsData[iNexIndex] = { ...materialsData[iNexIndex], sInkFatherMaterialsTbId: materialsData[iIndex].sId} + } + } + }); + } + } + + }); + } + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + returnData.materialsData.filter(item => item.sType === '2').forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + materialsRow.sParentId = masterData.sId; + materialsRow.sSlaveId = slaveData[0].sId ? slaveData[0].sId : ''; + /* 根据从表源sOriginalId找到新sId */ + let sNewIds = ''; + let sNewNames = ''; + const sOldIds = materialsItem.sCombinePartsName; + if (commonUtils.isNotEmptyObject(sOldIds)) { + const sOldArr = sOldIds.split(','); + for (const sId of sOldArr) { + const index = slaveData.findIndex(item => item.sOriginalId === sId); + if (index > -1) { + const tableDataRow = slaveData[index]; + sNewIds += `${tableDataRow.sId},`; + sNewNames += `${tableDataRow.sProductName},`; + } + } + sNewIds = commonUtils.isNotEmptyObject(sNewIds) ? sNewIds.substr(0, sNewIds.length - 1) : ''; + sNewNames = commonUtils.isNotEmptyObject(sNewNames) ? sNewNames.substr(0, sNewNames.length - 1) : ''; + } + materialsRow.sCombinePartsName = sNewIds; + materialsRow.sCombinePartsNameNew = sNewNames; + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(returnData.processData)) { + returnData.processData.filter(item => item.sType === '3').forEach((processItem) => { + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sOriginalId = processItem.sId; + processRow.sSlaveId = commonUtils.isNotEmptyArr(slaveData) && slaveData[0].sId ? slaveData[0].sId : ''; + /* 根据合版表的源sOriginalId找到新sId */ + let sNewIds = ''; + let sNewNames = ''; + const sOldIds = processItem.sCombinePartsName; + if (commonUtils.isNotEmptyObject(sOldIds)) { + const sOldArr = sOldIds.split(','); + for (const sId of sOldArr) { + const index = slaveData.findIndex(item => item.sOriginalId === sId); + if (index > -1) { + const tableDataRow = slaveData[index]; + sNewIds += `${tableDataRow.sId},`; + sNewNames += `${tableDataRow.sCustomerName}-${tableDataRow.sProductName},`; + } + } + } + sNewIds = commonUtils.isNotEmptyObject(sNewIds) ? sNewIds.substr(0, sNewIds.length - 1) : ''; + sNewNames = commonUtils.isNotEmptyObject(sNewNames) ? sNewNames.substr(0, sNewNames.length - 1) : ''; + processRow.sCombinePartsName = sNewIds; + processRow.sCombinePartsNameNew = sNewNames; + processData.push(processRow); + + // 成品配套工序 + if (bProcessAssort) { + returnProcessAssort.filter(item => item.sParentId === processRow.sProcessId).forEach(((itemProcessAssort) => { + const iIndex = dropDownDataProcessName.findIndex(item => item.sId === itemProcessAssort.sProcessId); + const iProcessIndex = returnData.processData.findIndex(item => item.sProcessId === itemProcessAssort.sProcessId); + const iNewProcessIndex = processData.findIndex(item => item.sProcessId === itemProcessAssort.sProcessId); + if (iIndex > -1 && iProcessIndex < 0 && iNewProcessIndex < 0) { + if (itemProcessAssort.sType === 'single') { + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignAssort, dropDownDataProcessName[iIndex], newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sType = dropDownDataProcessName[iIndex].sType; + processData.push(processRow); + } else if (itemProcessAssort.sType === 'all') { + controlData.forEach((controlItem) => { + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignAssort, dropDownDataProcessName[iIndex], newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlItem.sId; + processRow.sPartsName = controlItem.sPartsName; + processRow.sType = dropDownDataProcessName[iIndex].sType; + processData.push(processRow); + }); + } + } + })); + } + }); + } + /* 处理非标产品 */ + slave0Child2Data = materialsData.filter(item => item.sZmldlt === '非标' && item.sProductCardId === currentProductCardId); + addState.materials0DelData = materialsDelData; + addState.materials0Data = materialsData; + addState.slave0Child2Data = slave0Child2Data; + console.log('slave0Child1Data部件表', controlData); + console.log('slave0Child1Data材料表', materialsData); + console.log('slave0Child1Data工序表', processData); + + /* 自动调用合格率计算 */ + if(false) { + const addStateMap ={ + slave0Child1Data:controlData, + slaveData:slaveData, + slave0Data: processData, + materialsData, + } + this.handleBtnCalcByRate('BtnCalcPassRate', addStateMap); /* 调用合格率计算 */ + }else { + this.props.onSaveState({ + [`${name}ChooseVisible`]: false, + slave0Data: processData, + materialsData, + slave0Child1Data:controlData, + slave3Data:controlData, + processCardUpdate: true, + packData, + masterData, + tableSelectedNewRowKeys: commonUtils.isEmptyArr(controlData) ? [] : [controlData[0].sId], + controlSelectedRowKeys: commonUtils.isEmptyArr(controlData) ? [] : [controlData[0].sId], + materialsSelectedRowKeys: [], + processSelectedRowKeys: [], + ...addState, + }); + } + } else { + this.props.getServiceError(dataReturn.msg); + } + } + }else { + const copyConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.split('.').length === 2 && item.sControlName.includes(this.copyName))[0]; + const sConfigformId = commonUtils.isEmpty(copyConfig) ? '' : copyConfig.sParentId; + const sControlName = this.copyName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfo/?sModelsId=${sModelsId}`; + const addState = {}; + await fetchData(); + if (addState.masterData) { + [addState.masterData] = addState.masterData; + } + if (Object.keys(addState).length) { + this.props.onSaveState({...addState}); + } + } + }; + + handleSelectCancel = (name) => { + this.props.onSaveState({ [`${name}ChooseVisible`]: false }); + }; + /* 双击弹出Memo */ + // handleGetMemo = (name, sValue, sMemoFiled, sRecord) => { + // const { sCurrMemoProps } = this.props; + // let { [`${name}Data`]: tableData } = this.props; + // const addStata = { [`${sMemoFiled}`]: sValue }; + // if (name !== 'master') { + // const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); + // let handleType = tableData[iIndex].handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData[iIndex] = { ...tableData[iIndex], ...addStata }; + // } else { + // let handleType = tableData.handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData = { ...tableData, ...addStata }; + // } + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); + // }; + // handleGetMemoCancel = () => { + // const { sCurrMemoProps } = this.props; + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps }); + // }; + // async await + handleEleMaterialsStoreCurrQty = async (slaveData) => { + const { sModelsId, app } = this.props; + let flag = true; + const InsufficientInventory = commonFunc.showMessage(app.commonConst, 'InsufficientInventory');/* 库存不足,不能领料 */ + const MateriaTransferQuantityVerificationFailed = commonFunc.showMessage(app.commonConst, 'MateriaTransferQuantityVerificationFailed');/* 材料调拨数量校验失败,请稍后操作 */ + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; + for (const item of slaveData) { + const body = { + sMaterialsId: item.sMaterialsId, /* 查询条件 */ + sMaterialsStyle: item.sMaterialsStyle, + sWareHouseId: item.sWareHouseId, + }; + if (commonUtils.isNotEmptyStr(item.sLocationId)) { + body.sLocationId = item.sLocationId; + } + if (commonUtils.isNotEmptyStr(item.sWarehouseLocationId)) { + body.sWarehouseLocationId = item.sWarehouseLocationId; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo)) { + body.sDefineNo = item.sDefineNo; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo2)) { + body.sDefineNo2 = item.sDefineNo2; + } + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const materials = dataReturn.dataset.rows[0]; + if (materials.dAuxiliaryQty < item.dAuxiliaryQty) { + message.error(`[${item.sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + message.error(MateriaTransferQuantityVerificationFailed); + flag = false; + break; + } + } + return flag; + } + handleBtnExportSql = () => { + + } + + componentDidUpdate() { + if (this.state.initSId) { + this.slaveTablePositon(); + } + } + + slaveTablePositon() { + if (!this.state.initSId) return; + const oSelectedTr = document.querySelector(`#dataBox tr[data-row-key='${this.state.initSId}']`); + if (oSelectedTr) { + const oTbody = oSelectedTr.parentNode.parentNode.parentNode; + if (oSelectedTr && oTbody) { + oTbody.scrollTop = oSelectedTr.offsetTop; + this.setState({ + initSId: '', + }); + } + } + } + + handleTableBlur = async (name, sFieldName, record, tableConfig) => { + const { sModelsId, app, token, sModelsType, [`${name}Data`]: tableData, [`${name}Data`]: tableSelectedRowKeys, masterData , [`${name}Config`]: tempConfig } = this.props; + const models = name === 'materials' ? 'Materials' : + sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + let tableDataRow = {}; + if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') { + let iIndex = -1; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + iIndex = 0; + } else { + tableData.findIndex(item => item.sId === tableSelectedRowKeys.toString()) + } + tableDataRow = await this.handleMaterialsChange(record, sModelsId, masterData, {}, sFieldName, app, token, models); + if(iIndex > -1) { + tableData[iIndex] = tableDataRow; + } + this.props.onSaveState({ [`${name}Data`]: tableData}) + }else if(commonUtils.isNotEmptyObject(tableConfig) && commonUtils.isNotEmptyObject(tableConfig.sButtonParam) && sFieldName === 'sInkBOM') { + let { materialsData:materials0Data, materialsDelData:materials0DelData, currentProductCardId } = this.props; + if(commonUtils.isEmptyArr(materials0Data)) { + materials0Data = []; + } + if(commonUtils.isEmptyArr(materials0DelData)) { + materials0DelData = []; + } + + const controlRow = this.handleGetSelectedData(this.props, 'slave0Child1'); + const processRow = this.handleGetSelectedData(this.props, 'slave0'); + const sTmpInfoConfig = tableConfig; + const sButtonParam = tableConfig.sButtonParam; + const btn = commonUtils.isNotEmptyObject(sButtonParam) && commonUtils.isJSON(sButtonParam)? JSON.parse(sButtonParam) : {};; + const sProName = commonUtils.isNotEmptyObject(btn) ? btn.sproName : ''; + const sTmpInfoBySqlBtnName = commonUtils.isNotEmptyObject(btn) ? btn.sControlName : ''; + const sActiveKey = sTmpInfoConfig.sActiveKey; + if (commonUtils.isNotEmptyObject(sTmpInfoConfig) && sTmpInfoBySqlBtnName.includes('sTmpInfoBySql')) { + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.process = processRow; + newCopyTo.control = controlRow; + /* 找到自定义TempInfo配置 */ + + const btnConfig = tempConfig.gdsconfigformslave.filter(item => item.sControlName.includes(sTmpInfoBySqlBtnName)); + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(btnConfig) ? '' : btnConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(sTmpInfoBySqlBtnName) ? sTmpInfoBySqlBtnName : 'TmpInfoBySql'; + const sAssignField = btnConfig[0].sAssignField; + const sActiveKeyNew = btnConfig[0].sActiveKey; + const sRowData = [record]; + const values = { sConfigformId, sControlName, sRowData }; + if (true){ + const dataReturn = (await commonServices.postValueService(app.token, values, dataUrl)).data; + const allReturnMap = {}; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + if (commonUtils.isNotEmptyObject(returnData)) { + for (const key of Object.keys(returnData)) { + console.log('key', key); + const sName = `${key}Data`; + const sDelName = `${key}DelData`; + // allReturnMap[sName] = returnData[key]; + let {[`${key}Data`]: oldData, [`${key}DelData`]: oldDelData } = this.state; + if(commonUtils.isEmptyArr(oldDelData)) { + oldDelData = []; + } + if(commonUtils.isEmptyArr(oldData)) { + oldData = []; + } + if(sTmpInfoBySqlBtnName.includes('_edit')) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ + /* 对应字段 */ + const sActiveKey = sTmpInfoConfig.sActiveKey; + const keyData = returnData[key]; + let newData = []; + if(commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach((child) => { + const filterData = oldData.filter(item => item[sActiveKeyNew] !== child[sActiveKeyNew]); + if(commonUtils.isNotEmptyArr(filterData)) { + const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段111 + tableRow.sId = commonUtils.createSid(); + tableRow.sParentId = masterData.sId; + newData.push(tableRow); + } + }); + newData = oldData.concat(newData) + } + + }else if(sTmpInfoBySqlBtnName.includes('_del')) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ + /* 对应字段 */ + const keyData = returnData[key]; + if(commonUtils.isEmptyArr(keyData)) { + return ; + } + const sActiveKey = sTmpInfoConfig.sActiveKey; + const oldFilterData = oldData.filter(old => old.sParentMaterialsId === record.sId); + oldFilterData.forEach((child) => { + child.handleType ='del'; + oldDelData.push(child); + }); + + /* 找到老数据的oldRowMap sInkBOMId 信息 */ + // const recordOldRow = record.oldRowMap; + // if(commonUtils.isEmptyObject(recordOldRow)) { + // return ; + // } + + const oldMFilterData = materials0Data.filter(old => old.sInkFatherMaterialsTbId === record.sId); + // const oldMFilterData = materials0Data.filter(old => commonUtils.isNotEmptyObject(old.sInkBOMId) && commonUtils.isNotEmptyObject(old.sInkBOMsSlaveId) + // && old.sInkBOMId === recordOldRow.sInkBOMId && old.sInkBOMsSlaveId === recordOldRow.sInkBOMsSlaveId && commonUtils.isEmpty(old.sInkBOMsMaterialsId) + // && old.sProcessTbId === recordOldRow.sProcessTbId && old.sProcessId === recordOldRow.sProcessId && old.sControlId === recordOldRow.sControlId + // ); + console.log('删除之前油墨', oldMFilterData); + oldMFilterData.forEach((child) => { + child.handleType ='del'; + const iIndex = materials0Data.findIndex(item => item.sId === child.sId); + if(iIndex > -1 ) { + materials0Data.splice(iIndex, 1); + } + materials0DelData.push(child); + }); + + allReturnMap[sDelName] = oldDelData; + oldData = []; + + if(commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach((child) => { + const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child, newCopyTo) }; // 取赋值字段111 + tableRow.sId = commonUtils.createSid(); + tableRow.sParentId = masterData.sId; + tableRow.handleType = 'add'; + tableRow.sInkFatherMaterialsTbId = record.sId; + tableRow.sProductCardId = currentProductCardId; + tableRow.sProcessTbId = processRow?.sId; + tableRow.sProcessId = processRow?.sProcessId; + tableRow.sControlId = controlRow?.sId; + // tableRow.sBclassifyName ='油墨'; + oldData.push(tableRow); + materials0Data.push(tableRow); + }); + } + // allReturnMap[sName] = oldData; + allReturnMap.materialsData = materials0Data; + allReturnMap.materialsDelData = materials0DelData; + } else { + allReturnMap[sName] = returnData[key]; + } + + } + if (commonUtils.isNotEmptyArr(allReturnMap.masterData) && Array.isArray(allReturnMap.masterData)) { + allReturnMap.masterData = allReturnMap.masterData[0]; + } + console.log('油墨', allReturnMap); + this.props.onSaveState({ ...allReturnMap }); + } + } else { + this.getServiceError(dataReturn); + } + } + + } + } else { + this.props.onDropDownBlur(name, sFieldName, record, tableConfig); + } + }; + + + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys) => { + const {[`${name}Config`]: tableConfig , [`${name}Data`]: tableData } = this.props; + if(commonUtils.isNotEmptyObject(tableConfig) && tableConfig.showName === '非标材料') { /* 非标材料删除 */ + const { materialsData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, } = this.props; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + let materialsReturnData = {}; + const iMIndex = materialsData.findIndex(item => tableSelectedRowKeys.includes(item.sId) ); + if(iMIndex > -1) { + const newTableSelectedRowKeys = [materialsData[iMIndex].sId]; + materialsReturnData = this.props.onDataRowDel('materials', true, newTableSelectedRowKeys); + } + const tableDataIndex = tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)); + if(tableDataIndex > -1) { + tableData.splice(tableDataIndex, 1); + } + this.props.onSaveState({ ...materialsReturnData, [`${name}Data`]: tableData }); + } else { + message.error('请选择非标材料!'); + } + } else if(commonUtils.isNotEmptyObject(tableConfig) && (name === 'slave3Child0Child1' || tableConfig.showName === '更换材料') ) { /* 替代料材料删除 */ + return this.handleTableDelTdl(name, isWait, tableSelectedRowKeys); + } else if(name ==='materials1'){ /* 删除油墨时 同时删除油墨子集 */ + /* 从全部材料里 找到对应数据 进行更改 */ + const { + sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, [`${name}Data`]: tableData, materialsConfig, materialsData: materials0Data, token, + } = this.props; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择数据!'); + return ; + } + if(commonUtils.isNotEmptyArr(materials0Data)) { + const iIndex = materials0Data.findIndex(item => tableSelectedRowKeys.includes(item.sId) ); + let materials1Row = {}; + if(iIndex > -1) { + materials1Row = materials0Data[iIndex]; + } + // const controlRow = this.handleGetSelectedData(this.props, 'slave0Child1'); + // const processRow = this.handleGetSelectedData(this.props, 'slave0'); + const materials0ChildData = materials0Data.filter(item => item.sInkFatherMaterialsTbId === materials1Row.sId); + + // const materials0ChildData = materials0Data.filter(item => commonUtils.isNotEmptyObject(item.sInkBOMId) && item.sInkBOMId === materials1Row.sInkBOMId + // && commonUtils.isNotEmptyObject(item.sInkBOMsSlaveId) && item.sInkBOMsSlaveId === materials1Row.sInkBOMsSlaveId && + // item.sProcessTbId === materials1Row.sProcessTbId && item.sProcessId === materials1Row?.sProcessId && item.sControlId === materials1Row?.sControlId && + // commonUtils.isEmptyObject(item.sInkBOMsMaterialsId)); + console.log('删除油墨子集2', materials0ChildData); + if(commonUtils.isNotEmptyArr(materials0ChildData)) { + materials0ChildData.forEach((item, index) => { + tableSelectedRowKeys.push(item.sId); + }); + } + const { materialsData, materialsDelData } = this.props.onDataRowDel('materials', true, tableSelectedRowKeys); + const addState = { materialsData, materialsDelData }; + this.props.onSaveState(addState); + + } + } else if(name === 'materials2' || name === 'materials3' || name === 'materials1Child'|| name === 'materialsChild'){ /* 删除电化铝、油墨子集 */ + /* 从全部材料里 找到对应数据 进行删除 */ + const { + sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, [`${name}Data`]: tableData, materialsConfig, materialsData : materials0Data, token, + } = this.props; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择数据!'); + return ; + } + const { materialsData, materialsDelData } = this.props.onDataRowDel('materials', true, tableSelectedRowKeys); + const addState = { materialsData, materialsDelData }; + console.log('111111111111111112', addState); + this.props.onSaveState(addState); + } else if (name === 'slave0Child1') { /* 删除部件的同时 删除工序 材料 */ + const { + [`${name}SelectedRowKeys`]: tableSelectedRowKeys, app, + } = this.props; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('slave0', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, true, tableSelectedRowKeys); + + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + }); + } else { + message.warn(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择数据 */ + return false; + } + } else if (name === 'slave0') { /* 删除工序的同时 删除材料 */ + const { + [`${name}SelectedRowKeys`]: tableSelectedRowKeys, [`${name}Data`]: tableData, app, materialsData=[], materialsDelData =[], + } = this.props; + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + let tableRow = {}; + const iProcessIndex = this.handleGetSelectedIndex(this.props, 'slave0'); + if(iProcessIndex > -1) { + tableRow = tableData[iProcessIndex]; + } + const materialsFilterDelData = materialsData.filter(item => tableSelectedRowKeys.includes(item.sProcessTbId) && + item.sProcessId === tableRow.sProcessId ); + let materialsSelectedDelRowKeys = []; + if(commonUtils.isNotEmptyArr(materialsFilterDelData)) { + materialsFilterDelData.forEach((item) =>{ + materialsSelectedDelRowKeys.push(item.sId); + }) + } + const materialsReturnData = this.otherCommonTableDel('materials', materialsSelectedDelRowKeys, 'sId'); /* 全部材料删除 */ + const processReturnData = this.props.onDataRowDel(name, true, tableSelectedRowKeys); + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + }); + } else { + message.warn(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择数据 */ + return false; + } + } else if (name === "materials") { // 删除全部材料时 删除替代料 + const { materialsData = [] } = this.props; + const materialsChildFilter = materialsData.filter(item => item.sParentMaterialsId === tableSelectedRowKeys[0]); + const tableSelectedRowKeysAdd = materialsChildFilter.filter(item => !tableSelectedRowKeys.includes(item.sId)).map(item => item.sId); + return this.props.onDataRowDel(name, isWait, [...tableSelectedRowKeys, ...tableSelectedRowKeysAdd]); + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + + // 替代料删除 + handleTableDelTdl = (tableName) => { + const { + masterData, [`${tableName}SelectedRowKeys`]: selectedRowKeys = [], slave3Child0SelectedRowKeys + } = this.props; + + // 替代料删除处理 + if (['slave3Child0Child2'].includes(tableName)) { + const { materialsData } = this.props; + const materialsOriginSNonsId = materialsData?.map(i => { + if (i && Object.prototype.hasOwnProperty.call(i, 'originSNonsId') && selectedRowKeys.includes(i.sId)) { + return i.originSNonsId; + } + })?.filter(Boolean); + if (materialsOriginSNonsId?.find(Boolean)) { + materialsData?.forEach(i => + { + if (i && materialsOriginSNonsId.includes(i.sId)) { + i.sHasReplace = 0; + } + }) + } + } + + const { materialsData, materialsDelData } = this.props.onDataRowDel('materials', true, selectedRowKeys); + + /* 叠加用量 */ + if(commonUtils.isEmptyArr(slave3Child0SelectedRowKeys)) { + message.error('请选择物料!'); + return; + } + let dAuxiliarySumQty = 0; + const filterData = materialsData.filter(item => item.sParentMaterialsId && slave3Child0SelectedRowKeys.includes(item.sParentMaterialsId) && item.sNons === '替代料' + && item.sMaterialsType !== '2'); + if(commonUtils.isNotEmptyArr(filterData)) { + filterData.forEach(item => { + dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2); + }); + } + const iFatherIndex = materialsData.findIndex(item => slave3Child0SelectedRowKeys.includes(item.sId) ); + if(iFatherIndex > -1) { + const addState = {}; + addState.dReplaceStockAuxiliaryQty = dAuxiliarySumQty; + addState.handleType = commonUtils.isEmpty(materialsData[iFatherIndex].handleType) ? 'update' : materialsData[iFatherIndex].handleType; + materialsData[iFatherIndex] = {...materialsData[iFatherIndex], ...addState}; + } + const masterDataNew = { ...masterData, bMrpCalc: false }; + const addState = { masterData: masterDataNew, materialsData, materialsDelData }; + this.props.onSaveState(addState); + } + + handleSelectCommonPopup = (currentPaneName, selectConfig, selectData, tbName) => { + console.log('sddsds', currentPaneName, selectConfig, tbName); + const { + [`${tbName}Data`]: tableData, [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, slaveSelectedRowKeys, + slave0Child1SelectedRowKeys: controlSelectedRowKeys, currentProductCardId, + } = this.props; + if (selectConfig && selectConfig.sControlName && selectConfig.sControlName.includes('BtnPopupReplaceMaterials')) { + const { + slave3Child0SelectedRowKeys: tableSelectedRowKeys, slave3Child0Child2SelectedRowKeys, materialsData : tableInfoOld =[], masterData, [`${tbName}Data`]: tableData =[], + } = this.props; + let tableInfo = [...tableInfoOld]; + if(commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.error('请选择替代料的父级!'); + } + if (commonUtils.isNotEmptyArr(selectData)) { + // 删除空数据 + // tableInfo = tableInfo.filter(item => !(item.handleType === 'add' && !item.sMaterialsId)); + + // slaveInfo选中数据 + const iIndex = tableInfo.findIndex(item => tableSelectedRowKeys.includes(item.sId) ); + const iChildIndex = tableInfo.findIndex(item => slave3Child0Child2SelectedRowKeys.includes(item.sId) ); + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iChildIndex > -1 && commonUtils.isEmpty(tableInfo[iChildIndex].sMaterialsId)) { + tableInfo[iChildIndex] = { ...tableInfo[iChildIndex], ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; + } else { + let tableDataRowAdd = this.handleTableAdd('materials', true); + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = tableInfo[iIndex].sParentId; + tableDataRowAdd.sParentMaterialsId = tableSelectedRowKeys[0]; + tableDataRowAdd.sProductCardId = currentProductCardId; + tableDataRowAdd.sControlId = tableInfo[iIndex].sControlId; + if(tbName ==='slave3Child0Child2') { + tableDataRowAdd.sNons = '替代料'; + } + tableInfo.push(tableDataRowAdd); + } + }); + } + this.props.onSaveState({ materialsData: tableInfo }); + } else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopupMaterialsWorkOrder') { /* 工序表放大镜选择材料 */ + const { slave0Config:processConfig, slave0Data: processData, slave0SelectedRowKeys: processSelectedRowKeys} = this.props; + let { materialsData, materials1Data, materials1Config, materials2Data, materials2Config, } = this.props; + if(commonUtils.isEmptyArr(materialsData)){ + materialsData = []; + } + /* 找到放大镜复制到配置 */ + const copyToConfig = processConfig.gdsconfigformslave.filter(item => item.sControlName.toLowerCase() === `${selectConfig.sControlName}.materials`.toLowerCase()); + const copyToAssignField = commonUtils.isNotEmptyArr(copyToConfig) ? copyToConfig[0].sAssignField : ''; /* 材料大类 */ + + const addState ={}; + const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + const selectFilterDataAll = selectData; /* 除了油墨,专色墨,电化铝之外的物料大类 */ + /* 全部材料 */ + if(commonUtils.isNotEmptyArr(selectFilterDataAll)) { + selectFilterDataAll.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.materials = item; + } + let tableDataRowAdd = this.handleTableAdd('materials', true); + item.handleType = 'add'; + // tableDataRowAdd = { ...tableDataRowAdd, ...item }; // 取赋值字段 + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(copyToAssignField, item) }; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + // tableDataRowAdd.sParentSlaveId = tableData[iIndex].sId; /* 选中从表的sId */ + tableDataRowAdd.sControlId = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys[0] :''; + tableDataRowAdd.sProductCardId = currentProductCardId; + materialsData.push(tableDataRowAdd); + }); + } + this.props.onSaveState({ materialsData, ...addState }); + } + } else if(selectConfig.sControlName && (selectConfig.sControlName.includes('BtnPopupProcess') || selectConfig.sControlName.includes('BtnChooseProcess') )) { /* 控制表放大镜选择工序 */ + const { slave0Config:processConfig, slave0Data: processData, slave0Child1Data: controlData, slave0SelectedRowKeys: processSelectedRowKeys, + slave0Child1Config: controlConfig,} = this.props; + let { materialsData, materials1Data, materials1Config, materials2Data, materials2Config, } = this.props; + if(commonUtils.isEmptyArr(materialsData)){ + materialsData = []; + } + /* 找到放大镜复制到配置 */ + const copyToConfig = processConfig.gdsconfigformslave.filter(item => item.sControlName.toLowerCase() === `${selectConfig.sControlName}.materials`.toLowerCase()); + const copyToAssignField = commonUtils.isNotEmptyObject(selectConfig) ? selectConfig.sAssignField : ''; /* 材料大类 */ + + const addState ={}; + const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + const selectFilterDataAll = selectData; + if(commonUtils.isNotEmptyArr(selectFilterDataAll)) { + selectFilterDataAll.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.materials = item; + } + let tableDataRowAdd = this.handleTableAdd('slave0', true); + item.handleType = 'add'; + // tableDataRowAdd = { ...tableDataRowAdd, ...item }; // 取赋值字段 + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(copyToAssignField, item) }; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + // tableDataRowAdd.sParentSlaveId = tableData[iIndex].sId; /* 选中从表的sId */ + tableDataRowAdd.sControlId = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys[0] :''; + tableDataRowAdd.sProductCardId = currentProductCardId; + + // 将工单参数的默认值保存到sParams中 + const sWorkOrderParam = commonUtils.convertStrToObj(tableDataRowAdd.sWorkOrderParam, {}); + const sWorkOrderParamDefaultValues = Object.keys(sWorkOrderParam).filter( + item => item.startsWith('sParamDefault') && commonUtils.isNotEmptyObject(sWorkOrderParam[item]) + ).reduce((result, item) => { + const sParamsName = item.replace('Default', ''); + result[sParamsName] = sWorkOrderParam[item]; + return result; + }, {}); + + const sParams = commonUtils.convertStrToObj(item.sParams, []); + const sWorkOrderJsonIndex = sParams.findIndex(item => item.sParamType === 'sWorkOrder'); + if (sWorkOrderJsonIndex === -1) { + sParams.push({ + sParamType: 'sWorkOrder', + data: sWorkOrderParamDefaultValues + }); + } else { + const { data: sWorkOrderData = {} } = sParams[sWorkOrderJsonIndex]; + sParams[sWorkOrderJsonIndex].data = { ...sWorkOrderData, ...sWorkOrderParamDefaultValues }; + } + tableDataRowAdd.sParams = JSON.stringify(sParams); + + processData.push(tableDataRowAdd); + }); + } + addState.slave0Data = processData; + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sControlName && (selectConfig.sControlName === 'BtnPopupMaterials1Child' || selectConfig.sControlName.includes('BtnHeadPopup') )) { /* 头部放大镜选择替代料 */ + const { materialsSelectedRowKeys, materials1SelectedRowKeys, materials2SelectedRowKeys} = this.props; /* 油墨数据选中行 */ + let { materialsData } = this.props; + let fatherRow = {}; + if(tbName === 'materialsChild') { + const iIndex = commonUtils.isNotEmptyArr(materialsSelectedRowKeys) ? materialsData.findIndex(item => item.sId === materialsSelectedRowKeys[0]) : -1; + if(iIndex === -1) { + message.error('请选择左侧选择行!'); + return; + } + fatherRow = materialsData[iIndex]; + } + const fatherName = 'materials'; + let { [`${fatherName}Data`]: tableData } = this.props; + if(commonUtils.isEmptyArr(tableData)) { + tableData = []; + } + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + let tableDataRowAdd = this.handleTableAdd(tbName, true); + item.handleType = 'add'; + tableDataRowAdd = {...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item)}; // 取赋值字段 + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + tableDataRowAdd.sParentMaterialsId = fatherRow.sId; /* 选中从表的sId */ + tableDataRowAdd.sProcessId = fatherRow.sProcessId; /* 工序ID */ + tableDataRowAdd.sProcessTbId = fatherRow.sProcessTbId; /* 工序表格ID */ + if(tbName === 'materialsChild') { /* 替代料 */ + tableDataRowAdd.sMaterialsNo1 = fatherRow.sMaterialsNo; /* 原材料编号 */ + tableDataRowAdd.sMaterialsName1 = fatherRow.sMaterialsName; /* 原材料名称 */ + tableDataRowAdd.bAlternative = true; + } + tableDataRowAdd.sProductCardId = currentProductCardId; + tableData.push(tableDataRowAdd); + }); + this.props.onSaveState({ materialsData:tableData }); + } + }else if(selectConfig.sName && selectConfig.sName === 'sAlumiteBomBillNo') { /* 电化铝Bom选择数据后,数据带入到电化铝 */ + let { materialsData:materials0Data, materialsDelData } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(materials0Data)){ + materials0Data = []; + } + if(commonUtils.isEmptyArr(materialsDelData)){ + materialsDelData = []; + } + if (commonUtils.isNotEmptyArr(selectData)) { + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys) && commonUtils.isNotEmptyArr(tableData)) { + const iProcessIndex = tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]); + if(iProcessIndex > -1) { + tableData[iProcessIndex].handleType = commonUtils.isEmpty(tableData[iProcessIndex].handleType) ? 'update' : tableData[iProcessIndex].handleType; + tableData[iProcessIndex].sAlumiteBomBillNo = selectData[0].sVersionNum; + addState[`${tbName}Data`] = tableData; + + /* 移除该工序下的所有电化铝 */ + const filterDelData = materials0Data.filter(row => row.sProcessId === tableData[iProcessIndex].sProcessId && + row.sProcessTbId === tableData[iProcessIndex].sId && row.sBclassifyName === '电化铝'); + console.log('筛选的电化铝', filterDelData); + if(commonUtils.isNotEmptyArr(filterDelData)) { + filterDelData.forEach((item, index) => { + const iIndex = materials0Data.findIndex(row => row.sId === item.sId); + if(iIndex > -1) { + const delRow = materials0Data[iIndex]; + delRow.handleType = 'del'; + materials0Data.splice(iIndex, 1); + materialsDelData.push(delRow); + } + }) + } + } + + } + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + /* 先移除相同批次版本的电化铝 在插入 */ + // const iIndex = materials0Data.findIndex(row => row.sAluminumBomId === item.sId && row.sAluminumBomSlaveId === item.sSlaveId); + // if(iIndex > -1) { + // const delRow = materials0Data[iIndex]; + // delRow.handleType = 'del'; + // materials0Data.splice(iIndex, 1); + // materialsDelData.push(delRow); + // } + const newCopyTo = {}; + newCopyTo.master = masterData; + let tableDataRowAdd = this.handleTableAdd('materials', true); + item.handleType = 'add'; + tableDataRowAdd = {...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item)}; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + tableDataRowAdd.sProductCardId = currentProductCardId; + materials0Data.push(tableDataRowAdd); + + /* 替代料对应的材料id重新刷一遍 */ + const tdlFilterData = materials0Data.filter(item => commonUtils.isNotEmptyObject(item.sParentMaterialsId) && + item.sMaterialsNo1 === tableDataRowAdd.sMaterialsNo); + if(commonUtils.isNotEmptyObject(tdlFilterData)){ + tdlFilterData.forEach((item, index) => { + const iFIndex = materials0Data.findIndex(child => child.sId ===item.sId); + if(iFIndex > -1) { + const addState = {}; + addState.sParentMaterialsId = tableDataRowAdd.sId; + addState.handleType = commonUtils.isEmpty(materials0Data[iFIndex].handleType) ? 'update' : materials0Data[iFIndex].handleType; + materials0Data[iFIndex] ={...materials0Data[iFIndex], ...addState}; + } + }); + } + + }); + addState.materialsData = materials0Data; + addState.materialsDelData = materialsDelData; + + const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; + if (commonUtils.isJSON(selectData[0].sParams) && iIndex > -1) { + const paramsNewData = JSON.parse(selectData[0].sParams); + if (commonUtils.isJSON(tableData[iIndex].sParams)) { + const paramsOldData = JSON.parse(tableData[iIndex].sParams); + const iNewIndex = paramsNewData.findIndex(item => item.sParamType === 'sWorkOrder'); + if (iNewIndex > -1) { + const iOldIndex = paramsOldData.findIndex(item => item.sParamType === 'sWorkOrder'); + if (iOldIndex > -1) { + paramsOldData[iOldIndex].data = {...paramsOldData[iOldIndex].data, ...paramsNewData[iNewIndex].data}; + } else { + paramsOldData.push(paramsNewData[iNewIndex]); + } + tableData[iIndex].sParams = JSON.stringify(paramsOldData); + } + } else { + tableData[iIndex].sParams = selectData[0].sParams; + } + addState[`${tbName}Data`] = tableData; + } + + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dMergeProductionQty') { /* 合并生产逻辑 */ + let { slaveData, slaveSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(slaveData)){ + slaveData = []; + } + const iIndex = this.handleGetSelectedIndex(this.props, 'slave'); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dModifyProductQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.dModifyProductQty = commonUtils.isNotEmptyNumber(item.dModifyProductQty) ? item.dModifyProductQty : 0; + jsonData.push(obj); + }); + addState.dMergeProductionQty = dModifyProductQty; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sMergeProduction = jsonStr; + addState.dSplitworkQty = commonUtils.convertToNum(dModifyProductQty + commonUtils.isNull(tableData[iIndex].dQdismantledQty, 0)); + } + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } else { + addState.dMergeProductionQty = 0; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + addState.sMergeProduction = ''; + addState.dSplitworkQty = 0; + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } + } else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dWorkPeriodQty') { /* 在制品数量 */ + let { slaveData, slaveSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(slaveData)){ + slaveData = []; + } + const iIndex = this.handleGetSelectedIndex(this.props, 'slave'); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dModifyProductQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.dModifyProductQty = commonUtils.isNotEmptyNumber(item.dModifyProductQty) ? item.dModifyProductQty : 0; + jsonData.push(obj); + }); + addState.dWorkPeriodQty = dModifyProductQty; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sWorkProduct = jsonStr; + } + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } else { + addState.dWorkPeriodQty = 0; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + addState.sWorkProduct = ''; + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dSplitworkQty') { /* 拆分工单 */ + let { slaveData, slaveSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(slaveData)){ + slaveData = []; + } + const iIndex = this.handleGetSelectedIndex(this.props, 'slave'); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dModifyProductQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.sId = item.sId; + obj.dModifyProductQty = commonUtils.isNotEmptyNumber(item.dModifyProductQty) ? item.dModifyProductQty : 0; + jsonData.push(obj); + }); + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sSplitQty = jsonStr; + addState.dSplitworkQty = dModifyProductQty; + } + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } else { + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + addState.sSplitQty = ''; + addState.dSplitworkQty = commonUtils.convertToNum(commonUtils.isNull(tableData[iIndex].dQdismantledQty, 0) + commonUtils.isNull(tableData[iIndex].dMergeProductionQty, 0)); + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dPreMatProductQty') { /* 消耗备料 */ + let { slaveData, slaveSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(slaveData)){ + slaveData = []; + } + const iIndex = this.handleGetSelectedIndex(this.props, 'slave'); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dModifyProductQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.dModifyProductQty = commonUtils.isNotEmptyNumber(item.dModifyProductQty) ? item.dModifyProductQty : 0; + jsonData.push(obj); + }); + addState.dPreMatProductQty = dModifyProductQty; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sPreMatProduct = jsonStr; + } + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } else { + addState.dPreMatProductQty = 0; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + addState.sPreMatProduct = ''; + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sControlName && selectConfig.sControlName === 'BtnPopup.dCombinedQty') { /* 合版订单 */ + let { slaveData, slaveSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(slaveData)){ + slaveData = []; + } + const iIndex = this.handleGetSelectedIndex(this.props, 'slave'); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dModifyProductQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.dModifyProductQty = commonUtils.isNotEmptyNumber(item.dModifyProductQty) ? item.dModifyProductQty : 0; + for (const key of Object.keys(item)) { + if(key !== 'sSlaveId' && key !=='dModifyProductQty' && key!== 'sPartNameStatus') { + obj[key] = item[key]; + } + } + jsonData.push(obj); + }); + addState.dCombinedQty = dModifyProductQty; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sCombinedMemo = jsonStr; + } + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } else { + addState.dCombinedQty = 0; + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + addState.sCombinedMemo = ''; + if(iIndex > -1) { + slaveData[iIndex] = { ...slaveData[iIndex], ...addState }; + } + addState.slaveData = slaveData; + this.props.onSaveState({ ...addState }); + } + }else if(selectConfig.sName && selectConfig.sName === 'dStockAuxiliaryQty') { /* 合并生产逻辑 */ + let { slave3Child0SelectedRowKeys = [], materialsData: tableData, [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; + const addState ={}; + if(commonUtils.isEmptyArr(tableData)){ + tableData = []; + } + if(commonUtils.isEmptyArr(tableSelectedRowKeys)){ + tableSelectedRowKeys = []; + } + const iIndex = tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)); + let dModifyProductQty = 0; + const jsonData = []; + let jsonStr = ''; + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach((item, index) => { + dModifyProductQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + const obj ={}; + obj.sSlaveId = commonUtils.isNotEmptyObject(item.sSlaveId) ? item.sSlaveId : item.sId; + obj.bExclude = item.bExclude; + jsonData.push(obj); + }); + // addState.dMergeProductionQty = dModifyProductQty; + addState.handleType = commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmpty(tableData[iIndex].handleType) + ? 'update' : tableData[iIndex].handleType; + if(commonUtils.isNotEmptyArr(jsonData)) { + jsonStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + addState.sAvailableExclude = jsonStr; + const dStockAuxiliaryQty = commonUtils.convertToNum(commonUtils.isNull(tableData[iIndex].dStockAuxiliaryQty, 0) - dModifyProductQty); + const dApplyNoAuxiliaryQty = commonUtils.convertToNum(commonUtils.isNull(tableData[iIndex].dApplyNoAuxiliaryQty, 0)); + const dPurchaseNoAuxiliaryQty = commonUtils.convertToNum(commonUtils.isNull(tableData[iIndex].dPurchaseNoAuxiliaryQty, 0)); + const dWorkOrderUpAuxiliaryQty = commonUtils.convertToNum(commonUtils.isNull(tableData[iIndex].dWorkOrderUpAuxiliaryQty, 0)); + const dAvailableAuxiliaryQty = commonUtils.convertFixNum(dStockAuxiliaryQty + + dApplyNoAuxiliaryQty + + dPurchaseNoAuxiliaryQty - + dWorkOrderUpAuxiliaryQty, 6); + addState.dStockAuxiliaryQty = dStockAuxiliaryQty < 0 ? 0 : dStockAuxiliaryQty; + addState.dAvailableAuxiliaryQty = dAvailableAuxiliaryQty < 0 ? 0 : dAvailableAuxiliaryQty; + + } + if(iIndex > -1) { + tableData[iIndex] = { ...tableData[iIndex], ...addState }; + } + addState.materialsData = tableData; + console.log('可用数量', addState); + this.props.onSaveState({ ...addState }); + } + } else { + this.props.onSelectCommonPopup(currentPaneName, selectConfig, selectData, tbName); + } + + }; + + onExecInstructSet = (type) => { + const { slave3Child0Config } = this.props; + let showConfig = {}; + const iIndex = slave3Child0Config.gdsconfigformslave.findIndex(item => item.sName === 'dAdjustAuxiliaryQty'); + if (iIndex > -1) { + showConfig = slave3Child0Config.gdsconfigformslave[iIndex]; + } + const { sInstruct: sInstructStr, showName, sOnChangeInstruct } = showConfig; + const sInstruct = commonUtils.convertStrToObj(sInstructStr, {}); + let { [type]: instructType } = sInstruct; + if (type === 'change') { + const onChangeNew = commonUtils.convertStrToObj(sOnChangeInstruct, {}); + instructType = onChangeNew[type]; + } + if (instructType) { + if (this.props.onExecInstructSet) { + this.props.onExecInstructSet({ + type, + sInstruct: instructType, + showName: `${showName}-${type === 'blur' ? '离焦' : '变化'}`, + }); + } else { + message.error('未定义调用指令集事件!'); + } + return true; + } + return false; + } + + handleRightArrow = (name, sName, record, index, showConfig) => { + /* 将该行的dAdjustAuxiliaryQty:dNeedAuxiliaryQty */ + if (!this.props.enabled) return; + const { materialsData }= this.props; + const sId = record?.sId; + const iIndex = commonUtils.isNotEmptyArr(materialsData)? materialsData.findIndex(item => item.sId === sId) : -1; + if(iIndex > -1) { + const tableDataRow = materialsData[iIndex]; + const handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + const addState ={ + dAdjustAuxiliaryQty : tableDataRow.dNeedAuxiliaryQty, + handleType, + } + materialsData[iIndex] ={...materialsData[iIndex], ...addState}; + this.onExecInstructSet( 'change'); + this.props.onSaveState({ materialsData }) + } + + } + + handleGetSelectedIndex = (props, tableName) => { + const selectedRowKeys = props[`${tableName}SelectedRowKeys`] || []; + let selectedDataIndex = -1; + const tableData = props[`${tableName}Data`]; + if (commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + selectedDataIndex = tableData.findIndex( + item => item.sId === selectedRowKeys[0] + ); + } else { + selectedDataIndex = 0; + } + } + return selectedDataIndex; + }; + + handleDrag = (data, tableName) => { + let { slave0Child1SelectedRowKeys: controlSelectedRowKeys, controlData, slave0Data: processData, enabled } = this.props; + if(enabled && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) { + if(tableName === 'slave0') { + if(commonUtils.isNotEmptyArr(data)) { + let allData = processData.slice(0); + /* 控制表选中行 移动排序 */ + const filterData = data.filter(item => item.sType !== '3' && item.sControlId === controlSelectedRowKeys[0]); + if(commonUtils.isNotEmptyArr(filterData)) { + filterData.forEach((item, iIndex) => { + item.iOrder = iIndex + 1; + const iFilterIndex = commonUtils.isNotEmptyArr(allData) ? allData.findIndex(row => item.sId === row.sId) : -1; + if(iFilterIndex > -1) { + allData[iFilterIndex] = {...item, iOrder: iIndex + 1} + } + }); + } + + /* 找到所属控制表的iOrder * 10000 */ + allData.forEach((item, iIndex) => { + const iControlIndex = commonUtils.isNotEmptyArr(controlData) ? controlData.findIndex(row => item.sControlId === row.sId) : -1; + if(iControlIndex > -1) { + const iControlOrder = controlData[iControlIndex].iOrder * 10000; + allData[iIndex].iControlOrder = iControlOrder; + allData[iIndex].iOrder = iControlOrder + item.iOrder; + } + }); + + allData = allData.sort((a, b) => a.iOrder - b.iOrder); + // allData.forEach((item, iIndex) => { + // allData[iIndex] = {...item, handleType : commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType}; + // }); + this.props.onSaveState({ slave0Data: allData }); + } + + } + } + } + + handleReplaceRow = (tableName, record) => { + /* 将替代料里的数据 复制到更换材料里 */ + const{ masterData, [`${tableName}SelectedRowKeys`]: tableSelectedRowKeys,[`${tableName}Config`]: tableConfig, materialsData= [], currentProductCardId } = this.props; + if(commonUtils.isEmpty(record)) { + message.error('请选择数据'); + return; + } + if(record.sHasReplace === 1) { + message.error('材料已经被提取!'); + return; + } + const btnConfig = tableConfig?.gdsconfigformslave.filter(item => item.sControlName.includes('BtnReplace')); + let sAssignField = ''; + if(commonUtils.isNotEmptyArr(btnConfig)) { + sAssignField = btnConfig[0].sAssignField; + } + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave3Child0Child1 = record; + let tableDataRow = this.props.onDataRowAdd('materials', true); + tableDataRow = {...tableDataRow, ...commonFunc.getAssignFieldValue(sAssignField, record)}; // 取赋值字段 + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.bMainMaterials = 1; + tableDataRow.sParentId = masterData.sId; + tableDataRow.sProductCardId = currentProductCardId; + tableDataRow.sNons = '替代料'; + tableDataRow.sParentMaterialsId = record.sParentMaterialsId; + tableDataRow.originSNonsId = record.sId; + materialsData.push(tableDataRow); + + const selectRowIndex = materialsData?.findIndex(i => i && i.sId === record?.sId); + if (selectRowIndex > -1) { + materialsData[selectRowIndex] = { ...record, sHasReplace: 1 }; + } + const masterDataNew = { ...masterData, bMrpCalc: false }; + this.props.onSaveState({ masterData: masterDataNew, materialsData, slave3Child0Child2SelectedRowKeys: [tableDataRow.sId] }); + message.info("提取成功!"); + } + + handleGetSelectedData = (props, tableName) => { + const selectedRowKeys = props[`${tableName}SelectedRowKeys`] || []; + let selectedDataIndex = -1; + const tableData = props[`${tableName}Data`]; + if (commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(selectedRowKeys)) { + selectedDataIndex = tableData.findIndex( + item => item.sId === selectedRowKeys[0] + ); + } else { + selectedDataIndex = 0; + } + } + if( selectedDataIndex > -1) { + return props[`${tableName}Data`][selectedDataIndex]; + } else { + return {}; + } + }; + + handleTableSelectRowChange = (name, selectedKeys, isWait) => { + const { materialsData } = this.props; + if (name === 'slave3Child0Child2' || name === 'slave3Child0Child1') { + let addState = this.props.onTableSelectRowChange(name, selectedKeys, true); + if (commonUtils.isNotEmptyArr(selectedKeys)) { + const iIndex = materialsData.findIndex(item => item.sId === selectedKeys[0]); + if (iIndex > -1) { + addState.slave3Child0SelectedRowKeys = [materialsData[iIndex].sParentMaterialsId]; + } + } + if (isWait) { + return addState; + } else { + this.props.onSaveState(addState); + } + } else { + if (isWait) { + return this.props.onTableSelectRowChange(name, selectedKeys, true); + } else { + return this.props.onTableSelectRowChange(name, selectedKeys); + } + + } + + }; + + /** 键盘事件监听 */ + onKeyDown = (e, record, sName, name, tableData) => { + const { [`${name}Column`]: tableColumn } = this.props; + // 以下if条件为 为解决bug2031问题入口 需求:收款单里输入的收款金额,上下键操作把加减金额改为选择上下行(通过上下方向键切换行数) + const move = (keyCode, cursortPosition, columnIndex) => { + if (keyCode === 37 && columnIndex > 0 && cursortPosition < 1) { // 左移 则 列下标必须大于0, 且光标在最左侧 + const lastId = `${tableColumn[columnIndex - 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(lastId, e)) move(keyCode, cursortPosition, columnIndex - 1); // 递归 + } + if (keyCode === 39 && columnIndex < tableColumn.length - 1) { // 右移 则 列下标必须小于列数量-1 + if (!record[sName] || cursortPosition >= record[sName].toString().length) { // 当前列为空 或 光标位置不小于当前值的长度 + const nextId = `${tableColumn[columnIndex + 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(nextId, e)) move(keyCode, cursortPosition, columnIndex + 1); // 递归 + } + } + }; + if ([38, 40].includes(e.keyCode)) { // 上键、下键 + e.preventDefault(); + if (tableData.length > 1) { // 当从表行数大于一行时才有上下移动的意义 + const index = tableData.findIndex(item => item.sId === record.sId); // 获取当前编辑行的下标 + if (index > -1) { + if (e.keyCode === 38 && index > 0) { // 方向键上键 且 当前编辑行下标大于0时,为0时无法向上 + const lastSid = tableData[index - 1].sId; // 获取上一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [lastSid] }, () => commonUtils.focus(`${sName}${lastSid}`)); + } + if (e.keyCode === 40 && index < tableData.length - 1) { // 方向键下键 且 当前编辑行下标小于最大值时,为最大值时无法向下 + const nextSid = tableData[index + 1].sId; // 获取下一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [nextSid] }, () => commonUtils.focus(`${sName}${nextSid}`)); + } + } + } + } else if ([37, 39].includes(e.keyCode)) { // 左键、右键 + const currentElement = document.getElementById(`${sName}${record.sId}`); // 当前编辑框对象 + if (currentElement) { + const cursortPosition = commonUtils.getCursortPosition(currentElement); // 光标位置 + const columnIndex = tableColumn.findIndex(item => item.dataIndex === sName); // 当前列下标 + move(e.keyCode, cursortPosition, columnIndex); + } + } + } + /* 单击右键全部更新,弹出窗选择后,更新此列所有数据 (只更新非只读字段) */ + onContextMenu = (e, record, showConfig, tbName) => { + const contextMenuConfig = []; + console.log('单击右键全部更新', showConfig); + const showConfigNew = JSON.parse(JSON.stringify(showConfig)); /* 深拷贝配置 */ + contextMenuConfig.push(showConfigNew); + this.props.onSaveState({ + contextMenuModalVisible: true, /* 右击全部更新弹窗 */ + contextMenuConfig, /* 右击字段配置 数组形式 */ + contextMenuRecord: record, /* 右击数据 */ + contextMenuName: showConfig.showName, /* 右击字段 */ + contextMenuTbName: tbName, /* 右击字段 */ + }); + } + + /* 单据字段单击右键全部更新,弹出窗选择后,更新此列所有数据。(只更新非只读字段) */ + handleContextMenuOk= async (contextMenuValue, contextMenuData, contextMenuType) => { + const { + contextMenuConfig, contextMenuTbName, [`${contextMenuTbName}Data`]: tableData, [`${contextMenuTbName}SelectedRowKeys`]: selectedRowKeys, + } = this.props; + console.log('111', contextMenuTbName); + if (commonUtils.isNotEmptyObject(contextMenuTbName) && commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(contextMenuConfig) && commonUtils.isNotEmptyObject(contextMenuConfig[0])) { + const tableConfig = contextMenuConfig[0]; + const tableFilterData = tableData.filter(item => selectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + let changeData = []; + const chooseType = commonUtils.isNotEmptyNumber(contextMenuType) ? contextMenuType : 1; + if(chooseType === 1) { + changeData = tableData; + } else if(chooseType === 2) { + const iIndex = tableData.findIndex(item => selectedRowKeys.includes(item.sId)); + changeData = tableData.filter((_, index) => index >= iIndex); + } + // const tableDataRow = tableFilterData[0]; + if (commonUtils.isNotEmptyArr(changeData) && commonUtils.isNotEmptyObject(tableConfig.sName) && !commonUtils.isEmpty(contextMenuValue)) { + const sName = tableConfig.sName; + for (let i = 0; i < changeData.length; i++) { + const child = changeData[i]; + const addState = {}; + addState[sName] = contextMenuValue; + const iIndex = tableData.findIndex(row => row.sId === child.sId); + const bShowProcess = [ + 'sMaterialsNo', + 'sMaterialsName', + 'dAuxiliaryQty', + 'dReelAuxiliaryQty', + 'dConversionQty', + 'sMaterialsStyle', + 'sMaterialsStyle', + 'dMaterialsQty', + 'dAuxiliaryLossQty', + 'dLossQty', + 'sProcessId', + 'sProcessNo', + 'sProcessName' + ].includes(sName); + bShowProcess && message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess}); + if(iIndex > -1) { + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...addState, ...contextMenuData }; + const changeValue = { ...contextMenuData }; + changeValue[sName] = contextMenuValue; + this.xlyProcessPercent = ((i + 1) / changeData.length * 100).toFixed(2); + const duration = i === changeData.length - 1 ? 1 : 0; + bShowProcess && message.loading({ content: , key: "xlyProcess", duration, className: styles.xlyProcess}); + + /* 手动触发改变事件 */ + const result = await this.handleTableChange(contextMenuTbName, sName, changeValue, child.sId, [], true); + tableData[iIndex] = { ...tableData[iIndex], ...result }; + } + } + } + } + } + } + this.props.onSaveState({ + [`${contextMenuTbName}Data`]: tableData, + contextMenuModalVisible: false, /* 右击全部更新弹窗 */ + }); + } + + render() { + const { masterData } = this.props; + const imgSrc = commonBusiness.handleAddIcon(masterData); + const imgPersonSrc = commonBusiness.handleCheckIcon(masterData); + return ( + + ); + } + }; +}; diff --git a/src/components/Common/CommonProductionPlanEvent.js b/src/components/Common/CommonProductionPlanEvent.js index 682a9c0..12effa7 100644 --- a/src/components/Common/CommonProductionPlanEvent.js +++ b/src/components/Common/CommonProductionPlanEvent.js @@ -1,6 +1,6 @@ /* eslint-disable prefer-destructuring,no-await-in-loop,semi,no-unused-vars */ import React, { Component } from 'react'; -import { message } from 'antd'; // Form, Modal, InputNumber +import { message } from 'antd-v4'; // Form, Modal, InputNumber // import reactComponentDebounce from 'react-component-debounce'; import moment from 'moment'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonProductionPlanOutsideEvent.js b/src/components/Common/CommonProductionPlanOutsideEvent.js index 7097957..f2b881e 100644 --- a/src/components/Common/CommonProductionPlanOutsideEvent.js +++ b/src/components/Common/CommonProductionPlanOutsideEvent.js @@ -3,7 +3,7 @@ * Created by mar105 on 2019-01-08. */ import React, { Component } from 'react'; -import { message } from 'antd'; // Form, Modal, InputNumber +import { message } from 'antd-v4'; // Form, Modal, InputNumber // import reactComponentDebounce from 'react-component-debounce'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ diff --git a/src/components/Common/CommonProductionPlanTreeEvent.js b/src/components/Common/CommonProductionPlanTreeEvent.js index 2153885..0ed2ad5 100644 --- a/src/components/Common/CommonProductionPlanTreeEvent.js +++ b/src/components/Common/CommonProductionPlanTreeEvent.js @@ -4,7 +4,7 @@ * Created by mar105 on 2019-01-08. */ import React, { Component } from 'react'; -import { message } from 'antd'; // Form, Modal, InputNumber +import { message } from 'antd-v4'; // Form, Modal, InputNumber // import reactComponentDebounce from 'react-component-debounce'; import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ diff --git a/src/components/Common/CommonProductionmMainPlanEvent.js b/src/components/Common/CommonProductionmMainPlanEvent.js index a477b4b..ab1d40b 100644 --- a/src/components/Common/CommonProductionmMainPlanEvent.js +++ b/src/components/Common/CommonProductionmMainPlanEvent.js @@ -1,7 +1,7 @@ /* eslint-disable */ /* eslint-disable prefer-destructuring,no-await-in-loop,no-unused-vars */ import React, { Component } from 'react'; -import { message } from 'antd'; // InputNumber Form, Modal, +import { message } from 'antd-v4'; // InputNumber Form, Modal, import * as commonUtils from '../../utils/utils'; /* 通用方法 */ import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ import * as commonServices from '../../services/services'; /* 服务类 */ diff --git a/src/components/Common/CommonSubBill.js b/src/components/Common/CommonSubBill.js new file mode 100644 index 0000000..7f67805 --- /dev/null +++ b/src/components/Common/CommonSubBill.js @@ -0,0 +1,2109 @@ +/* eslint-disable */ +/* eslint-disable prefer-destructuring */ + +import React, { Component } from 'react'; +import { UploadOutlined } from '@ant-design/icons'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import { Row, Col, Checkbox, Layout, Spin, Tabs, Avatar, Button, Table, Input, Upload } from 'antd-v4'; +import { message } from '@/utils/common/message'; +import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; +import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ +import styles from '@/index.less'; +import CommonView from '@/components/Common/CommonView'; +import CommonViewTable from '@/components/Common/CommonViewTable'; +import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils';/* 通用方法 */ +import * as commonServices from '@/services/services';/* 服务类 */ + +import AddIcon from '@/assets/add.svg'; +import DisableAddIcon from '@/assets/disableadd.svg'; +import CopyIcon from '@/assets/copy.svg'; +import CopyAllIcon from '@/assets/copyall.svg'; +import DisableCopyIcon from '@/assets/disablecopy.svg'; +import DisableCopyAllIcon from '@/assets/disablecopyall.svg'; +import DelIcon from '@/assets/delete.svg'; +import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */ +import MaterialRemarkIcon from '@/assets/materialremark.svg'; +import DisMaRemarklIcon from '@/assets/disablematerialremark.svg'; +import ProcessIcon from '@/assets/process.svg'; +import DisableProcessIcon from '@/assets/disableprocess.svg'; +import MateriallIcon from '@/assets/material.svg'; +import DisableMateriallIcon from '@/assets/disablematerial.svg'; +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from '@/components/Common/CommonListSelect'; +import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; + +import StaticEditTree from '@/components/Common/Tree/StaticTree'; +import AddChildIcon from '@/assets/addChild.svg'; +import DisableAddChildIcon from '@/assets/disableaddChild.svg'; +import ContextMenuModal from '@/components/Common/ContextMenuModal'; +import CommonSubSales from '@/components/Common/CommonSubBillEvent'; +import CommonExamInfo from '@/components/Common/CommonExamInfo'; + +/* 继承销售模块业务功能 */ +const width = '18px'; +const height = '18px'; +const setAdd = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 删除, +}; +const setAddChild = { + title: '增加', + width: { width }, + height: { height }, + img: 添加, + disableimg: 添加, +}; +const setCopy = { + title: '复制', + width: { width }, + height: { height }, + img: 复制, + disableimg: 复制, +}; +const setCopyAll = { + title: '复制部件', + width: { width }, + height: { height }, + img: 复制部件, + disableimg: 复制部件, +}; +const setDelete = { + title: '删除', + width: { width }, + height: { height }, + img: 删除, + disableimg: 删除, +}; +const setProcess = { + title: '工序', + width: { width }, + height: { height }, + img: 选择工序, + disableimg: 删除, +}; +const setMaterial = { + title: '材料', + width: { width }, + height: { height }, + img: 选择材料, + disableimg: 选择材料, +}; + + +const { Header, Content, Sider } = Layout; +const { TabPane } = Tabs; +// const { confirm } = Modal; +/* 嵌套子表单据 */ +class CommonSubBill extends Component { + constructor(props) { + super(props); + this.state = { + slaveChildHeight: 0, + }; + } + + componentDidUpdate() { + let topTableHeight = (document.querySelector('.tabHeight')?.getBoundingClientRect?.()?.height) || 0; + const CommonViewClassHeight = (document.querySelector('.CommonViewClass')?.getBoundingClientRect?.()?.height) || 0; + const height = (window.innerHeight - topTableHeight - CommonViewClassHeight - 200); + if (height !== this.state.slaveChildHeight) { + this.setState({ slaveChildHeight: height }); + } + } + + /** 行选择 */ + onRowClick = (name, record) => { + if (name === 'control') { + this.props.onTableSelectRowChange(name, [record.sId]); + } + }; + + onChange = (checkedValues) => { + this.props.onSaveState({ + dataPersonArray: checkedValues, + }); + }; + getMenuStatus = (menu) => { + if (menu.sControlName === 'BtnImport') { + return !this.props.enabled; + } + }; + /** 上传后执行函数 */ + handleUploadChangeFile = async (info) => { + const { file } = info; + const { + masterData, sModelsId, app, token, sModelsType, masterConfig, + } = this.props; + if (file.response) { + if (file.response.code === 1) { + + /* 数据查询成功 */ + const errorInfo = file.response.dataset.rows[0].nocanbeInsert; + if (commonUtils.isNotEmptyObject(errorInfo)) { + message.error(errorInfo[0].sReason); + return; + } + + const name = masterConfig.gdsconfigformslave.find(item => item.sControlName.includes('ImportData') && item.bVisible)?.sControlName; + const temp = name?.split('_')[1] || 'slave'; + /** + * 按照slave处理 + */ + const { [`${temp}Data`]: tempData, [`${temp}Config`]: tempConfig, [`${temp}DelData`]: tempDelDataOld } = this.props; + + /* 把之前存放的数据删除 */ + const tempDelData = commonUtils.isNotEmptyArr(tempDelDataOld) ? tempDelDataOld : []; + if (commonUtils.isNotEmptyArr(tempData)) { + tempData.forEach((item) => { + if (commonUtils.isEmptyObject(item.handleType)) { + item.handleType = 'del'; + tempDelData.push(item); + } + }); + } + const returnData = file.response.dataset.rows[0].canbeInsert; + let iCount = 0; + let productIdDropDown; + if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */ + const iIndex = tempConfig?.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, temp, tempConfig.gdsconfigformslave[iIndex], returnData[0]); + productIdDropDown = sqlDropDownData.dropDownData; + } + } + for (let tableDataRow of returnData ) { + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataRow.key = tableDataRow.sId; + /* 若导入模板没有序号,则序号从1自增 */ + if (commonUtils.isEmptyObject(tableDataRow.iOrder)) { + iCount += 1; + tableDataRow.iOrder = iCount; + } + for (const child of Object.keys(tableDataRow)) { + const index = child.indexOf('_sRealValue_'); + if (index > -1) { + const property = child.substring(0, child.length - 12); + tableDataRow[property] = tableDataRow[child]; + } + } + if (productIdDropDown !== undefined) { + const iProductIdIndex = productIdDropDown.findIndex(item => (item.sId === tableDataRow.sProductId || item.sNId === tableDataRow.sProductId) && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ,期间 不生成新的产品 */ + tableDataRow.sProductId = tableDataRow.sProductName; + 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, + }); + } + } + // if (!tableDataRow.dNProductPrice) { + // tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice; + // } + // const models = 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.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models); + // tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow); + // } else { + // tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow); + // } + }; + this.props.onSaveState({ [`${temp}Data`]: returnData, [`${temp}DelData`]: tempDelData }); + } else { /* 失败s */ + this.props.getServiceError(file.response); + } + } + }; + handleUploadPropsSales = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId; + let existCustomerId = false; + if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) { + existCustomerId = true; + } else if (!sModelsType.includes('sales/')) { + existCustomerId = true; + } + return { + disabled: !this.props.enabled || !existCustomerId, /* 是否可用 */ + style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /* 是否显示 */ + }; + } + }; + + /** 上传后执行函数 */ + handleBeforeUpload = () => { + // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!isLt10M) { + // message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */ + // } + }; + /** 图片上传后执行函数 */ + handleUploadChange = (info, name) => { + const { file } = info; + if (file.response && file.response.code === 1) { + const sPicturePath = file.response.dataset.rows[0].savePathStr; + const spicture = sPicturePath; + const uploadInfo = { + sPicturePath, + sFileName: file.name, + }; + const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmpty(tableData[tableData.length - 1].sPicturePath)) { + tableData[tableData.length - 1].sPicturePath = uploadInfo.sPicturePath; + tableData[tableData.length - 1].spicture = spicture; + tableData[tableData.length - 1] = { + ...tableData[tableData.length - 1], + sPicturePath: uploadInfo.sPicturePath, + sFileName: uploadInfo.sFileName, + spicture, + handleType: commonUtils.isEmpty(tableData[tableData.length - 1].handleType) ? 'update' : tableData[tableData.length - 1].handleType, + }; + } else { + const tableDataRow = this.props.onDataRowAdd(name, true); + tableColumn.forEach((slaveChild) => { + const ckey = slaveChild.dataIndex; + if (ckey === 'sProductNo' || ckey === 'sProductName') { + tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : ''; + } else if (ckey === 'iOrder') { + tableDataRow[ckey] = ''; + } else if (file.response && file.response.code === 1) { + if (uploadInfo[ckey] !== undefined) { + tableDataRow[ckey] = uploadInfo[ckey]; + } + } + }); + tableData.push(tableDataRow); + } + this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); + } else if (file.response && file.response.code === -1) { + message.error(file.response.msg); + } + }; + handleOk = async (flag, tmpCheck, isWait) => { + const { + sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, sCheckRemark, + } = this.props; + const { currentPane } = app; + const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue; + if (bCkxTmpCheck === '1') { + const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait); + if (returnData.code === 1) { + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.onGetData(masterConfig, slaveConfig, checkConfig); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } else { + const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray; + if (commonUtils.isEmptyObject(dataPersonArray)) { + checkPersonData.forEach((item) => { + dataPersonArray.push(item.sUserId); + }); + } + const dataPersonString = dataPersonArray.join(','); + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { + sProName: 'Sp_System_AutoSendCheckMsg', + paramsMap: { + sFormGuid: sModelsId, + sBillKey: currentPane.sProcName, + sTbName: masterConfig.sTbName, + sGuid: masterData.sId, + sBillNo: masterData.sBillNo, + sCheckCondition: checkConditions, + sMemo: sCheckRemark, + sCheckModelGuid: sCheckModelId, + sCheckPerson: dataPersonString, + }, + }; + + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */ + if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) { + this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null); + const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`; + const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId }; + const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data; + if (returnCanCheckBill.code === 1) { + if (returnCanCheckBill.dataset.rows[0].iCount === 1) { + this.props.onDataAudit(1, 1); + this.props.onSaveState({ + visible: false, + }); + return; + } + } else { /* 失败 */ + this.props.getServiceError(returnCanCheckBill); + } + this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null); + message.success(returnData.msg); + } else { + message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn); + } + } else { /* 失败 */ + this.props.getServiceError(returnData); + } + } + this.props.onSaveState({ + visible: false, + }); + }; + + handleCancel = () => { + this.props.onSaveState({ + visible: false, + }); + }; + handleTableModal = async () => { + const { + sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, sModelsType, + } = this.props; + const addState = {}; + let treeState = {}; + if (this.props.sModelsType.includes('sales/salesOrder')) { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iIndex === -1 && iSlaveIndex > -1 && enabled) { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slaveData = slaveData; + let dropdownProductClassifyId; + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + if (commonUtils.isEmptyArr(dropdownProductClassifyId)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName'); + if (iIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]); + dropdownProductClassifyId = sqlDropDownData.dropDownData; + } + } + if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) { + const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId); + if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) { + const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName; + if (commonUtils.isNotEmptyStr(sAllPartsName)) { + const sAssignFieldObj = sAllPartsName.split(','); + for (const child of sAssignFieldObj) { + const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0]; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 0; + tableDataRowAdd.sPartsName = child; + tableDataRowAdd.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dStockupQty, 0); + tableDataRowAdd.sAllId = tableDataRowAdd.sId; + tableDataRowAdd.sControlParentId = ''; + controlData.push(tableDataRowAdd); + } + } + } + } + addState.controlData = controlData; + } + + if (controlData !== undefined) { + const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]); + if (iControlIndex > -1) { + addState.controlSelectedRowKeys = [controlData[iControlIndex].sId]; + } + } + if (sModelsType === 'sales/salesOrderPack') { + const sSlaveId = slaveSelectedRowKeys[0]; + if (commonUtils.isNotEmptyObject(sSlaveId)) { + treeState = this.props.onGetControlTreeData(controlData, true, sSlaveId); + } + } + } + + this.props.onSaveState({ + visibleModal: true, + ...addState, + ...treeState, + }); + }; + handleTableChooseProcess = () => { + const { processConfig } = this.props; + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + + if (iIndex > -1) { + this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]); + } + }; + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + }; + handleOkModal = async () => { + const { + controlData, materialsData, processData, slaveData, slaveSelectedRowKeys, + } = this.props; + const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const mtData = materialsData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]); + const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType !== '3'); + const p3Data = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '3'); /* 成品工序 */ + if (commonUtils.isNotEmptyArr(ctData)) { + let mDetail = ''; + let pDetail = ''; + const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + await ctData.forEach((controlItem, n) => { + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const qz = n === 0 ? '' : ' '; + if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) { + const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`; + const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`; + let imDetail = ''; + let ipDetail = ''; + const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId)); + // let materialsIdDropDown; + // const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName'); + // if (materialsIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]); + // materialsIdDropDown = sqlDropDownData.dropDownData; + // } + materials.forEach((mItem, i) => { + const fh = i === 0 ? '' : ','; + imDetail = `${imDetail}${fh} ${mItem.sMaterialsName}`; + }); + // processPropsType + const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId)); + // let processIdDropDown; + // const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName'); + // if (processIndex > -1) { + // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]); + // processIdDropDown = sqlDropDownData.dropDownData; + // } + // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName'); + process.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + ipDetail = `${ipDetail}${fh} ${pItem.sProcessName}`; + }); + if (commonUtils.isNotEmptyObject(imDetail)) { + mDetail = `${yDetail}${imDetail}`; + } + if (commonUtils.isNotEmptyObject(ipDetail)) { + pDetail = `${gDetail}${ipDetail}`; + } + } + } + }); + /* 成品工序 */ + let ip3Detail = ''; + if (commonUtils.isNotEmptyArr(p3Data)) { + p3Data.forEach((pItem, i) => { + const fh = i === 0 ? '' : ','; + ip3Detail = `${ip3Detail}${fh} ${pItem.sProcessName}`; + }); + } + if (commonUtils.isNotEmptyObject(ip3Detail)) { + if (commonUtils.isNotEmptyObject(pDetail)) { + pDetail = `${pDetail},${ip3Detail}`; + } else { + pDetail = ip3Detail; + } + } + slaveData[slaveIndex].sMaterialsMemo = mDetail; + slaveData[slaveIndex].sProcessMemo = pDetail; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) { + const sSlaveId = controlData[0].sSlaveId; + const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId); + slaveData[slaveIndex].sMaterialsMemo = ''; + slaveData[slaveIndex].sProcessMemo = ''; + slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType; + } + this.props.onSaveState({ + visibleModal: false, + controlData, + materialsData, + processData, + slaveData, + }); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterSlaveData = (name, dataIndex, value, record) => { + return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterData = (name, dataIndex, value, record) => { + const { sModelsId } = this.props; + let { slaveData, slaveSelectedRowKeys } = this.props; + if(sModelsId ==='12710101117043772382700' && name ==='slave0Child0') { + slaveSelectedRowKeys = this.props?.slave0SelectedRowKeys; + slaveData = this.props?.slave0Data; + } + if (name === 'process') { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + } else if ((name === 'slaveChild' || name.includes('slaveChild') || name.includes('Child')) && commonUtils.isNotEmptyArr(slaveData)) { + /* 找到从表的sSqlConditionId */ + let iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + if (iIndex === -1) { + iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + } + let sSqlConditionId = ''; + if (iIndex > -1) { + sSqlConditionId = slaveData[iIndex].sSqlConditionId; + if (commonUtils.isEmpty(sSqlConditionId)) { + sSqlConditionId = ''; + } + } + return commonUtils.isNotEmptyStr(record.sSqlConditionId) && record.sSqlConditionId.toString().toLowerCase() === sSqlConditionId.toString().toLowerCase(); + } else { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) && + commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())); + } + // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterData = (name) => { + const { + [`${name}Data`]: data, slaveData, controlSelectedRowKeys, slaveSelectedRowKeys, + } = this.props; + if (data !== undefined) { + const newArr = data.filter((item) => { + if (name === 'control') { + return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } else if ((name === 'slaveChild' || name.includes('slaveChild')) && commonUtils.isNotEmptyArr(slaveData)) { + /* 找到从表的sSqlConditionId */ + let iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + if (iIndex === -1) { + iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + } + let sSqlConditionId = ''; + if (iIndex > -1) { + sSqlConditionId = slaveData[iIndex].sSqlConditionId; + } + return commonUtils.isNotEmptyStr(item.sSqlConditionId) && commonUtils.isNotEmptyStr(sSqlConditionId) && item.sSqlConditionId.toString().toLowerCase().includes(sSqlConditionId.toString().toLowerCase()); + } else { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) && + commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString())); + } + }); + return newArr.length; + } + }; + /* 包装工单过滤行 */ /** 控制选择控制表时,显示部件工序与成品工序 */ + handleFilterDataPack = (name, dataIndex, value, record) => { + if (name === 'process') { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3') || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + } else { + return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2') || + (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase())); + } + }; + /* 控制表过滤材料表 工序表数据 */ + handleGetFilterDataPack = (name) => { + const { [`${name}Data`]: data, controlSelectedRowKeys } = this.props; + if (data !== undefined && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) { + const newArr = data.filter((item) => { + return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString())); + }); + return newArr.length; + } + }; + /** 添加表格空行 */ + handleTableAdd = async (name, flag, bchild) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig, + } = this.props; + let tableDataRow = {}; + if (name === 'control') { + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + if ((bchild === 'childNode' || bchild === 'sameNode') && (commonUtils.isEmptyArr(treeSelectedKeys) || commonUtils.isEmptyArr(controlSelectedRowKeys))) { + message.warn('请选择部件!'); // 请选择部件 + return; + } + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyObject(tableDataRow)) { + return; + } + let dPartsQty = 0; + if (commonUtils.isNotEmptyArr(slaveData)) { + slaveData.forEach((item) => { + dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); + }); + let productIdDropDown; + const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (slaveIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]); + productIdDropDown = sqlDropDownData.dropDownData; + } + if (productIdDropDown) { + const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId); + if (iProductIdIndex > -1) { + tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName; + } + } + } + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + if (sModelsType.includes('sales/salesOrder')) { + if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) { + tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0); + } + } else { + tableDataRow.dPartsQty = dPartsQty; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + /* 树形部件节点增加同级部件、增加子级部件 */ + if (sModelsType === 'sales/salesOrderPack') { + if (bchild === 'sameNode') { /* 添加同级 */ + const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]); + /* 找到同级子元素的sControlParentId */ + if (iIndex > -1) { + tableDataRow.sControlParentId = controlData[iIndex].sControlParentId; + /* 找到同级父级sAllId */ + const pId = controlData[iIndex].sControlParentId; + const sControlParentId = controlData.findIndex(item => item.sId === pId); + if (sControlParentId > -1) { + const sAllId = controlData[sControlParentId].sAllId; + if (commonUtils.isEmptyObject(sAllId)) { + message.warn('部件数据生成错误![sAllId为空]'); + return; + } + tableDataRow.sAllId = `${controlData[sControlParentId].sAllId},${tableDataRow.sId}`; + } else { + tableDataRow.sAllId = tableDataRow.sId; + } + } + } + if (bchild === 'childNode') { /* 添加子级 */ + tableDataRow.sControlParentId = treeSelectedKeys[0]; + const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]); + if (iIndex > -1) { + const sAllId = controlData[iIndex].sAllId; + if (commonUtils.isEmptyObject(sAllId)) { + message.warn('子部件数据生成错误![sAllId为空]'); // 获取父节点的sAllId + return; + } + tableDataRow.sAllId = `${controlData[iIndex].sAllId},${tableDataRow.sId}`; + } + } + } + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.props.onGetControlTreeData(tableData, true, tableDataRow.sSlaveId); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId], ...treeState }); + } else if (name === 'materials' || name === 'process') { + tableDataRow = this.props.onDataRowAdd(name, true); + if (commonUtils.isEmptyArr(controlSelectedRowKeys)) { + const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts'); + message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件 + return; + } + const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]); + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iIndex > -1 && iSlaveIndex > -1) { + if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') { + message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空 + return; + } + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + } + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] }); + } else { + this.props.onDataRowAdd(name, flag); + } + }; + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + otherDeliverTableDel = (name, tableSelectedRowKeys, slaveData) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + if (commonUtils.isNotEmptyArr(tableData)) { + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + /* 找到从表的sSqlConditionId */ + let iIndex = slaveData.findIndex(item => tableSelectedRowKeys.includes(item.sSlaveId)); + if (iIndex === -1) { + iIndex = slaveData.findIndex(item => tableSelectedRowKeys.includes(item.sId)); + } + let sSqlConditionId = ''; + if (iIndex > -1) { + sSqlConditionId = slaveData[iIndex].sSqlConditionId; + } + + let tableDataIndex = tableData.findIndex(item => item.sSqlConditionId === sSqlConditionId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sSqlConditionId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + } else { + return {}; + } + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys, isTree) => { + const { + sModelsType, slaveSelectedRowKeys, slaveData, formRoute, slaveChildConfig, + } = this.props; + if (name === 'control') { + // const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; /* 删除时,选中行取删除参数传过来的 */ + const { + controlData, treeSelectedKeys, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (isTree) { + /* 删除该节点及所有子节点 */ + const controlChildData = controlData.filter(item => commonUtils.isNotEmptyObject(item.sAllId) && item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(controlData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys); + const processReturnData = this.otherTableDel('process', tableSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + if (iSlaveIndex > -1) { + const sSlaveId = slaveData[iSlaveIndex].sId; + treeState = this.props.onGetControlTreeData(controlReturnData.controlData, true, sSlaveId); + } + } + this.props.onSaveState({ + ...materialsReturnData, + ...processReturnData, + ...controlReturnData, + ...treeState, + }); + return true; + } else { + message.warn('请选择要删除的部件!'); + return false; + } + } else if (name === 'slave' && commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill')) { + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + let slaveChildReturnData = {}; + if (commonUtils.isNotEmptyObject(slaveChildConfig)) { + slaveChildReturnData = this.otherDeliverTableDel('slaveChild', slaveSelectedRowKeys, slaveData); + } + const slaveReturnData = this.props.onDataRowDel(name, true, slaveSelectedRowKeys); + this.props.onSaveState({ + ...slaveChildReturnData, + ...slaveReturnData, + }); + return true; + } + } else { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + } + }; + /** 销售订单删除从表数据时也删除控制材料工序表数据 */ + handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => { + const { + sModelsType, controlData, processData, materialsData, + } = this.props; + if (sModelsType === 'sales/salesOrder' && name === 'slave') { + const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const controlDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(controlDataDel)) { + for (const item of controlDataDel) { + const materialsDataSelectedRowKey = item.sId; + controlDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) { + this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true); + } + const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const materialsDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(materialsDataDel)) { + for (const item of materialsDataDel) { + const materialsDataSelectedRowKey = item.sId; + materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) { + this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true); + } + const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]); + const processDataSelectedRowKeys = []; + if (!commonUtils.isEmpty(processDataDel)) { + for (const item of processDataDel) { + const processDataSelectedRowKey = item.sId; + processDataSelectedRowKeys.push(processDataSelectedRowKey); + } + } + if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) { + this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true); + } + } + } + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); + }; + handleSelect = async (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, tableName, sModelsType, + } = this.props; + const tableSelectedRowKeys = []; + if(selectConfig?.sControlName && selectConfig?.sControlName.includes('TmpInfoBySql')){ + const copyConfig = selectConfig; + const sConfigformId = commonUtils.isEmpty(copyConfig) ? '' : copyConfig.sParentId; + const sControlName = commonUtils.isNotEmptyObject(copyConfig) && copyConfig.sControlName ? copyConfig.sControlName : 'TmpInfoBySql'; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const addState = {}; + const sRowData = selectData; + const condition = { sConfigformId, sControlName, sRowData }; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + for (const key in returnData) { + let arr = JSON.parse(JSON.stringify(returnData[key])); + arr.forEach((item, idx) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + let config = masterConfig.gdsconfigformslave.filter(item => item.sControlName.split('.').length === 3 && item.sControlName.includes(selectConfig.sControlName + '.' + key))[0]; + const sAssignField = config ? config.sAssignField : copyConfig.sAssignField; + const newSid = commonUtils.createSid(); + let mixData = commonFunc.getDefaultData(this.props[`${key}Config`] || {}, newCopyTo, { newSid }); // 取默认值 + mixData = { ...mixData, ...commonFunc.getAssignFieldValue(sAssignField, item, newCopyTo) }; // 取赋值字段 + mixData.handleType = 'add'; + mixData.sId = newSid; + mixData.sParentId = key === 'mater' || key ==='TmpInfoBySql' ? mixData.sParentId : masterData.sId; + if (key === 'master' || key === 'TmpInfoBySql') { + mixData.sFormId = masterData.sFormId; + mixData.sId = masterData.sId; + mixData.maxBillNo = 'sBillNo'; + mixData.handleType = commonUtils.isEmpty( masterData.handleType) ? 'update' : masterData.handleType; + arr[idx] = mixData; + } else { + mixData.sParentId = masterData.sId; + mixData.sOriginalId = item.sId; + mixData.sOriginalSqlConditionId = item.sSqlConditionId; + if (key === 'slave') { + mixData.sSqlConditionId = newSid; + + } if (key === 'slaveChild') { + if (commonUtils.isNotEmptyArr(addState[`slaveData`])) { + const iIndex = addState[`slaveData`].findIndex(itemSlave => itemSlave.sOriginalId === item.sSqlConditionId); + if (iIndex > -1) { + mixData.sSqlConditionId = addState[`slaveData`][iIndex].sSqlConditionId; + } + } + mixData.sOriginalId = item.sId; + } + arr[idx] = mixData; + } + }); + const tableName = key === 'mater' || key === 'TmpInfoBySql' ? 'master' : key; + if (addState[`${tableName}Data`] === undefined) { + addState[`${tableName}Data`] = []; + } + addState[`${tableName}Data`] = addState[`${tableName}Data`].concat(arr); + if (commonUtils.isNotEmptyArr(addState[`${tableName}Data`])) { + addState[`${tableName}SelectedRowKeys`] = [addState[`${tableName}Data`][0].sId]; + } + + console.log('结果集', addState); + if (commonUtils.isNotEmptyArr(addState.masterData) && Array.isArray(addState.masterData)) { + addState.masterData = addState.masterData[0]; + } + addState[`${name}ChooseVisible`]= false; + if (Object.keys(addState).length) { + this.props.onSaveState({...addState}); + } + } + } else { + this.props.getServiceError(dataReturn); + } + } else if (name === 'productProcessInfo') { + if (commonUtils.isNotEmptyArr(selectData)) { + let slaveData = []; + let controlData = []; + let materialsData = []; + let processData = []; + let sConfigMasterIdSlave = ''; + let sConfigMasterIdControl = ''; + let sConfigMasterIdMaterials = ''; + let sConfigMasterIdProcess = ''; + const selectRowData = selectData[0]; + const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown; + if (commonUtils.isNotEmptyStr(sConfigIdString)) { + const sConfigId = JSON.parse(sConfigIdString); + sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave; + sConfigMasterIdControl = sConfigId.sConfigMasterIdControl; + sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials; + sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess; + } + if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) { + message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdControl)) { + message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) { + message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro')); + } + if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) { + message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro')); + } + const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`; + const value = { sSqlCondition: { sParentId: selectRowData.sId } }; + const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data; + if (slaveReturnData.code === 1) { + slaveData = slaveReturnData.dataset.rows[0].dataSet; + slaveData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(slaveReturnData); + } + + const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`; + const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data; + if (controlReturnData.code === 1) { + controlData = controlReturnData.dataset.rows[0].dataSet; + controlData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(controlReturnData); + } + const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`; + const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data; + if (materialsReturnData.code === 1) { + materialsData = materialsReturnData.dataset.rows[0].dataSet; + materialsData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(materialsReturnData); + } + const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`; + const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data; + if (processReturnData.code === 1) { + processData = processReturnData.dataset.rows[0].dataSet; + processData.forEach((item) => { + item.handleType = 'add'; + item.sId = commonUtils.createSid(); + item.sParentId = masterData.sId; + }); + } else { + this.props.getServiceError(processReturnData); + } + this.props.onSaveState({ + processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + }); + } + } else if (tableName === 'slave' && selectConfig.sControlName === 'BtnChooseMaterials') { + this.props.onSelect('slave', selectConfig, selectData); + } else if (sModelsType.includes('cashier/') && selectConfig.sControlName === 'BtnImportFormData') { + const { slaveData } = this.props; + let tableDataNew = []; + if (commonUtils.isNotEmptyArr(slaveData)) { + tableDataNew = slaveData; + tableDataNew.forEach((item, index) => { + const handleType = item.handleType; + if (commonUtils.isEmptyObject(handleType) || handleType === 'update') { + tableDataNew[index] = { ...item, handleType: 'del' }; + } + }); + } + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + let tableDataRow = {}; // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + tableDataNew.push(tableDataRow); + }); + this.props.onSaveState({ slaveData: tableDataNew, importFormDataVisible: false }); + } + } else { + const { controlData, slaveData, slaveSelectedRowKeys } = this.props; + const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.control = controlData[iIndex]; + } + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值 + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData.sId; + if (this.props.sModelsType.includes('sales/salesOrder')) { + const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1; + if (iSlaveIndex > -1) { + tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId; + } + } + if (iIndex > -1 && tableDataRow.sType !== '3') { + tableDataRow.sControlId = controlData[iIndex].sId; + tableDataRow.sPartsName = controlData[iIndex].sPartsName; + tableData.push(tableDataRow); + } else if (tableDataRow.sType === '3') { + tableData.push(tableDataRow); + } + tableSelectedRowKeys.push(tableDataRow.sId); + }); + } + const tableDataNew = this.sortData(controlData, tableData); + this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys }); + } + }; + + /** 树节点选中 */ + handleTreeSelect = (name, checkedKeys, e) => { + let { controlSelectedRowKeys } = this.props; + controlSelectedRowKeys = checkedKeys; /* 把树形选中节点赋值给表格部件选中节点 */ + this.props.onTreeSelect(name, checkedKeys, e); + this.props.onSaveState({ + controlSelectedRowKeys, + }); + }; + + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + handleGetDataOk = () => { + this.props.onDataImport('zero'); + } + handleGetDataCancel = () => { + this.props.onDataImport('all'); + } + colseGetDataVisible = () => { + this.props.onSaveState({ isGetDataVisible: false }); + } + + /* 审核备注文本框改变事件 */ + textChange= (e, record) => { + const sCheckRemark = commonUtils.isNotEmptyObject(record) && commonUtils.isNotEmptyObject(e.target.value) ? e.target.value : ''; + this.props.onSaveState({ sCheckRemark });/* 审核备注 */ + } + // ----------------------------数据修改回带end ---------------------------- // + + render() { + const { + pageLoading, masterConfig, visible, checkConditions, checkPersonData, visibleModal, processChooseVisible, materialsChooseVisible, app, sTabId, sModelsType, enabled, slaveSelectedRowKeys, + } = this.props; + const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */ + const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */ + const columns = [{ + title: checkCondition, + dataIndex: 'condition', + key: 'condition', + }, { + title: checkSmemo, + dataIndex: 'sMemo', + key: 'sMemo', + render: (text, record) => { + return ( +
+ { this.textChange(e, record); }} /> + + ); + }, + }]; + let chooseProcessConfig; + let onChooseProcessIndex; + /* 获取toolbar 选择工序 */ + if (commonUtils.isNotEmptyObject(masterConfig)) { + onChooseProcessIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + if (onChooseProcessIndex > -1) { + chooseProcessConfig = this.props.masterConfig.gdsconfigformslave[onChooseProcessIndex]; + } + } + /* 获取toolbar 选择材料 */ + let chooseMaterialsConfig; + const modalWidth = '1132'; + const fixedAutoHeight = sModelsType === 'sales/salesOrderPack' ? 120 : 66; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + if (iIndex > -1) { + chooseMaterialsConfig = masterConfig.gdsconfigformslave[iIndex]; + } + } + /* 若销售订单从表选中行被工单或其他调用 则材料与工艺只能查看不能操作 */ + let bUsed = enabled; + if (sModelsType.includes('sales/salesOrder') && enabled && commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const { slaveData } = this.props; + const iSlaveDataIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iSlaveDataIndex > -1) { + const sWorkOrderUsed = slaveData[iSlaveDataIndex].sWorkOrderUsed; + if (commonUtils.isNotEmptyObject(sWorkOrderUsed)) { + bUsed = false; + } + } + } + + const controlPropsType = { + ...commonBusiness.getTableTypes('control', this.props), + tableProps: { + CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight, setCopyAll, setProcess, setMaterial, chooseProcessConfigRow: chooseProcessConfig, chooseMaterialsConfigRow: chooseMaterialsConfig, onRow: (record) => { return { onClick: () => { this.onRowClick('control', record); } }; }, + }, + filteredValue: this.props.slaveSelectedRowKeys, + onFilterData: this.handleFilterSlaveData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onKeyDown: this.props.onKeyDown, + onDelRow: this.handleTableDel, + enabled: bUsed, + }; + const name = 'controlTree'; + const treeProps = { + ...commonBusiness.getTreeTypes('tree', this.props), + isSearch: false, + checkable: false, + disabled: false, + checkedAll: false, + unChecked: false, + [`${name}Column`]: this.props[`${name}Column`], + [`${name}Config`]: this.props[`${name}Config`], + [`${name}Data`]: this.props[`${name}Data`], + getFloatNum: this.props.getFloatNum, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, + getDateFormat: this.props.getDateFormat, + onDoubleClick: this.props.onDoubleClick, + onSelect: this.handleTreeSelect, + expandedKeys: this.props.expandedKeys, + showLine: true, + }; + const materialsPropsType = { + ...commonBusiness.getTableTypes('materials', this.props), + tableProps: { CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight }, + filteredValue: this.props.controlSelectedRowKeys, + onFilterData: this.handleFilterData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onKeyDown: this.props.onKeyDown, + enabled: bUsed, + }; + const processPropsType = { + ...commonBusiness.getTableTypes('process', this.props), + tableProps: { CalLastWidth: modalWidth, AutoTableHeight: 132 }, + filteredValue: this.props.controlSelectedRowKeys, + onFilterData: this.handleFilterData, + OnGetFilterData: this.handleGetFilterData, + onAddRow: this.handleTableAdd, + onChooseProcessRow: this.handleTableChooseProcess, + onKeyDown: this.props.onKeyDown, + enabled: bUsed, + }; + let searchProcessType = {}; + // let chooseProcessConfig = {}; + if (commonUtils.isNotEmptyObject(this.props.processChooseData)) { + // const iIndex = this.props.processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess'); + // if (iIndex > -1) { + // chooseProcessConfig = this.props.processConfig.gdsconfigformslave[iIndex]; + // } + + searchProcessType = { + app: { + ...this.props.app, + currentPane: { + name: 'process', + config: chooseProcessConfig, + conditonValues: this.props.getSqlCondition(chooseProcessConfig), + title: this.props.processChooseData.sMenuName, + route: this.props.processChooseData.sName, + formId: this.props.processChooseData.sId, + key: this.props.sModelsId + this.props.processChooseData.sId, + sModelsType: this.props.processChooseData.sModelType, + select: this.handleSelect, + selectCancel: this.props.onSelectCancel, + }, + }, + dispatch: this.props.dispatch, + content: this.props.content, + id: new Date().getTime().toString(), + realizeHeight: this.props.realizeHeight, /* 拖动偏移高度 */ + }; + } + + + let searchMaterialsType = {}; + // let chooseMaterialsConfig = {}; + if (commonUtils.isNotEmptyObject(this.props.materialsChooseData) && this.props.tableName !== 'slave') { + // const iIndex = this.props.materialsConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + // if (iIndex > -1) { + // chooseMaterialsConfig = this.props.materialsConfig.gdsconfigformslave[iIndex]; + // } + + searchMaterialsType = { + app: { + ...this.props.app, + currentPane: { + name: 'materials', + config: chooseMaterialsConfig, + conditonValues: this.props.getSqlCondition(chooseMaterialsConfig), + title: this.props.materialsChooseData.sMenuName, + route: this.props.materialsChooseData.sName, + formId: this.props.materialsChooseData.sId, + key: this.props.sModelsId + this.props.materialsChooseData.sId, + sModelsType: this.props.materialsChooseData.sModelsType, + select: this.handleSelect, + selectCancel: this.props.onSelectCancel, + }, + }, + dispatch: this.props.dispatch, + content: this.props.content, + id: new Date().getTime().toString(), + realizeHeight: this.props.realizeHeight, + }; + } + const pane = app.panes.filter(paneTmp => paneTmp.key === sTabId)[0]; + const setMaterailRemark = commonFunc.showMessage(app.commonConst, 'setMaterailRemark');/* 选择材料与工艺 */ + const setProcessTitle = commonFunc.showMessage(app.commonConst, 'setProcess');/* 选择工序标题 */ + const setMaterialTitle = commonFunc.showMessage(app.commonConst, 'setMaterial');/* 选择材料标题 */ + const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */ + const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */ + const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */ + const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */ + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateAdd = {this.props.enabled ? setAdd.img : setAdd.disableimg} ; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateAddChild = {this.props.enabled ? setAddChild.img : setAddChild.disableimg }; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateCopy = {this.props.enabled ? setCopy.img : setCopy.disableimg}; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateUpdate = {this.props.enabled ? setCopyAll.img : setCopyAll.disableimg }; + // eslint-disable-next-line jsx-a11y/anchor-is-valid + const operateDel = {this.props.enabled ? setDelete.img : setDelete.disableimg}; + return ( +
+ +
+ + { + visible ? + {BtnClose}, + , + ]} + > +
+
{checkPerson}
+
+ + + { commonUtils.isNotEmptyObject(checkPersonData) ? + checkPersonData.map((item) => { + return ( +
+ {item.sUserName} + + ); + }) + : '' + } + + + + + : '' + } + { + visibleModal ? + {BtnClose}, + , + ]} + > + { + (pane.notCurrentPane ? false : processChooseVisible) ? + + + + : '' + } + { + (pane.notCurrentPane ? false : materialsChooseVisible) ? + + + + : '' + } +
+ { + sModelsType === 'sales/salesOrderPack' ? +
+
+ +
+
+
+
+ {operateAdd} + {operateAddChild} + {operateCopy} + {operateUpdate} + {operateDel} +
+
+ +
+ +
+
+
: +
+ +
+ } +
+ +
+
+ +
+
+ + : ''} +
+ + + ); + } +} + +const CommonSubBillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + slaveData, + slavePagination, + slavePageSize, + slaveChildPagination, + slaveChildPageSize, + onlyMaster, + AutoTableHeight, + sModelsId, + app, + onlyMasterAndSlave, + masterConfig, + slaveConfig, + slaveChildConfig, + isSmall, + isGetDataVisible, + onGetDataCancel, + onGetDataOk, + colseGetDataVisible, + sModelsType, + masterData = {}, + checkConfig, + } = props; + /* 回带表单 */ + onReturnForm(form); + const pagination = { + pageSize: commonUtils.isNotEmptyNumber(slavePageSize) && slavePageSize !== 0 ? slavePageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // size: 'large', + // showQuickJumper: true, + hideOnSinglePage: false, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const paginationChild = { + pageSize: commonUtils.isNotEmptyNumber(slaveChildPageSize) && slaveChildPageSize !== 0 ? slaveChildPageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slaveChildPagination) ? 1 : slaveChildPagination.current, + ...slaveChildPagination, + // size: 'large', + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0]; + let setMaterialRemark = { + title: '材料与工艺', + width: { width }, + height: { height }, + img: 材料与工艺, + disableimg: 材料与工艺不可用, + }; + /* 获取toolbar 选择材料 */ + let searchMaterialsType = {}; + let chooseMaterialsConfig = {}; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials'); + if (iIndex > -1) { + chooseMaterialsConfig = slaveConfig.gdsconfigformslave[iIndex]; + } + } + if (commonUtils.isNotEmptyObject(props.materialsChooseData)) { + searchMaterialsType = { + app: { + ...props.app, + currentPane: { + name: 'materials', + config: chooseMaterialsConfig, + conditonValues: props.getSqlCondition(chooseMaterialsConfig), + title: props.materialsChooseData.sMenuName, + route: props.materialsChooseData.sName, + formId: props.materialsChooseData.sId, + key: sModelsId + props.materialsChooseData.sId, + sModelsType: props.materialsChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + realizeHeight: props.realizeHeight, /* 拖动偏移高度 */ + }; + } + + + let productProcessInfoType = {}; + let productProcessInfoConfig = {}; + let processCardSearchResult = commonFunc.showMessage(app.commonConst, 'processCardSearchResult');/* 复制从工艺卡查询结果 */ + if (commonUtils.isNotEmptyObject(props.productProcessInfoChooseData)) { + const productProcessInfoCopyFromKey = props.productProcessInfoCopyFromKey; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === productProcessInfoCopyFromKey); + if (iIndex > -1) { + productProcessInfoConfig = masterConfig.gdsconfigformslave[iIndex]; + processCardSearchResult = commonUtils.isNotEmptyObject(productProcessInfoConfig) && commonUtils.isNotEmptyObject(productProcessInfoConfig.sActiveName) ? productProcessInfoConfig.sActiveName : processCardSearchResult; + } + productProcessInfoType = { + app: { + ...props.app, + currentPane: { + name: 'productProcessInfo', + config: productProcessInfoConfig, + conditonValues: props.getSqlCondition(productProcessInfoConfig), + title: props.productProcessInfoChooseData.sMenuName, + route: props.productProcessInfoChooseData.sName, + formId: props.productProcessInfoChooseData.sId, + key: props.sModelsId + props.productProcessInfoChooseData.sId, + sModelsType: props.productProcessInfoChooseData.sModelType, + select: props.onSelect, + selectCancel: props.onSelectCancel, + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + }; + } + + /* 导入收付款未清数据 */ + let importPopupProps = {}; + let importPopupTitle = '导入未清数据'; + if (commonUtils.isNotEmptyObject(props)) { + let importPopupConfig = {}; + const { + masterConfig, sModelsId, + } = props; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnImportFormData' && item.bVisible); + if (iIndex > -1) { + importPopupConfig = masterConfig.gdsconfigformslave[iIndex]; + importPopupTitle = commonUtils.isNotEmptyObject(importPopupConfig) && commonUtils.isNotEmptyObject(importPopupConfig.sActiveName) ? importPopupConfig.sActiveName : importPopupTitle; + importPopupProps = { + app: { + ...props.app, + currentPane: { + name: 'commonPopup', + config: importPopupConfig, + conditonValues: {}, + title: importPopupTitle, + route: '/indexPage/commonList', + formRoute: '/indexPage/commonList', + formId: importPopupConfig.sActiveId, + key: sModelsId + importPopupConfig.sId, + sModelsType: 'search/importFormData', + select: props.onSelect, + selectCancel: props.handleCancelModal.bind(this, 'importFormDataVisible'), + bFilterProName: props.bFilterProName, /* 存储过程查询ID */ + bFilterProValue: props.bFilterProValue, /* 存储过程查询VALUE */ + }, + }, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + realizeHeight: props.realizeHeight, /* 拖动偏移高度 */ + }; + } + } + } + + // const saleOrder = commonFunc.showMessage(app.commonConst, 'saleOrder');/* 销售订单 */ + setMaterialRemark = props.sModelsType !== undefined && props.sModelsType.includes('sales/salesOrder') ? setMaterialRemark : null; + const bHasSlaveChild = commonUtils.isNotEmptyArr(props.slaveChildInfoList) && props.slaveChildInfoList.some(item => item.split('Child')[0] === 'slave'); + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableProps: { + setAdd, + setCopy, + setCopyAll, + setDelete, + setMaterialRemark, + setMaterial, + chooseMaterialsConfigRow: chooseMaterialsConfig, + pagination, + onChange: props.onTitleChange.bind(this, 'slave'), + AutoTableHeight: commonUtils.isNotEmptyObject(slaveChildConfig) || bHasSlaveChild ? 150 : 375, + }, + templateProps, + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下一行 + 说明:添加keyDown事件透传 + */ + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + onDelRow: props.onDelRow, + }; + + // 自定义列 + const { customConfig: customConfigStr } = masterData; + const customConfig = commonUtils.convertStrToObj(customConfigStr, []); + if (customConfig.length) { + const customConfigNew = customConfig.sort( + (a, b) => a.iOrder - b.iOrder + ); + const tempConfig = { ...slaveTableProps.config, gdsconfigformslave: customConfigNew }; + slaveTableProps.config = tempConfig; + slaveTableProps.headerColumn = commonFunc.getHeaderConfig(tempConfig); + } + + let bOpterationColumn = true; + if (commonUtils.isNotEmptyObject(slaveChildConfig) && commonUtils.isNotEmptyObject(slaveChildConfig.sTbName) && slaveChildConfig.sTbName.includes('noTable')) { + bOpterationColumn = false; + } + + const dataFilter = (tableProps, type) => { + const { slaveSelectedRowKeys } = props; + let oriData = commonUtils.isNotEmptyArr(tableProps.data) ? tableProps.data : []; + let res = []; + if (type === 'slaveChild' && commonUtils.isNotEmptyArr(slaveData) ) { + /* 找到从表的sSqlConditionId */ + let iIndex = -1; + if(commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + iIndex = 0; + }else { + iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + if (iIndex === -1) { + iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + } + } + let sSqlConditionId = ''; + if (iIndex > -1) { + sSqlConditionId = slaveData[iIndex].sSqlConditionId; + if (commonUtils.isEmpty(sSqlConditionId)) { + sSqlConditionId = ''; + } + } + res = oriData.filter(item => item.sSqlConditionId === sSqlConditionId); + } + return res; + } + + const slaveChildTableProps = { + ...commonBusiness.getTableTypes('slaveChild', props), + filteredValue: props.slaveSelectedRowKeys, + onFilterData: props.onFilterData, + OnGetFilterData: props.onGetFilterData, + tableProps: { + setAdd, setCopy, setDelete, paginationChild, onChange: props.onTitleChange.bind(this, 'slaveChild'), AutoTableHeight: props.slaveChildHeight, + }, + templateProps, + bRowClick: true, + enabled: bOpterationColumn ? props.enabled : false, + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下一行 + 说明:添加keyDown事件透传 + */ + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + if(sModelsId === '12710101117012583364790') { /* 询价单单据特殊处理 */ + slaveChildTableProps.data = dataFilter(commonBusiness.getTableTypes('slaveChild', props), 'slaveChild'); + } + + const slaveTablePropsList = {}; + if (commonUtils.isNotEmptyArr(props.slaveInfoList)) { + props.slaveInfoList.forEach((item, index) => { + // const slaveTablePagination = { + // pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, + // ...slavePagination, + // size: isSmall ? 'small' : 'large', + // pageSizeOptions: commonConfig.pageSizeOptions, + // showSizeChanger: !isSmall, + // showQuickJumper: !isSmall, + // hideOnSinglePage: true, + // }; + const bHasSlaveChild = commonUtils.isNotEmptyArr(props.slaveChildInfoList) && props.slaveChildInfoList.some(item => item.split('Child')[0] === `slave${index}`); + slaveTablePropsList[`slaveTable${index}Props`] = { + ...commonBusiness.getTableTypes(`slave${index}`, props), + // tableBelone: 'list', + tableProps: { + // pagination: slaveTablePagination, onChange: props.onTitleChange1.bind(this, `slave${index}`), + AutoTableHeight: commonUtils.isNotEmptyObject(slaveChildConfig) || bHasSlaveChild ? 150 : 375, + }, + }; + }); + } + + + let gdsconfigformmasterId = ''; + if (templateProps !== undefined) { + gdsconfigformmasterId = templateProps.sId; + } + + const sNotEmpty = 'sParentId,sProductId'; + let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`; + /* 送货单需要传客户id */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) { + const sCustomerId = masterData.sCustomerId; + if (commonUtils.isNotEmptyObject(sCustomerId)) { + uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`; + } + } + const outProps = { + action: uploadUrl, + onChange: props.onUploadChangeFile, /* 文件上传 */ + accept: 'xls/*', + showUploadList: false, + beforeUpload: () => { + /* 查看时不可上传 */ + if (!props.enabled) return false; + }, + }; + const uploadPropsSales = props.onUploadPropsSales(); + // let MainContent = commonFunc.showMessage(app.commonConst, 'MainContent');/* 主体内容 */ + const isGetData = commonFunc.showMessage(app.commonConst, 'isGetData');/* 确认获取库存为零的数据吗 */ + const isFilterGetDataZero = commonFunc.showMessage(app.commonConst, 'isFilterGetDataZero'); + const isAllGetData = commonFunc.showMessage(app.commonConst, 'isAllGetData'); + const CheckInfo = commonFunc.showMessage(app.commonConst, 'CheckInfo');/* 审批信息 */ + const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */ + const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */ + const MainContent = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'MainContent')[0].showName : commonFunc.showMessage(app.commonConst, 'MainContent'); /* 子表 */ + + const slaveInfo0 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo0')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo0'); /* 表三 */ + const slaveInfo1 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo1')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo1'); /* 表四 */ + const slaveInfo2 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo2')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo2'); /* 表五 */ + const slaveInfo3 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo3')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo3'); /* 表六 */ + const slaveInfo4 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo4')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo4'); /* 表七 */ + const slaveInfo5 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo5')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo5'); /* 表八 */ + const slaveInfo6 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo6')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo6'); /* 表九 */ + const slaveInfo7 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo7')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo7'); /* 表十 */ + const slaveInfo8 = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveInfo8')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveInfo8'); /* 表十一 */ + const zSlaveChild = masterConfig && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveChild')) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'zSlaveChild')[0].showName : commonFunc.showMessage(app.commonConst, 'zSlaveChild'); /* 子表 */ + + const slaveInfoArr = [ + slaveInfo0, + slaveInfo1, + slaveInfo2, + slaveInfo3, + slaveInfo4, + slaveInfo5, + slaveInfo6, + slaveInfo7, + slaveInfo8 + ]; + + /* + if (props.sModelsType === 'sales/salesOrder') { + const btnUpload = ( + + + ); + slaveTableProps.tableProps.newButton = btnUpload; + } + */ + + const baseTabChange = () => { + const resize = new Event('resize'); + window.dispatchEvent(resize); + } + const { currentPane } = app; + const bFlow = currentPane?.bFlow; /* 是否需要展示审批流程信息 */ + + const flexContentStyle = bFlow ? { width:'75%'} : {}; + return ( +
+ +
+
+ + { commonUtils.isNotEmptyArr(ImportData) ? +
+ {BtnimportData} +
: ''} +
+
+ + +
+
+ +
+
+ { onlyMaster ? +
+
+ +
+
: +
+
+ +
+ + + + + + { props.slaveInfoList?.map((item, index) => { + const slaveTableProps = slaveTablePropsList[`slaveTable${index}Props`]; + const tabTitle = slaveInfoArr[index]; + return ( + + + + ); + }) } + { + commonUtils.isNotEmptyObject(checkConfig) ? + +
+ +
+
: '' } +
+
} + { onlyMasterAndSlave ? +
+
+ +
+ + + + + +
: '' } + {commonUtils.isNotEmptyObject(slaveChildConfig) ? + + + + + + : '' + } +
+ { + bFlow ? +
+ +
+ : '' + } +
+
+ { + isGetDataVisible ? + + {isAllGetData} + , + , + ]} + > +

{isGetData}

+
+ : '' + } + { + props.materialsChooseVisible && !props.visibleModal ? + + + + : '' + } + { + props.productProcessInfoChooseVisible ? + + + + : '' + } + { + props.importFormDataVisible ? + + + + : '' + } + { + props.contextMenuModalVisible ? + + : '' + } + + ); +}); + +const SlaveChildTabComponent = (props) => { + const { slaveName, slaveChildInfoList = [], app, isSmall, sModelsId } = props; + + const slaveChildList = slaveChildInfoList.filter(item => item.split('Child')[0] === slaveName); + if (slaveChildList.length === 0) { + return ''; + } + + const bCjrb = app?.currentPane?.title?.includes("车间日报"); + + return ( + + {slaveChildList.map(childName => { + const {[`${childName}PageSize`]: slaveChildPageSize, [`${childName}Pagination`]: slaveChildPagination, + [`${slaveName}SelectedRowKeys`]: tableSelectedRowKeys, + [`${childName}Data`]: slaveChildData} = props; + const paginationSlaveChild = { + pageSize: commonUtils.isNotEmptyNumber(slaveChildPageSize) && slaveChildPageSize !== 0 ? slaveChildPageSize : commonConfig.pageSize, + total: commonUtils.isEmptyArr(slaveChildData) ? 0 : slaveChildData.length, + current: commonUtils.isEmptyObject(slaveChildPagination) ? 1 : slaveChildPagination.current, + ...slaveChildPagination, + // size: 'large', + // showQuickJumper: true, + hideOnSinglePage: true, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const tableProps = { + ...commonBusiness.getTableTypes(childName, props), + tableProps: { + AutoTableHeight: bCjrb ? 250 : 150, + pagination:paginationSlaveChild, onChange: props.onTitleChange.bind(this, childName), + }, + filteredValue: props.slaveSelectedRowKeys, + // onFilterData: props.onFilterData, + OnGetFilterData: props.onGetFilterData, + }; + if(sModelsId === '12710101117043772382700'){ /* 特殊处理车间版材报废考核 */ + tableProps.filteredValue= tableSelectedRowKeys; + if(childName ==='slaveChild1' || childName ==='slave0Child0') { + tableProps.onFilterData = props.onFilterData; + } + } else { + tableProps.onFilterData = props.onFilterData; + } + + return ( + + + + ); + })} + ); +} + +export default CommonBase(CommonSubSales(CommonSubBill)); diff --git a/src/components/Common/CommonSubBillEvent.js b/src/components/Common/CommonSubBillEvent.js new file mode 100644 index 0000000..06a1a87 --- /dev/null +++ b/src/components/Common/CommonSubBillEvent.js @@ -0,0 +1,6913 @@ +/* eslint-disable */ +/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ +/** + * Created by pm on 2021-08-17 用于送货单个性化. + */ +import React, { Component } from 'react'; +import { Modal } from 'antd'; +import { message } from '@/utils/common/message'; +import {Progress} from 'antd-v4' +import moment from 'moment'; +import * as commonUtils from '../../utils/utils'; /* 通用方法 */ +import {commonBusiness} from './commonBusiness'; /* 单据业务功能 */ +import * as commonServices from '../../services/services'; /* 服务类 */ +import commonConfig from '../../utils/config'; +import * as commonFunc from './commonFunc'; +import { cloneDeep } from 'lodash'; +import styles from '@/components/Common/ToolBar/index.less'; + +const { confirm } = Modal; + +export default (ChildComponent) => { + return class extends Component { + constructor(props) { + super(props); + this.state = { + changleCustomerId: '', + dPackQtyChange: 0, + }; + this.form = {}; /* 表单对象 */ + const { sModelsId, sModelsType } = props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sSrcNo', []); + } + async componentWillReceiveProps(nextProps) { + const { + formData, currentId, sModelsType, formRoute, + } = nextProps; + const { + slaveConfig: slaveConfigOld, + masterConfig: masterConfigOld, + app, + employeeConfig: employeeConfigOld, + } = nextProps; + if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0 && (sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' && sModelsType !== 'quality/accident' && sModelsType !== 'purchase/purchaseEnquiry' && sModelsType !== 'complaint/complaint' && sModelsType !== 'print/printLabel' && sModelsType !== 'commonBill/onlyMaster' && formRoute.indexOf('indexOee') === -1)) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const BtnDesignFunctionConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnBsOperation.BtnDesignFunction') : {}; + const reportDesign = commonFunc.showMessage(app.commonConst, 'reportDesign');/* 报表设计 */ + if (commonUtils.isEmptyObject(BtnDesignFunctionConfig)) { + masterConfig.gdsconfigformslave.push({ + bCanInput: false, + bEntireLine: false, + bFilter: false, + bFind: false, + bFirstEmpty: false, + bIsOther: false, + bMultipleChoice: false, + bNewRecord: false, + bNotEmpty: false, + bNotRepeat: false, + bReadonly: false, + bSum: false, + bTree: false, + bVisible: true, + iColValue: 1, + iFitWidth: 120, + /* iIncrement: 26154, */ + iOrder: 1, + iTag: 0, + iVisCount: 0, + iconName: 'menu-unfold', + sActiveKey: '', + sAssignField: '', + sBig5: '', + sBig5DropDown: '', + sBrandsId: '1111111111', + sChinese: '报表设计', + sChineseDropDown: '', + sColor: '', + sColorTerms: '', + sControlName: 'BtnBsOperation.BtnDesignFunction', + sDateFormat: '', + sDefault: '', + sDropDownType: '', + sEnglish: '', + sEnglishDropDown: '', + sFilterSql: '', + /* sId: '19211681019715580740769130', */ + sKeyUpFilter: '', + sMaxValue: '', + sMinValue: '', + sName: '', + sNotRepeatColumn: '', + /* sParentId: '19211681019715428730724240', */ + sRelation: '', + sSelectRelation: '', + sSqlCondition: '', + sSubsidiaryId: '1111111111', + showDropDown: '', + showName: reportDesign, + }); + } + /* bGrd代表是否是表格 */ + let slaveConfig = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult')[0]; + let slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + const slavePageSize = commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyNumber(slaveConfig.iPageSize) && slaveConfig.iPageSize !== 0 ? + slaveConfig.iPageSize : commonConfig.pageSize; + const checkConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.bGrdVisible && item.sTbName === 'sysbillcheckresult')) ? formData.filter(item => item.bGrd && item.sTbName === 'sysbillcheckresult')[0] : {}; + let checkColumn = {}; + if (commonUtils.isNotEmptyObject(checkConfig)) { + checkColumn = commonFunc.getHeaderConfig(checkConfig); + } + let addState = {}; + addState.slavePageSize = slavePageSize; + if (formRoute === '/indexPage/commonBill' && sModelsType === 'cost/cosexpenseshare') { + const { sModelsId } = this.props; + const { sId, sParentId } = slaveConfig; + let sAssignStandardConfig = {}; + const filterData = slaveConfig.gdsconfigformslave.filter(item => item.sName === 'sAssignStandard'); + if (commonUtils.isNotEmptyArr(filterData)) { + sAssignStandardConfig = filterData[0]; + } + const url = `${commonConfig.server_host}costCenter/getCostCenterConfig?sModelsId=${sModelsId}`; + const body = { + sId, + sParentId, + sAssignStandardConfig, + }; + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset;/* 获取费用分摊单据配置 */ + if (commonUtils.isNotEmptyArr(rows) && rows.length > 0) { + slaveConfig = rows[0]; + slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + } + } else { /* 失败s */ + this.props.getServiceError(dataReturn); + return []; + } + } + if (formRoute === '/indexPage/commonBill' || formRoute === '/indexPage/commonSubBill') { + if (sId === '') { + const config = {}; + let addState1 = {}; + let infoList = []; // bShowSlaveChild 处理 + if (sModelsType.includes('sales/salesOrder')) { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordermaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + const colorConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderparam'.toUpperCase())[0]; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + const packConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrolcombine'.toUpperCase())[0]; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + config.controlConfig = controlConfig; + config.materialsConfig = materialsConfig; + config.processConfig = processConfig; + config.colorConfig = colorConfig; + config.packConfig = packConfig; + addState1 = { + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + colorConfig, + colorColumn, + packConfig, + packColumn, + }; + } else if (sModelsType === 'purchase/purchaseOrder') { + const orderDetailConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.sTbName.toUpperCase() === 'purpurchaseorderDetail'.toUpperCase())) ? + formData.filter(item => item.sTbName.toUpperCase() === 'purpurchaseorderDetail'.toUpperCase())[0] : {}; + if(commonUtils.isNotEmptyObject(orderDetailConfig)) { + const orderDetailColumn = commonFunc.getHeaderConfig(orderDetailConfig); + config.orderDetailConfig = orderDetailConfig; + this.handleGetOneMemoData('orderDetail', orderDetailConfig); + addState1 = { + orderDetailConfig, + orderDetailColumn, + }; + } + + } + if (formRoute === '/indexPage/commonSubBill') { /* 附属子表获取数据 */ + let bShowSlaveChild = false; + const bShowSlaveChildIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowSlaveChild'); + if (bShowSlaveChildIndex !== -1) { + bShowSlaveChild = masterConfig.gdsconfigformslave[bShowSlaveChildIndex].bVisible; + } + if (bShowSlaveChild) { + const filterSlaveData = formData.filter((item, index) => { + return index >= 2 + && item.sTbName !== 'sysbillcheckresult' + && item.bGrd + && item.bGrdVisible + && item.sGrd + && item.sGrd.indexOf('_') === -1 + }); + + const filterSlaveChildData = formData.filter((item, index) => { + return index >= 2 + && item.bGrd + && item.bGrdVisible + && item.sGrd + && item.sGrd.indexOf('_') !== -1 + }); + + const addState2 = {}; + const memoDataList = []; + const slaveInfoList = []; + const slaveChildInfoList = []; + + [slaveConfig, ...filterSlaveData].forEach((config, index) => { + const slaveName = `slave${index === 0 ? '' : index - 1}`; + if (index !== 0) { + addState2[`${slaveName}Config`] = config; + addState2[`${slaveName}Column`] = commonFunc.getHeaderConfig(config); + memoDataList.push({ + name: slaveName, + config, + }); + slaveInfoList.push(slaveName); + } + filterSlaveChildData.filter(childConfig => + config.sChildTableName + && config.sChildTableName.split(',').includes(childConfig.sGrd) + ).forEach((childConfig, childIndex) => { + const slaveChildName = `${slaveName}Child${childIndex}`; + addState2[`${slaveChildName}Config`] = childConfig; + addState2[`${slaveChildName}Column`] = commonFunc.getHeaderConfig(childConfig); + const slaveChildPageSize = commonUtils.isNotEmptyObject(childConfig) && commonUtils.isNotEmptyNumber(childConfig.iPageSize) + && childConfig.iPageSize !== 0 ? childConfig.iPageSize : commonConfig.pageSize; + addState2[`${slaveChildName}PageSize`] = slaveChildPageSize; + memoDataList.push({ + name: slaveChildName, + config: childConfig, + }); + slaveChildInfoList.push(slaveChildName); + }); + }); + + addState2.slaveInfoList = slaveInfoList; + addState2.slaveChildInfoList = slaveChildInfoList; + infoList = slaveChildInfoList; + addState1 = { ...addState1, ...addState2 }; + } else { + const filterData = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible); + if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 1 && filterData.length === 2) { + const slaveChildConfig = filterData[1]; + const slaveChildColumn = commonFunc.getHeaderConfig(slaveChildConfig); + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + const slaveChildPageSize = commonUtils.isNotEmptyObject(slaveChildConfig) && commonUtils.isNotEmptyNumber(slaveChildConfig.iPageSize) && slaveChildConfig.iPageSize !== 0 ? + slaveChildConfig.iPageSize : commonConfig.pageSize; + addState1 = { + slaveChildConfig, + slaveChildColumn, + slaveChildPageSize, + }; + } else if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 2) { + const slaveChildConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isNotEmptyObject(item.sChildTableName))) ? + formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isNotEmptyObject(item.sChildTableName))[0] : {}; + + const slaveChildColumn = commonUtils.isNotEmptyObject(slaveChildConfig) ? commonFunc.getHeaderConfig(slaveChildConfig):[]; + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + const slaveChildPageSize = commonUtils.isNotEmptyObject(slaveChildConfig) && commonUtils.isNotEmptyNumber(slaveChildConfig.iPageSize) && slaveChildConfig.iPageSize !== 0 ? + slaveChildConfig.iPageSize : commonConfig.pageSize; + addState1 = { + slaveChildConfig, + slaveChildColumn, + slaveChildPageSize, + }; + + // eslint-disable-next-line no-unused-vars + const addState2 = {}; + const memoDataList = []; + const slaveInfoList = []; + let slaveIndex = 0; + formData.forEach((item, index) => { + if (index >= 2 && commonUtils.isNotEmptyObject(item) && item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isEmptyObject(item.sChildTableName)) { + addState1[`slave${slaveIndex}Config`] = item; + config[`slave${slaveIndex}Config`] = item; + addState1[`slave${slaveIndex}Column`] = commonFunc.getHeaderConfig(item); + memoDataList.push({ + name: `slave${slaveIndex}`, + config: item, + }); + slaveInfoList.push(`slave${slaveIndex}`); + // eslint-disable-next-line no-plusplus + slaveIndex++; + } + }); + addState1.slaveInfoList = slaveInfoList; + } + } + } + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + if (Array.isArray(infoList)) { + infoList.forEach(i => { + config[`${i}Config`] = addState1[`${i}Config`]; + }) + } + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true, infoList); + addState = { ...addState, ...addState1 }; + // if (sModelsType.includes('sales/salesOrder') || sModelsType === 'purchase/purchaseOrder') { + // this.props.onSaveState(addState1); + // } + } else { + this.handleGetData(masterConfig, slaveConfig, checkConfig); + if (sModelsType.includes('sales/salesOrder')) { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordermaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + const colorConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesorderparam'.toUpperCase())[0]; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + const packConfig = formData.filter(item => item.sTbName.toUpperCase() === 'salsalesordercontrolcombine'.toUpperCase())[0]; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + this.props.onSaveState({ + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + colorConfig, + colorColumn, + packConfig, + packColumn, + }); + } else if (sModelsType === 'manufacture/workOrder3') { + const controlConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductcontrol'.toUpperCase())[0]; + const controlColumn = commonFunc.getHeaderConfig(controlConfig); + const materialsConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductmaterials'.toUpperCase())[0]; + const materialsColumn = commonFunc.getHeaderConfig(materialsConfig); + const processConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductprocess'.toUpperCase())[0]; + const processColumn = commonFunc.getHeaderConfig(processConfig); + this.handleGetMemoData(controlConfig, materialsConfig, processConfig); + this.props.onSaveState({ + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + }); + } else if (formRoute === '/indexPage/commonSubBill') { /* 通用子从表获取数据 */ + let bShowSlaveChild = false; + const bShowSlaveChildIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowSlaveChild'); + if (bShowSlaveChildIndex !== -1) { + bShowSlaveChild = masterConfig.gdsconfigformslave[bShowSlaveChildIndex].bVisible; + } + if (bShowSlaveChild) { + const filterSlaveData = formData.filter((item, index) => { + return index >= 2 + && item.sTbName !== 'sysbillcheckresult' + && item.bGrd + && item.bGrdVisible + && item.sGrd + && item.sGrd.indexOf('_') === -1 + }); + + const filterSlaveChildData = formData.filter((item, index) => { + return index >= 2 + && item.bGrd + && item.bGrdVisible + && item.sGrd + && item.sGrd.indexOf('_') !== -1 + }); + + const addState2 = {}; + const memoDataList = []; + const slaveInfoList = []; + const slaveChildInfoList = []; + + [slaveConfig, ...filterSlaveData].forEach((config, index) => { + const slaveName = `slave${index === 0 ? '' : index - 1}`; + if (index !== 0) { + addState2[`${slaveName}Config`] = config; + addState2[`${slaveName}Column`] = commonFunc.getHeaderConfig(config); + memoDataList.push({ + name: slaveName, + config, + }); + slaveInfoList.push(slaveName); + } + filterSlaveChildData.filter(childConfig => + config.sChildTableName + && config.sChildTableName.split(',').includes(childConfig.sGrd) + ).forEach((childConfig, childIndex) => { + const slaveChildName = `${slaveName}Child${childIndex}`; + addState2[`${slaveChildName}Config`] = childConfig; + addState2[`${slaveChildName}Column`] = commonFunc.getHeaderConfig(childConfig); + memoDataList.push({ + name: slaveChildName, + config: childConfig, + }); + slaveChildInfoList.push(slaveChildName); + }); + }); + + this.handleGetMemoData1(memoDataList); + addState2.memoDataList = memoDataList; + addState2.slaveInfoList = slaveInfoList; + addState2.slaveChildInfoList = slaveChildInfoList; + + this.props.onSaveState({ + ...addState2, + }); + + } else { + const filterData = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible); + if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 1 && filterData.length === 2) { + const slaveChildConfig = filterData[1]; + const slaveChildPageSize = commonUtils.isNotEmptyObject(slaveChildConfig) && commonUtils.isNotEmptyNumber(slaveChildConfig.iPageSize) && slaveChildConfig.iPageSize !== 0 ? + slaveChildConfig.iPageSize : commonConfig.pageSize; + const slaveChildColumn = commonFunc.getHeaderConfig(slaveChildConfig); + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + this.props.onSaveState({ + slaveChildConfig, + slaveChildColumn, + slaveChildPageSize, + }); + } else if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 2) { + const slaveChildConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isNotEmptyObject(item.sChildTableName))) ? + formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isNotEmptyObject(item.sChildTableName))[0] : {}; + + const slaveChildPageSize = commonUtils.isNotEmptyObject(slaveChildConfig) && commonUtils.isNotEmptyNumber(slaveChildConfig.iPageSize) && slaveChildConfig.iPageSize !== 0 ? + slaveChildConfig.iPageSize : commonConfig.pageSize; + const slaveChildColumn = commonFunc.getHeaderConfig(slaveChildConfig); + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + + const addState2 = {}; + const memoDataList = []; + const slaveInfoList = []; + let slaveIndex = 0; + formData.forEach((item, index) => { + if (index >= 2 && commonUtils.isNotEmptyObject(item) && item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible && commonUtils.isEmptyObject(item.sChildTableName)) { + addState2[`slave${slaveIndex}Config`] = item; + addState2[`slave${slaveIndex}Column`] = commonFunc.getHeaderConfig(item); + memoDataList.push({ + name: `slave${slaveIndex}`, + config: item, + }); + slaveInfoList.push(`slave${slaveIndex}`); + // eslint-disable-next-line no-plusplus + slaveIndex++; + } + }); + this.handleGetMemoData1(memoDataList); + addState2.memoDataList = memoDataList; + addState2.slaveInfoList = slaveInfoList; + + this.props.onSaveState({ + slaveChildConfig, + slaveChildColumn, + slaveChildPageSize, + ...addState2, + }); + } + } + + } else if (sModelsType === 'purchase/purchaseOrder') { + const orderDetailConfig = formData.filter(item => item.sTbName.toUpperCase() === 'purpurchaseorderDetail'.toUpperCase())[0]; + const orderDetailColumn = commonFunc.getHeaderConfig(orderDetailConfig); + this.handleGetOneMemoData('orderDetail', orderDetailConfig); + this.props.onSaveState({ + orderDetailConfig, + orderDetailColumn, + }); + } + } + } + this.props.onSaveState({ + masterConfig, slaveConfig, slaveColumn, checkConfig, checkColumn, sId, pageLoading: false, ...addState, + }); + } else if (commonUtils.isEmptyObject(masterConfigOld) && formData.length === 1 && (sModelsType === 'cashier/financialTransfer' || sModelsType === 'purchase/purchaseEnquiry' || sModelsType === 'cashier/financialAdjustment' || sModelsType === 'print/printLabel' || sModelsType === 'complaint/complaint' || sModelsType === 'commonBill/onlyMaster') && formRoute.indexOf('indexOee') === -1) { + const config = {}; + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + let addState = {}; + if (formRoute === '/indexPage/commonBill') { + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } else { + this.handleGetData(masterConfig, undefined, undefined); + } + } + addState.onlyMaster = true; + if (formRoute === '/indexPage/printlabel') { + config.masterConfig = masterConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } + this.props.onSaveState({ + masterConfig, sId, pageLoading: false, ...addState, + }); + } else if (commonUtils.isEmptyObject(slaveConfigOld) && commonUtils.isEmptyObject(masterConfigOld) && formData.length === 2 && (sModelsType === 'quality/accident') && formRoute.indexOf('indexOee') === -1) { + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData.filter(item => !item.bGrd)[0]; + const slaveConfig = formData.filter(item => item.bGrd && item.sTbName === 'mftqualityaccidentSlave')[0]; + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + let addState = {}; + if (formRoute === '/indexPage/commonBill') { + if (sId === '') { + const config = {}; + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + } else { + this.handleGetData(masterConfig, slaveConfig, undefined); + } + } + addState.onlyMaster = true; + addState.onlyMasterAndSlave = true; + this.props.onSaveState({ + masterConfig, sId, slaveConfig, slaveColumn, pageLoading: false, ...addState, + }); + } else if (formRoute.indexOf('indexOee') > -1 && commonUtils.isEmptyObject(employeeConfigOld) && commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) { + if (formRoute === '/indexOee/labelPrint' && commonUtils.isEmpty(slaveConfigOld)) { /* 入库标签打印 */ + const sId = currentId !== undefined ? currentId : ''; + /* 数据Id */ + const masterConfig = formData[0]; + const slaveConfig = formData[0]; + const slaveColumn = commonFunc.getHeaderConfig(slaveConfig); + // this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sSqlCondition: { sParentId: sId } } }); + this.handleGetOneMemoData('slave', slaveConfig); + this.props.onSaveState({ + masterConfig, sId, slaveConfig, slaveColumn, pageLoading: false, + }); + } + } + } + + componentDidMount() { + this.props.onSaveState({ + onEventDataChange: this.handleTableChange + }) + } + + shouldComponentUpdate(nextProps) { + const { slaveColumn, masterConfig } = nextProps; + return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); + } + + /* + 修改日期:2021-03-18 + 修改人:吕杰 + 区域:以下onKeyDown函数 + 需求变更:为解决bug 2031添加 + */ + /** 键盘事件监听 */ + onKeyDown = (e, record, sName, name) => { + const { [`${name}Data`]: tableData, [`${name}Column`]: tableColumn, [`${name}Config`]: tableConfig } = this.props; + + let keyCode = e.keyCode; + let firstName; + let bEnter = false; + if (keyCode === 13) { + // 判断当前单元格是否是最后,不是则跳到下一格,是则跳到下一行第一格 + bEnter = true; + const uniqueTableId = `table_${this.props.sModelsId}_${tableConfig.sId}`; + const currentTable = document.getElementById(uniqueTableId); + const currentTr = currentTable.querySelector(`tr[data-row-key="${record.sId}"]`); + const allInput = currentTr.querySelectorAll(`input[id*="${record.sId}"]`); + const iIndex = Array.from(allInput).findIndex(item => item.getAttribute('id') === `${sName}${record.sId}`); + if (iIndex < allInput.length - 1) { + keyCode = 39; + } else { + const oFirstInput = allInput[0]; + firstName = oFirstInput.getAttribute('id').replace(record.sId, ''); + keyCode = 40; + } + } + + // 以下if条件为 为解决bug2031问题入口 需求:收款单里输入的收款金额,上下键操作把加减金额改为选择上下行(通过上下方向键切换行数) + if ([38, 40].includes(keyCode)) { // 上键、下键 + e.preventDefault(); + if (tableData.length > 1) { // 当从表行数大于一行时才有上下移动的意义 + const index = tableData.findIndex(item => item.sId === record.sId); // 获取当前编辑行的下标 + if (index > -1) { + if (keyCode === 38 && index > 0) { // 方向键上键 且 当前编辑行下标大于0时,为0时无法向上 + const lastSid = tableData[index - 1].sId; // 获取上一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [lastSid] }, () => commonUtils.focus(`${sName}${lastSid}`)); + } + if (keyCode === 40 && index < tableData.length - 1) { // 方向键下键 且 当前编辑行下标小于最大值时,为最大值时无法向下 + const nextSid = tableData[index + 1].sId; // 获取下一个id + this.props.onSaveState({ [`${name}SelectedRowKeys`]: [nextSid] }, () => commonUtils.focus(`${firstName || sName}${nextSid}`)); + } + } + } + } + const move = (keyCode, cursortPosition, columnIndex, currentElement) => { + const inputType = currentElement.getAttribute('type'); + const value = currentElement.value; + if (keyCode === 37 && columnIndex > 0 && cursortPosition < 1) { // 左移 则 列下标必须大于0, 且光标在最左侧 + const lastId = `${tableColumn[columnIndex - 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(lastId, e)) move(keyCode, cursortPosition, columnIndex - 1, currentElement); // 递归 + } + if (keyCode === 39 && columnIndex < tableColumn.length - 1) { // 右移 则 列下标必须小于列数量-1 + if (!record[sName] || cursortPosition >= value.length || inputType === 'search' || bEnter) { // 当前列为空 或 光标位置不小于当前值的长度 + const nextId = `${tableColumn[columnIndex + 1].dataIndex}${record.sId}`; + if (!commonUtils.focus(nextId, e)) move(keyCode, cursortPosition, columnIndex + 1, currentElement); // 递归 + } + } + }; + if ([37, 39].includes(keyCode)) { // 左键、右键 + const currentElement = document.getElementById(`${sName}${record.sId}`); // 当前编辑框对象 + if (currentElement) { + const cursortPosition = commonUtils.getCursortPosition(currentElement); // 光标位置 + const columnIndex = tableColumn.findIndex(item => item.dataIndex === sName); // 当前列下标 + move(keyCode, cursortPosition, columnIndex, currentElement); + } + } + } + + /* 单击右键全部更新,弹出窗选择后,更新此列所有数据 (只更新非只读字段) */ + onContextMenu = (e, record, showConfig, tbName) => { + const contextMenuConfig = []; + const showConfigNew = JSON.parse(JSON.stringify(showConfig)); /* 深拷贝配置 */ + contextMenuConfig.push(showConfigNew); + this.props.onSaveState({ + contextMenuModalVisible: true, /* 右击全部更新弹窗 */ + contextMenuConfig, /* 右击字段配置 数组形式 */ + contextMenuRecord: record, /* 右击数据 */ + contextMenuName: showConfig.showName, /* 右击字段 */ + contextMenuTbName: tbName, /* 右击字段 */ + }); + } + + /** 获取应收账款 */ + getCustomerReceipt = async (masterData) => { + const { sModelsId } = this.props; + if (!commonUtils.isEmpty(masterData.sCustomerId)) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const value = { sProName: 'Sp_Receivables_AR', paramsMap: { sStatistics: masterData.sCustomerId } }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + const [returnData] = dataReturn.dataset.rows[0].dataSet.outData; + const masterDataNew = { + ...masterData, + dNoReceiptMoney: returnData.dNoReceiptMoney, + dDueReceiptMoney: returnData.dNoReceiptMoney, + }; + this.props.onSaveState({ masterData: masterDataNew }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + } + } + }; + + /** 获取上查下查数据 */ + getSearchUpDownData = async (showConfig) => { + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}searchupdown/getSearchUpDown/${showConfig.sId}?sModelsId=${sModelsId}`; + const conditonValues = this.props.getSqlCondition(showConfig); + if (commonUtils.isNotEmptyObject(conditonValues)) { + const iIndex = Object.keys(conditonValues).findIndex(item => commonUtils.isEmpty(conditonValues[item])); + if (iIndex === -1) { + /* 调用后台接口 */ + const body = { + sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */ + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 数据查询成功 */ + return dataReturn.dataset.rows; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + }; + handlePackDataAdd= (item, index, sControlId) => { + const tableDataRow = {}; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.sSlaveId = item.sId; + tableDataRow.sParentId = item.sParentId; + tableDataRow.sControlId = sControlId; + tableDataRow.iOrder = item.iOrder; + tableDataRow.sProductId = item.sProductId; /* 产品id */ + tableDataRow.sCustomerId = item.sCustomerId; /* 客户id */ + tableDataRow.sCustomerName = item.sCustomerName; /* 客户名称 */ + tableDataRow.sProductName = item.sProductName; /* 产品名称 */ + tableDataRow.sProductNo = item.sProductNo; /* 产品编号 */ + tableDataRow.dProductQty = commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0); /* 生产数量 */ /* 生产数量 */ + tableDataRow.sProductUnit = item.sProductUnit; /* 单位 */ + tableDataRow.sProductStyle = item.sProductStyle; /* 产品规格 */ + return tableDataRow; + } + sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; + }; + + /** 获取主表、从表、审核表数据 */ + handleGetData = async (masterConfig, slaveConfig, checkConfig, bEditClick) => { + const { currentId, sModelsId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; + await this.props.handleGetDataOne({ + name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick, + }); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []); + // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []); + if (!commonUtils.isEmptyObject(slaveConfig)) { + const getData = await this.props.handleGetDataSet({ + name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if (commonUtils.isNotEmptyObject(getData) && commonUtils.isNotEmptyArr(getData.slaveData)) { + getData.slaveData.forEach((item, iIndex) => { + if (commonUtils.isNotEmptyObject(item.sReportParam)) { + item = { ...item, ...commonUtils.convertStrToObj(item.sReportParam) }; + getData.slaveData[iIndex] = item; + } + }); + if(sModelsId === '12710101117043772382700' || sModelsId === '12710101117356129272400') { /* 默认查询 不勾选从表 */ + getData.slaveSelectedRowKeys = []; + } + this.props.onSaveState({ ...getData }); + } + if (commonUtils.isNotEmptyObject(getData) && commonUtils.isNotEmptyStr(getData.slaveData) && sModelsId !=='12710101117043772382700' + && sModelsId !=='12710101117356129272400') { + const selectRowKey = getData.slaveData[0].sId; + const selectRowKeyArr = []; + selectRowKeyArr.push(selectRowKey); + this.handleTableSelectRowChange('slave', selectRowKeyArr); + } + } + + if (!commonUtils.isEmptyObject(checkConfig)) { + this.props.handleGetDataSet({ + name: 'check', configData: checkConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + /* 获取表数据 */ + handleGetMemoData = async (controlConfig, materialsConfig, processConfig, colorConfig, packConfig) => { + const { currentId, sModelsType } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + const addStateControl = await this.props.handleGetDataSet({ + name: 'control', configData: controlConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + const { controlData, controlSelectedRowKeys } = addStateControl; /* 同步树选中节点与部件选中节点 */ + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(controlData, true); + } + this.props.handleGetDataSet({ + name: 'materials', configData: materialsConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + const addStateProcess = await this.props.handleGetDataSet({ + name: 'process', configData: processConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + if (addStateProcess) { + if (Array.isArray(addStateProcess.processData)) { + // eslint-disable-next-line array-callback-return + addStateProcess.processData.map((itemProcess) => { + if (commonUtils.isNotEmptyObject(sModelsType.includes('quotation/') ? itemProcess.sProcessParam : sModelsType.includes('manufacture/') ? itemProcess.sWorkOrderParam : itemProcess.sProcessParam)) { + itemProcess.sProcessParamStr = ''; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(itemProcess[`sParam${i.toString()}`])) { + itemProcess.sProcessParamStr += `${itemProcess[`sParam${i.toString()}`]}:${itemProcess[`sParamValue${i.toString()}`]},`; + } + } + if (itemProcess.sProcessParamStr === '') { + itemProcess.sProcessParamStr = '工艺参数'; + } + } + }); + addStateProcess.processData = this.sortData(addStateControl.controlData, addStateProcess.processData); + } + } + if (commonUtils.isNotEmptyObject(colorConfig)) { + this.props.handleGetDataSet({ + name: 'color', configData: colorConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + if (commonUtils.isNotEmptyObject(packConfig)) { + this.props.handleGetDataSet({ + name: 'pack', configData: packConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + this.props.onSaveState({ + pageLoading: false, ...addStateControl, ...addStateProcess, ...treeState, treeSelectedKeys: controlSelectedRowKeys, + }); + }; + /* 获取单张表数据 */ + handleGetOneMemoData = (memoName, memoConfig) => { + const { currentId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + if (commonUtils.isNotEmptyObject(sId)) { /* 解决detail数据没有问题 */ + this.props.handleGetDataSet({ + name: memoName, configData: memoConfig, condition: { sSqlCondition: { sParentId: sId } }, + }); + } + }; + + handleGetMemoData1 = async (memoDataList, isWait) => { + const { currentId, sModelsType, sModelsId } = this.props; /* 当前页签数据 */ + const sId = currentId !== undefined ? currentId : ''; /* 数据Id */ + let addState = {}; + // eslint-disable-next-line no-plusplus + for (let i = 0; i < memoDataList.length; i++) { + const item = memoDataList[i]; + const result = await this.props.handleGetDataSet({ + name: item.name, configData: item.config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, + }); + addState = { ...addState, ...result }; + } + if(sModelsId === '12710101117043772382700') { /* 默认查询 不勾选从表 */ + addState.slave0SelectedRowKeys = []; + } + if (isWait) { + return addState; + } else { + this.props.onSaveState({ + pageLoading: false, ...addState, + }); + } + }; + + + /** 获取部件树 */ + handleGetControlTreeData= (controlDataOld, isWait, sSlaveId) => { + /* 生成部件树结构 */ + let treeData = []; + const expandedKeys = []; + let { treeSelectedKeys } = this.props; + let controlData = []; + if (commonUtils.isNotEmptyObject(sSlaveId)) { + controlData = controlDataOld.filter(item => item.sSlaveId === sSlaveId); + } else { + controlData = controlDataOld; + } + if (commonUtils.isNotEmptyArr(controlData)) { + const rootData = commonUtils.isNotEmptyArr(controlData) ? controlData.filter(item => commonUtils.isEmpty(item.sControlParentId)) : []; /* 找到所有一级树结构 */ + rootData.forEach((item) => { + const treeDataRow = {}; + const { sId, sPartsName } = item; + treeDataRow.key = sId; + treeDataRow.showName = sPartsName; + treeDataRow.sAllId = item.sAllId; + const children = this.handleGetControlTreeChildData(sId, controlData); + let sChildren = '1'; /* 树形结构最后一个节点设置为1 */ + if (commonUtils.isNotEmptyArr(children)) { + sChildren = '0'; /* 树形结构其他节点设置为0 */ + } + treeDataRow.sChildren = sChildren; + /* 添加sChildren,sAllId 值 */ + const iIndex = controlData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + // controlData[iIndex].sAllId = sAllId; + controlData[iIndex].sChildren = sChildren; + } + treeDataRow.children = commonUtils.isNotEmptyArr(children) ? children : []; + treeData.push(treeDataRow); + }); + if (commonUtils.isEmptyArr(treeSelectedKeys)) { + expandedKeys.push(treeData[treeData.length - 1].key); + } + } else { + treeSelectedKeys = []; + treeData = []; + } + if (isWait) { + return { treeData }; + } else { + this.props.onSaveState({ + treeData, + // expandedKeys, + }); + } + }; + + /** 获取子节点数据 */ + handleGetControlTreeChildData= (sParentId, controlData) => { + if (commonUtils.isNotEmptyObject(sParentId) && commonUtils.isNotEmptyArr(controlData)) { + const childTree = commonUtils.isNotEmptyArr(controlData) ? controlData.filter(item => item.sControlParentId === sParentId) : []; + const children = []; + if (commonUtils.isNotEmptyArr(childTree)) { + childTree.forEach((child) => { + const { sId, sPartsName } = child; + const treeDataRow = {}; + treeDataRow.key = sId; + treeDataRow.showName = sPartsName; + treeDataRow.parentKey = sParentId; + treeDataRow.sAllId = child.sAllId; + const data = this.handleGetControlTreeChildData(sId, controlData); + let sChildren = '1'; /* 最后一个节点设置为1 */ + if (commonUtils.isNotEmptyArr(data)) { + sChildren = '0'; + } + treeDataRow.sChildren = sChildren; + /* 添加sChildren,sAllId 值 */ + const iIndex = controlData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + // controlData[iIndex].sAllId = sAllId; + controlData[iIndex].sChildren = sChildren; + } + treeDataRow.children = commonUtils.isNotEmptyArr(data) ? data : []; + children.push(treeDataRow); + }); + } + return children; + } + }; + + /** 根据key查找树节点并改变属性 */ + handleSearchNodes= (key, data, showNameNew) => { + if (commonUtils.isNotEmptyObject(showNameNew)) { + data.forEach((item) => { + if (item.key === key) { + item.showName = showNameNew; + } else if (commonUtils.isNotEmptyArr(item.children)) { + this.handleSearchNodes(key, item.children, showNameNew); + } + }); + } + }; + + /** 点击新增按钮 */ + handleAdd = async (config, copyTo, isWait, slaveChildInfoList) => { + /* 外置处理业务 */ + const { + sModelsId, sModelsType, app, token, + } = this.props; + if (sModelsType.includes('cashier/')) { + 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', []); + } + 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 = commonFunc.getDefaultData(masterConfig); + masterData.handleType = 'add'; + masterData.sId = commonUtils.createSid(); + masterData.sFormId = sModelsId; + masterData.maxBillNo = 'sBillNo'; + + /* 取newRecord过来的数据 */ + const addNewRecordStata = commonUtils.isNotEmptyObject(app.currentPane) && app.currentPane.newRecordRelation ? app.currentPane.newRecordRelation : {}; + if(commonUtils.isNotEmptyObject(addNewRecordStata)) { + masterData = {...masterData, ...addNewRecordStata}; + } + + let slaveData = []; + const controlData = []; + const materialsData = []; + const processData = []; + const orderDetailData = []; + const dailyData = []; + const packData = []; + const colorData = []; + const slaveChildData = []; /* 子从表数据 */ + const slave0Data = []; /* 从表0数据 */ + const infoList = {}; /* slaveChildInfoList */ + // const slaveTotal = []; + // const tableDataTotal = {}; + 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) }; + if (commonBusiness.getGeyPayDate(masterData) !== undefined) { + masterData.tGetPayDate = commonBusiness.getGeyPayDate(masterData); + } + let sWareHouseNameDropDown; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (false) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + let dataUrl; + let condition; + if (models === 'Product') { + dataUrl = `${commonConfig.server_host}eleProductStock/getProductWareHouse?sModelsId=${sModelsId}`; + condition = { sProductId: copyTo.slaveData[0].sProductId }; + } else { + dataUrl = `${commonConfig.server_host}eleMaterialsStock/getMaterialsWareHouse?sModelsId=${sModelsId}`; + condition = { sMaterialsId: copyTo.slaveData[0].sMaterialsId, sMaterialsStyle: copyTo.slaveData[0].sMaterialsStyle }; + } + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const sWareHouseId = dataReturn.dataset.rows.length > 0 ? dataReturn.dataset.rows[0].sWareHouseId : ''; + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iIndex]); + sWareHouseNameDropDown = sqlDropDownData.dropDownData; + if (commonUtils.isNotEmptyArr(sWareHouseNameDropDown) && !sModelsType.includes('materialsStock/productionmaterialsadjust')) { + const { sAssignField } = masterConfig.gdsconfigformslave[iIndex]; + const iWareHouseNameIndex = sWareHouseNameDropDown.findIndex(item => item.sId === sWareHouseId); + if (iWareHouseNameIndex > -1) { + masterData = { ...masterData, ...commonFunc.getAssignFieldValue(sAssignField, sWareHouseNameDropDown[iWareHouseNameIndex]) }; + } + } + } + } + + const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); + const slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ''; + if (slaveAssignField !== '') { + let iCount = 0; + let flagCopyTo = false; + if (commonUtils.isEmptyArr(copyTo.controlData)) { + flagCopyTo = true; + } + 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) }; // 取赋值字段 + if ((!commonUtils.isEmpty(slaveRow.dProductQty) && slaveRow.dProductQty !== slaveRow.dSrcQty) || + (!commonUtils.isEmpty(slaveRow.dAuxiliaryQty) && slaveRow.dAuxiliaryQty !== slaveRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, slaveRow); + } + if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) { + slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) }; + } + slaveRow.handleType = 'add'; + slaveRow.sId = newSid; + slaveRow.sParentId = masterData.sId; + slaveRow.sSqlConditionOldId = slaveRow.sSqlConditionId; + slaveRow.sSqlConditionId = slaveRow.sId; + if (commonUtils.isEmptyObject(slaveRow.sWareHouseId)) { + slaveRow.sWareHouseId = masterData.sWareHouseId; + slaveRow.sWareHouseNo = masterData.sWareHouseNo; + slaveRow.sWareHouseName = masterData.sWareHouseName; + slaveRow.sLocationId = masterData.sLocationId; + slaveRow.sLocationNo = masterData.sLocationNo; + slaveRow.sLocationName = masterData.sLocationName; + slaveRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + slaveRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + slaveRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + } + + slaveRow.sOriginalId = slaveItem.sSlaveId;/* 翻单前的sId */ + /* 若复制到没有序号,则序号从1自增 */ + if (commonUtils.isEmptyNumber(slaveRow.iOrder)) { + iCount += 1; + slaveRow.iOrder = iCount; + } + slaveRow = this.handleGetCostomValue(slaveRow, copyTo, masterData); + slaveData.push(slaveRow); + + if (sModelsType.includes('sales/salesOrder') && flagCopyTo && commonUtils.isNotEmptyArr(copyTo.slaveData)) { + const { token } = this.props; + const sSlaveId = commonUtils.isNotEmptyStr(slaveItem.sSlaveId) ? slaveItem.sSlaveId : slaveItem.sId; + const sParentId = commonUtils.isNotEmptyStr(slaveItem.sParentId) ? slaveItem.sParentId : slaveItem.sId; + let condition = {}; + if (sModelsType === 'sales/salesOrderPack') { + condition = { sParentId }; + } else { + condition = { sSlaveId }; + } + /* 通用报价单:101251240115016244276286330 */ + const dataUrl = slaveItem.sFormId === '19211681019715780306452560' || slaveItem.sFormId === '101251240115016076506222050' + || slaveItem.sFormId === '101251240115016036175782700' || slaveItem.sFormId === '101251240115016002356125200' || slaveItem.sFormId === '101251240115016244276286330' ? + `${commonConfig.server_host}salesorder/getQuotationPartsInfo?sModelsId=${sModelsId}` : + `${commonConfig.server_host}salesorder/getPartsInfo?sModelsId=${sModelsId}`; + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + slaveItem.sId = sSlaveId; + copyTo.controlData = returnData.controlData; + copyTo.materialsData = returnData.materialsData; + copyTo.processData = returnData.processData; + copyTo.packData = returnData.packData; + copyTo.colorData = returnData.colorData; + } else { + this.props.getServiceError(dataReturn); + } + } + + const copyToControlConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.control`.toLowerCase()); + const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ''; + if (controlAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.controlData)) { + const treeCopyNodes = new Map(); + let controlFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + controlFilterData = copyTo.controlData; + } else { + controlFilterData = copyTo.controlData.filter(controlItem => controlItem.sSlaveId === slaveItem.sId); + } + await controlFilterData.forEach(async (controlItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.control = controlItem; + const newSid = commonUtils.createSid(); + let controlRow = commonFunc.getDefaultData(config.controlConfig, newCopyTo, { newSid }); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(controlRow.dProductQty) && controlRow.dProductQty !== controlRow.dSrcQty) || + (!commonUtils.isEmpty(controlRow.dAuxiliaryQty) && controlRow.dAuxiliaryQty !== controlRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, controlRow); + } + controlRow.handleType = 'add'; + controlRow.sId = newSid; + controlRow.sOriginalId = controlItem.sId; /* 复制前的部件表sId */ + controlRow.sParentId = masterData.sId; + controlRow.sSlaveId = slaveRow.sId; + if (sModelsType === 'sales/salesOrderPack') { + /* 如果有树形结构 则sAllId,sControlParentId赋值 */ + const sAllOldId = controlItem.sAllId; + let arr = []; + if (commonUtils.isNotEmptyObject(sAllOldId)) { + arr = sAllOldId.split(','); + } + const newId = controlRow.sId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + controlRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + controlRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + controlRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(controlItem.sId, sNewParentAllId); + } + controlData.push(controlRow); + + const copyToMaterialsConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.materials`.toLowerCase()); + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + if (materialsAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.materialsData)) { + let materialsFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + materialsFilterData = copyTo.materialsData.filter(materialsItem => materialsItem.sControlId === controlItem.sId); + } else { + materialsFilterData = copyTo.materialsData.filter(materialsItem => materialsItem.sSlaveId === slaveItem.sId && materialsItem.sControlId === controlItem.sId); + } + await materialsFilterData.forEach(async (materialsItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.materials = materialsItem; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(materialsRow.dProductQty) && materialsRow.dProductQty !== materialsRow.dSrcQty) || + (!commonUtils.isEmpty(materialsRow.dAuxiliaryQty) && materialsRow.dAuxiliaryQty !== materialsRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, materialsRow); + } + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + materialsRow.sParentId = masterData.sId; + materialsRow.sControlId = controlRow.sId; + materialsRow.sPartsName = controlRow.sPartsName; + materialsRow.sSlaveId = slaveRow.sId; + // 材料对应工序的ID要变化 + if (commonUtils.isNotEmptyArr(copyTo.processData)) { + const iProcessIndex = processData.findIndex(item => item.sControlId === controlRow.sId && item.sSrcProcessTbId === materialsItem.sProcessTbId); + if (iProcessIndex > -1) { + materialsRow.sProcessTbId = processData[iProcessIndex].sId; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + materialsRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + materialsRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + materialsData.push(materialsRow); + }); + } + } + const copyToProcessConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.process`.toLowerCase()); + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + if (processAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.processData)) { + let processFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + processFilterData = copyTo.processData.filter(processItem => processItem.sControlId === controlItem.sId); + } else { + processFilterData = copyTo.processData.filter(processItem => processItem.sSlaveId === slaveItem.sId && processItem.sControlId === controlItem.sId); + } + processFilterData.forEach((processItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(processRow.dProductQty) && processRow.dProductQty !== processRow.dSrcQty) || + (!commonUtils.isEmpty(processRow.dAuxiliaryQty) && processRow.dAuxiliaryQty !== processRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'process'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, processRow); + } + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sControlId = controlRow.sId; + processRow.sPartsName = controlRow.sPartsName; + processRow.sSlaveId = slaveRow.sId; + processData.push(processRow); + }); + } + } + /* 合版表复制到 */ + if (sModelsType === 'sales/salesOrderPack') { + const copyToPackConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.pack`.toLowerCase()); + const packAssignField = commonUtils.isNotEmptyArr(copyToPackConfig) ? copyToPackConfig[0].sAssignField : ''; + if (commonUtils.isNotEmptyObject(packAssignField)) { + /* 复制到时增加合版表 */ + if (commonUtils.isNotEmptyArr(copyTo.packData)) { + await copyTo.packData.filter(item => item.sSlaveId === slaveItem.sId && item.sControlId === controlItem.sId).forEach(async (packItem) => { + newCopyTo.pack = packItem; + let packRow = commonFunc.getDefaultData(config.packConfig, newCopyTo); // 取默认值 + packRow = { ...packRow, ...commonFunc.getAssignFieldValue(packAssignField, packItem, newCopyTo) }; // 取赋值字段 + /* sSlaveId赋值 */ + const packRowAdd = this.handlePackDataAdd(slaveRow, 0, controlRow.sId); + packRow = { ...packRow, ...packRowAdd }; + + /* 将控制表中的合版备注sId为新的sId */ + let JsonData = []; + const jsonStr = controlRow.sCombinedMemo; + if (commonUtils.isNotEmptyObject(jsonStr) && commonUtils.isJSON(jsonStr)) { + JsonData = JSON.parse(jsonStr); + if (commonUtils.isNotEmptyArr(JsonData)) { + let sCombinedMemoNew = ''; + JsonData.forEach((item, index) => { + if (item.sId === packItem.sId) { + JsonData[index].sId = packRow.sId; + } + }); + sCombinedMemoNew = JSON.stringify(JsonData); + controlRow.sCombinedMemo = sCombinedMemoNew; + const icontrolIndex = controlData.findIndex(item => item.sId === controlRow.sId); + if (icontrolIndex) { + controlData[icontrolIndex] = { ...controlData[icontrolIndex], sCombinedMemo: sCombinedMemoNew }; + } + } + } + + packData.push(packRow); + }); + } + } + } + }); + } + + const copyToMaterialsConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.materials`.toLowerCase()); + const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : ''; + if (materialsAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.materialsData)) { + let materialsFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + materialsFilterData = copyTo.materialsData.filter(item => item.sType === '2'); + } else { + materialsFilterData = copyTo.materialsData.filter(item => item.sSlaveId === slaveItem.sId && item.sType === '2'); + } + await materialsFilterData.forEach(async (materialsItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.materials = materialsItem; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(config.materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(materialsRow.dProductQty) && materialsRow.dProductQty !== materialsRow.dSrcQty) || + (!commonUtils.isEmpty(materialsRow.dAuxiliaryQty) && materialsRow.dAuxiliaryQty !== materialsRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, materialsRow); + } + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + materialsRow.sParentId = masterData.sId; + materialsRow.sSlaveId = slaveRow.sId; + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) { + const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsStock = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 1, + iHasZero: 1, + }, + }; + const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data; + if (returnDataMaterialsStock.code === 1) { + materialsRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + if (Object.keys(materialsRow).length > 0 && Object.keys(materialsRow).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) { + const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const valueMaterialsAvailableQty = { + sProName: 'Sp_Inventory_MaterialsInventoryV56', + paramsMap: { + sMaterialsGuid: materialsRow.sMaterialsId, + sMaterialsStyle: materialsRow.sMaterialsStyle, + sWarehouseGuid: materialsRow.sWarehouseId, + sLocationalGuid: materialsRow.sLocationId, + sWarehouseLocationGuid: materialsRow.sWarehouseLocationId, + sDefine_no: materialsRow.sDefineNo, + sDefine_no2: materialsRow.sDefineNo2, + iGetQty: 2, + iHasZero: 1, + }, + }; + const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data; + if (returnDataMaterialsAvailableQty.code === 1) { + materialsRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty; + } + } + materialsData.push(materialsRow); + }); + } + } + const copyToProcessConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.process`.toLowerCase()); + const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ''; + if (processAssignField !== '') { + if (commonUtils.isNotEmptyObject(copyTo.processData)) { + let processFilterData = []; + const srcFormRoute = copyTo.srcFormRoute; + if (srcFormRoute === '/indexPage/quotationPack' || slaveItem.sFormId === '101251240115016076506222050') { + processFilterData = copyTo.processData.filter(item => item.sType === '3'); + } else { + processFilterData = copyTo.processData.filter(item => item.sSlaveId === slaveItem.sId && item.sType === '3'); + } + processFilterData.forEach((processItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.process = processItem; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(config.processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + if ((!commonUtils.isEmpty(processRow.dProductQty) && processRow.dProductQty !== processRow.dSrcQty) || + (!commonUtils.isEmpty(processRow.dAuxiliaryQty) && processRow.dAuxiliaryQty !== processRow.dSrcAuxiliaryQty)) { + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'process'; + const sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, processRow); + } + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sParentId = masterData.sId; + processRow.sSlaveId = slaveRow.sId; + /* 通用报价单的合版部件名称换成新生成的控制表sId */ + if (commonUtils.isNotEmptyObject(processRow.sCombinePartsName)) { + /* 新的sCombinePartsName赋值 */ + let sCombinePartsNameStr = ''; /* 新生成合版部件名称 */ + const sCombinePartsNameOldArr = processRow.sCombinePartsName.split(','); + if (commonUtils.isNotEmptyArr(sCombinePartsNameOldArr)) { + const controlFilterData = controlData.filter(item => sCombinePartsNameOldArr.includes(item.sOriginalId)); + if (commonUtils.isNotEmptyArr(controlFilterData)) { + controlFilterData.forEach((item) => { + sCombinePartsNameStr += `${item.sId},`; + }); + } + sCombinePartsNameStr = commonUtils.isNotEmptyObject(sCombinePartsNameStr) ? sCombinePartsNameStr.substr(0, sCombinePartsNameStr.length - 1) : ''; + processRow.sCombinePartsName = sCombinePartsNameStr; + } + } + processData.push(processRow); + }); + } + } + /* 颜色表 */ + const copyToColorConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.param`.toLowerCase()); + const colorAssignField = commonUtils.isNotEmptyArr(copyToColorConfig) ? copyToColorConfig[0].sAssignField : ''; + if (colorAssignField !== '') { + if (commonUtils.isNotEmptyArr(copyTo.colorData)) { + if (commonUtils.isNotEmptyObject(config.colorConfig)) { + copyTo.colorData.forEach((colorItem) => { + newCopyTo.color = colorItem; + const newSid = commonUtils.createSid(); + let colorRow = commonFunc.getDefaultData(config.colorConfig, newCopyTo, { newSid }); // 取默认值 + colorRow = { ...colorRow, ...commonFunc.getAssignFieldValue(colorAssignField, colorItem, newCopyTo) }; // 取赋值字段 + colorRow.handleType = 'add'; + colorRow.sId = newSid; + colorRow.sParentId = masterData.sId; + colorData.push(colorRow); + }); + } + } + } + } + } + } + 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'); + returnSlaveData.forEach((item, iIndex) => { + const newSid = commonUtils.createSid(); + let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {}, { newSid }); + tableDataRow.handleType = 'add'; + tableDataRow.sId = newSid; + 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) }; // 取赋值字段 + } + slaveData.push(tableDataRow); + }); + } + } + + const slave0AssignField = commonUtils.isNotEmptyArr(copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase())) ? + copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase())[0].sAssignField : ''; + if (slave0AssignField && !commonUtils.isEmpty(copyTo) && copyTo.slave0Data) { + if (commonUtils.isNotEmptyArr(copyTo.slave0Data)) { + copyTo.slave0Data.forEach((slave0Item) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.slave0 = slave0Item; + const newSid = commonUtils.createSid(); + let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 + if(slave0AssignField) { + slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 + } + const iIndex = slaveData.findIndex(slaveItem => slaveItem.sMaterialsId + slaveItem.sMaterialsStyle === slave0Item.sMaterialsGS); + if (iIndex !== -1) { + slaveData[iIndex].sWorkOrderNo = commonUtils.isEmptyObject(slaveData[iIndex].sWorkOrderNo) ? slave0Row.sWorkOrderNo : `${slaveData[iIndex].sWorkOrderNo},${slave0Row.sWorkOrderNo}`; + } + slave0Row.handleType = 'add'; + slave0Row.sId = newSid; + slave0Row.sParentId = masterData.sId; + slave0Data.push(slave0Row); + }); + } + } + + console.log('w233', slaveChildInfoList); + + if (Array.isArray(slaveChildInfoList)) { + slaveChildInfoList.forEach(i => { + infoList[`${i}Data`] = []; + const assignField = commonUtils.isNotEmptyArr(copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.${i}`.toLowerCase())) ? + copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.${i}`.toLowerCase())[0].sAssignField : ''; + if (assignField && !commonUtils.isEmpty(copyTo) && copyTo[`${i}Data`]) { + if (commonUtils.isNotEmptyArr(copyTo[`${i}Data`])) { + copyTo[`${i}Data`].forEach((item) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo[i] = item; + const newSid = commonUtils.createSid(); + let row = commonFunc.getDefaultData(config[`${i}Config`], newCopyTo, { newSid }); // 取默认值 + if(assignField) { + row = { ...row, ...commonFunc.getAssignFieldValue(assignField, item, newCopyTo) }; // 取赋值字段 + } + row.handleType = 'add'; + row.sId = newSid; + row.sParentId = masterData.sId; + console.log('row前', row); + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sSqlConditionOldId === row.sSqlConditionId) : -1; + if(iIndex > -1) { + row.sSqlConditionId = slaveData[iIndex].sId; + console.log('sSqlConditionId', row.sSqlConditionId, slaveData[iIndex].sId) + } + console.log('row后', row); + infoList[`${i}Data`].push(row); + }); + } + } + }) + } + } + + if (sModelsType === 'purchase/purchaseOrder' && !commonUtils.isEmpty(copyTo) && commonUtils.isNotEmptyArr(copyTo.copyOtherData)) { + const copyToDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.detail`.toLowerCase()); + const detailAssignField = commonUtils.isNotEmptyArr(copyToDetailConfig) ? copyToDetailConfig[0].sAssignField : ''; + if (detailAssignField !== '') { + const copyDetail = copyTo.copyOtherData.filter(item => item.name === 'detail')[0]; + const detail = copyDetail.data; + detail.forEach((detailItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.detail = detailItem; + const newSid = commonUtils.createSid(); + let tempDetail = commonFunc.getDefaultData(config.orderDetailConfig, newCopyTo, { newSid }); // 取默认值 + tempDetail = { ...tempDetail, ...commonFunc.getAssignFieldValue(detailAssignField, detailItem, newCopyTo) }; // 取赋值字段 + const iIndex = slaveData.findIndex(slaveItem => slaveItem.sMaterialsId + slaveItem.sMaterialsStyle === detailItem.sMaterialsGS); + if (iIndex !== -1) { + slaveData[iIndex].sWorkOrderNo = commonUtils.isEmptyObject(slaveData[iIndex].sWorkOrderNo) ? detailItem.sWorkOrderNo : `${slaveData[iIndex].sWorkOrderNo},${detailItem.sWorkOrderNo}`; + } + tempDetail.handleType = 'add'; + tempDetail.sId = newSid; + tempDetail.sParentId = masterData.sId; + tempDetail = this.handleGetCostomValue(tempDetail, copyTo, masterData); + orderDetailData.push(tempDetail); + slaveChildData.push(tempDetail); + }); + } + } else if ( commonUtils.isNotEmptyObject(copyTo)) { /* detail 生成slaveChild */ + const copyToDetailConfig = commonUtils.isNotEmptyArr(copyTo.config) ? copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.detail`.toLowerCase() || + item.sControlName.toLowerCase() === `${copyTo.name}.slaveChild`.toLowerCase()) : []; + const detailAssignField = commonUtils.isNotEmptyArr(copyToDetailConfig) ? copyToDetailConfig[0].sAssignField : ''; + if (detailAssignField !== '') { + let detail = []; + if (commonUtils.isNotEmptyArr(copyTo.copyOtherData)) { + const copyDetail = copyTo.copyOtherData.filter(item => item.name === 'detail')[0]; + if (commonUtils.isEmptyArr(copyDetail)) { + detail = copyTo.copyOtherData; + } else { + detail = copyDetail.data; + } + } else if (commonUtils.isNotEmptyArr(copyTo.slaveChildData)) { + detail = copyTo.slaveChildData; + } + if (commonUtils.isNotEmptyArr(detail)) { + detail.forEach((detailItem) => { + const newCopyTo = {}; + newCopyTo.master = copyTo.masterData; + newCopyTo.detail = detailItem; + const newSid = commonUtils.createSid(); + let tempDetail = commonFunc.getDefaultData(config.orderDetailConfig, newCopyTo, { newSid }); // 取默认值 + tempDetail = { ...tempDetail, ...commonFunc.getAssignFieldValue(detailAssignField, detailItem, newCopyTo) }; // 取赋值字段 + tempDetail.handleType = 'add'; + tempDetail.sId = newSid; + tempDetail.sParentId = masterData.sId; + const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sSqlConditionOldId === tempDetail.sSqlConditionId) : -1; + if(iIndex > -1) { + tempDetail.sSqlConditionId = slaveData[iIndex].sId; + console.log('sSqlConditionId', tempDetail.sSqlConditionId) + } + // tempDetail.sSqlConditionId = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0].sSqlConditionId : ''; + tempDetail = this.handleGetCostomValue(tempDetail, copyTo, masterData); + orderDetailData.push(tempDetail); + slaveChildData.push(tempDetail); + }); + } + } + } + /* 剔除订单到收款单,费用分摊单据新增空行 */ + if (slaveData.length === 0 && commonUtils.isNotEmptyObject(configNew.slaveConfig) && this.props.sModelsType !== 'cashier/receipt' && this.props.sModelsType !== 'cashier/payment' && this.props.sModelsType !== 'cost/cosexpenseshare' + && sModelsType !== 'sales/salesInvoice' && sModelsType !== 'purchase/purchaseInvoice' && sModelsType !== 'purchase/outsideInvoice') { + const allTableData = {}; + allTableData.master = masterData; + allTableData.slave = slaveData; + const newSid = commonUtils.createSid(); + const tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData, { newSid }); + const bEmptyAddLine = configNew.slaveConfig.gdsconfigformslave.find(item => item.sControlName === 'bEmptyAddLine'); + if (!(commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible)) { + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + tableDataRowAdd.sSqlConditionId = tableDataRowAdd.sId; + slaveData.push(tableDataRowAdd); + } + } + if (sModelsType === 'sales/salesSgoods') { /* 送货单中如果只有一个仓库,默认带这个仓库 */ + // const sWareHouseNameDropDown = commonUtils.getStoreDropDownData(sModelsId, 'master', 'sWareHouseName'); + let sWareHouseNameDropDown; + const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (masterIndex > -1) { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex]); + sWareHouseNameDropDown = sqlDropDownData.dropDownData; + } + if (commonUtils.isNotEmptyArr(sWareHouseNameDropDown) && sWareHouseNameDropDown.length === 1) { + const addStata = {}; + addStata.sWareHouseId = sWareHouseNameDropDown[0].sId; + addStata.sWareHouseNo = sWareHouseNameDropDown[0].sNo; + addStata.sWareHouseName = sWareHouseNameDropDown[0].sName; + addStata.sLocationId = sWareHouseNameDropDown[0].sLocationId; + addStata.sLocationNo = sWareHouseNameDropDown[0].sLocationNo; + addStata.sLocationName = sWareHouseNameDropDown[0].sLocationName; + addStata.sWareHouseLocationId = sWareHouseNameDropDown[0].sWareHouseLocationId; + addStata.sWareHouseLocationNo = sWareHouseNameDropDown[0].sWareHouseLocationNo; + addStata.sWareHouseLocationName = sWareHouseNameDropDown[0].sWareHouseLocationName; + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWareHouseName'); + if (iIndex > -1) { + masterData = { ...masterData, ...addStata }; /* 主表赋默认仓库 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 从表赋默认仓库 */ + slaveData.forEach((item, index) => { + slaveData[index] = { ...item, ...addStata }; + }); + } + } + } + } + const treeState = this.handleGetControlTreeData(controlData, true); /* 加载树形结构数据 */ + const state = { + masterData, + slaveData, + slaveTotal: [], + slaveSelectedRowKeys: commonUtils.isNotEmptyArr(slaveData) ? [slaveData[slaveData.length - 1].sId] : [], + checkData: [], + checkSelectedRowKeys: [], + searchUpDownData: {}, + enabled: true, + controlData, + materialsData, + processData, + dailyData, + packData, + colorData, + orderDetailData, + slaveChildData, + ...infoList, + slave0Data, + ...treeState, + processSelectedRowKeys: [], + controlSelectedRowKeys: [], + materialsSelectedRowKeys: [], + calculated: false, + }; + state.sUseInfo = ''; + if (isWait) { + return state; + } else { + this.props.onSaveState(state); + return true; + } + }; + + // 自定义取值 + handleGetCostomValue = (slaveRow, copyTo, masterData) => { + const { app, sModelsType } = this.props; + if (sModelsType === 'purchase/purchaseInstore') { + const iIndex = app.systemData.findIndex(item => item.sName === 'CbxMaterialsDefine'); + if (iIndex > -1) { + const sCbxMaterialsDefine = app.systemData[iIndex].sValue; + if (sCbxMaterialsDefine === 'datenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDD'); + } else if (sCbxMaterialsDefine === 'datetimenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm'); + } else if (sCbxMaterialsDefine === 'yearnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYY'); + } else if (sCbxMaterialsDefine === 'yearmonthnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMM'); + } else if (sCbxMaterialsDefine === 'worknum') { + slaveRow.sDefineNo = slaveRow.sWorkOrderNo; + } else if (sCbxMaterialsDefine === 'manuualno') { + slaveRow.sDefineNo = slaveRow.sManualNo; + } else if (sCbxMaterialsDefine === 'createnownum') { /* 批号根据生产日期+当前日期 */ + slaveRow.sDefineNo = moment(slaveRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm'); + } + } + } else if (sModelsType === 'productStock/productInStore' || sModelsType === 'outside/outsideinstoreAll') { /* 成品入库、整单发外入库 */ + const iIndex = app.systemData.findIndex(item => item.sName === 'CbxProductDefine'); + if (iIndex > -1) { + const sCbxProductDefine = app.systemData[iIndex].sValue; + if (sCbxProductDefine === 'datenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDD'); + } else if (sCbxProductDefine === 'datetimenum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm'); + } else if (sCbxProductDefine === 'yearnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYY'); + } else if (sCbxProductDefine === 'yearmonthnum') { + slaveRow.sDefineNo = moment(new Date()).format('YYYYMM'); + } else if (sCbxProductDefine === 'worknum') { + slaveRow.sDefineNo = slaveRow.sWorkOrderNo; + } else if (sCbxProductDefine === 'manuualno') { + slaveRow.sDefineNo = slaveRow.sManualNo; + } else if (sCbxProductDefine === 'worktimenum') { /* 批号根据工单号码+日期时间批号 */ + slaveRow.sDefineNo = slaveRow.sWorkOrderNo + moment(new Date()).format('YYYYMMDDHH'); + } else if (sCbxProductDefine === 'yearToDate') { /* 2259 批号根据工单制单日期年月日,年取两位 */ + slaveRow.sDefineNo = moment(copyTo.masterData.tCreateDate || new Date()).format('YYMMDD'); + } + } + } else if (sModelsType === 'sales/salesCheck') { + slaveRow.dSrcNoCheckMoney = slaveRow.dProductForeignMoney; + } else if (sModelsType === 'purchase/purchasecheck') { + slaveRow.dSrcNoCheckMoney = slaveRow.dMaterialsMoney; + } else if (sModelsType === 'purchase/purchaseOrder' && false) { // bug 2171 修正 吕杰 2021-03-26 + const dProcurementCycle = commonUtils.isNull(slaveRow.dProcurementCycle, 0); + const tCreateDate = masterData && commonUtils.isNotEmptyObject(masterData.tCreateDate) ? masterData.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + slaveRow.tDeliverDate = tDeliverDate; + slaveRow.dProcurementCycle = dProcurementCycle; + } + + return slaveRow; + } + + /** 点击修改按钮操作 */ + handleEdit = async () => { + const { + masterConfig, slaveConfig, checkConfig, currentId, app, masterData, dispatch, billnosetting, slaveChildConfig, slave0Config, + } = this.props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + // 判断是否全局都有配置 + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + let sValue = 0; + if (iIndex > -1) { + sValue = systemData[iIndex].sValue; // 全局配置的值; 1为开启:所有人都可以编辑,0是关闭; + } + const bModify = billnosetting.bModify; /* 勾选了可修改及代表普通用户非制单人可以修改单据 */ + if (!+sValue && !bModify && sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoUpdateByNoMakePerson')); + this.props.onSaveState({ + loading: false, + }); + 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; + } + const reset = (ws, config1) => { + clearTimeout(config1.timerServer); + clearTimeout(config1.serverTimer); + start(ws, config1); + }; + const start = (ws, config1) => { + config1.timerServer = setTimeout(() => { + const message = { sendFrom: this.props.app.userinfo.sId, connectTest: 'test' }; // param 存放其它参数 keyName 需要放入Redis的数据key,keyValue 需要放入Redis的数据key 的值 + ws.send(JSON.stringify(message)); + }, config1.timeoutServer); + }; + setTimeout(() => { + this.props.app.webSocket.onmessage = async (msg) => { + reset(this.props.app.webSocket, commonConfig); + 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 (rtmsg.action === 'update') { + await this.handleGetData(masterConfig, slaveConfig, checkConfig, 'update'); + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + await this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } + if(commonUtils.isNotEmptyObject(slave0Config)) { + await this.handleGetOneMemoData('slave0', slave0Config); + } + this.props.onSaveState({ enabled: true, calculated: false, 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); + }; + /** 表单回带 */ + handleForm = (form) => { + this.form = form; + }; + /** toolbar审核(消审) */ + handleAudit = async (flag) => { + /* 待用数据声明 */ + let bResult = true; + const { masterData, gdsformconst } = this.props; + if (!commonUtils.isEmpty(masterData)) { + /* 作废订单不能审核 */ + if (masterData.bInvalid) { + message.warning(commonFunc.showMessage(app.commonConst, 'sToVoid')); + this.props.onSaveState({ + loading: false, + }); + return ''; + } + /** 数据审核 */ + bResult = await this.dataAudit(flag); + } else { + this.props.onSaveState({ + loading: false, + }); + } + return bResult; + }; + + /** 数据审核 */ + dataAudit = async (flag, tmpCheck, isWait) => { + message.destroy(); + /* 待用数据声明 */ + const { + sModelsId, masterData, app, masterConfig, slaveConfig, checkConfig, token, sModelsType, controlConfig, materialsConfig, processConfig, colorConfig, packConfig, slaveData, + orderDetailConfig, slaveChildConfig, formRoute, slave0Config, + } = 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 : '', + }, + }; + let clearFlag = false; + if (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder')) { + if (commonUtils.isNotEmptyArr(slaveData)) { + for (const item of slaveData) { + if (commonUtils.isNotEmptyStr(item.sProductInfo)) { + clearFlag = true; + break; + } + } + } else { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + /* 数据审核 */ + const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (isWait) { + return returnData; + } else { + /* 接收返回值 */ + const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ + const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ + if (returnData.code === 1) { /* 成功 */ + this.props.onSaveState({ + loading: false, + }); + if (flag === 1) { + /* 审核 */ + if (clearFlag && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder'))) { + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); + commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); + } + let outData; + if (commonUtils.isNotEmptyObject(returnData.dataset)) { + outData = returnData.dataset.rows[0].dataSet.outData; + } + 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(); + // } + message.error(check + outData[0].sReturn); + return; + } + const checkConditions = []; + let checkPersonData = {}; + sReturnArray.forEach((item) => { + const checkCondition = item.split('-')[2]; + const iIndex = checkConditions.findIndex(itemCondition => itemCondition.condition === checkCondition); + if (iIndex <= -1) { + 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, + }); + return true; + } else { /* 失败 */ + this.props.getServiceError({ msg: check + dataReturn }); + } + } + } else { + message.success(check + returnData.msg); + } + } else { + /* 消审 */ + const { outData } = returnData.dataset.rows[0].dataSet; + if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { + message.error(outData[0].sReturn); + } else { + // if (this.props.app.currentPane.refresh !== undefined) { + // this.props.app.currentPane.refresh(); + // } + message.success(BtnCancelExamine + returnData.msg); + } + } + await this.handleGetData(masterConfig, slaveConfig, checkConfig); + if ((sModelsType.includes('sales/salesOrder') || sModelsType === 'manufacture/workOrder3') && !commonUtils.isEmpty(controlConfig)) { + await this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + } else if (commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill') && !commonUtils.isEmpty(slaveChildConfig)) { + await this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + }else if(returnData.code === -8){ + Modal.info({ + title: '温馨提示:', + content: ( +
+ {this.handleGetMsg(returnData.msg)} +
+ ), + okText: '确认', + onOk() {}, + }); + this.props.onSaveState({ + loading: false, + }); + return false; + } else { /* 失败 */ + this.props.getServiceError(returnData); + this.props.onSaveState({ + loading: false, + }); + return false; + } + return true; + } + }; + + /** toolbar保存 */ + handleSaveData = async (params) => { + const { + token, sModelsId, currentId, masterData, masterConfig, slaveConfig, checkConfig, billnosetting, app, sModelsType, + controlConfig, materialsConfig, processConfig, colorConfig, packConfig, orderDetailConfig, dispatch, slaveChildConfig, formRoute, + slaveInfoList, slaveChildInfoList, + } = this.props; + const { userinfo } = app; + const { copyTo } = app.currentPane; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */ + params.optName = BtnSave; + const returnData = await commonBusiness.saveData({ token, value: params, sModelsId, is2True: true }); + if (commonUtils.isNotEmptyObject(returnData)) { + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData, srcFormRoute } = copyTo; + const sIdArray = []; + if (commonUtils.isNotEmptyObject(srcFormRoute) && srcFormRoute.includes('materialRequirementsPlanning')) { /* 物料需求计划用sWorkOrderMaterialId作为唯一键 */ + const { copyOtherData } = copyTo; + if (commonUtils.isNotEmptyArr(copyOtherData) && copyOtherData[0].name === 'detail' && commonUtils.isNotEmptyArr(copyOtherData[0].data)) { + const slaveDetailData = copyOtherData[0].data; + slaveDetailData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } else { /* 变更单、采购申请单 */ + slaveData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } else if (commonUtils.isNotEmptyObject(slaveData)) { + 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, + }); + // 保存后更新panes,currentPane的checkedId,防止浏览器刷新时重新又变成新增。 + const iPaneIndex = app.panes.findIndex(item => item.key === app.currentPane.key); + app.panes[iPaneIndex].checkedId = masterData.sId; + app.currentPane.checkedId = masterData.sId; + dispatch({ type: 'app/savePanesAndCurrentPane', payload: { panes: app.panes, currentPane: app.currentPane } }); + + if (billnosetting.bAutoCheck) { + await this.handleAudit(1); + } else { + await this.handleGetData(masterConfig, slaveConfig, checkConfig); + if(commonUtils.isNotEmptyArr(slaveInfoList)) { + slaveInfoList.forEach( async(name, index) => { + const tbName = name.replace('Config', ''); + const {[`${tbName}Config`]: tableConfig } = this.props; + if (tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery") { + await this.handleGetOneMemoData(tbName, tableConfig); + } + }); + } + if(commonUtils.isNotEmptyArr(slaveChildInfoList)) { + slaveChildInfoList.forEach( async(name, index) => { + const tbName = name.replace('Config', ''); + const {[`${tbName}Config`]: tableConfig } = this.props; + if (tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery") { + await this.handleGetOneMemoData(tbName, tableConfig); + } + }); + } + if ((sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder')) && !commonUtils.isEmpty(controlConfig)) { + await this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig); + } else if (commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill') && !commonUtils.isEmpty(slaveChildConfig)) { + await this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } else if (sModelsType === 'purchase/purchaseOrder') { + await this.handleGetOneMemoData('orderDetail', orderDetailConfig); + } + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } + this.props.onSaveState({ + loading: false, + }); + return true; + } else { + this.props.onSaveState({ + loading: false, + }); + return false; + } + }; + /** toolbar校验保存 */ + handleValidateSave = () => { + this.form.validateFields(async (err) => { + /* 验证通过与不通过走不同的流程 */ + if (err) { /* 验证失败 */ + /* 直接渲染显示错误提示 */ + for (const key of Object.keys(err)) { + message.error(err[key].errors[0].message); + } + this.props.onSaveState({ + loading: false, + }); + } else { /* 验证成功 */ + const { + masterConfig, slaveConfig, slaveData, slaveDelData, slaveChildData, app, sModelsType, controlConfig, controlData, controlDelData, materialsConfig, materialsData, materialsDelData, processConfig, processData, processDelData, colorConfig, colorData, colorDelData, packConfig, packData, packDelData, orderDetailConfig, orderDetailData, orderDetailDelData, + slaveChildConfig, slaveChildDelData, formRoute, slave0Config, slave0Data, slave0DelData, slaveChildInfoList, slaveInfoList, + } = this.props; + + // const { slaveData, slaveChildData, error, bGroupDataByDefineNo } = await this.handleGroupDataByDefineNo(); + // if (error) { + // this.props.onSaveState({ + // loading: false, + // }); + // return; + // } + + let { masterData } = this.props; + if (sModelsType !== 'commonBill/onlyMaster' && !sModelsType.includes('sales/salesInvoice') && !sModelsType.includes('purchase/purchaseInvoice') && !sModelsType.includes('purchase/outsideInvoice') && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' + && !sModelsType.includes('cashier/receipt') && !sModelsType.includes('cashier/payment') && !sModelsType.includes('purchase/purchaseEnquiry')) { + if (slaveConfig && slaveConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveData)) { + message.error(`${slaveConfig.sChinese || ''}${commonFunc.showMessage(app.commonConst, 'slaveNotNull')}`); // 从表不能为空! + // if (bGroupDataByDefineNo) { + // commonUtils.isEmptyArr(slaveData) && message.error('按批次汇总失败,请检查批次号等数据!'); + // } else { + // + // } + this.props.onSaveState({ + loading: false, + }); + return; + } + if (slaveChildConfig && slaveChildConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveChildData)) { + message.error(`${slaveChildConfig.sChinese || ''}${commonFunc.showMessage(app.commonConst, 'slaveNotNull')}`); // 从表不能为空! + this.props.onSaveState({ + loading: false, + }); + return; + } + + } + // && sModelsType === 'materialsStock/productionmaterialsadjust' + if (commonUtils.isNotEmptyArr(slaveData)) { + let flag = true; + for (const item of slaveData) { + if (sModelsType === 'materialsStock/productionmaterialsadjust') { + if (commonUtils.isNotEmptyStr(item.sWareHouseId)) { + if (masterData.sWareHouseId === item.sWareHouseId && masterData.sWarehouseLocationId === item.sWarehouseLocationId && masterData.sLocationId === item.sLocationId) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameMateMaterialWarehouse'));/* 材料调拨原仓库与调入仓库不能一致 */ + flag = false; + break; + } + } + } + // {"paper":"纸张","finished":"成品","half_finished":"半成品","accessories":"辅料","corrugated":"瓦楞"} + if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + if (sModelsType.includes('sales/')) { + message.error(item.sProductName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sProductName}"的规格 */ + } else { + message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写"${item.sMaterialsName}"的规格 */ + } + flag = false; + break; + } + + /* 子从表勾选了表格内容不能为空,并且是非查看表格,如果从表对应的子从表数据为空 则进行提示 */ + if(slaveChildConfig?.sTbName !=='noTable' && commonUtils.isNotEmptyObject(slaveChildConfig) && slaveChildConfig.bNotCanEmpty) { + const filterData = slaveChildData.filter(itemChild => itemChild.sSqlConditionId === item.sSqlConditionId); + if(commonUtils.isEmptyArr(filterData) ) { + message.error('第' + item.iRowNum + '行从表对应的'+ `${slaveChildConfig.sChinese || ''}${commonFunc.showMessage(app.commonConst, 'slaveNotNull')}`); + flag = false; + break; + } + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { + this.props.onSaveState({ + loading: false, + }); + return; + } + if (commonUtils.isNotEmptyArr(slaveData) && sModelsType === 'materialsStock/productionmaterials') { + let flag = true; + const iIndex = app.systemData.findIndex(item => item.sName === 'CkxMaterialsStockLimit'); + if (iIndex > -1) { + const bCkxMaterialsStockLimit = app.systemData[iIndex].sValue; + if (bCkxMaterialsStockLimit === '1') { + flag = await this.handleEleMaterialsStoreCurrQty(slaveData); + } + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'purchase/purchaseEnquiry') { + delete masterData.maxBillNo; + } + if (commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill') && !commonUtils.isEmpty(slaveChildConfig)) { + const slaveChildDataFilter = slaveChildData?.filter(item => { + return slaveData.map(item => item.sSqlConditionId).includes(item.sSqlConditionId); + }); + if (!commonBusiness.validateTable(slaveChildConfig, slaveChildDataFilter, this.props, '2')) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + if (sModelsType === 'cashier/receipt' || sModelsType === 'cashier/payment') { + let flag = true; + if (masterData.sSettlementId === 'bank') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sBankAccount)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsBankAccount'));/* 收/付款条件为银行时,银行、银行账号为必填项 */ + flag = false; + } + } + if (masterData.sSettlementId === 'bill') { + if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sInvoiceNo)) { + message.error(commonFunc.showMessage(app.commonConst, 'requiredsInvoiceNo'));/* 收/付款条件为票据时,银行、票据号码为必填项 */ + flag = false; + } + } + let dslaveTotalMoney = 0; + let flagCheckSave = true; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + for (const item of slaveData) { + if (item.handleType !== 'del') { + if (commonUtils.isNotEmptyNumber(item.dTotalMoney)) { + dslaveTotalMoney += item.dTotalMoney; + } + const dBalanceMoney = commonUtils.isNull(item.dBalanceMoney, 0); + const dTotalMoney = commonUtils.isNull(item.dTotalMoney, 0); + const dRoundingMoney = commonUtils.isNull(item.dRoundingMoney, 0); + const dCount = dRoundingMoney + dTotalMoney; + let bWarning = false; + if (dBalanceMoney > 0 || dBalanceMoney === 0) { + if (dCount > dBalanceMoney) { + bWarning = true; + } + } else if (dCount < dBalanceMoney) { + bWarning = true; + } + if (bWarning) { + if (sModelsType.includes('cashier/receipt')) { + message.error(commonFunc.showMessage(app.commonConst, 'NoOverBalanceMoneyReceipt'));/* 总金额不能超过未收/付款宽金额 */ + } else if (sModelsType.includes('cashier/payment')) { + message.error(commonFunc.showMessage(app.commonConst, 'NoOverBalanceMoneyPay'));/* 总金额不能超过未收/付款宽金额 */ + } + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const flatDel = commonUtils.isNull(item.dTotalMoney, 0) !== 0 || commonUtils.isNull(item.dRoundingMoney, 0) !== 0; + if (!flatDel) { + item.handleType = undefined; /* 付款单和收款单,去掉收款和付款金额为0的记录 */ + } else { + flagCheckSave = false; + } + } + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0 && flagCheckSave) { + message.warning('表格内容不能为空![dTotalMoney或dRoundingMoney必须大于0]'); + this.props.onSaveState({ + loading: false, + }); + return; + } + const dPmoney = this.props.getFloatNum('dProductMoney'); + dslaveTotalMoney = commonUtils.convertFixNum(dslaveTotalMoney, dPmoney);/* 取系统设定小数位 */ + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyNumber(masterData.dTotalMoney) && commonUtils.isNotEmptyNumber(masterData.dAdvanceMoney) && commonUtils.convertFixNum(masterData.dTotalMoney - masterData.dAdvanceMoney, dPmoney) !== dslaveTotalMoney) { + message.error(commonFunc.showMessage(app.commonConst, 'NotSameTotalMoney'));/* 主从表总金额不一致 */ + flag = false; + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + /* 销售发票、采购发票、发外发票 ,去掉总金额+舍入为0的数据 */ + if (sModelsType === 'sales/salesInvoice' || sModelsType === 'purchase/purchaseInvoice' || sModelsType === 'purchase/outsideInvoice') { + let flagCheckSave = true; + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + for (const item of slaveData) { + const flatDel = commonUtils.isNull(item.dTotalMoney, 0) !== 0 || commonUtils.isNull(item.dRoundingMoney, 0) !== 0; + if (!flatDel) { + item.handleType = undefined; /* 付款单和收款单,去掉收款和付款金额为0的记录 */ + } else { + flagCheckSave = false; + } + } + } + /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ + if (commonUtils.isEmptyArr(slaveData)) { + masterData = this.handleShare(); + } + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0 && flagCheckSave) { + message.warning('表格内容不能为空![dTotalMoney或dRoundingMoney必须大于0]'); + this.props.onSaveState({ + loading: false, + }); + return; + } + } + const data = []; + data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData])); + if (sModelsType !== 'commonBill/onlyMaster' && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' && !sModelsType.includes('purchase/purchaseEnquiry')) { + data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData)); + } + if (sModelsType.includes('sales/salesOrder') && !commonUtils.isEmpty(controlConfig)) { + if (commonUtils.isNotEmptyArr(materialsData)) { + const flag = true; + // for (const item of materialsData) { /* 销售订单中的物料规格不是必填项,只有工单里才要判断必填 */ + // if (commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === 'paper' && commonUtils.isEmptyObject(item.sMaterialsStyle)) { + // message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, 'NoStyle'));/* 请填写规格 */ + // flag = false; + // break; + // } + // } + if (!flag) { + this.props.onSaveState({ + loading: false, + }); + return; + } + } + data.push(commonBusiness.mergeData('control', controlConfig.sTbName, controlData, controlDelData)); + data.push(commonBusiness.mergeData('materials', materialsConfig.sTbName, materialsData, materialsDelData)); + data.push(commonBusiness.mergeData('process', processConfig.sTbName, processData, processDelData)); + if (commonUtils.isNotEmptyObject(colorConfig)) { + data.push(commonBusiness.mergeData('color', colorConfig.sTbName, colorData, colorDelData)); + } + if (commonUtils.isNotEmptyObject(packConfig)) { + data.push(commonBusiness.mergeData('pack', packConfig.sTbName, packData, packDelData)); + } + } + if (sModelsType === 'purchase/purchaseOrder' && !commonUtils.isEmpty(orderDetailConfig)) { + data.push(commonBusiness.mergeData('detail', orderDetailConfig.sTbName, orderDetailData, orderDetailDelData)); + } else if (commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill') && !commonUtils.isEmpty(slaveChildConfig)) { + data.push(commonBusiness.mergeData('slaveChild', slaveChildConfig.sTbName, slaveChildData, slaveChildDelData)); + } + if (!commonUtils.isEmpty(slave0Config)) { + data.push(commonBusiness.mergeData('slave0', slave0Config.sTbName, slave0Data, slave0DelData)); + } + if(commonUtils.isNotEmptyArr(slaveInfoList)){ + slaveInfoList.forEach(name => { + const tbName = name.replace('Config', ''); + const {[`${tbName}Config`]: tableConfig, [`${tbName}Data`]: tableData, [`${tbName}DelData`]: tableDelData } = this.props; + if (tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery" && tbName !== 'slave0') { + const tableDataNew = tbName === "master" ? [tableData] : tableData; + data.push(commonBusiness.mergeData(tbName, tableConfig.sTbName, tableDataNew, tableDelData)); + } + }); + } + + if(commonUtils.isNotEmptyArr(slaveChildInfoList)){ + slaveChildInfoList.forEach(name => { + const tbName = name.replace('Config', ''); + const {[`${tbName}Config`]: tableConfig, [`${tbName}Data`]: tableData, [`${tbName}DelData`]: tableDelData } = this.props; + if (tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery") { + const tableDataNew = tbName === "master" ? [tableData] : tableData; + data.push(commonBusiness.mergeData(tbName, tableConfig.sTbName, tableDataNew, tableDelData)); + } + }); + } + + this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }); + } + }); + }; + + // // 保存前根据批次号重新汇总数据 + // handleGroupDataByDefineNo = async () => { + // const { formRoute, slaveConfig = {}, slaveData, slaveChildData } = this.props; + // if ( + // formRoute === '/indexPage/commonSubBill' && + // commonUtils.isNotEmptyArr(slaveData) && + // commonUtils.isNotEmptyArr(slaveChildData) + // ) { + // const { gdsconfigformslave = [] } = slaveConfig; + // const bGroupDataByDefineNo = gdsconfigformslave.some(item => item.bVisible && item.sControlName === 'bGroupDataByDefineNo'); + // if (bGroupDataByDefineNo) { + // + // const bSSqlConditionIdEmpty = slaveData.some(item => !item.sSqlConditionId); + // if (bSSqlConditionIdEmpty) { + // message.error('从表未配置sSqlConditionId字段,汇总失败!'); + // return { error: true }; + // } + // + // // 从表的sSqlConditionId数组 + // const sSqlConditionIdArr = slaveData.map(item => item.sSqlConditionId); + // // 过滤子从表数据(有sSqlConditionId、sSqlConditionId在sSqlConditionIdArr内、有批次号) + // const slaveChildDataFilter = slaveChildData.filter( + // item => + // item.sSqlConditionId && + // sSqlConditionIdArr.includes(item.sSqlConditionId) && + // (item.sDefineNo || item.sDefineNo2) + // ); + // // 按sSqlConditionId分组子从表数据 + // const sSqlConditionIdGroup = slaveChildDataFilter.reduce((result, child) => { + // const { sSqlConditionId } = child; + // let iIndex = result.findIndex(arr => arr && arr.some(item => item.sSqlConditionId === sSqlConditionId)); + // if (iIndex === -1) { + // result.push([]); + // iIndex = result.length - 1; + // } + // result[iIndex].push(child); + // return result; + // }, []); + // + // const slaveChildDataGroup = []; + // sSqlConditionIdGroup.forEach(group => { + // // 按批次号分组子从表数据 + // const defineNoGroup = group.reduce((result, child) => { + // const { sDefineNo, sDefineNo2 } = child; + // let iIndex = result.findIndex(arr => arr && arr.some(item => { + // const _sDefineNo = commonUtils.isEmptyStr(item.sDefineNo) ? '' : item.sDefineNo; + // const _sDefineNo2 = commonUtils.isEmptyStr(item.sDefineNo2) ? '' : item.sDefineNo2; + // const sDefineNoNew = commonUtils.isEmptyStr(sDefineNo) ? '' : sDefineNo; + // const sDefineNo2New = commonUtils.isEmptyStr(sDefineNo2) ? '' : sDefineNo2; + // return _sDefineNo === sDefineNoNew && _sDefineNo2 === sDefineNo2New; + // })); + // if (iIndex === -1) { + // result.push([]); + // iIndex = result.length - 1; + // } + // result[iIndex].push(child); + // return result; + // }, []); + // slaveChildDataGroup.push(defineNoGroup); + // }); + // const slaveDataNew = []; + // for (let index0 = 0; index0 < slaveChildDataGroup.length; index0++) { + // const group = slaveChildDataGroup[index0]; + // + // // 获取关联的从表数据 + // const sSqlConditionId = group[0][0].sSqlConditionId; + // const iSlaveIndex = slaveData.findIndex(item => item.sSqlConditionId === sSqlConditionId); + // const { sId } = slaveData[iSlaveIndex]; + // + // for (let index = 0; index < group.length; index++) { + // const defineNoGroup = group[index]; + // let dAuxiliaryQty = 0; + // let dEscrowQty = 0; + // let dGiveAuxiliaryQty = 0; + // let dProductQty = 0; + // defineNoGroup.forEach(item => { + // const { itype, iType } = item; + // const type = itype !== undefined ? itype : iType !== undefined ? iType : 1; + // if (type === 1) { + // dAuxiliaryQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + // } else if (type === 2) { + // dEscrowQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + // } else if (type === 3) { + // dGiveAuxiliaryQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + // } else if (type === 10) { + // dAuxiliaryQty += commonUtils.isNull(item.dProductQty, 0); + // } else if (type === 11) { + // dProductQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + // } + // }) + // + // const iIndex = slaveData.findIndex(item => item.sId === sId); + // let slaveRowData = {}; + // slaveRowData = await this.handleTableChange('slave', 'dEscrowQty', { dEscrowQty }, sId, [], true); + // slaveData[iIndex] = slaveRowData; + // window.tmpSlaveData = slaveData; + // slaveRowData = await this.handleTableChange('slave', 'dGiveAuxiliaryQty', { dGiveAuxiliaryQty }, sId, [], true); + // slaveData[iIndex] = slaveRowData; + // window.tmpSlaveData = slaveData; + // slaveRowData = await this.handleTableChange('slave', 'dAuxiliaryQty', { dAuxiliaryQty }, sId, [], true); + // slaveData[iIndex] = slaveRowData; + // if (defineNoGroup.some(item => item.itype === 11 || item.iType === 11)) { + // window.tmpSlaveData = slaveData; + // slaveRowData = await this.handleTableChange('slave', 'dProductQty', { dProductQty }, sId, [], true); + // slaveData[iIndex] = slaveRowData; + // } + // window.tmpSlaveData = null; + // + // if (slaveDataNew.some(item => item.sId === sId)) { + // slaveRowData = { ...slaveRowData, sId: commonUtils.createSid(), handleType: 'add' }; + // } else { + // const handleType = slaveRowData.handleType || 'add'; + // const addState = handleType === 'add' ? { sId: commonUtils.createSid() } : {}; + // slaveRowData = { ...slaveRowData, handleType, ...addState }; + // } + // slaveRowData.sDefineNo = defineNoGroup[0].sDefineNo; + // slaveRowData.sDefineNo2 = defineNoGroup[0].sDefineNo2; + // slaveDataNew.push(slaveRowData); + // } + // } + // return { + // slaveData: slaveDataNew, + // slaveChildData: slaveChildData, + // bGroupDataByDefineNo + // } + // } + // } + // return { slaveData, slaveChildData }; + // } + + // 子从表数据修改后根据批次号重新汇总数据 + handleGroupDataByDefineNoAfterChange = async () => { + // const { slaveData = [], slaveChildData = [], error, bGroupDataByDefineNo } = await this.handleGroupDataByDefineNo(); + // if (error || !bGroupDataByDefineNo) return; + // if (slaveChildData.length && !slaveData.length) return; + // + // const { slaveSelectedRowKeys = [] } = this.props; + // const addState = {}; + // if (commonUtils.isEmptyArr(slaveSelectedRowKeys) || !slaveData.some(item => item.sId === slaveSelectedRowKeys[0])) { + // addState.slaveSelectedRowKeys = [slaveData[0].sId]; + // } + // + // this.props.onSaveState({ + // slaveData, slaveChildData, ...addState + // }) + } + + /* 切换作废状态 */ + handleOkChangeInvaild = async (props) => { + const { + sModelsId, masterData, masterConfig, handleType, + } = props; + const value = { + sClientType: '1', + sId: [masterData.sId], + sTableName: masterConfig.sTbName, + handleType, + }; + const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; + const { data } = await commonServices.postValueService(props.app.token, value, url); + if (data.code === 1) { + message.success(data.msg); + masterData.bInvalid = handleType === 'toVoid'; /* 作废状态 */ + props.onSaveState({ masterData }); + /* 审核(消审)后刷新跳转路由数据(commonList)的数据 */ + if (props.app.currentPane.refresh !== undefined) { + props.app.currentPane.refresh(); + } + } else { + props.getServiceError(data); + } + }; + + /* 作废、取消作废的公用函数 */ + handleInvalid = (obj) => { + const props = { ...this.props, ...this.state, ...obj }; + const onOkInvaild = this.handleOkChangeInvaild; + confirm({ + title: obj.title, + onOk() { + onOkInvaild(props); + }, + onCancel() { + }, + }); + }; + + /* 单据页上查下查跳转页面 */ + handleSearchUpDown = async (sId, sActiveId) => { + /* 待用数据声明 */ + const { dispatch, sTabId } = this.props; + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + sParentId: sTabId, /* 父页面编号 */ + checkedId: sId, + }, + }); + }; + + /* 上查下查三级菜单 在上一条下一条时必须清除searchUpDownData */ + handleSearchUpDownThird = async (upDownKey) => { + /* 待用数据声明 */ + const { masterConfig, searchUpDownData: searchUpDownDataOld } = this.props; + /** 获取sqlCondition参数:{sSqlCondition,sId} */ + const searchUpDownData = commonUtils.isEmptyObject(searchUpDownDataOld) ? {} : { ...searchUpDownDataOld }; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const searchUpDownConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(`${upDownKey}`)); + for (const item of searchUpDownConfig) { + if (commonUtils.isEmptyArr(searchUpDownData[item.sControlName])) { + searchUpDownData[item.sControlName] = await this.getSearchUpDownData(item); + } + } + this.props.onSaveState({ searchUpDownData }); + } + }; + + /* 单据页复制到 */ + handleCopyTo = async (name, sActiveId) => { + /* 待用数据声明 */ + const { + masterConfig, + masterData, + slaveData, + controlData, + materialsData, + processData, + packData, + slaveChildData, + slave0Data, + app, + token, + sModelsId, + formRoute, + } = this.props; + + // 从表有sCopyToCondition则不能复制,并提示 + if (commonUtils.isNotEmptyArr(slaveData) && name.includes('.')) { + const sCopyToConditionIndex = slaveData.findIndex(item => item.sCopyToCondition); + if (sCopyToConditionIndex !== -1) { + message.warning(slaveData[sCopyToConditionIndex].sCopyToCondition); + this.props.onSaveState({ + loading: false, + }); + return; + } + } + + const copyTo = {}; + const copyToConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(name)); + copyTo.name = name; + copyTo.config = copyToConfig; + copyTo.masterData = masterData; + copyTo.slaveData = slaveData; + copyTo.controlData = controlData; + copyTo.materialsData = materialsData; + copyTo.processData = processData; + copyTo.packData = packData; + copyTo.slaveChildData = slaveChildData; + copyTo.slave0Data = slave0Data; + const tbSuffix = ''; + let sId = ''; + if (!commonUtils.isEmpty(slaveData)) { + sId = slaveData[0].sId; + } + + if (commonUtils.isNotEmptyObject(name) && name.toLowerCase().includes('btncopyto.tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */ + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(copyToConfig) ? '' : copyToConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(name) ? name : 'BtnCopyTo.TmpInfoBySql'; + const sRowData = masterData; + 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 = name.replace('BtnCopyTo.','').trim(); + if(key === masterName) { + copyTo.masterData = returnData[key][0]; + }else { + copyTo[sName] = returnData[key]; + } + } + if (commonUtils.isNotEmptyArr(copyTo.masterData) && Array.isArray(copyTo.masterData)) { + copyTo.masterData = copyTo.masterData[0]; + } + } + } else { + this.props.getServiceError(dataReturn); + } + } + + const dataUrl = `${commonConfig.server_host}bill/billCopyToCheck/?sModelsId=${sModelsId}&sActiveId=${sActiveId}&tbSuffix=${tbSuffix}&sName=${formRoute}`; + const values = { sSlaveId: sId }; + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ + loading: false, + }); + // eslint-disable-next-line no-underscore-dangle + const _this = this; // 解决confirm中this指向问题; + if (dataReturn.dataset.rows.length > 0) { + confirm({ + title: commonFunc.showMessage(app.commonConst, 'beUsedToNew'), /* 单据已存在,是否填写新单据 */ + onOk() { + _this.handleDispatch(copyTo, sActiveId); + }, + onCancel() { + }, + }); + } else { + this.handleDispatch(copyTo, sActiveId); + } + } + }; + handleDispatch = (copyTo, sActiveId) => { + const { dispatch } = this.props; + console.log('copyTo', copyTo); + dispatch({ + type: 'content/onRouter', + payload: { + url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`, /* 接口地址 */ + copyTo, + }, + }); + } + + /* 复制从产品工艺卡列表 */ + handleCopyFrom = async (obj) => { + /* 待用数据声明 */ + const { + slaveData, + } = this.props; + this.copyName = obj.name; + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${obj.copyFromSActiveId}?sModelsId=${obj.copyFromSActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + if (obj.copyFromKey.includes('customizeFormInfo')) { /* 复制从自定义窗体 */ + this.props.onSaveState({ copyFromChooseVisible: true, copyFromChooseData: returnData, copyFromKey: obj.copyFromKey }); + } else { + this.props.onSaveState({ productProcessInfoChooseVisible: true, productProcessInfoChooseData: returnData, productProcessInfoCopyFromKey: obj.copyFromKey }); + } + } else { + this.props.getServiceError(dataReturn); + } + }; + + /* 上一条、下一条、首条、末条 */ + handleSearchData = async (handleType) => { + const { + sModelsId, app, currentIndexFlag, currentPageNo, slaveChildConfig, memoDataList, masterData, + masterConfig, slaveConfig, checkConfig, + } = this.props; + let { sBillIdsArray = []} = this.props; + let { currentId } = this.props; + const { currentPane, token } = app; + const { + pages, sFilterOrderBy, bFilter, sListFormmasterId, currentIndex, + } = currentPane; + let currentPosition = currentIndexFlag ? currentPageNo : commonUtils.isEmptyObject(pages) ? 1 : (((pages.current - 1) * commonConfig.pageSize) + Number.parseInt(currentIndex, 10)) + 1; + if (currentIndex === undefined) { + currentPosition = 1; + } + // if (handleType === 'first') { + // currentPosition = 1; + // } else if (handleType === 'end') { + // currentPosition = pages.total; + // } + if (!commonUtils.isNum(currentPosition)) { // 如果是列表直接点增加,就跳到第一条去 + currentPosition = 1; + } + let bExist = false; + /* 如果sBillIdsArray已存在 则不请求 */ + if(commonUtils.isNotEmptyArr(sBillIdsArray) && sBillIdsArray.length > 0) { + const index = sBillIdsArray.indexOf(currentId); + if(index > -1) { + if ("next".includes(handleType)) { + currentPosition = index + 1; + if(currentPosition > sBillIdsArray.length - 1 ){ + message.warn('当前已经是最后一条'); + return ; + } + } else if ("up".includes(handleType)) { + if(index === 0){ + message.warn('当前已经是第一条!'); + return ; + } + currentPosition = index - 1; + } else if ("first".includes(handleType)) { + currentPosition = 0; + } else if ("end".includes(handleType)) { + currentPosition = sBillIdsArray.length - 1; + } + currentId = sBillIdsArray[currentPosition]; + currentPosition = currentPosition + 1; + bExist = true; + } else { + bExist = false; + } + } + /* 如果是第一次请求 */ + if(!bExist) { + const value = { + sClientType: '1', sFilterOrderBy, bFilter, sListFormmasterId, currentPosition, handleType, iCountSum: pages.total, + sUpId: masterData?.sId, + }; + const url = `${commonConfig.server_host}business/getBusinessDataByIndex?sModelsId=${sModelsId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + /* 接收返回值 */ + /* 成功的话刷新页面(同步主表和从表数据),不成功就弹出错误提示 */ + if (data.code === 1) { + /* 数据查询成功 */ + const returnData = data.dataset.rows[0]; + + /* 拿到接口返回的sBillids */ + console.log('returnData', returnData); + const sBillIds = returnData.sBillIds; + if(commonUtils.isNotEmptyArr(sBillIds)) { + sBillIdsArray = sBillIds; + } + currentId = returnData.sId; + currentPosition = returnData.currentPosition; + } else { /* 失败 */ + this.props.getServiceError(data); + return false; + } + + } + this.props.onSaveState({ + currentIndexFlag: true, + currentPageNo: currentPosition, + currentId, + searchUpDownData: {}, + slaveSelectedRowKeys: [], + sBillIdsArray, + }, + () => { + this.handleGetData(masterConfig, slaveConfig, checkConfig); + if(commonUtils.isNotEmptyObject(slaveChildConfig)) { + this.handleGetOneMemoData('slaveChild', slaveChildConfig); + } + if (commonUtils.isNotEmptyObject(memoDataList)) { + this.handleGetMemoData1(memoDataList); + } + }); + return true; + }; + + /* 取消操作 */ + handleCancel = (obj) => { + /* 待用数据声明 */ + const that = this; + const { + currentId, masterConfig, slaveConfig, checkConfig, app, slaveChildConfig, + } = this.props; + const { userinfo } = app; + const onSendSocketMessage = this.props.handleSendSocketMessage; + const onGetDataOk = this.handleGetData; + const onSaveStateOk = this.props.onSaveState; + const { copyTo } = app.currentPane; + confirm({ + title: obj.title, + onOk() { + // 解决新建页签sid为空的bug + if (!currentId) { + const { panes, currentPane } = that.props.app; + const currentPaneIndex = panes.findIndex(item => item.key === currentPane.key); + const newPanes = []; + if (currentPaneIndex > 0) { + panes.forEach((item, index) => { + if (index !== currentPaneIndex) { + newPanes.push(item); + } + }); + that.props.dispatch({ type: 'app/removePane', payload: { changePanes: newPanes, currentPane: panes[currentPaneIndex - 1] } });/* 关闭当前页签 */ + } + /* 复制到新增页签取消时 关闭页签 并清除操作记录 */ + if (commonUtils.isNotEmptyObject(copyTo)) { + const { slaveData, srcFormRoute, copyOtherData } = copyTo; + if (commonUtils.isNotEmptyObject(srcFormRoute) && srcFormRoute.includes('materialRequirementsPlanning')) { /* 物料需求计划用sWorkOrderMaterialId作为唯一键 */ + const sIdArray = []; + if (commonUtils.isNotEmptyArr(copyOtherData) && copyOtherData[0].name === 'detail' && commonUtils.isNotEmptyArr(copyOtherData[0].data)) { + const slaveDetailData = copyOtherData[0].data; + slaveDetailData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } else { /* 变更单、采购申请单 */ + slaveData.forEach((item) => { + const redisKey = item.sWorkOrderMaterialId; + sIdArray.push(redisKey); + }); + } + + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } else if (commonUtils.isNotEmptyArr(slaveData)) { + const sIdArray = []; + slaveData.forEach((item) => { + const redisKey = item.sSlaveId; + sIdArray.push(redisKey); + }); + const sId = sIdArray.toString(); + onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); + } + } + + return; + } + // + const bChanged = commonBusiness.handleGetChanged(that.props) ; + if(bChanged) { + that.handleGetOneMemoData('slaveChild', slaveChildConfig); + onGetDataOk(masterConfig, slaveConfig, checkConfig); + } + onSaveStateOk({ enabled: false }); + 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); + }, + onCancel() { + }, + }); + }; + + /* 删除 */ + handleDel = (obj) => { + const props = { ...this.props, ...this.state }; + const onOkDel = this.handleOkDel; + confirm({ + title: obj.title, + onOk() { + onOkDel(props); + }, + onCancel() { + }, + }); + }; + + /* 确定要删除 */ + handleOkDel = async (props) => { + /* 数据参数 */ + const { + token, sModelsId, sModelsType, masterConfig, masterData, slaveConfig, checkConfig, orderDetailConfig, slaveChildConfig, slave0Config, app, formRoute, + } = props; + const { userinfo, systemData } = app; + const { sMakePerson } = masterData; /* 本单据制单人 */ + const { sUserName, sType } = userinfo;/* 登录用户 */ + const iIndex = systemData.findIndex(item => item.sName === 'CkxModifyBillNoMakePerson'); + if (iIndex > -1) { + const sValue = systemData[iIndex].sValue; + if (sValue === '0') { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ + if (sType !== 'sysadmin' && sUserName !== sMakePerson) { + message.error(commonFunc.showMessage(app.commonConst, 'NoDelByNoMakePerson')); + return; + } + } + } + const value = { + sClientType: '1', + data: { + sMasterTable: masterConfig.sTbName, + sId: [masterData.sId], + }, + }; + const sSlaveTable = []; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + sSlaveTable.push({ + tableName: slaveConfig.sTbName, + relationName: 'sParentId', + }); + } + if (commonUtils.isNotEmptyObject(checkConfig)) { + sSlaveTable.push({ + tableName: checkConfig.sTbName, + relationName: 'sParentId', + }); + } + if (commonUtils.isNotEmptyObject(slave0Config)) { + sSlaveTable.push({ + tableName: slave0Config.sTbName, + relationName: 'sParentId', + }); + } + if (sModelsType === 'purchase/purchaseOrder' && !formRoute.includes('commonSubBill')) { + if (commonUtils.isNotEmptyObject(orderDetailConfig)) { + sSlaveTable.push({ + tableName: orderDetailConfig.sTbName, + relationName: 'sParentId', + }); + } + } + if (commonUtils.isNotEmptyObject(formRoute) && formRoute.includes('commonSubBill') && !commonUtils.isEmpty(slaveChildConfig)) { + sSlaveTable.push({ + tableName: slaveChildConfig.sTbName, + relationName: 'sParentId', + }); + } + value.sSlaveTable = sSlaveTable; + const { sBillNo, sId } = masterData || {}; + const url = `${commonConfig.server_host}business/delMasSlaBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + /* 接收返回值 */ + const { data } = await commonServices.postValueService(token, value, url); + if (data.code === 1) { + /* 数据删除成功 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + this.handleDelDataSuccess(props); + } else { /* 失败 */ + this.props.getServiceError(data); + } + }; + + /* 数据删除成功跳转到新路由即pane */ + handleDelDataSuccess = (props) => { + const { app } = props; + let { panes, currentPane } = app; + /* 删除单据后退出当前路由后,标签panes变化后的集合 */ + panes = panes.filter(pane => pane.key !== currentPane.key); + /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ + currentPane = panes[panes.length - 1]; + this.props.onRemovePane(panes, currentPane); + }; + + handleDataReplace = (sId, tableDataRow, type) => { + const { slaveChildData, slaveSelectedRowKeys, slaveData } = this.props; + + delete tableDataRow?.sWorkOrderUsed; + delete tableDataRow?.bInuse; + delete tableDataRow?.rowTag; + + if (!Array.isArray(slaveChildData)) return { + tableDataRow: { ...tableDataRow || {}, sSqlConditionId: sId, sSlaveId: sId }, + slaveChildData: [], + }; + + if (type === 'copy') { + const sSqlConditionId = slaveData.find(i => i && slaveSelectedRowKeys.includes(i.sId))?.sSqlConditionId; + const addSlaveChildValue = cloneDeep(slaveChildData?.filter(i => i && i.sSqlConditionId === sSqlConditionId)); + const iOrderArr = []; + slaveChildData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + addSlaveChildValue.forEach((i, index) => { if (i) { + const uuid = commonUtils.createSid(); + i.handleType = 'add'; + i.key = uuid; + i.iOrder = commonUtils.isNotEmptyArr(slaveChildData) ? iOrderMax + 1 + index : 0; + i.sSqlConditionId = sId; + i.sId = uuid; + i.sSlaveId = uuid; + delete i.rowTag; + delete i?.bInuse; + delete i.sWorkOrderUsed; + }}); + return { + tableDataRow: { ...tableDataRow || {}, sSqlConditionId: sId, sSlaveId: sId }, + slaveChildData: [...slaveChildData, ...addSlaveChildValue || []], + } + } + + return { + tableDataRow: { ...tableDataRow || {}, sSqlConditionId: sId, sSlaveId: sId }, + slaveChildData: [...slaveChildData], + }; + } + + /** 添加表格空行 */ + handleTableAdd = (name, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + masterData, masterConfig, sModelsType, app, [`${name}Pagination`]: tablePagination, slaveData, slaveSelectedRowKeys, + } = this.props; + let { [`${name}Data`]: tableData } = this.props; + tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; + let tableDataRow = this.props.onDataRowAdd(name, true); + /* 添加行的业务处理拿出去 */ + if (sModelsType.includes('sales/')) { + if (commonUtils.isEmptyStr(masterData.sCustomerId)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex(item => ((item.sName === 'sCustomerId' || item.sName === 'sCustomerNo' || item.sName === 'sCustomerName') && item.bVisible)); + if (iIndex > -1) { + const { showName } = masterConfig.gdsconfigformslave[iIndex]; + message.warn(showName + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空 + return; + } + } + } + if (commonUtils.isEmptyObject(tableDataRow.sWareHouseId)) { + tableDataRow.sWareHouseId = masterData.sWareHouseId; + tableDataRow.sWareHouseNo = masterData.sWareHouseNo; + tableDataRow.sWareHouseName = masterData.sWareHouseName; + tableDataRow.sLocationId = masterData.sLocationId; + tableDataRow.sLocationNo = masterData.sLocationNo; + tableDataRow.sLocationName = masterData.sLocationName; + tableDataRow.sWareHouseLocationId = masterData.sWareHouseLocationId; + tableDataRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; + tableDataRow.sWareHouseLocationName = masterData.sWareHouseLocationName; + } + let addState = {}; + if (name === 'slave') { + if (['12710101117007068710620'].includes(this.props.sModelsId)) { + const value = this.handleDataReplace(tableDataRow.sId, tableDataRow); + addState.slaveChildData = value.slaveChildData; + tableDataRow = { ...value.tableDataRow || {} }; + } + tableDataRow.sSqlConditionId = tableDataRow.sId; + } + + if (name === 'slaveChild') { + /* 找到从表的sSqlConditionId */ + if(commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.error('请选择父级!'); + return ; + } + let iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + tableDataRow.sSqlConditionId = slaveData[iIndex].sSqlConditionId; + } + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId], ...addState }); + } + }; + + /** 复制 */ + handleTableCopy = (name, isWait, isTree) => { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, [`${name}Pagination`]: tablePagination, sModelsType, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + const controlChildData = tableData.filter(item => item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(tableData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + const treeCopyNodes = new Map(); + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSrcSlaveId = ''; + tableDataRow.sSrcId = ''; + tableDataRow.dSrcQty = null; + tableDataRow.rowTag = null; + tableDataRow.sOrderdetailUsed = ''; + tableDataRow.sProductionUsed = ''; + tableDataRow.sWorkOrderUsed = ''; + tableDataRow.dWorkOrderQty = 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); + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + + if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsMemo)) { + tableDataRow.sMaterialsMemo = ''; + } + if (commonUtils.isNotEmptyObject(tableDataRow.sProcessMemo)) { + tableDataRow.sProcessMemo = ''; + } + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const sAllOldId = tableData[tableDataIndex].sAllId; + const arr = sAllOldId.split(','); + const newId = commonUtils.createSid(); + tableDataRow.sId = newId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + tableDataRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + tableDataRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + tableDataRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(sId, sNewParentAllId); + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(tableData, true); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, ...treeState }, () => { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow, + } + // 汇总到从表方法 + this.handleWriteBack(params); + // this.handleGroupDataByDefineNoAfterChange(); + }); + } + } + } + } + }; + + + /** 复制全部 */ + handleTableCopyAll = (name, isWait, isTree) => { + const { + slaveData, controlData, slaveSelectedRowKeys, materialsData, [`${name}Pagination`]: tablePagination, sModelsType, + } = this.props; + let { processData } = this.props; + if (name === 'slave') { + if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of slaveSelectedRowKeys) { + const slaveDataIndex = slaveData.findIndex(item => item.sId === sId); + let addState = {}; + if (slaveDataIndex > -1) { + let slaveDataRow = JSON.parse(JSON.stringify(slaveData[slaveDataIndex])); + slaveDataRow.sId = commonUtils.createSid(); + slaveDataRow.handleType = 'add'; + slaveDataRow.key = slaveDataRow.sId; + const iOrderArr = []; + slaveData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + slaveDataRow.iOrder = commonUtils.isNotEmptyArr(slaveData) ? iOrderMax + 1 : 0; + if (['12710101117007068710620'].includes(this.props.sModelsId)) { + const value = this.handleDataReplace(slaveDataRow.sId, slaveDataRow, 'copy'); + addState.slaveChildData = value.slaveChildData; + slaveDataRow = { ...value.tableDataRow || {} }; + } + slaveData.push(slaveDataRow); + if (sModelsType !== 'sales/salesOrderPack') { + if (commonUtils.isNotEmptyArr(controlData)) { + controlData.filter(itemControl => itemControl.sSlaveId === sId).forEach((itemControl) => { + const tableDataRow = JSON.parse(JSON.stringify(itemControl)); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + tableDataRow.sSlaveId = slaveDataRow.sId; + controlData.push(tableDataRow); + /* 部件表复制其材料表、工序表 */ + materialsData.filter(item => item.sControlId === itemControl.sId && item.sType !== '2').forEach((item) => { + const materialsRow = JSON.parse(JSON.stringify(item)); + materialsRow.sId = commonUtils.createSid(); + materialsRow.handleType = 'add'; + materialsRow.sControlId = tableDataRow.sId; + materialsRow.sPartsName = tableDataRow.sPartsName; + materialsRow.sSlaveId = tableDataRow.sSlaveId; + materialsData.push(materialsRow); + }); + processData.filter(item => item.sControlId === itemControl.sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processRow.sSlaveId = tableDataRow.sSlaveId; + processData.push(processRow); + }); + processData = this.sortData(controlData, processData); + }); + } + if (commonUtils.isNotEmptyArr(materialsData)) { /* 订单从表复制全部 复制成品材料 */ + materialsData.filter(item => item.sSlaveId === sId && item.sType === '2').forEach((materialsItem) => { + const materialsRow = JSON.parse(JSON.stringify(materialsItem)); + materialsRow.handleType = 'add'; + materialsRow.sId = commonUtils.createSid(); + materialsRow.sSlaveId = slaveDataRow.sId; + materialsData.push(materialsRow); + }); + } + + if (commonUtils.isNotEmptyArr(processData)) { /* 订单从表复制全部 复制成品工序 */ + processData.filter(item => item.sSlaveId === sId && item.sType === '3').forEach((processItem) => { + const processRow = JSON.parse(JSON.stringify(processItem)); + processRow.handleType = 'add'; + processRow.sId = commonUtils.createSid(); + processRow.sSlaveId = slaveDataRow.sId; + processData.push(processRow); + }); + } + } + } + this.props.onSaveState({ + slaveData, + [`${name}Pagination`]: { ...tablePagination, total: slaveData.length, current: 9999 }, + controlData, + materialsData, + processData, + ...addState, + }); + } + } + } else if (name === 'control') { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + /* 获取复制节点下的所有子节点 */ + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const { + [`${name}SelectedRowKeys`]: treeSelectedKeys, + } = this.props; + const controlChildData = tableData.filter(item => item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]); + if (commonUtils.isNotEmptyArr(tableData)) { + controlChildData.forEach((itemNew) => { + tableSelectedRowKeys.push(itemNew.sId); + }); + } + } + const treeCopyNodes = new Map(); + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + const iOrderArr = []; + tableData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + if (sModelsType === 'sales/salesOrderPack' && isTree) { /* 树形 */ + const sAllOldId = tableData[tableDataIndex].sAllId; + const arr = sAllOldId.split(','); + const newId = commonUtils.createSid(); + tableDataRow.sId = newId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + tableDataRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + tableDataRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + tableDataRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(sId, sNewParentAllId); + } + if (isWait) { + return tableDataRow; + } else if (commonUtils.isNotEmptyObject(tableDataRow)) { + tableData.push(tableDataRow); + let treeState = []; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(tableData, true); + } + /* 部件表复制其材料表、工序表 */ + materialsData.filter(item => item.sControlId === sId && item.sType !== '2').forEach((item) => { + const materialsRow = JSON.parse(JSON.stringify(item)); + materialsRow.sId = commonUtils.createSid(); + materialsRow.handleType = 'add'; + materialsRow.sControlId = tableDataRow.sId; + materialsRow.sPartsName = tableDataRow.sPartsName; + materialsData.push(materialsRow); + }); + processData.filter(item => item.sControlId === sId && item.sType !== '3').forEach((item) => { + const processRow = JSON.parse(JSON.stringify(item)); + processRow.sId = commonUtils.createSid(); + processRow.handleType = 'add'; + processRow.sControlId = tableDataRow.sId; + processRow.sPartsName = tableDataRow.sPartsName; + processData.push(processRow); + }); + processData = this.sortData(tableData, processData); + this.props.onSaveState({ + [`${name}Data`]: tableData, + [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, + materialsData, + processData, + ...treeState, + }); + } + } + } + } + } + else if (name === 'slaveChild') { + const { + [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + } = this.props; + if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { + message.warn(commonFunc.showMessage(this.props.app.commonConst, 'pleaseChooseCopyData'));/* 请选择复制数据 */ + } else { + for (const sId of tableSelectedRowKeys) { + const tableDataIndex = tableData.findIndex(item => item.sId === sId); + if (tableDataIndex > -1) { + const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.handleType = 'add'; + tableDataRow.key = tableDataRow.sId; + const iOrderArr = []; + tableData.forEach((item) => { + const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */ + iOrderArr.push(iOrder); + }); + const iOrderMax = Math.max(...iOrderArr); + tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0; + tableData.push(tableDataRow); + + } + this.props.onSaveState({ tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }}, () => { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow: commonUtils.isEmptyArr(tableData) ? {} : tableData[0], + } + // 汇总到从表方法 + this.handleWriteBack(params); + // this.handleGroupDataByDefineNoAfterChange(); + }); + } + } + } + }; + + // 删除行 + handleDataRowDel = (name, isWait, tableSelectedRowKeys) => { + return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys, () => { + if (name === 'slaveChild') { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow: commonUtils.isEmptyArr(this.props.slaveChildData) ? [] : this.props.slaveChildData[0], + } + // 汇总到从表方法 + this.handleWriteBack(params); + // this.handleGroupDataByDefineNoAfterChange(); + } + }); + } + + singlePQtyChange = (tableDataRow) => { + const bZfZf = tableDataRow.iPrintMode === 2; // 正反版 + const bSample = tableDataRow.dSumPQty >= 4; // 样本 + tableDataRow.iPrintModePo = tableDataRow.iPrintMode <= 2 ? 2 : tableDataRow.iPrintMode === 3 ? 0 : -1; + + if (bSample) { + if (tableDataRow.dSinglePQty > 0) { + tableDataRow.dPlateQty = Math.ceil(tableDataRow.dSumPQty / tableDataRow.dSinglePQty); + } + + if (bZfZf && (tableDataRow.iPrintModePo === 2)) { // 双面样本,正反 + if (tableDataRow.dPlateQty < 2) { // 不管建议放正自翻版了,点方式什么是什么 + tableDataRow.dPlateQty = 2; + tableDataRow.iStick = Math.ceil(commonUtils.isNull(tableDataRow.dPlateQty, 0) / 2); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty / 2); + } + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } + } else { + if (tableDataRow.iPrintModePo !== 2) { // 单面样本 + tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; + } else { + tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); + } + tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + if (tableDataRow.iStick > 0 && tableDataRow.dSinglePQty > 0) { + tableDataRow.dMachineQty = commonUtils.convertFixNum((commonUtils.isNull(tableDataRow.dPartsQty, 0) * commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty / tableDataRow.iStick, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } else { + tableDataRow.iStick = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * ( + commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + if (bZfZf && tableDataRow.iPrintModePo === 2) { + tableDataRow.dPlateQty = 2; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); + } else { + tableDataRow.dPlateQty = 1; + tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); + } + + if (tableDataRow.dSinglePQty > 0) { + if (tableDataRow.iPage > 1) { // 笔记本 用 非样本 来做, 倍率是每页都一样才可以用 原先 /2 是指页数, 现在直接按张数 + tableDataRow.dMachineQty = commonUtils.convertFixNum((tableDataRow.dPartsQty * tableDataRow.iPage) / tableDataRow.dSinglePQty, 0); + } else { + tableDataRow.dMachineQty = commonUtils.convertFixNum(commonUtils.isNull(tableDataRow.dPartsQty, 0) / tableDataRow.dSinglePQty, 0); + tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; + } + } + } + return tableDataRow; + }; + + /** 表格数据更改 */ + // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) + handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + /* 从CommonBase获取默认参数 */ + const { + sModelsType, sModelsId, token, app, slaveConfig, slaveChildData, + } = this.props; + let { [`${name}Data`]: tableData } = this.props; + if (name === 'slave' && window.tmpSlaveData) { + tableData = window.tmpSlaveData; + } + const { dNetMoney } = app.decimals; + if (name === 'control' && sModelsType.includes('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); + if (sModelsType === 'sales/salesOrderPack') { + if (sFieldName === 'sPartsName') { /* 部件名称与子部件同步 */ + const { sPartsName } = tableDataRow; + const { treeSelectedKeys, treeData } = this.props; + if (commonUtils.isNotEmptyArr(treeSelectedKeys)) { + this.handleSearchNodes(treeSelectedKeys[0], treeData, sPartsName); + } + } else if (sFieldName === 'dMachineQty') { /* 上机数量改变时,子级部件数量同步改变 */ + const { dMachineQty } = tableDataRow; + /* 查找该节的所有子节点,将上机数量改为部件数量 */ + tableData.forEach((item, index) => { + if (commonUtils.isNotEmptyObject(item.sAllId) && item.sAllId.indexOf(tableDataRow.sId) > -1 && item.sId !== tableDataRow.sId) { + const addstate = {}; + addstate.dPartsQty = dMachineQty; + tableData[index] = { ...tableData[index], ...addstate }; + } + }); + } + } + const iIndex = tableData.findIndex(item => item.sId === sId); + tableData[iIndex] = tableDataRow; + this.props.onSaveState({ + [`${name}Data`]: tableData, materialsData: materialsDataNew, processData: processDataNew, + }); + } else { + const addStata = {}; + 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 === 'dProductQty' || sFieldName === 'dGiveQty') && name === 'slave' && (sModelsType.includes('sales/salesOrderPack') || sModelsType.includes('sales/salesOrder'))) { + if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) { + const dProductQty = commonUtils.isEmptyNumber(tableDataRow.dProductQty) ? 0 : tableDataRow.dProductQty; + const dGiveQty = commonUtils.isEmptyNumber(tableDataRow.dGiveQty) ? 0 : tableDataRow.dGiveQty; + const dStockupRate = commonUtils.isEmptyNumber(masterData.dStockupRate) ? 0 : masterData.dStockupRate; + if (dStockupRate !== 0) { /* 备货率不为0时,按照备货率计算,否则按照手填的算 */ + tableDataRow.dStockupQty = Math.round((dProductQty + dGiveQty) * dStockupRate); + } + } + } + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo' + || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) { + let productIdDropDown = []; + if (sFieldName === 'sProductStyle') { + const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName'); + if (iIndex > -1) { + if (this.inputSearch) { + clearTimeout(this.inputSearch); + } + this.inputSearch = setTimeout(async () => { + const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], tableDataRow, tableDataRow.sProductName, 1); + productIdDropDown = sqlDropDownData.dropDownData; + }, 500); + } + } else { + productIdDropDown = dropDownData; + } + const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId && item.sProductStyle === tableDataRow.sProductStyle); + if (iProductIdIndex === -1 && !(commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/materials'))) { + 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 = ''; + } + tableDataRow.sMaterialsStyle = tableDataRow.sProductStyle; + if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId) && tableDataRow.sProductId !== tableDataRow.sProductName) { + const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; + const { sCustomerId } = masterData; /* 增加客户id参数 */ + const value = { + sProName: 'Sp_Cashier_GetProductPrice', + paramsMap: { + sProductGuid: changeValue.sProductId, + sCustomerId, + }, + }; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (returnData.code === 1) { + tableDataRow.dNProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; /* 产品单价 */ + const dProofingMoney = commonUtils.convertToNum(tableDataRow.dProofingMoney); /* 打样金额 */ + const dPlateMoney = commonUtils.convertToNum(tableDataRow.dPlateMoney); /* 制版金额 */ + const dKnifeMouldMoney = commonUtils.convertToNum(tableDataRow.dKnifeMouldMoney); /* 刀模金额 */ + const dProductQty = commonUtils.convertToNum(tableDataRow.dProductQty); /* 数量 */ + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetPrice } = app.decimals; + if (dProductQty === 0 || (dProofingMoney === 0 && dPlateMoney === 0 && dKnifeMouldMoney === 0)) { + const dProductForeignPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; + tableDataRow.dProductForeignPrice = dProductForeignPrice; + tableDataRow.dProductPrice = commonUtils.convertFixNum(dProductForeignPrice * dCurrencyRate, dNetPrice); + } + } + + 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.includes('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/') || sModelsType.includes('sales/salesInvoice') || sModelsType.includes('purchase/purchaseInvoice') || sModelsType.includes('purchase/outsideInvoice')) && (sFieldName === 'dTotalMoney' || sFieldName === 'dRoundingMoney')) { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */ + const addStata = {}; + let { handleType } = masterData; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + addStata.handleType = handleType; + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetMoney } = app.decimals; + if (sFieldName === 'dTotalMoney') { + 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); + tableDataRow.dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dMoney / dCurrencyRate : 0, dNetMoney); + } + // if (commonUtils.isNotEmptyNumber(tableDataRow.dBalanceMoney) && (tableDataRow.dTotalMoney > tableDataRow.dBalanceMoney)) { // 发外发票,采购发票,销售发票 付款单、收款单总金额不能大于余额 + // const dTotalMoneyName = slaveConfig.gdsconfigformslave.filter(item => item.sName === sFieldName)[0].showName; + // const dBalanceMoneyName = slaveConfig.gdsconfigformslave.filter(item => item.sName === 'dBalanceMoney')[0].showName; + // message.error(`${dTotalMoneyName}不能大于${dBalanceMoneyName}!`); + // tableDataRow = { ...tableDataRow, dTotalMoney: tableDataRow.dBalanceMoney }; + // // tableDataRow.dTotalMoney = commonUtils.convertStrToNumber(masterData.dTotalMoney); + // addStata.dTotalMoney = commonUtils.convertStrToNumber(masterData.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); + } + }); + /* 计算外币金额 */ + if (commonUtils.isNotEmptyNumber(addStata.dTotalMoney)) { + addStata.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? addStata.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + } else if (sFieldName === 'dRoundingMoney') { + addStata.dRoundingMoney = 0; + if (iIndex > -1) { /* 选中行 */ + let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dRoundingMoney) ? tableDataRow.dRoundingMoney : 0; + dMoney = commonUtils.convertStrToNumber(dMoney); + addStata.dRoundingMoney = dMoney + commonUtils.convertStrToNumber(addStata.dRoundingMoney); + } + tableData.forEach((item, index) => { /* 非选中行 */ + if (index !== iIndex) { + const dMoney = commonUtils.isNotEmptyNumber(item.dRoundingMoney) ? item.dRoundingMoney : 0; + addStata.dRoundingMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dRoundingMoney, 6); + } + }); + } + masterData = { ...masterData, ...addStata }; + this.props.onSaveState({ masterData }); + } else if (sModelsType === 'purchase/purchaseOrder' && sFieldName === 'dProcurementCycle') { + /* 交货周期改变时,交货时间等于制单时间 +交货周期 */ + const dProcurementCycle = commonUtils.isNull(tableDataRow.dProcurementCycle, 0); + const tCreateDate = commonUtils.isNotEmptyObject(tableDataRow.tCreateDate) ? tableDataRow.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + tableDataRow.tDeliverDate = tDeliverDate; + } + // 取工艺卡数据 + if (sModelsType.includes('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 controlSelectedRowKeys = []; + controlSelectedData.forEach((item) => { + controlSelectedRowKeys.push(item.sId); + }); + const materialsReturnData = this.otherTableDel('materials', controlSelectedRowKeys); + const processReturnData = this.otherTableDel('process', controlSelectedRowKeys); + const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedRowKeys); + 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)) { + const treeCopyNodes = new Map(); + // eslint-disable-next-line no-loop-func + returnData.controlData.forEach((controlItem) => { + newCopyTo.control = controlItem; + const newSid = commonUtils.createSid(); + let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo, { newSid }); // 取默认值 + controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 + controlRow.handleType = 'add'; + controlRow.sId = newSid; + controlRow.sSlaveId = tableDataRow.sId; + controlRow.sParentId = masterData.sId; + if (sModelsType === 'sales/salesOrderPack') { /* 树形 */ + /* CopyTo时sAllId,sControlParentId 设置 */ + const sAllOldId = controlItem.sAllId; + let arr = []; + if (commonUtils.isNotEmptyObject(sAllOldId)) { + arr = sAllOldId.split(','); + } + const newId = controlRow.sId; + let sOldParentId = ''; + let sNewParentAllId = ''; + if (arr.length < 2) { /* 根节点复制 */ + controlRow.sAllId = newId; + sOldParentId = newId; + sNewParentAllId = newId; + } else { + sOldParentId = arr[arr.length - 2]; + if (treeCopyNodes.has(sOldParentId)) { + sNewParentAllId = treeCopyNodes.get(sOldParentId); + } else { + const obj = arr[arr.length - 1]; + sNewParentAllId = sAllOldId.replace((`,${obj}`), ''); + } + const sNewArr = sNewParentAllId.split(','); + controlRow.sControlParentId = sNewArr[sNewArr.length - 1]; + sNewParentAllId = `${sNewParentAllId},${newId}`; + controlRow.sAllId = sNewParentAllId; + } + treeCopyNodes.set(controlItem.sId, sNewParentAllId); + } + controlData.push(controlRow); + + if (commonUtils.isNotEmptyArr(returnData.materialsData)) { + returnData.materialsData.filter(item => item.sControlId === controlItem.sId).forEach((materialsItem) => { + newCopyTo.materials = materialsItem; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + 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; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + 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; + const newSid = commonUtils.createSid(); + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo, { newSid }); // 取默认值 + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段 + materialsRow.handleType = 'add'; + materialsRow.sId = newSid; + 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; + const newSid = commonUtils.createSid(); + let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 + processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 + processRow.handleType = 'add'; + processRow.sId = newSid; + processRow.sSlaveId = tableDataRow.sId; + processRow.sParentId = masterData.sId; + processData.push(processRow); + }); + } + /* 包装订单 生成树形 */ + let treeState = {}; + if (sModelsType === 'sales/salesOrderPack') { + treeState = this.handleGetControlTreeData(controlData, true); + } + this.props.onSaveState({ + controlData, materialsData, processData, ...treeState, + }); + } + } + } else if (sModelsType.includes('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) + commonUtils.isNull(tableDataRow.dStockupQty, 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; + } + } + /* 选择材料后 交货周期改变 则交货时间等于制单时间+交货周期 */ + const dProcurementCycle = commonUtils.isNull(tableDataRow.dProcurementCycle, 0); + const tCreateDate = commonUtils.isNotEmptyObject(tableDataRow.tCreateDate) ? tableDataRow.tCreateDate : new Date(); + const tDeliverDate = moment(tCreateDate).add(dProcurementCycle, 'days').format(commonUtils.dateFormatA); + tableDataRow.tDeliverDate = tDeliverDate; + // else { + // this.props.getServiceError(returnData); + // } + } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') { + const dPmoney = this.props.getFloatNum('dProductMoney'); + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dProductForeignMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); + const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ + tableDataRow.dProductForeignMoney = dProductForeignMoney; + tableDataRow.dProductMoney = dProductMoney; + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + const dProductForeignMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); + const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ + tableDataRow.dProductForeignMoney = dProductForeignMoney; + tableDataRow.dProductMoney = dProductMoney; + tableDataRow.dLossMoney = 0; + } + } else if (sModelsType === 'purchase/purchasecheck' && sFieldName === 'dLossMoney' && name === 'slave') { + const dPmoney = this.props.getFloatNum('dProductMoney'); + if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { + const dMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); + tableDataRow.dMaterialsMoney = dMoney; + } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { + tableDataRow.dMaterialsMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); + tableDataRow.dLossMoney = 0; + } + } else if (sModelsType === 'cost/cosexpenseshare') { /* 改变费用分摊单据从表成本中心金额,总金额随之改变 */ + if (sFieldName.indexOf('dCostCenter') > -1) { + const { slaveColumn } = this.props; + let dAllMoney = 0; + slaveColumn.forEach((item) => { + const sName = item.dataIndex; + if (sName.indexOf('dCostCenter') > -1) { + dAllMoney += commonUtils.isNotEmptyNumber(tableDataRow[sName]) ? commonUtils.convertFixNum(tableDataRow[sName], dNetMoney) : 0; + } + }); + tableDataRow.dShareMoney = commonUtils.convertFixNum(dAllMoney, dNetMoney); + } + } else if (sModelsType === 'purchase/purchaseInstore' && name === 'slave') { /* 采购入库 材料批次=材料生产日期tSReserve1(此客户手输)+当前日期 */ + if (sFieldName === 'tProductionDate') { + tableDataRow.sDefineNo = moment(tableDataRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm'); + } + } + /* 各种金额,税额,价格计算 */ + let 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/') || sModelsType.includes('semigoodsStock/') || sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { + if (sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { + tableDataRow.dAuxiliaryQty = tableDataRow.dProductQty; + } + tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); + + if (sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { /* 如果是材料销售模块/销售对账 如果是材料 则用换算数量*单价 算金额 */ + /* 材料逻辑计算 */ + if (commonUtils.isNotEmptyNumber('dMaterialsQty') && tableDataRow.dMaterialsQty !== 0 && commonUtils.isNotEmptyObject(tableDataRow.sMaterialsUnit)) { + let modelsNew = ''; + if (models === 'Product') { /* 计算前将Product替换为Materials */ + modelsNew = 'Materials'; + + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetPrice } = app.decimals; + const dForeignPrice = tableDataRow[`d${models}ForeignPrice`]; + if (commonUtils.isNotEmptyNumber(dForeignPrice)) { + /* 只有外币单价情況下 要算本位币单价 */ + const dProductPrice = commonUtils.convertFixNum(dForeignPrice * dCurrencyRate, dNetPrice); + tableDataRow[`d${models}Price`] = dProductPrice; + } + + tableDataRow[`dN${modelsNew}Price`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}ForeignPrice`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}Price`] = tableDataRow[`d${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}ForeignMoney`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}Money`] = tableDataRow[`d${models}Money`]; + tableDataRow.bSalesMaterials = true;/* 材料销售 销售对账 材料计算 */ + models = 'Materials'; + sFieldName = commonUtils.isNotEmptyObject(sFieldName) ? sFieldName.replace('Product', 'Materials') : sFieldName; + } + } + } + } + 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; + if (commonUtils.isNotEmptyObject(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'); + } + } + } else if (sModelsType.includes('purchase/purchasecheck') && name === 'slave' && sFieldName === 'dMaterialsPrice') { + /* 从表单价改变时 每个字表都对应改 */ + const slaveFilterData = slaveChildData.filter(item => item.sSqlConditionId === tableDataRow.sSqlConditionId); + if (commonUtils.isNotEmptyArr(slaveFilterData)) { + slaveFilterData.forEach((item) => { + const iIndexC = slaveChildData.findIndex(itemC => itemC.sId === item.sId); + if (iIndexC > -1) { + const handleTypeNew = commonUtils.isEmpty(slaveChildData[iIndexC].handleType) ? 'update' : slaveChildData[iIndexC].handleType; + slaveChildData[iIndexC] = { ...slaveChildData[iIndexC], dMaterialsPrice: tableDataRow.dMaterialsPrice, handleType: handleTypeNew }; + slaveChildData[iIndexC] = commonBusiness.getCalculateAllMoney(app, 'Materials', 'dMaterialsPrice', masterData, slaveChildData[iIndexC]); + } + }); + addStata.slaveChildData = slaveChildData; + } + } + + if (this.props.sModelsId !== '101251240115016270323854760' ) { // 运费对账单不需要 + if (name === 'slaveChild') { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow, + } + // 汇总到从表方法 + this.handleWriteBack(params); + } else if (name === 'slaveChild' && sFieldName === 'dAuxiliaryQty') { + const { + slaveChildSelectedRowKeys: tableSelectedRowKeys, slaveSelectedRowKeys, slaveData, + } = this.props; + // eslint-disable-next-line no-unused-vars + /* 子表删除后 重新获取选中行的子表库存数量汇总到选中从表的产品数量上 */ + if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) { + let iSlaveIndex = -1; + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]); + } else if (slaveData.length === 1) { + iSlaveIndex = 0; + } + if (iSlaveIndex > -1) { + if (commonUtils.isNotEmptyObject(slaveChildData)) { + const slaveChildFilter = slaveChildData.filter(item => item.sSqlConditionId === slaveData[iSlaveIndex].sSqlConditionId); + if (commonUtils.isNotEmptyArr(slaveChildFilter)) { + // let dMaterialsQty = 0; + let dAuxiliaryQty = 0; + let dMaterialsMoney = 0; + slaveChildFilter.forEach((item) => { + if (item.sId === tableDataRow.sId) { + // dMaterialsQty += commonUtils.isNull(tableDataRow.dMaterialsQty, 0); /* 赠送数量叠加 */ + dAuxiliaryQty += commonUtils.isNull(tableDataRow.dAuxiliaryQty, 0); /* 赠送数量叠加 */ + dMaterialsMoney += commonUtils.isNull(tableDataRow.dMaterialsMoney, 0); /* 赠送数量叠加 */ + } else { + /* 库存数量叠加到从表的送货数量中 */ + // dMaterialsQty += commonUtils.isNull(item.dMaterialsQty, 0); /* 赠送数量叠加 */ + dAuxiliaryQty += commonUtils.isNull(item.dAuxiliaryQty, 0); /* 赠送数量叠加 */ + dMaterialsMoney += commonUtils.isNull(item.dMaterialsMoney, 0); /* 赠送数量叠加 */ + } + }); + /* 找到选中从表行 */ + const addState = {}; + // addState.dMaterialsQty = dMaterialsQty; + addState.dAuxiliaryQty = dAuxiliaryQty; + addState.dMaterialsMoney = commonUtils.convertFixNum(dMaterialsMoney, dNetMoney); + addState.handleType = commonUtils.isEmpty(slaveData[iSlaveIndex].handleType) ? 'update' : slaveData[iSlaveIndex].handleType; + slaveData[iSlaveIndex] = { ...slaveData[iSlaveIndex], ...addState }; + // slaveData[iSlaveIndex] = commonBusiness.getCalculateAllMoney(app, 'Materials', 'dAuxiliaryQty', masterData, slaveData[iSlaveIndex]); + addStata.slaveData = slaveData; + } + } + } + } + } + } + + // 【特殊处理】合计误工、计件、计时工时 + if ( + [ + "12710101117223881783540", + "12710101116993263909870", + "12710101117223395116420", + "12710101117247220162040", + "12710101117223889425720", + "12710101117223890411980", + "12710101117241578202960" + ].includes(this.props.sModelsId) + ) { + const { dLossHour = 0, dWageHour = 0, dTimeHour = 0, sSqlConditionId } = tableDataRow; + const { slaveChild0Data = [], slave1Data = [] } = this.props; + const slaveChild0DataFilter = slaveChild0Data.filter(item => item.sSqlConditionId === sSqlConditionId); + slaveChild0DataFilter.forEach(item => { + const iIndex = slaveChild0Data.findIndex(item1 => item1.sId === item.sId); + slaveChild0Data[iIndex].dLossHour = dLossHour; + slaveChild0Data[iIndex].dWageHour = dWageHour; + slaveChild0Data[iIndex].dTimeHour = dTimeHour; + slaveChild0Data[iIndex].handleType = slaveChild0Data[iIndex].handleType || 'update'; + }); + addStata.slaveChild0Data = slaveChild0Data; + + slave1Data.forEach(item => { + const dataFilter = slaveChild0Data.filter(item1 => item1.sActualEmployeeNo === item.sActualEmployeeNo); + const { dLossHourSum, dWageHourSum, dTimeHourSum } = dataFilter.reduce((pre, item) => { + const { dLossHour = 0, dWageHour = 0, dTimeHour = 0 } = item; + return { + dLossHourSum: pre.dLossHourSum + dLossHour, + dWageHourSum: pre.dWageHourSum + dWageHour, + dTimeHourSum: pre.dTimeHourSum + dTimeHour + }; + }, { + dLossHourSum: 0, + dWageHourSum: 0, + dTimeHourSum: 0 + }); + + item.dLossHour = dLossHourSum; + item.dWageHour = dWageHourSum; + item.dTimeHour = dTimeHourSum; + item.dSumHour = dLossHourSum + dWageHourSum + dTimeHourSum; + item.handleType = item.handleType || 'update'; + }); + addStata.slave1Data = slave1Data; + } + + if (isWait) { + return tableDataRow; + } else { + tableData[iIndex] = tableDataRow; + if (name === 'report') { // 报表设计r + this.props.onSaveState({ reportPropsEnabled: true }); + } else { + this.props.onSaveState({ enabled: true }); + } + this.props.onSaveState({ [`${name}Data`]: tableData, ...addStata }); + } + } + }; + + // 子从表数据汇总到从表 + handleWriteBack = async (params) => { + const { + sFieldName, + tableDataRow, + } = params; + const { + slaveSelectedRowKeys, + slaveData, + slaveChildConfig, + slaveChildData, + slave0SelectedRowKeys, + slave0Data, + } = this.props; + if (commonUtils.isEmptyArr(slaveData)) { + return; + } + const addState = {}; + const sId = tableDataRow.sSqlConditionId || 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); + let iSlave0Index = commonUtils.isNotEmptyArr(slave0Data)? (commonUtils.isNotEmptyArr(slave0SelectedRowKeys) ? + slave0Data.findIndex(item => slave0SelectedRowKeys.includes(item.sId)):0) : -1; + const slave0DataRow = iSlave0Index > -1 ? slave0Data[iSlave0Index] : {}; + // 需要汇总的字段 + 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.isNull(dataRow.dAuxiliaryQty, 0); + } else if (type === 2) { + dEscrowAuxiliaryQty += commonUtils.isNull(dataRow.dAuxiliaryQty, 0); + } else if (type === 3) { + dGiveAuxiliaryQty += commonUtils.isNull(dataRow.dAuxiliaryQty, 0); + } else if (type === 10) { + dAuxiliaryQty += commonUtils.isNull(dataRow.dProductQty, 0); + } else if (type === 11) { + dProductQty += commonUtils.isNull(dataRow.dAuxiliaryQty, 0); + } else if (type === 12) { + dProductQty += commonUtils.isNull(dataRow.dProductQty, 0); + } + }); + + 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(commonUtils.isNotEmptyObject(slave0DataRow)) { + const dSlave0AuxiliaryQty = slave0DataRow['dAuxiliaryQty']; + const table0DataRow = await this.handleTableChange('slave0', 'dAuxiliaryQty', { dSlave0AuxiliaryQty }, slave0DataRow.sId, [], true); + slave0Data[iSlave0Index] = table0DataRow; + addState.slave0Data = slave0Data; + } + if (slaveChildFilter.some(item => item.itype === 11 || item.iType === 11 || item.itype === 12 || item.iType === 12) || commonUtils.isEmptyArr(slaveChildFilter)) { + window.tmpSlaveData = slaveData; + tableDataRow = await this.handleTableChange('slave', 'dProductQty', { dProductQty }, sId, [], true); + slaveData[iIndex] = tableDataRow; + } + window.tmpSlaveData = null; + this.props.onSaveState({ slaveData, ...addState }); + } 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.handleTableChange('slave', sFieldName, { [sFieldName]: dQty }, sId, [], false); + } + } + + /** 删除表格数据 */ + otherTableDel = (name, tableSelectedRowKeys) => { + const tableData = this.props[`${name}Data`]; + let tableDelData = this.props[`${name}DelData`]; + tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; + for (const sId of tableSelectedRowKeys) { + /* 看看删除集合和从表中是否都存在该条数据 */ + let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + while (tableDataIndex > -1) { + /* 删除从表中的数据并存入删除集合中 */ + const slaveDataFilter = tableData[tableDataIndex]; + tableData.splice(tableDataIndex, 1); + slaveDataFilter.handleType = 'del'; + tableDelData.push(slaveDataFilter); + tableDataIndex = tableData.findIndex(item => item.sControlId === sId); + } + } + return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; + }; + + handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { auxiliaryQty = {} } = app; + 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'); + if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsUnit)) { + const decimal = auxiliaryQty[tableDataRow.sMaterialsUnit]; + if(decimal > 0) { + tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dMaterialsQty, decimal); + } + } + } else { + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, sFormulaIdType: 'sComputeId', + }); + } + } 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.isNotEmptyArr(tableDataRow.dAuxiliaryQty) && tableDataRow.dAuxiliaryQty !== 0) { + tableDataRow.dProductQty = tableDataRow.dAuxiliaryQty; + } + } + 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 = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty'); + } else { + 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); + } + } + + const sFieldNameJson = { + dPurchaseArrivalQty: 'dPurchaseQty', + dEscrowAuxiliaryQty: 'dEscrowQty', + dGiveAuxiliaryQty: 'dGiveQty', + dAuxiliaryQty: 'dReelQty', + } + if (Object.keys(sFieldNameJson).includes(sFieldName)) { + tableDataRow.dPurchaseArrivalQty = commonUtils.isNull(tableDataRow.dEscrowAuxiliaryQty, 0) + commonUtils.isNull(tableDataRow.dGiveAuxiliaryQty, 0) + commonUtils.isNull(tableDataRow.dAuxiliaryQty, 0); + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, sFieldNameJson[sFieldName]); + if (sFieldName !== 'dPurchaseArrivalQty') { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dPurchaseArrivalQty', 'dPurchaseQty'); + } + } else if (sFieldName === 'dFqkd' || sFieldName === 'dFqcd') { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dAuxiliaryQty', 'dReelQty'); + } + return tableDataRow; + } + /* 材料销售模块金额价格逻辑处理 */ + handleCalculateMaterialsProductMoney= (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + if (sFieldName === `d${models}Qty` || sFieldName === `d${models}Price` || sFieldName === `dN${models}Price` || sFieldName === `d${models}ForeignPrice` || sFieldName === `d${models}ForeignMoney` || sFieldName === `d${models}Money` || sFieldName === 'sTaxId' || sFieldName === 'sTaxName') { + const { dNetMoney } = app.decimals; /* 设定金额保留的小数位 */ + let modelsNew = models; + if (models === 'Product') { /* 计算前将Product替换为Materials */ + modelsNew = 'Materials'; + } + let sFiledNameNew = sFieldName; + if (sFieldName === 'dProductQty') { /* 材料销售中的订单数量 等同于 dAuxiliaryQty */ + sFiledNameNew = 'dAuxiliaryQty'; + } else if (sFieldName === `d${models}Price`) { + sFiledNameNew = `d${modelsNew}Price`; + } else if (sFieldName === `dN${models}Price`) { + sFiledNameNew = `dN${modelsNew}Price`; + } else if (sFieldName === `d${models}ForeignPrice`) { + sFiledNameNew = `d${modelsNew}ForeignPrice`; + } else if (sFieldName === `d${models}Money`) { + sFiledNameNew = `d${modelsNew}Money`; + } else if (sFieldName === `dN${models}Money`) { + sFiledNameNew = `dN${modelsNew}Money`; + } else if (sFieldName === `d${models}ForeignMoney`) { + sFiledNameNew = `d${modelsNew}ForeignMoney`; + } + tableDataRow[`dN${modelsNew}Price`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`d${modelsNew}ForeignPrice`] = tableDataRow[`d${models}ForeignPrice`]; + tableDataRow[`d${modelsNew}Price`] = tableDataRow[`d${models}Price`]; + tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`dN${models}Price`]; + tableDataRow[`d${modelsNew}ForeignMoney`] = tableDataRow[`d${models}ForeignMoney`]; + tableDataRow[`d${modelsNew}Money`] = tableDataRow[`d${models}Money`]; + tableDataRow = commonBusiness.getCalculateAllMoney(app, modelsNew, sFiledNameNew, masterData, tableDataRow); + + let dMoney = tableDataRow[`d${modelsNew}Money`]; /* 金额 */ + let dForeignMoney = tableDataRow[`d${modelsNew}ForeignMoney`]; /* 外币金额 */ + let dPrice = tableDataRow[`d${modelsNew}Price`]; /* 单价 */ + const dQty = tableDataRow[`d${modelsNew}Qty`]; /* 换算数量 */ + let dTaxMoney = tableDataRow[`d${modelsNew}TaxMoney`]; /* 税额 */ + let dTaxNoMoney = tableDataRow[`d${modelsNew}NoTaxMoney`]; /* 税额 */ + dMoney = commonUtils.isNotEmptyNumber(dMoney) ? dMoney : 0; + dForeignMoney = commonUtils.isNotEmptyNumber(dForeignMoney) ? dForeignMoney : 0; + dPrice = commonUtils.isNotEmptyNumber(dPrice) ? dPrice : 0; + dTaxMoney = commonUtils.isNotEmptyNumber(dTaxMoney) ? dTaxMoney : 0; + dTaxNoMoney = commonUtils.isNotEmptyNumber(dTaxNoMoney) ? dTaxNoMoney : 0; + + tableDataRow[`d${models}Money`] = dMoney; + tableDataRow[`d${models}ForeignMoney`] = dForeignMoney; + tableDataRow[`d${models}Price`] = dPrice; + tableDataRow[`d${models}TaxMoney`] = dTaxMoney; + tableDataRow[`d${models}NoTaxMoney`] = dTaxNoMoney; + /* 单价计算 */ + let dForeignPrice = tableDataRow[`d${models}Price`]; + if (sFieldName === `d${models}ForeignMoney` || sFieldName === `d${models}Money`) { + dForeignPrice = commonUtils.isNotEmptyNumber(dQty) && dQty !== 0 ? commonUtils.convertFixNum(dForeignMoney / dQty, dNetMoney) : dPrice; + } + tableDataRow[`d${models}ForeignPrice`] = dForeignPrice; + } + 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 }); + } + handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { + // this.handleCustomerChange(name, changeValue); + const { + sModelsId, sModelsType, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token, slaveChildData, + } = this.props; + const addState = {}; + 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 { + message.warn(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', []); + } 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) { + message.error(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' || sFieldName === 'sGetPayName') { + changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); + } else if (sFieldName === 'tInvoiceDate') { + 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 = ''; + } + } + 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; + } + } + 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 tableAllData = { + master: masterData, + slave: slaveData, + slaveChild: slaveChildData, + } + const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true, tableAllData); + if (commonUtils.isNotEmptyObject(masterDataAfter)) { + if(masterDataAfter.bMultiTable) { + returnData.masterData = masterDataAfter.master; + }else { + 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' || + sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate' || sFieldName === 'sCurrencyName' ) { + const slaveDataNew = []; + const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + 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; + 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: returnData.masterData, tableDataRow, sComputeId, + }); + tableDataRow.dMaterialsMoney = dMaterialsMoney; + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); + } else { + tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, 'Materials'); /* 没有发外公式情况下 进行计算 */ + } + } + } else { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', returnData.masterData, tableDataRow); + } + } else if (sFieldName === 'sCurrency' || sFieldName === 'dCurrencyRate' || sFieldName === 'sCurrencyName') { + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, `d${models}ForeignPrice`, returnData.masterData, tableDataRow); + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + 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.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 newSid = commonUtils.createSid(); + const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = newSid; + 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'); + returnSlaveData.forEach((item, iIndex) => { + const newSid = commonUtils.createSid(); + let tableDataRow = commonFunc.getDefaultData(slaveConfig, {}, { newSid }); + tableDataRow.handleType = 'add'; + tableDataRow.sId = newSid; + 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) }; // 取赋值字段 + } + slaveDataNew.push(tableDataRow); + }); + addState.slaveData = slaveDataNew; + } else { + this.props.getServiceError(dataReturn); + } + } else if (sFieldName === 'sPeriodID') { + const master = returnData.masterData; + let { handleType } = master; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (handleType === 'add') { /* 费用分摊单据新增时,选择不同月份,自动获取从表的数据 */ + const { sModelsId } = this.props; + let url = `${commonConfig.server_host}costCenter/getCostCenterData?sModelsId=${sModelsId}`; + const body = { + sPeriodId: changeValue.sPeriodID, + }; + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:以下 4 行 + * BUG:2168 + * 说明:凭证导入表下主表月份切换从后台获取数据 + * 原代码: + */ + if (sModelsType === 'cashier/voucher') { + url = `${commonConfig.server_host}costCenter/getCosvoucherImportData?sModelsId=${sModelsId}`; + body.sWeek = masterDataOld.sWeek; + } + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset; + const slaveDataNew = []; + rows.forEach((row) => { + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:以下 13 行 + * BUG:2168 + * 说明:凭证导入表下主表月份切换从后台获取数据 + * 原代码: + */ + let tableDataRowAdd = row; + if (sModelsType === 'cashier/voucher') { + // 当主表中配置了转换信息时,对数据字段进行转换 + const index = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'Btnimport'); + if (index > -1) { + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = row; + const config = masterConfig.gdsconfigformslave[index]; + const slaveAssignField = config.sAssignField || ''; + tableDataRowAdd = { ...row, ...commonFunc.getAssignFieldValue(slaveAssignField, row, newCopyTo) }; + } + } + tableDataRowAdd.handleType = handleType; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + slaveDataNew.push(tableDataRowAdd); + }); + addState.slaveData = slaveDataNew; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } else if (sFieldName === 'sWeek' && sModelsType === 'cashier/voucher') { + /** + * 修改日期:2021-03-26 + * 修改人:吕杰 + * 区域:此if内 + * BUG:2168 + * 说明:凭证导入表下主表周期切换从后台获取数据 + * 原代码: + */ + const master = returnData.masterData; + let { handleType } = master; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + if (handleType === 'add') { /* 费用分摊单据新增时,选择不同月份,自动获取从表的数据 */ + const { sModelsId } = this.props; + const url = `${commonConfig.server_host}costCenter/getCosvoucherImportData?sModelsId=${sModelsId}`; + const body = { + sWeek: changeValue.sWeek, + sPeriodId: masterDataOld.sPeriodId, + }; + const dataReturn = (await commonServices.postValueService(app.token, body, url)).data; + if (dataReturn.code === 1) { + /* 获取数据集 */ + const { rows } = dataReturn.dataset; + const slaveDataNew = []; + rows.forEach((row) => { + let tableDataRowAdd = row; + // 当主表中配置了转换信息时,对数据字段进行转换 + const index = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'Btnimport'); + if (index > -1) { + const newCopyTo = {}; + newCopyTo.master = masterData; + newCopyTo.slave = row; + const config = masterConfig.gdsconfigformslave[index]; + const slaveAssignField = config.sAssignField || ''; + tableDataRowAdd = { ...row, ...commonFunc.getAssignFieldValue(slaveAssignField, row, newCopyTo) }; + } + tableDataRowAdd.handleType = handleType; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + slaveDataNew.push(tableDataRowAdd); + }); + addState.slaveData = slaveDataNew; + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + return []; + } + } + } + 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; + } + } + handleBtnPrint = (sActiveId, checked, eKey) => { + const { + app, sModelsId, masterConfig, masterData, slaveConfig, sModelsType, reportData, menuChildData, formRoute, controlConfig, + } = this.props; + if (sModelsType.includes('manufacture/workOrder')) { + this.handleUpdateProduction(); + } + const { token } = app; + const queryFilter = {}; + queryFilter[masterConfig.sId] = { sId: masterData.sId }; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; + } + const queryFilterJson = JSON.stringify(queryFilter); + // const masterDataJson = JSON.stringify(masterData); + /* 拿到打印报表名称 */ + let printReportName = 'report'; + let printCustomerReportName = 'report'; + if (commonUtils.isNotEmptyArr(reportData)) { + const iIndex = reportData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printReportName = reportData[iIndex].sReportName; + } + } + if (commonUtils.isNotEmptyArr(menuChildData)) { + const iIndex = menuChildData.findIndex(item => item.sId === sActiveId); + if (iIndex > -1) { + printCustomerReportName = menuChildData[iIndex].sReportName; + } + } + let urlPrint = ''; + if (formRoute === '/indexPage/printlabel') { + if (commonUtils.isNotEmptyObject(masterData) && masterData.dTrunkQty !== undefined && masterData.dFractionQty !== undefined && masterData.dPackQty !== undefined) { // masterData中必填的三个字段 + // const param = masterDataJson; + /* 把masterData放在数组中 */ + const ListData = []; + ListData.push(masterData); + const param = JSON.stringify(ListData); + if (eKey.indexOf('BtnPrint.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; + } + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + this.handleOpenPost(urlPrint, param); + } else { + const dTrunkQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dTrunkQty'); + const dFractionQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dFractionQty'); + const dPackQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === 'dPackQty'); + if (masterData.dTrunkQty === undefined && commonUtils.isNotEmptyObject(dTrunkQtyName)) { + message.error(`${dTrunkQtyName[0].showName} 必填项!`); + } else if (masterData.dFractionQty === undefined && commonUtils.isNotEmptyObject(dFractionQtyName)) { + message.error(`${dFractionQtyName[0].showName} 必填项!`); + } else if (masterData.dPackQty === undefined && commonUtils.isNotEmptyObject(dPackQtyName)) { + message.error(`${dPackQtyName[0].showName} 必填项!`); + } + return; + } + } else if (eKey.indexOf('BtnPrint.') > -1) { + let { controlSelectedRowKeys } = this.props; + /* 不出现选择框,则打印全部;出现选择框,则打印勾选的 */ + let bisMutiSelect = false; + if (commonUtils.isNotEmptyObject(controlConfig) && commonUtils.isNotEmptyArr(controlConfig.gdsconfigformslave)) { + const filterData = controlConfig.gdsconfigformslave.filter(item => item.sControlName === 'bisMutiSelect'); + if (commonUtils.isNotEmptyArr(filterData)) { + bisMutiSelect = filterData[0].bVisible; + } + } + if (bisMutiSelect === false || bisMutiSelect === undefined) { + controlSelectedRowKeys = []; + } + urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}&sControlIds=${commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys : []}`; + } else if (eKey.indexOf('BtnPrintCus.') > -1) { + urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${checked ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; + } + if (formRoute !== '/indexPage/printlabel') { + window.open(`${encodeURI(`${urlPrint}&queryFilter=${queryFilterJson}`)}&token=${encodeURIComponent(token)}`); + } + }; + handleOpenPost= (url, params) => { + const newWin = window.open(); + let formStr = ''; + formStr = `
` + + `` + + ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + handleUpdateProduction = async () => { + const { sModelsId, masterData } = this.props; + const { sBillNo, sId } = masterData || {}; + const dataUrl = `${commonConfig.server_host}business/addUpdateDelBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; + const value = { + data: [{ + sTable: 'mftworkordermaster', + column: [{ handleType: 'update', sId: masterData.sId, bProduction: 1 }], + }], + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(this.props.app.token, value, dataUrl)).data; + if (dataReturn.code === 1) { + message.success(dataReturn.msg); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleTitleChange = (name, slavePagination) => { + this.props.onSaveState({ [`${name}Pagination`]: slavePagination }); + }; + + /* 工单、工艺卡、报价单控制表回带图片地址 */ + handleFilfileManageOk= async (controlFilfileData, controlFilfileDelData, sSrcSlaveId) => { + const { + controlData: tableData, app, sModelsId, token, controlConfig, + } = this.props; + if (commonUtils.isNotEmptyObject(sSrcSlaveId)) { + if (commonUtils.isNotEmptyArr(controlFilfileDelData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureDelData = controlFilfileDelData.filter(item => item.sType === '3'); /* 开料 */ + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureDelData)) { + controlsMaterialsPictureDelData.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMaterialsPicturePath) { + addState.sMaterialsPicturePath = ''; + } + }); + } + const sMachinePictureDelPath = controlFilfileDelData.filter(item => item.sType === '4'); /* 联版 */ + if (commonUtils.isNotEmptyArr(sMachinePictureDelPath)) { + sMachinePictureDelPath.forEach((slaveItem) => { + if (slaveItem.sPicturePath === sMachinePicturePath) { + addState.sMachinePicturePath = ''; + } + }); + } + if (commonUtils.isNotEmptyObject(addState) && (addState.sMachinePicturePath === '' || addState.sMaterialsPicturePath === '')) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (addState.sMaterialsPicturePath === '') { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (addState.sMachinePicturePath === '') { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + if (commonUtils.isNotEmptyArr(controlFilfileData)) { + const addState = {}; + const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); + if (iIndex > -1) { + const tableDataNewRow = tableData[iIndex]; + const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; + const controlsMaterialsPictureData = controlFilfileData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(controlsMaterialsPictureData)) { + addState.sMaterialsPicturePath = commonUtils.isNotEmptyObject(controlsMaterialsPictureData[0].sPicturePath) ? controlsMaterialsPictureData[0].sPicturePath : ''; /* 上机默认取上传图片的第一条 */ + } + const controlsMachinePictureData = controlFilfileData.filter(item => item.sType === '4'); + if (commonUtils.isNotEmptyArr(controlsMachinePictureData)) { + addState.sMachinePicturePath = commonUtils.isNotEmptyObject(controlsMachinePictureData[0].sPicturePath) ? controlsMachinePictureData[0].sPicturePath : ''; + } + if (commonUtils.isNotEmptyObject(addState)) { + tableData[iIndex] = { ...tableDataNewRow, ...addState }; + const data = []; + const updataData = {}; + const updateWhere = {}; + const column = {}; + if (commonUtils.isNotEmptyObject(addState.sMaterialsPicturePath) && addState.sMaterialsPicturePath !== sMaterialsPicturePath) { + column.sMaterialsPicturePath = addState.sMaterialsPicturePath; + } + if (commonUtils.isNotEmptyObject(addState.sMachinePicturePath) && addState.sMachinePicturePath !== sMachinePicturePath) { + column.sMachinePicturePath = addState.sMachinePicturePath; + } + if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { + updateWhere.sId = tableDataNewRow.sId; + updataData.sTable = controlConfig.sTbName; + updataData.sWhere = updateWhere; + updataData.column = column; + data.push(updataData); + /* 调用接口将图片地址存入控制表 */ + const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; + const value = { + data, + sClientType: '1', + }; + const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; + if (dataReturn.code === 1) { + this.props.onSaveState({ tableData }); + /* 刷新 */ + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } + } + } else { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); + } + } + // 收付款分摊 + handleShare = () => { + /* 分摊 */ + const { + sModelsType, masterData: masterDataOld, slaveData: slaveDataOld, app, + } = this.props; + if ((sModelsType.includes('cashier/receipt') && masterDataOld.sBillType !== 'customer') || + (sModelsType.includes('cashier/payment') && masterDataOld.sBillType !== 'supply')) { + return masterDataOld; + } + const { dNetMoney } = app.decimals; + const masterData = { ...masterDataOld }; + const slaveData = []; + if (commonUtils.isNotEmptyArr(slaveDataOld) && slaveDataOld.length > 0) { + slaveDataOld.forEach((item) => { + slaveData.push({ ...item }); + }); + } + + const dTotalMoney = masterData.dTotalMoney !== undefined ? masterData.dTotalMoney : 0; + let minusSum = 0; /* 负数求和 */ + let minusRoundingSum = 0; /* 负数舍入求和 */ + const minusData = []; /* 负数集 */ + let positiveSum = 0; /* 正数求和 */ + let positiveRoundingSum = 0; /* 正数舍入求和 */ + const positiveData = []; /* 正数集 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((child) => { + child.dTotalMoney = 0; + child.dRoundingMoney = commonUtils.isNum(child.dRoundingMoney) ? child.dRoundingMoney : 0; + if (child.dBalanceMoney < 0) { + minusSum -= Math.abs(child.dBalanceMoney); + minusRoundingSum -= Math.abs(child.dRoundingMoney); + minusData.push(child); + } else { + const positiveSumTemp = commonUtils.convertFixNum(child.dBalanceMoney, dNetMoney) + commonUtils.convertFixNum(positiveSum, dNetMoney); + positiveSum = commonUtils.convertFixNum(positiveSumTemp, dNetMoney); + const positiveRoundingSumTemp = commonUtils.convertFixNum(child.dRoundingMoney, dNetMoney) + commonUtils.convertFixNum(positiveRoundingSum, dNetMoney); + positiveRoundingSum = commonUtils.convertFixNum(positiveRoundingSumTemp, dNetMoney); + positiveData.push(child); + } + }); + } + if (commonUtils.convertFixNum(((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney, dNetMoney) <= 0) { + /* 够扣 */ + positiveSum -= minusRoundingSum; + positiveSum -= positiveRoundingSum; + positiveSum -= dTotalMoney; /* 去除分摊金额 */ + if (positiveSum >= 0) { + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + if (positiveSum <= dBalanceMoney) { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(positiveSum) - (dRoundingMoney * 1), dNetMoney); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + break; + } else { + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveSum -= dBalanceMoney - (dRoundingMoney * 1); + if (minusData[i].handleType === undefined) { + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + } + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + if (positiveData[i].handleType === undefined) { + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + } else { + /* 有预收 */ + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + minusData[i].dRoundingMoney = 0; + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + masterData.dAdvanceMoney = commonUtils.convertFixNum(Math.abs(positiveSum), dNetMoney); + masterData.bAdvance = true; + } + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + /* 分摊算外币金额 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((item, index) => { + slaveData[index].dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? item.dTotalMoney / dCurrencyRate : 0, dNetMoney); + }); + } + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; + if (commonUtils.isNotEmptyNumber(masterData.dTotalMoney)) { + masterData.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? masterData.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + this.props.onSaveState({ masterData, slaveData }); + } else if (((minusSum - minusRoundingSum) + (positiveSum - positiveRoundingSum)) - dTotalMoney > 0) { + /* 不够扣情况 */ + minusSum -= minusRoundingSum; + minusSum -= positiveRoundingSum; + minusSum -= dTotalMoney; /* 去除分摊金额 */ + for (let i = 0; i < minusData.length; i += 1) { + /* 负数遍历 */ + const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ + const dRoundingMoney = minusData[i].dRoundingMoney !== undefined + ? minusData[i].dRoundingMoney + : 0; + minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? 'update' : minusData[i].handleType; + } + for (let i = 0; i < positiveData.length; i += 1) { + /* 正数遍历 */ + const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ + const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined + ? positiveData[i].dRoundingMoney + : 0; + if (Math.abs(minusSum) <= dBalanceMoney) { + positiveData[i].dTotalMoney = commonUtils.convertFixNum(Math.abs(minusSum) - (dRoundingMoney * 1), dNetMoney); + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + break; + } else { + positiveData[i].dTotalMoney = commonUtils.convertFixNum((dBalanceMoney * 1) - (dRoundingMoney * 1), dNetMoney); + minusSum = -(Math.abs(minusSum) - (dBalanceMoney * 1)); // - (dRoundingMoney * 1) + positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? 'update' : positiveData[i].handleType; + } + } + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + /* 分摊算外币金额 */ + if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { + slaveData.forEach((item, index) => { + slaveData[index].dTotalForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? item.dTotalMoney / dCurrencyRate : 0, dNetMoney); + }); + } + masterData.dAdvanceMoney = 0; + masterData.bAdvance = false; + masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType; /* 主表分摊算外币金额 */ + if (commonUtils.isNotEmptyNumber(masterData.dTotalMoney)) { + masterData.dProductForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? masterData.dTotalMoney / dCurrencyRate : 0, dNetMoney); + } + this.props.onSaveState({ masterData, slaveData }); + } + // let allTotalMoney = 0; + // let allRoundingMoney = 0; + // slaveData.forEach((child) => { + // if (child.dTotalMoney !== undefined) { + // allTotalMoney += child.dTotalMoney * 1; + // } + // if (child.dRoundingMoney !== undefined) { + // allRoundingMoney += child.dRoundingMoney * 1; + // } + // }); + // this.props.onSaveState({ allTotalMoney, allRoundingMoney }); + return masterData; + }; + + handleImport = async (num) => { + const { + sModelsId, sModelsType, masterConfig, masterData, slaveData, slaveDelData: slaveDelDataOld, app, + } = this.props; + if (commonUtils.isEmpty(masterData.sWareHouseId)) { + message.error(commonFunc.getConfigShowName(masterConfig, 'sWareHouseId') + commonFunc.showMessage(app.commonConst, 'isNotNull')); // 不能为空! + return; + } + let url; + if (sModelsType.includes('productStock/')) { + url = `${commonConfig.server_host}eleProductStock/getEleProductStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}&num=${num}`; + } else { + url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}&num=${num}`; + } + + const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push({ ...item }); + }); + returnData.forEach((item, index) => { + const tableDataRow = this.props.onDataRowAdd('slave', true); + item.handleType = 'add'; + item.sParentId = masterData.sId; + item.iOrder = index + 1; + returnData[index] = { ...tableDataRow, ...item }; + }); + this.props.onSaveState({ slaveData: returnData, slaveDelData }); + } else { + this.props.getServiceError(dataReturn); + } + this.props.onSaveState({ isGetDataVisible: false }); + }; + + handleOutTemplate = async () => { + const { + token, formData, + } = this.props; + const slaveConfig = formData.filter(item => item.sGrd === 'importTemplate')[0]; + window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${slaveConfig.sId}&token=${token}`; + }; + + /* 导出模版数据 */ + handleOutTemplateData = async (name) => { + const { + formRoute, masterData, sortedInfo, + } = this.props; + const sort = commonUtils.isNotEmptyObject(sortedInfo) ? sortedInfo.order === 'ascend' ? 'asc' : 'desc' : ''; + const slaveOrderBy = commonUtils.isNotEmptyObject(sortedInfo) && Object.keys(sortedInfo).length > 0 ? { [sortedInfo.columnKey]: sort } : ''; // + const sId = commonUtils.isNotEmptyObject(masterData) ? masterData.sId : ''; + + const baseName = name?.toString().split('_')[1] || 'slave'; + const baseConfig = this.props[`${baseName}Config`]; + + if (commonUtils.isNotEmptyObject(sId)) { + const sSqlCondition = { sParentId: sId }; + let url = `${commonConfig.server_host}excel/export/${baseConfig.sId}?sModelsId=${baseConfig.sParentId}&token=${this.props.app.token}&sName=${formRoute}&sControlName=${name}`; + if (commonUtils.isNotEmptyObject(sSqlCondition)) { + url = `${url}&sSqlCondition=${encodeURIComponent(JSON.stringify(sSqlCondition))}`; + } + if (slaveOrderBy !== undefined && slaveOrderBy !== '' && Object.keys(slaveOrderBy).length > 0) { + url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(slaveOrderBy))}`; + } + window.open(url); + } else { + message.warn('没有主表数据!'); + } + }; + + /* 导入未清数据 */ + handleImportFormData = () => { + const { masterData, sModelsType } = this.props; + if (commonUtils.isNotEmptyObject(masterData)) { + let bFilterProValue = ''; + let bFilterProName = ''; + if (sModelsType === 'cashier/payment') { /* 付款单 */ + const { sSupplyName, sSupplyId } = masterData; + if (commonUtils.isEmptyObject(sSupplyName)) { + message.error('供应商名称不能为空!'); + return; + } else { + bFilterProName = 'sSupplyGuid_pro'; + bFilterProValue = sSupplyId; + } + } else if (sModelsType === 'cashier/receipt') { /* 收款单 */ + const { sCustomerName, sCustomerId } = masterData; + if (commonUtils.isEmptyObject(sCustomerName)) { + message.error('客户名称不能为空!'); + return; + } else { + bFilterProName = 'sCustomerGuid_pro'; + bFilterProValue = sCustomerId; + } + } + this.props.onSaveState({ importFormDataVisible: true, bFilterProName, bFilterProValue }); + } + } + handleDesignFunction = () => { + this.props.onSaveState({ visibleStatement: true }); + }; + handleBatchPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchPriceUpdateData, visibleBatchPriceUpdate: true }); + } + }; + /* 有外币时,配置BtnBatchNPriceUpdate, 会调用这个方法 */ + handleBatchNPriceUpdate = () => { + const { slaveData, slaveSelectedRowKeys, app } = this.props; + if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { + return message.warning(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请选择一条数据进行操作 */ + } else { + const batchNPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); + this.props.onSaveState({ batchNPriceUpdateData, visibleBatchNPriceUpdate: 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; + } + + /* 导出Excel */ + handleOut = async () => { + const { + slaveConfig, formRoute, masterData, + } = this.props; + + /* 导出使用Post提交 */ + const url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&sName=${formRoute}&token=${encodeURIComponent(this.props.app.token)}`; + const conditionValuesStr = JSON.stringify({ sId: masterData?.sId, sBillNo: masterData?.sBillNo }); + this.handleOpenOut(url, '', '', undefined, conditionValuesStr); + }; + + /* Get提交地址栏参数过多,更改Get提交为Post提交 */ + handleOpenOut = (url, bFilter, slaveOrderBy, sGroupByList, conditionValues) => { + const newWin = window.open(); + let formStr = ''; + // 设置样式为隐藏,打开新标签再跳转页面前,如果有可现实的表单选项,用户会看到表单内容数据 + formStr = `
` + + ``; + if (commonUtils.isNotEmptyObject(conditionValues)) { + formStr += ``; + } + formStr += ''; + newWin.document.body.innerHTML = formStr; + newWin.document.forms[0].submit(); + return newWin; + } + + /** 按钮操作事件 */ + handleButtonClick = async (name) => { + if (name === 'BtnOut') { + this.handleOut(); + } else if (name === 'BtnDesignFunction') { + this.handleDesignFunction(); + } else if (name === 'BtnBatchPriceUpdate') { + this.handleBatchPriceUpdate(); + } else if (name === 'BtnBatchNPriceUpdate') { + this.handleBatchNPriceUpdate(); + } else if (name === 'BtnOutTemplate') { + this.handleOutTemplate(); + } else if (name.startsWith('BtnOutTemplateData')) { /* 导出模版数据 */ + this.handleOutTemplateData(name); + } else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */ + const { masterConfig, masterData, sModelsId, } = this.props; + this.props.onSaveState({ pageLoading:true }); + 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, pageLoading:false }); + }else if (dataReturn.code === -8 || dataReturn.code === 2) { + Modal.info({ + title: '温馨提示:', + content: ( +
+ {this.handleGetMsg(dataReturn.msg)} +
+ ), + okText: '确认', + onOk() {}, + }); + this.props.onSaveState({ pageLoading:false }); + } else { /* 失败 */ + this.props.getServiceError(dataReturn); + this.props.onSaveState({ pageLoading:false }); + } + + } + } else if (name === 'BtnTmpInfoBySql') { /* 自定义数据源 */ + this.handleBtnTmpInfoBySql(name); + } else if (name === 'BtnRefresh') { + if (this.props.app.currentPane.refresh !== undefined) { + this.props.app.currentPane.refresh(); + } + const { masterConfig, slaveConfig, checkConfig } = this.props; + this.handleGetData(masterConfig, slaveConfig, checkConfig); + } + const { sModelsType } = this.props; + // 收付款分摊 + if (sModelsType.includes('cashier/') || sModelsType.includes('sales/') || sModelsType.includes('purchase/')) { + if (name === 'BtnShare') { + this.handleShare(); + } + if (sModelsType.includes('cashier/') && name === 'BtnImportFormData') { /* 导入未清数据 */ + this.handleImportFormData(name); + } + } else if (sModelsType.includes('materialsStock/') || sModelsType.includes('productStock/')) { + if (name === 'BtnImport') { + this.props.onSaveState({ isGetDataVisible: true }); + } + } + }; + handleBtnTmpInfoBySql = async (btnName) => { + const { masterConfig, masterData, slaveData, slaveSelectedRowKeys, token, sModelsId} = this.props; + let slaveRow = {}; + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if(iIndex > -1) { + slaveRow = slaveData[iIndex]; + } + } else { + slaveRow = slaveData[0]; + } + const tableConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)) ? + masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)[0] : {}; + const sTmpInfoConfig = tableConfig; + const sButtonParam = tableConfig.sButtonParam; + const btn = commonUtils.isNotEmptyObject(sButtonParam) ? JSON.parse(sButtonParam) : ''; + if(commonUtils.isNotEmptyObject(btn)) { + const sProName = commonUtils.isNotEmptyObject(btn) ? btn.sproName : ''; + const sTmpInfoBySqlBtnName = btn.sControlName; + const newCopyTo = {}; + newCopyTo.master = masterData; + /* 找到自定义TempInfo配置 */ + const sTmpInfoBySqlBtnConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(sTmpInfoBySqlBtnName)); + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(sTmpInfoBySqlBtnConfig) ? '' : sTmpInfoBySqlBtnConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(sTmpInfoBySqlBtnName) ? sTmpInfoBySqlBtnName : 'TmpInfoBySql'; + const sAssignField = sTmpInfoBySqlBtnConfig[0].sAssignField; + const sRowData = [slaveRow]; + /* 如果sqlCondition条件 不在rowData中 则添加 */ + const sSqlCondition = sTmpInfoBySqlBtnConfig[0].sSqlCondition; + if(commonUtils.isNotEmptyObject(sSqlCondition)) { + let name = ''; /* 拿到条件表名 */ + let conditionValues = {}; + if(sSqlCondition.includes('.')) { + let newRow = {}; + const name = sSqlCondition.split('.')[0]; + if(name === 'master') { + newRow = masterData; + } + conditionValues = this.props.getSqlCondition(sTmpInfoBySqlBtnConfig[0], name, newRow); + if(commonUtils.isNotEmptyObject(conditionValues)) { + for (const key of Object.keys(conditionValues)) { + if(commonUtils.isNotEmptyArr(sRowData)) { + if(commonUtils.isEmptyObject(sRowData[0][key])) { + sRowData[0][key] = conditionValues[key]; + } + } + + } + } + } + } + const values = { sConfigformId, sControlName, sRowData }; + if (true) { + const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; + const allReturnMap = {}; + 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 sDelName = `${key}DelData`; + // allReturnMap[sName] = returnData[key]; + let { [`${key}Data`]: oldData, [`${key}Data`]: oldDelData } = this.props; + + if (commonUtils.isEmptyArr(oldDelData)) { + oldDelData = []; + } + if (commonUtils.isEmptyArr(oldData)) { + oldData = []; + } + if (sTmpInfoBySqlBtnName.includes('_edit')) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ + /* 对应字段 */ + const sActiveKey = sTmpInfoBySqlBtnConfig[0].sActiveKey; + const keyData = returnData[key]; + let newData = []; + if (commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach((child) => { + const filterData = oldData.filter(item => item[sActiveKey] !== child[sActiveKey]); + if (commonUtils.isNotEmptyArr(filterData) && filterData.length === oldData.length) { + let tableRow = {}; + tableRow = { ...tableRow, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 + tableRow.sId = commonUtils.createSid(); + tableRow.sParentId = masterData.sId; + tableRow.handleType = 'add'; + newData.push(tableRow); + } + }); + newData = oldData.concat(newData) + } + allReturnMap[sName] = newData; + } else if (sTmpInfoBySqlBtnName.includes('_del')) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ + /* 对应字段 */ + oldData.forEach((child) => { + child.handleType ='del'; + oldDelData.push(child); + }); + allReturnMap[sDelName] = oldDelData; + oldData = []; + console.log('returnData', returnData[key]); + const keyData = returnData[key]; + if (commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach((child) => { + oldData.push(child); + }); + } + allReturnMap[sName] = oldData; + } else { + allReturnMap[sName] = returnData[key]; + } + + } + if (commonUtils.isNotEmptyArr(allReturnMap.masterData) && Array.isArray(allReturnMap.masterData)) { + allReturnMap.masterData = allReturnMap.masterData[0]; + } + console.log('allReturnMap:', allReturnMap); + this.props.onSaveState({ ...allReturnMap }); + } + } else { + this.props.getServiceError(dataReturn); + } + } + } else { + message.error('配置错误,没有配置对应字段!'); + } + + } + + handleBtnChoose = async (name, sControlName, chooseConfig, recordIndex, tableName) => { + const { token } = this.props; + const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${chooseConfig.sActiveId}?sModelsId=${chooseConfig.sActiveId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + const [returnData] = dataReturn.dataset.rows; + this.props.onSaveState({ + [`${name}ChooseVisible`]: true, [`${name}ChooseData`]: returnData, slaveSelectedIndex: recordIndex, tableName, + }); + } else { + this.props.getServiceError(dataReturn); + } + }; + + handleSelect = (name, selectConfig, selectData) => { + const { + [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, slaveSelectedIndex, slaveSelectedRowKeys, slaveData, + } = this.props; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item, index) => { + const newCopyTo = {}; + newCopyTo.master = masterData; + // newCopyTo.slave = item; + const newSid = commonUtils.createSid(); + let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo, { newSid }); // 取默认值 + if (name === 'slave') { + tableDataRow.sSqlConditionId = tableDataRow.sId; + } + + if (name === 'slaveChild') { + /* 找到从表的sSqlConditionId */ + if(commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.error('请选择父级!'); + return ; + } + let iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + tableDataRow.sSqlConditionId = slaveData[iIndex].sSqlConditionId; + } + } + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRow.handleType = 'add'; + tableDataRow.sId = newSid; + tableDataRow.sParentId = masterData.sId; + + + if (name === 'slave' && selectConfig.sControlName === 'BtnChooseMaterials' && index === 0 && (commonUtils.isEmpty(tableData[slaveSelectedIndex].sProductName) || tableData[slaveSelectedIndex].sProductName === '')) { + tableData[slaveSelectedIndex] = { ...tableData[slaveSelectedIndex], ...tableDataRow }; + } else { + tableData.push(tableDataRow); + } + }); + } + this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}ChooseVisible`]: false }); + }; + + handleSelectCancel = (name) => { + this.props.onSaveState({ [`${name}ChooseVisible`]: false }); + }; + /* 双击弹出Memo */ + // handleGetMemo = (name, sValue, sMemoFiled, sRecord) => { + // const { sCurrMemoProps } = this.props; + // let { [`${name}Data`]: tableData } = this.props; + // const addStata = { [`${sMemoFiled}`]: sValue }; + // if (name !== 'master') { + // const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); + // let handleType = tableData[iIndex].handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData[iIndex] = { ...tableData[iIndex], ...addStata }; + // } else { + // let handleType = tableData.handleType;/* 获取操作类型 */ + // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + // addStata.handleType = handleType; + // tableData = { ...tableData, ...addStata }; + // } + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); + // }; + // handleGetMemoCancel = () => { + // const { sCurrMemoProps } = this.props; + // sCurrMemoProps.bVisibleMemo = false; + // this.props.onSaveState({ ...sCurrMemoProps }); + // }; + // async await + handleEleMaterialsStoreCurrQty = async (slaveData) => { + const { sModelsId, app } = this.props; + let flag = true; + const InsufficientInventory = commonFunc.showMessage(app.commonConst, 'InsufficientInventory');/* 库存不足,不能领料 */ + const MateriaTransferQuantityVerificationFailed = commonFunc.showMessage(app.commonConst, 'MateriaTransferQuantityVerificationFailed');/* 材料调拨数量校验失败,请稍后操作 */ + const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; + for (const item of slaveData) { + const body = { + sMaterialsId: item.sMaterialsId, /* 查询条件 */ + sMaterialsStyle: item.sMaterialsStyle, + sWareHouseId: item.sWareHouseId, + }; + if (commonUtils.isNotEmptyStr(item.sLocationId)) { + body.sLocationId = item.sLocationId; + } + if (commonUtils.isNotEmptyStr(item.sWarehouseLocationId)) { + body.sWarehouseLocationId = item.sWarehouseLocationId; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo)) { + body.sDefineNo = item.sDefineNo; + } + if (commonUtils.isNotEmptyStr(item.sDefineNo2)) { + body.sDefineNo2 = item.sDefineNo2; + } + const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + const materials = dataReturn.dataset.rows[0]; + if (materials.dAuxiliaryQty < item.dAuxiliaryQty) { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; + message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); + flag = false; + break; + } + } else { + message.error(MateriaTransferQuantityVerificationFailed); + flag = false; + break; + } + } + return flag; + } + handleTableSelectRowChange = async (name, selectedRowKeys, changeValue) => { + if (name === 'slave' || name === 'master') { + const { token, sModelsId, [`${name}Data`]: tableData } = this.props; + if (commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys)) { + let url = ''; + let sCustomerId = ''; + if (sModelsId === '192116810113315228246447250' || sModelsId === '101251240115015952245193980') { + if (name === 'master') { + sCustomerId = changeValue.sCustomerId; + } else if (name === 'slave') { + const sCustomerIdIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (sCustomerIdIndex > -1) { + sCustomerId = tableData[sCustomerIdIndex].sCustomerId; + } + } + if (commonUtils.isNotEmptyObject(sCustomerId)) { + url = `${commonConfig.file_host_ebc}printReport/getReportByCustomerId/${sCustomerId}?sModelsId=${sModelsId}`; + const values = {}; + const masterReturn = (await commonServices.postValueService(token, values, url)).data; + if (masterReturn.code === 1) { + const menuChildData = masterReturn.dataset.rows; + this.props.onSaveState({ menuChildData }); + } + } + } else { + let sProcessId = ''; + if (name === 'master') { + sProcessId = changeValue.sProcessClassifyId; + } else if (name === 'slave') { + const sProcessIdIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (sProcessIdIndex > -1) { + sProcessId = tableData[sProcessIdIndex].sProcessClassifyId; + } + } + if (commonUtils.isNotEmptyObject(sProcessId)) { + url = `${commonConfig.file_host_ebc}printReport/getReportByProcessId/${sProcessId}?sModelsId=${sModelsId}`; + const values = {}; + const masterReturn = (await commonServices.postValueService(token, values, url)).data; + if (masterReturn.code === 1) { + const menuChildData = masterReturn.dataset.rows; + this.props.onSaveState({ menuChildData }); + } + } + } + } + } else if (name === 'control') { + const { treeData, sModelsType } = this.props; /* 赋值给树组件节点 */ + if (sModelsType === 'sales/salesOrderPack') { + let { treeSelectedKeys } = this.props; /* 赋值给树组件节点 */ + if (treeData !== undefined) { + treeSelectedKeys = selectedRowKeys; /* 把树形选中节点赋值给表格部件选中节点 */ + this.props.onSaveState({ treeSelectedKeys }); + } + } + } + /* 点按钮删除时,会触发行点击事件 导致selectedRowKeys为删除行的sId */ + const { [`${name}Data`]: tableData, slaveChildData, slaveChildTotal: totalData, [`slaveChildAllTotal`]: totalAllData, slaveChildConfig:tableConfig, app } = this.props; + if (Array.isArray(tableData) && tableData.length > 0 && selectedRowKeys.length) { + const iIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + if (iIndex === -1) { + if (commonUtils.isNotEmptyArr(tableData) && tableData.length > 0) { + selectedRowKeys = commonUtils.isNotEmptyArr(tableData) ? [tableData[0].sId] : []; + } + } + } + + if (name === 'slave' && commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys)) { + const iSlaveIndex = tableData.findIndex(item => item.sId === selectedRowKeys[0]); + let slaveRow = {}; + if(iSlaveIndex > -1) { + slaveRow = tableData[iSlaveIndex]; + } + const { dNetMoney, dNetPrice } = app.decimals; + const selectedTotalData = []; + /* 根据sSqlConditonid 汇总勾选行字段 */ + if (commonUtils.isNotEmptyArr(totalData) && commonUtils.isNotEmptyObject(slaveRow)) { + if (commonUtils.isNotEmptyArr(slaveChildData)) { + const tableConfigSum = tableConfig.gdsconfigformslave.filter(item => commonUtils.isNotEmptyObject(item.sName) && item.bSum && item.bVisible); + const tableFilterData = slaveChildData.filter(item => item.sSqlConditionId === slaveRow.sSqlConditionId); + if (commonUtils.isNotEmptyArr(tableConfigSum) && commonUtils.isNotEmptyArr(tableFilterData)) { + const selectedTotal = {}; + selectedTotal.bSum = true; + selectedTotal.key = '0000'; + tableConfigSum.forEach((itemConfig) => { + const sName = itemConfig.sName; + const dPoint = this.props.getFloatNum(sName); + if (commonUtils.isNotEmptyObject(sName)) { + tableFilterData.forEach((child) => { + if (commonUtils.isNotEmptyNumber(child[sName])) { + /* 金额、单价 保留系统设置小数位 */ + if (sName.toLowerCase().endsWith('price')) { /* 价格 */ + selectedTotal[sName] = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(child[sName], 0),dNetPrice) + commonUtils.convertFixNum(commonUtils.isNull(selectedTotal[sName], 0),dNetPrice),dNetPrice); + } else if (sName.toLowerCase().endsWith('money')) { /* 金额 */ + selectedTotal[sName] = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(child[sName], 0),dNetMoney) + commonUtils.convertFixNum(commonUtils.isNull(selectedTotal[sName], 0),dNetMoney),dNetMoney); + } else{ + selectedTotal[sName] = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(child[sName], 0), dPoint) + commonUtils.convertFixNum(commonUtils.isNull(selectedTotal[sName], 0), dPoint), dPoint); + } + + } + }); + } + }); + if (commonUtils.isNotEmptyObject(selectedTotal)) { + selectedTotalData.push(selectedTotal); + } + } + } + } + this.props.onSaveState({ [`slaveChildTotal`]: commonUtils.isNotEmptyArr(selectedRowKeys) ? selectedTotalData : totalAllData }); + } + + this.props.onTableSelectRowChange(name, selectedRowKeys); + } + // 获取重量 + handleGetWeight = async () => { + const { masterConfig, app } = this.props; + const url = app.rxtx.sUrl; + const returnData = (await commonServices.getService(app.token, url)).data; + if (returnData.code === 1) { + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnGetWeight'); + const sAssignField = masterConfig.gdsconfigformslave[iConfigIndex].sAssignField; + const sAssignFieldStr = sAssignField.split(':')[0]; + const sAssignFieldName = sAssignFieldStr.split('.')[0]; + const sAssignFieldKey = sAssignFieldStr.split('.')[1]; + const dWeight = returnData.dataset.rows[0].dWeight; + if (commonUtils.isNotEmptyObject([`${sAssignFieldName}Data`])) { + const { [`${sAssignFieldName}Data`]: tableData } = this.props; + tableData[tableData.length - 1][sAssignFieldKey] = dWeight; + this.props.onSaveState({ tableData: [`${sAssignFieldName}Data`] }); + } + } else { + this.props.getServiceError(returnData); + } + } + handleViewClick = (name, sName, record, index, myConfig) => { + if (name === 'process' && sName === 'sProcessParamStr') { // process sProcessParam + const { processConfig, enabled, sModelsType } = this.props; + const slaveSelectOneData = record; + let modalVisible = false; + const sProcessParamsSelects = []; + let paramType = ''; + if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { + if (sModelsType.includes('manufacture/')) { + paramType = slaveSelectOneData.sWorkOrderParam; + } else if (sModelsType.includes('quotation/')) { + paramType = slaveSelectOneData.sProcessParam; + } + } + if (commonUtils.isNotEmptyObject(paramType) && enabled) { + const sProcessParam = JSON.parse(paramType); + modalVisible = true; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1 && !commonUtils.isEmpty(sProcessParam[`sParam${i.toString()}`])) { + processConfig.gdsconfigformslave[iIndex].showName = sProcessParam[`sParam${i.toString()}`]; + processConfig.gdsconfigformslave[iIndex].bVisible = !sProcessParam[`sParam${i.toString()}`].includes('参数值'); + record[`sParam${i.toString()}`] = sProcessParam[`sParam${i.toString()}`]; + sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndex]); + } else if (iIndex > -1) { + // processConfig.gdsconfigformslave[iIndex].showName = `sParamValue${i.toString()}`; + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } else { + modalVisible = false; + // eslint-disable-next-line no-plusplus + for (let i = 1; i < 7; i++) { + const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); + if (iIndex > -1) { + processConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } + this.props.onSaveState({ + processRecord: record, + sProcessParamsSelects, + sProcessParamsModalVisible: modalVisible, + }); + } else if (sName === 'myTableConfig') { + this.handleQuickViewClick(name, sName, record, index, myConfig); + } else { + this.props.onViewClick(name, sName, record, index, myConfig); + } + }; + + /* 获取表格数据 */ + handleGetTableConfig = async (name, sModelsId) => { + if (commonUtils.isNotEmptyObject(sModelsId)) { + const newConfig = await this.props.onGetTableConfig(name, sModelsId); + if (commonUtils.isNotEmptyObject(newConfig)) { + const newColumn = commonFunc.getHeaderConfig(newConfig); + this.props.onSaveState({ [`${[name]}Config`]: newConfig, [`${[name]}Column`]: newColumn }); + } + } + } + + /* 快捷键跳转 */ + handleQuickViewClick = async (name, sName, record, index, myConfigArr) => { + const { + slaveData, + slaveFilterCondition, + slavePagination, + formRoute, + sModelsId, + // slaveSelectedData, + // masterData, + // employeeConfig, + } = this.props; + console.log('myConfigArr', myConfigArr); + let picArr = []; + if (commonUtils.isNotEmptyArr(myConfigArr)) { + picArr = myConfigArr; + } + + if (picArr.length > 0) { + const getConfig = this.handleGetTableConfig; + const tableDataRow = record; + const iIndex = index; + const [{ sActiveId }] = picArr; + let [{ sActiveKey }] = picArr; + const sFormId = sActiveId === '1' ? commonUtils.isEmpty(tableDataRow.sFormId) ? tableDataRow.sSrcFormId : tableDataRow.sFormId : sActiveId; + if (commonUtils.isNotEmptyObject(sActiveKey) && sActiveKey.includes('.')) { /* 接口按钮跳转 如果有slave.对应字段 则需要取出对应字段 */ + const index = sActiveKey.lastIndexOf('.'); + sActiveKey = sActiveKey.substring(index + 1, sActiveKey.length); + } + const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sFormId}?sModelsId=${sFormId}&sName=${formRoute}`; + const filterCondition = []; + const conditionValues = this.props.getSqlCondition(picArr[0], name, tableDataRow); + if (!commonUtils.isEmpty(conditionValues)) { + Object.keys(conditionValues).forEach((item) => { + if ((item === 'tStartDate_pro' || item.substring(0, 1) === 'p')) { + if (!commonUtils.isEmpty(conditionValues[item]) && conditionValues[item].length >= 2) { + const tStartDate = moment(conditionValues[item][0]).format(this.sDateFormat); + const tEndDate = moment(conditionValues[item][1]).add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if ((item === 'mStartDate_pro' || item.substring(0, 1) === 'm')) { + if (!commonUtils.isEmpty(conditionValues[item])) { + const tStartDate = moment(conditionValues[item]).startOf('month').format(this.sDateFormat); + const tEndDate = moment(conditionValues[item]).endOf('month').add(1, 'days').format(this.sDateFormat); + filterCondition.push({ + bFilterName: `t${item.substring(1, item.length)}`, + bFilterCondition: '=', + bFilterValue: `${tStartDate},${tEndDate}`, + }); + } + } else if (item.substring(0, 1) === 't') { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: moment(conditionValues[item]).format(this.sDateFormat), + }); + } else { + filterCondition.push({ + bFilterName: item, + bFilterCondition: '=', + bFilterValue: conditionValues[item], + }); + } + }); + } + this.props.dispatch({ + type: 'content/onRouter', + payload: { + url: sNameUrl, + refresh: getConfig.bind(this, name, sModelsId), /* 刷新方法 */ + sTabId: commonUtils.createSid(), + // sParentId: this.state.sTabId, + urlDataType: 'newPane', + checkedId: myConfigArr[0].sId, + sName: myConfigArr[0].sName, + bFilter: slaveFilterCondition, + pageSize: commonConfig.pageSize, + pages: slavePagination, + currentData: [tableDataRow], + conditonValues: conditionValues, + newKey: tableDataRow[sActiveKey], + currentIndex: iIndex, + filterCondition, + sSrcModelsId: this.props.sModelsId, + }, + }); + } + }; + + /* 选择基础颜色 */ + handleSelectSisColor = async (name, selectConfig, selectData) => { + const { enabled, processData, processSelectedRowId } = this.props; + if (enabled) { + let sColorSerialMemoStr = ''; + const jsonData = []; + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item) => { + const { + sId, sName, dColor, CreateDate, sMakePerson, + } = item; + const jsonObj = {}; + jsonObj.sId = sId; + jsonObj.sName = sName; /* 名称 */ + jsonObj.dColor = dColor; /* 色序 */ + jsonObj.CreateDate = CreateDate; + jsonObj.sMakePerson = sMakePerson; + sColorSerialMemoStr += `${sName}-${dColor},`; + jsonData.push(jsonObj); + }); + if (commonUtils.isNotEmptyObject(sColorSerialMemoStr)) { + sColorSerialMemoStr = commonUtils.isNotEmptyArr(jsonData) ? JSON.stringify(jsonData) : ''; /* JSON对象转换为字符串存放到合版信息中 */ + } + } + const iIndex = processData.findIndex(item => item.sId === processSelectedRowId); + if (iIndex > -1) { + const addState = {}; + let { handleType } = processData[iIndex]; + handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; + addState.handleType = handleType; + addState.sColorSerialMemo = sColorSerialMemoStr; + processData[iIndex] = { ...processData[iIndex], ...addState }; + } + } + this.props.onSaveState({ + sisColorChooseVisible: false, + }); + } + handleViewChoose= (name, sName, record) => { + const { sId } = record; /* 控制表主键 */ + const { enabled } = this.props; + const sisColorSelectedRowKeys = []; + let jsonData = []; + if (name === 'process' && sName === 'sColorSerialMemo') { + const { [`${name}Data`]: tableData } = this.props; + const iIndex = tableData.findIndex(item => item.sId === sId); + if (iIndex > -1) { + const sColorSerialMemo = tableData[iIndex].sColorSerialMemo; + + if (commonUtils.isNotEmptyObject(sColorSerialMemo)) { + try { + jsonData = JSON.parse(sColorSerialMemo); + jsonData.forEach((item) => { + sisColorSelectedRowKeys.push(item.sId); + }); + } catch (ex) { + console.log('ex', ex); + } + } + } + this.props.onSaveState({ + sisColorChooseVisible: true, + processSelectedRowId: sId, /* 工序表选中行sId */ + enabled, + sisColorSelectedRowKeys, + sisColorSelectedData: jsonData, + }); + } + } + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + /* 根据上机长、上机宽,材料长,材料宽 计算自动排版数 */ + handleResolveMachineComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let result1 = {}; + const productLengthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(productLength, 0)); /* 产品长 */ + const productWidthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(productWidth, 0)); /* 产品宽 */ + const maxMachineLengthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(maxMachineLength, 0)); /* 材料长 */ + const maxMachineWidthTemp = commonUtils.convertStrToNumber(commonUtils.isNull(maxMachineWidth, 0)); /* 材料宽 */ + if (isNaN(productLengthTemp) || productLengthTemp === 0 || isNaN(productWidthTemp) || productWidthTemp === 0 || isNaN(maxMachineLengthTemp) || maxMachineLengthTemp === 0 || isNaN(maxMachineWidthTemp) || maxMachineWidthTemp === 0) { + return result1; + } + const vh = this.handleDescVerticalComposing(productLength, productWidth, maxMachineLength, maxMachineWidth); + const hv = this.handleDescHorizonalComposing(productLength, productWidth, maxMachineLength, maxMachineWidth); + const totalNumVH = vh.totalNum; + const totalNumHV = hv.totalNum; + if (totalNumVH === totalNumHV) { + if (vh.remaining === 0) { + result1 = vh; + } else { + result1 = hv; + } + } else if (totalNumVH > totalNumHV) { + result1 = vh; + } else { + result1 = hv; + } + return result1; + }; + + handleDescHorizonalComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let horizonalWWNum = 0; + let horizonalLWNum = 0; + let verticalLLNum = 0; + let verticalLWNum = 0; + let totalNum = 0;// 总的排列数目 + let totalLength = 0;// 上机长,即最大排列占据的长度 + let totalWidth = 0;// 上机宽,即最大排列占据的宽度 + + let mLength = 0; + let mWidth = 0; + let horizonalRemaining = 0; + // let fTempmarginW = 0; + // let fTempmarginL = 0; + // const mTemp = 0; + const dmargin = 0; + + const result1 = {}; + + if (maxMachineLength > maxMachineWidth || maxMachineLength === maxMachineWidth) { + mLength = maxMachineLength; + } else { + mLength = maxMachineWidth; + } + + if (maxMachineLength < maxMachineWidth || maxMachineLength === maxMachineWidth) { + mWidth = maxMachineLength; + } else { + mWidth = maxMachineWidth; + } + maxMachineLength = mLength; + maxMachineWidth = mWidth; + + // 按机器优先横排--竖向横排数量,即上述竖向横排一共排几行 + verticalLLNum = Math.floor(maxMachineLength / this.handleZeroToOne(productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 按机器优先横排--横向横排数量,即横向排列的时候,一行最多能排几个 + verticalLWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(productLength + commonUtils.convertFixNum(dmargin, 2))); + + totalNum += verticalLLNum * verticalLWNum; + + // 画册类,不能混排,而且只能是偶数,如果是奇数,则首选在长方向去掉一列, + horizonalRemaining = 0; + // fTempmarginW = 0;// 宽方向 需减少的出血 + // fTempmarginL = 0;// 长方向 需减少的出血 + horizonalWWNum = 0; + horizonalLWNum = 0; + + if (totalNum > 0) { + // 上述横排完成之后,剩余的右边宽度,用于竖向排列 + horizonalRemaining = maxMachineWidth - (verticalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))); + // 按机器优先长排--竖向横排一行能排的数量,即排完竖向之后,剩余的排横向的,看一行能排多少个 + + // / 剩余空间 横向 排数量 + horizonalWWNum = Math.floor(horizonalRemaining / (productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 剩余空间 竖向 排数量 + horizonalLWNum = Math.floor(maxMachineLength / (productLength + commonUtils.convertFixNum(dmargin, 2))); + } + + if (horizonalWWNum * horizonalLWNum === 0) { + // 不是混排的情况 + totalLength = verticalLLNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + totalWidth = verticalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalNum += horizonalWWNum * horizonalLWNum; + // 有可能是左边横向排列占用的长度更长,也有可能是剩余右侧的竖向排列方式占用的长度更长,最终更长的那个作为上机尺寸 + if (verticalLLNum * (productWidth + dmargin) > horizonalLWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) { + totalLength = verticalLLNum * (productWidth + dmargin); + } else { + totalLength = horizonalLWNum * (productLength + dmargin); + } + // 最终宽度是所有左侧横向排列占据的宽度以及右侧剩余空间竖向排列占据的宽度之和 + totalWidth = (verticalLWNum * (productLength + dmargin)) + (horizonalWWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2))); + } + + result1.remaining = horizonalLWNum * horizonalWWNum; + result1.iLengthComposing = verticalLLNum; + result1.iWidthComposing = verticalLWNum; + + + result1.sMethod = `W#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+L#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + result1.sMaterialMethod = `W#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+L#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + // 最终要保存排列之后的长和宽,按机器排的时候获取的是上机尺寸;按材料排的时候,就是最优材料排版 + if (totalLength > totalWidth) { + result1.totalLength = totalLength; + result1.totalWidth = totalWidth; + } else { + result1.totalLength = totalWidth; + result1.totalWidth = totalLength; + } + // 最终保存最大数目,以便比较最优排版数 + result1.totalNum = totalNum; + return result1; + }; + handleDescVerticalComposing = (productLength, productWidth, maxMachineLength, maxMachineWidth) => { + let horizonalWWNum = 0; + let horizonalLWNum = 0; + let verticalLLNum = 0; + let verticalLWNum = 0; + let mLength = 0; + let mWidth = 0; + let verticalRemaining = 0; + // eslint-disable-next-line no-unused-vars + let fTempmarginW = 0; + // eslint-disable-next-line no-unused-vars + let fTempmarginL = 0; + const result1 = {}; + // eslint-disable-next-line no-unused-vars + const TYHLLookupList = 0; + const dmargin = 0; + let totalNum = 0;// 总的排列数目 + let totalLength = 0;// 上机长,即最大排列占据的长度 + let totalWidth = 0; // 上机宽,即最大排列占据的宽度 + if (maxMachineLength >= maxMachineWidth) { + mLength = maxMachineLength; + } else { + mLength = maxMachineWidth; + } + + if (maxMachineLength <= maxMachineWidth) { + mWidth = maxMachineLength; + } else { + mWidth = maxMachineWidth; + } + maxMachineLength = mLength; + maxMachineWidth = mWidth; + // 画册类,不能混排,而且只能是偶数,如果是奇数,则首选在长方向去掉一列, + verticalRemaining = 0; + + fTempmarginW = 0;// 宽方向 需减少的出血 + fTempmarginL = 0;// 长方向 需减少的出血 + + horizonalWWNum = 0; + horizonalLWNum = 0; + + // 按机器优先长排--竖排竖方向排多少个 + verticalLLNum = Math.floor(maxMachineLength / this.handleZeroToOne(commonUtils.convertFixNum(productLength, 2) + commonUtils.convertFixNum(dmargin, 2))); + // 竖排横方向排多少个 + verticalLWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(commonUtils.convertFixNum(productWidth, 2) + commonUtils.convertFixNum(dmargin, 2))); + totalNum += verticalLLNum * verticalLWNum; + + if (totalNum > 0) { + // 上述竖排完成之后,剩余的长度 + verticalRemaining = maxMachineLength - (verticalLLNum * (commonUtils.convertFixNum(productLength, 2) + commonUtils.convertFixNum(dmargin, 2))); + // 剩余下面 竖向 排数量 + horizonalLWNum = Math.floor(verticalRemaining / this.handleZeroToOne(productWidth + commonUtils.convertFixNum(dmargin, 2))); + // 剩余下面 横向 排数量 + horizonalWWNum = Math.floor(maxMachineWidth / this.handleZeroToOne(productLength + commonUtils.convertFixNum(dmargin, 2))); + } + + if (horizonalWWNum * horizonalLWNum === 0) { + totalLength = verticalLLNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + totalWidth = verticalLWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalNum += horizonalLWNum * horizonalWWNum; + totalLength = (verticalLLNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) + ((productWidth + commonUtils.convertFixNum(dmargin, 2)) * horizonalLWNum); + // 最终宽度是所有左侧横向排列占据的宽度以及右侧剩余空间竖向排列占据的宽度之和 + if (verticalLWNum * (productWidth + dmargin) > horizonalWWNum * (productLength + commonUtils.convertFixNum(dmargin, 2))) { + totalWidth = verticalLWNum * (productWidth + commonUtils.convertFixNum(dmargin, 2)); + } else { + totalWidth = horizonalWWNum * (productLength + commonUtils.convertFixNum(dmargin, 2)); + } + } + result1.remaining = horizonalLWNum * horizonalWWNum; + result1.iLengthComposing = verticalLLNum; + result1.iWidthComposing = verticalLWNum; + result1.sMethod = `L#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+W#${commonUtils.convertNumberToStr(horizonalLWNum)}*${commonUtils.convertNumberToStr(horizonalWWNum)}`; + result1.sMaterialMethod = `L#${commonUtils.convertNumberToStr(verticalLLNum)}*${commonUtils.convertNumberToStr(verticalLWNum)}+W#${commonUtils.convertNumberToStr(horizonalWWNum)}*${commonUtils.convertNumberToStr(horizonalLWNum)}`; + // 最终要保存排列之后的长和宽,按机器排的时候获取的是上机尺寸;按材料排的时候,就是最优材料排版 + if (totalLength > totalWidth) { + result1.totalLength = totalLength; + result1.totalWidth = totalWidth; + } else { + result1.totalLength = totalWidth; + result1.totalWidth = totalLength; + } + // 最终保存最大数目,以便比较最优排版数 + result1.totalNum = Math.floor(totalNum); + return result1; + }; + handleZeroToOne = (num) => { + if (commonUtils.isEmptyNumber(num) && num === 0) { + num = 1; + } + return num; + }; + + /* 单据字段单击右键全部更新,弹出窗选择后,更新此列所有数据。(只更新非只读字段) */ + handleContextMenuOk= async (contextMenuValue, contextMenuData, contextMenuType) => { + const { + contextMenuConfig, contextMenuTbName, [`${contextMenuTbName}Data`]: tableData, [`${contextMenuTbName}SelectedRowKeys`]: selectedRowKeys, + } = this.props; + if (commonUtils.isNotEmptyObject(contextMenuTbName) && commonUtils.isNotEmptyArr(tableData)) { + if (commonUtils.isNotEmptyArr(contextMenuConfig) && commonUtils.isNotEmptyObject(contextMenuConfig[0])) { + const tableConfig = contextMenuConfig[0]; + const tableFilterData = tableData.filter(item => selectedRowKeys.includes(item.sId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + let changeData = []; + const chooseType = commonUtils.isNotEmptyNumber(contextMenuType) ? contextMenuType : 1; + if(chooseType === 1) { + changeData = tableData; + } else if(chooseType === 2) { + const iIndex = tableData.findIndex(item => selectedRowKeys.includes(item.sId)); + changeData = tableData.filter((_, index) => index >= iIndex); + } + // const tableDataRow = tableFilterData[0]; + if (commonUtils.isNotEmptyArr(changeData) && commonUtils.isNotEmptyObject(tableConfig.sName) && !commonUtils.isEmpty(contextMenuValue)) { + const sName = tableConfig.sName; + for (let i = 0; i < changeData.length; i++) { + const child = changeData[i]; + const addState = {}; + addState[sName] = contextMenuValue; + const iIndex = tableData.findIndex(row => row.sId === child.sId); + const bShowProcess = [ + 'sMaterialsNo', + 'sMaterialsName', + 'dAuxiliaryQty', + 'dReelAuxiliaryQty', + 'dConversionQty', + 'sMaterialsStyle', + 'sMaterialsStyle', + 'dMaterialsQty', + 'dAuxiliaryLossQty', + 'dLossQty', + 'sProcessId', + 'sProcessNo', + 'sProcessName' + ].includes(sName); + bShowProcess && message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess}); + if(iIndex > -1) { + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...addState, ...contextMenuData }; + const changeValue = { ...contextMenuData }; + changeValue[sName] = contextMenuValue; + this.xlyProcessPercent = ((i + 1) / changeData.length * 100).toFixed(2); + const duration = i === changeData.length - 1 ? 1 : 0; + bShowProcess && message.loading({ content: , key: "xlyProcess", duration, className: styles.xlyProcess}); + + /* 手动触发改变事件 */ + const result = await this.handleTableChange(contextMenuTbName, sName, changeValue, child.sId, [], true); + tableData[iIndex] = { ...tableData[iIndex], ...result }; + } + } + } + } + } + } + this.props.onSaveState({ + [`${contextMenuTbName}Data`]: tableData, + contextMenuModalVisible: false, /* 右击全部更新弹窗 */ + }); + } + + /* 工单、工艺卡、报价单上移下移排序 */ + orderNum = (tableData, controlSelectedRowKeys) => { + /* 部件工序排序 */ + const tableFilterData = tableData.filter(item => controlSelectedRowKeys.includes(item.sControlId)); + if (commonUtils.isNotEmptyArr(tableFilterData)) { + tableFilterData.forEach((item, index) => { + item.iOrder = index + 1; + item.handleType = commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType; + const index1 = tableData.findIndex(item1 => item1.sId === item.sId); + if (index1 > -1) { + tableData[index1] = { ...tableData[index1], ...item }; + } + }); + } + /* 成品工序 */ + const tableFilterCPData = tableData.filter(item => item.sType === '3'); + if (commonUtils.isNotEmptyArr(tableFilterCPData)) { + let num = 1001; + tableFilterCPData.forEach((item) => { + item.iOrder = num; + item.handleType = commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType; + const index1 = tableData.findIndex(item1 => item1.sId === item.sId); + num += 1; + if (index1 > -1) { + tableData[index1] = { ...tableData[index1], ...item }; + } + }); + } + return tableData; + }; + + /* 送货单个性化弹窗 选择数据带到从表字表 */ + handleSelectCommonPopup = async (currentPaneName, selectConfig, selectData, tbName) => { + const { + [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, sModelsId, sModelsType, slaveSelectedRowKeys, slaveData, + } = this.props; + let { slaveChildData, [`${tbName}Data`]: tableData, app, token } = this.props; + const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; + let dProductQty = 0; + if (selectConfig && (selectConfig.sControlName.includes('BtnPopup1Deliver') || selectConfig?.sControlName.includes('Sub'))) { + if (commonUtils.isNotEmptyArr(selectData)) { + // eslint-disable-next-line no-unused-vars + selectData.forEach(async (item, index) => { + if (commonUtils.isEmpty(slaveChildData)) { + slaveChildData = []; + } + const newCopyTo = {}; + newCopyTo.master = masterData; + if (iIndex > -1) { + newCopyTo.slaveChild = item; + } + /* 库存数量叠加到从表的送货数量中 */ + // dProductQty += commonUtils.isNull(item.dProductQty, 0); /* 赠送数量叠加 */ + let tableDataRowAdd = this.handleTableAdd('slaveChild', true); + item.handleType = 'add'; + tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData.sId; + tableDataRowAdd.sParentSlaveId = tableData[iIndex].sId; /* 选中从表的sId */ + tableDataRowAdd.sSqlConditionId = tableData[iIndex].sSqlConditionId; /* 选中从表的sId */ + slaveChildData.push(tableDataRowAdd); + }); + let slaveChildFilterData = commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData.filter(item => item.sSqlConditionId === tableData[iIndex].sSqlConditionId ) : []; + if(commonUtils.isNotEmptyArr(slaveChildFilterData)) { + slaveChildFilterData.forEach( (item, index) => { + if(sModelsType && sModelsType.includes('purchase/purchaseInstore') && commonUtils.isNotEmptyNumber(item.dAuxiliaryQty) && commonUtils.isEmptyNumber(item.dProductQty)) { + dProductQty += commonUtils.isNull(item.dAuxiliaryQty, 0); + } else { + dProductQty += commonUtils.isNull(item.dProductQty, 0); + } + }) + } + if (commonUtils.isNotEmptyNumber(dProductQty) && dProductQty !== 0) { + const addState = {}; + addState.dProductQty = dProductQty; + if(sModelsType && sModelsType.includes('outside/')) { + tableData[iIndex].dAuxiliaryQty = dProductQty; + tableData[iIndex] = await this.handleMaterialsChange(tableData[iIndex], sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, 'Materials'); + } + addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + tableData[iIndex] = { ...tableData[iIndex], ...addState }; + } + if(sModelsType && sModelsType.includes('purchase/purchaseInstore')) { + this.props.onSaveState({[`${tbName}Data`]: tableData, slaveChildData}, () => { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow: commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData[0] : {}, + } + // 汇总到从表方法 + this.handleWriteBack(params); + }) + } else { + this.props.onSaveState({ [`${tbName}Data`]: tableData, slaveChildData }); + } + } + } else if(tbName === 'slaveChild') { + if (commonUtils.isNotEmptyArr(selectData)) { + selectData.forEach((item, index) => { + const sName = selectConfig.sKeyUpFilter; /* 将后台配置筛选字段作为 列字段 */ + const newCopyTo = {}; + newCopyTo.master = masterData; + let sValue = ''; + if (iIndex > -1) { + newCopyTo.slaveChild = item; + sValue = tableData[iIndex][sName]; + } + /* 第一条数据若字段值为空或者只有一条数据时 则添加到该行 否则新增一行 */ + let tableDataRow = {}; // 取默认值 + if (tbName === 'slaveChild') { + /* 找到从表的sSqlConditionId */ + if(commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.error('请选择父级!'); + return ; + } + let iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1) { + tableDataRow.sSqlConditionId = slaveData[iIndex].sSqlConditionId; + } + } + if (selectData.length === 1 || (index === 0 && commonUtils.isEmptyObject(sValue))) { + if (tbName === 'master') { + tableDataRow = {...tableData, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo)}; // 取赋值字段 + tableData = tableDataRow; + tableData.handleType = commonUtils.isEmpty(tableData.handleType) ? 'update' : tableData.handleType; + } else { + tableDataRow = {...tableData[iIndex], ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo)}; // 取赋值字段 + tableData[iIndex] = tableDataRow; + tableData[iIndex].handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? 'update' : tableData[iIndex].handleType; + } + } else { + let tableDataRowAdd = this.handleTableAdd(tbName, true); + tableDataRowAdd = {...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo)}; // 取赋值字段 + tableDataRow = tableDataRowAdd; + tableData.push(tableDataRowAdd); + } + this.props.onSaveState({ [`${tbName}Data`]: tableData},() => { + const params = { + sFieldName: 'dAuxiliaryQty', + tableDataRow, + } + // 汇总到从表方法 + this.handleWriteBack(params); + }); + }); + + } + } else { + this.props.onSelectCommonPopup(currentPaneName, selectConfig, selectData, tbName); + } + }; + + render() { + const { masterData } = this.props; + const imgSrc = commonBusiness.handleAddIcon(masterData); + return ( + + ); + } + }; +}; diff --git a/src/components/Common/CommonSystemSettingEvent.js b/src/components/Common/CommonSystemSettingEvent.js index 91b2cec..99db9cc 100644 --- a/src/components/Common/CommonSystemSettingEvent.js +++ b/src/components/Common/CommonSystemSettingEvent.js @@ -1,7 +1,7 @@ /* eslint-disable array-callback-return,no-undef,prefer-destructuring */ import moment from 'moment'; import React, { Component } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message } from 'antd-v4'; import * as commonFunc from './commonFunc'; import * as commonBusiness from './commonBusiness'; /* 单据业务功能 */ import * as commonUtils from '../../utils/utils'; /* 通用方法 */ diff --git a/src/components/Common/CommonTableNew/index.tsx b/src/components/Common/CommonTableNew/index.tsx index d551479..e7f6781 100644 --- a/src/components/Common/CommonTableNew/index.tsx +++ b/src/components/Common/CommonTableNew/index.tsx @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState, useRef } from 'react'; -import { Form, Table, Tooltip } from 'antd'; -import type { GetRef, InputRef, TableProps, } from 'antd'; +import { Form, Table, Tooltip } from 'antd-v4'; +import type { GetRef, InputRef, TableProps, } from 'antd-v4'; import * as commonUtils from '@/utils/utils'; import FormItemType from '@/components/Common/CommonComponentNew'; diff --git a/src/components/Common/CommonTableNew/type.ts b/src/components/Common/CommonTableNew/type.ts index 59fa111..6b5cd72 100644 --- a/src/components/Common/CommonTableNew/type.ts +++ b/src/components/Common/CommonTableNew/type.ts @@ -1,4 +1,4 @@ -import type { TableProps } from 'antd'; +import type { TableProps } from 'antd-v4'; export interface RecordType { [key: string]: any; // 根据实际需求调整类型 diff --git a/src/components/Common/CommonView/index.js b/src/components/Common/CommonView/index.js index 4a3b65c..da778bc 100644 --- a/src/components/Common/CommonView/index.js +++ b/src/components/Common/CommonView/index.js @@ -1,7 +1,7 @@ /* eslint-disable object-curly-newline,prefer-destructuring */ import React, { Component } from 'react'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Form, Tooltip } from 'antd'; +import { Row, Col, Form, Tooltip } from 'antd-v4'; import { DoubleRightOutlined } from '@ant-design/icons'; import commonConfig from '@/utils/config'; import ShowType from '@/components/Common/CommonComponent'; diff --git a/src/components/Common/CommonViewDrag/index.js b/src/components/Common/CommonViewDrag/index.js new file mode 100644 index 0000000..663ad23 --- /dev/null +++ b/src/components/Common/CommonViewDrag/index.js @@ -0,0 +1,932 @@ +/* eslint-disable */ +import React, { Component } from "react"; +import "@ant-design/compatible/assets/index.css"; +import { Col, Tabs, Tooltip } from "antd-v4"; +import ShowType from "@/components/Common/CommonComponent"; +import AntdDraggableModal from "@/components/Common/AntdDraggableModal"; +import CommonListSelectTree from "@/components/Common/CommonListSelectTree"; +import * as commonBusiness from "@/components/Common/commonBusiness"; /* 单据业务功能 */ +import StaticEditTable from "@/components/Common/CommonTable"; /* 可编辑表格 */ +import * as commonFunc from "@/components/Common/commonFunc"; +import * as commonUtils from "@/utils/utils"; /* 通用方法 */ +import RGL, { WidthProvider } from "react-grid-layout"; +import layoutStyle from "./index.less"; + +const { TabPane } = Tabs; +const ReactGridLayout = WidthProvider(RGL); + +export default class CommonViewTable extends Component { + constructor(props) { + super(props); + this.state = { + openNewTabFlag: false, + commonFieldPopupVisible: false, + commonFieldPopupTbName: "name", + commonFieldPopupShowConfig: {}, + randomId: commonUtils.createSid(), + activeKey: "" + // tempLayout: [], // 临时布局 + // tempLayout1: [], // 临时布局 + // tempLayout2: [], // 临时布局 + }; + this.selectedData = []; // 选中数据 + this.refIds = {}; // 记录所有组件的id + + this.maxTabCount = 10; // 最大tab数 + for (let index = 0; index < this.maxTabCount; index++) { + const i = index === 0 ? "" : index; + this.state[`tempLayout${i}`] = []; + } + } + + componentWillMount() { + this.assignmentWillProps(this.props); + } + + componentDidMount() { + if (this.layoutRef) { + this.layoutRef.addEventListener( + "mousedown", + this.handleSelectMouseDownEvent + ); + document.addEventListener("mouseup", this.handleSelectMouseUpEvent); + document.addEventListener("mousemove", this.handleSelectMouseMoveEvent); + document.addEventListener("copy", this.handleCopyEvent); + } + } + + componentDidUpdate() { + if (this.layoutRef) { + const { x: baseX, y: baseY } = this.layoutRef.getBoundingClientRect(); + this.baseX = baseX; + this.baseY = baseY; + } + } + + componentWillUnmount() { + if (this.layoutRef) { + this.layoutRef.removeEventListener( + "mousedown", + this.handleSelectMouseDownEvent + ); + document.removeEventListener("mouseup", this.handleSelectMouseUpEvent); + document.removeEventListener( + "mousemove", + this.handleSelectMouseMoveEvent + ); + document.removeEventListener("copy", this.handleCopyEvent); + } + } + + componentWillReceiveProps(nextProps) { + if (this.state.openNewTabFlag) { + const dom = document.getElementsByClassName( + `${this.state.randomId}-CommonListSelectTree` + )[0]; + dom.parentElement.parentElement.style.display = "block"; + this.setState({ + openNewTabFlag: false + }); + } + + const { slaveSelectedRowKeys = [], viewDragRefreshTime = 0 } = nextProps; + const { + slaveSelectedRowKeys: slaveSelectedRowKeysOld = [], + viewDragRefreshTime: viewDragRefreshTimeOld = 0 + } = this.props; + if ( + JSON.stringify(slaveSelectedRowKeys) !== + JSON.stringify(slaveSelectedRowKeysOld) || + viewDragRefreshTime !== viewDragRefreshTimeOld + ) { + this.assignmentWillProps(nextProps); + } + } + + assignmentWillProps = props => { + this.refIds = {}; + const { slaveSelectedRowKeys = [], slaveData } = props; + const { activeKey } = this.state; + const rowKey = slaveSelectedRowKeys[0]; + if (rowKey && commonUtils.isNotEmptyArr(slaveData)) { + const iIndex = slaveData.findIndex(item => item.sId === rowKey); + if (iIndex !== -1) { + const currentData = slaveData[iIndex]; + const addState = {}; + let firstActiveKey = ""; + let firstActiveIndex = 0; + let hasCurrentActiveKey = false; + for (let index = 0; index < this.maxTabCount; index++) { + const i = index === 0 ? "" : index; + const viewRow = props[`view${i}Row`]; + if (commonUtils.isNotEmptyObject(viewRow)) { + const viewConfigs = props[`view${i}Configs`]; + const panelName = props[`panel${i}Name`]; + const panel = currentData[panelName] || "[]"; + addState[`tempLayout${i}`] = this.handleGetInitLayout( + viewConfigs, + panel + ); + + const tabPaneConfig = props[`tabPane${i}Config`]; + if (tabPaneConfig?.key === activeKey) { + hasCurrentActiveKey = true; + } + if (!firstActiveKey && tabPaneConfig?.key) { + firstActiveKey = tabPaneConfig.key; + firstActiveIndex = index; + } + } + } + + if (!hasCurrentActiveKey && firstActiveKey) { + addState.activeKey = firstActiveKey; + addState.activeIndex = firstActiveIndex; + } + + this.setState({ ...addState }); + } + } + }; + + // 初始化布局数据 + handleGetInitLayout = (configs, panel) => { + if (panel === "[]") { + // 如果没有保存过布局数据 + let flag = 0; + return configs.map((item, index) => { + if (index % 4 === 0 && index !== 0) { + flag++; + } + const minH = + item.sName && item.sName.includes("sParamColumnConfig") ? 2 : 1; + return { + i: item.sName, + x: (index - flag * 4) * 6, + y: flag, + w: 6, + h: minH, + minH, + minW: 1 + }; + }); + } else { + // 如果保存过布局数据 + // 判断配置数据和布局数据的sName是否一致 + const arrAdd = configs.map(item => item.sName); // 新增的字段 + const arrDel = []; // 删除的字段 + const panelArr = JSON.parse(panel); + panelArr.forEach(({ i: sName }, index) => { + const minH = sName && sName.includes("sParamColumnConfig") ? 2 : 1; + panelArr[index].minH = minH; + panelArr[index].h = Math.max(panelArr[index].h, minH); + panelArr[index].minW = 1; + const iIndex = arrAdd.findIndex(item => item === sName); + if (iIndex !== -1) { + arrAdd.splice(iIndex, 1); + } else { + arrDel.push(sName); + } + }); + + if (commonUtils.isEmptyArr(arrAdd) && commonUtils.isEmptyArr(arrDel)) { + // 数据没有变化 + return panelArr; + } + + if (commonUtils.isNotEmptyArr(arrDel)) { + // 有删除的数据 + arrDel.forEach(sName => { + const iIndex = panelArr.findIndex(item => item.i === sName); + if (iIndex !== -1) { + panelArr.splice(iIndex, 1); + } + }); + } + + if (commonUtils.isNotEmptyArr(arrAdd)) { + // 有新增的数据 + let newY = 0; // 新增数据的开始行位置 + panelArr.forEach(({ y, h }) => { + newY = Math.max(y + h, newY); + }); + + let flag = 0; + arrAdd.forEach((sName, index) => { + if (index % 4 === 0 && index !== 0) { + flag++; + } + const minH = sName && sName.includes("sParamColumnConfig") ? 2 : 1; + panelArr.push({ + i: sName, + x: (index - flag * 4) * 6, + y: flag + newY, + w: 6, + h: minH, + minH, + minW: 1 + }); + }); + } + return panelArr; + } + }; + + // 鼠标按下事件 + handleSelectMouseDownEvent = e => { + const { activeKey } = this.state; + this.selectedData = []; + const oTabpane = this.layoutRef.querySelector( + ".ant-tabs-tabpane:not(.ant-tabs-tabpane-hidden)" + ); + this.refIds[activeKey]?.forEach(id => { + const dom = oTabpane.querySelector(`#${id}`); + if (dom) { + const oChecked = dom.querySelector(".divChecked"); + oChecked ? (oChecked.style.display = "none") : ""; + } + }); + if (e?.target?.classList?.contains("blankPanel")) { + this.bMousedwon = true; + const { clientX, clientY } = e; + + this.clientX = clientX; + this.clientY = clientY; + + this.selectAreaRef.style.left = clientX - this.baseX + "px"; + this.selectAreaRef.style.top = clientY - this.baseY + "px"; + this.selectAreaRef.style.width = "1px"; + this.selectAreaRef.style.height = "1px"; + + this.setState({ maskVisible: true }); + } + }; + + // 鼠标抬起事件 + handleSelectMouseUpEvent = e => { + const bMousedwonBak = this.bMousedwon; + this.bMousedwon = false; + if (bMousedwonBak) { + this.setState({ maskVisible: false }); + } + }; + + // 鼠标移动事件 + handleSelectMouseMoveEvent = e => { + if (this.bMousedwon && this.selectAreaRef) { + const { activeKey } = this.state; + const { clientX, clientY } = e; + const x1 = Math.min(clientX, this.clientX); + const x2 = Math.max(clientX, this.clientX); + const y1 = Math.min(clientY, this.clientY); + const y2 = Math.max(clientY, this.clientY); + + this.selectAreaRef.style.left = x1 - this.baseX + "px"; + this.selectAreaRef.style.top = y1 - this.baseY + "px"; + this.selectAreaRef.style.width = x2 - x1 + "px"; + this.selectAreaRef.style.height = y2 - y1 + "px"; + + const { + right: right1, + left: left1, + bottom: bottom1, + top: top1 + } = this.selectAreaRef.getBoundingClientRect(); + const selectedData = []; + const oTabpane = this.layoutRef.querySelector( + ".ant-tabs-tabpane:not(.ant-tabs-tabpane-hidden)" + ); + this.refIds[activeKey]?.forEach(id => { + const dom = oTabpane.querySelector(`#${id}`); + if (dom) { + const { + right: right2, + left: left2, + bottom: bottom2, + top: top2 + } = dom.getBoundingClientRect(); + if ( + !( + right1 < left2 || + left1 > right2 || + bottom1 < top2 || + top1 > bottom2 + ) + ) { + selectedData.push(id); + dom.querySelector(".divChecked").style.display = ""; + } else { + dom.querySelector(".divChecked").style.display = "none"; + } + } + }); + this.selectedData = selectedData; + } + }; + + // 复制操作 + handleCopyEvent = e => { + if (commonUtils.isNotEmptyArr(this.selectedData)) { + const clipboardData = e.clipboardData; + if (!clipboardData) { + return; + } + e.preventDefault(); + + const { activeIndex } = this.state; + // 获取当前tab页布局 + const layout = this.state[ + `tempLayout${activeIndex === 0 ? "" : activeIndex}` + ]; + + const selectedLayout = layout.filter(item => + this.selectedData.includes(item.i) + ); + + const viewRow = + this.props[`view${activeIndex === 0 ? "" : activeIndex}Row`] || {}; + + const [minX, maxX, minY, maxY] = selectedLayout.reduce( + (result, item) => { + const { x, y, w, h } = item; + result = [ + Math.min(result[0], x), + Math.max(result[1], x + w), + Math.min(result[2], y), + Math.max(result[3], y + h) + ]; + return result; + }, + [999, 0, 999, 0] + ); + + const tableW = maxX - minX; + const tableH = maxY - minY; + + const filledArr = []; + const tableContent = `
${new Array(tableH) + .fill("") + .map((_, trIndex) => { + return `${new Array(tableW) + .fill("") + .map((_, tdIndex) => { + const startX = minX + tdIndex; + const startY = minY + trIndex; + const iIndex = selectedLayout.findIndex( + item => item.x === startX && item.y === startY + ); + if (iIndex !== -1) { + const { i, w, h } = selectedLayout[iIndex]; + // 记录占据的单元格位置 + for (let j = startX; j < startX + w; j++) { + for (let k = startY; k < startY + h; k++) { + filledArr.push(`${j}_${k}`); + } + } + + const title = viewRow[i]; + let value = viewRow[i.replace("sParam", "sParamDefault")]; + value = value === undefined ? "" : value; + return ``; + } else if (filledArr.includes(`${startX}_${startY}`)) { + return ""; + } else { + return ""; + } + }) + .join("")}`; + }) + .join("")}
${title}${value}
`; + + clipboardData.setData("text/plain", tableContent); + } + }; + + onOpenNewTab = () => { + const dom = document.getElementsByClassName( + `${this.state.randomId}-CommonListSelectTree` + )[0]; + dom.parentElement.parentElement.style.display = "none"; + this.setState({ + openNewTabFlag: true + }); + }; + handleToggle = () => { + const { expandView } = this.props; + this.props.onSaveState({ expandView: !expandView }); + }; + handleViewClick = (name, sName, sId) => { + this.props.onViewClick(name, sName, sId); + }; + /* 字段弹窗 */ + handleFieldPopupModal = (showConfig, name) => { + this.setState({ + commonFieldPopupVisible: true, + commonFieldPopupTbName: name, + commonFieldPopupShowConfig: showConfig + }); + }; + handleSelectCommonFieldPopup = (name, selectConfig, selectData) => { + const { commonFieldPopupTbName, commonFieldPopupShowConfig } = this.state; + this.props.onSelectCommonPopup( + name, + selectConfig, + selectData, + commonFieldPopupTbName, + commonFieldPopupShowConfig + ); + }; + handleSelectCancel = modelVisible => { + this.setState({ + [modelVisible]: false + }); + }; + + changeLayout(oldLayout, newLayout, cover) { + if (cover) { + const ret = []; + newLayout.forEach(item => { + const oldValue = oldLayout.find(item1 => item1.i === item.i); + ret.push({ + ...oldValue, + x: item.x, + y: item.y, + w: item.w, + h: item.h + }); + }); + return ret; + } else { + const ret = oldLayout.map(item => { + const newValue = newLayout.find(item1 => item1.i === item.i); + if (newValue) { + item = { + ...item, + x: newValue.x, + y: newValue.y, + w: newValue.w, + h: newValue.h + }; + } + return item; + }); + return ret; + } + } + + handleGetLayoutH = (layout, key, defaultH = 1) => { + const config = layout.find(item => item.i === key); + if (config && config.h) { + return config.h; + } else { + return defaultH; + } + }; + + handleGetPanel = (index = 0) => { + const num = index === 0 ? "" : index; + const sParamType = this.props[`tabPane${num}Config`].key; + const { + enabled = false, + app, + [`table${num}Name`]: tableName, + [`tabPane${num}Config`]: tabPaneConfig, + [`panel${num}Name`]: panelName, + [`view${num}Configs`]: configs, + [`view${num}Row`]: viewRow, + + [`b${sParamType}ParamTable`]: bParamTable, + [`${sParamType}ParamListConfig`]: paramListConfig, + [`${sParamType}ParamListColumn`]: paramListColumn, + [`${sParamType}ParamListData`]: paramListData + } = this.props; + + const tempLayoutName = `tempLayout${num}`; + const { [tempLayoutName]: layout } = this.state; + + const sTableName = `${sParamType}ParamList`; + const sTableConfig = `${sParamType}ParamListConfig`; + const sTableColumn = `${sParamType}ParamListColumn`; + const sTableData = `${sParamType}ParamListData`; + const key = "sParamColumnConfig1"; + const paramListTableProps = { + ...commonBusiness.getTableTypes(sTableName, { + ...this.props, + [sTableConfig]: paramListConfig, + [sTableColumn]: paramListColumn, + [sTableData]: paramListData + }), + tableProps: {} + // data: paramListData1, + }; + + const getAutoTableHeight = () => { + const oProcessTable = document.querySelector( + `#${this.props.processTableId}` + ); + if (oProcessTable) { + const oBody = oProcessTable.querySelector(".ant-table-body"); + if (oBody) { + return oBody.getBoundingClientRect().height; + } + } + return "auto"; + }; + + return ( + + {bParamTable && + configs.some(item => item.sName === "sParamColumnConfig1") ? ( +
+ +
+ ) : ( + { + if (enabled) { + const tempLayoutNew = this.changeLayout(layout, newLayout); + + this.props.onDataChange( + "slave", + panelName, + { [panelName]: JSON.stringify(tempLayoutNew) }, + this.props.slaveSelectedRowKeys[0], + [] + ); + this.setState({ + [tempLayoutName]: tempLayoutNew + }); + } + }} + onResize={(_, _1, _2, _3, _4, _5) => { + clearTimeout(this.resizeTimer); + this.resizeTimer = setTimeout(() => { + if (_5?.offsetParent) { + const oLabel = _5.offsetParent.querySelector( + ".ant-form-item-label" + ); + if (oLabel) { + oLabel.style.flex = + _3.w > 2 ? `0 0 ${(3 * 66) / _3.w}%` : "0 0 0"; + } + } + }, 200); + }} + isDroppable={enabled} + > + {bParamTable ? ( +
+ +
+ ) : ( + configs.map(child => { + const iRowNum = + child.iColValue === 1 + ? 6 + : 1; /* 1个字段占的网格个数 ,网格总个数是24 */ + const iColValue = sMemo + ? 24 + : child.iColValue * + iRowNum; /* 产品部要求 备注设置成一行到底 */ /* 跨度 */ + const sMemo = child.sName.toLowerCase().endsWith("memo"); + let enabledNew = + enabled && !child.bReadonly && !child.specialControl; + const sFormulaMemo = + child.sName.toString() === "sFormulaMemo" ? "none" : "block"; + if (child.iTag === 1) { + enabledNew = false; + } else if (child.iTag === 3) { + enabledNew = true; + } + + let w = 6; + let h = 1; + const iIndex = layout.findIndex(item => item.i === child.sName); + if (iIndex !== -1) { + w = layout[iIndex].w; + h = layout[iIndex].h; + } + const flexWidth = w > 2 ? (3 * 66) / w : 0; + const formItemLayout = { + labelCol: { + flex: flexWidth + "%", + style: { + color: "rgba(0, 0, 0, 0.65)", + backgroundColor: "#BFEFFF" + } + }, + wrapperCol: { flex: "auto" } + }; + + const showTypeProps = { + className: h > 1 ? "multiLine": "", + app, + iColValue, + name: tableName, + record: viewRow, + sId: viewRow.sId, + form: this.props.form, + getSqlDropDownData: this.props.getSqlDropDownData, + getSqlCondition: this.props.getSqlCondition, + handleSqlDropDownNewRecord: this.props + .handleSqlDropDownNewRecord, + getFloatNum: this.props.getFloatNum, + onChange: this.props.onDataChange, + showConfig: { ...child, placeholder: child.showName }, + formItemLayout, + textArea: sMemo, + enabled: enabledNew, + dataValue: viewRow[child.sName], + bTable: false, + bViewTable: false, + formRoute: this.props.formRoute, + onViewClick: this.handleViewClick, + onFieldDoubleClick: this.props.handleFieldDoubleClick + }; + /* 如果包含sParamColumnConfig 则渲染表格,否则渲染为View */ + if (child.sName && child.sName.includes("sParamColumnConfig")) { + const paramListConfigStr = child.showName; + const num = child.sName + .replace("sParamColumnConfig", "") + .trim(); /* 不同参数的表格名称,通过序号区分 */ + const sParamTableName = "param" + num + "List"; + const sParamTableConfig = "param" + num + "ListConfig"; + const sParamTableColumn = "param" + num + "ListColumn"; + const paramListConfig = commonUtils.isJSON(paramListConfigStr) + ? JSON.parse(paramListConfigStr) + : {}; + let paramListColumn = []; + if (commonUtils.isNotEmptyObject(paramListConfig)) { + paramListColumn = commonFunc.getHeaderConfig( + paramListConfig + ); + } + const paramListTableProps = { + ...commonBusiness.getTableTypes(sParamTableName, { + ...this.props, + [sParamTableConfig]: paramListConfig, + [sParamTableColumn]: paramListColumn + }), + tableProps: {} + // data: [], + }; + if (commonUtils.isEmptyObject(paramListTableProps.config)) { + paramListTableProps.config.gdsconfigformslave = []; + } + return ( +
+ +
+ ); + } else { + if ( + this.refIds[sParamType] && + !this.refIds[sParamType].includes(child.sName) + ) { + this.refIds[sParamType].push(child.sName); + } else { + this.refIds[sParamType] = [child.sName]; + } + + const showType = ( + + ); + + return ( +
+ {w === 1 ? ( + +
{showType}
+
+ ) : ( + showType + )} + +
+
+ ); + } + }) + )} + + )} + + ); + }; + + // 获取字段弹窗参数 + getCommonFieldPopupProps() { + /* 字段弹窗功能 */ + let commonFieldPopupProps = {}; + let commonFieldPopupTitle = "选择弹窗"; + if (commonUtils.isNotEmptyObject(this.props)) { + let commonFieldPopupConfig = {}; + const { masterConfig, sModelsId } = this.props; + if (commonUtils.isNotEmptyObject(masterConfig)) { + const iIndex = masterConfig.gdsconfigformslave.findIndex( + item => + commonUtils.isNotEmptyObject(item.sName) && + item.sDropDownType === "popup" + ); + if (iIndex > -1) { + commonFieldPopupConfig = masterConfig.gdsconfigformslave[iIndex]; + commonFieldPopupTitle = + commonUtils.isNotEmptyObject(commonFieldPopupConfig) && + commonUtils.isNotEmptyObject(commonFieldPopupConfig.sActiveName) + ? commonFieldPopupConfig.sActiveName + : commonFieldPopupTitle; + commonFieldPopupProps = { + app: { + ...this.props.app, + currentPane: { + name: "commonPopup", + config: commonFieldPopupConfig, + conditonValues: this.props.getSqlCondition( + commonFieldPopupConfig + ), + title: commonFieldPopupTitle, + route: "/indexPage/commonList", + formRoute: "/indexPage/commonList", + formId: commonFieldPopupConfig.sActiveId, + key: sModelsId + commonFieldPopupConfig.sId, + sModelsType: "search/commonPopup", + select: this.handleSelectCommonFieldPopup, + selectCancel: this.handleSelectCancel.bind( + this, + "commonFieldPopupVisible" + ) + } + }, + commonFieldPopupTitle, + dispatch: this.props.dispatch, + content: this.props.content, + id: randomId, + onOpenNewTab: this.onOpenNewTab, + outerMasterData: this.props.masterData, + realizeHeight: this.props.realizeHeight /* 拖动偏移高度 */ + }; + } + } + } + + return commonFieldPopupProps; + } + + render() { + const { iColValueView, enabled = false } = this.props; + const { + commonFieldPopupVisible, + maskVisible, + randomId, + activeKey + } = this.state; + + let viewRowGroup = {}; + for (let index = 0; index < this.maxTabCount; index++) { + const i = index === 0 ? "" : index; + viewRowGroup = { ...viewRowGroup, ...this.props[`view${i}Row`] }; + } + + const commonFieldPopupProps = this.getCommonFieldPopupProps(); + + return commonUtils.isNotEmptyObject(viewRowGroup) ? ( + { + this.layoutRef = ref; + }} + > + { + // 获取当前tab页布局 + let activeIndex = 0; + for (let index = 0; index < this.maxTabCount; index++) { + const i = index === 0 ? "" : index; + const tabPaneConfig = this.props[`tabPane${i}Config`]; + if ( + commonUtils.isNotEmptyObject(tabPaneConfig) && + tabPaneConfig.key === key + ) { + activeIndex = tabPaneConfig.i === "" ? 0 : tabPaneConfig.i; + break; + } + } + this.setState({ + activeKey: key, + activeIndex + }); + }} + > + {new Array(this.maxTabCount).fill("").map((_, index) => { + const i = index === 0 ? "" : index; + const viewRow = this.props[`view${i}Row`]; + if (commonUtils.isNotEmptyObject(viewRow)) { + return this.handleGetPanel(index); + } else { + return ""; + } + })} + + {commonFieldPopupVisible ? ( + + + + ) : ( + "" + )} +
+
+
{ + this.selectAreaRef = ref; + }} + /> +
+
+ + ) : ( + "" + ); + } +} diff --git a/src/components/Common/CommonViewDrag/index.less b/src/components/Common/CommonViewDrag/index.less new file mode 100644 index 0000000..00899ba --- /dev/null +++ b/src/components/Common/CommonViewDrag/index.less @@ -0,0 +1,349 @@ +.editModeStyle { + :global { + + .react-resizable { + position: relative; + } + + .react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + background-repeat: no-repeat; + background-origin: content-box; + box-sizing: border-box; + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+'); + background-position: bottom right; + padding: 0 3px 3px 0; + } + + .react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); + } + + .react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; + } + + .react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); + } + + .react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); + } + + .react-resizable-handle-w, + .react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; + } + + .react-resizable-handle-w { + left: 0; + transform: rotate(135deg); + } + + .react-resizable-handle-e { + right: 0; + transform: rotate(315deg); + } + + .react-resizable-handle-n, + .react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; + } + + .react-resizable-handle-n { + top: 0; + transform: rotate(225deg); + } + + .react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); + } + + .react-grid-layout { + position: relative; + transition: height 200ms ease; + } + + .react-grid-item { + transition: all 200ms ease; + transition-property: left, top; + } + + .react-grid-item img { + pointer-events: none; + user-select: none; + } + + .react-grid-item.cssTransforms { + transition-property: transform; + } + + .react-grid-item.resizing { + z-index: 1; + will-change: width, height; + } + + .react-grid-item.react-draggable-dragging { + transition: none; + z-index: 3; + will-change: transform; + } + + .react-grid-item.dropping { + visibility: hidden; + } + + .react-grid-item.react-grid-placeholder { + background: red; + opacity: 0.2; + transition-duration: 100ms; + z-index: 2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + } + + .react-grid-item>.react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + } + + .react-grid-item>.react-resizable-handle::after { + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 5px; + height: 5px; + border-right: 2px solid rgba(0, 0, 0, 0.4); + border-bottom: 2px solid rgba(0, 0, 0, 0.4); + } + + .react-resizable-hide>.react-resizable-handle { + display: none; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-w, + .react-grid-item>.react-resizable-handle.react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-w { + left: 0; + transform: rotate(135deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-e { + right: 0; + transform: rotate(315deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-n, + .react-grid-item>.react-resizable-handle.react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-n { + top: 0; + transform: rotate(225deg); + } + + .react-grid-item>.react-resizable-handle.react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); + } + } +} + +.commonLayout { + width: 100%; + height: 100%; + + :global { + div[class*='formItemMargin'] { + margin-bottom: 0 !important; + } + } + + + .editMode { + border: 1px solid black; + + .dragout { + width: 15px; + height: 100%; + background: rgba(95, 95, 95, 0.7); + position: absolute; + top: 0; + left: 0; + } + + .closePanel { + width: 15px; + height: 15px; + position: absolute; + top: 0; + right: 0; + cursor: pointer; + } + } + + .dropdownPlus { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } + + :global { + + + .blankPanel { + background: #efefef; + min-height: 100%; + overflow-x: hidden; + } + + .ant-tabs-top>.ant-tabs-nav { + margin: 0; + min-height: 30px; + + .ant-tabs-tab { + border-right: 1px solid #d9d9d9 !important; + } + } + + .speacialNote { + position: absolute; + left: 32%; + top: 5px; + font-size: 12px; + color: #000 !important; + } + + .selected-tab { + background: rgb(251, 214, 211) !important; + } + } + + .hideTab { + :global { + .ant-tabs-nav { + display: none; + } + } + } +} + +.tabPane { + position: relative; + width: 100%; + height: calc(100vh - 155px); + overflow: auto; + overflow-x: hidden; +} + +.showType { + :global { + *:not(.ant-select-arrow):not(.sActiveIdStyle_viewChooseSpan) { + height: 100% !important; + } + input[type="search"][disabled]{ + background: transparent!important; + } + .ant-form-item-control { + min-width: 0; + } + .multiLine { + .ant-form-item-label { + label { + white-space: wrap; + } + } + } + } +} + +.divChecked { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(65, 173, 250, 0.3); +} + +.mask { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99999; + :global { + .maskContent { + position: relative; + width: 100%; + height: 100%; + .maskSelectArea { + position: absolute; + border: 1px solid rgb(97, 97, 97); + background: rgba(97, 97, 97, 0.1); + } + } + } +} \ No newline at end of file diff --git a/src/components/Common/CommonViewFlex/index.js b/src/components/Common/CommonViewFlex/index.js index 1891d77..473ed28 100644 --- a/src/components/Common/CommonViewFlex/index.js +++ b/src/components/Common/CommonViewFlex/index.js @@ -1,7 +1,7 @@ /* eslint-disable object-curly-newline,prefer-destructuring */ import React, { Component } from 'react'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Form } from 'antd'; +import { Row, Col, Form } from 'antd-v4'; import ShowType from '@/components/Common/CommonComponent'; import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; diff --git a/src/components/Common/CommonViewNew.js b/src/components/Common/CommonViewNew.js index ca4f166..3afd13b 100644 --- a/src/components/Common/CommonViewNew.js +++ b/src/components/Common/CommonViewNew.js @@ -6,7 +6,7 @@ import React, { Component } from 'react'; import { UploadOutlined } from '@ant-design/icons'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Button, Upload } from 'antd'; +import { Row, Col, Button, Upload } from 'antd-v4'; import config from '@/utils/config'; import * as commonUtils from '@/utils/utils';/* 通用方法 */ import ShowType from './CommonComponent'; diff --git a/src/components/Common/CommonViewTable/index.js b/src/components/Common/CommonViewTable/index.js index 2713889..26de3c3 100644 --- a/src/components/Common/CommonViewTable/index.js +++ b/src/components/Common/CommonViewTable/index.js @@ -2,7 +2,7 @@ /* eslint-disable object-curly-newline,prefer-destructuring */ import React, { Component } from 'react'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Divider, Tooltip } from 'antd'; +import { Row, Col, Divider, Tooltip } from 'antd-v4'; import ShowType from '@/components/Common/CommonComponent'; import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; diff --git a/src/components/Common/ContextMenuModal.js b/src/components/Common/ContextMenuModal.js index fb7def7..21be754 100644 --- a/src/components/Common/ContextMenuModal.js +++ b/src/components/Common/ContextMenuModal.js @@ -5,7 +5,7 @@ import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; -import { Row, Col, Radio } from 'antd'; +import { Row, Col, Radio } from 'antd-v4'; import * as commonUtils from '../../utils/utils'; import ShowType from './CommonComponent';/* 通用方法 */ import AntdDraggableModal from '../Common/AntdDraggableModal'; diff --git a/src/components/Common/Feedback/Feedback.js b/src/components/Common/Feedback/Feedback.js new file mode 100644 index 0000000..1e16c0d --- /dev/null +++ b/src/components/Common/Feedback/Feedback.js @@ -0,0 +1,245 @@ +/* eslint-disable */ +import React, { useEffect, useRef, useState } from "react"; +import { Button, Badge } from "antd-v4"; +import { MessageOutlined } from "@ant-design/icons"; +import Draggable from "react-draggable"; +import styles from "./index.less"; + +const _this = {}; + +const Feedback = props => { + const { app } = props; + const { userinfo } = app; + const [showState, setShowState] = useState(false); + const iframeRef = useRef(null); + const [unReadCount, setUnReadCount] = useState(0); + const [unReadCountColor, setUnReadCountColor] = useState(0); + const iframeId = useRef( + Math.random() + .toString(36) + .substring(2) + ); + useEffect(() => { + const recMessage = e => { + if (e && e.data) { + const { payload, action, iCount, color } = e.data; + if (payload === "commonFeedback") { + switch (action) { + case "closeModal": + setTimeout(() => { + setShowState(false); + }, 500); + break; + case "unReadCountChange": + setUnReadCount(iCount); + setUnReadCountColor(color); + break; + default: + break; + } + } + } + }; + window.addEventListener("message", recMessage); + return () => { + window.removeEventListener("message", recMessage); + }; + }, []); + + const sendMessage = () => { + setShowState(true); + iframeRef.current.contentWindow.postMessage( + { + payload: "commonFeedback", + action: "openModal", + currentPane: JSON.parse(localStorage.getItem("xlybusinesscurrentPane")), + app: { userinfo } + }, + "*" + ); + }; + + // 设置按钮活动范围 + const [positionOffset, setPositionOffset] = useState({ x: 0, y: -200 }); + const [tempClient, setTempClient] = useState([0, 0]); + const [bounds, setBounds] = useState(null); + const btnRef = useRef(null); + const [showBtn, setShowBtn] = useState(true); // 按钮是否显示 + useEffect(() => { + const handleResize = () => { + setShowBtn(false); + const btnWith = 32; + const btnHeight = 32; + const feedbackBtnRecord = + sessionStorage.getItem("feedbackBtnRecord") || "0,0"; + const diffX = Number(feedbackBtnRecord.split(",")[0]); + const diffY = Number(feedbackBtnRecord.split(",")[1]); + let newX = positionOffset.x + diffX; + let newY = positionOffset.y + diffY; + newX = Math.max(-window.innerWidth + btnWith, newX); + newX = Math.min(newX, 0); + newY = Math.max(-window.innerHeight + btnHeight + 53, newY); + newY = Math.min(newY, 0); + sessionStorage.setItem( + "feedbackBtnRecord", + `${newX - positionOffset.x},${newY - positionOffset.y}` + ); + const positionOffsetNew = { + x: newX, + y: newY + }; + setPositionOffset(positionOffsetNew); + const { x: offsetX, y: offsetY } = positionOffsetNew; + setBounds({ + top: -(window.innerHeight + offsetY - 53 - btnHeight), // 按钮上方可移动范围 + left: -(window.innerWidth + offsetX - btnWith), // 按钮左边可移动用范围 + right: -offsetX, // 按钮右边可移动用范围 + bottom: -offsetY // 按钮下边可移动范围 + }); + setTimeout(() => { + setShowBtn(true); + hideEdgeBtn(); + }, 100); + }; + handleResize(); + window.addEventListener("resize", handleResize); + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + // 记录按钮位置 + const recordBtnPostion = (diffX, diffY) => { + const feedbackBtnRecord = sessionStorage.getItem("feedbackBtnRecord"); + let feedbackBtnRecordNew = `${diffX},${diffY}`; + if (feedbackBtnRecord) { + feedbackBtnRecordNew = `${Number(feedbackBtnRecord.split(",")[0]) + + diffX},${Number(feedbackBtnRecord.split(",")[1]) + diffY}`; + } + sessionStorage.setItem("feedbackBtnRecord", feedbackBtnRecordNew); + }; + + // 隐藏边缘按钮 + const timer = useRef(null); + const [badgeClass, setBadgeClass] = useState(null); + const hideEdgeBtn = () => { + if (_this.draging) { + return; + } + const feedbackBtnRecord = + sessionStorage.getItem("feedbackBtnRecord") || "0,0"; + const diffX = Number(feedbackBtnRecord.split(",")[0]); + const diffY = Number(feedbackBtnRecord.split(",")[1]); + + clearTimeout(timer.current); + timer.current = null; + if (Math.abs(diffX) < 1) { + setTimeout(() => { + // document.querySelector("html").style.overflowX = "hidden"; + setBadgeClass(styles.hideBtnToRight); + }, 1500); + } else if (window.innerWidth - Math.abs(diffX) - 32 < 1) { + setTimeout(() => { + // document.querySelector("html").style.overflowX = "hidden"; + setBadgeClass(styles.hideBtnToLeft); + }, 1500); + } else if (Math.abs(diffY - 200) < 1) { + setTimeout(() => { + // document.querySelector("html").style.overflowY = "hidden"; + setBadgeClass(styles.hideBtnToBottom); + }, 1500); + } + }; + + return ( + <> +
+ {showBtn && ( + { + const { x, y } = btnRef.current.getBoundingClientRect(); + setTempClient([x, y]); + }} + onDrag={() => { + _this.draging = true; + clearTimeout(timer.current); + timer.current = null; + setBadgeClass(""); + }} + onStop={() => { + _this.draging = false; + const { x, y } = btnRef.current.getBoundingClientRect(); + const diffX = x - tempClient[0]; + const diffY = y - tempClient[1]; + recordBtnPostion(diffX, diffY); + hideEdgeBtn(); + if (Math.abs(diffX) <= 2 && Math.abs(diffY) <= 2) { + sendMessage(); + } + }} + > +
+ { + clearTimeout(timer.current); + timer.current = null; + setBadgeClass(""); + // document.querySelector("html").style.overflowX = "auto"; + // document.querySelector("html").style.overflowY = "auto"; + }} + onMouseLeave={() => { + hideEdgeBtn(); + }} + > + + +
+
+ )} +
+
+