From d631f64ffd58d871c5f4eba9810336d0969445c3 Mon Sep 17 00:00:00 2001 From: 陈鑫涛 <10125295+chen-xintao97@user.noreply.gitee.com> Date: Thu, 20 Mar 2025 17:04:16 +0800 Subject: [PATCH] 新增页面 --- .umirc.ts | 31 ++++++++++++++++++++++++++++++- package.json | 5 +++++ src/components/Charts/Bar/index.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/BrokenLine/index.js | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/ColorBlock/index.js | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/Columnar/index.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/ColumnarGroup/index.js | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/ColumnarStack/index.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/EqualColumnarStack/index.js | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/Gantt/Gantt.css | 3 +++ src/components/Charts/Gantt/MessageArea/Message.js | 24 ++++++++++++++++++++++++ src/components/Charts/Gantt/MessageArea/MessageArea.css | 18 ++++++++++++++++++ src/components/Charts/Gantt/MessageArea/index.js | 4 ++++ src/components/Charts/Gantt/index.js | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/Gauge/index.js | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/Pie/index.js | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/Pie/index.less | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/PieGroup/index.js | 31 +++++++++++++++++++++++++++++++ src/components/Charts/TimeLineGroup/index.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/TimelineChart/index.js | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/TimelineChart/index.less | 3 +++ src/components/Charts/WaterWave/index.js | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Charts/WaterWave/index.less | 29 +++++++++++++++++++++++++++++ src/components/Charts/equal.js | 17 +++++++++++++++++ src/components/Charts/index.js | 33 +++++++++++++++++++++++++++++++++ src/components/Charts/index.less | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonCheckBill/index.css | 14 ++++++++++++++ src/components/Common/CommonCheckBill/index.js | 2187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonCheckBill/index.less | 16 ++++++++++++++++ src/components/Common/CommonCheckBillEvent.js | 5606 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonColumnList.js | 275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListA.js | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListEvent.js | 2 +- src/components/Common/CommonListLeft/index.js | 500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListLeft/index.less | 241 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListSelectAssignment.js | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListSelectMulti/index.js | 1009 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListSelectMulti/index.less | 19 +++++++++++++++++++ src/components/Common/CommonListSelectProductMaterial.js | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListTab/index.js | 1317 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListTab/index.less | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListTabEvent.js | 3237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonListTree/index.js | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonPartsInfo/index.js | 380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonPartsInfo/index.less | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonSystemSettingEvent.js | 304 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonTableNew/index.css | 4 ++++ src/components/Common/CommonTableNew/index.less | 4 ++-- src/components/Common/CommonTableNew/index.tsx | 25 ++++++++++++++++++++----- src/components/Common/CommonViewFlex/index.js | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/CommonViewFlex/index.less | 0 src/components/Common/Flows/CommonFlow.js | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Flows/OverviewFlow.js | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Flows/flows.less | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Flows/initial-elements-X.js | 478 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Flows/initial-elements-Y.js | 420 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Gatte/CommonGatte.js | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/Gatte/index.less | 13 +++++++++++++ src/components/Common/MaterialRequirementsPlanning.js | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/SearchComponent/index.js | 6 +++--- src/components/Common/SlavesInfo.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Common/baseChar.js | 310 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonElementEvent/StatementInfo.js | 2 +- src/components/CommonSystemSettingEvent/CommonSystemSetting.js | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/TabFinanceOffer.js | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/TabFinancePeriod.js | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/TabSalesBuyer.js | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/TabSysParam.js | 271 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/TabSysParamsIcon.js | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/CommonSystemSettingEvent/index.less | 5 +++++ src/components/Manufacture/CommonPackEvent.js | 1790 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/ProcessCard/ProcessCard.js | 3658 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/ProcessCardPack/ProcessCardPack.js | 5826 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/ProcessCardPack/ProcessCardPackTableTree.js | 8966 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/ProcessCardPackTableTreeNew/index.js | 4170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/ProcessCardPackTableTreeNew/index.less | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/SplitPaste.less | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrder/SplitPaste.js | 441 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrder/WorkOrder.js | 4520 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrderPack/WorkOrderPack.js | 6855 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrderPack/WorkOrderPackTableTree.js | 9501 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrderPack/WorkOrderResearchTableTree.js | 8986 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrderPackTableTreeNew/index.js | 4695 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/WorkOrderPackTableTreeNew/index.less | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/Manufacture/index.less | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/NumberInfo/index.js | 34 ++++++++++++++++++++++++++++++++++ src/components/NumberInfo/index.less | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/index.less | 2 +- src/routes/basicInfoSetting/checkModel/checkModel.js | 32 ++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/checkPhase/checkPhase.js | 32 ++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/commonStyle/commonStyle.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/customerInfo/customerInfo.js | 32 ++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/employee/employee.js | 32 ++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/materiel/materiel.js | 37 +++++++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/printInfo/printInfo.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/processInfo/processInfo.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/productClassify/productClassify.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/sftLoginInfo/sftLoginInfo.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/supplyInfo/supplyInfo.js | 32 ++++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/systemSetting/systemSetting.js | 31 +++++++++++++++++++++++++++++++ src/routes/basicInfoSetting/teststandInfo/teststandInfo.js | 32 ++++++++++++++++++++++++++++++++ src/routes/common/commonCheckBill.js | 23 +++++++++++++++++++++++ src/routes/commonColumnList/commonColumnList.js | 24 ++++++++++++++++++++++++ src/routes/commonGatte/commonGatte.js | 24 ++++++++++++++++++++++++ src/routes/commonList/commonListA.js | 2 +- src/routes/commonList/commonListLeft.js | 2 +- src/routes/commonList/commonListTab.js | 5 ++--- src/routes/commonListTree/commonListTree.js | 23 +++++++++++++++++++++++ src/routes/manufacture/processCard/processCardInfo.js | 23 +++++++++++++++++++++++ src/routes/manufacture/processCardPack/processCardInfoPack.js | 23 +++++++++++++++++++++++ src/routes/manufacture/processCardPackTableTree/processCardPackTableTree.js | 22 ++++++++++++++++++++++ src/routes/manufacture/processCardPackTableTreeNew/processCardPackTableTreeNew.js | 21 +++++++++++++++++++++ src/routes/manufacture/workOrder/workOrder.js | 23 +++++++++++++++++++++++ src/routes/manufacture/workOrderPack/workOrderPack.js | 23 +++++++++++++++++++++++ src/routes/manufacture/workOrderPackTableTree/workOrderPackTableTree.js | 23 +++++++++++++++++++++++ src/routes/manufacture/workOrderResearchTableTree/workOrderResearchTableTree.js | 23 +++++++++++++++++++++++ src/routes/materialRequirementsPlanning/materialRequirementsPlanning.js | 23 +++++++++++++++++++++++ src/routes/tab/tab.js | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 118 files changed, 82996 insertions(+), 20 deletions(-) create mode 100644 src/components/Charts/Bar/index.js create mode 100644 src/components/Charts/BrokenLine/index.js create mode 100644 src/components/Charts/ColorBlock/index.js create mode 100644 src/components/Charts/Columnar/index.js create mode 100644 src/components/Charts/ColumnarGroup/index.js create mode 100644 src/components/Charts/ColumnarStack/index.js create mode 100644 src/components/Charts/EqualColumnarStack/index.js create mode 100644 src/components/Charts/Gantt/Gantt.css create mode 100644 src/components/Charts/Gantt/MessageArea/Message.js create mode 100644 src/components/Charts/Gantt/MessageArea/MessageArea.css create mode 100644 src/components/Charts/Gantt/MessageArea/index.js create mode 100644 src/components/Charts/Gantt/index.js create mode 100644 src/components/Charts/Gauge/index.js create mode 100644 src/components/Charts/Pie/index.js create mode 100644 src/components/Charts/Pie/index.less create mode 100644 src/components/Charts/PieGroup/index.js create mode 100644 src/components/Charts/TimeLineGroup/index.js create mode 100644 src/components/Charts/TimelineChart/index.js create mode 100644 src/components/Charts/TimelineChart/index.less create mode 100644 src/components/Charts/WaterWave/index.js create mode 100644 src/components/Charts/WaterWave/index.less create mode 100644 src/components/Charts/equal.js create mode 100644 src/components/Charts/index.js create mode 100644 src/components/Charts/index.less create mode 100644 src/components/Common/CommonCheckBill/index.css create mode 100644 src/components/Common/CommonCheckBill/index.js create mode 100644 src/components/Common/CommonCheckBill/index.less create mode 100644 src/components/Common/CommonCheckBillEvent.js create mode 100644 src/components/Common/CommonColumnList.js create mode 100644 src/components/Common/CommonListA.js create mode 100644 src/components/Common/CommonListLeft/index.js create mode 100644 src/components/Common/CommonListLeft/index.less create mode 100644 src/components/Common/CommonListSelectAssignment.js create mode 100644 src/components/Common/CommonListSelectMulti/index.js create mode 100644 src/components/Common/CommonListSelectMulti/index.less create mode 100644 src/components/Common/CommonListSelectProductMaterial.js create mode 100644 src/components/Common/CommonListTab/index.js create mode 100644 src/components/Common/CommonListTab/index.less create mode 100644 src/components/Common/CommonListTabEvent.js create mode 100644 src/components/Common/CommonListTree/index.js create mode 100644 src/components/Common/CommonPartsInfo/index.js create mode 100644 src/components/Common/CommonPartsInfo/index.less create mode 100644 src/components/Common/CommonSystemSettingEvent.js create mode 100644 src/components/Common/CommonTableNew/index.css create mode 100644 src/components/Common/CommonViewFlex/index.js create mode 100644 src/components/Common/CommonViewFlex/index.less create mode 100644 src/components/Common/Flows/CommonFlow.js create mode 100644 src/components/Common/Flows/OverviewFlow.js create mode 100644 src/components/Common/Flows/flows.less create mode 100644 src/components/Common/Flows/initial-elements-X.js create mode 100644 src/components/Common/Flows/initial-elements-Y.js create mode 100644 src/components/Common/Gatte/CommonGatte.js create mode 100644 src/components/Common/Gatte/index.less create mode 100644 src/components/Common/MaterialRequirementsPlanning.js create mode 100644 src/components/Common/SlavesInfo.js create mode 100644 src/components/Common/baseChar.js create mode 100644 src/components/CommonSystemSettingEvent/CommonSystemSetting.js create mode 100644 src/components/CommonSystemSettingEvent/TabFinanceOffer.js create mode 100644 src/components/CommonSystemSettingEvent/TabFinancePeriod.js create mode 100644 src/components/CommonSystemSettingEvent/TabSalesBuyer.js create mode 100644 src/components/CommonSystemSettingEvent/TabSysParam.js create mode 100644 src/components/CommonSystemSettingEvent/TabSysParamsIcon.js create mode 100644 src/components/CommonSystemSettingEvent/index.less create mode 100644 src/components/Manufacture/CommonPackEvent.js create mode 100644 src/components/Manufacture/ProcessCard/ProcessCard.js create mode 100644 src/components/Manufacture/ProcessCardPack/ProcessCardPack.js create mode 100644 src/components/Manufacture/ProcessCardPack/ProcessCardPackTableTree.js create mode 100644 src/components/Manufacture/ProcessCardPackTableTreeNew/index.js create mode 100644 src/components/Manufacture/ProcessCardPackTableTreeNew/index.less create mode 100644 src/components/Manufacture/SplitPaste.less create mode 100644 src/components/Manufacture/WorkOrder/SplitPaste.js create mode 100644 src/components/Manufacture/WorkOrder/WorkOrder.js create mode 100644 src/components/Manufacture/WorkOrderPack/WorkOrderPack.js create mode 100644 src/components/Manufacture/WorkOrderPack/WorkOrderPackTableTree.js create mode 100644 src/components/Manufacture/WorkOrderPack/WorkOrderResearchTableTree.js create mode 100644 src/components/Manufacture/WorkOrderPackTableTreeNew/index.js create mode 100644 src/components/Manufacture/WorkOrderPackTableTreeNew/index.less create mode 100644 src/components/Manufacture/index.less create mode 100644 src/components/NumberInfo/index.js create mode 100644 src/components/NumberInfo/index.less create mode 100644 src/routes/basicInfoSetting/checkModel/checkModel.js create mode 100644 src/routes/basicInfoSetting/checkPhase/checkPhase.js create mode 100644 src/routes/basicInfoSetting/commonStyle/commonStyle.js create mode 100644 src/routes/basicInfoSetting/customerInfo/customerInfo.js create mode 100644 src/routes/basicInfoSetting/employee/employee.js create mode 100644 src/routes/basicInfoSetting/materiel/materiel.js create mode 100644 src/routes/basicInfoSetting/printInfo/printInfo.js create mode 100644 src/routes/basicInfoSetting/processInfo/processInfo.js create mode 100644 src/routes/basicInfoSetting/productClassify/productClassify.js create mode 100644 src/routes/basicInfoSetting/sftLoginInfo/sftLoginInfo.js create mode 100644 src/routes/basicInfoSetting/supplyInfo/supplyInfo.js create mode 100644 src/routes/basicInfoSetting/systemSetting/systemSetting.js create mode 100644 src/routes/basicInfoSetting/teststandInfo/teststandInfo.js create mode 100644 src/routes/common/commonCheckBill.js create mode 100644 src/routes/commonColumnList/commonColumnList.js create mode 100644 src/routes/commonGatte/commonGatte.js create mode 100644 src/routes/commonListTree/commonListTree.js create mode 100644 src/routes/manufacture/processCard/processCardInfo.js create mode 100644 src/routes/manufacture/processCardPack/processCardInfoPack.js create mode 100644 src/routes/manufacture/processCardPackTableTree/processCardPackTableTree.js create mode 100644 src/routes/manufacture/processCardPackTableTreeNew/processCardPackTableTreeNew.js create mode 100644 src/routes/manufacture/workOrder/workOrder.js create mode 100644 src/routes/manufacture/workOrderPack/workOrderPack.js create mode 100644 src/routes/manufacture/workOrderPackTableTree/workOrderPackTableTree.js create mode 100644 src/routes/manufacture/workOrderResearchTableTree/workOrderResearchTableTree.js create mode 100644 src/routes/materialRequirementsPlanning/materialRequirementsPlanning.js diff --git a/.umirc.ts b/.umirc.ts index e16ca53..892a464 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -9,11 +9,40 @@ export default defineConfig({ component: '@/routes/indexPage', routes: [ { path: '/indexPage/CommonList' }, + { path: '/indexPage/CommonListA' }, { path: '/indexPage/CommonNewBill' }, { path: '/indexPage/CommonBill' }, { path: '/indexPage/CommonListEdit' }, { path: '/indexPage/CommonClassify' }, - { path: '/indexPage/eleknifemould'} + { path: '/indexPage/eleknifemould'}, + { path: '/indexPage/elecustomer'}, + { path: '/indexPage/CommonListTab'}, + { path: '/indexPage/commonColumnList'}, + { path: '/indexPage/commonListTree'}, + { path: '/indexPage/commonListLeft'}, + { path: '/indexPage/commonGatte'}, + { path: '/indexPage/materialRequirementsPlanning'}, + { path: '/indexPage/eleteststand'}, + { path: '/indexPage/eleemployee'}, + { path: '/indexPage/elematerials'}, + { path: '/indexPage/eleproduct'}, + { path: '/indexPage/syssystemsettings'}, + { path: '/indexPage/elesupply'}, + { path: '/indexPage/eleprocess'}, + { path: '/indexPage/elecheckmodel'}, + { path: '/indexPage/sischeckphase'}, + { path: '/indexPage/sftlogininfo'}, + { path: '/indexPage/siscommonstyle'}, + { path: '/indexPage/sisproductclassify'}, + { path: '/indexPage/commonCheckBill'}, + { path: '/indexPage/workOrderNew'}, + { path: '/indexPage/workOrderPack'}, + { path: '/indexPage/workOrderPackTableTree'}, + { path: '/indexPage/workOrderResearchTableTree'}, + { path: '/indexPage/processCard'}, + { path: '/indexPage/processCardPack'}, + { path: '/indexPage/processCardPackTableTree'}, + { path: '/indexPage/processCardPackTableTreeNew'}, ], }, ], diff --git a/package.json b/package.json index 8b8705d..c2a14a0 100644 --- a/package.json +++ b/package.json @@ -11,22 +11,27 @@ "dependencies": { "@ant-design/compatible": "^1.1.2", "@ant-design/icons": "^5.6.1", + "@antv/g2": "^5.2.12", "@js-preview/docx": "^1.6.4", "@js-preview/excel": "^1.7.14", "antd": "^5.24.3", "antd-mobile": "2.3.4", "antd-v4": "npm:antd@4.24.16", "braft-editor": "^2.3.9", + "dhtmlx-gantt": "^9.0.6", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", + "lodash-decorators": "^6.0.1", "moment": "^2.30.1", "react-dnd": "^14.0.5", "react-dnd-html5-backend": "^14.1.0", + "react-flow-renderer": "^10.3.17", "react-grid-layout": "^1.5.1", "react-highlight-words": "^0.21.0", "react-pdf": "^9.2.1", "react-resizable": "^3.0.5", "react-sortable-hoc": "^2.0.0", + "react-to-print": "^3.0.5", "umi": "^4.4.6" }, "devDependencies": { diff --git a/src/components/Charts/Bar/index.js b/src/components/Charts/Bar/index.js new file mode 100644 index 0000000..700bb3c --- /dev/null +++ b/src/components/Charts/Bar/index.js @@ -0,0 +1,103 @@ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class Bar extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + if (this.node.offsetWidth === 0) { + return; + } + const { + xUnit = '', yUnit = '', height, style, + } = this.props; + const textMyStyle = {}; + if (style !== undefined) { + if (style.color !== undefined) { + textMyStyle.fill = style.color; + } + } + if (!data || (data && data.length < 1)) return; + // clean + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, /* 图标自适应 */ + height, + padding: 'auto', + }); + chart.axis('x', { + label: { + formatter: (val) => { + return `${val}${xUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.axis('y', { + label: { + formatter: (val) => { + return `${val}${yUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.data(data); + chart.tooltip({ + showTitle: false, + }); + chart.coord().transpose(); + chart.interval().position('y*x').tooltip('y*x', (name, value) => { + return { + name: `${name}${xUnit}`, + value: `${value}${yUnit}`, + }; + }); + chart.render(); + this.chart = chart; + } + + render() { + return ( +
+ ); + } +} + +export default Bar; diff --git a/src/components/Charts/BrokenLine/index.js b/src/components/Charts/BrokenLine/index.js new file mode 100644 index 0000000..3ed8069 --- /dev/null +++ b/src/components/Charts/BrokenLine/index.js @@ -0,0 +1,121 @@ +/* eslint-disable no-undef */ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class BrokenLine extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + if (this.node.offsetWidth === 0) { + return; + } + const { + xUnit = '', yUnit = '', height, style, + } = this.props; + const textMyStyle = {}; + if (style !== undefined) { + if (style.color !== undefined) { + textMyStyle.fill = style.color; + } + } + if (!data || (data && data.length < 1)) return; + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, /* 图标自适应 */ + height, + padding: 'auto', + }); + chart.axis('x', { + label: { + formatter: (val) => { + return `${val}${xUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.axis('y', { + label: { + formatter: (val) => { + return `${val}${yUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.option('slider', { + start: 0.9, + end: 1, + trendCfg: { + isArea: false, + }, + }); + chart.data(data); + chart.tooltip({ + showCrosshairs: true, + shared: true, + }); + chart.line().position('x*y').color('type').tooltip('x*y*type', (name, value, type) => { + return { + title: `${name}${xUnit}`, + name: type, + value: `${value}${yUnit}`, + }; + }); + chart + .point() + .position('x*y') + .color('type') + .size(4) + .shape('circle') + .style({ stroke: '#fff', lineWidth: 1 }); + chart.render(); + this.chart = chart; + } + + render() { + const { height } = this.props; + return ( +
+
+
+ ); + } +} + +export default BrokenLine; diff --git a/src/components/Charts/ColorBlock/index.js b/src/components/Charts/ColorBlock/index.js new file mode 100644 index 0000000..14e4945 --- /dev/null +++ b/src/components/Charts/ColorBlock/index.js @@ -0,0 +1,147 @@ +/* eslint-disable no-undef */ +import React, { PureComponent } from 'react'; + +// import G2 from '@antv/g2/build/g2'; +import { Chart } from '@antv/g2'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class ColorBlock extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + if (this.node.offsetWidth === 0) { + return; + } + if (this.chart) { + this.chart.destroy(); + } + + this.node.innerHTML = ''; + const { day, sMachines, height } = this.props; + + const source = data.map((arr) => { + return { + xValue: arr[0], + yValue: arr[1], + value: arr[2], + }; + }); + + const chart = new Chart({ + container: this.node, + autoFit: true, + height, + }); + + chart.data(source); + + chart.scale('xValue', { + type: 'cat', + values: day, + }); + chart.scale('yValue', { + type: 'cat', + values: sMachines, + }); + chart.scale('value', { + nice: true, + }); + + chart.axis('xValue', { + tickLine: null, + grid: { + alignTick: false, + line: { + style: { + lineWidth: 1, + lineDash: null, + stroke: '#f0f0f0', + }, + }, + }, + }); + + chart.axis('yValue', { + title: null, + grid: { + alignTick: false, + line: { + style: { + lineWidth: 1, + lineDash: null, + stroke: '#f0f0f0', + }, + }, + }, + }); + + chart.tooltip({ + showMarkers: false, + }); + + chart + .polygon() + .position('xValue*yValue') + .color('value', '#f6ffed-#389e0d-#135200') + .label('value', { + offset: -2, + style: { + fill: '#fff', + shadowBlur: 2, + shadowColor: 'rgba(0, 0, 0, .45)', + }, + }) + .style({ + lineWidth: 1, + stroke: '#fff', + }); + + chart.interaction('element-active'); + + chart.render(); + this.chart = chart; + } + + render() { + const { height } = this.props; + return ( +
+
+
+ ); + } +} + +export default ColorBlock; diff --git a/src/components/Charts/Columnar/index.js b/src/components/Charts/Columnar/index.js new file mode 100644 index 0000000..11edd81 --- /dev/null +++ b/src/components/Charts/Columnar/index.js @@ -0,0 +1,103 @@ +/* eslint-disable no-undef */ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class Columnar extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + const { + xUnit = '', yUnit = '', height, style, + } = this.props; + const textMyStyle = {}; + if (style !== undefined) { + if (style.color !== undefined) { + textMyStyle.fill = style.color; + } + } + if (!data || (data && data.length < 1)) return; + // clean + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, /* 图标自适应 */ + height, + padding: 'auto', + }); + chart.axis('x', { + label: { + formatter: (val) => { + return `${val}${xUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.axis('y', { + label: { + formatter: (val) => { + return `${val}${yUnit}`; + }, + textStyle: textMyStyle, + }, + }); + chart.data(data); + chart.tooltip({ + showTitle: false, + }); + chart.interval().position('x*y').tooltip('x*y', (name, value) => { + return { + name: `${name}${xUnit}`, + value: `${value}${yUnit}`, + }; + }); + chart.render(); + this.chart = chart; + } + + render() { + const { height } = this.props; + return ( +
+
+
+ ); + } +} + +export default Columnar; diff --git a/src/components/Charts/ColumnarGroup/index.js b/src/components/Charts/ColumnarGroup/index.js new file mode 100644 index 0000000..859d306 --- /dev/null +++ b/src/components/Charts/ColumnarGroup/index.js @@ -0,0 +1,96 @@ +/* eslint-disable no-undef */ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class ColumnarGroup extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + const { xUnit = '', yUnit = '', height } = this.props; + if (!data || (data && data.length < 1)) return; + // clean + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, /* 图标自适应s */ + height, + padding: 'auto', + }); + chart.axis('x', { + label: { + formatter: (val) => { + return `${val}${xUnit}`; + }, + }, + }); + chart.axis('y', { + label: { + formatter: (val) => { + return `${val}${yUnit}`; + }, + }, + }); + chart.data(data); + chart + .interval() + .position('x*y') + .color('type') + .adjust([{ + type: 'dodge', + marginRatio: 1 / 32, + }]) + .tooltip('x*y*type', (name, value, type) => { + return { + title: `${name}${xUnit}`, + name: type, + value: `${value}${yUnit}`, + }; + }); + chart.render(); + this.chart = chart; + } + + render() { + return ( +
+ ); + } +} + +export default ColumnarGroup; diff --git a/src/components/Charts/ColumnarStack/index.js b/src/components/Charts/ColumnarStack/index.js new file mode 100644 index 0000000..fc454b5 --- /dev/null +++ b/src/components/Charts/ColumnarStack/index.js @@ -0,0 +1,98 @@ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import DataSet from '@antv/data-set'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class ColumnarStack extends PureComponent { + componentDidMount() { + this.renderChart(this.props.data); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + const { xUnit = '', yUnit = '', height } = this.props; + if (!data || (data && data.length < 1)) return; + // clean + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, /* 图标自适应 */ + height, + padding: 'auto', + }); + // 计算每个柱子的占比 + const ds = new DataSet(); + const dv = ds.createView().source(data).transform({ + type: 'percent', + field: 'y', // 统计销量 + dimension: 'type', // 每年的占比 + groupBy: ['x'], // 以不同产品类别为分组 + as: 'percent', + }); + chart.data(dv.rows, { + percent: { + min: 0, + formatter: (val) => { + return `${(val * 100).toFixed(2)}${yUnit}`; + }, + }, + }); + chart.axis('x', { + label: { + formatter: (val) => { + return `${val}${xUnit}`; + }, + }, + }); + chart.interval().adjust('stack').position('x*percent').color('type') + .tooltip('x*y*type', (name, value, type) => { + return { + title: `${name}${xUnit}`, + name: type, + value: `${value}`, + }; + }); + chart.render(); + this.chart = chart; + } + + render() { + return ( +
+ ); + } +} + +export default ColumnarStack; diff --git a/src/components/Charts/EqualColumnarStack/index.js b/src/components/Charts/EqualColumnarStack/index.js new file mode 100644 index 0000000..7d722f0 --- /dev/null +++ b/src/components/Charts/EqualColumnarStack/index.js @@ -0,0 +1,95 @@ +import React, { PureComponent } from 'react'; +import { Chart } from '@antv/g2'; +import DataSet from '@antv/data-set'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; + +class EqualColumnarStack extends PureComponent { + componentDidMount() { + this.renderChart(this.props); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart(this.props); + } + + handleRef = (n) => { + this.node = n; + }; + + renderChart(props) { + const { + fields, yName: value, xName: currkey, onChartClick, chartName, height, + } = props; + const ds = new DataSet(); + const dv = ds.createView().source(props.data); + dv.transform({ + type: 'fold', + fields, + key: currkey, + value, + }); + if (this.chart) { + this.chart.destroy(); + } + this.node.innerHTML = ''; + const chart = new Chart({ + container: this.node, + autoFit: true, + height, + }); + chart.data(dv.rows); + chart.axis(currkey, { + label: { + autoHide: false, // 关闭label默认的自动隐藏 + autoEllipsis: false, // 关闭lable自动省略 + autoRotate: true, // 关闭默认的label超长自动旋转 默认时右下45度旋转 + formatter: (val) => { + return `${val}`; + }, + }, + }); + chart.interval().adjust('stack') + .position(`${currkey}*${value}`) + .color('name'); + /* .active(true) + .tooltip(false); */ + chart.on('interval:dblclick', (ev) => { + const cdata = ev.data; + if (cdata) { + const { data } = cdata; + onChartClick(chartName, data); + } + }); + chart.render(); + this.chart = chart; + } + render() { + return ( +
+ ); + } +} + +export default EqualColumnarStack; diff --git a/src/components/Charts/Gantt/Gantt.css b/src/components/Charts/Gantt/Gantt.css new file mode 100644 index 0000000..3d991ce --- /dev/null +++ b/src/components/Charts/Gantt/Gantt.css @@ -0,0 +1,3 @@ +.gantt-container { + height: 100%; +} diff --git a/src/components/Charts/Gantt/MessageArea/Message.js b/src/components/Charts/Gantt/MessageArea/Message.js new file mode 100644 index 0000000..cc47bc7 --- /dev/null +++ b/src/components/Charts/Gantt/MessageArea/Message.js @@ -0,0 +1,24 @@ +import React, { Component } from 'react'; + +class MessageArea extends Component { + render() { + const messages = this.props.messages.map(({ message }) => { + return
  • {message}
  • ; + }); + + return ( +
    +

    Messages:

    +
      + {messages} +
    +
    + ); + } +} + +MessageArea.defaultProps = { + messages: [], +}; + +export default MessageArea; diff --git a/src/components/Charts/Gantt/MessageArea/MessageArea.css b/src/components/Charts/Gantt/MessageArea/MessageArea.css new file mode 100644 index 0000000..5afea0d --- /dev/null +++ b/src/components/Charts/Gantt/MessageArea/MessageArea.css @@ -0,0 +1,18 @@ +.message-area { + background: #ebebeb; + height: 200px; + overflow: auto; + padding: 10px; + box-sizing:border-box; +} + +.message-area ul{ + margin: 0; + padding: 0; + list-style: none; +} + +.message-area li:before { + content: "\003e"; + padding-right: 10px; +} diff --git a/src/components/Charts/Gantt/MessageArea/index.js b/src/components/Charts/Gantt/MessageArea/index.js new file mode 100644 index 0000000..34151e8 --- /dev/null +++ b/src/components/Charts/Gantt/MessageArea/index.js @@ -0,0 +1,4 @@ +import MessageArea from './MessageArea'; +import './MessageArea.css'; + +export default MessageArea; diff --git a/src/components/Charts/Gantt/index.js b/src/components/Charts/Gantt/index.js new file mode 100644 index 0000000..b5a8a7e --- /dev/null +++ b/src/components/Charts/Gantt/index.js @@ -0,0 +1,167 @@ +import React, { Component } from 'react'; +import { gantt } from 'dhtmlx-gantt'; +import { DoubleRightOutlined } from '@ant-design/icons'; +import 'dhtmlx-gantt/codebase/dhtmlxgantt.css'; +import './Gantt.css'; + +/* eslint-disable */ +class Gantt extends Component { + + state = { expanded: true }; + tableHeight = 60; + + componentDidMount() { + gantt.plugins({ + tooltip: true, // 鼠标划过任务是否显示明细 + // auto_scheduling: true,//根据任务之间的关系自动安排任务 + // multiselect: true, //为任务激活多任务选择 + }); + gantt.config.xml_date = '%Y-%m-%d %H:%i'; /* 时间格式 年月日 时分 */ + gantt.config.reorder_grid_columns = true; /* 左侧列可拖动 */ + gantt.config.grid_elastic_columns = true; + gantt.config.drag_mode = { ignore: 'ignore'}; + gantt.config.scale_height = this.tableHeight; + gantt.i18n.setLocale('cn'); + // gantt.config.readonly = true;// 只读模式的甘特图 + const { tasks } = this.props; + this.setTemplate(); + gantt.init(this.ganttContainer); + this.initGanttDataProcessor(); + gantt.parse(tasks); + } + + + shouldComponentUpdate(nextProps, nextState) { + // const { tasks } = nextProps; + // return tasks !== undefined; + return this.props.zoom !== nextProps.zoom || this.state.expanded !== nextState.expanded; + } + componentDidUpdate() { + gantt.clearAll(); + const { tasks } = this.props; + this.setTemplate(); + gantt.init(this.ganttContainer); + this.initGanttDataProcessor(); + gantt.parse(tasks); + } + componentWillUnmount() { + if (this.dataProcessor) { + this.dataProcessor.destructor(); + this.dataProcessor = null; + } + } + setZoom = (value) => { + const scale = value.scale !== undefined ? value.scale : 'Minutes'; + const step = value.step !== undefined ? value.step : 10; + switch (scale) { + case 'Minutes': + gantt.config.duration_unit = 'minute'; + gantt.config.scale_unit = 'day'; + gantt.config.date_scale = '%Y-%m-%d'; + gantt.setWorkTime({ hours: ['00:30-03:30'] }); + gantt.config.scale_height = 60; + gantt.config.min_column_width = 40; + gantt.config.subscales = [ + { unit: 'minute', step, date: '%H:%i' }, + ]; + break; + case 'Hours': + gantt.config.scale_unit = 'day'; + gantt.config.date_scale = '%M %d'; + + gantt.config.scale_height = 60; + gantt.config.min_column_width = 30; + gantt.config.subscales = [ + { unit: 'hour', step, date: '%H' }, + ]; + break; + case 'Days': + gantt.config.min_column_width = 70; + gantt.config.scale_unit = 'week'; + gantt.config.date_scale = '%Y-%m-%d'; + gantt.config.subscales = [ + { unit: 'day', step, date: '%M %d' }, + ]; + gantt.config.scale_height = 60; + break; + case 'Months': + gantt.config.min_column_width = 70; + gantt.config.scale_unit = 'month'; + gantt.config.date_scale = '%F'; + gantt.config.scale_height = 60; + gantt.config.subscales = [ + { unit: 'week', step, date: '#%W' }, + ]; + break; + default: + break; + } + } + initGanttDataProcessor =() => { + // eslint-disable-next-line prefer-destructuring + const onDataUpdated = this.props.onDataUpdated; + if (this.dataProcessor) { + this.dataProcessor.destructor(); + this.dataProcessor = null; + } + this.dataProcessor = gantt.createDataProcessor((type, action, item, id) => { + return new Promise((resolve) => { + if (onDataUpdated) { + onDataUpdated(type, action, item, id); + } + + // if onDataUpdated changes returns a permanent id of the created item, you can return it from here so dhtmlxGantt could apply it + // resolve({id: databaseId}); + return resolve(); + }); + }); + } + + setTemplate = () => { + const { tasks } = this.props; + if (Array.isArray(tasks?.columns)) { + gantt.config.columns = tasks?.columns; + } + gantt.config.show_grid = this.state.expanded; + gantt.templates.tooltip_text = function (start, end, task) { + return ( + '标题: ' + + task.text + + '
    开始: ' + + gantt.templates.tooltip_date_format(start) + + '
    结束: ' + + gantt.templates.tooltip_date_format(end) + + '
    进度: ' + + Math.round(task.progress * 100) + + '%' + ); + }; + } + + render() { + const { zoom } = this.props; + this.setZoom(zoom); + return ( +
    + { + this.setState({ expanded: !this.state.expanded }); + }} + /> +
    { this.ganttContainer = input; }} + style={{ width: '100%', height: '100%' }} + /> +
    + ); + } +} +export default Gantt; diff --git a/src/components/Charts/Gauge/index.js b/src/components/Charts/Gauge/index.js new file mode 100644 index 0000000..56bd634 --- /dev/null +++ b/src/components/Charts/Gauge/index.js @@ -0,0 +1,235 @@ +import React, { PureComponent } from 'react'; +import G2 from '@antv/g2'; +import Bind from 'lodash-decorators/bind'; +import Debounce from 'lodash-decorators/debounce'; +import equal from '../equal'; + +const { Shape } = G2; + +const primaryColor = '#2F9CFF'; +const backgroundColor = '#F0F2F5'; + +/* eslint no-underscore-dangle: 0 */ +class Gauge extends PureComponent { + componentDidMount() { + setTimeout(() => { + this.renderChart(); + }, 10); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + setTimeout(() => { + this.renderChart(nextProps); + }, 10); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + // if (this.chart) { + // console.log('data', this.chart); + // this.chart.destroy(); + // } + this.resize.cancel(); + } + + @Bind() + @Debounce(200) + resize() { + if (!this.node) { + return; + } + this.renderChart([]); + } + + handleRef = (n) => { + this.node = n; + }; + + initChart(nextProps) { + const { xUnit, color = primaryColor } = nextProps || this.props; + + Shape.registShape('point', 'dashBoard', { + drawShape(cfg, group) { + const originPoint = cfg.points[0]; + const point = this.parsePoint({ x: originPoint.x, y: 0.4 }); + + const center = this.parsePoint({ + x: 0, + y: 0, + }); + + const shape = group.addShape('polygon', { + attrs: { + points: [ + [center.x, center.y], + [point.x + 8, point.y], + [point.x + 8, point.y - 2], + [center.x, center.y - 2], + ], + radius: 2, + lineWidth: 2, + arrow: false, + fill: color, + }, + }); + + group.addShape('Marker', { + attrs: { + symbol: 'circle', + lineWidth: 2, + fill: color, + radius: 8, + x: center.x, + y: center.y, + }, + }); + group.addShape('Marker', { + attrs: { + symbol: 'circle', + lineWidth: 2, + fill: '#fff', + radius: 5, + x: center.x, + y: center.y, + }, + }); + + const { origin } = cfg; + group.addShape('text', { + attrs: { + x: center.x, + y: center.y + 80, + text: `${origin._origin.value}%`, + textAlign: 'center', + fontSize: 24, + fill: 'rgba(0, 0, 0, 0.85)', + }, + }); + group.addShape('text', { + attrs: { + x: center.x, + y: center.y + 45, + text: xUnit, + textAlign: 'center', + fontSize: 14, + fill: 'rgba(0, 0, 0, 0.43)', + }, + }); + + return shape; + }, + }); + } + + renderChart(nextProps) { + if (this.node.offsetWidth === 0) { + return; + } + const { + height, color = primaryColor, bgColor = backgroundColor, xUnit, + } = nextProps || this.props; + const data = [{ name: xUnit, value: this.props.data }]; + + if (this.chart) { + this.chart.clear(); + } + if (this.chart) { + this.chart.destroy(); + } + if (this.node) { + this.node.innerHTML = ''; + } + + this.initChart(nextProps); + const chart = new G2.Chart({ + container: this.node, + forceFit: true, + height, + animate: false, + plotCfg: { + margin: [10, 10, 30, 10], + }, + }); + + chart.source(data); + + chart.tooltip(false); + + chart.coord('gauge', { + startAngle: -1.2 * Math.PI, + endAngle: 0.20 * Math.PI, + }); + chart.col('value', { + type: 'linear', + nice: true, + min: 0, + max: 100, + tickCount: 6, + }); + chart.axis('value', { + subTick: false, + tickLine: { + stroke: color, + lineWidth: 2, + value: -14, + }, + labelOffset: -12, + formatter: (val) => { + switch (parseInt(val, 10)) { + case 20: + return '差'; + case 40: + return '中'; + case 60: + return '良'; + case 80: + return '优'; + default: + return ''; + } + }, + }); + chart.point().position('value').shape('dashBoard'); + draw(data); + + /* eslint no-shadow: 0 */ + function draw(data) { + const val = data[0].value; + const lineWidth = 12; + chart.guide().clear(); + + chart.guide().arc(() => { + return [0, 0.95]; + }, () => { + return [val, 0.95]; + }, { + stroke: color, + lineWidth, + }); + + chart.guide().arc(() => { + return [val, 0.95]; + }, (arg) => { + return [arg.max, 0.95]; + }, { + stroke: bgColor, + lineWidth, + }); + + chart.changeData(data); + } + + this.chart = chart; + } + + render() { + return ( +
    + ); + } +} + +export default Gauge; diff --git a/src/components/Charts/Pie/index.js b/src/components/Charts/Pie/index.js new file mode 100644 index 0000000..e36067e --- /dev/null +++ b/src/components/Charts/Pie/index.js @@ -0,0 +1,279 @@ +/* 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 classNames from 'classnames'; +import ReactFitText from 'react-fittext'; +import Debounce from 'lodash-decorators/debounce'; +import Bind from 'lodash-decorators/bind'; +import equal from '../equal'; +import styles from './index.less'; +import Charts from '../index.js'; + +/* eslint react/no-danger:0 */ +class Pie extends Component { + constructor(props) { + super(props); + this.state = { + legendData: [], + legendBlock: true, + }; + } + + componentDidMount() { + this.renderChart(); + this.resize(); + window.addEventListener('resize', this.resize); + } + + componentWillReceiveProps(nextProps) { + if (!equal(this.props, nextProps)) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + if (this.chart) { + this.chart.destroy(); + } + this.resize.cancel(); + } + + @Bind() + @Debounce(300) + resize() { + const { hasLegend } = this.props; + if (!hasLegend || !this.root) { + window.removeEventListener('resize', this.resize); + return; + } + if (this.root.parentNode.clientWidth <= 380) { + if (!this.state.legendBlock) { + this.setState({ + legendBlock: true, + }, () => { + this.renderChart(); + }); + } + } else if (this.state.legendBlock) { + this.setState({ + legendBlock: false, + }, () => { + this.renderChart(); + }); + } + } + + handleRef = (n) => { + this.node = n; + }; + + handleRoot = (n) => { + this.root = n; + }; + + handleLegendClick = (item, i) => { + const newItem = item; + newItem.checked = !newItem.checked; + + const { legendData } = this.state; + legendData[i] = newItem; + + if (this.chart) { + const filterItem = legendData.filter(l => l.checked).map(l => l.x); + this.chart.filter('x', filterItem); + this.chart.repaint(); + } + + this.setState({ + legendData, + }); + }; + + renderChart(d) { + if (this.node.offsetWidth === 0) { + return; + } + let data = d || this.props.data; + + const { + height = 0, + hasLegend, + fit = true, + margin = [12, 0, 12, 0], percent, color, + inner = 0.75, + animate = true, + colors, + lineWidth = 0, + } = this.props; + + const defaultColors = colors; + + let selected = this.props.selected || true; + let tooltip = this.props.tooltips || true; + + let formatColor; + if (percent) { + selected = false; + tooltip = false; + formatColor = (value) => { + if (value === '占比') { + return color || 'rgba(24, 144, 255, 0.85)'; + } else { + return '#F0F2F5'; + } + }; + + /* eslint no-param-reassign: */ + data = [ + { + x: '占比', + y: parseFloat(percent), + }, + { + x: '反比', + y: 100 - parseFloat(percent), + }, + ]; + } + + if (!data || (data && data.length < 1)) { + return; + } + + // clean + this.node.innerHTML = ''; + + const { Stat } = G2; + + const chart = new G2.Chart({ + container: this.node, + forceFit: fit, + height, + plotCfg: { + margin, + }, + animate, + }); + + if (!tooltip) { + chart.tooltip(false); + } else { + chart.tooltip({ + title: null, + }); + } + + chart.axis(false); + chart.legend(false); + chart.source(data, { + x: { + type: 'cat', + range: [0, 1], + }, + y: { + min: 0, + }, + }); + + chart.coord('theta', { + inner, + }); + // chart.changeSize(180, 216);// 设置图标的高度 + chart + .intervalStack() + .position(Stat.summary.percent('y')) + .style({ lineWidth, stroke: '#fff' }) + .color('x', percent ? formatColor : defaultColors) + .selected(selected); + + chart.render(); + + this.chart = chart; + + let legendData = []; + if (hasLegend) { + const geom = chart.getGeoms()[0]; // 获取所有的图形 + const items = geom.getData(); // 获取图形对应的数据 + legendData = items.map((item) => { + /* eslint no-underscore-dangle:0 */ + const origin = item._origin; + origin.color = item.color; + origin.checked = true; + return origin; + }); + } + + this.setState({ + legendData, + }); + } + + render() { + const { + valueFormat, subTitle, hasLegend, className, style, data = [], + } = this.props; + let { projectName } = this.props; /* 项目名称 */ + projectName = projectName === undefined || projectName === null ? '' : projectName; + const { yuan } = Charts; + // const total = hasLegend ? yuan(data.reduce((pre, now) => now.y + pre, 0)) : this.props.total; + const total = hasLegend ? data.reduce((pre, now) => now.y + pre, 0).toFixed(2) : this.props.total; /* 保留两位小数 */ + const { legendData, legendBlock } = this.state; + const pieClassName = classNames(styles.pie, className, { + [styles.hasLegend]: !!hasLegend, + [styles.legendBlock]: legendBlock, + }); + return ( +
    + +
    +
    + { + (subTitle || total) && ( +
    + {subTitle &&

    {subTitle}

    } + { + // eslint-disable-next-line + total &&
    + } +
    + ) + } +
    + + + { + hasLegend && ( +
      -1 ? styles.legendBigScreen : styles.legend} + style={location.pathname.indexOf('indexMobile') > -1 ? { width: '48%' } : { width: '48%' }} + > + { + legendData.map((item, i) => ( +
    • this.handleLegendClick(item, i)}> + + -1 ? styles.spanStyle : ''}`}>{item.x} + + {location.pathname.indexOf('indexMobile') > -1 ? '' : '' + // {`${(item['..percent'] * 100).toFixed(2)}%`} + } + +
    • + )) + } +
    + ) + } +
    + ); + } +} + +export default Pie; diff --git a/src/components/Charts/Pie/index.less b/src/components/Charts/Pie/index.less new file mode 100644 index 0000000..47da292 --- /dev/null +++ b/src/components/Charts/Pie/index.less @@ -0,0 +1,126 @@ +@import "~antd-v4/lib/style/themes/default.less"; + +.pie { + position: relative; + .chart { + position: relative; + } + &.hasLegend .chart { + width: ~"calc(47%)"!important; + } + .legend { + position: absolute!important; + right: 0; + min-width: 48%; + top: 50%; + transform: translateY(-50%)!important; + margin: 0 0 0 10px; + list-style: none; + padding: 0; + li { + width: 100%; + cursor: pointer; + margin-bottom: 0; + height: 16px; + line-height: 16px; + &:last-child { + margin-bottom: 0; + } + } + } + + .legendBigScreen { /* 大屏纵向排列 */ + position: relative!important; + right: 0; + min-width: 48%; + top: 50%; + transform: translateY(-50%)!important; + margin: 0; + list-style: none; + padding: 0; + li { + width: 100%; + cursor: pointer; + margin-bottom: 0; + height: 22px; + line-height: 22px; + &:last-child { + margin-bottom: 0; + } + } + } + .dot { + border-radius: 8px; + display: inline-block; + margin-right: 8px; + position: relative; + top: -1px; + height: 8px; + width: 8px; + } + .line { + background-color: @border-color-split; + display: inline-block; + margin-right: 8px; + width: 1px; + height: 16px; + } + .legendTitle { + color: @text-color; + } + .spanStyle{ + width: 50%; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .percent { + color: @text-color-secondary; + } + .value { + position: absolute; + right: 0; + } + .title { + margin-bottom: 8px; + } + .total { + position: absolute; + left: 50%; + top: 50%; + text-align: center; + height: 62px; + transform: translate(-50%, -50%); + & > div { + font-size: 24px; + } + & > h4 { + color: @text-color-secondary; + font-size: 14px; + line-height: 22px; + height: 22px; + margin-bottom: 8px; + font-weight: normal; + } + & > p { + color: @heading-color; + display: block; + font-size: 1.2em; + height: 32px; + line-height: 32px; + white-space: nowrap; + } + } +} + +.legendBlock { + &.hasLegend .chart { + width: 100%; + margin: 0 0 32px 0; + } + .legend { + position: relative; + transform: none; + } +} diff --git a/src/components/Charts/PieGroup/index.js b/src/components/Charts/PieGroup/index.js new file mode 100644 index 0000000..2d6cb73 --- /dev/null +++ b/src/components/Charts/PieGroup/index.js @@ -0,0 +1,31 @@ +import React, { Component } from 'react'; +import { Row, Col } from 'antd'; +import { getTheme } from '@antv/g2'; +import Pie from '../Pie'; + +class PieGroup extends Component { + render() { + const { data, height } = this.props; + const column = 24 / data.length; + const { colors10: colors } = getTheme(); + return ( + + { + data.map((child, i) => { + const { sId } = child; + child.height = height; + child.color = colors[i]; + return ( + + + + ); + }) + } + + ); + } +} + +export default PieGroup; + diff --git a/src/components/Charts/TimeLineGroup/index.js b/src/components/Charts/TimeLineGroup/index.js new file mode 100644 index 0000000..1f147b9 --- /dev/null +++ b/src/components/Charts/TimeLineGroup/index.js @@ -0,0 +1,81 @@ +/* eslint-disable object-curly-newline */ +import React, { Component } from 'react'; +import { Row, Col, Tabs } from 'antd'; +import TimeLineChart from '../TimelineChart'; +import NumberInfo from '../../NumberInfo'; +import Pie from '../Pie'; +import styles from '../index.less'; +import * as utils from '../../../utils/utils'; + +const { TabPane } = Tabs; + +class TimeLineGroup extends Component { + constructor(props) { + super(props); + this.state = { + offlineCard: styles.offlineCard, + tabGroup: styles.tabGroup, + currentTabKey: utils.isNotEmptyArr(props.data) ? props.data[0].x : '', + }; + } + + handleTabChange = (key) => { + this.setState({ + currentTabKey: key, + }); + }; + + render() { + const { offlineCard, currentTabKey, tabGroup } = this.state; + const { data, titleMap, subTitle, yUnit } = this.props; + const TabGroup = ({ tabData, currentTabKey: currentKey }) => ( + + + + + + + + + ); + return ( + + { + data.map(item => ( + } + key={item.x} + > + + )) + } + + ); + } +} + +export default TimeLineGroup; + diff --git a/src/components/Charts/TimelineChart/index.js b/src/components/Charts/TimelineChart/index.js new file mode 100644 index 0000000..5a0d3ea --- /dev/null +++ b/src/components/Charts/TimelineChart/index.js @@ -0,0 +1,139 @@ +import React, { Component } from 'react'; +import G2 from 'g2'; +import Slider from 'g2-plugin-slider'; +import styles from './index.less'; + +class TimelineChart extends Component { + componentDidMount() { + this.renderChart(this.props.data); + } + + componentWillReceiveProps(nextProps) { + if (nextProps.data !== this.props.data) { + this.renderChart(nextProps.data); + } + } + + componentWillUnmount() { + if (this.chart) { + this.chart.destroy(); + } + if (this.slider) { + this.slider.destroy(); + } + } + + sliderId = `timeline-chart-slider-${Math.random() * 1000}`; + handleRef = (n) => { + this.node = n; + }; + + renderChart(data) { + const { + height = 400, margin = [60, 20, 40, 70], titleMap, borderWidth = 2, yUnit = '', + } = this.props; + if (!data || (data && data.length < 1)) { + return; + } + + // clean + if (this.sliderId) { + // eslint-disable-next-line no-undef + document.getElementById(this.sliderId).innerHTML = ''; + } + if (this.chart) { + this.chart.destroy(); + } + if (this.slider) { + this.slider.destroy(); + } + this.node.innerHTML = ''; + const chart = new G2.Chart({ + container: this.node, + forceFit: true, + height, + plotCfg: { + margin, + }, + }); + + chart.axis('x', { + title: false, + }); + chart.axis('y1', { + title: false, + }); + chart.axis('y2', false); + + chart.legend({ + mode: false, + position: 'top', + marker: 'square', + }); + + let max; + if (data[0] && data[0].y1 && data[0].y2) { + max = Math.max( + data.sort((a, b) => b.y1 - a.y1)[0].y1, + data.sort((a, b) => b.y2 - a.y2)[0].y2, + ); + } + + chart.source(data, { + x: { + type: 'timeCat', + tickCount: 20, + mask: 'mm-dd', + range: [0, 1], + }, + y1: { + alias: titleMap.y1, + max, + min: 0, + formatter: (val) => { + return `${val}${yUnit}`; + }, + }, + y2: { + alias: titleMap.y2, + max, + min: 0, + formatter: (val) => { + return `${val}${yUnit}`; + }, + }, + }); + + chart.line().position('x*y1').color('#1890FF').size(borderWidth); + chart.line().position('x*y2').color('#2FC25B').size(borderWidth); + + this.chart = chart; + + /* eslint new-cap:0 */ + const slider = new Slider({ + domId: this.sliderId, + height: 26, + xDim: 'x', + yDim: 'y1', + charts: [chart], + }); + slider.render(); + + this.slider = slider; + } + + render() { + const { height, title } = this.props; + return ( +
    +
    + { title &&

    {title}

    } +
    +
    +
    +
    + ); + } +} + +export default TimelineChart; diff --git a/src/components/Charts/TimelineChart/index.less b/src/components/Charts/TimelineChart/index.less new file mode 100644 index 0000000..1751975 --- /dev/null +++ b/src/components/Charts/TimelineChart/index.less @@ -0,0 +1,3 @@ +.timelineChart { + background: #fff; +} diff --git a/src/components/Charts/WaterWave/index.js b/src/components/Charts/WaterWave/index.js new file mode 100644 index 0000000..56509f4 --- /dev/null +++ b/src/components/Charts/WaterWave/index.js @@ -0,0 +1,205 @@ +/* eslint-disable object-curly-newline,no-return-assign */ +import React, { PureComponent } from 'react'; +import styles from './index.less'; + +class WaterWave extends PureComponent { + constructor(props) { + super(props); + this.state = { + radio: 1, + waterWave: styles.waterWave, + waterWaveCanvasWrapper: styles.waterWaveCanvasWrapper, + text: styles.text, + }; + } + + componentDidMount() { + this.renderChart(); + this.resize(); + window.addEventListener('resize', this.resize); + } + + componentWillUnmount() { + cancelAnimationFrame(this.timer); + if (this.node) { + this.node.innerHTML = ''; + } + window.removeEventListener('resize', this.resize); + } + + resize = () => { + const { height } = this.props; + const { offsetWidth } = this.root.parentNode; + this.setState({ + radio: offsetWidth < height ? offsetWidth / height : 1, + }); + }; + + renderChart() { + const { color = '#1890FF' } = this.props; + const data = (this.props.data / 100); + // const self = this; + + if (!this.node || !data) { + return; + } + if (this.timer) { + cancelAnimationFrame(this.timer); + if (this.node) { + this.node.innerHTML = ''; + } + } + + const canvas = this.node; + const ctx = canvas.getContext('2d'); + + const canvasWidth = canvas.width; + const canvasHeight = canvas.height; + const radius = canvasWidth / 2; + const lineWidth = 2; + const cR = radius - (lineWidth); + + ctx.beginPath(); + ctx.lineWidth = lineWidth * 2; + + const axisLength = canvasWidth - (lineWidth); + const unit = axisLength / 8; + const range = 0.2; // 振幅 + let currRange = range; + const xOffset = lineWidth; + let sp = 0; // 周期偏移量 + let currData = 0; + const waveupsp = 0.005; // 水波上涨速度 + + let arcStack = []; + const bR = radius - (lineWidth); + const circleOffset = -(Math.PI / 2); + let circleLock = true; + + for (let i = circleOffset; i < circleOffset + (2 * Math.PI); i += 1 / (8 * Math.PI)) { + arcStack.push([ + radius + (bR * Math.cos(i)), + radius + (bR * Math.sin(i)), + ]); + } + + const cStartPoint = arcStack.shift(); + ctx.strokeStyle = color; + ctx.moveTo(cStartPoint[0], cStartPoint[1]); + + function drawSin() { + ctx.beginPath(); + ctx.save(); + + const sinStack = []; + for (let i = xOffset; i <= xOffset + axisLength; i += Math.ceil(20 / axisLength)) { + const x = sp + ((xOffset + i) / unit); + const y = Math.sin(x) * currRange; + const dx = i; + const dy = ((2 * cR * (1 - currData)) + (radius - cR)) - (unit * y); + ctx.lineTo(dx, dy); + sinStack.push([dx, dy]); + } + + const startPoint = sinStack.shift(); + + ctx.lineTo(xOffset + axisLength, canvasHeight); + ctx.lineTo(xOffset, canvasHeight); + ctx.lineTo(startPoint[0], startPoint[1]); + + const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); + gradient.addColorStop(0, '#ffffff'); + gradient.addColorStop(1, '#1890FF'); + ctx.fillStyle = gradient; + ctx.fill(); + ctx.restore(); + } + + function render1() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + if (circleLock) { + if (arcStack.length) { + const temp = arcStack.shift(); + ctx.lineTo(temp[0], temp[1]); + ctx.stroke(); + } else { + circleLock = false; + ctx.lineTo(cStartPoint[0], cStartPoint[1]); + ctx.stroke(); + arcStack = null; + + ctx.globalCompositeOperation = 'destination-over'; + ctx.beginPath(); + ctx.lineWidth = lineWidth; + ctx.arc(radius, radius, bR, 0, 2 * Math.PI, 1); + + ctx.beginPath(); + ctx.save(); + ctx.arc(radius, radius, radius - (3 * lineWidth), 0, 2 * Math.PI, 1); + + ctx.restore(); + ctx.clip(); + ctx.fillStyle = '#1890FF'; + } + } else { + if (data >= 0.85) { + if (currRange > range / 4) { + const t = range * 0.01; + currRange -= t; + } + } else if (data <= 0.1) { + if (currRange < range * 1.5) { + const t = range * 0.01; + currRange += t; + } + } else { + if (currRange <= range) { + const t = range * 0.01; + currRange += t; + } + if (currRange >= range) { + const t = range * 0.01; + currRange -= t; + } + } + if ((data - currData) > 0) { + currData += waveupsp; + } + if ((data - currData) < 0) { + currData -= waveupsp; + } + + sp += 0.07; + drawSin(); + } + // self.timer = requestAnimationFrame(render1); //此句直接导致死循环 + } + + render1(); + } + + render() { + const { radio, waterWave, waterWaveCanvasWrapper, text } = this.state; + const { data, xUnit, height } = this.props; + return ( +
    (this.root = n)} style={{ transform: `scale(${radio})` }}> +
    + (this.node = n)} + width={(height - 24) * 2} + height={(height - 24) * 2} + /> +
    +
    + { + xUnit && {xUnit} + } +

    {data}%

    +
    +
    + ); + } +} + +export default WaterWave; diff --git a/src/components/Charts/WaterWave/index.less b/src/components/Charts/WaterWave/index.less new file mode 100644 index 0000000..be35c21 --- /dev/null +++ b/src/components/Charts/WaterWave/index.less @@ -0,0 +1,29 @@ +@import "~antd-v4/lib/style/themes/default.less"; + +.waterWave { + display: block; + position: relative; + transform-origin: left; + padding: 12px 0; + .text { + position: absolute; + left: 0; + top: 20%; + text-align: center; + width: 100%; + span { + color: @text-color-secondary; + font-size: 14px; + line-height: 22px; + } + h4 { + color: @heading-color; + line-height: 32px; + font-size: 24px; + } + } + .waterWaveCanvasWrapper { + transform: scale(.5); + transform-origin: 0 0; + } +} diff --git a/src/components/Charts/equal.js b/src/components/Charts/equal.js new file mode 100644 index 0000000..ff3a4c7 --- /dev/null +++ b/src/components/Charts/equal.js @@ -0,0 +1,17 @@ +/* eslint eqeqeq: 0 */ + +function equal(old, target) { + let r = true; + for (const prop in old) { + if (typeof old[prop] === 'function' && typeof target[prop] === 'function') { + if (old[prop].toString() != target[prop].toString()) { + r = false; + } + } else if (old[prop] != target[prop]) { + r = false; + } + } + return r; +} + +export default equal; diff --git a/src/components/Charts/index.js b/src/components/Charts/index.js new file mode 100644 index 0000000..8b483a3 --- /dev/null +++ b/src/components/Charts/index.js @@ -0,0 +1,33 @@ +import numeral from 'numeral'; +import Bar from './Bar'; +import Columnar from './Columnar'; +import ColumnarGroup from './ColumnarGroup'; +import BrokenLine from './BrokenLine'; +import WaterWave from './WaterWave'; +import Gauge from './Gauge'; +import ColumnarStack from './ColumnarStack'; +import PieGroup from './PieGroup'; +import Pie from './Pie'; +import TimeLineChart from './TimelineChart'; +import TimeLineGroup from './TimeLineGroup'; +import EqualColumnarStack from './EqualColumnarStack'; +import ColorBlock from './ColorBlock'; +/* update by zz 20201227 */ +// const yuan = val => `¥ ${numeral(val).format('0,0')}`; +const yuan = val => `${numeral(val).format('0,0')}`; +export default { + yuan, + Bar, + Columnar, + ColumnarGroup, + BrokenLine, + WaterWave, + Gauge, + ColumnarStack, + PieGroup, + Pie, + TimeLineChart, + TimeLineGroup, + EqualColumnarStack, + ColorBlock, +}; diff --git a/src/components/Charts/index.less b/src/components/Charts/index.less new file mode 100644 index 0000000..95f7056 --- /dev/null +++ b/src/components/Charts/index.less @@ -0,0 +1,72 @@ +@import "~antd-v4/lib/style/themes/default.less"; +.char { + margin: 24px; +} + +.commonChar { + // padding-top: 10px; + padding-bottom: 10px; + background: #888; + :global{ + .ant-col-18{ + padding-right: 24px; + } + .ant-card-body{ + overflow: hidden; + } + } + .commonCharContainer { + margin-bottom: 24px; + overflow: hidden; + canvas + div { + display: none; + } + :global { + .ant-card-extra { + padding: 12px 24px!important; + } + } + .commonRollChar{ + .xly-list > .ant-layout{ + margin: 0 !important; + } + } + } +} + +.commonCharPage{ + padding: 105px 20px 0 20px; + background: #888; +} + +.offlineCard { + :global { + .ant-tabs-ink-bar { + bottom: auto; + } + .ant-tabs-bar { + border-bottom: none; + } + .ant-tabs-nav-container-scrolling { + padding-left: 40px; + padding-right: 40px; + } + .ant-tabs-tab-prev-icon:before { + position: relative; + left: 6px; + } + .ant-tabs-tab-next-icon:before { + position: relative; + right: 6px; + } + .ant-tabs-tab-active h4 { + color: @primary-color; + } + } + .tabGroup { + width: 138px; + margin: 8px 0!important; + } +} + + diff --git a/src/components/Common/CommonCheckBill/index.css b/src/components/Common/CommonCheckBill/index.css new file mode 100644 index 0000000..09a0410 --- /dev/null +++ b/src/components/Common/CommonCheckBill/index.css @@ -0,0 +1,14 @@ +.pdfContainer { + width: 100%; + height: 300px; +} +/* 处理分隔符间距 */ +:global { + /* 主表分隔符间距 */ +} +:global .commonCheckBillContainer .ant-divider-horizontal.ant-divider-with-text { + margin: 5px 0 10px 0!important; +} +:global .commonCheckBillContainer .flexArea .ant-divider-horizontal.ant-divider-with-text { + margin: -8px 0 !important; +} diff --git a/src/components/Common/CommonCheckBill/index.js b/src/components/Common/CommonCheckBill/index.js new file mode 100644 index 0000000..96d5b11 --- /dev/null +++ b/src/components/Common/CommonCheckBill/index.js @@ -0,0 +1,2187 @@ +/* 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, + Avatar, + Button, + Table, + Upload, + Input, + Divider, + Collapse, +} from 'antd'; +import { message } from '@/utils/common/message'; +import CommonSales from '@/components/Common/CommonCheckBillEvent';/* 继承销售模块业务功能 */ +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 CommonViewFlex from '@/components/Common/CommonViewFlex'; +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 CommonListSelect from '@/components/Common/CommonListSelect'; +import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; +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 SlaveMemo from './SlaveMemo'; +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +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 PrintPdf from '@/components/PrintPdf/PrintPdf'; +import customStyles from './index.less'; + +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 { Panel } = Collapse; +class CommonBill 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 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 { 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; + } + }; + /* 包装工单过滤行 */ /** 控制选择控制表时,显示部件工序与成品工序 */ + 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`]: [] }; + }; + /** 删除表格数据 */ + handleTableDel = (name, isWait, tableSelectedRowKeys, isTree) => { + if (name === 'control') { + // const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; /* 删除时,选中行取删除参数传过来的 */ + const { + controlData, treeSelectedKeys, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, sModelsType, slaveSelectedRowKeys, slaveData, + } = 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 { + 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 (sModelsType !== '' && sModelsType.includes('sales/') && name === 'productProcessInfo') { /* 销售订单调用工艺卡 */ + const { + controlConfig, materialsConfig, processConfig, slaveSelectedRowKeys, slaveData, + } = this.props; + const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); + if (iIndex > -1 && commonUtils.isNotEmptyArr(selectData)) { + const tableDataRow = slaveData[iIndex]; /* 从表选中行 */ + let { controlData, materialsData, processData } = this.props; + const sId = tableDataRow.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 = selectData[0].sCustomerId; + const sProductId = selectData[0].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.productProcessInfo')); + if (dataReturn.code === 1) { + const returnData = dataReturn.dataset.rows[0]; + const copyToControlConfig = config.filter(item => item.sControlName.toLowerCase().includes('.control')); + const copyToMaterialsConfig = config.filter(item => item.sControlName.toLowerCase().includes('.materials')); + const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase().includes('.process')); + 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.props.onGetControlTreeData(controlData, true); + } + this.props.onSaveState({ + controlData, + materialsData, + processData, + ...treeState, + }); + } + } + } + } else if (name === 'productProcessInfoAbandon') { /* 暂未使用的调用工艺卡功能 */ + 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]; + } + } + /* 若销售订单从表选中行被工单或其他调用 则材料与工艺只能查看不能操作s */ + 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, + onDelRow: this.handleTableDel, + onKeyDown: this.props.onKeyDown, + 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 BillComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, + onReturnForm, + slaveData, + slavePagination, + onlyMaster, + sModelsId, + app, + masterConfig, + slaveConfig, + isSmall, + isGetDataVisible, + onGetDataCancel, + onGetDataOk, + colseGetDataVisible, + sModelsType, + masterData, + previewUrl, + slaveSelectedRowKeys, + } = props; + /* 回带表单 */ + onReturnForm(form); + const pagination = { + pageSize: commonConfig.pageSize, + total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, + current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current, + ...slavePagination, + // 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 = 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: 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');/* 销售订单 s*/ + setMaterialRemark = props.sModelsType !== undefined && props.sModelsType.includes('sales/salesOrder') ? setMaterialRemark : null; + const slaveTableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, + }, + templateProps, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + + + const controlPropsType = { + ...commonBusiness.getTableTypes('control', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, + }, + templateProps, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + + + const materialsPropsType = { + ...commonBusiness.getTableTypes('materials', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, + }, + templateProps, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + + + const processPropsType = { + ...commonBusiness.getTableTypes('process', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, + }, + templateProps, + onKeyDown: props.onKeyDown, + onContextMenu: props.onContextMenu, + masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求:产品新增需要带上客户信息) + }; + + const packPropsType = { + ...commonBusiness.getTableTypes('pack', props), + tableProps: { + setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, + }, + 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 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) : '';/* 后台是否配置导入 */ + + /* 取 masterConfig中有多少个分割符配置 */ + const masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : []; + 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); + } + } + }); + /* ----从表设置------- */ + /* 取区域间隔符 */ + // eslint-disable-next-line no-unused-vars + const areaShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sControlName !== '' && item.sControlName.toLowerCase().indexOf('dividerarea') > -1) : []; + + // eslint-disable-next-line no-unused-vars + let listConfig = {}; /* 从表区域 列表显示设置 */ + if (commonUtils.isNotEmptyObject(slaveConfig)) { + listConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && (item.iTag !== 2 && item.iTag !== 3)) : []; + } + + /* 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 showAll2 = true; /* 只显示表格 */ + let bShowLeft2 = true; /* 表格显示在左侧 */ + let iColValueView2 = 12; + const iColValueTable2 = 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(props.slaveConfig) && commonUtils.isNotEmptyArr(props.slaveConfig.gdsconfigformslave)) { + const iIndexArea = props.slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll = false; + } + if (commonUtils.isNotEmptyObject(props.slaveConfig) && commonUtils.isNotEmptyArr(props.slaveConfig.gdsconfigformslave)) { + const iShowLeft = props.slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight = props.slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft > -1) { + bShowLeft = true; + iColValueTable = props.slaveConfig.gdsconfigformslave[iShowLeft].iColValue; + } else if (iShowRight > -1) { + bShowLeft = false; + iColValueTable = props.slaveConfig.gdsconfigformslave[iShowRight].iColValue; + } + } + } + iColValueView = commonUtils.isNotEmptyNumber(iColValueTable) ? 24 - iColValueTable : 12; + iColValueView2 = commonUtils.isNotEmptyNumber(iColValueTable2) ? 24 - iColValueTable2 : 12; + const iShowOrder = bShowLeft ? 1 : 100; + + const iShowOrder2 = bShowLeft2 ? 1 : 100; + + let areaShow1 = true; /* 区域1 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'DividerArea1' && item.bVisible); + if (iIndexArea > -1) { + areaShow1 = props.masterConfig.gdsconfigformslave[iIndexArea].showName; + } + } + let areaShow2 = true; /* 区域2 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'DividerArea2' && item.bVisible); + if (iIndexArea > -1) { + areaShow2 = props.masterConfig.gdsconfigformslave[iIndexArea].showName; + } + } + + if (commonUtils.isNotEmptyObject(props.controlConfig) && commonUtils.isNotEmptyArr(props.controlConfig.gdsconfigformslave)) { + const iIndexArea = props.controlConfig.gdsconfigformslave.findIndex(item => item.sControlName !== '' && item.sControlName.includes('bShow')); + if (iIndexArea > -1) { + showAll2 = false; + } + if (commonUtils.isNotEmptyObject(props.controlConfig) && commonUtils.isNotEmptyArr(props.controlConfig.gdsconfigformslave)) { + const iShowLeft = props.controlConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowLeft' && item.bVisible); + const iShowRight = props.controlConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRight' && item.bVisible); + if (iShowLeft > -1) { + bShowLeft2 = true; + iColValueTable = props.controlConfig.gdsconfigformslave[iShowLeft].iColValue; + } else if (iShowRight > -1) { + bShowLeft2 = false; + iColValueTable = props.controlConfig.gdsconfigformslave[iShowRight].iColValue; + } + } + } + + let areaShow3 = true; /* 区域3 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'DividerArea3' && item.bVisible); + if (iIndexArea > -1) { + areaShow3 = props.masterConfig.gdsconfigformslave[iIndexArea].showName; + } + } + + let areaShow4 = true; /* 区域4 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'DividerArea4' && item.bVisible); + if (iIndexArea > -1) { + areaShow4 = props.masterConfig.gdsconfigformslave[iIndexArea].showName; + } + } + let areaShow5 = true; /* 区域5 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'DividerArea5' && item.bVisible); + if (iIndexArea > -1) { + areaShow5 = props.masterConfig.gdsconfigformslave[iIndexArea].showName; + } + } + let bShowReport = true; /* 显示报表区域 */ + if (commonUtils.isNotEmptyObject(props.masterConfig) && commonUtils.isNotEmptyArr(props.masterConfig.gdsconfigformslave)) { + const iIndexArea = props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRepoprt'); + if (iIndexArea > -1) { + bShowReport = props.masterConfig.gdsconfigformslave[iIndexArea].bVisible; + } + } + + const bControlShow = commonUtils.isNotEmptyObject(props) && commonUtils.isNotEmptyObject(props.controlConfig); /* 控制表 */ + + const bMaterialShow = commonUtils.isNotEmptyObject(props) && commonUtils.isNotEmptyObject(props.materialsConfig); /* 材料表 */ + + const bProcessShow = commonUtils.isNotEmptyObject(props) && commonUtils.isNotEmptyObject(props.processConfig); /* 工序表 */ + + const bPackShow = commonUtils.isNotEmptyObject(props) && commonUtils.isNotEmptyObject(props.packConfig); /* 工序表 */ + /* 从表view */ + const slaveViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView, + viewRow: slaveRow, + tableName: 'slave', + }; + + /* 控制表view */ + const controlViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView2, + viewRow: {}, + tableName: 'control', + }; + /* 从表view */ + const materialsViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView2, + viewRow: {}, + }; + /* 从表view */ + const processViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView2, + viewRow: {}, + }; + + /* pack表view */ + const packViewProps = { + ...props, + viewConfigs: ableConfigs, + tableConfig: slaveConfig, + iColValueView2, + viewRow: {}, + }; + + return ( + + +
    +
    + + { commonUtils.isNotEmptyArr(ImportData) ? +
    + {BtnimportData} +
    : ''} +
    +
    + + +
    +
    + +
    + { + commonUtils.isNotEmptyArr(diliverConfigTypeArr) ? + diliverConfigTypeArr.map((item) => { + // 匹配数字 + // eslint-disable-next-line no-unused-vars + const num = item.replace(/[^\d]/g, ' '); + return ( +
    + {item} + +
    + ); + }) + : '' + } +
    + { onlyMaster ? +
    +
    + +
    +
    : +
    + {/*
    */} + {/* */} + {/*
    */} + {/* {areaShow1 ? {areaShow1} : '' } */} +
    +
    + + + +
    + + + + + + + +
    + {/* {areaShow2 ? {areaShow2} : '' } */} + {bControlShow ? + + + +
    + + + + + + : '' + } + + {/* {areaShow3 ? {areaShow3} : '' } */} + { + bMaterialShow ? + + + {/*
    */} + {/* */} + {/*
    */} + +
    + + + + + + : '' + } + {/* {areaShow4 ? {areaShow4} : '' } */} + { + bProcessShow ? + + + {/*
    */} + {/* */} + {/*
    */} + +
    + + + + + + : '' + } + + {/* {areaShow5 ? {areaShow5} : '' } */} + { + bPackShow ? + + + {/*
    */} + {/* */} + {/*
    */} + +
    + + + + + + : '' + } + { commonUtils.isNotEmptyObject(previewUrl) && bShowReport ? + + +
    + +
    +
    +
    + : '' + } + + + + + } + + + + { + isGetDataVisible ? + + {isAllGetData} + , + , + ]} + > +

    {isGetData}

    +
    + : '' + } + { + props.materialsChooseVisible && !props.visibleModal ? + + + + : '' + } + + + { + props.productProcessInfoChooseVisible ? + + + : '' + } + + { + props.importFormDataVisible ? + + + + : '' + } + { + props.contextMenuModalVisible ? + + : '' + } + + ); +}); + +export default CommonBase(CommonSales(CommonBill)); diff --git a/src/components/Common/CommonCheckBill/index.less b/src/components/Common/CommonCheckBill/index.less new file mode 100644 index 0000000..78e7803 --- /dev/null +++ b/src/components/Common/CommonCheckBill/index.less @@ -0,0 +1,16 @@ +.pdfContainer{ + width: 100%; + height: 300px; +} +/* 处理分隔符间距 */ +:global{ + .commonCheckBillContainer .ant-divider-horizontal.ant-divider-with-text{ + margin: 5px 0 10px 0!important; + } + /* 主表分隔符间距 */ + .commonCheckBillContainer .flexArea .ant-divider-horizontal.ant-divider-with-text{ + margin: -8px 0!important; + } +} + + diff --git a/src/components/Common/CommonCheckBillEvent.js b/src/components/Common/CommonCheckBillEvent.js new file mode 100644 index 0000000..94f72e0 --- /dev/null +++ b/src/components/Common/CommonCheckBillEvent.js @@ -0,0 +1,5606 @@ +/* eslint-disable */ +import React, { Component } from 'react'; +import { Modal, Progress } from 'antd'; +import { message } from '@/utils/common/message'; +import moment from 'moment'; +import * as commonUtils from '@/utils/utils'; /* 通用方法 */ +import * as 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 = { + // 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.state = { + changleCustomerId: '', + dPackQtyChange: 0, + }; + this.copyName = ''; + 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 || formRoute === '/indexOee/commonOeeBill'))) { + 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); + let checkConfig = {}; + if (formRoute === '/indexOee/commonOeeBill') { /* OEE单据没有审核表 */ + checkConfig = undefined; + } else { + checkConfig = formData.filter(item => item.bGrd && item.sTbName === 'sysbillcheckresult')[0]; + } + let checkColumn = []; + if (commonUtils.isNotEmptyObject(checkConfig)) { + 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/commonCheckBill' || formRoute === '/indexOee/commonOeeBill') { + 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.includes('sales/autoView') && commonUtils.isNotEmptyArr(formData)) { /* 自定义布局(多层级) */ + /* 第二级 */ + console.log('fff::', formData); + const controlConfig = formData.length > 2 && commonUtils.isNotEmptyObject(formData[2]) && formData[2].bGrd && formData[2].bGrdVisible ? formData[2] : {}; + const controlColumn = commonUtils.isNotEmptyObject(controlConfig) ? commonFunc.getHeaderConfig(controlConfig) : []; + const materialsConfig = formData.length > 3 && commonUtils.isNotEmptyObject(formData[3]) && formData[3].bGrd && formData[3].bGrdVisible ? formData[3] : {}; + const materialsColumn = commonUtils.isNotEmptyObject(materialsConfig) ? commonFunc.getHeaderConfig(materialsConfig) : []; + const processConfig = formData.length > 4 && commonUtils.isNotEmptyObject(formData[4]) && formData[4].bGrd && formData[4].bGrdVisible ? formData[4] : {}; + const processColumn = commonUtils.isNotEmptyObject(processConfig) ? commonFunc.getHeaderConfig(processConfig) : []; + const packConfig = formData.length > 5 && commonUtils.isNotEmptyObject(formData[5]) && formData[5].bGrd && formData[5].bGrdVisible ? formData[5] : {}; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + const colorConfig = {}; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + + if (commonUtils.isNotEmptyObject(controlConfig)) { + config.controlConfig = controlConfig; + } + if (commonUtils.isNotEmptyObject(materialsConfig)) { + config.materialsConfig = materialsConfig; + } + if (commonUtils.isNotEmptyObject(processConfig)) { + config.processConfig = processConfig; + } + if (commonUtils.isNotEmptyObject(colorConfig)) { + config.colorConfig = colorConfig; + } + if (commonUtils.isNotEmptyObject(packConfig)) { + config.packConfig = packConfig; + } + addState1 = { + controlConfig, + controlColumn, + materialsConfig, + materialsColumn, + processConfig, + processColumn, + colorConfig, + colorColumn, + packConfig, + packColumn, + }; + 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 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, + }; + } + config.masterConfig = masterConfig; + config.slaveConfig = slaveConfig; + addState = await this.handleAdd(config, nextProps.app.currentPane.copyTo, true); + addState = { ...addState, ...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.includes('sales/autoView')) { + const controlConfig = formData.length > 2 && commonUtils.isNotEmptyObject(formData[2]) && formData[2].bGrd && formData[2].bGrdVisible ? formData[2] : {}; + const controlColumn = commonUtils.isNotEmptyObject(controlConfig) ? commonFunc.getHeaderConfig(controlConfig) : []; + const materialsConfig = formData.length > 3 && commonUtils.isNotEmptyObject(formData[3]) && formData[3].bGrd && formData[3].bGrdVisible ? formData[3] : {}; + const materialsColumn = commonUtils.isNotEmptyObject(materialsConfig) ? commonFunc.getHeaderConfig(materialsConfig) : []; + const processConfig = formData.length > 4 && commonUtils.isNotEmptyObject(formData[4]) && formData[4].bGrd && formData[4].bGrdVisible ? formData[4] : {}; + const processColumn = commonUtils.isNotEmptyObject(processConfig) ? commonFunc.getHeaderConfig(processConfig) : []; + const packConfig = formData.length > 5 && commonUtils.isNotEmptyObject(formData[5]) && formData[5].bGrd && formData[5].bGrdVisible ? formData[5] : {}; + let packColumn; + if (commonUtils.isNotEmptyObject(packConfig)) { + packColumn = commonFunc.getHeaderConfig(packConfig); + } + const colorConfig = {}; + let colorColumn; + if (commonUtils.isNotEmptyObject(colorConfig)) { + colorColumn = commonFunc.getHeaderConfig(colorConfig); + } + + this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig, masterConfig); + 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, + }); + } + } + } + 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' || formRoute === '/indexPage/commonCheckBill') { + 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' || formRoute === '/indexPage/commonCheckBill') { + 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) { + // const employeeConfig = formData.filter(item => item.bGrd && item.sTbName === 'mftmachineworkemployee')[0]; + // const employeeColumn = commonFunc.getHeaderConfig(employeeConfig); + // const masterConfig = formData.filter(item => item.bGrd && item.sTbName === 'MftMachineWork')[0]; + // const addState = (await this.props.handleGetDataOne({ + // name: 'master', configData: masterConfig, condition: {}, isWait: true, + // })); + // if (commonUtils.isNotEmptyObject(addState.masterData)) { + // addState.masterData.handleType = 'update'; + // } + // this.props.onSaveState({ + // employeeConfig, employeeColumn, masterConfig, ...addState, + // }); + 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 : ''; + const addStateMaster = await this.props.handleGetDataOne({ + name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, isWait: true, 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, ...addStateMaster }); + } else { + this.props.onSaveState({ ...addStateMaster }); + } + // if (commonUtils.isNotEmptyStr(getData.slaveData)) { + // const selectRowKey = getData.slaveData[0].sId; + // const selectRowKeyArr = []; + // selectRowKeyArr.push(selectRowKey); + // this.handleTableSelectRowChange('slave', selectRowKeyArr); + // } + } + if (commonUtils.isNotEmptyObject(masterConfig)) { + let bShowReport = true; /* 显示报表区域 */ + if (commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) { + const iIndexArea = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'bShowRepoprt'); + if (iIndexArea > -1) { + bShowReport = masterConfig.gdsconfigformslave[iIndexArea].bVisible; + } + } + if (bShowReport) { + this.handleBtnPreview(false, addStateMaster.masterData); + } + } + + 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 */ + let addStateControl = {}; + if (commonUtils.isNotEmptyObject(controlConfig)) { + 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); + } + if (commonUtils.isNotEmptyObject(materialsConfig)) { + this.props.handleGetDataSet({ + name: 'materials', + configData: materialsConfig, + condition: { sSqlCondition: { sParentId: sId } }, + }); + } + let addStateProcess = {}; + if (commonUtils.isNotEmptyObject(processConfig)) { + 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)) { + let models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials'; + let sFieldName = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'dProductQty' : 'dAuxiliaryQty'; + + /* 20210901标板问题 未清新增时,材料销售模块需要用换算数量进行业务计算 */ + if (sModelsType.includes('sales/materials') || sModelsType === 'sales/salesCheck') { /* 如果是材料销售模块/销售对账 如果是材料 则用换算数量*单价 算金额 */ + slaveRow.dAuxiliaryQty = slaveRow.dProductQty; + /* 材料逻辑计算 */ + if (commonUtils.isNotEmptyNumber('dMaterialsQty') && slaveRow.dMaterialsQty !== 0 && commonUtils.isNotEmptyObject(slaveRow.sMaterialsUnit)) { + let modelsNew = ''; + if (models === 'Product') { /* 计算前将Product替换为Materials */ + modelsNew = 'Materials'; + + const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ + const { dNetPrice } = app.decimals; + const dForeignPrice = slaveRow[`d${models}ForeignPrice`]; + if (commonUtils.isNotEmptyNumber(dForeignPrice)) { + /* 只有外币单价情況下 要算本位币单价 */ + const dProductPrice = commonUtils.convertFixNum(dForeignPrice * dCurrencyRate, dNetPrice); + slaveRow[`d${models}Price`] = dProductPrice; + } + + slaveRow[`dN${modelsNew}Price`] = slaveRow[`d${models}ForeignPrice`]; + slaveRow[`d${modelsNew}ForeignPrice`] = slaveRow[`d${models}ForeignPrice`]; + slaveRow[`d${modelsNew}Price`] = slaveRow[`d${models}Price`]; + slaveRow[`dN${modelsNew}Money`] = slaveRow[`dN${models}Price`]; + slaveRow[`dN${modelsNew}Money`] = slaveRow[`d${models}ForeignMoney`]; + slaveRow[`d${modelsNew}ForeignMoney`] = slaveRow[`d${models}ForeignMoney`]; + slaveRow[`d${modelsNew}Money`] = slaveRow[`d${models}Money`]; + slaveRow.bSalesMaterials = true;/* 材料销售 销售对账 材料计算 */ + models = 'Materials'; + sFieldName = commonUtils.isNotEmptyObject(sFieldName) ? sFieldName.replace('Product', 'Materials') : sFieldName; + } + } + } + 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 = commonUtils.isNotEmptyObject(slaveItem.sSlaveId) ? slaveItem.sSlaveId : slaveItem.sId;/* 翻单前的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.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 }; + packRow.sOrderSlaveId = slaveRow.sId; + + /* 将控制表中的合版备注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; + + /* 根据从表源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; + + 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'); + const slaveConfig = commonUtils.isEmptyObject(config) ? {} : config.slaveConfig; + if (!isWait) { + masterConfig = this.props.slaveConfig; + } + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } + } + 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 }; + }); + } + } + } + } + // if (sModelsType === 'cost/cosexpenseshare') { /* 新建费用分摊单据,从表的数据自动获取 */ + // const { sModelsId } = this.props; + // const url = `${commonConfig.server_host}costCenter/getCostCenterData?sModelsId=${sModelsId}`; + // const dataReturn = (await commonServices.postValueService(app.token, {}, url)).data; + // if (dataReturn.code === 1) { + // /* 获取数据集 */ + // const { rows } = dataReturn.dataset; + // rows.forEach((row) => { + // const tableDataRowAdd = row; + // tableDataRowAdd.handleType = 'add'; + // tableDataRowAdd.sId = commonUtils.createSid(); + // tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + // tableDataRowAdd.key = tableDataRowAdd.sId; + // tableDataRowAdd.bDefault = false; + // slaveData.push(tableDataRowAdd); + // }); + // } else { /* 失败 */ + // this.props.getServiceError(dataReturn); + // return []; + // } + // } + 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, + } = 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); + } + 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 { + // eslint-disable-next-line no-unused-vars + token, sModelsId, currentId, masterData, masterConfig, slaveConfig, checkConfig, billnosetting, app, sModelsType, controlConfig, materialsConfig, processConfig, colorConfig, packConfig, orderDetailConfig, 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 { 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,防止浏览器刷新时重新又变成新增。 + if (sModelsType !== 'commonOeeBill') { + 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 (false) { + await this.handleAudit(1); + } else { + await this.handleGetData(masterConfig, slaveConfig, checkConfig); + if ((sModelsType.includes('sales/salesOrder') || sModelsType.includes('sales/autoView') || sModelsType.includes('manufacture/workOrder')) && !commonUtils.isEmpty(controlConfig)) { + await this.handleGetMemoData(controlConfig, materialsConfig, processConfig, colorConfig, packConfig, masterConfig); + } 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, app, sModelsType, controlConfig, controlData, controlDelData, materialsConfig, materialsData, materialsDelData, processConfig, processData, processDelData, colorConfig, colorData, colorDelData, packConfig, packData, packDelData, orderDetailConfig, orderDetailData, orderDetailDelData, + } = 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 === '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') || sModelsType.includes('sales/autoView')) { + 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; + } + } + if (commonUtils.isNotEmptyObject(controlConfig)) { + data.push(commonBusiness.mergeData('control', controlConfig.sTbName, controlData, controlDelData)); + } + if (commonUtils.isNotEmptyObject(materialsConfig)) { + data.push(commonBusiness.mergeData('materials', materialsConfig.sTbName, materialsData, materialsDelData)); + } + if (commonUtils.isNotEmptyObject(processConfig)) { + 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)); + } + 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, 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; + // } + // } + // 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); + // } + // }; + + handleCopyFrom = async (obj) => { + const { + slaveData, masterData, masterConfig, + } = this.props; + this.copyName = obj.name; + /* 根据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; + } + } + 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, + } = 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, 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', + }); + } + 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(); + } + if (sModelsType !== 'commonOeeBill') { + this.handleDelDataSuccess(props); + } else { + message.info('删除成功!'); + } + } 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; + }; + + handleConfigChangeByRules = (name, sFieldName, changeValue, sId, dropDownData, isWait, tableDataRow) => { + const { + [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, [`${name}Config`]: tableConfig, + } = this.props; + console.log(name, sFieldName, changeValue, sId, dropDownData, isWait, tableData, sModelsType, sModelsId, token, app); + if (commonUtils.isNotEmptyObject(tableConfig) && tableConfig.gdsconfigformslave) { + const iIndex = tableConfig.gdsconfigformslave.findIndex(item => item.sName === sFieldName); + if (iIndex > -1) { + const sFiledConfig = tableConfig.gdsconfigformslave[iIndex]; + if (commonUtils.isNotEmptyObject(sFiledConfig)) { + const sRulesJson = sFiledConfig.sButtonEnabled; + if (commonUtils.isNotEmptyObject(sRulesJson) && commonUtils.isJSON(sRulesJson)) { + const sRulesObj = JSON.parse(sRulesJson); + if (commonUtils.isNotEmptyObject(sRulesObj)) { + const { showColumn, hideColumn, condition } = sRulesObj; + if (commonUtils.isNotEmptyArr(condition)) { + let flag = false; + for (const item of condition) { + const { + bFilterName, bFilterCondition, bFilterValue, + } = item; + if (bFilterCondition === '>') { + if (tableDataRow[bFilterName] > bFilterValue) { + flag = true; + } + } else if (bFilterCondition === '=') { + if (tableDataRow[bFilterName] === bFilterValue) { + flag = true; + } + } else if (bFilterCondition === '<') { + if (tableDataRow[bFilterName] < bFilterValue) { + flag = true; + } + } + } + if (flag) { + if (commonUtils.isNotEmptyArr(showColumn)) { + for (const column of showColumn) { + const iIndex = tableConfig.gdsconfigformslave.findIndex(item => item.sName === column); + if (iIndex > -1) { + const sFiledObj = tableConfig.gdsconfigformslave[iIndex]; + if (commonUtils.isNotEmptyObject(sFiledObj)) { + tableConfig.gdsconfigformslave[iIndex].bVisible = true; + } + } + } + } + if (commonUtils.isNotEmptyArr(hideColumn)) { + for (const column of hideColumn) { + const iIndex = tableConfig.gdsconfigformslave.findIndex(item => item.sName === column); + if (iIndex > -1) { + tableConfig.gdsconfigformslave[iIndex].bVisible = false; + } + } + } + // return tableConfig; + this.props.onSaveState({ [`${name}Config`]: tableConfig }); + } + } + } + } + } + } + } + } + + /** 表格数据更改 */ + // 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) { + 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 (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; + const sFormulaIdType = tableDataRow.bInverse ? 'sReComputeId' : 'sComputeId'; /* 正算、反算类型 */ + 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'); + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, sFormulaIdType, + }); + } + } 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'); + tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sReComputeId, sFormulaIdType, + }); + } 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'); + tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sComputeId, sFormulaIdType, + }); + } 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'); + tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ + token, sModelsId, masterData, tableDataRow, sReComputeId, sFormulaIdType, + }); + } 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; + } + + 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, controlData, + } = 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; + } else if (sFieldName === 'tDeliverDate') { + tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType; + } + slaveDataNew.push(tableDataRow); + } + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) { + if (bNewSlaveData) { + const slaveDataNew = []; + const allTableData = {}; + allTableData.master = returnData.masterData; + const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); + tableDataRowAdd.handleType = 'add'; + tableDataRowAdd.sId = commonUtils.createSid(); + tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRowAdd.key = tableDataRowAdd.sId; + tableDataRowAdd.bDefault = false; + tableDataRowAdd.iOrder = 1; + slaveDataNew.push(tableDataRowAdd); + addState.slaveData = slaveDataNew; + // this.props.onSaveState({ slaveData: slaveDataNew }); + } else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款 + if (commonUtils.isNotEmptyObject(masterData)) { + this.getCustomerReceipt({ masterData: returnData.masterData }); + } + } + } else if (sFieldName === 'sTestStandardId' || sFieldName === 'sTestStandardName') { + const { slaveDelData: slaveDelDataOld, slaveConfig, masterConfig } = this.props; + const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${returnData.masterData.sTestStandardId}`; + const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data; + const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; + if (dataReturn.code === 1) { + const returnSlaveData = dataReturn.dataset.rows; + slaveData.forEach((item) => { + item.handleType = 'del'; + slaveDelData.push(item); + }); + const slaveDataNew = []; + const newCopyTo = {}; + newCopyTo.master = masterData; + const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName'); + const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue'); + returnSlaveData.forEach((item, iIndex) => { + let tableDataRow = commonFunc.getDefaultData(slaveConfig, {}); + tableDataRow.handleType = 'add'; + tableDataRow.sId = commonUtils.createSid(); + tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null; + tableDataRow.key = tableDataRow.sId; + tableDataRow.iOrder = iIndex; + if (iConfigIndex > -1) { + tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段 + // tableDataRow.sTestReference = '15S|20S'; + const sTestReference = tableDataRow.sTestReference; + const sParamObj = {}; + if (commonUtils.isNotEmptyObject(sTestReference)) { + if (sTestReference.indexOf('|') >= 0) { + sTestReference.split('|').forEach((itemField) => { + sParamObj[itemField] = itemField; + }); + tableDataRow.sParamDropDownsActValue = sParamObj; + if (iSqlIndex > -1) { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql'; + } else { + slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = ''; + } + } + } + } + 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 }; + } + const tableAllData = { + }; + tableAllData.master = masterData; + tableAllData.slave = slaveData; + tableAllData.control = controlData; + const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true, tableAllData); + console.log('masterDataAfter::', masterDataAfter); + if (commonUtils.isNotEmptyObject(masterDataAfter)) { + if (masterDataAfter.bMultiTable) { + returnData.masterData = masterDataAfter.master; + if (commonUtils.isNotEmptyArr(masterDataAfter.slave)) { + returnData.slaveData = masterDataAfter.slave; + } + if (commonUtils.isNotEmptyArr(masterDataAfter.control)) { + returnData.controlData = masterDataAfter.control; + } + } else { + returnData.masterData = masterDataAfter; + } + } + if (isWait) { + return { ...returnData, ...addState, enabled: true }; + } else { + this.props.onSaveState({ ...returnData, ...addState, enabled: true }); + return returnData; + } + } + handleBtnPrint =async (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.handleTableAdd('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 }); + // }; + + 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) { + console.log('addState', addState); + 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) { + 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= 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; + }; + + /* 单据预览PDF */ + handleBtnPreview = async (isWait) => { + const { + app, sModelsId, masterConfig, masterData, slaveConfig, reportData, formRoute, enabled, + } = this.props; + if (formRoute === '/indexPage/commonCheckBill' && commonUtils.isNotEmptyObject(masterData) && !enabled) { + const { token } = app; + const queryFilter = {}; + queryFilter[masterConfig.sId] = { sId: masterData.sId }; + if (commonUtils.isNotEmptyObject(slaveConfig)) { + queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; + } + let sActiveId = ''; + const queryFilterJson = JSON.stringify(queryFilter); + /* 拿到打印报表名称 */ + let printReportName = 'report'; + if (commonUtils.isNotEmptyArr(reportData)) { + const iIndex = 0; + if (iIndex > -1) { + printReportName = reportData[iIndex].sReportName; + sActiveId = reportData[iIndex].sId; + } + } else { + message.error('没有报表模块!'); + return; + } + + /* 调用POST接口拿到PDF地址 */ + const dataUrl = `${commonConfig.file_host_ebc}printReport/printPreviewPdf/${sActiveId}/${printReportName}.pdf?${false ? 'fileType=.xlsx&' : ''}sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; + const value = { + queryFilter: queryFilterJson, + }; + const dataReturn = (await commonServices.postValueService(token, value, dataUrl)).data; + if (dataReturn.code === 1) { + const url = dataReturn.dataset.rows[0]; + if (commonUtils.isNotEmptyObject(url)) { + const previewUrl = `${commonConfig.file_host}file/downloadPreviewPdf?savePathStr=${url}`; + if (isWait) { + return previewUrl; + } else { + this.props.onSaveState({ previewUrl }); + } + } + } else { + this.props.getServiceError(dataReturn); + } + } + }; + + handleOpenPrintTab = (url) => { + const { dispatch } = this.props; + const newsId = '01251240115015952245193980'; /* 表格行的sId */ + const newKey = new Date().getTime().toString(); + const route = '/indexPage/printPdf'; + const title = '预览PDF'; + const sModelsType = 'print/printPdf'; + const previewUrl = url; + const pane = { + title, route, formId: newsId, key: newKey, sModelsType, previewUrl, + }; + dispatch({ type: 'app/addPane', payload: { pane } }); + }; + + handleCloseProductProcessInfoChooseModal = () => { + this.props.onSaveState({ + productProcessInfoChooseVisible: false, + }); + } + + render() { + const { masterData } = this.props; + const imgSrc = commonBusiness.handleAddIcon(masterData); + return ( + + ); + } + }; +}; diff --git a/src/components/Common/CommonColumnList.js b/src/components/Common/CommonColumnList.js new file mode 100644 index 0000000..31dc1fb --- /dev/null +++ b/src/components/Common/CommonColumnList.js @@ -0,0 +1,275 @@ +/** + * @Date: 2019-05-28T13:23:00+08:00 + * @Last modified time: 2019-05-29T15:33:03+08:00 + */ +/** + * Created by pengmin on 201210510. 该组件的作用是列表标题行通过存储过程返回值设定 不通过后台配置 + */ +import React, { Component } from 'react'; +import { Form } from '@ant-design/compatible'; +import '@ant-design/compatible/assets/index.css'; +import { Layout, Spin } from 'antd-v4'; +import CommonListEvent from './CommonListEvent';/* 继承销售模块业务功能 */ +import * as commonFunc from './commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ +import Toolbar from '../Common/ToolBar/ToolBarNew'; +import StaticEditTable from './CommonTable';/* 可编辑表格 */ +import styles from '../../index.less'; +import CommonBase from './CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from './commonBusiness';/* 单据业务功能 */ +import SearchComponent from './SearchComponent';/* 搜索组件 */ +import commonConfig from '../../utils/config'; +import * as commonUtils from '../../utils/utils'; +// import SlaveMemo from './SlaveMemo'; +import StaticEditTree from './Tree/StaticTree'; +import Eject from '../../assets/eject.svg';/* 弹出图标 */ +import Close from '../../assets/close.svg';/* 关闭图标 */ +import AntdDraggableModal from './AntdDraggableModal'; +import CommonListSelect from './CommonListSelect';/* 选择界面 */ + +const { Header, Content } = Layout; +let NoTotalData = ''; +class CommonList extends Component { + constructor(props) { + super(props); + this.state = { + }; + } + componentWillReceiveProps(nextProps) { + const { slaveData, slaveColumnNew } = nextProps; + /* 将数据集里中的字段作为标题行 */ + if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isEmpty(slaveColumnNew)) { + let column = []; + const slaveConfig = {}; + const gdsconfigformslave = []; + const slaveRow = slaveData[0]; + if (commonUtils.isNotEmptyObject(slaveRow)) { + for (const key of Object.keys(slaveRow)) { + if (commonUtils.isNotEmptyObject(key)) { + column.push({ + title: key, + dataIndex: key, + width: 120, + bFind: true, + bNotEmpty: false, /* 设置表格必填项*号 */ + }); + const configObj = {}; + configObj.bVisible = true; + if (key.includes('Id')) { + configObj.bVisible = false; + } + configObj.bNotEmpty = true; + configObj.showName = key; + configObj.sName = key; + configObj.iFitWidth = 120; + gdsconfigformslave.push(configObj); + } + } + slaveConfig.gdsconfigformslave = gdsconfigformslave; + column = commonFunc.getHeaderConfig(slaveConfig); + } + this.props.onSaveState({ slaveColumnNew: column, slaveColumn: column, slaveConfig }); + } + } + // ----------------------------数据修改回带end ---------------------------- // + handleEject = () => { + const { currentPane, panes } = this.props.app; + if (commonUtils.isNotEmptyArr(panes) && commonUtils.isNotEmptyObject(currentPane)) { + // const index = panes.indexOf(currentPane); + const index = panes.findIndex(item => item.formId === currentPane.formId && item.key === currentPane.key && item.notCurrentPane === currentPane.notCurrentPane && item.route === currentPane.route && item.title === currentPane.title && item.sModelsType === currentPane.sModelsType && item.sProcName === currentPane.sProcName); + /* 当前页签 */ + let currentTab = document.getElementById('navTabWrap').children[index]; + if (commonUtils.isEmpty(currentTab)) { + const oChildren = document.getElementById('navTabWrap').getElementsByClassName('ant-tabs-content')[0].children; + for (const child of oChildren) { + if (child.nodeName === 'DIV' && index !== undefined && child.getAttribute('id') === `navTabWrap-panel-${panes[index].key}`) { + currentTab = child; + } + } + } + // const currentTab = document.getElementById('tabs').getElementsByClassName('ant-tabs-content-no-animated')[0].children[index]; + if (!commonUtils.isEmpty(currentTab)) { + const filterTreeArr = currentTab.getElementsByClassName('xly-filter-tree');/* 获取当前页签下的树组件 */ + if (commonUtils.isNotEmptyArr(filterTreeArr)) { + const filterTree = filterTreeArr[0]; + if (filterTree.style.display === 'block') { + filterTree.style.display = 'none'; + } else { + filterTree.style.display = 'block'; + } + } + } + } + }; + /** 树节点选中 */ + handleTreeSelect = (name, checkedKeys, e) => { + this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ + }; + + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + handleSelectModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + + render() { + const { pageLoading } = this.props; + return ( +
    + +
    + +
    +
    +
    + ); + } +} + +const CommonListComponent = Form.create({ + mapPropsToFields(props) { + const { masterData } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form); + return obj; + }, +})((props) => { + const { + form, onReturnForm, slavePagination, slaveConfig, slaveColumn, isSmall, iHeight, logVisible, + } = props; + // isSmall将分页变小,以及去掉跳转页面和总条数记录 + /* 回带表单 */ + if (commonUtils.isNotEmptyObject(slavePagination)) { + if (isSmall) { + slavePagination.showTotal = null; + } + } + onReturnForm(form); + const pagination = { + pageSize: commonConfig.pageSize, + ...slavePagination, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const tableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableProps: { rowKey: 'sSlaveId', pagination, onChange: props.onTitleChange }, + onSaveState: props.onSaveState, + clearArray: props.clearArray, + readOnly: true, + isSmall, + sGroupByList: props.sGroupByList, + }; + const masterSum = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bSum && item.sName !== '') : []; + const masterTitleGroup = commonUtils.isNotEmptyObject(slaveColumn) ? slaveColumn.filter(item => commonUtils.isNotEmptyObject(item.title) && item.title.indexOf('-') > -1) : []; + const hasColumnGroup = masterTitleGroup.length; + if (masterSum.length > 0) { + NoTotalData = hasColumnGroup > 0 ? 'TitleGroup' : 'NoTitleGroup'; + } else { + NoTotalData = hasColumnGroup > 0 ? 'NoTotalData TitleGroup' : 'NoTotalData NoTitleGroup'; + } + // const mProps = { ...commonBusiness.createMemoProps('master', props)}; + + const name = 'filterTree'; + const treeProps = { + ...commonBusiness.getTreeTypes('tree', props), + isSearch: false, + checkable: false, + disabled: false, + checkedAll: false, + unChecked: false, + [`${name}Column`]: props[`${name}Column`], + [`${name}Config`]: props[`${name}Config`], + [`${name}Data`]: props[`${name}Data`], + getFloatNum: props.getFloatNum, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getDateFormat: props.getDateFormat, + onDoubleClick: props.onDoubleClick, + onSelect: props.onSelectTree, + expandedKeys: props.expandedKeys, + }; + const logProps = { + app: { + ...props.app, + currentPane: { + ...props.app.currentPane, + formRoute: '/indexPage/commonList', + route: '/indexPage/commonList', + name: 'logView', + config: props.logConfig, + select: props.onSelectModal.bind(this, 'logVisible'), + selectCancel: props.onCancelModal.bind(this, 'logVisible'), + sModelsType: 'modal/logView', + }, + }, + token: props.app.token, + slaveColumn: props.logColumn, /* 表头 */ + slaveConfig: props.logConfig, + slaveData: props.logData, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + pageLoading: false, + }; + return ( +
    + + {!commonUtils.isEmpty(props.routing) ? '' : +
    + +
    } + +
    + +
    + + + +
    +
    + {/* {!commonUtils.isEmpty(props.routing) ? '' : } */} + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + {commonUtils.isEmptyArr(treeProps.treeData) || !commonUtils.isEmpty(props.routing) ? '' : } + {commonUtils.isEmptyArr(treeProps.treeData) || !commonUtils.isEmpty(props.routing) ? '' : +
    + +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + close +
    +
    + } + { + logVisible ? + + + : '' + } + + ); +}); + +export default CommonBase(CommonListEvent(CommonList)); diff --git a/src/components/Common/CommonListA.js b/src/components/Common/CommonListA.js new file mode 100644 index 0000000..a9f7f2d --- /dev/null +++ b/src/components/Common/CommonListA.js @@ -0,0 +1,231 @@ +/* 此组件作用是 列表绕开注册 */ +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 CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ +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 CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import SearchComponent from '@/components/Common/SearchComponent';/* 搜索组件 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils'; +import StaticEditTree from '@/components/Common/Tree/StaticTree'; +import Eject from '@/assets/eject.svg';/* 弹出图标 */ +import Close from '@/assets/close.svg';/* 关闭图标 */ +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from '@/components/Common/CommonListSelect';/* 选择界面 */ + +const { Header, Content } = Layout; +let NoTotalData = ''; +class CommonListA extends Component { + handleEject = () => { + const { currentPane, panes } = this.props.app; + if (commonUtils.isNotEmptyArr(panes) && commonUtils.isNotEmptyObject(currentPane)) { + // const index = panes.indexOf(currentPane); + const index = panes.findIndex(item => item.formId === currentPane.formId && item.key === currentPane.key && item.notCurrentPane === currentPane.notCurrentPane && item.route === currentPane.route && item.title === currentPane.title && item.sModelsType === currentPane.sModelsType && item.sProcName === currentPane.sProcName); + /* 当前页签 */ + const currentTab = document.getElementById('navTabWrap').children[index]; + if (!commonUtils.isEmpty(currentTab)) { + const filterTreeArr = currentTab.getElementsByClassName('xly-filter-tree');/* 获取当前页签下的树组件 */ + if (commonUtils.isNotEmptyArr(filterTreeArr)) { + const filterTree = filterTreeArr[0]; + if (filterTree.style.display === 'block') { + filterTree.style.display = 'none'; + } else { + filterTree.style.display = 'block'; + } + } + } + } + }; + /** 树节点选中 */ + handleTreeSelect = (name, checkedKeys, e) => { + this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ + }; + + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + handleSelectModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + render() { + const { pageLoading } = this.props; + return ( +
    + +
    + +
    +
    +
    + ); + } +} + +const CommonListComponent = Form.create({ + mapPropsToFields(props) { + const { masterData } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form); + return obj; + }, +})((props) => { + const { + form, onReturnForm, slavePagination, slaveConfig, slaveColumn, isSmall, iHeight, logVisible, + } = props; + // isSmall将分页变小,以及去掉跳转页面和总条数记录 + /* 回带表单 */ + if (commonUtils.isNotEmptyObject(slavePagination)) { + if (isSmall) { + slavePagination.showTotal = null; + } + } + onReturnForm(form); + const pagination = { + pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, + ...slavePagination, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + const tableProps = { + ...commonBusiness.getTableTypes('slave', props), + tableProps: { rowKey: 'sSlaveId', pagination, onChange: props.onTitleChange }, + onSaveState: props.onSaveState, + clearArray: props.clearArray, + readOnly: true, + isSmall, + sGroupByList: props.sGroupByList, + }; + const masterSum = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bSum && item.sName !== '') : []; + const masterTitleGroup = commonUtils.isNotEmptyObject(slaveColumn) ? slaveColumn.filter(item => commonUtils.isNotEmptyObject(item.title) && item.title.indexOf('-') > -1) : []; + const hasColumnGroup = masterTitleGroup.length; + if (masterSum.length > 0) { + NoTotalData = hasColumnGroup > 0 ? 'TitleGroup' : 'NoTitleGroup'; + } else { + NoTotalData = hasColumnGroup > 0 ? 'NoTotalData TitleGroup' : 'NoTotalData NoTitleGroup'; + } + // const mProps = { ...commonBusiness.createMemoProps('master', props)}; + + const name = 'filterTree'; + const treeProps = { + ...commonBusiness.getTreeTypes('tree', props), + isSearch: false, + checkable: false, + disabled: false, + checkedAll: false, + unChecked: false, + [`${name}Column`]: props[`${name}Column`], + [`${name}Config`]: props[`${name}Config`], + [`${name}Data`]: props[`${name}Data`], + getFloatNum: props.getFloatNum, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getDateFormat: props.getDateFormat, + onDoubleClick: props.onDoubleClick, + onSelect: props.onSelectTree, + expandedKeys: props.expandedKeys, + }; + const logProps = { + app: { + ...props.app, + currentPane: { + ...props.app.currentPane, + formRoute: '/indexPage/commonList', + route: '/indexPage/commonList', + name: 'logView', + config: props.logConfig, + select: props.onSelectModal.bind(this, 'logVisible'), + selectCancel: props.onCancelModal.bind(this, 'logVisible'), + sModelsType: 'modal/logView', + }, + }, + token: props.app.token, + slaveColumn: props.logColumn, /* 表头 */ + slaveConfig: props.logConfig, + slaveData: props.logData, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + pageLoading: false, + }; + return ( +
    + + {!commonUtils.isEmpty(props.routing) ? '' : +
    + +
    } + +
    + +
    + + + +
    +
    + {/* {!commonUtils.isEmpty(props.routing) ? '' : } */} + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + {commonUtils.isEmptyArr(treeProps.treeData) || !commonUtils.isEmpty(props.routing) ? '' : } + {commonUtils.isEmptyArr(treeProps.treeData) || !commonUtils.isEmpty(props.routing) ? '' : +
    + +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + close +
    +
    + } + { + logVisible ? + + + : '' + } + { + props.bDataAuditProgress ? +
    + +
    : '' + + } + + ); +}); + +export default CommonBase(CommonListEvent(CommonListA)); diff --git a/src/components/Common/CommonListEvent.js b/src/components/Common/CommonListEvent.js index 7118792..53837a1 100644 --- a/src/components/Common/CommonListEvent.js +++ b/src/components/Common/CommonListEvent.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 new file mode 100644 index 0000000..edc74a4 --- /dev/null +++ b/src/components/Common/CommonListLeft/index.js @@ -0,0 +1,500 @@ +/* eslint-disable */ +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 { MessageOutlined, MinusOutlined } from '@ant-design/icons'; +import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ +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 CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ +import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ +import SearchComponent from '@/components/Common/SearchComponent';/* 搜索组件 */ +import commonConfig from '@/utils/config'; +import * as commonUtils from '@/utils/utils'; +import StaticEditTree from '@/components/Common/Tree/StaticTree'; +import Eject from '@/assets/eject.svg';/* 弹出图标 */ +import Close from '@/assets/close.svg';/* 关闭图标 */ +import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; +import CommonListSelect from '@/components/Common/CommonListSelect';/* 选择界面 */ +import WorkOrderSystemAddModal from '@/components/Common/WorkOrderSystem/WorkOrderSystemAdd'; +import WorkOrderSystemDetailModal from '@/components/Common/WorkOrderSystem/WorkOrderSystemDetail'; + +const { Header, Content } = Layout; +let NoTotalData = ''; +class CommonList extends Component { + constructor(props) { + super(props); + this.state = { + isRender: 0, + treeData: [], + pageSize: 20, + pageNum: 1, + expandAll: true, + expandedTreeKeys: [], + checkModelStatus: false, + defaultKey: 'unset', + slideFlag: localStorage.getItem(`treeSlide_${this.props.sModelsId}`) ? +localStorage.getItem(`treeSlide_${this.props.sModelsId}`) : 0, + }; + } + onTreeExpandChange = () => { + const oldState = this.state.expandAll; + const arr = []; + if (!oldState) { + this.props.treeData.forEach((item) => { + arr.push(item.sId + item.sProcessId + item.iOrder); + }); + } + this.setState({ + expandAll: !oldState, + expandedTreeKeys: arr, + }); + } + + handleEject = () => { + const { currentPane, panes } = this.props.app; + if (commonUtils.isNotEmptyArr(panes) && commonUtils.isNotEmptyObject(currentPane)) { + // const index = panes.indexOf(currentPane); + const index = panes.findIndex(item => item.formId === currentPane.formId && item.key === currentPane.key && item.notCurrentPane === currentPane.notCurrentPane && item.route === currentPane.route && item.title === currentPane.title && item.sModelsType === currentPane.sModelsType && item.sProcName === currentPane.sProcName); + /* 当前页签 */ + let currentTab = document.getElementById('navTabWrap').children[index]; + if (commonUtils.isEmpty(currentTab)) { + const oChildren = document.getElementById('navTabWrap').getElementsByClassName('ant-tabs-content')[0].children; + for (const child of oChildren) { + if (child.nodeName === 'DIV' && index !== undefined && child.getAttribute('id') === `navTabWrap-panel-${panes[index].key}`) { + currentTab = child; + } + } + } + if (!commonUtils.isEmpty(currentTab)) { + const filterTreeArr = currentTab.getElementsByClassName('xly-filter-tree');/* 获取当前页签下的树组件 */ + if (commonUtils.isNotEmptyArr(filterTreeArr)) { + const filterTree = filterTreeArr[0]; + if (filterTree.style.display === 'block') { + filterTree.style.display = 'none'; + } else { + filterTree.style.display = 'block'; + } + } + } + } + }; + /** 树节点选中 */ + handleTreeSelect = (name, checkedKeys, e) => { + this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ + }; + + handleCancelModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + handleSelectModal = (modelVisible) => { + this.props.onSaveState({ + [modelVisible]: false, + }); + } + + + render() { + const { pageLoading } = this.props; + return ( +
    + +
    + +
    +
    +
    + ); + } +} + +const CommonListComponent = Form.create({ + mapPropsToFields(props) { + const { masterData, masterConfig } = props; + const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); + return obj; + }, +})((props) => { + const { + form, onReturnForm, slavePagination, slaveConfig, slaveColumn, isSmall, iHeight, logVisible, sModelsType, slaveData, slaveFilterCondition, onTreeExpandChange, + flowHistroyId, flowHistroyVisible, app, expandAll, + } = props; + const { userinfo, token } = app; + // isSmall将分页变小,以及去掉跳转页面和总条数记录 + /* 回带表单 */ + if (commonUtils.isNotEmptyObject(slavePagination)) { + // if (isSmall) { + // slavePagination.showTotal = null; + // } + } + onReturnForm(form); + const pagination = { + pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, + ...slavePagination, + size: isSmall ? 'small' : 'large', + pageSizeOptions: commonConfig.pageSizeOptions, + showSizeChanger: !isSmall, + showQuickJumper: !isSmall, + }; + let slaveTreeData = []; + /* 包含子节点的通用列表 */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('childrenList') && commonUtils.isNotEmptyArr(slaveData)) { + const addSate = props.onGetSlaveTreeData(slaveData); + if (commonUtils.isNotEmptyObject(addSate)) { + // eslint-disable-next-line prefer-destructuring + slaveTreeData = addSate.slaveTreeData; + } + } else { + slaveTreeData = slaveData; + } + + + const tableProps = { + ...commonBusiness.getTableTypes('slave', props), + data: slaveTreeData, + tableProps: { rowKey: 'sSlaveId', pagination, onChange: props.onTitleChange }, + onSaveState: props.onSaveState, + clearArray: props.clearArray, + readOnly: true, + isSmall, + sGroupByList: props.sGroupByList, + customConfig: props.customConfig, + }; + /* 有树形的不用虚拟列表 */ + if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('childrenList') && commonUtils.isNotEmptyArr(slaveTreeData)) { + tableProps.noVlist = true; + } + const masterSum = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bSum && item.sName !== '') : []; + const masterTitleGroup = commonUtils.isNotEmptyObject(slaveColumn) ? slaveColumn.filter(item => commonUtils.isNotEmptyObject(item.title) && item.title.indexOf('-') > -1) : []; + const hasColumnGroup = masterTitleGroup.length; + if (masterSum.length > 0) { + NoTotalData = hasColumnGroup > 0 ? 'TitleGroup' : 'NoTitleGroup'; + } else { + NoTotalData = hasColumnGroup > 0 ? 'NoTotalData TitleGroup' : 'NoTotalData NoTitleGroup'; + } + // const mProps = { ...commonBusiness.createMemoProps('master', props)}; + + const name = 'filterTree'; + const treeProps = { + ...commonBusiness.getTreeTypes('tree', props), + isSearch: false, + checkable: false, + disabled: false, + checkedAll: false, + unChecked: false, + [`${name}Column`]: props[`${name}Column`], + [`${name}Config`]: props[`${name}Config`], + [`${name}Data`]: props[`${name}Data`], + getFloatNum: props.getFloatNum, + getSqlDropDownData: props.getSqlDropDownData, + getSqlCondition: props.getSqlCondition, + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, + getDateFormat: props.getDateFormat, + onDoubleClick: props.onDoubleClick, + onSelect: props.onSelectTree, + expandedKeys: props.expandedKeys, + }; + const logProps = { + app: { + ...props.app, + currentPane: { + ...props.app.currentPane, + formRoute: '/indexPage/commonList', + route: '/indexPage/commonList', + name: 'logView', + config: props.logConfig, + select: props.onSelectModal.bind(this, 'logVisible'), + selectCancel: props.onCancelModal.bind(this, 'logVisible'), + sModelsType: 'modal/logView', + }, + }, + token: props.app.token, + slaveColumn: props.logColumn, /* 表头 */ + slaveConfig: props.logConfig, + slaveData: props.logData, + dispatch: props.dispatch, + content: props.content, + id: new Date().getTime().toString(), + pageLoading: false, + }; + + const refreshSlaveTable = () => { + props.handleGetDataSet({ + name: 'slave', + configData: props.slaveConfig, + condition: { + pageNum: 1, + pageSize: slavePagination.pageSize, + bFilter: slaveFilterCondition, + }, + flag: true, + clearSelectData: true, + }); + }; + const workOrderSystemAddProps = { + ...props, + onAddWorkOrderSuccess: () => { + props.onSaveState({ workOrderSystemAddModalVisible: false }); + refreshSlaveTable(); + }, + }; + + let workOrderSystemDetailTitle = ''; + if (commonUtils.isNotEmptyObject(props.slaveCurrentData)) { + const { sTitle, sModuleName, tCreateDate } = props.slaveCurrentData; + /* eslint-disable */ + workOrderSystemDetailTitle = ( + <> + {sTitle} + {`菜单名称: ${sModuleName} ${Array(10) + .fill('\xa0') + .join('')} 创建时间: ${tCreateDate.split(' ')[0]}`} + + + ); + /* eslint-enable */ + } + + let customWidth = 224; + if (localStorage.getItem(`customProductionScheduleTreeWidth_${props.sModelsId}`) !== '') { + customWidth = localStorage.getItem(`customProductionScheduleTreeWidth_${props.sModelsId}`); + } + + const workOrderSystemDetailProps = { + ...props, + sId: commonUtils.isNotEmptyObject(props.slaveCurrentData) ? props.slaveCurrentData.sId : '', + refreshSlaveTable, + }; + + let addressStr = `${location.protocol}//${location.host}`; + if (sModelsType && sModelsType.includes('http')) { + addressStr = location.host; + } + + const sFlowUrl = `${commonConfig.server_host}process/historyListerp/{sBillId}/{sBrandsId}/{sSubsidiaryId}/{sUserName}/{token}`; + const flowHistrory = sFlowUrl !== undefined ? sFlowUrl.replace('{sBrandsId}', userinfo.sBrandsId).replace('{sSubsidiaryId}', userinfo.sSubsidiaryId).replace('{sUserName}', userinfo.sUserName).replace('{sUserId}', userinfo.sId) + .replace('{token}', token) + .replace('{ipAddress}', addressStr) + .replace('{sBillId}', flowHistroyId) : ''; + + const handleResizeLayout = (e) => { + const originX = e.pageX; + const originWidth = props.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].offsetWidth; + let offset = 0; + window.onmousemove = function (e2) { + offset = e2.pageX - originX; + props.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].style.width = `${originWidth + offset}px`; + props.treeDiv.getElementsByClassName('productionScheduleTree-content')[0].style.width = `calc(100% - ${originWidth + offset + 10}px)`; + }; + window.onmouseup = function () { + window.onmousemove = null; + window.onmousemove = null; + localStorage.setItem(`customProductionScheduleTreeWidth_${props.sModelsId}`, originWidth + offset + 10); + }; + }; + + return ( +
    + + {!commonUtils.isEmpty(props.routing) ? '' : +
    + +
    } + +
    + +
    + +
    +
    +
    +
    + + 工作中心 +
    +
    + { +
    + +
    + } + +
    +
    + + +
    + + + +
    + +
    + + + + + {/* {!commonUtils.isEmpty(props.routing) ? '' : } */} + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + {true ? '' : } + {true ? '' : +
    + +
    + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + close +
    +
    + } + { + logVisible ? + + + : '' + } + { + props.bDataAuditProgress ? +
    + +
    : '' + + } + { + commonUtils.isNotEmptyObject(slaveConfig) && + slaveConfig.sTbName === 'sys_workorder' && + props.bMin && + + } + { + props.workOrderSystemAddModalVisible && + + 新增 + + + /* eslint-enable */ + } + style={{ top: 10 }} + className={styles.workOrderSystemModal} + visible={props.workOrderSystemAddModalVisible && !props.bMin} + onCancel={props.onCancelModal.bind(this, 'workOrderSystemAddModalVisible')} + onOk={props.onSelectModal.bind(this, 'workOrderSystemAddModalVisible')} + footer={null} + > + + + } + { + props.workOrderSystemDetailModalVisible && + + + + } + { + flowHistroyVisible ? + + {/* eslint-disable-next-line jsx-a11y/iframe-has-title */} +