From 06274fc845a285e1f740efdd9e3e118f5b249d72 Mon Sep 17 00:00:00 2001 From: lj Date: Thu, 19 Dec 2024 11:54:22 +0800 Subject: [PATCH] =?UTF-8?q?ssctp=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ssctp | 1 - .../affixInterfaceSetting/config/BatchAdd.js | 114 ++ .../config/events/async.js | 79 + .../config/events/initTemplate.js | 60 + .../affixInterfaceSetting/config/index.js | 286 +++ .../affixInterfaceSetting/config/modal.js | 51 + .../businessSysRegis/config/events/async.js | 78 + .../config/events/initTemplate.js | 48 + .../dooroad/businessSysRegis/config/index.js | 171 ++ .../dooroad/businessSysRegis/config/modal.js | 70 + .../certificateOpenMode/config/BatchAdd.js | 114 ++ .../config/events/async.js | 79 + .../config/events/initTemplate.js | 61 + .../certificateOpenMode/config/index.js | 269 +++ .../certificateOpenMode/config/modal.js | 51 + .../dooroad/docOpen/config/BatchAdd.js | 121 ++ .../dooroad/docOpen/config/events/async.js | 79 + .../docOpen/config/events/initTemplate.js | 40 + src/ssctpaaa/dooroad/docOpen/config/index.js | 251 +++ .../dooroad/eventRegis/config/BatchAdd.js | 121 ++ .../dooroad/eventRegis/config/events/async.js | 79 + .../eventRegis/config/events/initTemplate.js | 60 + .../dooroad/eventRegis/config/index.js | 269 +++ .../dooroad/eventRegis/config/modal.js | 51 + .../imageInterfaceSetting/config/BatchAdd.js | 121 ++ .../config/events/async.js | 79 + .../config/events/initTemplate.js | 60 + .../imageInterfaceSetting/config/index.js | 286 +++ .../imageInterfaceSetting/config/modal.js | 51 + .../dooroad/linkvoucher/config/LinkVoucher.js | 76 + .../linkvoucher/config/events/afterEvent.js | 55 + .../linkvoucher/config/events/buttonEvent.js | 91 + .../linkvoucher/config/events/index.js | 5 + .../dooroad/linkvoucher/config/index.js | 8 + .../dooroad/linkvoucher/config/index.less | 31 + .../linkvoucher/config/initTemplate.js | 114 ++ .../dooroad/linkvoucher/config/presetVar.js | 21 + .../dooroad/linkvoucher/config/requestApi.js | 27 + .../config/approvalMonitoring.js | 215 +++ .../config/events/initTemplate.js | 92 + .../config/events/logicalEvents.js | 196 ++ .../approvalMonitoring/config/index.js | 8 + .../approvalMonitoring/config/index.less | 35 + src/ssctpaaa/public/common/requestApi.js | 48 + src/ssctpaaa/public/common/ssctpBaseEvents.js | 147 ++ .../public/common/ssctpProblemBaseEvents.js | 119 ++ src/ssctpaaa/public/components/README.md | 1 + .../public/image/billnoOpr/isappointed1.png | Bin 0 -> 1367 bytes .../image/billnoOpr/isleaderreject1.png | Bin 0 -> 870 bytes .../public/image/billnoOpr/ismereject1.png | Bin 0 -> 1457 bytes .../public/image/billnoOpr/isunapprove1.png | Bin 0 -> 1429 bytes .../public/image/billnoOpr/outerhandon.png | Bin 0 -> 1525 bytes .../public/image/billnoOpr/urgent1.png | Bin 0 -> 1073 bytes src/ssctpaaa/public/image/blacktheme.png | Bin 0 -> 5716 bytes src/ssctpaaa/public/image/blacktheme1.png | Bin 0 -> 8679 bytes src/ssctpaaa/public/image/exceed.png | Bin 0 -> 591 bytes src/ssctpaaa/public/image/gxicon1.png | Bin 0 -> 3990 bytes src/ssctpaaa/public/image/gxicon2.png | Bin 0 -> 4393 bytes src/ssctpaaa/public/image/gxicon3.png | Bin 0 -> 5424 bytes src/ssctpaaa/public/image/gxicon4.png | Bin 0 -> 4163 bytes src/ssctpaaa/public/image/gxicon5.png | Bin 0 -> 5686 bytes src/ssctpaaa/public/image/hangup1.png | Bin 0 -> 500 bytes src/ssctpaaa/public/image/isappointed1.png | Bin 0 -> 469 bytes src/ssctpaaa/public/image/isleaderreject1.png | Bin 0 -> 584 bytes src/ssctpaaa/public/image/ismereject1.png | Bin 0 -> 673 bytes src/ssctpaaa/public/image/isunapprove1.png | Bin 0 -> 563 bytes src/ssctpaaa/public/image/level1_1.png | Bin 0 -> 3189 bytes src/ssctpaaa/public/image/level1_2.png | Bin 0 -> 9861 bytes src/ssctpaaa/public/image/level2_1.png | Bin 0 -> 3162 bytes src/ssctpaaa/public/image/level2_2.png | Bin 0 -> 9821 bytes src/ssctpaaa/public/image/level3_1.png | Bin 0 -> 3276 bytes src/ssctpaaa/public/image/level3_2.png | Bin 0 -> 10083 bytes src/ssctpaaa/public/image/level4_1.png | Bin 0 -> 3198 bytes src/ssctpaaa/public/image/level4_2.png | Bin 0 -> 9819 bytes src/ssctpaaa/public/image/level5_1.png | Bin 0 -> 3165 bytes src/ssctpaaa/public/image/level5_2.png | Bin 0 -> 9875 bytes .../public/image/nccicon/business-dd.svg | 25 + .../public/image/nccicon/business-zy.svg | 24 + .../public/image/nccicon/industry-dd.svg | 25 + .../public/image/nccicon/industry-zy.svg | 24 + .../public/image/nccicon/simple-dd.svg | 33 + .../public/image/nccicon/simple-zy.svg | 37 + .../public/image/nccicon/youth-dd.svg | 1 + .../public/image/nccicon/youth-zy.svg | 1 + src/ssctpaaa/public/image/no-data.png | Bin 0 -> 3073 bytes src/ssctpaaa/public/image/pre.png | Bin 0 -> 595 bytes src/ssctpaaa/public/image/tpbg.png | Bin 0 -> 3040 bytes src/ssctpaaa/public/image/tpbg1.png | Bin 0 -> 4034 bytes src/ssctpaaa/public/image/urgent1.png | Bin 0 -> 553 bytes src/ssctpaaa/public/image/ywicon1.png | Bin 0 -> 15211 bytes src/ssctpaaa/public/image/ywicon2.png | Bin 0 -> 18779 bytes src/ssctpaaa/public/image/ywicon3.png | Bin 0 -> 11624 bytes src/ssctpaaa/public/image/ywicon4.png | Bin 0 -> 17224 bytes .../public/lang/standard/simpchn/7010.json | 333 ++++ .../public/lang/standard/simpchn/7011.json | 4 + src/ssctpaaa/public/music/ssctp_newbill.mp3 | Bin 0 -> 21029 bytes .../refer/sscbd/CreditRuleTreeRef/index.js | 88 + .../refer/sscbd/SSCBusiTypeGridRef/index.js | 56 + .../refer/sscbd/SSCNodeGridRef/index.js | 56 + .../refer/sscbd/SSCOtsGridRef/index.js | 56 + .../sscbd/SSCParticipantGridRef/index.js | 57 + .../refer/sscbd/SSCSMUserGridRef/index.js | 57 + .../refer/sscbd/SSCUnitGridRef/index.js | 7 + .../refer/sscbd/SSCWorkGroupGridRef/index.js | 88 + .../SSCWorkGroupUserTreeGridRef/index.js | 56 + .../intelligentapprove/config/config.json | 1 + .../intelligentapprove/config/events.js | 24 + .../report/intelligentapprove/config/index.js | 47 + .../config/config.json | 1 + .../intelligentapprovedetail/config/events.js | 49 + .../intelligentapprovedetail/config/index.js | 47 + .../problemmattermutidim/config/config.json | 1 + .../problemmattermutidim/config/events.js | 22 + .../problemmattermutidim/config/index.js | 50 + .../problemmattersum/config/config.json | 1 + .../report/problemmattersum/config/events.js | 22 + .../report/problemmattersum/config/index.js | 51 + .../report/problemunitsum/config/config.json | 1 + .../report/problemunitsum/config/events.js | 22 + .../report/problemunitsum/config/index.js | 51 + .../sscchargeman/onduty/list/index.js | 8 + .../sscchargeman/onduty/list/initTemplate.js | 19 + .../sscchargeman/onduty/list/onduty.js | 131 ++ .../sscchargeman/onduty/list/presetVar.js | 9 + .../sscchargeman/onduty/list/requestApi.js | 15 + .../list/components/distributeUserList.js | 100 ++ .../list/components/operateNote.less | 22 + .../list/components/queryOperation.js | 53 + .../sscchargeman/list/events/fixedTemplet.js | 413 +++++ .../sscchargeman/list/events/getListButton.js | 78 + .../sscchargeman/list/events/index.js | 9 + .../sscchargeman/list/events/initTemPlate.js | 149 ++ .../list/events/listButtonClick.js | 189 ++ .../sscchargeman/list/events/query.js | 164 ++ .../sscchargeman/sscchargeman/list/index.js | 7 + .../sscchargeman/sscchargeman/list/index.less | 114 ++ .../sscchargeman/list/presetVar.js | 84 + .../sscchargeman/list/requestApi.js | 83 + .../sscchargeman/list/sscChargemanList.js | 374 ++++ .../list/components/distributeUserList.js | 99 ++ .../list/events/buttonClick.js | 43 + .../list/events/fixedTemplate.js | 32 + .../list/events/getListBtn.js | 92 + .../sscprioritymanage/list/events/index.js | 7 + .../list/events/initTemPlate.js | 76 + .../list/events/listButtonClick.js | 107 ++ .../sscprioritymanage/list/index.js | 6 + .../sscprioritymanage/list/index.less | 211 +++ .../sscprioritymanage/list/requestApi.js | 84 + .../list/sscPriorityManage.js | 349 ++++ .../sscchargeman/widgets/jrcll/config.json | 4 + .../sscchargeman/widgets/jrcll/index.js | 205 +++ .../sscchargeman/widgets/jrcll/index.less | 23 + .../sscchargeman/widgets/ywgl/config.json | 4 + .../sscchargeman/widgets/ywgl/index.js | 223 +++ .../sscchargeman/widgets/ywgl/index.less | 60 + .../sscchargeman/widgets/zsrwl/config.json | 4 + .../sscchargeman/widgets/zsrwl/index.js | 198 +++ .../sscchargeman/widgets/zsrwl/index.less | 23 + .../sscsearch/sscsearch/list/events/index.js | 7 + .../sscsearch/list/events/initTemplate.js | 107 ++ .../sscsearch/list/events/listButtonClick.js | 37 + .../sscsearch/sscsearch/list/events/query.js | 60 + .../sscsearch/sscsearch/list/index.js | 7 + .../sscsearch/sscsearch/list/index.less | 282 +++ .../sscsearch/sscsearch/list/presetVar.js | 13 + .../sscsearch/sscsearch/list/requestApi.js | 37 + .../sscsearch/sscsearch/list/sscSearch.js | 290 +++ .../approvalrules/config/approvalrules.js | 163 ++ .../approvalrules/config/drawFormList.js | 390 ++++ .../approvalrules/config/events/afterEvent.js | 13 + .../config/events/buttonClick.js | 176 ++ .../approvalrules/config/events/index.js | 14 + .../config/events/initTemplate.js | 103 ++ .../approvalrules/config/events/query.js | 123 ++ .../sscsetting/approvalrules/config/index.css | 8 + .../sscsetting/approvalrules/config/index.js | 7 + .../approvalrules/config/index.less | 184 ++ .../approvalrules/config/requestApi.js | 133 ++ .../sscsetting/clientage/config/clientage.js | 241 +++ .../clientage/config/events/afterEvent.js | 117 ++ .../clientage/config/events/buttonClick.js | 232 +++ .../config/events/dataModelChange.js | 25 + .../clientage/config/events/fixedTemplet.js | 83 + .../clientage/config/events/index.js | 9 + .../clientage/config/events/initTemplate.js | 84 + .../clientage/config/events/query.js | 86 + .../config/events/selectedChangeEvent.js | 10 + .../config/events/tableExtendButtonClick.js | 23 + .../sscsetting/clientage/config/index.js | 6 + .../sscsetting/clientage/config/index.less | 58 + .../sscsetting/clientage/config/requestApi.js | 119 ++ .../dispatchrules/config/dispatchrules.js | 154 ++ .../dispatchrules/config/drawFormList.js | 316 ++++ .../dispatchrules/config/events/afterEvent.js | 42 + .../config/events/buttonClick.js | 107 ++ .../dispatchrules/config/events/index.js | 14 + .../config/events/initTemplate.js | 39 + .../dispatchrules/config/events/query.js | 122 ++ .../sscsetting/dispatchrules/config/index.css | 8 + .../sscsetting/dispatchrules/config/index.js | 7 + .../dispatchrules/config/index.less | 189 ++ .../dispatchrules/config/requestApi.js | 133 ++ .../ssccloudunit/config/events/afterEvent.js | 7 + .../ssccloudunit/config/events/buttonClick.js | 74 + .../ssccloudunit/config/events/index.js | 8 + .../config/events/initTemPlate.js | 56 + .../config/events/tableModelConfirm.js | 24 + .../sscsetting/ssccloudunit/config/index.css | 16 + .../sscsetting/ssccloudunit/config/index.js | 96 + .../sscsetting/ssccloudunit/config/index.less | 17 + .../ssccloudunit/config/requestApi.js | 46 + .../sscladerule/config/events/afterEvent.js | 54 + .../sscladerule/config/events/buttonClick.js | 490 +++++ .../sscladerule/config/events/fixedTpl.js | 224 +++ .../sscladerule/config/events/index.js | 9 + .../sscladerule/config/events/initTemPlate.js | 120 ++ .../sscladerule/config/events/query.js | 77 + .../sscsetting/sscladerule/config/index.js | 291 +++ .../sscsetting/sscladerule/config/index.less | 124 ++ .../sscladerule/config/requestApi.js | 51 + .../sscpriority/config/TreeTable.js | 265 +++ .../sscpriority/config/events/afterEvent.js | 28 + .../sscpriority/config/events/buttonClick.js | 256 +++ .../sscpriority/config/events/fixedTemplet.js | 184 ++ .../sscpriority/config/events/index.js | 9 + .../sscpriority/config/events/initTemplate.js | 102 ++ .../config/events/tableExtendButtonClick.js | 91 + .../sscsetting/sscpriority/config/index.js | 8 + .../sscsetting/sscpriority/config/index.less | 89 + .../sscpriority/config/requestApi.js | 75 + .../sscunit/config/events/afterEvent.js | 17 + .../sscunit/config/events/buttonClick.js | 51 + .../sscsetting/sscunit/config/events/index.js | 12 + .../sscunit/config/events/initTemplate.js | 21 + .../sscsetting/sscunit/config/index.js | 7 + .../sscsetting/sscunit/config/index.less | 161 ++ .../sscsetting/sscunit/config/requestApi.js | 79 + .../sscsetting/sscunit/config/sscunit.js | 304 ++++ .../sscsetting/widgets/spgz/config.json | 4 + src/ssctpaaa/sscsetting/widgets/spgz/index.js | 125 ++ .../sscsetting/widgets/spgz/index.less | 42 + .../workinggroup/config/events/afterEvent.js | 53 + .../config/events/formEveManager.js | 422 +++++ .../workinggroup/config/events/index.js | 9 + .../config/events/initTemplate.js | 105 ++ .../workinggroup/config/events/query.js | 106 ++ .../config/events/treeEveManager.js | 345 ++++ .../sscsetting/workinggroup/config/index.css | 6 + .../sscsetting/workinggroup/config/index.js | 6 + .../sscsetting/workinggroup/config/index.less | 234 +++ .../workinggroup/config/requestApi.js | 216 +++ .../workinggroup/config/workgroup.js | 637 +++++++ .../config/events/affixButtonClick.js | 54 + .../config/events/buttonClick.js | 98 + .../workinggroupuser/config/events/index.js | 7 + .../config/events/initTemPlate.js | 696 ++++++++ .../config/events/managerWorkUser.js | 430 +++++ .../workinggroupuser/config/index.css | 6 + .../workinggroupuser/config/index.js | 6 + .../workinggroupuser/config/index.less | 408 +++++ .../workinggroupuser/config/requestApi.js | 34 + .../config/workingGroupUser.js | 253 +++ .../sscuser/list/components/AdjustDialog.js | 67 + .../list/components/CashierRejectDialog.js | 62 + .../sscuser/list/components/creditApproval.js | 239 +++ .../sscuser/list/components/getTask.js | 34 + .../sscuser/list/components/handonDialog.js | 74 + .../list/components/imagAndVoucherHandle.js | 82 + .../sscuser/list/components/rejectDialog.js | 307 ++++ .../sscuser/list/components/unAdjustDialog.js | 67 + .../sscuser/list/components/unHandonDialog.js | 67 + src/ssctpaaa/sscuser/sscuser/list/config.json | 4 + .../sscuser/sscuser/list/events/Showtipss.js | 92 + .../sscuser/list/events/buttonClick.js | 161 ++ .../sscuser/list/events/cardButtonClick.js | 214 +++ .../sscuser/list/events/fixedTemplate.js | 57 + .../sscuser/sscuser/list/events/getListBtn.js | 106 ++ .../sscuser/sscuser/list/events/index.js | 11 + .../sscuser/list/events/initTemPlate.js | 268 +++ .../sscuser/list/events/listButtonClick.js | 78 + .../sscuser/list/events/onRowDoubleClick.js | 6 + .../sscuser/list/events/paginationClick.js | 164 ++ .../sscuser/list/events/reloadBillPage.js | 53 + .../sscuser/list/events/timedRefresh.js | 109 ++ src/ssctpaaa/sscuser/sscuser/list/index.js | 6 + src/ssctpaaa/sscuser/sscuser/list/index.less | 792 +++++++++ .../sscuser/sscuser/list/requestApi.js | 280 +++ .../sscuser/sscuser/list/sscUserList.js | 1579 +++++++++++++++++ .../sscuser/widgets/bzclqk/config.json | 4 + src/ssctpaaa/sscuser/widgets/bzclqk/index.js | 132 ++ .../sscuser/widgets/bzclqk/index.less | 64 + .../widgets/linkquery/components/card.js | 83 + .../widgets/linkquery/components/index.less | 17 + .../widgets/linkquery/components/list.js | 115 ++ .../widgets/linkquery/components/query.js | 81 + .../sscuser/widgets/linkquery/index.js | 53 + .../sscuser/widgets/linkquery/requestApi.js | 36 + src/ssctpaaa/sscuser/widgets/rwcl/config.json | 4 + src/ssctpaaa/sscuser/widgets/rwcl/index.js | 246 +++ src/ssctpaaa/sscuser/widgets/rwcl/index.less | 67 + .../sscuser/widgets/rwcll/config.json | 4 + src/ssctpaaa/sscuser/widgets/rwcll/index.js | 283 +++ src/ssctpaaa/sscuser/widgets/rwcll/index.less | 95 + src/ssctpaaa/sscuser/widgets/rwzt/config.json | 4 + src/ssctpaaa/sscuser/widgets/rwzt/index.js | 90 + src/ssctpaaa/sscuser/widgets/rwzt/index.less | 1 + 307 files changed, 28358 insertions(+), 1 deletion(-) delete mode 160000 src/ssctp create mode 100644 src/ssctpaaa/dooroad/affixInterfaceSetting/config/BatchAdd.js create mode 100644 src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/affixInterfaceSetting/config/index.js create mode 100644 src/ssctpaaa/dooroad/affixInterfaceSetting/config/modal.js create mode 100644 src/ssctpaaa/dooroad/businessSysRegis/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/businessSysRegis/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/businessSysRegis/config/index.js create mode 100644 src/ssctpaaa/dooroad/businessSysRegis/config/modal.js create mode 100644 src/ssctpaaa/dooroad/certificateOpenMode/config/BatchAdd.js create mode 100644 src/ssctpaaa/dooroad/certificateOpenMode/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/certificateOpenMode/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/certificateOpenMode/config/index.js create mode 100644 src/ssctpaaa/dooroad/certificateOpenMode/config/modal.js create mode 100644 src/ssctpaaa/dooroad/docOpen/config/BatchAdd.js create mode 100644 src/ssctpaaa/dooroad/docOpen/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/docOpen/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/docOpen/config/index.js create mode 100644 src/ssctpaaa/dooroad/eventRegis/config/BatchAdd.js create mode 100644 src/ssctpaaa/dooroad/eventRegis/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/eventRegis/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/eventRegis/config/index.js create mode 100644 src/ssctpaaa/dooroad/eventRegis/config/modal.js create mode 100644 src/ssctpaaa/dooroad/imageInterfaceSetting/config/BatchAdd.js create mode 100644 src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/async.js create mode 100644 src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/imageInterfaceSetting/config/index.js create mode 100644 src/ssctpaaa/dooroad/imageInterfaceSetting/config/modal.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/LinkVoucher.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/events/afterEvent.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/events/buttonEvent.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/events/index.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/index.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/index.less create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/initTemplate.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/presetVar.js create mode 100644 src/ssctpaaa/dooroad/linkvoucher/config/requestApi.js create mode 100644 src/ssctpaaa/intelligentApproval/approvalMonitoring/config/approvalMonitoring.js create mode 100644 src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/initTemplate.js create mode 100644 src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/logicalEvents.js create mode 100644 src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.js create mode 100644 src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.less create mode 100644 src/ssctpaaa/public/common/requestApi.js create mode 100644 src/ssctpaaa/public/common/ssctpBaseEvents.js create mode 100644 src/ssctpaaa/public/common/ssctpProblemBaseEvents.js create mode 100644 src/ssctpaaa/public/components/README.md create mode 100644 src/ssctpaaa/public/image/billnoOpr/isappointed1.png create mode 100644 src/ssctpaaa/public/image/billnoOpr/isleaderreject1.png create mode 100644 src/ssctpaaa/public/image/billnoOpr/ismereject1.png create mode 100644 src/ssctpaaa/public/image/billnoOpr/isunapprove1.png create mode 100644 src/ssctpaaa/public/image/billnoOpr/outerhandon.png create mode 100644 src/ssctpaaa/public/image/billnoOpr/urgent1.png create mode 100644 src/ssctpaaa/public/image/blacktheme.png create mode 100644 src/ssctpaaa/public/image/blacktheme1.png create mode 100644 src/ssctpaaa/public/image/exceed.png create mode 100644 src/ssctpaaa/public/image/gxicon1.png create mode 100644 src/ssctpaaa/public/image/gxicon2.png create mode 100644 src/ssctpaaa/public/image/gxicon3.png create mode 100644 src/ssctpaaa/public/image/gxicon4.png create mode 100644 src/ssctpaaa/public/image/gxicon5.png create mode 100644 src/ssctpaaa/public/image/hangup1.png create mode 100644 src/ssctpaaa/public/image/isappointed1.png create mode 100644 src/ssctpaaa/public/image/isleaderreject1.png create mode 100644 src/ssctpaaa/public/image/ismereject1.png create mode 100644 src/ssctpaaa/public/image/isunapprove1.png create mode 100644 src/ssctpaaa/public/image/level1_1.png create mode 100644 src/ssctpaaa/public/image/level1_2.png create mode 100644 src/ssctpaaa/public/image/level2_1.png create mode 100644 src/ssctpaaa/public/image/level2_2.png create mode 100644 src/ssctpaaa/public/image/level3_1.png create mode 100644 src/ssctpaaa/public/image/level3_2.png create mode 100644 src/ssctpaaa/public/image/level4_1.png create mode 100644 src/ssctpaaa/public/image/level4_2.png create mode 100644 src/ssctpaaa/public/image/level5_1.png create mode 100644 src/ssctpaaa/public/image/level5_2.png create mode 100644 src/ssctpaaa/public/image/nccicon/business-dd.svg create mode 100644 src/ssctpaaa/public/image/nccicon/business-zy.svg create mode 100644 src/ssctpaaa/public/image/nccicon/industry-dd.svg create mode 100644 src/ssctpaaa/public/image/nccicon/industry-zy.svg create mode 100644 src/ssctpaaa/public/image/nccicon/simple-dd.svg create mode 100644 src/ssctpaaa/public/image/nccicon/simple-zy.svg create mode 100644 src/ssctpaaa/public/image/nccicon/youth-dd.svg create mode 100644 src/ssctpaaa/public/image/nccicon/youth-zy.svg create mode 100644 src/ssctpaaa/public/image/no-data.png create mode 100644 src/ssctpaaa/public/image/pre.png create mode 100644 src/ssctpaaa/public/image/tpbg.png create mode 100644 src/ssctpaaa/public/image/tpbg1.png create mode 100644 src/ssctpaaa/public/image/urgent1.png create mode 100644 src/ssctpaaa/public/image/ywicon1.png create mode 100644 src/ssctpaaa/public/image/ywicon2.png create mode 100644 src/ssctpaaa/public/image/ywicon3.png create mode 100644 src/ssctpaaa/public/image/ywicon4.png create mode 100644 src/ssctpaaa/public/lang/standard/simpchn/7010.json create mode 100644 src/ssctpaaa/public/lang/standard/simpchn/7011.json create mode 100644 src/ssctpaaa/public/music/ssctp_newbill.mp3 create mode 100644 src/ssctpaaa/refer/sscbd/CreditRuleTreeRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCBusiTypeGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCNodeGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCOtsGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCParticipantGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCSMUserGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCUnitGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCWorkGroupGridRef/index.js create mode 100644 src/ssctpaaa/refer/sscbd/SSCWorkGroupUserTreeGridRef/index.js create mode 100644 src/ssctpaaa/report/intelligentapprove/config/config.json create mode 100644 src/ssctpaaa/report/intelligentapprove/config/events.js create mode 100644 src/ssctpaaa/report/intelligentapprove/config/index.js create mode 100644 src/ssctpaaa/report/intelligentapprovedetail/config/config.json create mode 100644 src/ssctpaaa/report/intelligentapprovedetail/config/events.js create mode 100644 src/ssctpaaa/report/intelligentapprovedetail/config/index.js create mode 100644 src/ssctpaaa/report/problemmattermutidim/config/config.json create mode 100644 src/ssctpaaa/report/problemmattermutidim/config/events.js create mode 100644 src/ssctpaaa/report/problemmattermutidim/config/index.js create mode 100644 src/ssctpaaa/report/problemmattersum/config/config.json create mode 100644 src/ssctpaaa/report/problemmattersum/config/events.js create mode 100644 src/ssctpaaa/report/problemmattersum/config/index.js create mode 100644 src/ssctpaaa/report/problemunitsum/config/config.json create mode 100644 src/ssctpaaa/report/problemunitsum/config/events.js create mode 100644 src/ssctpaaa/report/problemunitsum/config/index.js create mode 100644 src/ssctpaaa/sscchargeman/onduty/list/index.js create mode 100644 src/ssctpaaa/sscchargeman/onduty/list/initTemplate.js create mode 100644 src/ssctpaaa/sscchargeman/onduty/list/onduty.js create mode 100644 src/ssctpaaa/sscchargeman/onduty/list/presetVar.js create mode 100644 src/ssctpaaa/sscchargeman/onduty/list/requestApi.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/components/distributeUserList.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/components/operateNote.less create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/components/queryOperation.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/fixedTemplet.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/getListButton.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/index.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/listButtonClick.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/events/query.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/index.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/index.less create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/presetVar.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/requestApi.js create mode 100644 src/ssctpaaa/sscchargeman/sscchargeman/list/sscChargemanList.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/components/distributeUserList.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/buttonClick.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/fixedTemplate.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/getListBtn.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/index.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/listButtonClick.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.less create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/requestApi.js create mode 100644 src/ssctpaaa/sscchargeman/sscprioritymanage/list/sscPriorityManage.js create mode 100644 src/ssctpaaa/sscchargeman/widgets/jrcll/config.json create mode 100644 src/ssctpaaa/sscchargeman/widgets/jrcll/index.js create mode 100644 src/ssctpaaa/sscchargeman/widgets/jrcll/index.less create mode 100644 src/ssctpaaa/sscchargeman/widgets/ywgl/config.json create mode 100644 src/ssctpaaa/sscchargeman/widgets/ywgl/index.js create mode 100644 src/ssctpaaa/sscchargeman/widgets/ywgl/index.less create mode 100644 src/ssctpaaa/sscchargeman/widgets/zsrwl/config.json create mode 100644 src/ssctpaaa/sscchargeman/widgets/zsrwl/index.js create mode 100644 src/ssctpaaa/sscchargeman/widgets/zsrwl/index.less create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/events/index.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/events/listButtonClick.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/events/query.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/index.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/index.less create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/presetVar.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/requestApi.js create mode 100644 src/ssctpaaa/sscsearch/sscsearch/list/sscSearch.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/approvalrules.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/drawFormList.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/events/query.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/index.css create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/index.js create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/index.less create mode 100644 src/ssctpaaa/sscsetting/approvalrules/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/clientage.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/dataModelChange.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/fixedTemplet.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/query.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/selectedChangeEvent.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/events/tableExtendButtonClick.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/index.js create mode 100644 src/ssctpaaa/sscsetting/clientage/config/index.less create mode 100644 src/ssctpaaa/sscsetting/clientage/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/dispatchrules.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/drawFormList.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/events/query.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/index.css create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/index.js create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/index.less create mode 100644 src/ssctpaaa/sscsetting/dispatchrules/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/events/tableModelConfirm.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/index.css create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/index.js create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/index.less create mode 100644 src/ssctpaaa/sscsetting/ssccloudunit/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/fixedTpl.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/events/query.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/index.js create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/index.less create mode 100644 src/ssctpaaa/sscsetting/sscladerule/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/TreeTable.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/fixedTemplet.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/events/tableExtendButtonClick.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/index.js create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/index.less create mode 100644 src/ssctpaaa/sscsetting/sscpriority/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/index.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/index.less create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/sscunit/config/sscunit.js create mode 100644 src/ssctpaaa/sscsetting/widgets/spgz/config.json create mode 100644 src/ssctpaaa/sscsetting/widgets/spgz/index.js create mode 100644 src/ssctpaaa/sscsetting/widgets/spgz/index.less create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/afterEvent.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/formEveManager.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/initTemplate.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/query.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/events/treeEveManager.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/index.css create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/index.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/index.less create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/workinggroup/config/workgroup.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/events/affixButtonClick.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/events/buttonClick.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/events/index.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/events/managerWorkUser.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/index.css create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/index.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/index.less create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/requestApi.js create mode 100644 src/ssctpaaa/sscsetting/workinggroupuser/config/workingGroupUser.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/AdjustDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/CashierRejectDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/creditApproval.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/getTask.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/handonDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/imagAndVoucherHandle.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/rejectDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/unAdjustDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/components/unHandonDialog.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/config.json create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/Showtipss.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/buttonClick.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/cardButtonClick.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/fixedTemplate.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/getListBtn.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/index.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/initTemPlate.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/listButtonClick.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/onRowDoubleClick.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/paginationClick.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/reloadBillPage.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/events/timedRefresh.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/index.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/index.less create mode 100644 src/ssctpaaa/sscuser/sscuser/list/requestApi.js create mode 100644 src/ssctpaaa/sscuser/sscuser/list/sscUserList.js create mode 100644 src/ssctpaaa/sscuser/widgets/bzclqk/config.json create mode 100644 src/ssctpaaa/sscuser/widgets/bzclqk/index.js create mode 100644 src/ssctpaaa/sscuser/widgets/bzclqk/index.less create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/components/card.js create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/components/index.less create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/components/list.js create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/components/query.js create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/index.js create mode 100644 src/ssctpaaa/sscuser/widgets/linkquery/requestApi.js create mode 100644 src/ssctpaaa/sscuser/widgets/rwcl/config.json create mode 100644 src/ssctpaaa/sscuser/widgets/rwcl/index.js create mode 100644 src/ssctpaaa/sscuser/widgets/rwcl/index.less create mode 100644 src/ssctpaaa/sscuser/widgets/rwcll/config.json create mode 100644 src/ssctpaaa/sscuser/widgets/rwcll/index.js create mode 100644 src/ssctpaaa/sscuser/widgets/rwcll/index.less create mode 100644 src/ssctpaaa/sscuser/widgets/rwzt/config.json create mode 100644 src/ssctpaaa/sscuser/widgets/rwzt/index.js create mode 100644 src/ssctpaaa/sscuser/widgets/rwzt/index.less diff --git a/src/ssctp b/src/ssctp deleted file mode 160000 index 511d9d5..0000000 --- a/src/ssctp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 511d9d5102ffd8c554fb851c6ca133e91bf11a5f diff --git a/src/ssctpaaa/dooroad/affixInterfaceSetting/config/BatchAdd.js b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/BatchAdd.js new file mode 100644 index 0000000..aa19116 --- /dev/null +++ b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/BatchAdd.js @@ -0,0 +1,114 @@ +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton } = base; + +export default class BatchAddModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + onEnter = () => { + this.props.form.setFormStatus('ssctp_accessory_form', 'edit') + this.props.form.EmptyAllFormValue('ssctp_accessory_form') + } + + onButtonClick = (props, key) => { + const { + onHide, + } = props + if (key === 'batch_save') { // 保存 拆行 + this.batchSave() + } else if (key === 'batch_cancel') { // 取消 + onHide('cancel') + } + } + + batchSave = () => { + const { + form: { getAllFormValue, isCheckNow, }, + headSaveHandle, onHide, + } = this.props + if (!isCheckNow('ssctp_accessory_form')) return // 必输校验 + + const values = getAllFormValue('ssctp_accessory_form').rows[0].values + const formVals = this.copyFormVals(values) + const { + pk_org, pk_transtype, + } = values + + const pk_orgArray = pk_org.value.split(','), + pk_transtypeArray = pk_transtype.value.split(','), + pk_orgDisplayArray = pk_org.display.split(','), + pk_transtypeDisplayArray = pk_transtype.display.split(',') + let index = -1 + while(++index < pk_orgArray.length) { + const pk_orgVal = pk_orgArray[index], pk_orgDisplay = pk_orgDisplayArray[index] + let _index = -1 + while(++_index < pk_transtypeArray.length) { + const pk_transtypeVal = pk_transtypeArray[_index], pk_transtypeDisplay = pk_transtypeDisplayArray[_index] + + formVals.pk_org.value = pk_orgVal + formVals.pk_org.display = pk_orgDisplay + formVals.pk_transtype.value = pk_transtypeVal + formVals.pk_transtype.display = pk_transtypeDisplay + + this.props.editTable.addRow('ssctp_accessory_list', 0, false, formVals) + } + } + + onHide('save') + headSaveHandle() + } + + // 拷贝行数据 + copyFormVals = (data) => { + const values = {} + for (let attr in data) { + values[attr] = { + value: data[attr].value, + display: data[attr].display, + } + } + return values + } + + render() { + const { + props: { + show, + multiLang, + onHide, + form: { createForm, }, + }, + state: {}, + onEnter, + onButtonClick, + } = this + + return ( + onHide('cancel')} + onEnter={onEnter} + size='lg' + > + + {multiLang['701010DOOROAD-020']} + + + {createForm('ssctp_accessory_form', { + isNoStandard: true, + })} + + + onButtonClick(this.props, 'batch_save')}>{multiLang['701010DOOROAD-006']} + onButtonClick(this.props, 'batch_cancel')}>{multiLang['701010DOOROAD-007']} + + + ) + } +} +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/async.js b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/async.js new file mode 100644 index 0000000..7a884ac --- /dev/null +++ b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/async.js @@ -0,0 +1,79 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRAccessoryShowQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRAccessoryShowSaveAction.do`, + data, + hasErrCallBack: true, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRAccessoryShowDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 编辑后事件查询 + * @method asyncOtherSelect + */ +async function asyncOtherSelect(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtherSelectOtsAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncSave, + asyncDel, + asyncOtherSelect, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/initTemplate.js b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/initTemplate.js new file mode 100644 index 0000000..65d0b92 --- /dev/null +++ b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/events/initTemplate.js @@ -0,0 +1,60 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, createOprationButton, setButtonDisabled,}, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + // 列表参照过滤 + template.ssctp_accessory_list.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // 批量新增参照过滤 + template.ssctp_accessory_form.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // // 添加操作列 + // template.ssctp_accessory_list.items.push({ + // label: multiLang['701010DOOROAD-013'], + // attrcode: "opr", + // itemtype: "customer", + // visible: true, + // width: "100px", + // fixed: "right", + // render: (node, values, idx) => { + // return createOprationButton(['param'], { + // area: 'list_btnArea', + // onButtonClick: (props, key) => { + // that.showParamModal(values, idx) + // } + // }); + // } + // }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}); + + that.changePageStatu('browse') + setButtonDisabled({Delete_head: true}) + that.listQry() + + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/affixInterfaceSetting/config/index.js b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/index.js new file mode 100644 index 0000000..ca01b8d --- /dev/null +++ b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/index.js @@ -0,0 +1,286 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, promptBox, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import AffixInterfaceSettingModal from './modal.js' +import { + asyncSave, + asyncQry, + asyncDel, + asyncOtherSelect, +} from './events/async.js' +import BatchAddModal from './BatchAdd.js' + +class AffixInterfaceSetting extends Component { + constructor(props) { + super(props); + this.state = { + showModal: false, // 弹窗显示 + multiLang: {}, // 多语 + showBatchAddModal: false, // 批量添加 + pageStatus: 'browse', // 页面状态 + }; + + initTemplate.call(this, props); + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.pageStatus === 'edit') return '' + } + } + + // 改变页面状态 + changePageStatu = status => { + this.props.button.setButtonVisible({ + Add_head: true, + Edit_head: status === 'browse', + Delete_head: true, + Save_head: status === 'edit', + Cancel_head: status === 'edit', + BatchAdd: status === 'browse', + }) + this.props.editTable.setStatus('ssctp_accessory_list', status) + this.setState({pageStatus: status}) + this.props.button.setMainButton('Add_head', status === 'browse') + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add_head: () => this.headAddHandle(), + Edit_head: () => this.headEditHandle(), + Delete_head: () => this.headDelHandle(), + Save_head: () => this.headSaveHandle(), + Cancel_head: () => this.headCancelHandle(), + BatchAdd: () => this.setState({showBatchAddModal: true}) + }) + + // 增加 + headAddHandle = () => { + const rows = this.props.editTable.getAllData('ssctp_accessory_list').rows + this.props.editTable.addRow('ssctp_accessory_list', rows.length, true, {}) + this.changePageStatu('edit') + } + + // 修改 + headEditHandle = () => { + this.changePageStatu('edit') + } + + // 取消提示 + headCancelHandle = () => { + // 浏览态 + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-007'], + content: this.state.multiLang['701010DOOROAD-019'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureCancel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } + + // 确定取消 + sureCancel = () => { + // 重新查询列表 + this.listQry() + // 浏览态 + this.changePageStatu('browse') + } + + // 隐藏弹窗 + onHide = () => { + this.setState({showModal: false}) + } + + // 显示弹窗 + showParamModal = (row, index) => { + this.setState({showModal: true}) + } + + // 删除提示 + headDelHandle = () => { + if (this.state.pageStatus === 'browse') { + const checkedRows = this.props.editTable.getCheckedRows('ssctp_accessory_list') + if (!checkedRows.length) return + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-003'], + content: this.state.multiLang['701010DOOROAD-018'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureDel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } else { + const checkedIndex = this.props.editTable.getCheckedRows('ssctp_accessory_list').map(row => row.index) + if (!checkedIndex.length) return + this.props.editTable.deleteTableRowsByIndex('ssctp_accessory_list', checkedIndex) + } + } + + // 列表查询 + listQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.editTable.setTableData('ssctp_accessory_list', data ? data.ssctp_accessory_list : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 保存 + headSaveHandle = async () => { + const { + editTable: { filterEmptyRows, checkRequired, getAllData, setTableData}, + } = this.props + filterEmptyRows('ssctp_accessory_list', ['showtype']) + const tableData = getAllData('ssctp_accessory_list') + if (!checkRequired('ssctp_accessory_list', tableData.rows)) return + const response = await asyncSave({ssctp_accessory_list: tableData}) + if (!response) return + const {success, data} = response + if (!success) return + setTableData('ssctp_accessory_list', data ? data.ssctp_accessory_list : {rows: []}) + this.changePageStatu('browse') + toast({ title: this.state.multiLang['701010DOOROAD-016'], duration: 5}) + } + + // 确定删除 + sureDel = async () => { + const { + deleteTableRowsByIndex, getCheckedRows, getAllData, setTableData, + } = this.props.editTable + + const toDelIdxs = getCheckedRows('ssctp_accessory_list').map(row => row.index) + deleteTableRowsByIndex('ssctp_accessory_list', toDelIdxs) + + const response = await asyncDel({ssctp_accessory_list: getAllData('ssctp_accessory_list')}) + const {success, data} = response + if (!success || !data) return + + setTableData('ssctp_accessory_list', data.ssctp_accessory_list) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 列表编辑后事件 + onAfterEvent = async (props, areaId, key, currentValue, changedrows, index, row, ...others) => { + if (key === 'pk_transtype') { + const transtype_code = currentValue.refcode || '' + props.editTable.setValByKeyAndIndex(areaId, index, 'transtype_code', {value: transtype_code, display: transtype_code}) + } + + // if (key !== 'pk_ots') { + // return true + // } + // const { + // editTable: { setValByKeyAndIndex, }, + // } = props + // if (!currentValue.refpk) { + // setValByKeyAndIndex(areaId, index, 'url', {value: '', display: ''}) + // return true + // } + // const response = await asyncOtherSelect({pk_ots: currentValue.refpk}) + // const {success, data} = response + // if (!success || !data) return true + // setValByKeyAndIndex(areaId, index, 'url', {value: `${data.ip}:${data.port}`, display: `${data.ip}:${data.port}`}) + } + + // 列表选中变更事件 + selectedChange = (props, areaId, newVal, oldVal) => { + this.props.button.setButtonDisabled({Delete_head: !newVal}) + } + + // 刷新 + refreshButtonEvent = () => { + this.listQry(true) + } + + render() { + const { + state: { + multiLang, + showBatchAddModal, + pageStatus, + }, + props: { + getSearchParam, + editTable: { createEditTable, }, + }, + headerBtnEventDistribute, + onHide, + onAfterEvent, + selectedChange, + changePageStatu, + refreshButtonEvent, + headSaveHandle, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createEditTable( + 'ssctp_accessory_list', + { + showIndex: true, + showCheck: true, + isAddRow: true, + onAfterEvent, + selectedChange, + adaptionHeight: true, + }, + )} + + + + + { + this.setState({showBatchAddModal: false}) + if (action === 'save') { + changePageStatu('edit') + } else { + changePageStatu('browse') + } + }} + setPageEdit={() => changePageStatu('edit')} + headSaveHandle={headSaveHandle} + {...this.state} + {...this.props} + /> + + + ); + } +} + +AffixInterfaceSetting = createPage({ mutiLangCode: '7010' })(AffixInterfaceSetting); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/affixInterfaceSetting/config/modal.js b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/modal.js new file mode 100644 index 0000000..d54afc6 --- /dev/null +++ b/src/ssctpaaa/dooroad/affixInterfaceSetting/config/modal.js @@ -0,0 +1,51 @@ +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton,} = base; + +export default class AffixInterfaceSettingModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + render() { + const { + props: { + showModal, + multiLang, + editTable: { createEditTable, }, + button: { createButtonApp, }, + onHide, + }, + state: {}, + } = this + + return ( + + + {multiLang['701010DOOROAD-010']} + + + {createEditTable('param', { + showIndex: true, + showCheck: true, + isAddRow: true, + })} + + + {createButtonApp({ + area: 'form_btnArea', + onButtonClick: (props, key) => {}, + })} + + + ) + } +} +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/businessSysRegis/config/events/async.js b/src/ssctpaaa/dooroad/businessSysRegis/config/events/async.js new file mode 100644 index 0000000..0c5df06 --- /dev/null +++ b/src/ssctpaaa/dooroad/businessSysRegis/config/events/async.js @@ -0,0 +1,78 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtsQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 新增 + * @method asyncAdd + */ +async function asyncAdd(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtsAddAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtsDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtsSaveAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncAdd, + asyncDel, + asyncSave, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/businessSysRegis/config/events/initTemplate.js b/src/ssctpaaa/dooroad/businessSysRegis/config/events/initTemplate.js new file mode 100644 index 0000000..49d50e2 --- /dev/null +++ b/src/ssctpaaa/dooroad/businessSysRegis/config/events/initTemplate.js @@ -0,0 +1,48 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, createOprationButton, setPopContent, }, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + + // 添加操作列 + template.ssctp_ots_list.items.push({ + label: multiLang['701010DOOROAD-013'], + attrcode: "opr", + itemtype: "customer", + visible: true, + width: "120px", + fixed: "right", + render: (node, values, idx) => { + return createOprationButton(['Edit', 'Delete'], { + area: 'list_btnArea', + onButtonClick: (props, key) => { + if ( key === 'Edit') { + that.setRowEditable(values) + } else if (key === 'Delete') { + that.delRow(values, idx) + } + } + }); + } + }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}) + + setPopContent('Delete', multiLang['701010DOOROAD-014']) + + // 初始化查询 + that.listQry() + + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/businessSysRegis/config/index.js b/src/ssctpaaa/dooroad/businessSysRegis/config/index.js new file mode 100644 index 0000000..6e1f65b --- /dev/null +++ b/src/ssctpaaa/dooroad/businessSysRegis/config/index.js @@ -0,0 +1,171 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import BusinessSysRegisModal from './modal.js' +import { + asyncQry, + asyncSave, + asyncAdd, + asyncDel, +} from './events/async.js' + +class BusinessSysRegis extends Component { + constructor(props) { + super(props); + this.state = { + showModal: false, // 显示弹窗 + multiLang: {}, // 多语 + modalStatu: 'add', // 弹窗状态 增加/修改 + }; + + initTemplate.call(this, props); + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.showModal) return '' + } + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add: () => this.setState({showModal: true, modalStatu: 'add'}), + }) + + // 弹窗隐藏 + onHide = () => { + this.props.form.EmptyAllFormValue('ssctp_ots_form') + this.setState({showModal: false}) + } + + // 保存 + modalSave = async () => { + const { + props: { + form: { getAllFormValue, isCheckNow, }, + table: { setAllTableData, }, + }, + state: { modalStatu, multiLang,}, + } = this + + if (!isCheckNow('ssctp_ots_form')) return // 表单校验 + + if (modalStatu === 'add') { + const response = await asyncAdd({ + ssctp_ots_form: getAllFormValue('ssctp_ots_form'), + }) + const {success, data} = response + if (!success || !data) return + setAllTableData('ssctp_ots_list', data.ssctp_ots_list) + this.setState({showModal: false}) + toast({ title: multiLang['701010DOOROAD-016'], duration: 5}) + } else { + const response = await asyncSave({ + ssctp_ots_form: getAllFormValue('ssctp_ots_form'), + }) + const {success, data} = response + if (!success || !data) return + setAllTableData('ssctp_ots_list', data.ssctp_ots_list) + this.setState({showModal: false}) + toast({ title: multiLang['701010DOOROAD-016'], duration: 5}) + } + } + + // 列表查询 + listQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.table.setAllTableData('ssctp_ots_list', data ? data.ssctp_ots_list : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 修改 + setRowEditable = values => { + this.setState({showModal: true, modalStatu: 'edit'}) + this.props.form.setFormItemsDisabled('ssctp_ots_form', { 'code': true }); + this.props.form.setAllFormValue({ssctp_ots_form: {rows: [{values}]}}) + } + + // 删除 + delRow = async (record, idx) => { + const values = {} + for (let attr in record) { + if (attr !== 'numberindex' && attr !== 'key' && typeof record[attr] === 'object') { + values[attr] = { value: record[attr].value } + } + } + const response = await asyncDel({ssctp_ots_list: {areaType: 'form', rows: [{values}]}}) + const {success, data} = response + if (!success) return + this.props.table.setAllTableData('ssctp_ots_list', data ? data.ssctp_ots_list : {rows: []}) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 刷新 + refreshButtonEvent = () => { + this.listQry(true) + } + + render() { + const { + state: { + multiLang, + }, + props: { + getSearchParam, + table: { createSimpleTable, }, + }, + headerBtnEventDistribute, + onHide, + modalSave, + refreshButtonEvent, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createSimpleTable( + 'ssctp_ots_list', + { + showIndex: true, + }, + )} + + + + + + ); + } +} + +BusinessSysRegis = createPage({ mutiLangCode: '7010' })(BusinessSysRegis); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/businessSysRegis/config/modal.js b/src/ssctpaaa/dooroad/businessSysRegis/config/modal.js new file mode 100644 index 0000000..9a2bff0 --- /dev/null +++ b/src/ssctpaaa/dooroad/businessSysRegis/config/modal.js @@ -0,0 +1,70 @@ +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton,} = base; + +export default class BusinessSysRegisModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + // 弹窗打开时 + onEnter = () => { + const { + form: {setFormStatus,}, + } = this.props + setFormStatus('ssctp_ots_form', 'edit') + } + + render() { + const { + props: { + showModal, + onHide, + modalSave, + multiLang, + modalStatu, + form: { createForm, }, + button: { createButtonApp, }, + }, + state: {}, + onEnter, + } = this + + return ( + + + + { + modalStatu === 'add' ? + multiLang['701010DOOROAD-004'] : + multiLang['701010DOOROAD-005'] + } + + + + {createForm('ssctp_ots_form', {})} + + + {createButtonApp({ + area: 'form_btnArea', + onButtonClick: (props, key) => { + if (key === 'Save') { + modalSave() + } else if (key === 'Cancel') { + onHide() + } + }, + })} + + + ) + } +} +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/certificateOpenMode/config/BatchAdd.js b/src/ssctpaaa/dooroad/certificateOpenMode/config/BatchAdd.js new file mode 100644 index 0000000..cd304e4 --- /dev/null +++ b/src/ssctpaaa/dooroad/certificateOpenMode/config/BatchAdd.js @@ -0,0 +1,114 @@ +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton } = base; + +export default class BatchAddModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + onEnter = () => { + this.props.form.setFormStatus('ssctp_voucheropen_form', 'edit') + this.props.form.EmptyAllFormValue('ssctp_voucheropen_form') + } + + onButtonClick = (props, key) => { + const { + onHide, + } = props + if (key === 'batch_save') { // 保存 拆行 + this.batchSave() + } else if (key === 'batch_cancel') { // 取消 + onHide('cancel') + } + } + + batchSave = () => { + const { + form: { getAllFormValue, isCheckNow, }, + saveBtnClick, onHide, + } = this.props + if (!isCheckNow('ssctp_voucheropen_form')) return // 必输校验 + + const values = getAllFormValue('ssctp_voucheropen_form').rows[0].values + const formVals = this.copyFormVals(values) + const { + pk_org, pk_transtype, + } = values + + const pk_orgArray = pk_org.value.split(','), + pk_transtypeArray = pk_transtype.value.split(','), + pk_orgDisplayArray = pk_org.display.split(','), + pk_transtypeDisplayArray = pk_transtype.display.split(',') + let index = -1 + while(++index < pk_orgArray.length) { + const pk_orgVal = pk_orgArray[index], pk_orgDisplay = pk_orgDisplayArray[index] + let _index = -1 + while(++_index < pk_transtypeArray.length) { + const pk_transtypeVal = pk_transtypeArray[_index], pk_transtypeDisplay = pk_transtypeDisplayArray[_index] + + formVals.pk_org.value = pk_orgVal + formVals.pk_org.display = pk_orgDisplay + formVals.pk_transtype.value = pk_transtypeVal + formVals.pk_transtype.display = pk_transtypeDisplay + + this.props.editTable.addRow('ssctp_voucheropen_list', 0, false, formVals) + } + } + + onHide('save') + saveBtnClick() + } + + // 拷贝行数据 + copyFormVals = (data) => { + const values = {} + for (let attr in data) { + values[attr] = { + value: data[attr].value, + display: data[attr].display, + } + } + return values + } + + render() { + const { + props: { + show, + multiLang, + onHide, + form: { createForm, }, + }, + state: {}, + onEnter, + onButtonClick, + } = this + + return ( + onHide('cancel')} + onEnter={onEnter} + size='lg' + > + + {multiLang['701010DOOROAD-020']} + + + {createForm('ssctp_voucheropen_form', { + isNoStandard: true, + })} + + + onButtonClick(this.props, 'batch_save')}>{multiLang['701010DOOROAD-006']} + onButtonClick(this.props, 'batch_cancel')}>{multiLang['701010DOOROAD-007']} + + + ) + } +} +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/certificateOpenMode/config/events/async.js b/src/ssctpaaa/dooroad/certificateOpenMode/config/events/async.js new file mode 100644 index 0000000..918a1a7 --- /dev/null +++ b/src/ssctpaaa/dooroad/certificateOpenMode/config/events/async.js @@ -0,0 +1,79 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRVoucherOpenQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRVoucherOpenDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRVoucherOpenSaveAction.do`, + data, + hasErrCallBack: true, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 编辑后事件查询 + * @method asyncOtherSelect + */ +async function asyncOtherSelect(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtherSelectOtsAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncDel, + asyncSave, + asyncOtherSelect, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/certificateOpenMode/config/events/initTemplate.js b/src/ssctpaaa/dooroad/certificateOpenMode/config/events/initTemplate.js new file mode 100644 index 0000000..31e5fd5 --- /dev/null +++ b/src/ssctpaaa/dooroad/certificateOpenMode/config/events/initTemplate.js @@ -0,0 +1,61 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, createOprationButton, setButtonDisabled,}, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + + // 列表参照过滤 + template.ssctp_voucheropen_list.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // 批量新增参照过滤 + template.ssctp_voucheropen_form.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // // 添加操作列 + // template.ssctp_voucheropen_list.items.push({ + // label: multiLang['701010DOOROAD-013'], + // attrcode: "opr", + // itemtype: "customer", + // visible: true, + // width: "100px", + // fixed: "right", + // render: (node, values, idx) => { + // return createOprationButton(['Param'], { + // area: 'list_btnArea', + // onButtonClick: (props, key) => { + // that.showParamModal(values, idx) + // } + // }); + // } + // }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}) + + that.changePageStatu('browse') + setButtonDisabled({Delete: true}) + that.listQry() + + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/certificateOpenMode/config/index.js b/src/ssctpaaa/dooroad/certificateOpenMode/config/index.js new file mode 100644 index 0000000..5c819e6 --- /dev/null +++ b/src/ssctpaaa/dooroad/certificateOpenMode/config/index.js @@ -0,0 +1,269 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, promptBox, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import VoucherOpenModal from './modal.js' +import { + asyncQry, + asyncDel, + asyncSave, + asyncOtherSelect, +} from './events/async.js'; +import BatchAddModal from './BatchAdd.js' + +class VoucherOpenMode extends Component { + constructor(props) { + super(props); + this.state = { + showModal: false, // 显示弹窗 + multiLang: {}, // 多语 + showBatchAddModal: false, // 批量添加 + pageStatus: 'browse', // 页面状态 + }; + + initTemplate.call(this, props); + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.pageStatus === 'edit') return '' + } + } + + // 改变页面状态 + changePageStatu = status => { + this.props.button.setButtonVisible({ + Add: true, + Edit: status === 'browse', + Delete: true, + Save: status === 'edit', + Cancel: status === 'edit', + BatchAdd: status === 'browse', + }) + this.props.editTable.setStatus('ssctp_voucheropen_list', status) + this.setState({pageStatus: status}) + this.props.button.setMainButton('Add', status === 'browse') + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add: () => this.addBtnClick(), + Edit: () => this.editBtnClick(), + Delete: () => this.deleteBtnClick(), + Save: () => this.saveBtnClick(), + Cancel: () => this.cancelBtnClick(), + BatchAdd: () => this.setState({showBatchAddModal: true}), + }) + + // 显示弹窗 + showParamModal = (row, index) => { + this.setState({showModal: true}) + } + + // 隐藏弹窗 + onHide = () => { + this.setState({showModal: false}) + } + + // 新增 + addBtnClick = () => { + const rows = this.props.editTable.getAllData('ssctp_voucheropen_list').rows + this.props.editTable.addRow('ssctp_voucheropen_list', rows.length, true, {}) + this.changePageStatu('edit') + } + + // 修改 + editBtnClick = () => { + this.changePageStatu('edit') + } + + // 取消 + cancelBtnClick = () => { + this.listQry() + this.changePageStatu('browse') + } + + // 列表选中变更事件 + selectedChange = (props, areaId, newVal, oldVal) => { + this.props.button.setButtonDisabled({Delete: !newVal}) + } + + // 列表查询 + listQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.editTable.setTableData('ssctp_voucheropen_list', data ? data.ssctp_voucheropen_list : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 保存 + saveBtnClick = async () => { + const { + editTable: { filterEmptyRows, checkRequired, getAllData, setTableData}, + } = this.props + filterEmptyRows('ssctp_voucheropen_list', []) + const tableData = getAllData('ssctp_voucheropen_list') + if (!checkRequired('ssctp_voucheropen_list', tableData.rows)) return + const response = await asyncSave({ssctp_voucheropen_list: tableData}) + if (!response) return + const {success, data} = response + if (!success) return + setTableData('ssctp_voucheropen_list', data ? data.ssctp_voucheropen_list : {}) + this.changePageStatu('browse') + toast({ title: this.state.multiLang['701010DOOROAD-016'], duration: 5}) + } + + // 删除提示 + deleteBtnClick = () => { + if (this.state.pageStatus === 'browse') { + const checkedRows = this.props.editTable.getCheckedRows('ssctp_voucheropen_list') + if (!checkedRows.length) return + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-003'], + content: this.state.multiLang['701010DOOROAD-018'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureDel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } else { + const checkedIndex = this.props.editTable.getCheckedRows('ssctp_voucheropen_list').map(row => row.index) + if (!checkedIndex.length) return + this.props.editTable.deleteTableRowsByIndex('ssctp_voucheropen_list', checkedIndex) + } + } + + // 确定删除 + sureDel = async () => { + const { + deleteTableRowsByIndex, getCheckedRows, getAllData, setTableData, + } = this.props.editTable + + const toDelIdxs = getCheckedRows('ssctp_voucheropen_list').map(row => row.index) + deleteTableRowsByIndex('ssctp_voucheropen_list', toDelIdxs) + + const response = await asyncDel({ssctp_voucheropen_list: getAllData('ssctp_voucheropen_list')}) + const {success, data} = response + if (!success || !data) return + + setTableData('ssctp_voucheropen_list', data.ssctp_voucheropen_list) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 列表编辑后事件 + onAfterEvent = async (props, areaId, key, currentValue, changedrows, index, row, ...others) => { + if (key === 'pk_transtype') { + const transtype_code = currentValue.refcode || '' + props.editTable.setValByKeyAndIndex(areaId, index, 'transtype_code', {value: transtype_code, display: transtype_code}) + } + + // if (key !== 'pk_ots') { + // return true + // } + // const { + // editTable: { setValByKeyAndIndex, }, + // } = props + // if (!currentValue.refpk) { + // setValByKeyAndIndex(areaId, index, 'url', {value: '', display: ''}) + // return true + // } + // const response = await asyncOtherSelect({pk_ots: currentValue.refpk}) + // const {success, data} = response + // if (!success || !data) return true + // setValByKeyAndIndex(areaId, index, 'url', {value: `${data.ip}:${data.port}`, display: `${data.ip}:${data.port}`}) + } + + // 刷新 + refreshButtonEvent = () => { + this.listQry(true) + } + + render() { + const { + state: { + multiLang, + showBatchAddModal, + pageStatus, + }, + props: { + getSearchParam, + editTable: { createEditTable, }, + }, + headerBtnEventDistribute, + onHide, + onAfterEvent, + selectedChange, + changePageStatu, + refreshButtonEvent, + saveBtnClick, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createEditTable( + 'ssctp_voucheropen_list', + { + showIndex: true, + showCheck: true, + isAddRow: true, + onAfterEvent, + selectedChange, + adaptionHeight: true, + }, + )} + + + + + { + this.setState({showBatchAddModal: false}) + if (action === 'save') { + changePageStatu('edit') + } else { + changePageStatu('browse') + } + }} + setPageEdit={() => changePageStatu('edit')} + saveBtnClick={saveBtnClick} + {...this.state} + {...this.props} + /> + + + ); + } +} + +VoucherOpenMode = createPage({ mutiLangCode: '7010' })(VoucherOpenMode); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/certificateOpenMode/config/modal.js b/src/ssctpaaa/dooroad/certificateOpenMode/config/modal.js new file mode 100644 index 0000000..5f1b671 --- /dev/null +++ b/src/ssctpaaa/dooroad/certificateOpenMode/config/modal.js @@ -0,0 +1,51 @@ +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton,} = base; + +export default class VoucherOpenModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + render() { + const { + props: { + showModal, + multiLang, + onHide, + editTable: { createEditTable, }, + button: { createButtonApp, }, + }, + state: {}, + } = this + + return ( + + + {multiLang['701010DOOROAD-010']} + + + {createEditTable('ssctp_voucheropen_list', { + showIndex: true, + showCheck: true, + isAddRow: true, + })} + + + {createButtonApp({ + area: 'form_btnArea', + onButtonClick: (props, key) => {}, + })} + + + ) + } +} +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/docOpen/config/BatchAdd.js b/src/ssctpaaa/dooroad/docOpen/config/BatchAdd.js new file mode 100644 index 0000000..ecd996b --- /dev/null +++ b/src/ssctpaaa/dooroad/docOpen/config/BatchAdd.js @@ -0,0 +1,121 @@ +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton } = base; + +export default class BatchAddModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + onEnter = () => { + this.props.form.setFormStatus('ssctp_detailopen_form', 'edit') + this.props.form.EmptyAllFormValue('ssctp_detailopen_form') + } + + onButtonClick = (props, key) => { + const { + onHide, + } = props + if (key === 'batch_save') { // 保存 拆行 + this.batchSave() + } else if (key === 'batch_cancel') { // 取消 + onHide('cancel') + } + } + + batchSave = () => { + const { + form: { getAllFormValue, isCheckNow, }, + saveBtnClick, onHide, + } = this.props + if (!isCheckNow('ssctp_detailopen_form')) return // 必输校验 + + const values = getAllFormValue('ssctp_detailopen_form').rows[0].values + const formVals = this.copyFormVals(values) + const { + pk_org, pk_transtype, + } = values + + const pk_orgArray = pk_org.value.split(','), + pk_transtypeArray = pk_transtype.value.split(','), + pk_orgDisplayArray = pk_org.display.split(','), + pk_transtypeDisplayArray = pk_transtype.display.split(',') + let index = -1 + while(++index < pk_orgArray.length) { + const pk_orgVal = pk_orgArray[index], pk_orgDisplay = pk_orgDisplayArray[index] + let _index = -1 + while(++_index < pk_transtypeArray.length) { + const pk_transtypeVal = pk_transtypeArray[_index], pk_transtypeDisplay = pk_transtypeDisplayArray[_index] + + formVals.pk_org.value = pk_orgVal + formVals.pk_org.display = pk_orgDisplay + formVals.pk_transtype.value = pk_transtypeVal + formVals.pk_transtype.display = pk_transtypeDisplay + + this.props.editTable.addRow('ssctp_detailopen', 0, false, formVals) + } + } + + onHide('save') + saveBtnClick() + } + + // 拷贝行数据 + copyFormVals = (data) => { + const values = {} + for (let attr in data) { + values[attr] = { + value: data[attr].value, + display: data[attr].display, + } + } + return values + } + + render() { + const { + props: { + showModal, + multiLang, + onHide, + form: { createForm, }, + }, + state: {}, + onEnter, + onButtonClick, + } = this + + return ( + onHide('cancel')} + onEnter={onEnter} + size='lg' + > + + {multiLang['701010DOOROAD-020']} + + + {createForm('ssctp_detailopen_form', { + isNoStandard: true, + })} + + + onButtonClick(this.props, 'batch_save')} + >{multiLang['701010DOOROAD-006']} + onButtonClick(this.props, 'batch_cancel')} + >{multiLang['701010DOOROAD-007']} + + + ) + } +} +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/docOpen/config/events/async.js b/src/ssctpaaa/dooroad/docOpen/config/events/async.js new file mode 100644 index 0000000..25e8d82 --- /dev/null +++ b/src/ssctpaaa/dooroad/docOpen/config/events/async.js @@ -0,0 +1,79 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROpenQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROpenSaveAction.do`, + data, + hasErrCallBack: true, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROpenDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 编辑后事件查询 + * @method asyncOtherSelect + */ +async function asyncOtherSelect(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtherSelectOtsAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncSave, + asyncDel, + asyncOtherSelect, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/docOpen/config/events/initTemplate.js b/src/ssctpaaa/dooroad/docOpen/config/events/initTemplate.js new file mode 100644 index 0000000..8322d52 --- /dev/null +++ b/src/ssctpaaa/dooroad/docOpen/config/events/initTemplate.js @@ -0,0 +1,40 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, setButtonDisabled, }, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + // 列表参照过滤 + template.ssctp_detailopen.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // 批量新增参照过滤 + template.ssctp_detailopen_form.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}) + that.changePageStatus('browse') + that.tableDataQry() + setButtonDisabled({Delete: true}) + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/docOpen/config/index.js b/src/ssctpaaa/dooroad/docOpen/config/index.js new file mode 100644 index 0000000..ff9cc96 --- /dev/null +++ b/src/ssctpaaa/dooroad/docOpen/config/index.js @@ -0,0 +1,251 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, promptBox, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import { + asyncQry, asyncSave, asyncDel, asyncOtherSelect, +} from './events/async.js' +import BatchAddModal from './BatchAdd.js' + +class DocOpen extends Component { + constructor(props) { + super(props); + this.state = { + multiLang: {}, // 多语 + showBatchAddModal: false, // 批量添加 + pageStatus: 'browse', // 页面状态 + }; + + initTemplate.call(this, props); + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add: () => this.addBtnClick(), + Edit: () => this.editBtnClick(), + Delete: () => this.deleteBtnClick(), + Save: () => this.saveBtnClick(), + Cancel: () => this.cancelBtnClick(), + BatchAdd: () => this.setState({showBatchAddModal: true}), + }) + + // 改变页面状态 浏览/编辑 + changePageStatus = statu => { + const { + editTable: { setStatus, }, + button: { setButtonVisible, setMainButton, }, + } = this.props + setStatus('ssctp_detailopen', statu) + setButtonVisible({ + Add: true, + BatchAdd: statu === 'browse', + Edit: statu === 'browse', + Delete: true, + Save: statu === 'edit', + Cancel: statu === 'edit', + }) + this.setState({pageStatus: statu}) + setMainButton('Add', statu === 'browse') + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.pageStatus === 'edit') return '' + } + } + + // 列表数据查询 + tableDataQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.editTable.setTableData('ssctp_detailopen', data ? data.ssctp_detailopen : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 刷新 + refreshButtonEvent = () => { + this.tableDataQry(true) + } + + //增加 + addBtnClick = () => { + const rows = this.props.editTable.getAllData('ssctp_detailopen').rows + this.props.editTable.addRow('ssctp_detailopen', rows.length, true, {}) + this.changePageStatus('edit') + } + + // 修改 + editBtnClick = () => { + this.changePageStatus('edit') + } + + // 删除提示 + deleteBtnClick = () => { + if (this.state.pageStatus === 'browse') { + const checkedRows = this.props.editTable.getCheckedRows('ssctp_detailopen') + if (!checkedRows.length) return + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-003'], + content: this.state.multiLang['701010DOOROAD-018'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureDel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } else { + const checkedIndex = this.props.editTable.getCheckedRows('ssctp_detailopen').map(row => row.index) + if (!checkedIndex.length) return + this.props.editTable.deleteTableRowsByIndex('ssctp_detailopen', checkedIndex) + } + } + + //确认删除 + sureDel = async () => { + const { + deleteTableRowsByIndex, getCheckedRows, getAllData, setTableData, + } = this.props.editTable + + const toDelIdxs = getCheckedRows('ssctp_detailopen').map(row => row.index) + deleteTableRowsByIndex('ssctp_detailopen', toDelIdxs) + + const response = await asyncDel({ssctp_detailopen: getAllData('ssctp_detailopen')}) + const {success, data} = response + if (!success || !data) return + + setTableData('ssctp_detailopen', data.ssctp_detailopen) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 保存 + saveBtnClick = async () => { + const { + editTable: { filterEmptyRows, checkRequired, getAllData, setTableData}, + } = this.props + filterEmptyRows('ssctp_detailopen', []) + const tableData = getAllData('ssctp_detailopen') + if (!checkRequired('ssctp_detailopen', tableData.rows)) return + const response = await asyncSave({ssctp_detailopen: tableData}) + if (!response) return + const {success, data} = response + if (!success) return + setTableData('ssctp_detailopen', data ? data.ssctp_detailopen : {rows: []}) + this.changePageStatus('browse') + toast({ title: this.state.multiLang['701010DOOROAD-016'], duration: 5}) + } + + // 取消 + cancelBtnClick = () => { + this.changePageStatus('browse') + this.tableDataQry() + } + + // 列表编辑后事件 + onAfterEvent = async (props, areaId, key, currentValue, changedrows, index, row, ...others) => { + if (key === 'pk_transtype') { + const transtype_code = currentValue.refcode || '' + props.editTable.setValByKeyAndIndex(areaId, index, 'transtype_code', {value: transtype_code, display: transtype_code}) + } + + // if (key !== 'pk_ots') { + // return true + // } + // const { + // editTable: { setValByKeyAndIndex, }, + // } = props + // if (!currentValue.refpk) { + // setValByKeyAndIndex(areaId, index, 'url', {value: '', display: ''}) + // return true + // } + // const response = await asyncOtherSelect({pk_ots: currentValue.refpk}) + // const {success, data} = response + // if (!success || !data) return true + // setValByKeyAndIndex(areaId, index, 'url', {value: `${data.ip}:${data.port}`, display: `${data.ip}:${data.port}`}) + } + + // 列表选中变更事件 + selectedChange = (props, areaId, newVal, oldVal) => { + this.props.button.setButtonDisabled({Delete: !newVal}) + } + + render() { + const { + state: { + multiLang, + showBatchAddModal, + pageStatus, + }, + props: { + getSearchParam, + editTable: { createEditTable, }, + }, + headerBtnEventDistribute, + onAfterEvent, + selectedChange, + changePageStatus, + refreshButtonEvent, + saveBtnClick, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createEditTable( + 'ssctp_detailopen', + { + showIndex: true, + showCheck: true, + onAfterEvent, + adaptionHeight: true, + isAddRow: true, + selectedChange, + }, + )} + + + { + this.setState({showBatchAddModal: false}) + if (action !== 'save') { + this.changePageStatus('browse') + } else { + this.changePageStatus('edit') + } + }} + setPageEdit={() => changePageStatus('edit')} + saveBtnClick={saveBtnClick} + {...this.state} + {...this.props} + /> + + + ); + } +} + +DocOpen = createPage({ mutiLangCode: '7010' })(DocOpen); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/eventRegis/config/BatchAdd.js b/src/ssctpaaa/dooroad/eventRegis/config/BatchAdd.js new file mode 100644 index 0000000..c763765 --- /dev/null +++ b/src/ssctpaaa/dooroad/eventRegis/config/BatchAdd.js @@ -0,0 +1,121 @@ +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton } = base; + +export default class BatchAddModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + onEnter = () => { + this.props.form.setFormStatus('ssctp_eventlistener_form', 'edit') + this.props.form.EmptyAllFormValue('ssctp_eventlistener_form') + } + + onButtonClick = (props, key) => { + const { + onHide, + } = props + if (key === 'batch_save') { // 保存 拆行 + this.batchSave() + } else if (key === 'batch_cancel') { // 取消 + onHide('cancel') + } + } + + batchSave = () => { + const { + form: { getAllFormValue, isCheckNow, }, + saveBtnClick, onHide, + } = this.props + if (!isCheckNow('ssctp_eventlistener_form')) return // 必输校验 + + const values = getAllFormValue('ssctp_eventlistener_form').rows[0].values + const formVals = this.copyFormVals(values) + const { + pk_org, pk_transtype, + } = values + + const pk_orgArray = pk_org.value.split(','), + pk_transtypeArray = pk_transtype.value.split(','), + pk_orgDisplayArray = pk_org.display.split(','), + pk_transtypeDisplayArray = pk_transtype.display.split(',') + let index = -1 + while(++index < pk_orgArray.length) { + const pk_orgVal = pk_orgArray[index], pk_orgDisplay = pk_orgDisplayArray[index] + let _index = -1 + while(++_index < pk_transtypeArray.length) { + const pk_transtypeVal = pk_transtypeArray[_index], pk_transtypeDisplay = pk_transtypeDisplayArray[_index] + + formVals.pk_org.value = pk_orgVal + formVals.pk_org.display = pk_orgDisplay + formVals.pk_transtype.value = pk_transtypeVal + formVals.pk_transtype.display = pk_transtypeDisplay + + this.props.editTable.addRow('ssctp_eventlistener_list', 0, false, formVals) + } + } + + onHide('save') + saveBtnClick() + } + + // 拷贝行数据 + copyFormVals = (data) => { + const values = {} + for (let attr in data) { + values[attr] = { + value: data[attr].value, + display: data[attr].display, + } + } + return values + } + + render() { + const { + props: { + show, + multiLang, + onHide, + form: { createForm, }, + }, + state: {}, + onEnter, + onButtonClick, + } = this + + return ( + onHide('cancel')} + onEnter={onEnter} + size='lg' + > + + {multiLang['701010DOOROAD-020']} + + + {createForm('ssctp_eventlistener_form', { + isNoStandard: true, + })} + + + onButtonClick(this.props, 'batch_save')} + >{multiLang['701010DOOROAD-006']} + onButtonClick(this.props, 'batch_cancel')} + >{multiLang['701010DOOROAD-007']} + + + ) + } +} +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/eventRegis/config/events/async.js b/src/ssctpaaa/dooroad/eventRegis/config/events/async.js new file mode 100644 index 0000000..e382284 --- /dev/null +++ b/src/ssctpaaa/dooroad/eventRegis/config/events/async.js @@ -0,0 +1,79 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DREventListenerQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DREventListenerDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DREventListenerSaveAction.do`, + data, + hasErrCallBack: true, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 编辑后事件查询 + * @method asyncOtherSelect + */ +async function asyncOtherSelect(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtherSelectOtsAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncDel, + asyncSave, + asyncOtherSelect, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/eventRegis/config/events/initTemplate.js b/src/ssctpaaa/dooroad/eventRegis/config/events/initTemplate.js new file mode 100644 index 0000000..d9124df --- /dev/null +++ b/src/ssctpaaa/dooroad/eventRegis/config/events/initTemplate.js @@ -0,0 +1,60 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, createOprationButton, setButtonDisabled,}, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + // 列表参照过滤 + template.ssctp_eventlistener_list.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // 批量新增参照过滤 + template.ssctp_eventlistener_form.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // // 添加操作列 + // template.ssctp_eventlistener_list.items.push({ + // label: multiLang['701010DOOROAD-013'], + // attrcode: "opr", + // itemtype: "customer", + // visible: true, + // width: "100px", + // fixed: "right", + // render: (node, values, idx) => { + // return createOprationButton(['Param'], { + // area: 'list_btnArea', + // onButtonClick: (props, key) => { + // that.showParamModal(values, idx) + // } + // }); + // } + // }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}) + + that.changePageStatu('browse') + setButtonDisabled({Delete: true}) + that.listQry() + + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/eventRegis/config/index.js b/src/ssctpaaa/dooroad/eventRegis/config/index.js new file mode 100644 index 0000000..12737ab --- /dev/null +++ b/src/ssctpaaa/dooroad/eventRegis/config/index.js @@ -0,0 +1,269 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, promptBox, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import EventRegisModal from './modal.js' +import { + asyncQry, + asyncDel, + asyncSave, + asyncOtherSelect, +} from './events/async.js'; +import BatchAddModal from './BatchAdd.js' + +class EventRegis extends Component { + constructor(props) { + super(props); + this.state = { + showModal: false, // 显示弹窗 + multiLang: {}, // 多语 + showBatchAddModal: false, // 批量添加 + pageStatus: 'browse', // 页面状态 + }; + + initTemplate.call(this, props); + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.pageStatus === 'edit') return '' + } + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add: () => this.addBtnClick(), + Edit: () => this.editBtnClick(), + Delete: () => this.deleteBtnClick(), + Save: () => this.saveBtnClick(), + Cancel: () => this.cancelBtnClick(), + BatchAdd: () => this.setState({showBatchAddModal: true}), + }) + + // 改变页面状态 + changePageStatu = status => { + this.props.button.setButtonVisible({ + Add: true, + Edit: status === 'browse', + Delete: true, + Save: status === 'edit', + Cancel: status === 'edit', + BatchAdd: status === 'browse', + }) + this.props.editTable.setStatus('ssctp_eventlistener_list', status) + this.setState({pageStatus: status}) + this.props.button.setMainButton('Add', status === 'browse') + } + + // 列表查询 + listQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.editTable.setTableData('ssctp_eventlistener_list', data ? data.ssctp_eventlistener_list : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 显示弹窗 + showParamModal = (row, index) => { + this.setState({showModal: true}) + } + + // 隐藏弹窗 + onHide = () => { + this.setState({showModal: false}) + } + + // 新增 + addBtnClick = () => { + const rows = this.props.editTable.getAllData('ssctp_eventlistener_list').rows + this.props.editTable.addRow('ssctp_eventlistener_list', rows.length, true, {}) + this.changePageStatu('edit') + } + + // 修改 + editBtnClick = () => { + this.changePageStatu('edit') + } + + // 取消 + cancelBtnClick = () => { + this.listQry() + this.changePageStatu('browse') + } + + // 保存 + saveBtnClick = async () => { + const { + editTable: { filterEmptyRows, checkRequired, getAllData, setTableData}, + } = this.props + filterEmptyRows('ssctp_eventlistener_list', []) + const tableData = getAllData('ssctp_eventlistener_list') + if (!checkRequired('ssctp_eventlistener_list', tableData.rows)) return + const response = await asyncSave({ssctp_eventlistener_list: tableData}) + if (!response) return + const {success, data} = response + if (!success) return + setTableData('ssctp_eventlistener_list', data ? data.ssctp_eventlistener_list : {}) + this.changePageStatu('browse') + toast({ title: this.state.multiLang['701010DOOROAD-016'], duration: 5}) + } + + // 删除提示 + deleteBtnClick = () => { + if (this.state.pageStatus === 'browse') { + const checkedRows = this.props.editTable.getCheckedRows('ssctp_eventlistener_list') + if (!checkedRows.length) return + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-003'], + content: this.state.multiLang['701010DOOROAD-018'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureDel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } else { + const checkedIndex = this.props.editTable.getCheckedRows('ssctp_eventlistener_list').map(row => row.index) + if (!checkedIndex.length) return + this.props.editTable.deleteTableRowsByIndex('ssctp_eventlistener_list', checkedIndex) + } + } + + // 确定删除 + sureDel = async () => { + const { + deleteTableRowsByIndex, getCheckedRows, getAllData, setTableData, + } = this.props.editTable + + const toDelIdxs = getCheckedRows('ssctp_eventlistener_list').map(row => row.index) + deleteTableRowsByIndex('ssctp_eventlistener_list', toDelIdxs) + + const response = await asyncDel({ssctp_eventlistener_list: getAllData('ssctp_eventlistener_list')}) + const {success, data} = response + if (!success || !data) return + + setTableData('ssctp_eventlistener_list', data.ssctp_eventlistener_list) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 列表编辑后事件 + onAfterEvent = async (props, areaId, key, currentValue, changedrows, index, row, ...others) => { + if (key === 'pk_transtype') { + const transtype_code = currentValue.refcode || '' + props.editTable.setValByKeyAndIndex(areaId, index, 'transtype_code', {value: transtype_code, display: transtype_code}) + } + + // if (key !== 'pk_ots') { + // return true + // } + // const { + // editTable: { setValByKeyAndIndex, }, + // } = props + // if (!currentValue.refpk) { + // setValByKeyAndIndex(areaId, index, 'url', {value: '', display: ''}) + // return true + // } + // const response = await asyncOtherSelect({pk_ots: currentValue.refpk}) + // const {success, data} = response + // if (!success || !data) return true + // setValByKeyAndIndex(areaId, index, 'url', {value: `${data.ip}:${data.port}`, display: `${data.ip}:${data.port}`}) + } + + // 列表选中变更事件 + selectedChange = (props, areaId, newVal, oldVal) => { + this.props.button.setButtonDisabled({Delete: !newVal}) + } + + // 刷新 + refreshButtonEvent = () => { + this.listQry(true) + } + + render() { + const { + state: { + multiLang, + showBatchAddModal, + pageStatus, + }, + props: { + getSearchParam, + editTable: { createEditTable, }, + }, + headerBtnEventDistribute, + onHide, + onAfterEvent, + selectedChange, + changePageStatu, + refreshButtonEvent, + saveBtnClick, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createEditTable( + 'ssctp_eventlistener_list', + { + showIndex: true, + showCheck: true, + isAddRow: true, + onAfterEvent, + selectedChange, + adaptionHeight: true, + }, + )} + + + + + { + this.setState({showBatchAddModal: false}) + if (action === 'save') { + changePageStatu('edit') + } else { + changePageStatu('browse') + } + }} + setPageEdit={() => changePageStatu('edit')} + saveBtnClick={saveBtnClick} + {...this.state} + {...this.props} + /> + + + ); + } +} + +EventRegis = createPage({ mutiLangCode: '7010' })(EventRegis); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/eventRegis/config/modal.js b/src/ssctpaaa/dooroad/eventRegis/config/modal.js new file mode 100644 index 0000000..bd5aed4 --- /dev/null +++ b/src/ssctpaaa/dooroad/eventRegis/config/modal.js @@ -0,0 +1,51 @@ +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton,} = base; + +export default class EventRegisModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + render() { + const { + props: { + showModal, + multiLang, + onHide, + editTable: { createEditTable, }, + button: { createButtonApp, }, + }, + state: {}, + } = this + + return ( + + + {multiLang['701010DOOROAD-010']} + + + {createEditTable('ssctp_eventlistener_list', { + showIndex: true, + showCheck: true, + isAddRow: true, + })} + + + {createButtonApp({ + area: 'form_btnArea', + onButtonClick: (props, key) => {}, + })} + + + ) + } +} +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/imageInterfaceSetting/config/BatchAdd.js b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/BatchAdd.js new file mode 100644 index 0000000..a12bf6c --- /dev/null +++ b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/BatchAdd.js @@ -0,0 +1,121 @@ +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton } = base; + +export default class BatchAddModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + onEnter = () => { + this.props.form.setFormStatus('ssctp_imagshow_form', 'edit') + this.props.form.EmptyAllFormValue('ssctp_imagshow_form') + } + + onButtonClick = (props, key) => { + const { + onHide, + } = props + if (key === 'batch_save') { // 保存 拆行 + this.batchSave() + } else if (key === 'batch_cancel') { // 取消 + onHide('cancel') + } + } + + batchSave = () => { + const { + form: { getAllFormValue, isCheckNow, }, + headSaveHandle, onHide, + } = this.props + if (!isCheckNow('ssctp_imagshow_form')) return // 必输校验 + + const values = getAllFormValue('ssctp_imagshow_form').rows[0].values + const formVals = this.copyFormVals(values) + const { + pk_org, pk_transtype, + } = values + + const pk_orgArray = pk_org.value.split(','), + pk_transtypeArray = pk_transtype.value.split(','), + pk_orgDisplayArray = pk_org.display.split(','), + pk_transtypeDisplayArray = pk_transtype.display.split(',') + let index = -1 + while(++index < pk_orgArray.length) { + const pk_orgVal = pk_orgArray[index], pk_orgDisplay = pk_orgDisplayArray[index] + let _index = -1 + while(++_index < pk_transtypeArray.length) { + const pk_transtypeVal = pk_transtypeArray[_index], pk_transtypeDisplay = pk_transtypeDisplayArray[_index] + + formVals.pk_org.value = pk_orgVal + formVals.pk_org.display = pk_orgDisplay + formVals.pk_transtype.value = pk_transtypeVal + formVals.pk_transtype.display = pk_transtypeDisplay + + this.props.editTable.addRow('ssctp_imagshow_list', 0, false, formVals) + } + } + + onHide('save') + headSaveHandle() + } + + // 拷贝行数据 + copyFormVals = (data) => { + const values = {} + for (let attr in data) { + values[attr] = { + value: data[attr].value, + display: data[attr].display, + } + } + return values + } + + render() { + const { + props: { + show, + multiLang, + onHide, + form: { createForm, }, + }, + state: {}, + onEnter, + onButtonClick, + } = this + + return ( + onHide('cancel')} + onEnter={onEnter} + size='lg' + > + + {multiLang['701010DOOROAD-020']} + + + {createForm('ssctp_imagshow_form', { + isNoStandard: true, + })} + + + onButtonClick(this.props, 'batch_save')} + >{multiLang['701010DOOROAD-006']} + onButtonClick(this.props, 'batch_cancel')} + >{multiLang['701010DOOROAD-007']} + + + ) + } +} +/*+YfJSE2wVV4tdUzmsv455q3iGlXZUI2mv/4od/TyZds=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/async.js b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/async.js new file mode 100644 index 0000000..4038f2c --- /dev/null +++ b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/async.js @@ -0,0 +1,79 @@ +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ +import { requestPromise, /* setStatePromise ,*/ } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @desc 查询 + * @method asyncQry + */ +async function asyncQry() { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRImageShowQueryAction.do`, + data: {}, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 保存 + * @method asyncSave + */ +async function asyncSave(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRImageShowSaveAction.do`, + data, + hasErrCallBack: true, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 删除 + * @method asyncDel + */ +async function asyncDel(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRImageShowDelAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +/** + * @desc 编辑后事件查询 + * @method asyncOtherSelect + */ +async function asyncOtherSelect(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DROtherSelectOtsAction.do`, + data, + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export { + asyncQry, + asyncSave, + asyncDel, + asyncOtherSelect, +} +/*3mS3VmANLuMaTtASFDOxHvWNecZeEeby5t7o9BNao9s=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/initTemplate.js b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/initTemplate.js new file mode 100644 index 0000000..d2892f3 --- /dev/null +++ b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/events/initTemplate.js @@ -0,0 +1,60 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { + getMultiLang, +} from 'nc-lightapp-front'; + +export default function ({ + createUIDom, meta: { setMeta }, + button: { setButtons, createOprationButton, setButtonDisabled,}, +}) { + const that = this + createUIDom({}, function({ template, button }) { + getMultiLang({moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: multiLang => { + // 列表参照过滤 + template.ssctp_imagshow_list.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // 批量新增参照过滤 + template.ssctp_imagshow_form.items.forEach((item, idx, items) => { + if (item.attrcode === 'pk_transtype') { + item.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeForDRRefBuilder', + }) + } + }) + + // // 添加操作列 + // template.ssctp_imagshow_list.items.push({ + // label: multiLang['701010DOOROAD-013'], + // attrcode: "opr", + // itemtype: "customer", + // visible: true, + // width: "100px", + // fixed: "right", + // render: (record, values, idx) => { + // return createOprationButton(['param'], { + // area: 'list_btnArea', + // onButtonClick: (props, key) => { + // that.showParamModal(values, idx) + // } + // }); + // } + // }) + + setMeta(template); + setButtons(button); + that.setState({multiLang}); + + that.changePageStatu('browse') + setButtonDisabled({Delete_head: true}) + that.listQry() + + }}) + }); +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/imageInterfaceSetting/config/index.js b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/index.js new file mode 100644 index 0000000..26f08a6 --- /dev/null +++ b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/index.js @@ -0,0 +1,286 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { createPage, promptBox, toast, } from "nc-lightapp-front"; +import initTemplate from "./events/initTemplate.js"; +import BillListStyle from 'ssccommon/components/bill-list'; +import ImageInterfaceSettingModal from './modal.js' +import { + asyncSave, + asyncQry, + asyncDel, + asyncOtherSelect, +} from './events/async.js' +import BatchAddModal from './BatchAdd.js' + +class ImageInterfaceSetting extends Component { + constructor(props) { + super(props); + this.state = { + showModal: false, + multiLang: {}, + showBatchAddModal: false, // 批量添加 + pageStatus: 'browse', // 页面状态 + }; + + initTemplate.call(this, props); + } + + componentDidMount() { + // 浏览器原生提示 + window.onbeforeunload = () => { + if (this.state.pageStatus === 'edit') return '' + } + } + + // 改变页面状态 + changePageStatu = status => { + this.props.button.setButtonVisible({ + Add_head: true, + Edit_head: status === 'browse', + Delete_head: true, + Save_head: status === 'edit', + Cancel_head: status === 'edit', + BatchAdd: status === 'browse', + }) + this.props.editTable.setStatus('ssctp_imagshow_list', status) + this.setState({pageStatus: status}) + this.props.button.setMainButton('Add_head', status === 'browse') + } + + // 头部按钮组事件 + headerBtnEventDistribute = () => ({ + Add_head: () => this.headAddHandle(), + Edit_head: () => this.headEditHandle(), + Delete_head: () => this.headDelHandle(), + Save_head: () => this.headSaveHandle(), + Cancel_head: () => this.headCancelHandle(), + BatchAdd: () => this.setState({showBatchAddModal: true}), + }) + + // 增加 + headAddHandle = () => { + const rows = this.props.editTable.getAllData('ssctp_imagshow_list').rows + this.props.editTable.addRow('ssctp_imagshow_list', rows.length, true, {}) + this.changePageStatu('edit') + } + + // 修改 + headEditHandle = () => { + this.changePageStatu('edit') + } + + // 取消提示 + headCancelHandle = () => { + // 浏览态 + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-007'], + content: this.state.multiLang['701010DOOROAD-019'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureCancel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } + + // 确认取消 + sureCancel = () => { + // 重新查询列表 + this.listQry() + // 浏览态 + this.changePageStatu('browse') + } + + // 列表查询 + listQry = async (isRefresh = false) => { + const response = await asyncQry() + const {success, data} = response + if (!success) return + this.props.editTable.setTableData('ssctp_imagshow_list', data ? data.ssctp_imagshow_list : {rows: []}) + if (isRefresh) { + toast({title: this.state.multiLang['701010DOOROAD-022'], duration: 5}) + } + } + + // 隐藏弹窗 + onHide = () => { + this.setState({showModal: false}) + } + + // 保存 + headSaveHandle = async () => { + const { + editTable: { filterEmptyRows, checkRequired, getAllData, setTableData}, + } = this.props + filterEmptyRows('ssctp_imagshow_list', ['showtype']) + const tableData = getAllData('ssctp_imagshow_list') + if (!checkRequired('ssctp_imagshow_list', tableData.rows)) return + const response = await asyncSave({ssctp_imagshow_list: tableData}) + if (!response) return + const {success, data} = response + if (!success) return + setTableData('ssctp_imagshow_list', data ? data.ssctp_imagshow_list : {rows: []}) + this.changePageStatu('browse') + toast({ title: this.state.multiLang['701010DOOROAD-016'], duration: 5}) + } + + // 删除提示 + headDelHandle = () => { + if (this.state.pageStatus === 'browse') { + const checkedRows = this.props.editTable.getCheckedRows('ssctp_imagshow_list') + if (!checkedRows.length) return + return promptBox({ + color: 'warning', + title: this.state.multiLang['701010DOOROAD-003'], + content: this.state.multiLang['701010DOOROAD-018'], + noFooter: false, + noCancelBtn: false, + beSureBtnClick: this.sureDel, + cancelBtnClick: () => {}, + closeByClickBackDrop: true, + }) + } else { + const checkedIndex = this.props.editTable.getCheckedRows('ssctp_imagshow_list').map(row => row.index) + if (!checkedIndex.length) return + this.props.editTable.deleteTableRowsByIndex('ssctp_imagshow_list', checkedIndex) + } + } + + // 确认删除 + sureDel = async () => { + const { + deleteTableRowsByIndex, getCheckedRows, getAllData, setTableData, + } = this.props.editTable + + const toDelIdxs = getCheckedRows('ssctp_imagshow_list').map(row => row.index) + deleteTableRowsByIndex('ssctp_imagshow_list', toDelIdxs) + + const response = await asyncDel({ssctp_imagshow_list: getAllData('ssctp_imagshow_list')}) + const {success, data} = response + if (!success || !data) return + + setTableData('ssctp_imagshow_list', data.ssctp_imagshow_list) + toast({ title: this.state.multiLang['701010DOOROAD-017'], duration: 5}) + } + + // 显示弹窗 + showParamModal = (row, index) => { + this.setState({showModal: true}) + } + + // 列表编辑后事件 + onAfterEvent = async (props, areaId, key, currentValue, changedrows, index, row, ...others) => { + if (key === 'pk_transtype') { + const transtype_code = currentValue.refcode || '' + props.editTable.setValByKeyAndIndex(areaId, index, 'transtype_code', {value: transtype_code, display: transtype_code}) + } + + // if (key !== 'pk_ots') { + // return true + // } + // const { + // editTable: { setValByKeyAndIndex, }, + // } = props + // if (!currentValue.refpk) { + // setValByKeyAndIndex(areaId, index, 'url', {value: '', display: ''}) + // return true + // } + // const response = await asyncOtherSelect({pk_ots: currentValue.refpk}) + // const {success, data} = response + // if (!success || !data) return true + // setValByKeyAndIndex(areaId, index, 'url', {value: `${data.ip}:${data.port}`, display: `${data.ip}:${data.port}`}) + } + + // 列表选中变更事件 + selectedChange = (props, areaId, newVal, oldVal) => { + this.props.button.setButtonDisabled({Delete_head: !newVal}) + } + + // 刷新 + refreshButtonEvent = () => { + this.listQry(true) + } + + render() { + const { + state: { + multiLang, + showBatchAddModal, + pageStatus, + }, + props: { + getSearchParam, + editTable: { createEditTable, }, + }, + headerBtnEventDistribute, + onHide, + onAfterEvent, + selectedChange, + changePageStatu, + refreshButtonEvent, + headSaveHandle, + } = this + + return ( + + + + {/* 头部按钮组 */} + + + + + {/* 列表 */} + {createEditTable( + 'ssctp_imagshow_list', + { + showIndex: true, + showCheck: true, + isAddRow: true, + onAfterEvent, + selectedChange, + adaptionHeight: true, + }, + )} + + + + + { + this.setState({showBatchAddModal: false}) + if (action === 'save') { + changePageStatu('edit') + } else { + changePageStatu('browse') + } + }} + setPageEdit={() => changePageStatu('edit')} + headSaveHandle={headSaveHandle} + {...this.state} + {...this.props} + /> + + + ); + } +} + +ImageInterfaceSetting = createPage({ mutiLangCode: '7010' })(ImageInterfaceSetting); +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/imageInterfaceSetting/config/modal.js b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/modal.js new file mode 100644 index 0000000..361b8b8 --- /dev/null +++ b/src/ssctpaaa/dooroad/imageInterfaceSetting/config/modal.js @@ -0,0 +1,51 @@ +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ +import React, { Component, } from 'react'; +import { base, } from 'nc-lightapp-front'; +const { NCModal, NCButton,} = base; + +export default class ImageInterfaceSettingModal extends Component { + constructor(props) { + super(props) + this.state = {} + } + + render() { + const { + props: { + showModal, + multiLang, + editTable: { createEditTable, }, + button: { createButtonApp, }, + onHide, + }, + state: {}, + } = this + + return ( + + + {multiLang['701010DOOROAD-010']} + + + {createEditTable('param', { + showIndex: true, + showCheck: true, + isAddRow: true, + })} + + + {createButtonApp({ + area: 'form_btnArea', + onButtonClick: (props, key) => {}, + })} + + + ) + } +} +/*8o+P8J7kLOMsCOkr3TeeGIRKKnnuiYLht9+O74e2aAU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/LinkVoucher.js b/src/ssctpaaa/dooroad/linkvoucher/config/LinkVoucher.js new file mode 100644 index 0000000..171db4c --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/LinkVoucher.js @@ -0,0 +1,76 @@ +/*JM8uPPGENTbQMhsgGLERSe1ppcxQaSSiLZDws+vJ2z0=*/ +import React, { Component } from 'react'; +import { createPage, base } from 'nc-lightapp-front'; +import presetVar from './presetVar'; +import requestApi from './requestApi'; +import pubMessage from 'ssccommon/utils/pubMessage'; +import initTemplate from './initTemplate'; +import { buttonEvent, afterEvent } from './events'; +import { ProfileStyle, ProfileHead, ProfileBody, BodyRight, HeadCenterCustom, ButtonGroup } from 'ssccommon/components/profile'; +import { EditTable } from 'ssccommon/components/table'; +const { NCCheckbox, NCModal, NCButton, NCFormControl } = base; +import './index.less'; + + +const pageButton = presetVar.pageButton +class LinkVoucher extends Component { + constructor(props) { + super(props); + this.state = { + queryDataJSX: [] + } + initTemplate.call(this, props); + } + + componentWillMount() { + } + + componentDidMount() { + + } + + + render() { + const { table, form } = this.props; + const { createSimpleTable } = table; + const { createForm } = form; + let multiLang = this.props.MutiInit.getIntl(presetVar.multiLangCode); + multiLang || (multiLang = { get: () => null }); + return ( + + {/*页面头*/} + + {/* { return buttonEvent.apply(this, params) } + } + /> */} + + {/*页面体*/} + +
+ { + this.state.queryDataJSX.length ? + this.state.queryDataJSX + : +
+ {this.state.isNondata && multiLang.get("7011-0002")} +
+ } + +
+
+
+ ) + } +} + +LinkVoucher = createPage({ + mutiLangCode: presetVar.multiLangCode +})(LinkVoucher); +export default LinkVoucher; +/*JM8uPPGENTbQMhsgGLERSe1ppcxQaSSiLZDws+vJ2z0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/events/afterEvent.js b/src/ssctpaaa/dooroad/linkvoucher/config/events/afterEvent.js new file mode 100644 index 0000000..2b6347b --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/events/afterEvent.js @@ -0,0 +1,55 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +import { base } from "nc-lightapp-front"; +import presetVar from '../presetVar'; +import requestApi from "../requestApi"; +let { NCMessage } = base; +export default async function afterEvent(...params) { + let props = params[0]; + let areaId = params[1]; + let fieldId = params[2]; + let changedrows = params[4]; + let index = params[5] + let rowRecord = params[6]; + let values = rowRecord.values; + let multiLang = props.MutiInit.getIntl(presetVar.multiLangCode); + switch (areaId) { + case presetVar.listArea: + + this.props.handleRelationItems({ + type: 'table', //编辑的是表单值为'form', 编辑的是表格值为'table' + areaCode: areaId, //编辑区域的编码 + key: fieldId, //编辑字段英文名称 + value: { value: values[fieldId].value }, //编辑字段的新值 + changedrows, // 若编辑的是表格,需要传该参数(编辑字段的旧值),表单不传 + index, //当前是第几行 : 从 0 开始,编辑表格时,需要传该参数,表单不传 + callback: () => { + switch (fieldId) { + case "isuse": + /* let result = await requestApi.enable({ + pk_sscunit: values.pk_sscunit.value, + pk_class: values.pk_class.value, + isuse: values.isuse.value ? 'Y' : 'N' + }); + this.props.editTable.setValByKeyAndRowId(areaId, rowRecord.rowid, "ts", { + value: result.data[presetVar.listArea].rows[0].values.ts.value, + }); + this.props.editTable.setValByKeyAndRowId(areaId, rowRecord.rowid, fieldId, { + value: values.isuse.value + }); + //以下必须重新设置表格数据,否则在table变化状态时,数据会被还原。 + let tableData = this.props.editTable.getAllData(areaId); + props.editTable.setTableData(areaId, tableData); + this.pubMessage.operateSuccess(); */ + break; + default: + break; + } + }, //请求成功的回调(业务组自己的编辑后事件), + //formMetaCode: 'card_head' //若编辑的是分组表单,为当前编辑的表单分组的区域编码 + }) + break; + default: + break; + } +} +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/events/buttonEvent.js b/src/ssctpaaa/dooroad/linkvoucher/config/events/buttonEvent.js new file mode 100644 index 0000000..744cb1d --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/events/buttonEvent.js @@ -0,0 +1,91 @@ +/*oSJmPrU3sG4z5K4LEKqHwMU4cwVci4NkRlcfds1rDzQ=*/ +import { toast } from 'nc-lightapp-front'; +import presetVar from '../presetVar'; +import requestApi from '../requestApi'; + +const { + Save, Delete, Add, Edit, Cancel +} = presetVar.pageButton; +/** + * 按钮事件 + */ +function buttonEvent() { + let props = this.props; + let multiLang = this.props.MutiInit.getIntl(presetVar.multiLangCode); + return { + // 保存 + [Save]: { + url: '/nccloud/sscbd/sscbase/ProblemClassSaveAction.do', + beforeClick: () => { + // 保存前删除空行 + props.editTable.filterEmptyRows(presetVar.listArea, []); + return { + extReqParams: { + userjson: JSON.stringify({pk_sscunit: this.state.SSCCenter.refpk}) + } + }; + }, + afterClick: (ncProps, data) => { + // 浏览态新增按钮为主按钮,设置新增按钮为主按钮 + props.button.setMainButton(Add, true); + //设置按钮行为为弹窗 + //7002-AUDIT-0006:确认要删除吗? + props.button.setPopContent(Delete, multiLang && multiLang.get('7002-AUDIT-0006')) /* 设置操作列上删除按钮的弹窗提示 */ + this.setState({ + isEdit: false + }) + } + }, + // 删除 + [Delete]: async (record) => { + if (this.props.editTable.getStatus(presetVar.listArea) == "browse") { + let result = await requestApi.deleteRow( + [record.values.pk_class.value] + ); + this.props.editTable.deleteTableRowsByRowId(presetVar.listArea, record.rowid, true) + result.success && this.pubMessage.deleteSuccess(); + } else { + this.props.editTable.deleteTableRowsByRowId(presetVar.listArea, record.rowid, false) + } + + }, + // 增行 + [Add]: { + afterClick: (ncProps) => { + // 编辑态保存按钮为主按钮,取消新增按钮的主按钮状态 + props.button.setMainButton(Add, false); + //设置按钮行为为弹窗 + props.button.setPopContent(Delete) /* 设置操作列上删除按钮的弹窗提示 */ + this.setState({ + isEdit: true + }) + } + }, + // 编辑 + [Edit]: { + afterClick: (ncProps) => { + // 编辑态保存按钮为主按钮,取消新增按钮的主按钮状态 + props.button.setMainButton(Add, false); + //设置按钮行为为弹窗 + props.button.setPopContent(Delete) /* 设置操作列上删除按钮的弹窗提示 */ + this.setState({ + isEdit: true + }) + } + }, + // 取消 + [Cancel]: { + afterClick: (ncProps) => { + // 浏览态新增按钮为主按钮,设置新增按钮为主按钮 + props.button.setMainButton(Add, true); + //设置按钮行为为弹窗 + props.button.setPopContent(Delete, multiLang && multiLang.get('7002-AUDIT-0006')) /* 设置操作列上删除按钮的弹窗提示 */ + this.setState({ + isEdit: false + }) + } + } + } +} +export default buttonEvent +/*oSJmPrU3sG4z5K4LEKqHwMU4cwVci4NkRlcfds1rDzQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/events/index.js b/src/ssctpaaa/dooroad/linkvoucher/config/events/index.js new file mode 100644 index 0000000..c1d817a --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/events/index.js @@ -0,0 +1,5 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonEvent from './buttonEvent'; +import afterEvent from './afterEvent'; +export {buttonEvent, afterEvent}; +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/index.js b/src/ssctpaaa/dooroad/linkvoucher/config/index.js new file mode 100644 index 0000000..d406713 --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/index.js @@ -0,0 +1,8 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import LinkVoucher from './LinkVoucher'; +ReactDOM.render( + , document.querySelector('#app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/index.less b/src/ssctpaaa/dooroad/linkvoucher/config/index.less new file mode 100644 index 0000000..0011249 --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/index.less @@ -0,0 +1,31 @@ +.voucher-list { + background: #fff; + padding: 5px 10px; +} + +.voucher-item { + background: #fff; + margin-bottom: 10px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.nc-single-table { + background: #FFF; +} + +.voucher-bottom { + display: flex; + justify-content: flex-end; + padding-right: 30px; + background: #f6f6f6; + line-height: 30px; + .voucher-bottom-item { + font-size: 13px; + margin-left: 30px; + font-weight: 400; + span { + color: #ff6607; + } + } +} \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/initTemplate.js b/src/ssctpaaa/dooroad/linkvoucher/config/initTemplate.js new file mode 100644 index 0000000..c04214a --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/initTemplate.js @@ -0,0 +1,114 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import 'ssccommon/components/globalPresetVar'; +import presetVar from './presetVar'; +import requestApi from './requestApi'; + +export default async function (props) { + + let createUIDomPromise = new Promise((resolve, _) => { + props.createUIDom( + {}, + (tplData) => { + resolve(tplData); + } + ) + }) + + /* let queryPromise = requestApi.query({ + billid: '1001A9100000000022L7', + pk_group: '0001A91000000000034H', + pk_org: '0001A910000000000FJ5', + transtypecode: 's2641_transtype' + }) */ + + let queryPromise = requestApi.query({ + billid: props.getUrlParam('billid'), + pk_group: props.getUrlParam('pk_group'), + pk_org: props.getUrlParam('pk_org'), + transtypecode: props.getUrlParam('transtypecode') + }) + + let result = await Promise.all([createUIDomPromise, queryPromise]); + + let tplData = result[0]; + let queryData = result[1].data.datas || []; + + let { template: meta, button } = tplData; + //queryData[1] = queryData[0]; + + //渲染模板处理 + metaHandle.call(this, meta, queryData) + //props.button.setButtons(button); + //设置渲染模板 + this.props.meta.setMeta(meta); + + //设置数据 + queryData.forEach((item, index) => { + this.props.form.setAllFormValue({ [`${presetVar.headArea}_${index}`] : item.head.head}); + this.props.table.setAllTableData(`${presetVar.bodyArea}_${index}`, item.body.body); + + }) + +} + +function metaHandle(meta, queryData) { + const { table, form } = this.props; + const { createSimpleTable } = table; + const { createForm } = form; + let queryDataJSX = []; + + let headMeta = meta[presetVar.headArea]; + + let totalcreditTxt = ''; //借方合计 + let totaldebitTxt = ''; //贷方合计 + headMeta.items.forEach((item) => { + if (item.attrcode == 'totalcredit') { + totalcreditTxt = item.label; + } + if (item.attrcode == 'totaldebit') { + totaldebitTxt = item.label; + } + }) + + queryData.forEach((item, index) => { + let newHead = `${presetVar.headArea}_${index}` + let newBody = `${presetVar.bodyArea}_${index}`; + + item.head.head.areacode = newHead; + item.body.body.areacode = newBody; + + meta[newHead] = {...meta[presetVar.headArea], code: newHead}; + meta[newBody] = {...meta[presetVar.bodyArea], code: newBody}; + + + let headData = item.head.head.rows[0].values; + + queryDataJSX.push( +
+ {createForm(newHead, { + isNoStandard: true + })} + {createSimpleTable(newBody, { + showIndex: true, + height: 200 + })} +
+ {/* 借方合计 */} +
{totalcreditTxt}:{headData.totalcredit.value}
+ {/* 贷方合计 */} +
{totaldebitTxt}:{headData.totaldebit.value}
+
+
+ ) + }) + let isNondata = false; + if (queryDataJSX.length == 0) { + isNondata = true; + } + this.setState({ + queryDataJSX, + isNondata + }) + +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/presetVar.js b/src/ssctpaaa/dooroad/linkvoucher/config/presetVar.js new file mode 100644 index 0000000..4d69f39 --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/presetVar.js @@ -0,0 +1,21 @@ +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ +/**页面全局变量 */ +let presetVar = { + headArea: 'head', + bodyArea: 'body', + headBtnArea: 'page_header', + pageButton: { + Save: 'Save', + Delete: 'Delete', + Add: 'Add', + Edit: 'Edit', + Cancel: 'Cancel', + DelLine: 'DelLine', + SetLine: 'Set', + EditLine: 'EditLine' + }, + multiLangCode: '7011' +}; + +export default presetVar; +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ \ No newline at end of file diff --git a/src/ssctpaaa/dooroad/linkvoucher/config/requestApi.js b/src/ssctpaaa/dooroad/linkvoucher/config/requestApi.js new file mode 100644 index 0000000..3d53ff7 --- /dev/null +++ b/src/ssctpaaa/dooroad/linkvoucher/config/requestApi.js @@ -0,0 +1,27 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { requestPromise } from 'ssccommon/utils/asyncFunctions.js'; + +import { + toast, +} from 'nc-lightapp-front'; + +/** + * @method query 查询 + * @return {Object} 出参报文 + */ +async function query(data) { + try { + const result = await requestPromise({ + url: `/nccloud/ssctp/dooroad/DRLinkVoucherAction.do`, + data + }); + return result + } catch (e) { + toast({ title: e.message, duration: 5, color: 'danger', }) + } +} + +export default { + query +} +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/approvalMonitoring.js b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/approvalMonitoring.js new file mode 100644 index 0000000..e04b47f --- /dev/null +++ b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/approvalMonitoring.js @@ -0,0 +1,215 @@ +/*dblajF+af+yID9H3pBHGr5XRfqOgoG/Gpge0pHK6TR4=*/ +import { Component } from "react"; +import { createPage, getMultiLang, createPageIcon, base, ajax } from "nc-lightapp-front"; +const {NCButton, NCModal, NCFormControl, NCDiv} = base +import "./index.less"; +import initTemplate from "./events/initTemplate.js"; +import { + logicalSearchList, + logicalSearchAreaAfterEvent, + logicalManualReturn, + logicalOpenBill, +} from './events/logicalEvents.js' +import BillListStyle from 'ssccommon/components/bill-list'; +import PubMessage from 'ssccommon/utils/pubMessage'; + +class ApprovalMonitoring extends Component { + constructor(props) { + super(props); + this.state = { + multiLang: {}, // 多语 + showCheckModal: false, // 退回人工处理modal + modalVal: '', //退回人工处理原因 + disabled: true, //退回人工处理按钮禁用 + }; + //toast消息公共组件 + this.pubMessage = new PubMessage(); + //初始化 + initTemplate.call(this, props); + } + + componentDidMount() { + getMultiLang({ + moduleId: 7010, + domainName: 'ssctp', + currentLocale: 'zh-CN', + callback: (multiLang) => { + this.setState({multiLang}) + } + }) + } + + // 查询区查询操作回调 + clickSearchBtn = (props, conditions) => { + this.conditions = conditions; + logicalSearchList.call(this, conditions) + } + + // 查询区编辑后事件 + onAfterEvent = (attrcode, values, area) => logicalSearchAreaAfterEvent.call(this, attrcode, values, area) + + // 查询区组件挂载完成回调 + renderCompleteEvent = () => {} + + // table翻页 + handlePageInfoChange = (props, tableInfo, allpks, index) => logicalSearchList.call(this, null, allpks) + + // 退回人工处理 + manualReturn = () => logicalManualReturn.call(this) + + // 退回人工处理按钮点击 + headerBtnClick = () => { + // 校验 列表选中 + // const checkedRows = this.props.table.getCheckedRows('approvalMonitoringList') + // if (checkedRows.length === 0) return toast({ + // color: 'warning', + // title: this.state.multiLang['701004SPJK_008'], + // duration: 3 + // }) + //需要判断saga + const { saga_status, pk_currenttask } = this.selectedRow; + + if(saga_status && saga_status.value === "1") { + //前端saga事务错误,去后端再次验证 + ajax({ + url: '/nccloud/ssctp/sscbd/SSCSagaCheckAction.do', + data: { + pk_currenttask: pk_currenttask.value + }, + success: () => this.setState({showCheckModal: true}) + }); + } else { + this.setState({showCheckModal: true}) + } + + + } + + selectedChange = () => { + const { + table: {getCheckedRows,}, + } = this.props + + const disabled = !(getCheckedRows('approvalMonitoringList').length > 0) + this.setState({disabled}) + } + + onRowDoubleClick = (record, idx, props, ...others) => logicalOpenBill.call(this, record) + + socketMesg = (props, mesg) => { + if(!mesg.error) { + //更新列表数据 + logicalSearchList.call(this, this.conditions) + } + } + + render() { + const { + state: { multiLang, showCheckModal, modalVal, disabled, }, + props: { + search: { NCCreateSearch }, + table: { createSimpleTable }, + socket + }, + clickSearchBtn, + onAfterEvent, + renderCompleteEvent, + handlePageInfoChange, + manualReturn, + headerBtnClick, + selectedChange, + onRowDoubleClick, + } = this + + const { createBillHeadInfo } = this.props.BillHeadInfo; + return [ + socket.connectMesg({ + tableAreaCode: "approvalMonitoringList", + billpkname: "pk_approvemonitor", + billtype: "", + onMessage: this.socketMesg + // 本地前端调试,请传ip和端口 + // 打包到测试环境之前 去掉 + // serverLocation: "172.16.86.11:8883" + }), + + {/* 头部 */} + + {/* btn-group */} + {/* + 701004SPJK_004 退回人工处理 + */} + {/* */} + {/* {multiLang['701004SPJK_004']} */} + {/* */} + + {/* 查询区 */} + + {NCCreateSearch("approvalMonitoringSearchArea", { + hideSearchCondition: false, + hideBtnArea: false, + showAdvBtn: false, + clickSearchBtn, + onAfterEvent, + showClearBtn: true, + renderCompleteEvent + })} + + {/* 列表区 */} + + {createSimpleTable("approvalMonitoringList", { + showIndex: true, + // showCheck: true, + pkname: "pk_approvemonitor", + handlePageInfoChange, + selectedChange, + onRowDoubleClick, + })} + + + {/* 退回人工处理Modal */} + this.setState({showCheckModal: false, modalVal: ''})} + backdrop={'static'} + > + + {multiLang['701004SPJK_004']} + + + this.setState({modalVal})} + placeholder={multiLang['701004SPJK_004']} + /> + + + {/* 701004SPJK_005 确认 */} + {multiLang['701004SPJK_005']} + {/* 701004SPJK_006 取消 */} + {this.setState({showCheckModal: false, modalVal: ''})}} + >{multiLang['701004SPJK_006']} + + + + + ]; + } +} + +ApprovalMonitoring = createPage({ mutiLangCode: '7010' })(ApprovalMonitoring); +export default ApprovalMonitoring; + +/*dblajF+af+yID9H3pBHGr5XRfqOgoG/Gpge0pHK6TR4=*/ \ No newline at end of file diff --git a/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/initTemplate.js b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/initTemplate.js new file mode 100644 index 0000000..45b6ad0 --- /dev/null +++ b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/initTemplate.js @@ -0,0 +1,92 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { logicalOpenBill } from './logicalEvents' + +export default function ({ + createUIDom, meta: { setMeta }, table: { setTableRender }, search: { getSearchValByField }, button: { createErrorButton, createOprationButton, setButtons} +}) { + const _this = this + createUIDom({ + pagecode: '701004SPJK_L', + appcode: '701004SPJK' + }, function ({ template, button }) { + template.approvalMonitoringList.pagination = true + + let idx = -1, len = template.approvalMonitoringList.items.length + while (++idx < len) { + let item = template.approvalMonitoringList.items[idx] + if (item.attrcode.indexOf('.') > -1) item.attrcode = item.attrcode.split('.')[1] + } + + // 查询区参照过滤 + template.approvalMonitoringSearchArea.items.map( + (one, index) => { + if (one.attrcode.indexOf('billtype') > -1) { // 单据类型 + one.refcode = `/uap/refer/riart/billtype/index.js` + one.queryCondition = () => ({ + GridRefActionExt: 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.BilltypeRefSqlBuilder' + }) + } else if (one.attrcode.indexOf('pk_org') > -1) { // 报账单位 + one.queryCondition = () => ({ + TreeRefActionExt: 'nccloud.web.ssctp.report.sqlbuilder.OrgRefBuilder', + pk_sscunit: _this.props.search.getSearchValByField('approvalMonitoringSearchArea', 'pk_currenttask.pk_sscunit').value.firstvalue, + isMutiGroup: 'Y', + }) + } else if (one.attrcode.indexOf('pk_sscunit') > -1) { // 共享中心 + one.queryCondition = () => ({ + isNeedPerm: 'N' // 是否受当前登录用户的集团数据权限控制 + }) + } + } + ); + + //增加按钮退出人工处理 + setButtons(button); + let event = { + label: _this.state.multiLang['701001RWCL-0060'], + itemtype: 'customer', + className: 'opr', + attrcode: 'opr', + visible: true, + width: '125px', + fixed: 'right', + render: (text, record, index) => { + return createErrorButton({ + record: record, + sucessCallBack: () => { + return createOprationButton(['ManualReturn'], { + area: "approvalMonitoringList", + buttonLimit: 3, + onButtonClick: (props, btnKey) => { + _this.selectedRow = record; + _this.selectedIdx = index; + _this.headerBtnClick() + } + }) + } + }) + } + }; + template.approvalMonitoringList.items.push(event); + + setMeta(template); + // 单据号列自定义 + setTableRender('approvalMonitoringList', "billno", (text, record, index) => { + return ( + logicalOpenBill.call(_this, record)} + >{record.billno.value} + ) + }) + + setTableRender('approvalMonitoringList', "resultsflag", (text, record, index) => { + return ( + record.resultsflag.value === 'Y' ? + : + + ) + }) + }); +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/logicalEvents.js b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/logicalEvents.js new file mode 100644 index 0000000..2414fcf --- /dev/null +++ b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/events/logicalEvents.js @@ -0,0 +1,196 @@ +/*0YgIFuXJoC2x+5JNXKiUO11ZXLxRDpeZUyfdJGHH3Ew=*/ +/* eslint-disable no-console */ + +import { + requestPromise, + setStatePromise +} from 'ssccommon/utils/asyncFunctions.js'; + +import { toast } from "nc-lightapp-front"; +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; + + +/** + * @method logicalSearchList 查询区查询按钮点击回调 + * @param {Array} conditions 查询区所有字段值 + * @return {Undefined} 无返回值 + */ +async function logicalSearchList(querycondition, allpks = false) { + try { + + const result = await requestPromise({ + url: `/nccloud/ssctp/sscapv/ApproveMonitorQryAction.do`, + data: allpks ? { pks: allpks } : { + querycondition, + pagecode: `701004SPJK_L`, + queryAreaCode: `approvalMonitoringSearchArea`, + querytype: `tree`, + oid: `1001ZG100000000010NY` + }, + }); + + const { data } = result + if (allpks) { // 翻页 + this.props.table.setAllTableData('approvalMonitoringList', { + rows: data ? data.data.rows : [] + }) + } else { // 查询区查询 + this.props.table.setAllTableData('approvalMonitoringList', { + rows: data ? data.data.rows : [], + pageInfo: { + pageIndex: 0, + pageSize: 10, + totalPage: data ? Math.ceil(data.pks.length / 10) : 0, + total: data ? data.pks.length : 0 + }, + allpks: data ? data.pks : [] + }) + this.pubMessage.querySuccess((data ? data.pks : []).length); + } + + this.setState({ disabled: true }) + + } catch (e) { + console.error(e) + } +} + +/** + * @method logicalSearchAreaAfterEvent 查询区编辑后事件 + * @param {String} attrcode 当前操作项对应键值 + * @param {String || Object} values 当前操作项对应字段值 + * @param {String} area 查询区区域id + * @return {Undefined} 无返回值 + */ +async function logicalSearchAreaAfterEvent(attrcode, values, area) { + console.log('logicalSearchAreaAfterEvent: ', attrcode, values, area); +} + +/** + * @method logicalManualReturn 退回人工处理 + * @return {Undefined} 无返回值 + */ +async function logicalManualReturn() { + const { state: { modalVal, multiLang }, props: { + table: { getCheckedRows, updateDataByIndexs, selectAllRows, }, + } } = this + // 校验 退回原因 + if (!modalVal) return toast({ + color: 'warning', + title: multiLang['701004SPJK_007'], + duration: 3 + }) + + const checkedRows = [this.selectedRow];//getCheckedRows('approvalMonitoringList') + // 入参 + const filterRows = checkedRows.filter(e => { + return !(e.resultsflag.value === 'N' && e.expuntreated.value === 'N') && !e.workinggroupname.value + }) + + const pks = filterRows.map(e => e.pk_currenttask.value), + billtypecodes = filterRows.map(e => e.billtypecode.value), + busiids = filterRows.map(e => e.busiid.value), + transtypecodes = filterRows.map(e => e.transtypecode.value), + monitorPks = filterRows.map(e => e.pk_approvemonitor.value) + + const payload = { + reason: modalVal, + pks, + billtypecodes, + busiids, + transtypecodes, + monitorPks, + } + // 所选单据已转过人工处理,不能再进进行人工处理。 + if (pks.length === 0) return toast({ + color: 'warning', + title: multiLang['701004SPJK_012'], + duration: 3 + }) + // 退回处理 + try { + const modules = this.selectedRow.module.value || ""; + const result = await requestPromise({ + url: `/nccloud/${modules}/ssctp/sscapv/TransToManualAction.do`, + data: payload, + }); + + if (!result) return + + const { + data: { + message, color, rows, + }, + } = result + + toast({ + color, + title: message, + duration: 3 + }) + + await setStatePromise.call(this, { showCheckModal: false, modalVal: '' }) // 重置弹出框 + + // 刷新列表 + const newRows = [{ + index: this.selectedIdx, data: rows[0], + }] + + updateDataByIndexs('approvalMonitoringList', newRows) + selectAllRows('approvalMonitoringList', false) + + } catch (e) { + toast({ + color: 'warning', + title: multiLang['701004SPJK_010'], + content: e.data, + duration: 3 + }) + } +} + +/** + * @method logicalOpenBill 单据编码点击打开单据 + * @param {Object} record 当前行数据 + * @return {Undefined} 无返回值 + */ +async function logicalOpenBill(record) { + const { billtypecode, transtypecode, busiid, pk_group } = record + // 打开单据 + try { + + const result = await requestPromise({ + url: `/nccloud/sscrp/rpbill/BrowseBillAction.do`, + data: { + billtypeCode: billtypecode.value, + transtypeCode: transtypecode.value, + billid: busiid.value, + pk_group: pk_group.value + }, + }); + const { data: { data, url, system } } = result + sscOpenTo(this.props, system, [ + url, + { + ...data, + scene: 'bzcx' + }, null, + { + pk_group: record.pk_group.value + } + ]) + + + } catch (e) { + console.error(e) + } +} + +export { + logicalSearchList, + logicalSearchAreaAfterEvent, + logicalManualReturn, + logicalOpenBill, +}; + +/*0YgIFuXJoC2x+5JNXKiUO11ZXLxRDpeZUyfdJGHH3Ew=*/ \ No newline at end of file diff --git a/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.js b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.js new file mode 100644 index 0000000..4677cd6 --- /dev/null +++ b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.js @@ -0,0 +1,8 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import ApprovalMonitoring from './approvalMonitoring.js'; + +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.less b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.less new file mode 100644 index 0000000..a2d61a3 --- /dev/null +++ b/src/ssctpaaa/intelligentApproval/approvalMonitoring/config/index.less @@ -0,0 +1,35 @@ +#approval-monitoring { + .fuzzyquery { + min-width: 200px; + } + + .billnoa { + cursor: pointer; + } + + .resultsflag-success, + .resultsflag-failure { + width: 8px; + height: 8px; + } + + .resultsflag-failure { + color: #e14c46; + } + + .resultsflag-success { + color: #7dac42; + } + + .u-table-fixed-right { + .opr { + .single-line-and-ellipsis { + text-overflow: initial; + } + } + } + .error-flag { + max-width: 28px !important; + } + +} diff --git a/src/ssctpaaa/public/common/requestApi.js b/src/ssctpaaa/public/common/requestApi.js new file mode 100644 index 0000000..8900619 --- /dev/null +++ b/src/ssctpaaa/public/common/requestApi.js @@ -0,0 +1,48 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax } from 'nc-lightapp-front' + +let requestApiOverwrite = { + queryLastPeriodAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/ssccheck/querylastperiodaction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + //联查条件处理 + linkQueryConditionAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/ssccheck/LinkQueryConditionAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 查看单据 + openBill: opt => { + ajax({ + url: '/nccloud/ssctp/sscbd/LinkBillAction.do', + data: opt.data, + success: data => { + opt.success(data); + } + }); + }, + + // 查看单据 + queryBill: opt => { + ajax({ + url: '/nccloud/ssctp/ssccheck/LinkBillQueryAction.do', + data: opt.data, + success: data => { + opt.success(data); + } + }); + } +} + +export default requestApiOverwrite +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/public/common/ssctpBaseEvents.js b/src/ssctpaaa/public/common/ssctpBaseEvents.js new file mode 100644 index 0000000..c04d884 --- /dev/null +++ b/src/ssctpaaa/public/common/ssctpBaseEvents.js @@ -0,0 +1,147 @@ +/*R/0Z33+J35EX9fEUkfZBCtGpOqeYqOfn+XegCK8k930=*/ +import {ajax, viewModel} from 'nc-lightapp-front' +import requestApi from './requestApi' +let { setGlobalStorage, getGlobalStorage, removeGlobalStorage } = viewModel; +class pubMessage { + constructor(props) { + this.props = props; + } + //参照过滤 + disposeSearch (meta, props) { + let items = meta['light_report'].items + items.forEach((item) => { + + if (item.attrcode == 'pk_org') { + item.queryCondition = () => { + let orgRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.OrgRefBuilder'; + let data = props.search.getSearchValByField('light_report', 'pk_sscunit').value.firstvalue; + return { pk_sscunit: data,isMutiGroup:'Y', TreeRefActionExt:orgRefBuilder}; + }; + }else if (item.attrcode == 'pk_dept') { + item.queryCondition = () => { + let data = props.search.getSearchValByField('light_report', 'pk_org').value.firstvalue; + return { pk_org: data}; + }; + }else if (item.attrcode == 'pk_transtype') { + item.queryCondition = () => { + let transtypeRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.TranstypeRefBuilder'; + let data = props.search.getSearchValByField('light_report', 'pk_busiunit').value.firstvalue; + return { pk_busiunit: data, GridRefActionExt:transtypeRefBuilder}; + }; + }else if (item.attrcode == 'pk_busiunit') { + //业务范围参照 + item.queryCondition = () => { + let busiunitRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.BusiunitRefBuilder'; + let pk_sscunit = props.search.getSearchValByField('light_report', 'pk_sscunit').value.firstvalue; + let pk_org = props.search.getSearchValByField('light_report', 'pk_org').value.firstvalue; + return { pk_sscunit: pk_sscunit,pk_org: pk_org, GridRefActionExt:busiunitRefBuilder}; + }; + } + + }) + return meta; // 处理后的过滤参照返回给查询区模板 + } + + /** + * + * @param items: 查询区查询数据,如需拓展查询区参数,请返回与items相同格式的查询数据 + */ + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + // let obj = { + // field: 'reportType', + // datatype: '204', + // display: '报表类型', + // isIncludeSub: false, + // oprtype: '=', + // value: {firstvalue: 'fullprocess',secondvalue:''} + // } + // items.conditions.push(obj) + return items + } + + setDefaultVal(searchId, props) { + // props.search.setSearchValByField('light_report', 'reporttype', {firstvalue: 'fullprocess',secondvalue:''}); + } + + /** + * props: props + * searchId: 查询区需要的searchId参数 + * field: 编辑后的key + * val: 编辑后的value + */ + onAfterEvent (props, searchId, field, val) { + if("cur_period" == field){ + var cur_period = props.search.getSearchValByField(searchId, 'cur_period' ); + requestApi.queryPrePeriodAction({ + data: { + cur_period: cur_period.value + }, + success: (data) => { + props.search.setSearchValByField('light_report', 'pre_period', data.data); + } + }) + } else if ("pk_sscunit" == field) { + props.search.setSearchValByField('light_report', 'pk_org', ""); + props.search.setSearchValByField('light_report', 'pk_busiunit', ""); + props.search.setSearchValByField('light_report', 'pk_transtype', ""); + } + // else if("pk_busiunit" == field){ + // if(val && val.length>1){ + // //业务范围多选时,交易类型不可选择 + // props.search.setSearchValByField('light_report', 'pk_transtype', []); + // props.search.setDisabledByField('light_report','pk_transtype',true); + // }else{ + // props.search.setDisabledByField('light_report','pk_transtype',false); + // } + // } + } + + + /** + * isRange: 查询后数据区域内点击单元格按钮可操作。如需要像升降序按钮那样,则设置 disabled={isRange}属性 + * data: 表格数据 + * coords: 选中的单元格 + */ + CreateNewSearchArea (isRange, data, coords) { + // button区域业务端自定义的新增按钮 + //return 新增按钮 + } + + /** + * transSaveObject: 业务端处理的transSaveObject参数 + * obj: 点击联查下拉的item信息 + * data: 联查需要的参数 + * props: 平台props + * url: 平台openTo第一个参数 + * urlParams: 平台openTo第二个参数 + * sessonKey: sessionStorage的key + */ + setConnectionSearch(transSaveObject, obj, data, props, url, urlParams, sessonKey) { + setGlobalStorage('sessionStorage', sessonKey, transSaveObject); //处理好的transSaveObject放到浏览器内存中,必须,跳转报表页面会用到 + if (obj.key == '001'){ + let pkCode = urlParams.reportId; + let defaultCallBack = (res) => { + if (res.success) { + props.openTo(res.data.url, { + ...res.data, + status: 'browse' + }); + } + }; + ajax({ + url: '/nccloud/erm/expdetail/LinkBillAction.do', + data: { + data, + pkCode + }, + success: defaultCallBack + }) + } + if(obj.key == '002'||obj.key == '003'||obj.key == '004'){ + props.openTo(url, urlParams); + } + } +} +export default pubMessage +/*R/0Z33+J35EX9fEUkfZBCtGpOqeYqOfn+XegCK8k930=*/ \ No newline at end of file diff --git a/src/ssctpaaa/public/common/ssctpProblemBaseEvents.js b/src/ssctpaaa/public/common/ssctpProblemBaseEvents.js new file mode 100644 index 0000000..fea0469 --- /dev/null +++ b/src/ssctpaaa/public/common/ssctpProblemBaseEvents.js @@ -0,0 +1,119 @@ +/*FZzVZZvhIN2fe6RNx+F1buKXSummElYTYZye9SRpouzjIjxuGqCRKrrPEtQ2MGMC*/ +import { ajax, viewModel } from 'nc-lightapp-front' +import requestApi from './requestApi' +let { setGlobalStorage, getGlobalStorage, removeGlobalStorage } = viewModel; + + +class pubMessage { + constructor(props) { + this.props = props; + } + //参照过滤 + disposeSearch(meta, props) { + let items = meta['light_report'].items + items.forEach((item) => { + if (item.attrcode == 'pk_org') { + item.queryCondition = () => { + let orgRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.OrgRefBuilder'; + let data = props.search.getSearchValByField('light_report', 'pk_sscunit').value.firstvalue; + return { pk_sscunit: data,isMutiGroup:'Y', TreeRefActionExt:orgRefBuilder}; + }; + } else if(item.attrcode == 'problemMatterId'){ + item.queryCondition = () => { + let data = props.search.getSearchValByField('light_report', 'pk_sscunit').value.firstvalue; + return {pk_sscunit : data,all:'Y'}; + } + } + + }) + return meta; // 处理后的过滤参照返回给查询区模板 + } + + /** + * + * @param items: 查询区查询数据,如需拓展查询区参数,请返回与items相同格式的查询数据 + */ + expandSearchVal(items) { + //目前添加了查询条件后台查询不到 + // let obj = { + // field: 'reportType', + // datatype: '204', + // display: '报表类型', + // isIncludeSub: false, + // oprtype: '=', + // value: {firstvalue: 'fullprocess',secondvalue:''} + // } + // items.conditions.push(obj) + return items + } + + setDefaultVal(searchId, props) { + // props.search.setSearchValByField('light_report', 'reporttype', {firstvalue: 'fullprocess',secondvalue:''}); + } + + /** + * props: props + * searchId: 查询区需要的searchId参数 + * field: 编辑后的key + * val: 编辑后的value + */ + onAfterEvent(props, searchId, field, val) { + if ("current_date" == field) { + var current_date = props.search.getSearchValByField(searchId, 'current_date'); + if (current_date.value.firstvalue !== "" && current_date.value.secondvalue !== "") { + requestApi.queryLastPeriodAction({ + data: { + current_date: current_date.value + }, + success: (data) => { + props.search.setSearchValByField('light_report', 'last_date', data.data); + } + }) + } + } + + if("pk_sscunit" == field){ + props.search.setSearchValByField('light_report', 'problemMatterId', ''); + props.search.setSearchValByField('light_report', 'pk_org', ''); + } + } + + + /** + * isRange: 查询后数据区域内点击单元格按钮可操作。如需要像升降序按钮那样,则设置 disabled={isRange}属性 + * data: 表格数据 + * coords: 选中的单元格 + */ + CreateNewSearchArea(isRange, data, coords) { + // button区域业务端自定义的新增按钮 + //return 新增按钮 + } + + /** + * transSaveObject: 业务端处理的transSaveObject参数 + * obj: 点击联查下拉的item信息 + * data: 联查需要的参数 + * props: 平台props + * url: 平台openTo第一个参数 + * urlParams: 平台openTo第二个参数 + * sessonKey: sessionStorage的key + */ + setConnectionSearch(transSaveObject, obj, data, props, url, urlParams, sessonKey) { + let pkcode = data.appcode; + let field = data.fldName; + //data.transSaveObject =''; + setGlobalStorage('sessionStorage', sessonKey, transSaveObject); //处理好的transSaveObject放到浏览器内存中,必须,跳转报表页面会用到 + requestApi.linkQueryConditionAction({ + data: { + data, + pkcode, + field + }, + success: (data) => { + this.linkQuery.show(data.data); + } + }) + } +} +export default pubMessage +/*FZzVZZvhIN2fe6RNx+F1buKXSummElYTYZye9SRpouzjIjxuGqCRKrrPEtQ2MGMC*/ \ No newline at end of file diff --git a/src/ssctpaaa/public/components/README.md b/src/ssctpaaa/public/components/README.md new file mode 100644 index 0000000..8becb18 --- /dev/null +++ b/src/ssctpaaa/public/components/README.md @@ -0,0 +1 @@ +SSC_SSCCLOUD_Front init \ No newline at end of file diff --git a/src/ssctpaaa/public/image/billnoOpr/isappointed1.png b/src/ssctpaaa/public/image/billnoOpr/isappointed1.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfb995e1efb60d9d0907727c25dd1a754c2c7db GIT binary patch literal 1367 zcmV-d1*rOoP)Px)5lKWrR9Fe+S6zrzRTN%ppTB$WX!Q_C3>gWf)nG3@G(RX(I#6Ix)JyaOMg)To zfi%sSbTeX9u%IXi>m_@tup;|G5R6i1P)v)FOcXUW#&RBFX6`*_pR-rrKHi)6&dfdM z4)oT7Gw00S-(Kt6Yp7p{nJ~JQFbfs9TV)s$>41 z;X^@xd7Ku_16$A#w~HP;=s)7P^e!=VD$q_65;1&GIb8NTsy~$Pp{QM5jksI_8&6YE zx)Ka1N6Ij~IEib^u@Zzxa1bK2FCk~cj{7SY8mjEzzdql zBt%|;)+rNzTs}&rc8oS+G6`%tK^<)9DQnE`w3S3NM6S=PE0y4ZR+v`fnFM&sy8~zb zV2qvS2|GlrS*L${_}cT(KG9d9;4$u-lspZUD3-aPk1cPh>4CLbm6N zO-IM4EPnX~p#NTRl|CMmNu9dH~8M5d*vMWQz5YiRrhI?r2XYaGuFr z2czR1k3$Ku%b-;@*rt?dK2p~|JW5N5gZqpzw}N~H{Kvf+eY_S|by)h&&G2%WRJGs# z$o1&Sc%Fu9y#sPp!?LQN^mrKiLm1nDv0ISBsbF1#u`#3hwQarOzD5SQ1T6Ta!~R{+ zbqt?{*8F?C|byBV|Sv53TxXo@dHw#iv$lM#SCB!kEu=8;3 z%2>;vNyOhG_%0%IE-}kxOiYmPP6Sic3&?C_WU)}V*TH^$9r=!#^#J~!~O31EUuxpz4Xt7Ty zc@aU=j~wo>86a?^sojxmfFTS1j$_@)+npPguf@ zVuRLJMjg`D?LE<}^|@REb)bDef0VqAh!z+9Qs8?kp~)$f9jexA{N_W&PH~bQ*w$k( z7TBY(o~kvg^AgJ&BfWZ8qs|2pXk3`}Jvipw>k>bKU>soPQy}qXbvoL=a}E8KweJ5p Z_Yd;1@~BnKe4zjU002ovPDHLkV1fsLn=t?Y literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/billnoOpr/isleaderreject1.png b/src/ssctpaaa/public/image/billnoOpr/isleaderreject1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d0b9e9a89176832aa0260741c9f51cca01638f GIT binary patch literal 870 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/blacktheme.png b/src/ssctpaaa/public/image/blacktheme.png new file mode 100644 index 0000000000000000000000000000000000000000..1267499c022047b0433a908275a04617b727754c GIT binary patch literal 5716 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 NP?S@Xt&%o-|9|%~84>^h literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/blacktheme1.png b/src/ssctpaaa/public/image/blacktheme1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb73ee2d17e9022f9f1e3582487b723201363726 GIT binary patch literal 8679 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/gxicon1.png b/src/ssctpaaa/public/image/gxicon1.png new file mode 100644 index 0000000000000000000000000000000000000000..faf941d204bc6675026b443f461439e9f1db2f15 GIT binary patch literal 3990 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/gxicon2.png b/src/ssctpaaa/public/image/gxicon2.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b0889a3fcb05661d38f5dbb501ce11f7c8c829 GIT binary patch literal 4393 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 N002ovPDHLkV1i{y1z`XH literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/gxicon5.png b/src/ssctpaaa/public/image/gxicon5.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d37e618084ee9a3989fbe5a105a9384b6af7f3 GIT binary patch literal 5686 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/hangup1.png b/src/ssctpaaa/public/image/hangup1.png new file mode 100644 index 0000000000000000000000000000000000000000..113cb3316d03ab579600afa8a5be4190fb9ce624 GIT binary patch literal 500 zcmVPx$u1Q2eR5%gckvmHRK@^40>^tlGm4F6OBUlJF3O*3E_iu=mjbb4-c3M~o`6ptb zm12SqENn$X1jPpuvI!*7Y%=4_uDgbHv9obt_THI$&Ua^afWID$F_K=(oTOIoQor>g zVMSrS+{ljAYIKfJEHR0H8QW8IV}Eido(p<@K+@~C(_mzVFp^g_<(LfiKa4-4epb#- zusU5}l5{q^J9OFz@*x+SnMI;XNoup0tdpuM5@p5@0m6ebDCHQCA_p!{ZYK`h-LLQE zRyJFGW6aLE^YN(gogZ3$F6u%j^d3O*60J>9iR7;GHziniB}95OlwUrO=Q*Q5d%}d# zr9$Y0-t&IhyrmmEMw(zob*N1;j1CowE;+IG&PgF76jI2PQM@msYS~aYDAKJtQ8q&5 z@UPR@K;oTS2O^LS8P;uy11nCsZP?_|zlCoJg|x&C$K2efL(GSI4)OU;-xN$jAy4NP zx<*^@dR2g3p&&BB<7pnMDI+%C8f1K5r&_4l;swN?@11IQgl1IxVGtWaC-h#?KMAwx q%60NS+4yvxC>WiFTp!&3C+klrW4&R>9-T=50000Px$k4Z#9R5%f1U>Gcb5#|v0L#^KIOe|A`*?3uDVz}tHzdrx|`R`B8PP^)@AT=y7 zg&+f_8mA~QGcv)1aMFMO|6|BLJ7)?|0oV|@4v-6Q8Sw1;dxq(^cQE|^{}*g9NFB0^ z;fCO{7G&$)FE1Drc*Gc%JUE0^8BRlvy}8M7|LbdpH$Ofzy!rWw!CFLv!B9YvVbjyo z7zSZAeX~!RP?Pkf-0@GF*7~kRe#k zg5f^Upn3Q9F-!r52S|MHi%Se9LMrHHAYun5v+2ochEx?-1{OwUh9V7Lu<-f!_Zbeo zy3WAC%*Nm>p$Ah6r!ib&BCN`==lLZDP=IcIc9!Ahr>6`G+@e4OSb^R$gKI=)U>IU5 zq|ES-;XlLS*EbkG{`v-v6+t#0aJV3AL}p_c0+RHSGGci3;{$^Rzcd3o6Tt+G2oq3J z26+LN;KJmrkS#-DgVcf4!vx{U9+VeANf|jM!W5y?u)KpVKJa`1asZE`)JBQ<00000 LNkvXXu0mjfi{Z;T literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/isleaderreject1.png b/src/ssctpaaa/public/image/isleaderreject1.png new file mode 100644 index 0000000000000000000000000000000000000000..8b858affde08366d89c9619c0e558662e8ab64c8 GIT binary patch literal 584 zcmV-O0=NB%P)Px%0!c(cR5%f>Q%y)4K@@(oyRo#$29y{gEkRE~r9x4JLacZwIrQ$ygLjXD2Mb>G zAb9jBIp|4*o;--66x$vG!B(;2DP^@9Pz)plEoNuO`9@~5`4M`^!tTC(@0)MueeWBh z7F_H(4zVyE=Z4$Qg|JP=N~UN1W}o++X7~mYv6zfi?AW5w5gTQ120Q7c-A?zVvbZ?9 z^$PieP$@sh=Dy{FWHlrY%c)^{xc^~&nq@5h&I$q%3+K?~nT<11xSDF4-OcK{Pl6q| zUA;S2YG#1!h^{xjOE*+mpRR<27uP#7Gzu-4BNGXq;I2sSmwBSXg@gzVBh;}|;B``w zKt!cMpat*z7m3R=;wO8=zpj#(+0<(YtpbmANUFX$<9+P)+fE-P10(T)m>nh7)gw_a zNc_o?ce+nT-?)N7bng7@mmiMW2`4X1ufpv?62z=Kp$JsmGeqJhSB1!_Vf;ua5|fM~ z-4)AKM3czlGHF%|a_sOA5>F(;JQaVBZ>xy9NO0oc*JUeXegVFL0g+H7a3YKZANVK) z|H{M<((+!D8YPKEq(1Tj4tVY08lO~{;e;kvLjIW5lDdcViMzdgVqNDxYM=NdfWomX z98JS7&pFoJS`uWoy>IGR{lA*CgRx_3QgmqcUuQ=X;jK=w^bf|5>6ub|tw9jiviK1L W6yIR}%FeR@0000Px%TS-JgR5%f>Q$J`EQ5gTdd$}ZM)4P}$nuOL!T|{k*NEZhY2L;DasjGv7lY$h7 z&Q2Xv#KA=ros?$iP^ciHVo?yJiB<;{V@(@KVsc4p(!1WB_dU3fU;_^Qmb>@8-}igp zpWg@Ug0X%a>*;eT%d(F+4phca=Un=f%q-@2!v8~3N}o*_k@yWc9zPizn}~8%3t4r& z+0Lz0%wqAC|95dVmRZ{9ChH;Dm`+ccTdg;-t1~P(am?2Zr2qEHhiyIc^ow06Tuja{ zy!Y-qB$RGDygDB@lU4FYa0%5RQVCCSpCbKyRL&rqL33w$oo^^gBs-F5rPP# zrqlH3AV?hMXj~14$ic&VA?+D}q-xkMmjKJc*5_52g|!|Mni`G2L&6-UTlHF#98`kw z^9LN$5DgtTbsE*j51|~Nr0b5+*hxR+5Seh9t+sR73ORgk`r)Yy2#g+t6jVf0c_e~A zZ)luypxmT8Rr%yRowzH{><|MmThr;`o|1(9Oe(9nI-OFzYyZp}G9E}z&@vEIwQ zyEE?YPT1X@n!7vM|Jxmph`wTrUH#DbX?oOruLs?@UHktFZY&QSPD!&000000NkvXX Hu0mjf?~FO= literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/isunapprove1.png b/src/ssctpaaa/public/image/isunapprove1.png new file mode 100644 index 0000000000000000000000000000000000000000..44c911d8511f6c0a064f4dad20e1033de8418b6a GIT binary patch literal 563 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 bKW+a4ZcXi&S%WUI00000NkvXXu0mjfaitKc literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level1_2.png b/src/ssctpaaa/public/image/level1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..006c2b525bbf17e7227652117f916827f09ac058 GIT binary patch literal 9861 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level2_1.png b/src/ssctpaaa/public/image/level2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..412a0f74b8bbf87a2a6e2c7c6e3f8b13fcb3ead1 GIT binary patch literal 3162 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 A=>Px# literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level2_2.png b/src/ssctpaaa/public/image/level2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1e90653cb158c02bd8e0c24f3e5b55b1b7d92f GIT binary patch literal 9821 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 D?fwkH literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level3_1.png b/src/ssctpaaa/public/image/level3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..106206db4c3dccf8b1601bbcc3b1943587070eb6 GIT binary patch literal 3276 zcmV;-3^VhIP)Px>hDk(0R9Fd>S8I%1Wf^|H@7(6LJ2Rb~?zY`sO55G0P|8IG1VSW62oW#Q7&S^1 zAp`?|jQ%lT(ggY8KYw6i2pSSKl3swj-_B(fbGJ)vIe{6A$X~oIJSE@|Ffs& zs?#5uoj^I+6oXSK*BRkG94yI%76LWTdIBMC+^IDWXls9&&+9^ zY7(#^L=?aCH*7}QOAsCRpRRk=}Ri`#uTZrA8gNvqiH$qlaZvCe+-d;K*TciLb3n z@dwJX<_9mY!QNJceM!kIAi3e9KrtK%R9RBKMVc9z@RK^EpH( zBB)TEvuB%cu`f7-gX>~zUhsAKsb|++&-uKD_Wgq`F0MdV2uS9N-cXK>w8L<&0qzWU z!)s{$Xz=iNKYJk&bItq8vFHH@>6${?2C{d;YZ<#@UvLCZa0OqTH`MvkXYbA|^|(Dz zfO}a9{;LD1R4Qedq(aKMauaaLmB82@=xR09wR(##E-~A?=~|dow!=xap&tP+B>G^uUu)8_Nj);ZrB#SBhJ$ z8`b_NcriRKA|ba158QKUs`cO1zI|2it9RqTp#X=EbdjVP%A+m{IngtPAmFZ&j5aeC z6A4)wIVNPnd);1)X3HlTjVmrM;ieDe5&Yt(NMAeDw9@QD`9~kWNcjGZM3!YLIePd< z@s7*x`@^4_YH2yZ$cT$lUZdaXVGxpNm_aLzOjsKW{5zwIcq8X&hQ~pv^< zgooQdUd!ycBR{tG?7d$pWtPfvIW8h$2qgG41?|^QKewj4-2|1ggCrc#ScF75+@0tL z51Ps3-v#Elo<9st+P30akKxO(w(eu3WaBfR97}CWeU54N+Y5{S>hp9&*={prP+@w5^3dk87F`6A1W zJ8>yOM#k*ORpC^5;2i5 zBW z#SM(OZRQP$khEqMooe;)_F5Nb8hvctRAj~|{Qmg{pUEB(TycU4N4eaaRjRnV)ecdh z=&UcTqExNG&F92V@*DyRPL+bWWx9^RV1Y&gbUHqE%}!$J%&K{&G{U^$<8x_%vGY0S%j>O7Idq}Q*zXCLFM9NVHeRsl ze#8T8pP9s&`9*32XAI5-k_WwRA4>#VS?OYRrDbZPNwBw;I*3^rlDL|uh+4ZJp;~fH z5*?Y_P=YJ?dU<)-quXxpbQML1O($l@qz63DW!x<+j) zs$H*3rE^?F+=V2JWKKo{ahAtF-#Ce@K1>ht=IQxm^m_r;R@ZUz1Y0b{%eG=nPHi^i z6bX`%bX~JjPLjbouDf=t=@UX~$83V*N9S>B?ko--TEZQl+>2j6 z^(tm}RFLPO9Pk+dH!2|6N;2Y6QBa3C?Htm_``BVFjm{ zn_I*9);j+9=eHlN(V#lZ&&M#=?zgzb7$wSZ#`&n-9aqKNhR+psLf0Yf6g?;_P# zHZ@jprPRCP4cqggIPk-h6Jze?V+%COq)~i7kll(`WUI0xab`rXIIfH3l{OlU0NW-@ ztfm2VqKnqR<50uA^7_;Q#djU4F0P^{7%)>kc`B&PAQJptQ+yR5uHf5_;{@G}-qX`t zN3V46Sa6 z+36fBj&(>}!Dp_hIJ4b_=6d_(8}^M-uu`n_W7NtecGAA76qBSRkf$d+i?0A?i<0mJ zp^I5&21vlY`)2t{p<`e0 z1Xu74iS65onJYZMy4rm1W7m|kiJFTOi(N$8!6aYjV&BK+96KZz@MYRePbobn31+|v zBt1g(W=JeHI^T}N&H&KD|y8wt57L>i4ovDx&mR#|#qp_sq5Rx59^Y)_qD4AtUtj6UB%eWsPX>*nZw ziT?=u!FXLxoyB30t*y1!`@O+)nbJS5R&%e`>-FAy3H(PA@`D^CFSSi(TCYUw=oDcI&*|iZ7>jP%*ith%R!dwiy}m#1KU}K@3;F4 zF+PyQg%8s+7H7hojASwq$v|S}5i<^?sWc<$MU-Nnz^sk`?f4fdy%chJ>vaPF0000< KMNUMnLSTYJT4sy@ literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level3_2.png b/src/ssctpaaa/public/image/level3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d44f7d9e320bdf76d28917a36c8ab63dc6abeb00 GIT binary patch literal 10083 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 FV1oNE)i(eD literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level4_1.png b/src/ssctpaaa/public/image/level4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..41d25f9d5b9479e449130bb90c1ef34fa59f096f GIT binary patch literal 3198 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 DP5TE* literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/level5_2.png b/src/ssctpaaa/public/image/level5_2.png new file mode 100644 index 0000000000000000000000000000000000000000..737b2fb03cbe07a57196c2a86235aaa1a556c861 GIT binary patch literal 9875 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 FV1f@hXea;x literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/nccicon/business-dd.svg b/src/ssctpaaa/public/image/nccicon/business-dd.svg new file mode 100644 index 0000000..28360d2 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/business-dd.svg @@ -0,0 +1,25 @@ + + + + +作业调度 +Created with Sketch. + + + + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/business-zy.svg b/src/ssctpaaa/public/image/nccicon/business-zy.svg new file mode 100644 index 0000000..78082a2 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/business-zy.svg @@ -0,0 +1,24 @@ + + + + +我的作业 +Created with Sketch. + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/industry-dd.svg b/src/ssctpaaa/public/image/nccicon/industry-dd.svg new file mode 100644 index 0000000..28360d2 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/industry-dd.svg @@ -0,0 +1,25 @@ + + + + +作业调度 +Created with Sketch. + + + + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/industry-zy.svg b/src/ssctpaaa/public/image/nccicon/industry-zy.svg new file mode 100644 index 0000000..78082a2 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/industry-zy.svg @@ -0,0 +1,24 @@ + + + + +我的作业 +Created with Sketch. + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/simple-dd.svg b/src/ssctpaaa/public/image/nccicon/simple-dd.svg new file mode 100644 index 0000000..3807acd --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/simple-dd.svg @@ -0,0 +1,33 @@ + + + + +简约-作业调度 +Created with Sketch. + + + + + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/simple-zy.svg b/src/ssctpaaa/public/image/nccicon/simple-zy.svg new file mode 100644 index 0000000..d74c5dd --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/simple-zy.svg @@ -0,0 +1,37 @@ + + + + +简约-我的作业备份 +Created with Sketch. + + + + + + + + + + + + + diff --git a/src/ssctpaaa/public/image/nccicon/youth-dd.svg b/src/ssctpaaa/public/image/nccicon/youth-dd.svg new file mode 100644 index 0000000..ea80b41 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/youth-dd.svg @@ -0,0 +1 @@ +青春-作业调度 \ No newline at end of file diff --git a/src/ssctpaaa/public/image/nccicon/youth-zy.svg b/src/ssctpaaa/public/image/nccicon/youth-zy.svg new file mode 100644 index 0000000..257f609 --- /dev/null +++ b/src/ssctpaaa/public/image/nccicon/youth-zy.svg @@ -0,0 +1 @@ +青春-我的作业 \ No newline at end of file diff --git a/src/ssctpaaa/public/image/no-data.png b/src/ssctpaaa/public/image/no-data.png new file mode 100644 index 0000000000000000000000000000000000000000..8412331e3f2efcb608ebb2b4e376b84640c4b65d GIT binary patch literal 3073 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 P00000NkvXXu0mjfbAR`( literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/pre.png b/src/ssctpaaa/public/image/pre.png new file mode 100644 index 0000000000000000000000000000000000000000..02b6650bb9e9cad54768c3ee41bc2a5b1f4c5bc7 GIT binary patch literal 595 zcmV-Z0<8UsP)Px%4M{{nR7ef&RzFA^VHAJwyO=bwsC1AlErle56@r5fA}wOKE*%;|5}g#>QaX1o zD5Va%3c4jBh-;RDgEoQEj_puRa4brT4qgo2eXlRY?{XyJI5~rYIk>#{y+6O-cR#}W zK7jl7p!#5=5c>#-8Pr5Boc?v7;#3|FHq47TDa0$1^c;|)K=>CBY6!Fy$sSf!?RBhZ z72`W1dJLwupkn8R_@-etPAq^5Ntp+r2_T5FeFj8JMDWEZ#y($^V{z5vW{qOvt;*ZP z1T@eLO2D8>B0`2qhSa*7W%8HO!XHK{u|d1Z(QY+HIX>OoAdy^G`G9i#SXL^?3gqhz zW0?uQ0pM3&n}qlXiC(amXve=1Vgp<^I z?GU54ZeQx&>gzziHK{$#YCffo5X2S_|Ekc$v9#m}pq$~^{D#Nzq~k+8yRO6xYzn~l z4-&(laPs?Q8|prq^chxS$!w`aAb^c zBp*0>)PTfwQHx(WS`ilfZp3%QX~BK-sZp3{#OevFwYZd h)*8Tqf7m;W@DK9xtnkw|96A61002ovPDHLkV1gR>7xMrB literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/tpbg.png b/src/ssctpaaa/public/image/tpbg.png new file mode 100644 index 0000000000000000000000000000000000000000..542b147b3edd297fc851eab587e3729004958ef4 GIT binary patch literal 3040 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 CO^0g$ literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/tpbg1.png b/src/ssctpaaa/public/image/tpbg1.png new file mode 100644 index 0000000000000000000000000000000000000000..3a983eb9248ecac94f67a43b065209d0449b4df9 GIT binary patch literal 4034 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/ywicon1.png b/src/ssctpaaa/public/image/ywicon1.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea88ef39986dad2fb37591781135ad164b4a111 GIT binary patch literal 15211 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 AcmMzZ literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/public/image/ywicon2.png b/src/ssctpaaa/public/image/ywicon2.png new file mode 100644 index 0000000000000000000000000000000000000000..deafab6523f855ae2619b754411fad59b28cadc0 GIT binary patch literal 18779 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

yN^N+X| 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 literal 0 HcmV?d00001 diff --git a/src/ssctpaaa/refer/sscbd/CreditRuleTreeRef/index.js b/src/ssctpaaa/refer/sscbd/CreditRuleTreeRef/index.js new file mode 100644 index 0000000..cce5c78 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/CreditRuleTreeRef/index.js @@ -0,0 +1,88 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function(e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssctp/refer/credit/CreditRuleTreeRef/index"] = r(require("nc-lightapp-front")) : e["ssctp/refer/credit/CreditRuleTreeRef/index"] = r(e["nc-lightapp-front"]) +} (window, +function(e) { + return function(e) { + var r = {}; + function t(n) { + if (r[n]) return r[n].exports; + var o = r[n] = { + i: n, + l: !1, + exports: {} + }; + return e[n].call(o.exports, o, o.exports, t), + o.l = !0, + o.exports + } + return t.m = e, + t.c = r, + t.d = function(e, r, n) { + t.o(e, r) || Object.defineProperty(e, r, { + configurable: !1, + enumerable: !0, + get: n + }) + }, + t.r = function(e) { + Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, + t.n = function(e) { + var r = e && e.__esModule ? + function() { + return e. + default + }: + function() { + return e + }; + return t.d(r, "a", r), + r + }, + t.o = function(e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, + t.p = "../../../../", + t(t.s = 629) + } ({ + 0 : function(r, t) { + r.exports = e + }, + 256 : function(e, r, t) { + "use strict"; + Object.defineProperty(r, "__esModule", { + value: !0 + }), + r. + default = function() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(n, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "tree", + refName: "refer-creditrule-0001", + placeholder: "refer-creditrule-0001", + refCode: "ssctp.refer.credit.CreditRuleTreeRef", + queryTreeUrl: "/nccloud/ssctp/credit/creditRuleAction.do", + treeConfig: { + name: ["refer-0001", "refer-0002"], + code: ["refcode", "refname"] + }, + isMultiSelectedEnabled: !1 + }, + e)) + }; + var n = t(0).high.Refer + }, + 629 : function(e, r, t) { + e.exports = t(256) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCBusiTypeGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCBusiTypeGridRef/index.js new file mode 100644 index 0000000..74fdb9d --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCBusiTypeGridRef/index.js @@ -0,0 +1,56 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssctp/refer/sscbd/SSCBusiTypeGridRef/index"] = r(require("nc-lightapp-front")) : e["ssctp/refer/sscbd/SSCBusiTypeGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: "refer-busitype-0001", + placeholder: "refer-busitype-0001", + refCode: "sscpfa.pfareport.SSCBusiTypeGridRef", + queryGridUrl: "/nccloud/ssctp/sscbd/SSCBusiTypeGridRef.do", + columnConfig: [{name: ["refer-busitype-0002"], code: ["refname"]}], + isMultiSelectedEnabled: !1 + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCNodeGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCNodeGridRef/index.js new file mode 100644 index 0000000..b532cfe --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCNodeGridRef/index.js @@ -0,0 +1,56 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssccloud/refer/sscbd/SSCUnitGridRef/index"] = r(require("nc-lightapp-front")) : e["ssccloud/refer/sscbd/SSCUnitGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: "refer-sscnode-0001", + placeholder: "refer-sscnode-0001", + refCode: "ssctp.refer.sscbd.SSCNodeGridRef", + queryGridUrl: "/nccloud/sscbd/allotrulepost/SSCNodeGridRef.do", + columnConfig: [{name: ["refer-0001", "refer-0002"], code: ["refcode", "refname"]}], + isMultiSelectedEnabled: !1 + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCOtsGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCOtsGridRef/index.js new file mode 100644 index 0000000..423fe77 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCOtsGridRef/index.js @@ -0,0 +1,56 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssctp/refer/sscbd/SSCOtsGridRef/index"] = r(require("nc-lightapp-front")) : e["ssctp/refer/sscbd/SSCOtsGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: "refer-dooroad-0001", + placeholder: "refer-dooroad-0001", + refCode: "ssctp.refer.sscbd.SSCOtsGridRef", + queryGridUrl: "/nccloud/ssctp/dooroad/SSCOtsGridRef.do", + columnConfig: [{name: ["refer-0001", "refer-0002"], code: ["refcode", "refname"]}], + isMultiSelectedEnabled: !1 + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCParticipantGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCParticipantGridRef/index.js new file mode 100644 index 0000000..2086006 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCParticipantGridRef/index.js @@ -0,0 +1,57 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssctp/refer/sscbd/SSCParticipantGridRef/index"] = r(require("nc-lightapp-front")) : e["ssctp/refer/sscbd/SSCParticipantGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: "refer-sscuser-0001", + placeholder: "refer-sscuser-0001", + refCode: "ssctp.refer.sscbd.SSCParticipantGridRef", + queryGridUrl: "/nccloud/ssctp/sscbd/SSCParticipantGridRef.do", + columnConfig: [{name: ["refer-sscuser-0002", "refer-sscuser-0003"], code: ["refcode", "refname"]}], + isMultiSelectedEnabled: !1, + isShowTableSearch:false + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCSMUserGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCSMUserGridRef/index.js new file mode 100644 index 0000000..a20d9cc --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCSMUserGridRef/index.js @@ -0,0 +1,57 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssctp/refer/sscbd/SSCSMUserGridRef/index"] = r(require("nc-lightapp-front")) : e["ssctp/refer/sscbd/SSCSMUserGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: "refer-sscsmuser-0001", + placeholder: "refer-sscsmuser-0001", + refCode: "ssctp.refer.sscbd.SSCSMUserGridRef", + queryGridUrl: "/nccloud/sscbd/workinggroupuser/SSCSMUserGridRef.do", + columnConfig: [{name: ["refer-sscsmuser-0002", "refer-sscsmuser-0003", "refer-sscsmuser-0004", "refer-sscsmuser-0005", "refer-sscsmuser-0006"], + code: ["refcode", "refname", "name","deptname","orgname"]}], + isMultiSelectedEnabled: 1 + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCUnitGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCUnitGridRef/index.js new file mode 100644 index 0000000..d6ce9f2 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCUnitGridRef/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("nc-lightapp-front")):"function"==typeof define&&define.amd?define(["nc-lightapp-front"],r):"object"==typeof exports?exports["ssccloud/refer/sscbd/SSCUnitGridRef/index"]=r(require("nc-lightapp-front")):e["ssccloud/refer/sscbd/SSCUnitGridRef/index"]=r(e["nc-lightapp-front"])}(window,function(e){return function(e){var r={};function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="../../../../",o(o.s=635)}({0:function(r,o){r.exports=e},261:function(e,r,o){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return React.createElement(t,Object.assign({multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' +},refType:"grid",refName:"refer-sscunit-0001",placeholder:"refer-sscunit-0001",refCode:"ssccloud.refer.sscbd.SSCUnitGridRef",queryGridUrl:"/nccloud/ssctp/sscbd/SSCUnitGridRef.do",columnConfig:[{name:["refer-0001","refer-0002"],code:["refcode","refname"]}],isMultiSelectedEnabled:!1},e))};var t=o(0).high.Refer},635:function(e,r,o){e.exports=o(261)}})}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCWorkGroupGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCWorkGroupGridRef/index.js new file mode 100644 index 0000000..af34073 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCWorkGroupGridRef/index.js @@ -0,0 +1,88 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function(e, t) { + "object" == typeof exports && "object" == typeof module ? module.exports = t(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], t) : "object" == typeof exports ? exports["ssctp/refer/sscbd/SSCWorkGroupGridRef/index"] = t(require("nc-lightapp-front")) : e["ssctp/refer/sscbd/SSCWorkGroupGridRef/index"] = t(e["nc-lightapp-front"]) +} (window, +function(e) { + return function(e) { + var t = {}; + function r(n) { + if (t[n]) return t[n].exports; + var o = t[n] = { + i: n, + l: !1, + exports: {} + }; + return e[n].call(o.exports, o, o.exports, r), + o.l = !0, + o.exports + } + return r.m = e, + r.c = t, + r.d = function(e, t, n) { + r.o(e, t) || Object.defineProperty(e, t, { + configurable: !1, + enumerable: !0, + get: n + }) + }, + r.r = function(e) { + Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, + r.n = function(e) { + var t = e && e.__esModule ? + function() { + return e. + default + }: + function() { + return e + }; + return r.d(t, "a", t), + t + }, + r.o = function(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, + r.p = "../../../../", + r(r.s = 592) + } ({ + 0 : function(t, r) { + t.exports = e + }, + 592 : function(e, t, r) { + e.exports = r(78) + }, + 78 : function(e, t, r) { + "use strict"; + Object.defineProperty(t, "__esModule", { + value: !0 + }), + t. + default = function() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(n, Object.assign({ + rootNode: { + refname: "refer-sscworkgroup-0001", + refpk: "root" + }, + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "tree", + refName: "refer-sscworkgroup-0001", + refCode: "ssccloud.refer.sscbd.SSCWorkGroupGridRef", + placeholder: "refer-sscworkgroup-0001", + queryTreeUrl: "/nccloud/ssctp/sscbd/SSCWorkGroupGridRef.do", + isMultiSelectedEnabled: !1 + }, + e)) + }; + var n = r(0).high.Refer + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/refer/sscbd/SSCWorkGroupUserTreeGridRef/index.js b/src/ssctpaaa/refer/sscbd/SSCWorkGroupUserTreeGridRef/index.js new file mode 100644 index 0000000..effaa97 --- /dev/null +++ b/src/ssctpaaa/refer/sscbd/SSCWorkGroupUserTreeGridRef/index.js @@ -0,0 +1,56 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +!function (e, r) { + "object" == typeof exports && "object" == typeof module ? module.exports = r(require("nc-lightapp-front")) : "function" == typeof define && define.amd ? define(["nc-lightapp-front"], r) : "object" == typeof exports ? exports["ssccloud/refer/sscbd/SSCUnitGridRef/index"] = r(require("nc-lightapp-front")) : e["ssccloud/refer/sscbd/SSCUnitGridRef/index"] = r(e["nc-lightapp-front"]) +}(window, function (e) { + return function (e) { + var r = {}; + + function o(t) { + if (r[t]) return r[t].exports; + var n = r[t] = {i: t, l: !1, exports: {}}; + return e[t].call(n.exports, n, n.exports, o), n.l = !0, n.exports + } + + return o.m = e, o.c = r, o.d = function (e, r, t) { + o.o(e, r) || Object.defineProperty(e, r, {configurable: !1, enumerable: !0, get: t}) + }, o.r = function (e) { + Object.defineProperty(e, "__esModule", {value: !0}) + }, o.n = function (e) { + var r = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return o.d(r, "a", r), r + }, o.o = function (e, r) { + return Object.prototype.hasOwnProperty.call(e, r) + }, o.p = "../../../../", o(o.s = 635) + }({ + 0: function (r, o) { + r.exports = e + }, 261: function (e, r, o) { + "use strict"; + Object.defineProperty(r, "__esModule", {value: !0}), r.default = function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return React.createElement(t, Object.assign({ + multiLang: { + moduleId: '7010', + domainName: 'ssctp', + currentLocale: 'simpchn' + }, + refType: "grid", + refName: 'refer-sscworkgroupuser-0001', + placeholder: 'refer-sscworkgroupuser-0001', + refCode: "ssctp.refer.sscbd.SSCUnitGridRef", + queryGridUrl: "/nccloud/sscbd/workinggroupuser/SSCWorkGroupUserGridRef.do", + columnConfig: [{name: ["refer-0001", "refer-0002"], code: ["refcode", "refname"]}], + isMultiSelectedEnabled: !1 + }, e)) + }; + var t = o(0).high.Refer + }, 635: function (e, r, o) { + e.exports = o(261) + } + }) +}); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprove/config/config.json b/src/ssctpaaa/report/intelligentapprove/config/config.json new file mode 100644 index 0000000..086d14b --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprove/config/config.json @@ -0,0 +1 @@ +{"report":true} \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprove/config/events.js b/src/ssctpaaa/report/intelligentapprove/config/events.js new file mode 100644 index 0000000..e583b66 --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprove/config/events.js @@ -0,0 +1,24 @@ +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ +import SscpfaBaseEvents from '../../../public/common/ssctpBaseEvents' +class Events extends SscpfaBaseEvents { + constructor(props) { + super(props) + } + + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + let obj = { + field: 'reporttype', + datatype: '204', + display: '报表类型', + isIncludeSub: false, + oprtype: '=', + value: {firstvalue: 'intelligentapprove',secondvalue:''} + } + items.conditions.push(obj) + return items + } + +} +export default Events; +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprove/config/index.js b/src/ssctpaaa/report/intelligentapprove/config/index.js new file mode 100644 index 0000000..f01b3ad --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprove/config/index.js @@ -0,0 +1,47 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react' +import ReactDOM from 'react-dom' +import { SimpleReport } from 'nc-report' +import { createPage, getMultiLang } from 'nc-lightapp-front' +import Events from './events' + +export default class Test extends Component { + constructor(props) { + super(props) + this.state = { + json: {} + } + this.events = new Events(); + } + + componentWillMount() { + let callback = (json) => { + this.setState({ json }) + } + getMultiLang({ moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback }) + } + + render() { + return ( +

+ ); + } +} + +Test = createPage({ + mutiLangCode: '7010' +})(Test) +ReactDOM.render(, document.getElementById('app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprovedetail/config/config.json b/src/ssctpaaa/report/intelligentapprovedetail/config/config.json new file mode 100644 index 0000000..086d14b --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprovedetail/config/config.json @@ -0,0 +1 @@ +{"report":true} \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprovedetail/config/events.js b/src/ssctpaaa/report/intelligentapprovedetail/config/events.js new file mode 100644 index 0000000..655c688 --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprovedetail/config/events.js @@ -0,0 +1,49 @@ +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ +import SscpfaBaseEvents from '../../../public/common/ssctpBaseEvents' +import requestApi from '../../../public/common/requestApi' +import { viewModel } from 'nc-lightapp-front'; +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; +let { setGlobalStorage, getGlobalStorage, removeGlobalStorage } = viewModel; +class Events extends SscpfaBaseEvents { + constructor(props) { + super(props) + } + + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + let obj = { + field: 'reporttype', + datatype: '204', + display: '报表类型', + isIncludeSub: false, + oprtype: '=', + value: {firstvalue: 'intelligentapprovedetail',secondvalue:''} + } + items.conditions.push(obj) + return items + } + + setConnectionSearch(transSaveObject, obj, data, props, url, urlParams, sessonKey) { + let pkCode = urlParams.reportId; + //data.transSaveObject =''; + setGlobalStorage('sessionStorage', sessonKey, transSaveObject); //处理好的transSaveObject放到浏览器内存中,必须,跳转报表页面会用到 + requestApi.openBill({ + data: { + data, + pkCode + }, + success: (data) => { + sscOpenTo(props, data.data.system, [ + data.data.url, + { + ...data.data.data, + scene: "bzcx" + } + ]) + } + }) + } + +} +export default Events; +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/intelligentapprovedetail/config/index.js b/src/ssctpaaa/report/intelligentapprovedetail/config/index.js new file mode 100644 index 0000000..f01b3ad --- /dev/null +++ b/src/ssctpaaa/report/intelligentapprovedetail/config/index.js @@ -0,0 +1,47 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react' +import ReactDOM from 'react-dom' +import { SimpleReport } from 'nc-report' +import { createPage, getMultiLang } from 'nc-lightapp-front' +import Events from './events' + +export default class Test extends Component { + constructor(props) { + super(props) + this.state = { + json: {} + } + this.events = new Events(); + } + + componentWillMount() { + let callback = (json) => { + this.setState({ json }) + } + getMultiLang({ moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback }) + } + + render() { + return ( +
+ +
+ ); + } +} + +Test = createPage({ + mutiLangCode: '7010' +})(Test) +ReactDOM.render(, document.getElementById('app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattermutidim/config/config.json b/src/ssctpaaa/report/problemmattermutidim/config/config.json new file mode 100644 index 0000000..086d14b --- /dev/null +++ b/src/ssctpaaa/report/problemmattermutidim/config/config.json @@ -0,0 +1 @@ +{"report":true} \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattermutidim/config/events.js b/src/ssctpaaa/report/problemmattermutidim/config/events.js new file mode 100644 index 0000000..afc9787 --- /dev/null +++ b/src/ssctpaaa/report/problemmattermutidim/config/events.js @@ -0,0 +1,22 @@ +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ +import SsctpProblemBaseEvents from '../../../public/common/ssctpProblemBaseEvents' +class Events extends SsctpProblemBaseEvents { + constructor(props) { + super(props) + } + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + let obj = { + field: 'reporttype', + datatype: '204', + display: '报表类型', + isIncludeSub: false, + oprtype: '=', + value: {firstvalue: 'problemmattermutidim',secondvalue:''} + } + items.conditions.push(obj) + return items + } +} +export default Events; +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattermutidim/config/index.js b/src/ssctpaaa/report/problemmattermutidim/config/index.js new file mode 100644 index 0000000..dcfe658 --- /dev/null +++ b/src/ssctpaaa/report/problemmattermutidim/config/index.js @@ -0,0 +1,50 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react' +import ReactDOM from 'react-dom' +import { SimpleReport } from 'nc-report' +import { createPage, getMultiLang } from 'nc-lightapp-front' +import Events from './events' +import LinkQuery from '../../../sscuser/widgets/linkquery/index' + +export default class Test extends Component { + constructor(props) { + super(props) + this.state = { + json: {} + } + this.linkQuery = new LinkQuery('701005SXDW', '701015SXDW_L'); + this.events = new Events(); + } + + componentWillMount() { + let callback = (json) => { + this.setState({ json }) + } + getMultiLang({ moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback }) + } + + render() { + return ( +
+ + {this.linkQuery.createComponent()} +
+ ); + } +} + +Test = createPage({ + mutiLangCode: '7010' +})(Test) +ReactDOM.render(, document.getElementById('app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattersum/config/config.json b/src/ssctpaaa/report/problemmattersum/config/config.json new file mode 100644 index 0000000..086d14b --- /dev/null +++ b/src/ssctpaaa/report/problemmattersum/config/config.json @@ -0,0 +1 @@ +{"report":true} \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattersum/config/events.js b/src/ssctpaaa/report/problemmattersum/config/events.js new file mode 100644 index 0000000..fa1ceac --- /dev/null +++ b/src/ssctpaaa/report/problemmattersum/config/events.js @@ -0,0 +1,22 @@ +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ +import SsctpProblemBaseEvents from '../../../public/common/ssctpProblemBaseEvents' +class Events extends SsctpProblemBaseEvents { + constructor(props) { + super(props) + } + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + let obj = { + field: 'reporttype', + datatype: '204', + display: '报表类型', + isIncludeSub: false, + oprtype: '=', + value: {firstvalue: 'problemmattersum',secondvalue:''} + } + items.conditions.push(obj) + return items + } +} +export default Events; +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemmattersum/config/index.js b/src/ssctpaaa/report/problemmattersum/config/index.js new file mode 100644 index 0000000..e4b2b0e --- /dev/null +++ b/src/ssctpaaa/report/problemmattersum/config/index.js @@ -0,0 +1,51 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react' +import ReactDOM from 'react-dom' +import { SimpleReport } from 'nc-report' +import { createPage, getMultiLang } from 'nc-lightapp-front' +import Events from './events' + +import LinkQuery from '../../../sscuser/widgets/linkquery/index' + +export default class Test extends Component { + constructor(props) { + super(props) + this.state = { + json: {} + } + this.linkQuery = new LinkQuery('701005SXHZ', '701005SXHZ_L'); + this.events = new Events(); + } + + componentWillMount() { + let callback = (json) => { + this.setState({ json }) + } + getMultiLang({ moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback }) + } + + render() { + return ( +
+ + {this.linkQuery.createComponent()} +
+ ); + } +} + +Test = createPage({ + mutiLangCode: '7010' +})(Test) +ReactDOM.render(, document.getElementById('app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemunitsum/config/config.json b/src/ssctpaaa/report/problemunitsum/config/config.json new file mode 100644 index 0000000..086d14b --- /dev/null +++ b/src/ssctpaaa/report/problemunitsum/config/config.json @@ -0,0 +1 @@ +{"report":true} \ No newline at end of file diff --git a/src/ssctpaaa/report/problemunitsum/config/events.js b/src/ssctpaaa/report/problemunitsum/config/events.js new file mode 100644 index 0000000..41e427c --- /dev/null +++ b/src/ssctpaaa/report/problemunitsum/config/events.js @@ -0,0 +1,22 @@ +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ +import SsctpProblemBaseEvents from '../../../public/common/ssctpProblemBaseEvents' +class Events extends SsctpProblemBaseEvents { + constructor(props) { + super(props) + } + expandSearchVal (items) { + //目前添加了查询条件后台查询不到 + let obj = { + field: 'reporttype', + datatype: '204', + display: '报表类型', + isIncludeSub: false, + oprtype: '=', + value: {firstvalue: 'problemunitsum',secondvalue:''} + } + items.conditions.push(obj) + return items + } +} +export default Events; +/*B5kwYj9wKUytnMx8WinCT9pzwe09WW8c2AJ6DsQzKpM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/report/problemunitsum/config/index.js b/src/ssctpaaa/report/problemunitsum/config/index.js new file mode 100644 index 0000000..44ed807 --- /dev/null +++ b/src/ssctpaaa/report/problemunitsum/config/index.js @@ -0,0 +1,51 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react' +import ReactDOM from 'react-dom' +import { SimpleReport } from 'nc-report' +import { createPage, getMultiLang } from 'nc-lightapp-front' +import Events from './events' +import LinkQuery from '../../../sscuser/widgets/linkquery/index' + +export default class Test extends Component { + constructor(props) { + super(props) + this.state = { + json: {} + } + this.linkQuery = new LinkQuery('701005DWHZ', '701005DWHZ_L'); + this.events = new Events(); + + } + + componentWillMount() { + let callback = (json) => { + this.setState({ json }) + } + getMultiLang({ moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback }) + } + + render() { + return ( +
+ + {this.linkQuery.createComponent()} +
+ ); + } +} + +Test = createPage({ + mutiLangCode: '7010' +})(Test) +ReactDOM.render(, document.getElementById('app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/onduty/list/index.js b/src/ssctpaaa/sscchargeman/onduty/list/index.js new file mode 100644 index 0000000..161353b --- /dev/null +++ b/src/ssctpaaa/sscchargeman/onduty/list/index.js @@ -0,0 +1,8 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Onduty from './onduty'; +ReactDOM.render( + , document.querySelector('#app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/onduty/list/initTemplate.js b/src/ssctpaaa/sscchargeman/onduty/list/initTemplate.js new file mode 100644 index 0000000..6785961 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/onduty/list/initTemplate.js @@ -0,0 +1,19 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import presetVar from "./presetVar"; +import {getData} from "./requestApi" + +export default function (props) { + props.createUIDom({}, async (data) => { + props.meta.setMeta(data.template); + let ref = await getData(); + if(ref && ref.data && ref.data.dutystate){ + props.table.setAllTableData(presetVar.listArea, ref.data.dutystate); + this.allData = ref.data.dutystate; + }else{ + props.table.setAllTableData(presetVar.listArea, {rows: []}); + this.allData = {rows: []}; + } + }); +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/onduty/list/onduty.js b/src/ssctpaaa/sscchargeman/onduty/list/onduty.js new file mode 100644 index 0000000..221e33c --- /dev/null +++ b/src/ssctpaaa/sscchargeman/onduty/list/onduty.js @@ -0,0 +1,131 @@ +/*7T/9OyY2hk5KxSbfjELOhoYPTGBVEXvJDS+MZSXPK4A=*/ +import { Component } from "react"; +import { createPage, base, toast } from "nc-lightapp-front"; +const { NCFormControl} = base; +import initTemplate from "./initTemplate"; +import presetVar from "./presetVar"; +import { + ProfileStyle, + ProfileHead, + ProfileBody, + HeadCenterCustom +} from 'ssccommon/components/profile'; +import {getData} from './requestApi.js' + +class Onduty extends Component { + constructor(props) { + super(props); + this.state={ + // 过滤条件 + searchValue: '' + } + // 过滤条件 + this.searchValue; + // 过滤正在执行(防抖) + this.doingSearchUser = false; + // 所有查询结果数据 + this.allData; + // 页面初始化 + initTemplate.call(this, props); + } + + searchClick(props, searchVal, type) { + let pageInfo = this.props.table.getTablePageInfo(presetVar.tableAreaId); + pageInfo.pageIndex = 1; + pageInfo.pageSize = 9999; + let searchInfo = props.search.getQueryInfo(presetVar.searchArea); + let data = { + querycondition: searchVal, + queryAreaCode: presetVar.searchArea,  //查询区编码 + oid: (searchInfo || {}).oid,  //查询模板id + querytype: 'tree', + pageInfo: pageInfo + }; + requestApi.query({ + data: data, + success: (data) => { + this.props.editTable.setTableData(presetVar.listArea, data.data[presetVar.listArea]); + } + }) + } + + searchUser(searchValue){ + this.setState({ searchValue }); + this.searchValue = searchValue; + if(this.doingSearchUser==false){ + // 0.5秒后执行 + setTimeout(() => { + let newData + // 过滤条件为空时全部显示 + if(this.searchValue==''){ + newData = this.allData.rows; + }else{ + newData = this.allData.rows.filter((one)=>{ + if(((one.values.user || {}).value || '').indexOf(this.searchValue)>-1){ + return one; + } + }); + } + this.props.table.setAllTableData(presetVar.listArea, {rows: newData}); + this.doingSearchUser = false; + }, 500); + this.doingSearchUser = true; + } + } + + refreshButtonEvent = async () => { + let multiLang = this.props.MutiInit.getIntl(7010); + if (this.state.searchValue) { + this.searchUser(this.state.searchValue) + toast({ title: multiLang && multiLang.get('701010DOOROAD-022'), duration: 5 }) + } else { + let ref = await getData(); + if(ref && ref.data && ref.data.dutystate){ + this.props.table.setAllTableData(presetVar.listArea, ref.data.dutystate); + this.allData = ref.data.dutystate; + }else{ + this.props.table.setAllTableData(presetVar.listArea, {rows: []}); + this.allData = {rows: []}; + } + toast({ title: multiLang && multiLang.get('701010DOOROAD-022'), duration: 5 }) + } + } + + render() { + const { createSimpleTable } = this.props.table; + let multiLang = this.props.MutiInit.getIntl(7010); + return ( + + + + {this.searchUser.call(this, ...params)}} + type="search" + /> + + + + {createSimpleTable(presetVar.listArea)} + + + + ); + } +} +Onduty = createPage({ + mutiLangCode: "7010" +})(Onduty); +export default Onduty; + +/*7T/9OyY2hk5KxSbfjELOhoYPTGBVEXvJDS+MZSXPK4A=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/onduty/list/presetVar.js b/src/ssctpaaa/sscchargeman/onduty/list/presetVar.js new file mode 100644 index 0000000..d7148f0 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/onduty/list/presetVar.js @@ -0,0 +1,9 @@ +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ +/**页面全局变量 */ +let presetVar = { + listArea: 'dutystate', + dataSource: 'onduty' +}; + +export default presetVar; +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/onduty/list/requestApi.js b/src/ssctpaaa/sscchargeman/onduty/list/requestApi.js new file mode 100644 index 0000000..b3571e5 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/onduty/list/requestApi.js @@ -0,0 +1,15 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { requestPromise } from 'ssccommon/utils/asyncFunctions.js'; + +/** + * @method 获取报告 + */ +async function getData(data) { + const result = await requestPromise({ + url: `/nccloud/ssctp/intellidispatch/QueryAllUserStateAction.do`, + data, + }); + return result +} +export {getData} +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/components/distributeUserList.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/distributeUserList.js new file mode 100644 index 0000000..d39775c --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/distributeUserList.js @@ -0,0 +1,100 @@ +/*yk4t7DP0e63Jty9nogg5PkG65NSwYppMKCMIv/pnhiA=*/ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { base, ajax } from 'nc-lightapp-front'; +const { NCCheckbox, NCModal, NCButton, NCTextArea, NCMessage } = base; +import { query } from '../events/index' + +import SSCWorkGroupUserTreeGridRef from '../../../../refer/sscbd/SSCWorkGroupUserTreeGridRef' + +class DistributeUserList extends Component { + constructor(props) { + super(); + this.selectedUser = {}; + this.reason = ''; + this.state = { + refname: null + } + } + + save = () => { + let multiLang = this.props.MutiInit.getIntl(7010); + if (this.selectedUser.refpk == null) { + NCMessage.create({ content: multiLang && multiLang.get('701001RWCL-0052'), color: 'warning', position: 'bottomRight' }); + return; + } + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageDistributeAction.do', + data: { + pks: this.props.data.pk_currenttask.value, + pk_user: this.selectedUser.refpk, + ts: this.props.data.ts.value, + type: this.props.distributeType, + reason: this.reason + }, + success: () => { + this.selectedUser = {}; + this.state.refname = {}; + this.reason = ''; + this.props.that.setState({ showModalDistribute: false }); + query.queryData.call(this.props.that); + } + }); + } + + cancel = () => { + this.selectedUser = {}; + this.state.refname = {}; + this.reason = ''; + this.props.that.setState({ showModalDistribute: false }); + } + + selectUser = (e) => { + this.setState({ refname: e }) + this.selectedUser = e; + } + + render() { + let { data } = this.props; + let multiLang = this.props.MutiInit.getIntl(7010); + return ( +
+ { this.cancel() }}> + + {multiLang && multiLang.get('701001RWCL-0054')} + + +
+
+ {SSCWorkGroupUserTreeGridRef({ + fieldid:'SSCWorkGroupUserTreeGridRef', + onChange: this.selectUser, + queryCondition: { + group: (data.pk_sscgroup || {}).value + }, + value: this.state.refname + })} +
+
+ { this.reason = val }} + /> +
+
+
+ + {multiLang && multiLang.get('7010-0001')} + {multiLang && multiLang.get('7010-0004')} + +
+
+ ) + } +} + +export default DistributeUserList; +/*yk4t7DP0e63Jty9nogg5PkG65NSwYppMKCMIv/pnhiA=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/components/operateNote.less b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/operateNote.less new file mode 100644 index 0000000..1479299 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/operateNote.less @@ -0,0 +1,22 @@ +.query-operation { + .u-modal-body { + padding-left: 0!important; + padding-right: 0!important; + padding-top: 0 !important; + } + +} + +.query-operation { + .viewer-close { + position: absolute; + font-size: 16px; + font-weight: bold; + padding-left: 19px; + text-align: left; + top: 18px; + right: 15px; + cursor: pointer; + color: #000; + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/components/queryOperation.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/queryOperation.js new file mode 100644 index 0000000..37cc88e --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/components/queryOperation.js @@ -0,0 +1,53 @@ +/*u2xfwBt7KMw8X0oGTED+fZx457/y9/Ge4fJlPLz7YRU=*/ +import React, {Component} from 'react' +import {base} from 'nc-lightapp-front' +const {NCModal,NCButton} = base +import currentVar from '../presetVar'; +import './operateNote.less' + +class OperationNote extends Component { + constructor(props) { + super(props) + } + + close = () => { + this.props.close() + } + + render() { + + let {data, showModal, table} = this.props + const {createSimpleTable} = table + let multiLang = this.props.MutiInit.getIntl(7010); + return ( +
+ + + {/*"701001RWCL-0008": "操作记录"*/} + {multiLang && multiLang.get('701001RWCL-0008')} + {/*X*/} + + + {createSimpleTable( + currentVar.operationArea, + { + showIndex: true, + height: 200, + } + )} + + +
+ ) + } +} + +export default OperationNote +/*u2xfwBt7KMw8X0oGTED+fZx457/y9/Ge4fJlPLz7YRU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/fixedTemplet.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/fixedTemplet.js new file mode 100644 index 0000000..d831df2 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/fixedTemplet.js @@ -0,0 +1,413 @@ +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ +import currentVar from '../presetVar'; +export default { + /* button:[ + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.ForceDistribute, + "title": "强制分配", + "area": currentVar.listbtnarea.notake, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.Urgent, + "title": "紧急", + "area": currentVar.listbtnarea.notake, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.NotUrgent, + "title": "不紧急", + "area": currentVar.listbtnarea.notake, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.Distribute, + "title": "分配", + "area": currentVar.listbtnarea.adjust, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.Fetchback, + "title": "取回", + "area": currentVar.listbtnarea.adjust, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.Giveback, + "title": "退回", + "area": currentVar.listbtnarea.adjust, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.Redistribute, + "title": "重新分配", + "area": currentVar.listbtnarea.taken, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.ForceFetchback, + "title": "强制取回", + "area": currentVar.listbtnarea.taken, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.QueryOperation, + "title": "操作记录", + "area": currentVar.listbtnarea.notake, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.QueryOperation2, + "title": "操作记录", + "area": currentVar.listbtnarea.adjust, + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": currentVar.listButtons.QueryOperation3, + "title": "操作记录", + "area": currentVar.listbtnarea.taken, + "children": [] + } + ] + + addModel:{ + moduletype: 'form', + items: [ + { + "itemtype": "label", + "label": "委托关系主键", + "maxlength": "20", + "disabled": true, + "attrcode": "pk_ssclientage" + }, + { + "itemtype": "label", + "label": "共享服务中心主键", + "maxlength": "20", + "disabled": true, + "attrcode": "pk_sscunit" + }, + { + "itemtype": "input", + "visible": true, + "label": "业务单元编码", + "maxlength": "20", + "disabled": true, + "attrcode": "pk_org.code" + }, + { + "itemtype": "refer", + "visible": true, + "label": "业务单元", + "maxlength": "20", + "refcode": "uapbd/refer/org/BusinessUnitTreeRef/index.js", + "required": true, + "attrcode": "pk_org" + }, + { + "itemtype": "input", + "visible": true, + "label": "所属集团", + "maxlength": "20", + "disabled": true, + "attrcode": "pk_org.pk_group.name" + }, + { + "itemtype": "checkbox", + "visible": true, + "label": "费用管理", + "maxlength": "1", + "attrcode": "busiunittype1", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": true, + "label": "应收管理", + "maxlength": "1", + "attrcode": "busiunittype2", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": false, + "label": "应付管理", + "maxlength": "1", + "attrcode": "busiunittype3", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + }, + }, + { + "itemtype": "checkbox", + "visible": false, + "label": "固定资产", + "maxlength": "1", + "attrcode": "busiunittype4", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": false, + "label": "总账", + "maxlength": "1", + "attrcode": "busiunittype7", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": false, + "label": "现金管理", + "maxlength": "1", + "attrcode": "busiunittype5", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "存货核算", + "maxlength": "1", + "attrcode": "busiunittype8", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "自由表单", + "maxlength": "1", + "attrcode": "busiunittype6", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": true, + "label": "到账通知", + "maxlength": "1", + "attrcode": "busiunittype9", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "visible": true, + "label": "共享合同", + "maxlength": "1", + "attrcode": "busiunittype10", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类11", + "maxlength": "1", + "attrcode": "busiunittype11", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类12", + "maxlength": "1", + "attrcode": "busiunittype12", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类13", + "maxlength": "1", + "attrcode": "busiunittype13", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类14", + "maxlength": "1", + "attrcode": "busiunittype14", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类15", + "maxlength": "1", + "attrcode": "busiunittype15", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类16", + "maxlength": "1", + "attrcode": "busiunittype16", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类17", + "maxlength": "1", + "attrcode": "busiunittype17", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类18", + "maxlength": "1", + "attrcode": "busiunittype18", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类19", + "maxlength": "1", + "attrcode": "busiunittype19", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "业务分类20", + "maxlength": "1", + "attrcode": "busiunittype20", + "initialvalue": {//控件默认值 + "value": false, + "display": "" + } + }, + { + "itemtype": "checkbox", + "label": "启用状态", + "maxlength": "1", + "attrcode": "enablestate", + }, + { + "itemtype": "label", + "label": "创建人", + "maxlength": "20", + "disabled": true, + "attrcode": "creator" + }, + { + "itemtype": "label", + "label": "创建时间", + "maxlength": "19", + "disabled": true, + "attrcode": "creationtime" + }, + { + "itemtype": "label", + "label": "最后修改人", + "maxlength": "20", + "disabled": true, + "attrcode": "modifier" + }, + { + "itemtype": "label", + "label": "最后修改时间", + "maxlength": "19", + "disabled": true, + "attrcode": "modifiedtime" + }, + { + "itemtype": "label", + "label": "共享服务类型名称", + "maxlength": "200", + "disabled": true, + "attrcode": "ssctypename", + "initialvalue": {//控件默认值 + "value": "财务共享服务", + "display": "财务共享服务" + } + }, + { + "itemtype": "label", + "label": "时间戳", + "maxlength": "19", + "disabled": true, + "attrcode": "ts" + } + ], + status: 'edit', + }, + distributeUserModel:{ + moduletype: 'form', + items: [ + { + "itemtype": "label", + "label": "委托关系主键", + "maxlength": "20", + "disabled": true, + "attrcode": "pk_ssclientage" + } + ] + } */ +} +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/getListButton.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/getListButton.js new file mode 100644 index 0000000..7de7785 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/getListButton.js @@ -0,0 +1,78 @@ +/*ZthXDZFuIaSaPe8Fo2hTHo/JwPk6LQkPXzn4Vh1205I=*/ +import {listButtonClick} from './index' +import currentVar from '../presetVar'; + +let getListButtonRender = function(props, sagasButtonVisible){ + let btns = []; + let l_render; + let multiLang = props.MutiInit.getIntl(7010); + switch(this.queryKey.takestatus){ + case 'notake': + l_render = (text, record, index) =>{ + if(record.urgent != null && record.urgent.value == true){ + return props.button.createOprationButton([currentVar.listButtons.ForceDistribute, currentVar.listButtons.NotUrgent,currentVar.listButtons.QueryOperation], { + area: currentVar.listbtnarea.notake, + buttonLimit: 3, + onButtonClick: (props, btnKey) => { + listButtonClick.listButtonClick.call(this,btnKey, record, index); + } + }); + }else{ + return props.button.createOprationButton([currentVar.listButtons.ForceDistribute,currentVar.listButtons.Urgent,currentVar.listButtons.QueryOperation], { + area: currentVar.listbtnarea.notake, + buttonLimit: 3, + onButtonClick: (props, btnKey) => { + listButtonClick.listButtonClick.call(this, btnKey, record, index); + } + }); + } + } + break; + case 'adjust': + btns = [currentVar.listButtons.Distribute, currentVar.listButtons.Fetchback, currentVar.listButtons.Giveback,currentVar.listButtons.QueryOperation2]; + l_render = (text, record, index) =>{ + return props.button.createOprationButton(btns, { + area: currentVar.listbtnarea.adjust, + buttonLimit: 3, + onButtonClick: (props, btnKey) => { + listButtonClick.listButtonClick.call(this, btnKey, record, index); + } + }); + } + break; + case 'taken': + btns = [currentVar.listButtons.Redistribute, currentVar.listButtons.ForceFetchback,currentVar.listButtons.QueryOperation3]; + l_render = (text, record, index) =>{ + return props.button.createOprationButton(btns, { + area: currentVar.listbtnarea.taken, + buttonLimit: 3, + onButtonClick: (props, btnKey) => { + listButtonClick.listButtonClick.call(this, btnKey, record, index); + } + }); + } + break; + } + let event = { + label: multiLang && multiLang.get('701001RWCL-0060'), + itemtype: 'customer', + attrcode: 'opr', + visible: true, + width: '220px', + fixed: 'right', + className: "opr", + render: (text, record, index) => { + return sagasButtonVisible ? props.button.createErrorButton({ + record: record, + sucessCallBack: () => { + //状态切换成功后,显示业务 + return l_render(text, record, index ); + } + }) : l_render(text, record, index ); + + } + }; + return event; +} +export default {getListButtonRender} +/*ZthXDZFuIaSaPe8Fo2hTHo/JwPk6LQkPXzn4Vh1205I=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/index.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/index.js new file mode 100644 index 0000000..5d0e8b7 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/index.js @@ -0,0 +1,9 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import initTemplate from './initTemplate'; +import listButtonClick from './listButtonClick'; +import fixedTemplet from './fixedTemplet' +import query from './query' +import getListButton from './getListButton' +export {initTemplate, listButtonClick, query, fixedTemplet, getListButton}; + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/initTemPlate.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/initTemPlate.js new file mode 100644 index 0000000..a179080 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/initTemPlate.js @@ -0,0 +1,149 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import {getMultiLang, ajax} from 'nc-lightapp-front'; +import currentVar from '../presetVar'; +import {listButtonClick, fixedTemplet, getListButton, query} from './index'; +import { tableAndCardListScrollLoad } from 'ssccommon/utils/scrollLoad'; + +import exceedImg from '../../../../public/image/exceed.png'; +import preImg from '../../../../public/image/pre.png'; + +export default function (props) { + const that = this + props.createUIDom( + { + pagecode: '701002RWGL_list', + appcode: '701002RWGL' + }, + (data) => { + getMultiLang({moduleId: 7010, domainName: 'ssctp',currentLocale: 'zh-CN', callback: (json) => { + props.button.setButtons(data.button); + data.template[window.presetVar.list].pagination = false; + data.template[window.presetVar.list].items.push(getListButton.getListButtonRender.call(that, props, true)); + + let _idx = -1 + while(++_idx < data.template[window.presetVar.list].items.length) { + let item = data.template[window.presetVar.list].items[_idx] + if( item.attrcode=='pk_sscuser'){ + if(that.queryKey.takestatus=='notake'){ + item.visible=false; + } else { + item.visible=true; + } + } + } + + data.template[window.presetVar.list].items.map((item)=>{ + if(item.attrcode==='billno' + || item.attrcode==='pk_tradetype' + || item.attrcode==='pk_currtype' + || item.attrcode==='remark' + || item.attrcode==='amount' + || item.attrcode==='pk_sscuser' + || item.attrcode==='billdate' + || item.attrcode==='billmaker'){ + + item.isSort = true; + }else{ + + item.isSort = false; + } + }) + + props.meta.setMeta(data.template, () => { + //滚动加载 + tableAndCardListScrollLoad(() => { + if ( + Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number) + && this.canChangPageFlag + ) { + this.canChangPageFlag = false; + setTimeout(() => { query.queryData.call(this, true) }, 300); + } + }) + }) + + props.table.setTableRender(window.presetVar.list, "billno", (text, record, index)=>{ + let ret = [ + ( +
{ + listButtonClick.listButtonClick.call(that, currentVar.listButtons.OpenBill, record, index); + }}>{record.billno.value} + ) + ] + if(record.urgent && record.urgent.value == true) { + ret.push({json['701001RWCL-0056']})//紧急 + } + if(record.ismereject && record.ismereject.value == true){ + ret.push({json['701001RWCL-0057']})//本人驳回 + } + if(record.isleaderreject && record.isleaderreject.value == true){ + ret.push({json['701001RWCL-0058']})//上级驳回 + } + if(record.isappointed && record.isappointed.value == true) { + ret.push({json['701001RWCL-0055']})//强制分配 + } + if(record.isunapprove && record.isunapprove.value == true){ + ret.push( {json['701001RWCL-0169']})//取消审批 + } + if (record.iscmpreject && record.iscmpreject.value == true) { + ret.push( {json['701001RWCL-0203']})// 出纳驳回 + } + return ret + }) + + function setExceedstatusTableRender() { + props.table.setTableRender(window.presetVar.list, "exceedstatus", (text, record, index)=>{ + const {exceedstatus} = record + let txt = '', src = '' + if (exceedstatus) { // exceed:超期 + if(exceedstatus.value === 'exceed'){ + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = exceedImg + }else if(exceedstatus.value === 'pre'){ // pre:即将超期 + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = preImg + } + } + return (src && txt) ? + ([ + , + {txt} + ]) : null + }) + } + + // 待提取(notake)/待调整(adjust)/已提取(taken) + if (that.queryKey.takestatus === 'taken') { + //超时预警 + setExceedstatusTableRender() + props.table.showColByKey(window.presetVar.list, 'endtime') + props.table.showColByKey(window.presetVar.list, 'warningtime') + props.table.showColByKey(window.presetVar.list, 'exceedstatus') + } else if (that.queryKey.takestatus === 'notake') { + props.table.hideColByKey(window.presetVar.list, 'endtime') + props.table.hideColByKey(window.presetVar.list, 'warningtime') + props.table.hideColByKey(window.presetVar.list, 'exceedstatus') + } else if (that.queryKey.takestatus === 'adjust') { + props.table.hideColByKey(window.presetVar.list, 'endtime') + props.table.hideColByKey(window.presetVar.list, 'warningtime') + props.table.showColByKey(window.presetVar.list, 'exceedstatus') + //超时预警 + setExceedstatusTableRender() + } + + that.searchAreaConfig = { + searchadjust: data.template.searchadjust.items, + searchnotake: data.template.searchnotake.items, + searchtaken: data.template.searchtaken.items + } + + + + // 查询默认条件数据 + query.queryData.call(that); + }}) + } + ) +} + +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/listButtonClick.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/listButtonClick.js new file mode 100644 index 0000000..2aff4c4 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/listButtonClick.js @@ -0,0 +1,189 @@ +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ +import requestApi from '../requestApi' +import currentVar from '../presetVar' +import {query} from './index'; +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; + +let listButtonClick = function(btnKey, data, index, actionFrom){ + switch(btnKey){ + // 打开单据 + case currentVar.listButtons.OpenBill: + openBill.call(this, data, index, actionFrom); + break; + // 分配 + case currentVar.listButtons.Distribute: + showDistributeUserList.call(this, data, index, actionFrom, currentVar.acctionFlags.Distribute); + break; + // 强制分配 + case currentVar.listButtons.ForceDistribute: + showDistributeUserList.call(this, data, index, actionFrom, currentVar.acctionFlags.ForceDistribute); + break; + // 重新分配 + case currentVar.listButtons.Redistribute: + showDistributeUserList.call(this, data, index, actionFrom, currentVar.acctionFlags.Redistribute); + break; + // 紧急 + case currentVar.listButtons.Urgent: + setUrgent.call(this, data, index, actionFrom, currentVar.acctionFlags.Urgent); + break; + // 不紧急 + case currentVar.listButtons.NotUrgent: + setUrgent.call(this, data, index, actionFrom, currentVar.acctionFlags.NotUrgent); + break; + // 取回 + case currentVar.listButtons.Fetchback: + takeBack.call(this, data, index, actionFrom, currentVar.acctionFlags.Fetchback); + break; + // 强制取回 + case currentVar.listButtons.ForceFetchback: + takeBack.call(this, data, index, actionFrom, currentVar.acctionFlags.ForceFetchback); + break; + // 收回 + case currentVar.listButtons.Giveback: + giveBack.call(this, data, index, actionFrom); + break; + // 操作记录 + case currentVar.listButtons.QueryOperation: + case currentVar.listButtons.QueryOperation2: + case currentVar.listButtons.QueryOperation3: + handleQueryOperation.call(this, data, index, actionFrom) + break; + + } +} + +let openBill = function(data, index, actionFrom){ + let listData = data; + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values; + } + requestApi.openBill({ + data: { + billtypeCode: listData.billtypecode.value, + transtypeCode: listData.transtypecode.value, + billid: listData.busiid.value, + pk_group:listData.pk_group.value + }, + success: (data) => { + sscOpenTo(this.props, data.data.system,[ + data.data.url, + { + ...data.data.data, + scene: 'zycx' + },null, + { + pk_group: listData.pk_group.value + } + ]) + } + }) +} + +let setUrgent = function(data, index, actionFrom, urgent){ + let listData = data; + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values; + } + requestApi.setUrgent({ + data: {pk_task: listData.pk_currenttask.value, urgent: urgent, ts: listData.ts.value}, + success: (data) => { + // window.open(data.data.url); + this.data.listRows[index].values.urgent = {value : urgent == 'Y' ? true : false}; + this.data.listRows[index].values.ts = {value : data.data.ts}; + // 设置列表数据 + this.props.table.setAllTableData(window.presetVar.list, { + areacode: window.presetVar.list, + rows: this.data.listRows + }); + // 更新缩略数据 + this.detailRef.refurbishDetail(); + } + }) +} + +let showDistributeUserList = function(data, index, actionFrom, type){ + let listData = data; + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values; + } + //需要验证saga事务状态 + + if(listData.saga_status && listData.saga_status.value === "1") { + requestApi.checkSaga({ + data: { + pk_currenttask: listData.pk_currenttask.value + }, + success: (data) => { + this.setState({ + showModalDistribute: true, + operationData: listData, + distributeType: type + }); + } + }) + } else { + + this.setState({ + showModalDistribute: true, + operationData: listData, + distributeType: type + }); + } + +} + +let takeBack = function(data, index, actionFrom, type){ + let listData = data; + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values; + } + requestApi.takeBack({ + data: { + pks: listData.pk_currenttask.value, + ts: listData.ts.value, + type: type + }, + success: (data) => { + query.queryData.call(this); + } + }) +} + +let giveBack = function(data, index, actionFrom){ + let listData = data; + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values; + } + requestApi.giveBack({ + data: {pks: listData.pk_currenttask.value,ts: listData.ts.value}, + success: (data) => { + query.queryData.call(this); + } + }) +} + +const handleQueryOperation = function (data, index, actionFrom) { + let listData = data + if(actionFrom == "detail"){ + listData = this.data.listRows[index].values + } + this.setState({showOperationNote: true}) + requestApi.taskQueryOperationAction({ + data: { + busiid: listData.busiid.value + }, + success: (data) => { + if(data.success && data.data.ssctaskhistory) { + this.props.table.setAllTableData( + currentVar.operationArea, + data.data.ssctaskhistory + ) + } + } + }) +} + +export default {listButtonClick, openBill, setUrgent, takeBack, giveBack} + + +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/events/query.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/query.js new file mode 100644 index 0000000..2f3a32e --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/events/query.js @@ -0,0 +1,164 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from '../requestApi' +import currentVar from '../presetVar'; +import {initTemplate} from './index' + + +/**查询条件选择变更 */ +let handleConditionChange = function(attrcode, value){ + // 更新查询条件 + this.queryKey[attrcode]=value; + // 查询数据 + queryData.call(this); +} + +/**查询数据 */ +let queryData = function(isAddPage, afterSortCb){ + // 复制列表数据 + let copyData = function(data){ + let newData = {}; + newData.values = {}; + for(let child in data.values){ + newData.values[child] = { + display: data.values[child].display, + value: data.values[child].value, + scale: data.values[child].scale + } + } + return newData; + } + if(isAddPage){ + // 更新查询条件 + this.queryKey.pageinfo.number++; + }else{ + this.queryKey.pageinfo.number = 1; + } + requestApi.query({ + data: this.queryKey, + success: (data) => { + let listRows = []; + if(isAddPage){ + this.data.listRows.map((one)=>{ + listRows.push(copyData(one)); + }) + }else{ + this.detailRef.clearAllDetailData(); + } + data.data[window.presetVar.list].rows.map((one)=>{ + listRows.push(copyData(one)); + }) + this.data.listRows = listRows; + // 设置列表数据 + this.props.table.setAllTableData(window.presetVar.list, { + areacode: window.presetVar.list, + rows: listRows + }, false); + //列排序后回调函数 + afterSortCb && afterSortCb(); + // 设置缩略数据 + this.detailRef.addDetailData(data.data[window.presetVar.card], this.data.listRows); + let newState = {}; + newState = this.state + // 更新数量 + if(data.data.adjust != null){ + newState.showNumbers.adjust=data.data.adjust; + } + if(data.data.notake != null){ + newState.showNumbers.notake=data.data.notake; + } + // 更新查询条件区域 + let conditions = null + switch(this.queryKey.takestatus) { + case 'notake': + conditions = this.searchAreaConfig.searchnotake + break + case 'taken': + conditions = this.searchAreaConfig.searchtaken + break + case 'adjust': + conditions = this.searchAreaConfig.searchadjust + break + default: + conditions = this.searchAreaConfig.searchnotake + break + } + let idx = -1 + conditions.forEach((ele, index) => { + if (ele.attrcode === 'pk_tradetype') { + idx = index + } + }) + if (idx != -1) { + conditions[idx] = data.data.searchArea.items[0] + } + newState.searcharea.conditions = conditions + // 更新页信息 + this.queryKey.pageinfo = data.data[window.presetVar.list].pageinfo; + if(Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number)){ + newState.pageControll = 'notend'; + }else if(Number(this.queryKey.pageinfo.totalPages) == Number(this.queryKey.pageinfo.number)){ + newState.pageControll = 'end'; + }else{ + newState.pageControll = 'none'; + } + this.setState(newState, () => this.props.table.updateTableHeight()); + setTimeout(()=>{this.canChangPageFlag=true;},100); + } + }) +} + +/**模糊查询输入内容变化 */ +let onFuzzyChange = function(data){ + this.fuzzyKey = data; + let newQueryKey = {}; + let multiLang = this.props.MutiInit.getIntl(7010); + for(let child in this.queryKey){ + newQueryKey[child] = this.queryKey[child]; + } + newQueryKey.fuzzyQueryKey = data; + setTimeout((that, data)=>{ + if(data == that.fuzzyKey){ + requestApi.queryFuzzyKey({ + data: newQueryKey, + success: (data) => { + for(let childName in data.data){ + data.data[childName].value = data.data[childName].value+"="+that.fuzzyKey; + data.data[childName].key = data.data[childName].key+(multiLang && multiLang.get('701001RWCL-0061'))+that.fuzzyKey;//包含 + } + that.setState({fuzzyquerychild:data.data}); + } + }); + } + },500, this, data); +} +/**模糊查询选择 */ +let onFuzzySelected = function(data){ + this.setState({fuzzyquerychild:[]}) + // 更新查询条件 + this.queryKey.fuzzyQueryKey=data; + // 查询数据 + queryData.call(this); +} + +/**已完成/未完成 页签切换 */ +let selectTabChange = function(selectKey){ + switch(selectKey){ + case currentVar.tabArea.notake: + this.setState({twoColNums: 3, detailButtonArea: currentVar.listbtnarea.notake}); + break; + case currentVar.tabArea.adjust: + this.setState({twoColNums: 3, detailButtonArea: currentVar.listbtnarea.adjust}); + break; + case currentVar.tabArea.taken: + this.setState({twoColNums: 4, detailButtonArea: currentVar.listbtnarea.taken}); + break; + } + // 更新查询条件 + this.queryKey.takestatus=selectKey; + this.setState({currentKey: selectKey}) + // 初始化页面 + initTemplate.call(this, this.props) +} + +export default {handleConditionChange, queryData, onFuzzyChange, onFuzzySelected, selectTabChange} +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/index.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/index.js new file mode 100644 index 0000000..0b6014e --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react'; +import ReactDOM from 'react-dom'; +import SscChargemanList from './sscChargemanList'; +ReactDOM.render( + , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/index.less b/src/ssctpaaa/sscchargeman/sscchargeman/list/index.less new file mode 100644 index 0000000..c721dd6 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/index.less @@ -0,0 +1,114 @@ +#distributeUserList{ + .distributeuserlist-user{ + height: 50px; + width: 200px; + } +} +#sscChargemanList{ + // background: #fff; + .container { + height: 100%; + display: flex; + flex-direction: column; + } + .nc-bill-table-area { + flex: 1; + } + #WorkbenchDetail { + position: absolute; + width: 100%; + top: 0; + bottom: 0; + overflow: auto; + } + .title { + float: left; + line-height: 60px; + font-size: 18px; + margin-right:20px; + } + .header { + line-height: 60px; + } + + .content { + clear: both; + // background: #fff; + } + + .change-page{ + background-color: white; + text-align: center; + } + + .body-btn-area{ + cursor: pointer; + color: #007ACE; + } + .list-show{ + display: block; + position: relative; + height: 100%; + // border: 1px solid #E6E6E6; + } + .list-hide{ + display: none; + } + .billnoa{ + // text-decoration: underline; + cursor: pointer; + margin-right: 8px; + } + + .bill-status-tag { + padding: 0 3px; + text-align: center; + border-radius: 2px; + font-size: 12px; + display: inline-block; + margin-right: 4px; + } + //紧急 + .urgent-tag { + background: #FFEEE5; + border: 1px solid #FF893A; + color: #FF893A + } + //驳回类 + .ismereject-tag,.isleaderreject-tag,.iscmpreject-tag { + background: #FFEBEE; + border: 1px solid #F44336; + color: #F44336 + } + //强制分配 + .isappointed-tag { + background: #FFF8E1; + border: 1px solid #FF9800; + color: #FF9800 + } + //取消审批 + .isunapprove-tag { + background: #F0F2F4; + border: 1px solid #708091; + color: #708091 + } + .scroll-add-more { + text-align: center; + font-size: 13px; + color: #555; + line-height: 30px; + // background: #fff; + user-select: none; + } + + .u-table-fixed-right { + .opr { + .single-line-and-ellipsis { + text-overflow: initial; + } + } + } + .error-flag { + max-width: 28px !important; + } +} diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/presetVar.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/presetVar.js new file mode 100644 index 0000000..efe16c0 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/presetVar.js @@ -0,0 +1,84 @@ +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ +import 'ssccommon/components/globalPresetVar'; + +/**页面全局变量 */ +let currentVar = { + /**页面ID */ + pageId: 'tasklist', + /**列表区域ID */ + list: 'tasklist', + /**缩略区域ID */ + card: 'taskcard', + /**操作记录区域ID */ + operationArea: 'ssctaskhistory', + /**页签区域 */ + tabArea:{ + /**待提取 */ + notake: 'notake', + /**待分配 */ + adjust: 'adjust', + /**已提取 */ + taken: 'taken', + }, + /**列表按钮区域 */ + listbtnarea: { + /**待提取区域按钮 */ + notake: 'notakeButton', + /**待分配区域按钮 */ + adjust: 'adjustButton', + /**已提取区域按钮 */ + taken: 'takenButton', + }, + /**列表按钮 */ + listButtons: { + /**打开单据 */ + OpenBill: 'OpenBill', + /**分配 */ + Distribute: 'Distribute', + /**强制分配 */ + ForceDistribute: 'ForceDistribute', + /**重新分配 */ + Redistribute: 'Redistribute', + /**紧急 */ + Urgent: 'Urgent', + /**不紧急 */ + NotUrgent: 'NotUrgent', + /**取回 */ + Fetchback: 'Fetchback', + /**强制取回 */ + ForceFetchback: 'ForceFetchback', + /**收回 */ + Giveback: 'Giveback', + /** 操作记录*/ + QueryOperation: 'QueryOperation', + QueryOperation2: 'QueryOperation2', + QueryOperation3: 'QueryOperation3' + }, + acctionFlags: { + /**分配 */ + Distribute: 'distribute', + /**强制分配 */ + ForceDistribute: 'forcedistribute', + /**重新分配 */ + Redistribute: 'redistribute', + /**紧急 */ + Urgent: 'Y', + /**不紧急 */ + NotUrgent: 'N', + /**取回 */ + Fetchback: 'fetchback', + /**强制取回 */ + ForceFetchback: 'forcefetchback' + }, + /**页面展示形态 */ + showType: { + list: 'list', + card: 'card' + } +} +window.presetVar = { + ...window.presetVar, + ...currentVar +}; +export default currentVar +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/requestApi.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/requestApi.js new file mode 100644 index 0000000..48ef6c0 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/requestApi.js @@ -0,0 +1,83 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax } from 'nc-lightapp-front'; + +let requestDomain = ''; + +let requestApiOverwrite = { + //单据模板接口 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskTemQryAction.do', + data: opt.data, + success: opt.success + }); + }, + // 查询接口 + query: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageQueryAction.do', + data: opt.data, + success: opt.success + }); + }, + // 查询接口 + queryFuzzyKey: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskBlurQueryAction.do', + data: opt.data, + success: opt.success + }); + }, + // 查看单据 + openBill: (opt) => { + ajax({ + url: '/nccloud/sscrp/rpbill/BrowseBillAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }); + }, + // 设值紧急状态 + setUrgent: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskUrgentAction.do', + data: opt.data, + success: opt.success + }); + }, + takeBack: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageFetchBackAction.do', + data: opt.data, + success: opt.success + }); + }, + giveBack: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageGiveBackAction.do', + data: opt.data, + success: opt.success + }); + }, + // 作业任务联查操作记录 + taskQueryOperationAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleQueryOperationAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + checkSaga: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCSagaCheckAction.do', + data: opt.data, + success: opt.success + }); + } +} + +export default requestApiOverwrite; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscchargeman/list/sscChargemanList.js b/src/ssctpaaa/sscchargeman/sscchargeman/list/sscChargemanList.js new file mode 100644 index 0000000..7d4c061 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscchargeman/list/sscChargemanList.js @@ -0,0 +1,374 @@ +/*5sNY6VU0CqGNTUet29elDpvqM1BXmM8/EUP3nAO1wDY=*/ +import React, {Component} from 'react'; +import {createPage, base, ajax, toast} from 'nc-lightapp-front'; +const {NCAffix, NCDiv} = base; +import {initTemplate, afterEvent, listButtonClick,query} from './events'; +import currentVar from './presetVar'; +import WorkbenchTab from 'ssccommon/components/workbench-tab' +import WorkbenchSearcharea from 'ssccommon/components/workbench-searcharea' +import WorkbenchDetail from 'ssccommon/components/workbench-detail' +import DistributeUserList from './components/distributeUserList' +import OperationNote from './components/queryOperation' + +import './index.less'; + +class SscChargemanList extends Component { + constructor(props) { + super(props); + this.state = { + twoColNums: 3, //搜索区域,搜索项布局控制 + showType: currentVar.showType.list, //展示形态: 列表、卡片 + showNumbers:{}, //tab标签上的数字 + searcharea:{ //搜索条件 + conditions:[] + }, + pageControll: 'none', //翻页状态 + fuzzyquerychild: [], //模糊搜索数据记录 + showModalDistribute: false, //分配人员弹窗控制 + operationData: {}, //分配人员数据 + distributeType: '', //分配人员类型 + detailButtonArea: currentVar.listbtnarea.notake, //待提取区域按钮 + defaultKey: 'notake', //tab默认选中页签 + currentKey: 'notake', //tab当前页签 + showOperationNote: false, //操作记录弹窗控制 + }; + // 查询条件 + this.queryKey={ + // 待提取(notake)/待调整(adjust)/已提取(taken) + takestatus: currentVar.tabArea.notake, + fuzzyQueryKey: [], + // 页信息 + pageinfo:{ + number: 1, + size: 30, + totalElements: 0, + totalPages: 0 + } + } + // 缓存查询结果数据 + this.data={ + listRows:[], + cardRows:[] + } + + // 延时控制标记 + // 翻页 + this.canChangPageFlag = true; + // 模糊查询 + this.fuzzyKey = ''; + + this.detailRef = {}; + + this.searchAreaConfig = {} + } + componentDidMount() { + } + componentWillMount() { + // debugger + const key = this.props.getUrlParam("process") ? this.props.getUrlParam("process").toLowerCase() : 'notake' + this.setState( + {defaultKey: key, currentKey: key}, + () => { + this.queryKey.takestatus = key + initTemplate.call(this, this.props) + } + ) + } + + // 列表/缩略切换 + showTypeClick(type){ + this.setState({showType: type}); + } + + // 去往优先级管理 + backToChargemanmanage = (key) => { + switch (key) { + case 'back': + this.props.linkTo( + '/ssctp/sscchargeman/sscprioritymanage/list/', + { + pagecode: '700106RWGLYXJ_List', + appcode: '701002RWGL' + } + ) + break + default: + break + } + } + + queryDataCallback = (data) => { + let copyData = function(data) { + let newData = {} + newData.values = {} + for(let child in data.values){ + newData.values[child] = { + display: data.values[child].display, + value: data.values[child].value, + scale: data.values[child].scale + } + } + return newData + } + + let listRows = [] + this.detailRef.clearAllDetailData() + + data[window.presetVar.list].rows.map((one)=>{ + listRows.push(copyData(one)) + }) + this.data.listRows = listRows + // 设置列表数据 + this.props.table.setAllTableData(window.presetVar.list, { + areacode: window.presetVar.list, + rows: listRows + }) + // 设置缩略数据 + this.detailRef.addDetailData(data[window.presetVar.card], this.data.listRows); + let newState = {} + newState = this.state + // 更新数量 + if(data.adjust != null){ + newState.showNumbers.adjust=data.adjust; + } + if(data.notake != null){ + newState.showNumbers.notake=data.notake; + } + // 更新查询条件区域 + let conditions = null + switch(this.queryKey.takestatus) { + case 'notake': + conditions = this.searchAreaConfig.searchnotake + break + case 'taken': + conditions = this.searchAreaConfig.searchtaken + break + case 'adjust': + conditions = this.searchAreaConfig.searchadjust + break + default: + conditions = this.searchAreaConfig.searchnotake + break + } + let idx = -1 + conditions.forEach((ele, index) => { + if (ele.attrcode === 'pk_tradetype') { + idx = index + } + }) + if (idx != -1) { + conditions[idx] = data.searchArea.items[0] + } + newState.searcharea.conditions = conditions + // 更新页信息 + this.queryKey.pageinfo = data[window.presetVar.list].pageinfo + if(Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number)){ + newState.pageControll = 'notend' + }else if(Number(this.queryKey.pageinfo.totalPages) == Number(this.queryKey.pageinfo.number)){ + newState.pageControll = 'end' + }else{ + newState.pageControll = 'none' + } + this.setState(newState, () => this.props.table.updateTableHeight()) + setTimeout(()=>{this.canChangPageFlag=true},100); + } + + // 处理排序后的模板变化 + handleTempletAfterSort (sortParam){ + let sortObj = {}; + sortParam.forEach(item => { + sortObj[item.field] = item; + }); + let meta = this.props.meta.getMeta() + meta[window.presetVar.list].items.forEach(item => { + //保存返回的column状态,没有则终止order状态 + if(sortObj[item.attrcode]){ + item.order = sortObj[item.attrcode].order; + item.orderNum = sortObj[item.attrcode].orderNum; + }else { + item.order = "flatscend"; + item.orderNum = ""; + } + }) + this.props.meta.setMeta(meta); + } + + render() { + const { table, socket } = this.props + const {createSimpleTable} = table + const tablePkName = "pk_task"; + + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + let isShow = (type) =>{ + if(this.state.showType == currentVar.showType.list && type == currentVar.showType.list){ + return 'list-show'; + }else if(this.state.showType == currentVar.showType.card && type == currentVar.showType.card){ + return 'list-show'; + }else{ + return 'list-hide'; + } + } + let addMoreOnOff = this.data.listRows.length > 0 && Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number) + let getDetailBtns = (data, index) =>{ + switch(this.queryKey.takestatus){ + case currentVar.tabArea.notake: + if(this.data.listRows[index].values.urgent != null && this.data.listRows[index].values.urgent.value == true){ + return [currentVar.listButtons.ForceDistribute, currentVar.listButtons.NotUrgent, currentVar.listButtons.QueryOperation]; + }else{ + return [currentVar.listButtons.ForceDistribute,currentVar.listButtons.Urgent, currentVar.listButtons.QueryOperation]; + } + case currentVar.tabArea.adjust: + return [currentVar.listButtons.Distribute, currentVar.listButtons.Fetchback, currentVar.listButtons.Giveback, currentVar.listButtons.QueryOperation2]; + case currentVar.tabArea.taken: + return [currentVar.listButtons.Redistribute, currentVar.listButtons.ForceFetchback, currentVar.listButtons.QueryOperation3]; + } + } + return ( +
+ { + socket.connectMesg({ + tableAreaCode: window.presetVar.list, + billpkname: "busiid",//需要传单据的主键,不然不能显示单据追溯 + billtypeFromList: "billtypecode", + billtype: "", + // 本地前端调试,请传ip和端口 + // 打包到测试环境之前 去掉 + // serverLocation: "172.16.86.11:8883" + }) + } + + + + + +
+ {/*
*/} + +
+ +
+
+ {/*
*/} + +
+ { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageQueryAction.do', + data: opt.data, + success: (data) => { + opt.success(data.data) + } + }) + }} + queryKey={this.queryKey} + queryDataCallback={this.queryDataCallback} + /> +
+ +
+
+ {/* 表格 */} + {createSimpleTable(window.presetVar.list, { + showIndex:true, + pkname: tablePkName, + sort:{ + mode:'single', + backSource:true, + sortFun:(sortParam)=> { + if(sortParam[0].order=='flatscend'){ + this.queryKey.orderByInfo = []; + }else { + this.queryKey.orderByInfo = sortParam; + } + query.queryData.call(this, false, () => { + this.handleTempletAfterSort(sortParam); + }); + } + }, + // otherAreaHeight: 84, + adaptionHeight: true, + })} + {/*
{multiLang && multiLang.get('701001RWCL-0062')}
{/*"701001RWCL-0062": "滑动加载更多"*/} +
+
+ {/* 卡片列表 */} + { this.detailRef = ref; }} + props={this.props} + doAction={listButtonClick.listButtonClick.bind(this)} + getBtns={(data, index)=>getDetailBtns(data, index)} + sagasButtonVisible={true} + /> + {/*
{multiLang && multiLang.get('701001RWCL-0062')}
*/} +
+
+ +
+ {/* 分配人员弹出框 */} + + {/* 操作记录弹出框 */} + { + this.setState({showOperationNote: false}) + this.props.table.setAllTableData(currentVar.operationArea, {rows: []}) + }} + /> +
+ ) + } +} +SscChargemanList = createPage({ + mutiLangCode: '7010' +})(SscChargemanList); +export default SscChargemanList; +/*5sNY6VU0CqGNTUet29elDpvqM1BXmM8/EUP3nAO1wDY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/components/distributeUserList.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/components/distributeUserList.js new file mode 100644 index 0000000..96d5d95 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/components/distributeUserList.js @@ -0,0 +1,99 @@ +/*yk4t7DP0e63Jty9nogg5PkG65NSwYppMKCMIv/pnhiA=*/ +import React, {Component} from 'react'; +import {base, ajax, toast} from 'nc-lightapp-front'; +const {NCCheckbox,NCModal,NCButton, NCTextArea} = base; +import {query} from '../events/index' + +import SSCWorkGroupUserTreeGridRef from '../../../../refer/sscbd/SSCWorkGroupUserTreeGridRef' + +class DistributeUserList extends Component { + constructor(props) { + super(); + this.selectedUser={}; + this.reason=''; + this.state = {refname: null} + } + + save = () =>{ + let multiLang = this.props.MutiInit.getIntl(7010); + if(this.selectedUser.refpk == null){ + toast({ + title: multiLang && multiLang.get('701001RWCL-0052'), + color: 'warning', + }) + return; + } + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageDistributeAction.do', + data: { + pks: this.props.data.pk_task.value, + pk_user: this.selectedUser.refpk, + ts: this.props.data.ts.value, + type: this.props.distributeType, + reason: this.reason + }, + success: ()=>{ + this.selectedUser={}; + this.reason=''; + this.props.that.setState({showModalDistribute: false}); + query.queryData.call(this.props.that); + } + }); + } + + cancel = () => { + this.selectedUser={}; + this.reason=''; + this.props.that.setState({showModalDistribute: false}); + } + + selectUser = (e) => { + this.setState({refname: e}) + this.selectedUser = e; + } + + render() { + let {data} = this.props; + let multiLang = this.props.that.props.MutiInit.getIntl(7010); + return ( +
+ + + {multiLang && multiLang.get('701001RWCL-0054')} + + +
+
+ {SSCWorkGroupUserTreeGridRef({ + fieldid:'SSCWorkGroupUserTreeGridRef', + onChange: this.selectUser, + queryCondition: { + group: (data.pk_sscgroup || {}).value + }, + value: this.state.refname + })} +
+
+ {this.reason=val}} + /> +
+
+
+ + {multiLang && multiLang.get('7010-0001')} + {multiLang && multiLang.get('7010-0004')} + +
+
+ ) + } +} + +export default DistributeUserList; +/*yk4t7DP0e63Jty9nogg5PkG65NSwYppMKCMIv/pnhiA=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/buttonClick.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/buttonClick.js new file mode 100644 index 0000000..b2c9609 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/buttonClick.js @@ -0,0 +1,43 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from '../requestApi' +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; + + +export default function buttonClick(key, index) { + switch (key) { + case 'GoBack': + this.props.linkTo( + '/ssctp/sscchargeman/sscchargeman/list/', + { + pagecode: '701002RWGL_list', + appcode: '701002RWGL' + } + ) + break + case 'openBill': + const that = this + let listData = this.data.listRows[index].values + requestApi.openBill({ + data: { + billtypeCode: listData.billtypecode.value, + transtypeCode: listData.transtypecode.value, + billid: listData.busiid.value + }, + success: (data) => { + sscOpenTo(that.props, data.data.system, [ + data.data.url, + { + ...data.data.data + },null, + { + pk_group: listData.pk_group.value + } + ]) + } + }) + break + default: + break + } +} +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/fixedTemplate.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/fixedTemplate.js new file mode 100644 index 0000000..50a182e --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/fixedTemplate.js @@ -0,0 +1,32 @@ +/*7hOekIf8hUsv8p/Si0HVBtJo9qHX0rmchb8gnkywXYE=*/ +const buttons = [ + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "forcedistribute", + "title": "强制分配", + "area": "tasklist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "TopPlacement", + "title": "本级置顶", + "area": "tasklist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "sort", + "title": "优先级排序", + "area": "tasklist", + "children": [] + } +] + +export default { + buttons +} +/*7hOekIf8hUsv8p/Si0HVBtJo9qHX0rmchb8gnkywXYE=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/getListBtn.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/getListBtn.js new file mode 100644 index 0000000..d1fe431 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/getListBtn.js @@ -0,0 +1,92 @@ +/*qhVudgKW6ht1y9z2TuPcG5AIM+Or16J7zDlAFufMfx0=*/ +import {listButtonClick} from './index' + +export default function getListButtonRender(props){ + const that = this + const { + idx, + prioritys + } = this.state.showPriority + let multiLang = props.MutiInit.getIntl(7010) + return { + label: multiLang && multiLang.get('701001RWCL-0060'),//操作 + itemtype: 'customer', + attrcode: 'opr', + visible: true, + fixed: 'right', + width: '200px', + render: (text, record, index) =>{ + return ( +
+ { + [ + props.button.createOprationButton( + ['forcedistribute'], + { + area: window.presetVar.list, + itemtype: 'customer', + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ), + props.button.createOprationButton( + ['TopPlacement'], + { + area: window.presetVar.list, + itemtype: 'customer', + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ), + ( + { + listButtonClick(props, 'sort', text, record, index, that) + that.setState({sortRecord: record}) + }} + > + {/*"701001RWCL-0063": "优先级设置*/} + {multiLang && multiLang.get('701001RWCL-0063')} + {/* { + index == idx + && + ( +
+ { + prioritys.map(ele => ( + { + e = e || window.event + e.stopPropagation() + e.cancelBubble = true + listButtonClick(props, 'RankingUpdatePriority', text, record, index, that, ele.value) + }} + className={ + ele.display === record.priority.display + ? + 'active' + : + '' + } + >{ele.display} + )) + } +
+ ) + } */} +
+ ) + ] + } + +
+ ) + } + } +} +/*qhVudgKW6ht1y9z2TuPcG5AIM+Or16J7zDlAFufMfx0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/index.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/index.js new file mode 100644 index 0000000..18badc9 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick' +import initTemplate from './initTemplate' +import listButtonClick from './listButtonClick' +export { buttonClick, initTemplate, listButtonClick} + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/initTemPlate.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/initTemPlate.js new file mode 100644 index 0000000..cbf8bfd --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/initTemPlate.js @@ -0,0 +1,76 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import requestApi from '../requestApi' +import getListButtonRender from './getListBtn' +import fixedTemplate from './fixedTemplate' +import {buttonClick} from './index' + +export default function (props) { + window.presetVar = { + ...window.presetVar, + list: 'tasklist' + } + + const _this = this + props.createUIDom( + { + pagecode: '700106RWGLYXJ_List', + appcode: '701002RWGL' + }, + function (data) { + for (let item of data.template.tasklist.items) { + item.isSort = false + } + + props.button.setButtons(data.button) + data.template[window.presetVar.list].pagination = false + data.template[window.presetVar.list].items.push( + getListButtonRender.call(_this, props) + ) + props.meta.setMeta(data.template) + + // 单据编码列自定义render + props.table.setTableRender(window.presetVar.list, "billno", (text, record, index)=>{ + return( + {record.billno.value} + ) + }) + // 查询作业组 + requestApi.qryManagePriority({ + data: {}, + success: (data) => { + if(!data.success) return + const grouplist = data.data.grouplist.map(ele => ( + { + attrcode: ele.value, + label: ele.display + } + )) + + _this.queryKey.pk_sscgroup = + _this.queryKey.pk_sscgroup + || + ( + grouplist.length > 0 + ? + grouplist[0].attrcode + : + '' + ) + + _this.setState({ + grouplist, + pk_sscgroup: _this.queryKey.pk_sscgroup + }) + + // 查询列表数据 + _this.queryData() + } + }) + } + ) +} + +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/listButtonClick.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/listButtonClick.js new file mode 100644 index 0000000..dffa542 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/events/listButtonClick.js @@ -0,0 +1,107 @@ +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ +import requestApi from '../requestApi' +import {initTemplate} from './index' +import {toast} from 'nc-lightapp-front' + +export default function listButtonClick(props, btnKey, text, record, index, that, priorityValue, ev,) { + let multiLang = props.MutiInit.getIntl(7010); + switch(btnKey){ + case 'forcedistribute': //强制分配 + let listData = record; + + that.setState({ + showModalDistribute: true, + operationData: listData, + distributeType: "forcedistribute" + }) + break + + case 'TopPlacement': // 本级置顶 + requestApi.rankingSetTop({ + data: { + pk_ssctask: record.pk_task.value + }, + success: (data) => { + if (data.success && data.data) { + initTemplate.call(that, that.props); + //置顶成功 + toast({ + title: multiLang && multiLang.get('701001RWCL-0064'), + }) + } else { + //置顶失败 + toast({ + title: multiLang && multiLang.get('701001RWCL-0065'), + color: 'warning', + }) + } + } + }) + break + case 'sort': + ev = ev || window.event + that.sortTips.current.style.left = ev.clientX + 'px' + that.sortTips.current.style.top = ev.clientY + 'px' + requestApi.queryPriority({ + data: { + pk_workinggroup: record.pk_sscgroup.value + }, + success: (data) => { + if (data.data && data.data.priority) { + const { + data: { + priority + } + } = data + that.setState({ + showPriority: { + idx: index, + prioritys: priority + } + }) + initTemplate.call(that, that.props) + } else { + toast({ + title: multiLang && multiLang.get('701001RWCL-0183'), + }) + } + } + }) + break + case 'RankingUpdatePriority': + requestApi.rankingUpdatePriority({ + data: { + pk_ssctask: record.pk_task.value, + pk_priority: priorityValue + }, + success: (success) => { + if (success) { + //修改成功 + toast({ + title: multiLang && multiLang.get('701001RWCL-0066') + }) + } else { + //修改失败 + toast({ + title: multiLang && multiLang.get('701001RWCL-0067'), + color: 'warning', + }) + } + that.setState({ + showPriority: { + idx: -1, + prioritys: [] + } + }) + initTemplate.call(that, that.props) + } + }) + break + default: + break + } +} + + + +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.js new file mode 100644 index 0000000..b760688 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.js @@ -0,0 +1,6 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react' +import ReactDOM from 'react-dom' +import SscUserList from './sscPriorityManage' +ReactDOM.render(, document.querySelector('#app')) +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.less b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.less new file mode 100644 index 0000000..9c6881e --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/index.less @@ -0,0 +1,211 @@ +#sscPriorityManage{ + .title { + float: left; + line-height: 60px; + font-size: 18px; + margin-right:20px; + } + .header { + line-height: 60px; + } + + .content { + clear: both; + background: #fff; + } + + .change-page{ + background-color: white; + text-align: center; + } + + .body-btn-area{ + cursor: pointer; + color: #007ACE; + } + .billnoa{ + cursor: pointer; + overflow: hidden; + text-decoration: none; + } + .workbench-tab{ + margin-top: 0; + } + .lightapp-component-simpleTable .single-line-and-ellipsis { + overflow: inherit !important; + } + .opration-wrapper { + padding-right: 0; + .row-edit-option { + margin-right: 12px; + } + } +} + +.update-priority-btn { + margin-left: 6px; + cursor: pointer; + user-select: none; +} + +.update-priority-separator { + margin-left: 6px; + color: #D9D9D9; + display: inline-block; + height: 13px; + overflow: hidden; +} + +.main-table { + position: relative; + + .row-edit-option, + .sort-btn { + color: #0084FF; + } + + .row-edit-option { + margin-right: 15px; + } + + .sort-btn { + cursor: pointer; + position: relative; + } +} + +#target-blank { + z-index: 998; + position: fixed; + left: 0; + top: 0; +} + +.rank-update-priority { + position: fixed; + top: 0; + // left: 37px; + min-width: 75px; + background: rgba(255,255,255,1); + box-shadow: 0px 3px 12px 0px rgba(74,81,93,0.25); + border-radius: 4px; + border: 1px solid rgba(219,222,229,1); + color: #011427; + padding: 8px 0; + z-index: 999; + + span { + height: 25px; + line-height: 25px; + text-indent: 9px; + transition: .2s; + text-indent: 10px; + display: block; + width: 100%; + cursor: pointer; + + &:hover { + background-color: #f4f6fc; + } + } + + .active { + color: red; + } +} + +.opr-actions { + position: relative; + display: flex; + align-items: center; + + i.status-action { + position: absolute; + display: block; + right: -7px; + top: 0; + height: 100%; + width: 3px; + background-color: #fff; + margin-right: 0 !important; + cursor: default!important; + box-sizing: content-box !important; + transition: .3s; + } + + i.active { + background-color: red; + } +} + +.fixed-priority { + position: fixed; + right: 3px; + top: 189px; + min-width: 30px; + background: rgba(255,255,255,1); + box-shadow: 0px 3px 12px 0px rgba(74,81,93,0.25); + border-radius: 3px; + border: 1px solid rgba(219,222,229,1); + color: #011427; + z-index: 997; + font-size: 13px; + + a { + height: 25px; + line-height: 25px; + text-indent: 9px; + transition: .2s; + text-indent: 10px; + width: 100%; + color: #333; + cursor: pointer; + transition: .5s; + display: none; + padding-right: 10px; + + &:hover { + background-color: #f4f6fc; + } + } + + .active { + color: red; + } + + .toggle-handle { + display: block; + width: 30px; + height: 30px; + border-radius: 3px; + text-align: center; + line-height: 30px; + } + + &:hover { + .toggle-handle { + display: none; + } + a { + display: block; + } + padding-right: 10px; + padding: 8px 0; + min-width: 65px; + } +} + +.replace-work-bench-tab { + height: 46px; + display: flex; + align-items: center; + background-color: #fff; + justify-content: flex-end; + margin-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + + button { + margin-right: 20px; + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/requestApi.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/requestApi.js new file mode 100644 index 0000000..32eed17 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/requestApi.js @@ -0,0 +1,84 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax } from 'nc-lightapp-front' + +let requestApiOverwrite = { + // 模板查询 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManagePriorityTemAction.do', + data: opt.data, + success: opt.success + }) + }, + // 列表查询 + query: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManagePriorityQueryAction.do', + data: opt.data, + success: opt.success + }) + }, + // 模糊查询 + queryFuzzyKey: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskBlurQueryAction.do', + data: opt.data, + success: data => { + opt.success(data) + } + }) + }, + // 优先级查询 + queryPriority: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCPriorityQryForTaskManageAction.do', + data: opt.data, + success: data => { + opt.success(data) + } + }) + }, + // 任务列表优先级修改 + rankingUpdatePriority: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/RankingUpdatePriorityAction.do', + data: opt.data, + success: data => { + if (data.success) opt.success(data.data) + } + }) + }, + // 优先级置顶 + rankingSetTop: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/RankingSetTopAction.do', + data: opt.data, + success: data => { + opt.success(data) + } + }) + }, + // 查看单据 + openBill: (opt) => { + ajax({ + url: '/nccloud/sscrp/rpbill/BrowseBillAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业组查询 + qryManagePriority: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManagePriorityTemAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + } +} + +export default requestApiOverwrite +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/sscprioritymanage/list/sscPriorityManage.js b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/sscPriorityManage.js new file mode 100644 index 0000000..4b83a6f --- /dev/null +++ b/src/ssctpaaa/sscchargeman/sscprioritymanage/list/sscPriorityManage.js @@ -0,0 +1,349 @@ +/*fD+5N30vpAA14EiZW64VY7fC/UxEPbeGMVqPl92ljYU=*/ +import React, {Component} from 'react' +import {createPage, base} from 'nc-lightapp-front' +const {NCButton, NCAffix, NCDiv} = base +import {buttonClick, initTemplate, listButtonClick,} from './events' +import requestApi from './requestApi' +import './index.less' +import WorkbenchTab from 'ssccommon/components/workbench-tab' +import DistributeUserList from './components/distributeUserList' +import WorkbenchSearcharea from 'ssccommon/components/workbench-searcharea' + +class sscPriorityManage extends Component { + constructor(props) { + super(props) + this.state = { + showNumbers:{}, + searcharea:{ + conditions:[] + }, + pageControll: 'none', + fuzzyquerychild: [], + showPriority: { + idx: -1, + prioritys: [] + }, + showModalDistribute: false, + distributeType: '', + operationData: {}, + grouplist: [], + pk_sscgroup: '', + prioritysConfig: [], + currentpriorityName: '', + currentKey: '', + sortRecord: {}, + } + // 查询条件 + this.queryKey={ + pk_sscgroup: '', + pk_priority: '', + fuzzyQueryKey: [], + // 页信息 + pageinfo:{ + number: 1, + size: 999999, + totalElements: 0, + totalPages: 0 + } + } + // 缓存查询结果数据 + this.data={ + listRows:[] + } + // 延时控制标记 // 翻页 + this.canChangPageFlag = true + // 模糊查询 + this.fuzzyKey = '' + + this.sortTips = React.createRef(); + // 页面初始化 + initTemplate.call(this, props) + } + // 查询数据(参数:是否是翻页动作) + queryData(isAddPage = false){ + if(isAddPage){ + this.queryKey.pageinfo.number++ + }else{ + this.queryKey.pageinfo.number = 1 + } + requestApi.query({ + data: this.queryKey, + success: (data) => { + const {data: {tasklist}} = data + let listRows = [] + if(isAddPage){ + this.data.listRows.map((one)=>{ + listRows.push(this.copyData(one)) + }) + } + tasklist.rows.map((one)=>{ + listRows.push(this.copyData(one)) + }) + // listRows.sort((x, y) => x.values.ordernum.display - y.values.ordernum.display) + this.data.listRows = listRows + // 设置列表数据 + this.props.table.setAllTableData(window.presetVar.list, { + areacode: window.presetVar.list, + rows: listRows + }) + let newState = {} + newState = this.state + for (let attr in data.data) { + if (typeof data.data[attr] === 'number') { + newState.showNumbers[attr] = data.data[attr] + } + } + // 更新页信息 + this.queryKey.pageinfo = tasklist.pageinfo + if(this.queryKey.pageinfo.totalPages > this.queryKey.pageinfo.number){ + newState.pageControll = 'notend' + }else if(this.queryKey.pageinfo.totalPages == this.queryKey.pageinfo.number){ + newState.pageControll = 'end' + }else{ + newState.pageControll = 'none' + } + newState.searcharea = { + conditions: JSON.parse(data.data.searchArea).items + } + this.setState(newState) + setTimeout(()=>{this.canChangPageFlag=true;},100) + } + }) + } + // 复制列表数据 + copyData(data){ + let newData = {} + newData.values = {} + for(let child in data.values){ + newData.values[child] = { + display: data.values[child].display, + value: data.values[child].value, + scale: data.values[child].scale + } + } + return newData + } + // 已完成/未完成 页签切换 + selectTabChange(selectKey){ + this.queryKey.pk_sscgroup = selectKey + this.setState({currentKey: selectKey}) + initTemplate.call(this, this.props) + } + // 查询条件选择变更 + handleConditionChange(attrcode, value){ + // 更新查询条件 + this.queryKey[attrcode]=value + // 查询数据 + this.queryData() + } + // 模糊查询输入内容变化 + onFuzzyChange(data){ + this.fuzzyKey = data + let newQueryKey = {} + let multiLang = this.props.MutiInit.getIntl(7010) + for(let child in this.queryKey){ + newQueryKey[child] = this.queryKey[child] + } + newQueryKey.fuzzyQueryKey = data + const that = this + setTimeout((that, data)=>{ + if(data == that.fuzzyKey){ + requestApi.queryFuzzyKey({ + data: newQueryKey, + success: (data) => { + for(let childName in data.data){ + data.data[childName].value = data.data[childName].value+"="+that.fuzzyKey; + let aname = multiLang && multiLang.get('701001RWCL-0061')+that.fuzzyKey;//包含 + data.data[childName].key = data.data[childName].key+aname; //包含 + } + that.setState({fuzzyquerychild:data.data}) + } + }) + } + },500, this, data) + } + // 模糊查询选择 + onFuzzySelected(data){ + this.setState({fuzzyquerychild:[]}) + // 更新查询条件 + this.queryKey.fuzzyQueryKey = data + // 查询数据 + this.queryData() + } + hidePriority = (e) => { + e = e || window.event + e.stopPropagation() + e.cancelBubble = true + this.setState({ + showPriority: { + idx: -1, + prioritys: [] + } + }) + initTemplate.call(this, this.props) + } + setCurrentActivePrioritys = currentpriorityName => { + this.setState({currentpriorityName}) + } + + render() { + const {button, table} = this.props + const {createSimpleTable} = table + + const { showPriority: {idx, prioritys,}, prioritysConfig, currentpriorityName, sortRecord,} = this.state + + const targetBlankStyle = { + height: idx == -1 + ? + '0' + : + Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) + 'px', + width: Math.max(document.body.scrollWidth, document.documentElement.scrollWidth) + 'px' + } + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + return ( +
+ {/* + '701001RWCL-0027' 作业调度优先级管理 + */} + + + + +
+ +
+ { + this.state.grouplist.length > 0 + ? + ( + + ) + : + ( +
+ { + buttonClick.call(this, 'GoBack', -1) + }} + // "701001RWCL-0034": "返回任务列表" + >{multiLang && multiLang.get('701001RWCL-0034')} +
+ ) + } +
+
+ +
+ { + this.onFuzzyChange.call(this, data) + }} + onFuzzySelected={this.onFuzzySelected.bind(this)} + disabledTypeChange={true} + queryKey={this.queryKey} + /> +
+ +
+
+ {createSimpleTable(window.presetVar.list, { + showIndex:true + })} +
+
+ + {/* 点击关闭修改优先级下拉框 */} +
+ + {/* 优先级设置 */} +
-1 ? 'block' : 'none'}}> + { + prioritys.map(ele => ( + { + e = e || window.event + e.stopPropagation() + e.cancelBubble = true + listButtonClick(this.props, 'RankingUpdatePriority', null, sortRecord, -1, this, ele.value) + }} + className={ + ele.display === sortRecord.priority.display + ? + 'active' + : + '' + } + >{ele.display} + )) + } +
+ + {/* 分配人员弹出框 */} + + {/* 类型定位标 */} + {/* { + prioritysConfig.length > 0 + ? +
+ + + + { + prioritysConfig.map((ele, idx) => ( + { this.setCurrentActivePrioritys(ele.display) }} + >{ele.display} + )) + } +
+ : + null + } */} +
+
+ ) + } +} +sscPriorityManage = createPage({ + mutiLangCode: '7010' +})(sscPriorityManage) +export default sscPriorityManage +/*fD+5N30vpAA14EiZW64VY7fC/UxEPbeGMVqPl92ljYU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/jrcll/config.json b/src/ssctpaaa/sscchargeman/widgets/jrcll/config.json new file mode 100644 index 0000000..9efb30f --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/jrcll/config.json @@ -0,0 +1,4 @@ +{ + "template": "widget.html", + "hash": false +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/jrcll/index.js b/src/ssctpaaa/sscchargeman/widgets/jrcll/index.js new file mode 100644 index 0000000..4747ac7 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/jrcll/index.js @@ -0,0 +1,205 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from "react"; +import "./index.less"; +import echarts from "echarts"; +import { ajax, base, createPage, getMultiLang } from "nc-lightapp-front"; +import randomId from "../../../../sscrp/public/common/utils/GenNonDuplicateID"; + +const { NCSelect } = base; +const NCOption = NCSelect.NCOption; +let option = {}; +let myChart; +function initoption (that) { + option = { + color: ["#97D099"], + tooltip: { + trigger: "axis" + }, + grid: { + left: "15px", + right: "15px", + top: "25px", + bottom: "15px", + containLabel: true + }, + dataZoom: { + start: 0, + end: 100, + width: "12", + right: "15", + showDataShadow: false, + show: false, + yAxisIndex: [0] + }, + xAxis: { + type: "value", + minInterval : 1, + boundaryGap: [0, 0.01], + axisLine: { + lineStyle: { + color: '#888888' + } + }, + splitLine: { + lineStyle: { + color: '#888888' + } + }, + }, + yAxis: { + type: "category", + axisLabel: { + interval: 0 + }, + data: [], + axisLine: { + lineStyle: { + color: '#888888' + }, + splitLine: { + lineStyle: { + color: '#888888' + } + }, + } + }, + series: [ + { + type: "bar", + name: that.state.json["701001RWCL-0032"],//今日作业量 + data: [], + label: { + normal: { + show: true, + position: 'right', + color:'#555555' + } + }, + barMaxWidth: '20' + } + ] + } +}; + +function deal(groupid) { + myChart.clear(); + if (!groupid || "" == groupid) { + myChart.setOption(option, true) + return; + } + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskManageBarChartAction.do", + sysAppcode: '701012JRCL', + data: { flag: "handled", groupid: groupid }, + loading: false, + success: res => { + if (res.data) { + if (res.data.x) { + option.yAxis.data = res.data.x; + } else { + option.yAxis.data = []; + } + if (res.data.y) { + option.series[0].data = res.data.y; + } else { + option.series[0].data = []; + } + let allsize = res.data.allsize; + let showsize = 10; + if (allsize > showsize) { + option.grid.right = "32px"; + option.dataZoom.show = true; + option.dataZoom.textStyle = false; + option.dataZoom.start = ((allsize - showsize) * 100) / allsize; + option.dataZoom.end = 100; + } else { + option.grid.right = "15px"; + option.dataZoom.show = false; + option.dataZoom.start = 0; + option.dataZoom.end = 100; + } + } + myChart.setOption(option, true) + } + }); +} + +class Test4 extends Component { + constructor(props) { + super(props); + this.state = { + activeKey: "", + groups: [], + json: {} + }; + this.echartsId = randomId(36) + } + componentWillMount() { + let callback = (json) => { + this.setState({json}) + } + getMultiLang({moduleId: 7010, currentLocale: 'zh-CN',domainName: 'ssctp',callback}) + } + componentDidMount() { + initoption(this) + myChart = echarts.init(document.getElementById(this.echartsId)); + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskManageBarChartAction.do", + sysAppcode: '701012JRCL', + data: {}, + loading: false, + async: false, + success: res => { + if (res.data && res.data.groups && res.data.groups[0]) { + this.setState({ + groups: res.data.groups, + activeKey: res.data.groups[0].groupid + },()=>{ + deal(res.data.groups[0].groupid); + }); + }else{ + deal(""); + } + } + }); + } + selectTabChange(selectKey) { + this.setState({ activeKey: selectKey }); + deal(selectKey); + } + + render() { + return ( +
+
+ {/*"701001RWCL-0032": "今日作业量"*/} + {this.state.json["701001RWCL-0032"]} +
+
+ {this.state.activeKey ? ( + document.body} + > + {this.state.groups.map(one => ( + {one.groupname} + ))} + + ) : null} +
+
+
+ ); + } +} + +Test4 = createPage({ + // mutiLangCode: "7010" + +})(Test4); +export default Test4 +// ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/jrcll/index.less b/src/ssctpaaa/sscchargeman/widgets/jrcll/index.less new file mode 100644 index 0000000..60eeead --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/jrcll/index.less @@ -0,0 +1,23 @@ +@import '~widgetsless'; + +#test_jrcll{ + .jrcll { + width: 455px; + height: 332px; + top: -13px; + } + //.title{ + // //float: left; + // //padding: 10px 10px 0 10px; + // //font-size: 16px; + // font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",SimSun, sans-serif; + // //color: #111111; + //} + #jrcll-select { + position: absolute; + left: 415px; + top: 10px; + width: 100px; + z-index: 999999; + } +} diff --git a/src/ssctpaaa/sscchargeman/widgets/ywgl/config.json b/src/ssctpaaa/sscchargeman/widgets/ywgl/config.json new file mode 100644 index 0000000..9efb30f --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/ywgl/config.json @@ -0,0 +1,4 @@ +{ + "template": "widget.html", + "hash": false +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/ywgl/index.js b/src/ssctpaaa/sscchargeman/widgets/ywgl/index.js new file mode 100644 index 0000000..4bed05b --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/ywgl/index.js @@ -0,0 +1,223 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react' +import './index.less' +import {ajax, base, createPage, getMultiLang} from 'nc-lightapp-front' + +const {NCSelect} = base +const NCOption = NCSelect.NCOption +import { + nccGetTheme, +} from 'ssccommon/utils/asyncFunctions.js'; + +import defaultIcon from '../../../public/image/ywicon4.png' +import youth from '../../../public/image/nccicon/youth-dd.svg' +import simple from '../../../public/image/nccicon/simple-dd.svg' +import industry from '../../../public/image/nccicon/industry-dd.svg' +import business from '../../../public/image/nccicon/business-dd.svg' + +function deal(groupid) { + if (!groupid || '' == groupid) { + document.getElementById('adjust').innerHTML = ("--"); + document.getElementById('notake').innerHTML = ("--"); + return; + } + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageYwglWidgetAction.do', + sysAppcode: '701002ZYGL', + data: {"groupid": groupid}, + loading: false, + success: (res) => { + document.getElementById('adjust').innerHTML = (res.data.adjust); + document.getElementById('notake').innerHTML = (res.data.notake); + } + }); +} + +class Test1 extends Component { + constructor(props) { + super(props); + this.state = { + activeKey: '', + groups: [], + json: {}, + backgroundImg: '', //主题背景图控制 + iconType: '', // 小部件风格 + } + } + + componentWillMount() { + let callback = (json) => { + this.setState({json}) + } + getMultiLang({moduleId: 7010, currentLocale: 'zh-CN', domainName: 'ssctp', callback}) + } + + componentDidMount() { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskManageYwglWidgetAction.do', + sysAppcode: '701002ZYGL', + data: {}, + loading: false, + async: false, + success: (res) => { + if (res.data && res.data.groups && res.data.groups[0]) { + this.setState({groups: res.data.groups, activeKey: res.data.groups[0].groupid}); + deal(res.data.groups[0].groupid); + } + } + }); + this.getTheme() + this.setNCCIcon() + } + + setNCCIcon = () => { + const iconType = localStorage.getItem('nccIcon') || window.top.nccIcon + this.setState({iconType}) + } + + // 获取主题 + getTheme = async () => { + const isBlackTheme = await nccGetTheme() === 'black'; + // 暗黑主题搜索输入框样式控制 + const backgroundImg = isBlackTheme + ? + "/nccloud/resources/ssctp/public/image/blacktheme1.png" + : + "/nccloud/resources/ssctp/public/image/tpbg1.png" + this.setState({backgroundImg}) + } + + selectTabChange(selectKey) { + this.setState({activeKey: selectKey}); + deal(selectKey); + } + + open = (event, para) => { + event.stopPropagation() + if (para) { + this.props.openTo( + '/ssctp/sscchargeman/sscchargeman/list/index.html', + { + pagecode: '701002RWGL_list', + appcode: '701002RWGL', + // "701001RWCL-0028": "作业调度" + name: this.state.json['701001RWCL-0028'], + process: para + } + ) + } else { + this.props.openTo( + '/ssctp/sscchargeman/sscchargeman/list/index.html', + { + pagecode: '701002RWGL_list', + appcode: '701002RWGL', + // "701001RWCL-0028": "作业调度" + name: this.state.json['701001RWCL-0028'] + } + ) + } + } + + render() { + const { + iconType, + } = this.state + + let iconSrc = defaultIcon, rwglIconStyle = {} + + if (iconType === 'youth') { // 青春 + iconSrc = youth + rwglIconStyle = { width: '48px', marginTop: '12px' } + } else if (iconType === 'simple') { // 简约 + iconSrc = simple + rwglIconStyle = { marginTop: '6px', width: '62px' } + } else if (iconType === 'industry') { // 工业 + iconSrc = industry + rwglIconStyle = { width: '52px', marginTop: '12px' } + } else if (iconType === 'business') { // 商务 + iconSrc = business + rwglIconStyle = { width: '52px', marginTop: '12px' } + } else { + rwglIconStyle = { width: '62px', marginTop: '4px' } + } + + return ( +
+
+
{ + this.open(e) + }}> + {/*"701001RWCL-0028": "作业调度"*/} + {this.state.json['701001RWCL-0028']} +
+
+ { + this.state.activeKey + ? + ( + document.body} + > + { + this.state.groups.map(one => ( + + {one.groupname} + + )) + } + + + ) + : + null + } +
+ +
{ + this.open(e, null) + }}> +
+ { + this.open(e) + }} + style={rwglIconStyle} + /> +
{ + this.open(e) + }}> + {/*"701001RWCL-0021": "待提取"*/} +
--
+
{this.state.json['701001RWCL-0021']}
+
+
{ + this.open(e, 'ADJUST') + }}> + {/*"701001RWCL-0014": "待调整"*/} +
--
+
{this.state.json['701001RWCL-0014']}
+
+
+
+
+
+ ); + } +} + +Test1 = createPage({ + // mutiLangCode: '7010' + +})(Test1) +export default Test1 +// ReactDOM.render(, document.querySelector('#app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/ywgl/index.less b/src/ssctpaaa/sscchargeman/widgets/ywgl/index.less new file mode 100644 index 0000000..63d05c8 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/ywgl/index.less @@ -0,0 +1,60 @@ +@import '~widgetsless'; + +#job-scheduling { + height: 175px; + .rwgl-con { + margin-top: 23px; + } + #rwgl-select { + position: absolute; + left: 230px; + top: 10px; + width: 100px; + } + #rwgl-icon { + margin: 0 46px 0 36px; + } + .manage { + margin-top: 3px; + width: 70px; + height: 78px; + float: left; + .content-one.title-one { + text-align: center; + } + .content-one { + font-size: 38px; + white-space: nowrap; + } + .word { + font-size: 14px; + color: #777777; + } + .notakeNum { + width: 40px; + text-align: center; + //padding-left: 10px; + color: #111111; + margin-bottom: 10px; + } + .adjustNum { + width: 40px; + text-align: center; + //padding-left: 10px; + color: #111111; + margin-bottom: 10px; + } + &:hover div { + color: #0073E1; + } + } +} + +// 清除浮动 +.clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/zsrwl/config.json b/src/ssctpaaa/sscchargeman/widgets/zsrwl/config.json new file mode 100644 index 0000000..9efb30f --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/zsrwl/config.json @@ -0,0 +1,4 @@ +{ + "template": "widget.html", + "hash": false +} \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.js b/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.js new file mode 100644 index 0000000..c34ac67 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.js @@ -0,0 +1,198 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from "react"; +import "./index.less"; +import echarts from "echarts"; +import { ajax, base, createPage, getMultiLang } from "nc-lightapp-front"; +import randomId from "../../../../sscrp/public/common/utils/GenNonDuplicateID"; + +const { NCSelect } = base; +const NCOption = NCSelect.NCOption; +let option = {} +let myChart; +function initoption (that) { + option = { + color: ["#5CA2FF"], + tooltip: { + trigger: "axis" + }, + grid: { + left: "15px", + right: "15px", + top: "25px", + bottom: "15px", + containLabel: true + }, + dataZoom: { + start: 0, + end: 100, + bottom: "12", + height: "12", + showDataShadow: false, + show: false + }, + xAxis: { + type: "category", + axisLabel: { + interval: 0 + }, + data: [], + axisLine: { + lineStyle: { + color: '#888888' + } + }, + splitLine: { + lineStyle: { + color: '#888888' + } + }, + }, + yAxis: { + type: "value", + minInterval : 1, + boundaryGap: [0, 0.01], + axisLine: { + lineStyle: { + color: '#888888' + } + }, + splitLine: { + lineStyle: { + color: '#888888' + } + }, + }, + series: [ + { + data: [], + name: that.state.json["701001RWCL-0033"],//在手作业量 + type: "bar", + barMaxWidth: '20' + } + ] + } +}; + +function deal(groupid) { + // let myChart = echarts.init(document.getElementById("test1")); + myChart.clear() + + if (!groupid || "" == groupid) { + myChart.setOption(option, true) + return; + } + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskManageBarChartAction.do", + sysAppcode: '701012RWZS', + data: { flag: "onhand", groupid: groupid }, + loading: false, + success: res => { + if (res.data) { + if (res.data.x) { + option.xAxis.data = res.data.x; + } else { + option.xAxis.data = []; + } + if (res.data.y) { + option.series[0].data = res.data.y; + } else { + option.series[0].data = []; + } + let allsize = res.data.allsize; + let showsize = 5; + if (allsize > showsize) { + option.grid.bottom = "27px"; + option.dataZoom.show = true; + option.dataZoom.textStyle = false; + option.dataZoom.start = 0; + option.dataZoom.end = (showsize * 100) / allsize; + } else { + option.grid.bottom = "15px"; + option.dataZoom.show = false; + option.dataZoom.start = 0; + option.dataZoom.end = 100; + } + } + myChart.setOption(option, true) + } + }); +} + +class Test3 extends Component { + constructor(props) { + super(props); + this.state = { + activeKey: "", + groups: [], + json: {} + }; + this.echartsId = randomId(36) + } + componentWillMount() { + let callback = (json) => { + this.setState({json}) + } + getMultiLang({moduleId: 7010, currentLocale: 'zh-CN',domainName: 'ssctp',callback}) + } + + componentDidMount() { + initoption(this) + myChart = echarts.init(document.getElementById(this.echartsId)); + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskManageBarChartAction.do", + sysAppcode: '701012RWZS', + data: {}, + loading: false, + success: res => { + if (res.data && res.data.groups && res.data.groups[0]) { + this.setState({ + groups: res.data.groups, + activeKey: res.data.groups[0].groupid + },()=>{ + deal(res.data.groups[0].groupid); + }); + }else{ + deal(""); + } + } + }); + } + selectTabChange(selectKey) { + this.setState({ activeKey: selectKey }); + deal(selectKey); + } + render() { + return ( +
+
+ {/*"701001RWCL-0033": "在手作业量"*/} + {this.state.json["701001RWCL-0033"]} +
+
+ {this.state.activeKey ? ( + document.body} + > + {this.state.groups.map(one => ( + {one.groupname} + ))} + + ) : null} +
+
+
+ ); + } +} + +Test3 = createPage({ + // mutiLangCode: "7010" + +})(Test3); +export default Test3 +// ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.less b/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.less new file mode 100644 index 0000000..05fda12 --- /dev/null +++ b/src/ssctpaaa/sscchargeman/widgets/zsrwl/index.less @@ -0,0 +1,23 @@ +@import '~widgetsless'; + +#test_zsrwl{ + .canvas { + width: 546px!important; + height: 332px; + top: -13px; + } + //.title{ + // //float: left; + // //padding: 10px 10px 0 10px; + // //font-size: 16px; + // font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",SimSun, sans-serif; + // //color: #111111; + //} + #zsrwl-select { + position: absolute; + left: 415px; + top: 10px; + width: 100px; + z-index: 999999; + } +} diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/events/index.js b/src/ssctpaaa/sscsearch/sscsearch/list/events/index.js new file mode 100644 index 0000000..d6c806f --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/events/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import initTemplate from "./initTemplate"; +import listButtonClick from "./listButtonClick"; +import query from "./query"; +export { initTemplate, listButtonClick, query }; + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/events/initTemplate.js b/src/ssctpaaa/sscsearch/sscsearch/list/events/initTemplate.js new file mode 100644 index 0000000..6aedba4 --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/events/initTemplate.js @@ -0,0 +1,107 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import presetVar from "../presetVar"; +import { listButtonClick } from "./index"; +import { getMultiLang } from 'nc-lightapp-front'; +import exceedImg from '../../../../public/image/exceed.png'; +import preImg from '../../../../public/image/pre.png'; +import { query } from "./index.js"; +import { tableAndCardListScrollLoad } from 'ssccommon/utils/scrollLoad'; + + +export default function (props) { + const that = this; + props.createUIDom({}, function (data) { + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + let meta = data.template; + // 设置查询条件oid + that.queryKey.oid = meta[presetVar.searchArea].oid; + + meta[presetVar.searchArea].items.map(one => { + if (one.attrcode == "pk_tradetype") { + one.fieldValued = 'refcode'; + } + if (one.attrcode == "pk_org") { + one.isRunWithChildren = false; + one.isShowDisabledData = true; + } + dealRefShow(one); + }); + + props.meta.setMeta(meta, () => { + //滚动加载数据方法 + tableAndCardListScrollLoad(() => { + if ( + Number(that.queryKey.pageinfo.totalPages) > Number(that.queryKey.pageinfo.number) + && that.canChangPageFlag + ) { + that.canChangPageFlag = false; + setTimeout(() => { + query.queryData.call(that, true); + }, 300); + } + }) + }); + + //参照编辑前事件注册 + meta.searchArea.items.find((item) => item.attrcode === "pk_org").queryCondition = function () { + let orgRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.OrgRefBuilder'; + let data = props.search.getSearchValByField('searchArea', 'pk_sscunit').value.firstvalue; + return { pk_sscunit: data, isMutiGroup: 'Y', TreeRefActionExt: orgRefBuilder }; + }; + + props.table.setTableRender( + presetVar.list, + "billno", + (text, record, index) => { + let ret = [ + { + listButtonClick.call(that, "OpenBill", record, index); + }} + > + {record.billno.value} + + ]; + if (record.iscmpreject && record.iscmpreject.value == 'Y') { + ret.push( {json['701001RWCL-0203']})// 出纳驳回 + } + return ret; + } + ); + + //超时预警 + props.table.setTableRender(presetVar.list, "exceedstatus", (text, record, index) => { + const { exceedstatus } = record + let txt = '', src = '' + if (exceedstatus) { // exceed:超期 + if (exceedstatus.value === 'exceed') { + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = exceedImg + } else if (exceedstatus.value === 'pre') { // pre:即将超期 + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = preImg + } + } + return ([ + , + {txt} + ]) + }) + + } + }) + }); + const dealRefShow = function (data) { + if (data.itemtype == "refer") { + if (data.fieldDisplayed == "code") { + data.fieldDisplayed = "refcode"; + } else if (data.fieldDisplayed == "name") { + data.fieldDisplayed = "refname"; + } + } + }; +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/events/listButtonClick.js b/src/ssctpaaa/sscsearch/sscsearch/list/events/listButtonClick.js new file mode 100644 index 0000000..6ef5397 --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/events/listButtonClick.js @@ -0,0 +1,37 @@ +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ +import requestApi from "../requestApi"; +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; +export default function listButtonClick(actionId, data, index, actionFrom) { + // console.log('listButtonClick:' + actionId); + let listData = data; + if (actionFrom == "detail") { + listData = this.data.listRows[index].values; + } + switch (actionId) { + case "OpenBill": + requestApi.openBill({ + data: { + billtypeCode: listData.billtypecode.value, + transtypeCode: listData.transtypecode.value, + billid: listData.busiid.value, + pk_group: listData.pk_group.value + }, + success: data => { + sscOpenTo(this.props, data.data.system, [ + data.data.url, { + ...data.data.data, + scene: "bzcx" + },null, + { + pk_group: listData.pk_group.value + } + ]) + } + }); + break; + default: + break; + } +} + +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/events/query.js b/src/ssctpaaa/sscsearch/sscsearch/list/events/query.js new file mode 100644 index 0000000..83de3fb --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/events/query.js @@ -0,0 +1,60 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from "../requestApi"; +import presetVar from "../presetVar"; + +let queryData = function(isAddPage) { + if (isAddPage) { + // 更新查询条件 + this.queryKey.pageinfo.number++; + } else { + this.queryKey.pageinfo.number = 1; + } + this.queryKey.pageStatus = this.state.pageStatus; + if (this.queryKey.querycondition == false) { + return; + } + requestApi.query({ + data: this.queryKey, + success: data => { + let listRows = []; + if (isAddPage) { + this.data.listRows.map(one => { + listRows.push(this.copyData(one)); + }); + } else { + this.refs.detail.clearAllDetailData(); + this.pubMessage.querySuccess((((data.data || {})[presetVar.list] || {}).pageinfo || {}).totalElements); + } + data.data[presetVar.list].rows.map(one => { + listRows.push(this.copyData(one)); + }); + this.data.listRows = listRows; + this.props.table.setAllTableData(presetVar.list, { + areacode: presetVar.list, + rows: listRows + }); + // 设置缩略数据 + this.refs.detail.addDetailData(data.data[presetVar.card]); + let newState = {}; + newState = this.state; + // 更新页信息 + this.queryKey.pageinfo = data.data[presetVar.list].pageinfo; + if (Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number)) { + newState.pageControll = "notend"; + } else if ( + Number(this.queryKey.pageinfo.totalPages) == Number(this.queryKey.pageinfo.number) + ) { + newState.pageControll = "end"; + } else { + newState.pageControll = "none"; + } + this.setState(newState); + setTimeout(() => { + this.canChangPageFlag = true; + }, 100); + } + }); +}; +export default { queryData }; + +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/index.js b/src/ssctpaaa/sscsearch/sscsearch/list/index.js new file mode 100644 index 0000000..bede893 --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import SscSearch from "./sscSearch"; +ReactDOM.render(, document.querySelector("#app")); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/index.less b/src/ssctpaaa/sscsearch/sscsearch/list/index.less new file mode 100644 index 0000000..67d7023 --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/index.less @@ -0,0 +1,282 @@ +#ssctasklist { + display: flex; + flex-direction: column; + .nc-singleTable-table-area { + flex: 1; + .show { + height: 100%; + } + } + .title { + float: left; + font-size: 18px; + margin-right: 20px; + font-weight: bold; + } + .header { + line-height: 60px; + } + + .content { + clear: both; + background: #fff; + position: relative; + } + + .change-page { + background-color: white; + text-align: center; + } + + .body-btn-area { + cursor: pointer; + color: #007ace; + } + .show { + display: block; + border-radius: 3px; + position: relative; + } + .hide { + display: none; + } + .billnoa { + cursor: pointer; + } + + .cashier-reject-tip { + font-size: 12px; + color: rgba(255,255,255,1); + background-color: #E14C46; + border-radius: 2px; + margin-left: 3px; + padding: 0 2px; + height: 16px; + line-height: 16px; + } + + .create-search { + .lightapp-component-search { + .search-component-rowArea { + padding: 0 !important; + } + } + + .search-component-btnDiv span { + cursor: pointer; + } + + } + + .business-transfer--create-search { + border-bottom: none; + } + + .title-block { + padding: 0 20px; + background: #f6f6f6; + height: 46px; + border-bottom: 1px solid #d0d0d0; + font-size: 19px; + color: #111111; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + h3 { + display: inline-block; + margin: 0; + font-size: 16px; + color: #111; + height: 54px; + line-height: 54px; + } + + span.testEnvBtnWrap { + float: right; + margin-right: 16px; + } + + i.uf { + font-weight: bold; + font-size: 18px; + margin-right: 10px; + cursor: pointer; + line-height: 54px; + } + + button { + margin-top: 13px; + float: right; + margin-right: -3px; + } + + span.title { + font-size: 16px; + color: #111; + height: 46px; + line-height: 46px; + } + + .u-form-control-wrapper { + width: 200px; + min-width: 200px; + margin-top: 8px; + } + + .menu-type-icon { + float: right; + margin-top: 12px; + } + } + + .clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + + .controler-box { + height: 40px; + + .content { + background-color: #f3f3f3; + height: 100%; + } + } + + .controler-box-fixed { + display: flex; + align-items: center; + height: 40px; + position: fixed; + left: 0; + bottom: 0; + padding-left: 30px; + padding-right: 26px; + width: 100%; + z-index: 199; + + .content { + background-color: #f3f3f3; + height: 100%; + width: 100%; + } + } + + .left-area { + float: left; + height: 100%; + + button { + margin-top: 5px; + margin-left: 10px; + float: left; + } + + span:nth-child(2), + span:nth-child(3) { + margin-left: 30px; + line-height: 40px; + height: 40px; + float: left; + } + + .searchChild { + width: 100%; + } + + span.icon-refer { + height: 30px !important; + line-height: 30px !important; + } + + .u-form-control { + width: 220px !important; + + input.u-form-control { + border-right: 1px solid #bdbdbd; + } + } + } + + .left-area > div { + float: left; + margin-left: 30px; + margin-top: 6px; + } + + .right-area { + position: absolute; + right: 10px; + top: 2px; + + button { + margin-top: 4px; + } + } + + .selected-remove-one { + text-decoration: underline; + cursor: pointer; + } + + + .menu-type-icon { + cursor: pointer; + width: 28px; + text-align: center; + line-height: 28px; + border-radius: 3px; + font-size: 16px; + display: block; + position: absolute; + right: 20px; + border: 1px solid #d0d0d0; + color: #111; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05); + &:hover { + border-color: #e14c46; + color: #e14c46; + } + } + .bill-status-wrap { + white-space: nowrap; + display: flex; + align-items: center; + + .complete-status, + .not-complete-status { + width: 4px; + height: 4px; + border-radius: 50%; + user-select: none; + margin-right: 5px; + box-sizing: content-box; + } + + .complete-status { + background-color: #4caf50; + border: 2px solid #c4edc5; + } + + .not-complete-status { + background-color: #ff6d18; + border: 2px solid #ffdec5; + } + } + } + + .scroll-add-more { + text-align: center; + font-size: 13px; + color: #555; + line-height: 30px; + user-select: none; + background: #fff; + } + + + #WorkbenchDetail { + bottom: 0; + } diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/presetVar.js b/src/ssctpaaa/sscsearch/sscsearch/list/presetVar.js new file mode 100644 index 0000000..bb68eda --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/presetVar.js @@ -0,0 +1,13 @@ +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ +/**页面全局变量 */ +let currentVar = { + + pageId: "sscsearch", + list: "ssctasklist", + card: "ssctaskcard", + searchArea: "searchArea" +}; + +export default currentVar; + +/*NfbwZuhGuJXM+2qP8b1Tl7HfgjESboSZgS3QnS7gjOs=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/requestApi.js b/src/ssctpaaa/sscsearch/sscsearch/list/requestApi.js new file mode 100644 index 0000000..1727f9b --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/requestApi.js @@ -0,0 +1,37 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { ajax } from "nc-lightapp-front"; + +let requestDomain = ""; + +let requestApiOverwrite = { + // 查询接口 + query: opt => { + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskSearchAction.do", + data: opt.data, + success: opt.success + }); + }, + // 查询接口 + queryFuzzyKey: opt => { + ajax({ + url: "/nccloud/ssctp/sscbd/SSCTaskSearchBlurQueryAction.do", + data: opt.data, + success: opt.success + }); + }, + // 查看单据 + openBill: opt => { + ajax({ + url: "/nccloud/sscrp/rpbill/BrowseBillAction.do", + data: opt.data, + success: data => { + opt.success(data); + } + }); + } +}; + +export default requestApiOverwrite; + +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsearch/sscsearch/list/sscSearch.js b/src/ssctpaaa/sscsearch/sscsearch/list/sscSearch.js new file mode 100644 index 0000000..5940140 --- /dev/null +++ b/src/ssctpaaa/sscsearch/sscsearch/list/sscSearch.js @@ -0,0 +1,290 @@ +/*QpJgyDAZxXnWG91XmXvE12IWxbRf7NDRjjmCn7nmLTg=*/ +import { Component } from "react"; +import { createPage, base, createPageIcon } from "nc-lightapp-front"; +const { NCSelect, NCAffix } = base; +import WorkbenchDetail from "ssccommon/components/workbench-detail"; +import pubMessage from 'ssccommon/utils/pubMessage'; +import { initTemplate, listButtonClick, query } from "./events/index"; +import presetVar from "./presetVar"; +import requestApi from "./requestApi"; +import "./index.less"; +import { + ProfileStyle, + ProfileHead, + ProfileBody, + ButtonGroup, + HeadCenterCustom, + ProfileSearch +} from 'ssccommon/components/profile'; +import sscOpenTo from 'ssccommon/utils/sscOpenTo'; +import searchDateCtl from 'ssccommon/utils/searchDateCtl'; +import FuzzyQueryFilter from 'ssccommon/components/fuzzy-query-filter'; + + + +class SscSearch extends Component { + constructor(props) { + super(props); + this.state = { + showType: "list", + fuzzyquerychild: [], + menuShowType: { + type: "icon-Group", + title: "缩略显示" + // "105602BZCX-0008":"缩略显示" + //title:multiLang && multiLang.get('105602BZCX-0008') + } + }; + this.pubMessage = new pubMessage(props); + // 查询条件 + this.queryKey = { + fuzzyQueryKey: [], + // 页信息 + pageinfo: { + number: 1, + size: 30, + totalElements: 0, + totalPages: 0 + }, + querycondition: {}, + querytype: 'tree' + }; + // 缓存查询结果数据 + this.data = { + listRows: [], + cardRows: [] + }; + // 延时控制标记 + // 翻页 + this.canChangPageFlag = true; + // 模糊查询 + this.fuzzyKey = ""; + // 页面初始化 + initTemplate.call(this, props); + } + menuClick = () => { + // "105602BZCX-0008":"缩略显示", + // "105602BZCX-0009":"列表显示" + let multiLang = this.props.MutiInit.getIntl(7010); + if (this.state.menuShowType.type == "icon-shituqiehuan") { + this.setState({ + menuShowType: { + type: "icon-Group", + //title: multiLang && multiLang.get("105602BZCX-0008") + title: "缩略显示" + }, + showType: "list" + }); + } else { + this.setState({ + menuShowType: { + type: "icon-shituqiehuan", + //title: multiLang && multiLang.get("105602BZCX-0009") + title: "列表显示" + }, + showType: "card" + }); + } + }; + // 模糊查询输入内容变化 + onFuzzyChange(data) { + this.fuzzyKey = data; + let newQueryKey = {}; + let multiLang = this.props.MutiInit.getIntl(7010); + for (let child in this.queryKey) { + newQueryKey[child] = this.queryKey[child]; + } + newQueryKey.fuzzyQueryKey = data; + setTimeout( + (that, data) => { + if (data == that.fuzzyKey) { + requestApi.queryFuzzyKey({ + data: newQueryKey, + success: data => { + for (let childName in data.data) { + data.data[childName].value = + data.data[childName].value + "=" + that.fuzzyKey; + //701001RWCL-0061:包含 + data.data[childName].key = + data.data[childName].key + (multiLang && multiLang.get("701001RWCL-0061")) + that.fuzzyKey; + } + that.setState({ fuzzyquerychild: data.data }); + } + }); + } + }, + 500, + this, + data + ); + } + // 模糊查询选择 + onFuzzySelected(data) { + this.setState({ fuzzyquerychild: [] }); + // 更新查询条件 + this.queryKey.fuzzyQueryKey = data; + // 查询数据 + query.queryData.call(this); + } + searchClick(props, data, type) { + this.queryKey.querycondition = data; + + query.queryData.call(this); + this.fuzzyQueryFilter.queryFilterData(); + + } + // 复制列表数据 + copyData(data) { + let newData = {}; + newData.values = {}; + for (let child in data.values) { + newData.values[child] = { + display: data.values[child].display, + value: data.values[child].value, + scale: data.values[child].scale + }; + } + return newData; + } + // 双击列表行切换到卡片态浏览 + onRowDoubleClick = (values, idx, props, events) => { + requestApi.openBill({ + data: { + billtypeCode: values.billtypecode.value, + transtypeCode: values.transtypecode.value, + billid: values.busiid.value + }, + success: data => { + sscOpenTo(this.props, data.data.system, [ + data.data.url, { + ...data.data.data, + scene: "bzcx" + },null, + { + pk_group: values.pk_group.value + } + ]) + + } + }); + }; + + render() { + const { table, search, button } = this.props; + const { createSimpleTable } = table; + let { NCCreateSearch } = search; + let multiLang = this.props.MutiInit.getIntl(7010); + const { onRowDoubleClick } = this + + let isShow = type => { + if (this.state.showType == "list" && type == "list") { + return "show"; + } else if (this.state.showType == "card" && type == "card") { + return "show"; + } else { + return "hide"; + } + }; + + let addMoreOnOff = this.data.listRows.length > 0 && Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number) + + return ( + + + + {/* 不需要高级模糊查询功能 */} + {/* */} + + + + + + {NCCreateSearch(presetVar.searchArea, { + clickSearchBtn: this.searchClick.bind(this), + defaultConditionsNum: 1, + showAdvBtn: false, + // searchBtnName: multiLang && multiLang.get('105602BZCX-0024') + onAfterEvent: (...params) => { + if (params[5] == 'onchange') { + this.fuzzyQueryFilter.clearFilterData(); + } + } + })} + + + {this.fuzzyQueryFilter = obj}} + /> + +
+ {createSimpleTable(presetVar.list, { + showIndex: true, + lazyload: false, + onRowDoubleClick + })} + {/* "701003RWCX-0171":"滑动加载更多" */} +
{multiLang && multiLang.get('701003RWCX-0171')}
+
+
+ { + if (this.queryKey.isComplate == "true") { + return ["Print", "Copy"]; + } else { + return ["Print", "Copy", "RemindingApproval"]; + } + }} + /> +
{multiLang && multiLang.get('701003RWCX-0171')}
+
+ +
+
+ ); + } +} +SscSearch = createPage({ + mutiLangCode: "7010" +})(SscSearch); +export default SscSearch; + +/*QpJgyDAZxXnWG91XmXvE12IWxbRf7NDRjjmCn7nmLTg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/approvalrules.js b/src/ssctpaaa/sscsetting/approvalrules/config/approvalrules.js new file mode 100644 index 0000000..c5cc84b --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/approvalrules.js @@ -0,0 +1,163 @@ +/*ZlF39L4bqQsUkz4M2BtavViXrTL4LNjOlpHwsL82cYQ=*/ +import React, { Component } from "react"; +import { createPage, base, createPageIcon } from "nc-lightapp-front"; +import { initTemplate, buttonClick, afterEvent, query } from "./events"; +import Drawformlist from "./drawFormList" +import { Nav } from "ssccommon/components/global-nav"; +import "./index.less"; +import './index.css' +import SSCCenterRef from "../../../refer/sscbd/SSCUnitGridRef"; +import { + ProfileStyle, + ProfileHead, + ProfileBody, + ButtonGroup, + HeadCenterCustom, + ProfileSearch, + NonstandardButtonGroup +} from 'ssccommon/components/profile'; + +const { NCModal, NCButton, NCCheckbox, NCDiv } = base; + +class ApprovalRules extends Component { + constructor(props) { + super(props); + this.props = props; + this.formModalId = "formModal"; // 新增/编辑modal关闭 + this.formId = "approvalrules_card"; // 新增表单组件模板id + this.billtypeTableId = "billtypelist"; // 单据类型表格模板 + this.credit = '';//是否启用信用 + this.pk = []; //选中规则的pk + this.pk1 = ''; + this.creditState = '';//是否启用信用 + this.state = { + data: [], + SSCCenter: '', + showDisabled: false, // 显示停用 + enablestate: [],//管理每条规则的启用停用共享中心的状态 + checked: [], + implementDisabled: true,//立即执行按钮状态 + addDisabled: true //新增按钮状态 + }; + initTemplate.call(this, props); + } + + // 页面加载 + componentDidMount() { + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && query.onSSCCenterChange.call(this, JSON.parse(pk_sscunit)); + }, 300); + } + + render() { + let { + form: { createForm } + } = this.props; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + return ( +
+
+ ); + } +} + +let ApprovalRulesDom = createPage({ + mutiLangCode: '7010' +})(ApprovalRules); +export default ApprovalRulesDom; + +/*ZlF39L4bqQsUkz4M2BtavViXrTL4LNjOlpHwsL82cYQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/drawFormList.js b/src/ssctpaaa/sscsetting/approvalrules/config/drawFormList.js new file mode 100644 index 0000000..a2fa31e --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/drawFormList.js @@ -0,0 +1,390 @@ +/*XhWoruwxb5VE9PaqcFXglwML/zDq6k9SWGdwYRnnpZw=*/ +import React, {Component} from "react"; +import gxicon1 from "../../../public/image/gxicon1.png"; +import gxicon2 from "../../../public/image/gxicon2.png"; +import gxicon3 from "../../../public/image/gxicon3.png"; +import gxicon4 from "../../../public/image/gxicon4.png"; +import gxicon5 from "../../../public/image/gxicon5.png"; +import requestApi from "./requestApi"; +import query from "./events/query"; +import {createPage, base, createPageIcon, toast, getTheme} from "nc-lightapp-front"; + +const {NCPopconfirm, NCTableSwitch, NCCheckbox, NCModal, NCFormControl, NCDiv} = base; + +class Drawformlist extends Component { + constructor(props) { + super(props); + this.props = props; + this.parent = props.parent; + this.formId = "approvalrules_card"; // 新增表单组件模板id + this.billtypeTableId = "billtypelist"; // 单据类型表格模板 + this.tranctionTableId = "tradetypelist"; // 交易类型表格模板 + this.groupTableId = "orglist"; // 单位范围表格模板 + this.detailModalId = "detailModal"; // 详情modal + this.state = { + data: [], + showFormModal: false, // 新增/编辑表单模态显示 + editFormPk: "", // 当前编辑的form的pk + enablestate: true, + showDetailModal: false, // 详细表格显示 [单位范围,交易类型,单据类型] + modalType: {}, // 控制显示全部模态内容显示 控制显示 [单位范围,交易类型,单据类型] + checked: false, + isBlackTheme: null + } + getTheme().then((theme) => { + this.setState({ + isBlackTheme: theme == 'black' + }) + }) + } + + // 删除表单 + delForm = pk => { + let newData = this.props.data.filter(item => { + return pk === item.values.pk_approverule.value; + }); + let sscunitForm = {pk: pk}; + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + // 请求删除 + requestApi.delFormData({ + data: sscunitForm, + success: res => { + for (let i = 0; i < this.props.data.length; i++) { + switch (this.props.data[i].values.pk_approverule.value) { + case pk: + this.props.data.splice(i, 1); + this.setState({data: this.state.data}); + break; + } + } + // "701001RWCL-0042": "删除成功" + toast({title: multiLang && multiLang.get('701001RWCL-0042')}) + + } + }); + }; + // 修改表单 + editForm = (pk, amount, credit) => { + this.parent.setState({showFormModal: true, editFormPk: pk}); + let editFormItem = this.props.data.filter(item => { + return pk == item.values.pk_approverule.value; + }); + editFormItem = JSON.parse(JSON.stringify(editFormItem)); + this.parent.props.form.setAllFormValue({[this.formId]: {rows: editFormItem}}); + this.parent.props.form.setFormItemsValue(this.formId, { + 'amount': {value: amount, display: ''}, + 'credit': {display: '', value: credit} + }); + }; + //启用停用审批规则 + onChange = (pk) => { + // 请求启用/停止 + let newData = this.props.data.filter(item => { + return pk === item.values.pk_approverule.value; + }); + if (newData[0].values.enablestate.value != "1") { + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + requestApi.enableSSCUnit({ + data: { + pk: newData[0].values.pk_approverule.value, + enablestate: !this.parent.state.showDisabled, + sscunit: this.parent.state.SSCCenter.refpk + }, + success: res => { + this.parent.setState({ + data: res ? res[this.formId].rows : [], + }); + // "701001RWCL-0043": "启用成功" + toast({title: multiLang && multiLang.get('701001RWCL-0043')}) + } + }); + } + else { + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + requestApi.disableSSCUnit({ + data: { + pk: newData[0].values.pk_approverule.value, + enablestate: !this.parent.state.showDisabled, + sscunit: this.parent.state.SSCCenter.refpk + }, + success: res => { + this.parent.setState({ + data: res ? res[this.formId].rows : [], + }); + // "701001RWCL-0044": "停用成功" + toast({title: multiLang && multiLang.get('701001RWCL-0044')}) + } + }); + } + }; + //checkbox勾选事件 + changeCheck = (pk, e) => { + if (e) { + this.parent.pk.push(pk); + this.parent.pk1 = pk; + } else { + this.parent.pk1 = ''; + this.parent.pk.find((item, index) => { + if (item == pk) { + this.parent.pk.splice(index, 1) + } + }) + } + if (this.parent.pk.length > 0) { + this.props.implementDisabled(false) + } else { + this.props.implementDisabled(true) + } + } + // 渲染模态详情 + drawDetailModelContent = () => { + let {createEditTable} = this.parent.props.editTable; + switch (this.state.modalType.value) { + case this.tranctionTableId: + return createEditTable(this.tranctionTableId, { + showIndex: true + }); + case this.billtypeTableId: + return createEditTable(this.billtypeTableId, { + showIndex: true + }); + case this.groupTableId: + return createEditTable(this.groupTableId, { + showIndex: true + }); + } + }; + + // 关闭指定modal + closeModal(key) { + switch (key) { + case this.detailModalId: + this.setState({showDetailModal: false}); + break; + } + } + + render() { + let formList = []; + let imgList = [gxicon1, gxicon2, gxicon3, gxicon4, gxicon5]; + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + let detailModalContent = this.drawDetailModelContent(); + this.parent.state.data.map((item, index) => { + let billTypeArr = item.values.pk_billtype.display.split(","); + let displayArr = billTypeArr.slice(0, 3); // 单据类型默认显示3个 + let billTypeStr = displayArr.join(" ; "); + + let tranStr = ""; + if (item.values.pk_tradetype.display == "") { + tranStr = ""; + } else { + let tranctionArr = item.values.pk_tradetype.display.split(","); + let displayTranArr = tranctionArr.slice(0, 3); // 交易类型默认显示3个 + tranStr = displayTranArr.join(" ; "); + } + let groupArr = item.values.pk_org.display.split(","); + let displayGroupArr = groupArr.slice(0, 3); // 单位范围默认显示3个 + let groupStr = displayGroupArr.join(" ; "); + + //处理审批条件 + let formula = item.values.formula.value; + let str = formula.split(";"); + let amount = ''; + let credit = ''; + if (str[0].indexOf('amount') >= 0 && str.length != 3) { + //只有金额 + amount = str[0].substring(8, str[0].length); + } else if (str[0].indexOf('credit') >= 0 && str.length != 3) { + //只有信用 + credit = str[0].substring(8, str[0].length); + } else if (str[0].indexOf('amount') >= 0 && str.length == 3) { + //信用金额都有 + amount = str[0].substring(8, str[0].length); + credit = str[1].substring(8, str[1].length); + } + + const showDelBtn = item.values.enablestate.value !== '1', btnAreaClass = showDelBtn ? 'head-btn head-btn-del' : 'head-btn' + + formList.push( + +
+
+ + + {/*"701001RWCL-0174": "规则编码"*/} + {/*"701001RWCL-0175": "规则名称",*/} + + {index + 1}. + {multiLang && multiLang.get('701001RWCL-0174') + ':' + item.values.code.value} + + {multiLang && multiLang.get('701001RWCL-0175') + ':' + item.values.name.value} + + + + {/*"701004SPGZ_001": "确定启用审批规则",*/} + {/*"701004SPGZ_002": "确定停用审批规则"*/} + { + this.onChange(item.values.pk_approverule.value); + }} + > + + + + + + { + this.editForm(item.values.pk_approverule.value, amount, credit); + }} + >{/*"701001RWCL-0038": "修改"*/} + {multiLang && multiLang.get('701001RWCL-0038')} + + + {/*"701001RWCL-0039": "确认删除?"*/} + { + this.delForm(item.values.pk_approverule.value); + }} + > + {/*"7010-0002": "删除",*/} + {!showDelBtn ? '' : multiLang && multiLang.get('7010-0002')} + + + +
+
+
+ +
+ {/*"701001RWCL-0176": "审批条件",*/} + {multiLang && multiLang.get('701001RWCL-0176') + ':'} + + {/*{formula ? "报账单金额"+ amount+"且" + "报账人信用" + credit: ""}*/} + {amount ? (multiLang && multiLang.get('701001RWCL-0191') + "<=" + amount) : ""} + {/*{amount && credit ? "且 " : ""}*/} + {/*"701001RWCL-0191": "报账本币金额?",*/} + {/*"701001RWCL-0192": "报账人信用?",*/} + {this.parent.creditState && credit ? ( multiLang && multiLang.get('701001RWCL-0192') + ">=" + credit) : ""} + +
+ {/*"701001RWCL-0111":"【查看全部】"*/} +
+
+ {multiLang && multiLang.get('701001RWCL-0177')}: + {billTypeStr} + + {billTypeStr ? multiLang && multiLang.get('701001RWCL-0111') : ''} + +
+
+ {multiLang && multiLang.get('701001RWCL-0178') + ':'} + + {tranStr} + + {tranStr == "" ? ( + "" + ) : ( + + {tranStr ? multiLang && multiLang.get('701001RWCL-0111') : ''} + + )} +
+ + +
+
+ {/*"701001RWCL-0179": "单位范围",*/} + {/*"701001RWCL-0180": "包含下级单位",*/} +
+ {multiLang && multiLang.get('701001RWCL-0179') + ':'} + {groupStr} + {groupStr == "" ? ("") : ( + + {groupStr ? multiLang && multiLang.get('701001RWCL-0111') : ''} + + )} +
+
+ + {multiLang && multiLang.get('701001RWCL-0180') + ':'} + + + {item.values.iscontainslower && item.values.iscontainslower.value ? "是" : "否"} + +
+ +
+
+
+ ); + }); + return ( + + {formList} + {/*显示全部modal*/} + { + this.closeModal(this.detailModalId) + }} + backdrop={false} + > + + {this.state.detailModalTitle} + + + {detailModalContent} + + + + ); + } +} + +export default Drawformlist; +/*XhWoruwxb5VE9PaqcFXglwML/zDq6k9SWGdwYRnnpZw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/approvalrules/config/events/afterEvent.js new file mode 100644 index 0000000..8626f15 --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/events/afterEvent.js @@ -0,0 +1,13 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ + +export default function afterEvent(props, moduleId, key,changedrows, value,index,data) { + + switch(key) { + case 'pk_billtype' : + props.form.setFormItemsValue(this.formId, { + pk_tradetype: {} + }); + break; + } +}; +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/approvalrules/config/events/buttonClick.js new file mode 100644 index 0000000..e50edce --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/events/buttonClick.js @@ -0,0 +1,176 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from "../requestApi"; +import { toast,getTheme } from "nc-lightapp-front"; + +// 是否暗黑主题 +let isBlackTheme = null; +getTheme().then((theme) => { + isBlackTheme = theme == 'black'; +}) + +/** + * 新增按钮点击 + */ +let addButtonClick = function() { + // this.pk=""; + this.props.form.EmptyAllFormValue([this.formId]); + this.setState({ showFormModal: true, editFormPk: "" }, () => { + //新增弹框特殊样式 + // document.getElementsByClassName('name')[1].className += (" iconfont icon-jiantouyou"); + document.getElementsByClassName('name')[1].style.color = isBlackTheme ? '#b0b0b0' : '#111'; + // document.getElementsByClassName('name')[2].className += (" iconfont icon-jiantouyou"); + document.getElementsByClassName('name')[2].style.color = isBlackTheme ? '#b0b0b0' : '#111'; + }); +}; +/** + * 保存按钮点击 + */ +let saveFormButtonClick = function() { + let formData = this.props.form.getAllFormValue(this.formId); + let multiLang = this.props.MutiInit.getIntl(7010); + if(!this.props.form.isCheckNow(this.formId)){ + return; + } + let approvalrulesForm = { form: formData }; + console.log(approvalrulesForm.form.rows[0].values) + if (this.state.SSCCenter.refpk) { + approvalrulesForm.form.rows[0].values.pk_sscunit = this.state.SSCCenter.refpk + //根据是否有pk判断是新增保存或修改保存 + if (approvalrulesForm.form.rows[0].values.pk_approverule.value) { + if (approvalrulesForm.form.rows[0].values.amount.value == "") { + approvalrulesForm.form.rows[0].values.amount.value = null; + }if (approvalrulesForm.form.rows[0].values.credit.value == "") { + approvalrulesForm.form.rows[0].values.credit.value = null; + } + let updateData = approvalrulesForm.form.rows[0].values + if(updateData['enablestate'].value==1){ + updateData['enablestate'] = true; + }else { + updateData['enablestate'] = false; + } + requestApi.updateFormData({ + data: updateData, + success: res => { + this.setState({ + data: res ? res[this.formId].rows : [], + showFormModal: false + }); + } + }) + }else{ + if (approvalrulesForm.form.rows[0].values.amount.value == "") { + approvalrulesForm.form.rows[0].values.amount.value = null; + }if (approvalrulesForm.form.rows[0].values.credit.value == "") { + approvalrulesForm.form.rows[0].values.credit.value = null; + } + let saveData = approvalrulesForm.form.rows[0].values + saveData['enablestate'] = !this.state.showDisabled;// 新增规则默认启用 + requestApi.saveFormData({ + data: saveData, + success: res => { + this.setState({ + data: res ? res[this.formId].rows : [], + showFormModal: false + }); + // "701001RWCL-0118": "保存成功", + toast({ content: multiLang && multiLang.get('701001RWCL-0118'), color: 'success' }); + //找到新增项,页面滚动到对应位置 + res[this.formId].rows.find( (item,index) => { + if (item.values.code.value == approvalrulesForm.form.rows[0].values.code.value) { + // $('html,body').animate({scrollTop:$(".ssc-form:eq("+index+")").offset().top}, 800); + document.getElementsByClassName('ssc-form')[index].scrollIntoView(true) + } + }) + } + }); + } + }else{ + // "701004SPGZ_004": "请选择共享中心" + toast({ + duration: 2, // 消失时间,默认是3秒; 值为 infinity 时不消失,非必输 + color: 'danger', // 提示类别,默认是 "success",非必输 + content: multiLang && multiLang.get('701004SPGZ_004') // 提示内容,非必输 + }) + } + console.log(this.state.SSCCenter) + console.log(approvalrulesForm.form.rows[0].values) +}; +/** + * 取消按钮点击 + */ +let cancelFormButtonClick = function() { + this.setState({ showFormModal: false }); + this.props.form.EmptyAllFormValue([this.formId]); +}; +/** + * 立即执行按钮点击 + */ +let immediateExecution = function () { + let data = {"sscunit": this.state.SSCCenter.refpk, "rule": this.pk}; + let multiLang = this.props.MutiInit.getIntl(7010); + if (this.pk.length != 0 ) { + this.state.data.find( (item) => { + let ref = this.pk.find( (key) => { + if (item.values.pk_approverule.value == key) { + // "701004SPGZ_003": "已停用的审批规则不能执行", + if (item.values.enablestate.value == 2) { + toast({ + duration: 2, + color: 'danger', + content: multiLang && multiLang.get('701004SPGZ_003'), + }) + return false; + } + return true + } + }); + if ( ref && item.values.pk_approverule.value == this.pk1) { + //处理审批条件 + let formula = item.values.formula.value; + let str = formula.split(";"); + let amount = ''; + let credit = '' + if (str[0].indexOf('amount') >= 0 && str.length != 3) { + //只有金额 + amount = str[0].substring(8, str[0].length); + }else if (str[0].indexOf('credit') >= 0 && str.length != 3) { + //只有信用 + credit = str[0].substring(8, str[0].length); + }else if(str[0].indexOf('amount') >= 0 && str.length == 3) { + //信用金额都有 + amount = str[0].substring(8, str[0].length); + credit = str[1].substring(8, str[1].length); + } + if (!amount && !this.creditState) { + toast({ + duration: 2, // 消失时间,默认是3秒; 值为 infinity 时不消失,非必输 + color: 'danger', // 提示类别,默认是 "success",非必输 + content: '请修改规则,审批条件不能为空' // 提示内容,非必输 + }) + }else{ + requestApi.immediateExecution({ + data: data, + success: res => { + toast({ + duration: 2, // 消失时间,默认是3秒; 值为 infinity 时不消失,非必输 + color: 'success', // 提示类别,默认是 "success",非必输 + content: '执行成功' // 提示内容,非必输 + }) + } + }) + } + } + }) + }else{ + toast({ + duration: 2, // 消失时间,默认是3秒; 值为 infinity 时不消失,非必输 + color: 'danger', // 提示类别,默认是 "success",非必输 + content: '请选择一条规则来执行' // 提示内容,非必输 + }) + } + +} + +export default { addButtonClick, saveFormButtonClick, cancelFormButtonClick, immediateExecution }; + +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/events/index.js b/src/ssctpaaa/sscsetting/approvalrules/config/events/index.js new file mode 100644 index 0000000..a636aa6 --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/events/index.js @@ -0,0 +1,14 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick'; +import afterEvent from './afterEvent'; +import initTemplate from './initTemplate'; + +import query from './query' + +export { initTemplate,buttonClick, afterEvent,query}; + + + + + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/approvalrules/config/events/initTemplate.js new file mode 100644 index 0000000..7d1d09e --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/events/initTemplate.js @@ -0,0 +1,103 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import {getMultiLang} from 'nc-lightapp-front'; +import requestApi from "../requestApi"; + +export default function (props) { + const _this = this + props.createUIDom( + {}, + function (data) { + //获取多语 + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + let meta = data.template; + console.log(meta) + let BilltypeRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.BilltypeRefSqlBuilder'; + let TranstypeRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeRefSqlBuilder'; + let BusinessUnitRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.BusinessUnitRefSqlBuilder' + //根据单据类型过滤交易类型 + meta.approvalrules_card2.items.find((item) => { + if (item.attrcode == 'pk_billtype') { + item.refcode = '/uap/refer/riart/billtype/index.js' + item.queryCondition = function () { + return {GridRefActionExt: BilltypeRefSqlBuilder}; + } + } + if (item.attrcode === "pk_tradetype") { + item.queryCondition = function () { + let billtype = props.form.getFormItemsValue('approvalrules_card', 'pk_billtype'); + let data = billtype == null ? "" : billtype.value; + return {billtype: data, GridRefActionExt: TranstypeRefSqlBuilder}; + } + } + if (item.attrcode === "pk_org") { + item.refcode = "uapbd/refer/org/BusinessUnitTreeRef/index.js"; + item.isShowUnit = true; + item.isRunWithChildren = false; + item.unitProps = { + placeholder: json['701001RWCL-0078'],//701001RWCL-0078: + refName: json['701001RWCL-0078'], + refType: "tree", + refCode: "uapbd.org.GroupDefaultTreeRef", + queryTreeUrl: "/nccloud/uapbd/ref/GroupDefaultTreeRef.do", + rootNode: {refname: json['701001RWCL-0078'], refpk: "root"}, + } + item.queryCondition = function () { + let sscunit = _this.state.SSCCenter; + let data = sscunit.refpk == null ? "" : sscunit.refpk; + return {sscunit: data, TreeRefActionExt: BusinessUnitRefSqlBuilder}; + } + } + }) + meta.orglist.items.find((item) => { + if (item.attrcode == 'pk_org.code') { + item.attrcode = 'code' + } else if (item.attrcode == 'pk_org.name') { + item.attrcode = 'name' + } + }) + meta.tradetypelist.items.find((item) => { + if (item.attrcode == 'pk_tradetype.pk_billtypecode') { + item.attrcode = 'pk_billtypecode' + } else if (item.attrcode == 'pk_tradetype.billtypename') { + item.attrcode = 'billtypename' + } + }) + meta.billtypelist.items.find((item) => { + if (item.attrcode == 'pk_billtype.pk_billtypecode') { + item.attrcode = 'pk_billtypecode' + } else if (item.attrcode == 'pk_billtype.billtypename') { + item.attrcode = 'billtypename' + } + }) + //是否启用信用 + requestApi.query({ + data: {}, + success: data => { + _this.creditState = data; + if (!data) { + meta.approvalrules_card1.items.find((item) => { + if (item.attrcode == 'credit') { + item.visible = false + } + }) + props.form.setFormItemsRequired('approvalrules_card', {amount: true}); + } else { + meta.approvalrules_card1.items.find((item) => { + if (item.attrcode == 'credit') { + item.visible = true + } + }) + props.form.setFormItemsRequired('approvalrules_card', {amount: false}); + } + } + }); + // 设置表格编辑态 + meta["approvalrules_card"].status = 'edit'; + props.meta.setMeta(meta); + } + }) + }) +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/events/query.js b/src/ssctpaaa/sscsetting/approvalrules/config/events/query.js new file mode 100644 index 0000000..71869b5 --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/events/query.js @@ -0,0 +1,123 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from '../requestApi' + + +/** + * @Description:显示停用勾选 + * @param: + */ +let showDisabledChange = function(e) { + this.setState({ showDisabled: e }); + console.log(this.state.showDisabled) + if (this.state.SSCCenter.refpk) { + if (e) { + requestApi.ApproveRuleQry({ + data: { sscunit: this.state.SSCCenter.refpk, enablestate: this.state.showDisabled}, + success: res => { + this.setState({ + data: res ? res[this.formId].rows : [], + }); + } + }); + }else{ + requestApi.ApproveRuleQry({ + data: { sscunit: this.state.SSCCenter.refpk, enablestate: this.state.showDisabled}, + success: res => { + this.setState({ + data: res ? res[this.formId].rows : [], + }); + } + }); + } + } + +} + +/** + * @Description:查询单位明细范围 + * @param: + */ +let queryGroupDetails = function(item) { + let multiLang = this.parent.props.MutiInit.getIntl(7010); + let detailModalTitle = multiLang && multiLang.get('701001RWCL-0102'); + requestApi.queryGroupDetailTableData({ + data: { group: item.values.pk_org.value }, + success: (res) => { + //701001RWCL-0102:单位范围 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: detailModalTitle, value: this.groupTableId } }); + this.parent.props.editTable.setTableData(this.groupTableId, res[this.groupTableId]); + } + }) + +} +/** + * @Description:查询交易类型/单据类型明细 + */ + +let queryBillTypeDetails = function(item, key) { + let multiLang = this.parent.props.MutiInit.getIntl(7010); + let detailModalTitle = null; + switch (key) { + case this.tranctionTableId: + detailModalTitle = multiLang && multiLang.get('701001RWCL-0103') //交易类型 + requestApi.queryDetailTableData({ + data: { billtype: item.values.pk_tradetype.value, type: this.tranctionTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0103'):交易类型 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0103'), value: this.tranctionTableId } }); + this.parent.props.editTable.setTableData(key, res[this.tranctionTableId]); + } + }) + break; + case this.billtypeTableId: + detailModalTitle = multiLang && multiLang.get('701001RWCL-0104') //单据类型 + requestApi.queryDetailTableData({ + data: { billtype: item.values.pk_billtype.value, type: this.billtypeTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0104'):单据类型 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0104'), value: this.billtypeTableId } }); + this.parent.props.editTable.setTableData(key, res[this.billtypeTableId]); + } + }) + break; + } +} +/** + * @Description:查询详细信息 + * @param: + */ +let queryDetailTable = function(searchValue) { + let filterKey = []; + // 单据类型/交易类型查询 billtypename 单位范围查询name + this.state.modalType.value == this.groupTableId ? filterKey.push('name') :filterKey.push('billtypename') + this.props.editTable.setFiltrateTableData(this.state.modalType.value, filterKey, searchValue, false) +} + +/** + * 获取共享中心 + * + * */ +let onSSCCenterChange = function(ssc) { + if (ssc.hasOwnProperty('refpk')) { + // 选中操作 + this.setState({ + SSCCenter: ssc + }); + this.setState({addDisabled: false}); + requestApi.ApproveRuleQry({ + data: { sscunit: ssc.refpk, enablestate: !this.state.showDisabled}, + success: (data) => { + console.log(data) + this.setState({ + data: data ? data[this.formId].rows : [] + }); + } + }) + } else { + this.setState({ SSCCenter: {},data: [], addDisabled: true }); + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: ssc.hasOwnProperty('refpk') ? JSON.stringify(ssc) : ''}); +} +export default { onSSCCenterChange, showDisabledChange, queryGroupDetails, queryBillTypeDetails, queryDetailTable } +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/index.css b/src/ssctpaaa/sscsetting/approvalrules/config/index.css new file mode 100644 index 0000000..f4abcff --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/index.css @@ -0,0 +1,8 @@ +#approvalrules .itemText { + min-width: 170px; + max-width: calc(50% - 48px); +} + +#approvalrules .head-label { + width: calc(100% - 194px); +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/index.js b/src/ssctpaaa/sscsetting/approvalrules/config/index.js new file mode 100644 index 0000000..36bfdc5 --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import ApprovalRulesDom from './approvalrules'; +ReactDOM.render( + , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/index.less b/src/ssctpaaa/sscsetting/approvalrules/config/index.less new file mode 100644 index 0000000..e14207d --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/index.less @@ -0,0 +1,184 @@ +@import "~base"; +#approvalrules { + .title-search-detail { + margin-right: 25px; + } +} + +.container { + .itemText { + float: left; + margin-right: 10px; + } + .img { + position: absolute; + width: 30px; + height: 30px; + left: -45px; + margin: 5px 7px 0 0; + } + .billTypeName { + display: inline-block; + width: 495px; + } + .unitscope { + display: inline-block; + width: 495px; + } +} + +.content-wrap { + min-height: calc(100% - 12px); + background: rgba(255, 255, 255, 1); + box-shadow: 0px 1px 1px 0px rgba(74, 81, 93, 0.1); + border-radius: 3px; + .ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 10px; + } +} + +.content-wrap .rule-list-wrap { + padding-top: 20px; +} + +.content-wrap .ssc-form { + margin-bottom: 10px; + margin-left: 40px; + margin-right: 240px; + width: auto; + min-height: 150px; + background: rgba(255, 255, 255, 1); + //box-shadow:0px 1px 2px 0px rgba(200,200,200,0.5); + border-radius: 4px; + border: 1px solid rgba(206, 206, 206, 0.75); + .head-grow { + height: 40px; + font-size: 17px; + font-family: PingFangSC-Medium; + color: rgba(17, 17, 17, 1); + line-height: 40px; + background-color: #f3f3f3; + margin-bottom: 10px; + display: flex; + + img { + position: inherit; + width: 30px; + height: 30px; + margin: 5px 15px 5px 50px; + float: left; + } + + .head-label { + white-space: nowrap; + flex-grow: 1; + } + .head-label span { + font-size: 14px; + } + .head-btn { + min-width: 138px; + flex-grow: 0; + margin-right: 8px; + .btn { + margin-left: 22px; + font-size: 14px; + font-family: PingFangHK-Regular; + color: #007ACE; + line-height: 21px; + cursor: pointer; + outline: none; + } + } + .head-btn-del span.btn:nth-child(3) { + margin-right: 22px; + } + span.customer-label[aria-describedby="delConfirmId"] { + color: #007ACE; + } + } + .grow { + margin-bottom: 11px; + width: 100%; + height: auto; + font-size: 13px; + font-family: MicrosoftYaHei; + line-height: 21px; + position: relative; + padding: 0 53px; + .column-1-1 { + width: 100% + } + .grow-label-name { + //float:left; + width: 120px; + margin-right: 2px; + display: inline-block; + height: 21px; + text-align: right; + color: rgba(85, 85, 85, 1); + } + .label-value-all { + cursor: pointer + } + } +} + +.ssc_edit_modal_form { + margin-right: 30px; +} + +.u-switch { + display: inline-block !important; +} + +.checkBox { + position: absolute; + top: 2px; + left: 73px; +} + +//针对新增弹框特殊设计的样式 +#rule { + .nc-scrollElement-wrap { + margin-bottom: 25px; + } + .icon-shouqi { + display: none; + } + .form-item { + margin-top: 30px; + } + .operator { + .name { + //color: rgba(17,17,17,1); + font-weight: 500; + font-size: 13px; + margin-left: 8px; + outline: none; + } + a { + display: none; + } + } + .line-wrap:hover { + background-color: rgba(0, 0, 0, 0); + } + .line { + height: 1px; + padding-top: 2px; + margin-top: 5px; + color: #D9D9D9; + } + .u-modal-combine-body{ + padding-left: 30px; + } +} + + + + diff --git a/src/ssctpaaa/sscsetting/approvalrules/config/requestApi.js b/src/ssctpaaa/sscsetting/approvalrules/config/requestApi.js new file mode 100644 index 0000000..a8dd041 --- /dev/null +++ b/src/ssctpaaa/sscsetting/approvalrules/config/requestApi.js @@ -0,0 +1,133 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax} from 'nc-lightapp-front'; + +let requestApi = { + + //单据模板接口 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitTempletAction.do', + data: opt.data, + success: opt.success + }); + }, + + //信用是否启用查询接口 + query:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscapv/CreditStateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + //根据共享中心查询 + ApproveRuleQry: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleQryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存表单 + saveFormData:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleInsertAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 修改规则 + updateFormData:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleUpdateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + //立即执行 + immediateExecution:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleExecuteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + // 删除表单 + delFormData:(opt)=>{ + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleDeleteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + //停用 + disableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleEnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + //启用 + enableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleEnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + // 查询单位范围详细 + queryGroupDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/OrgsQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + // 查询交易类型/单据类型详细 + queryDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/BillTypeQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + +} +export default requestApi; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/clientage.js b/src/ssctpaaa/sscsetting/clientage/config/clientage.js new file mode 100644 index 0000000..d6e4323 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/clientage.js @@ -0,0 +1,241 @@ +/*UX2P8D6t8UhaTOrNPtG3flR1qutASx5OXJsch8cM6qg=*/ +import React, { Component } from 'react'; +import { createPage, base } from 'nc-lightapp-front'; +import { buttonClick, initTemplate, afterEvent,selectedChangeEvent, query } from './events'; +import dataModelChange from './events/dataModelChange'; +import { Nav } from 'ssccommon/components/global-nav' +import { ProfileStyle, ProfileHead, ProfileBody, BodyRight, HeadCenterCustom, ButtonGroup } from 'ssccommon/components/profile'; +import { EditTable } from 'ssccommon/components/table'; +import SSCCenterRef from '../../../refer/sscbd/SSCUnitGridRef' +import './index.less'; +const { NCCheckbox, NCModal, NCButton, NCFormControl } = base; + +class ClientageGrid extends Component { + constructor(props) { + super(props); + this.initTableData = []; // 表格数据,用于查询使用 + this.state = { + showModal:false, // 表单Model显示/隐藏 + searchValue:'', // 业务单元查询 + showDisabled: false, // 显示停用 + isEdit: false, // 编辑态/浏览态 + SSCCenter:{}, // 共享中心item + show: false, // 提示框状态 + height: '', // 提示框位置 + content: null //提示框内容 + } + this.content = null; + this.index = null; + this.json = {}; + this.enablestate = ''; // 启用状态 + this.showPopTimer = null + initTemplate.call(this, props); + } + + componentWillMount() { +        window.onbeforeunload = () => { +            let status = this.props.editTable.getStatus(window.presetVar.listArea); +            if (status === 'edit') { +                return ''; +            } +        } +    } + + // componentDidMount() {} + + onRowHover = (index) => { + let CommissionedArr = []; + let NotEntrustedArr = []; + let Commissioned = null; // 已委托 + let NotEntrusted = null; // 未委托 + for (let key in index.record.values) { + if (index.record.values.enablestate.value) { + this.enablestate = '已启用' + }else{ + this.enablestate = '已停用' + } + + if (index.record.values[key].value === true) { + if (this.json[key]) { + CommissionedArr.push(this.json[key]) + } + }else if (index.record.values[key].value === false) { + if (this.json[key]) { + NotEntrustedArr.push(this.json[key]) + } + } + } + Commissioned = CommissionedArr.map( (item,index) => { + if(index==CommissionedArr.length-1){ + return ( + {item} + ) + }else { + return ( + {item}、 + ) + } + }) + NotEntrusted = NotEntrustedArr.map( (item,index) => { + if(index==NotEntrustedArr.length-1){ + return ( + {item} + ) + }else { + return ( + {item}、 + ) + } + }) + + //获取鼠标位置 + let e = window.event; + this.setState({ + height: e.clientY + }) + let content = ( +
+
已委托关系:{Commissioned}
+
未委托关系:{NotEntrusted}
+
{'启用状态:' + this.enablestate}
+
+ ); + this.setState({content}) + + if (this.index === index.index) { + this.index = -1 + if(this.showPopTimer) clearTimeout(this.showPopTimer) + this.setState({show: false}) + }else{ + if(this.showPopTimer) clearTimeout(this.showPopTimer) + this.setState({show: false}) + this.index = index.index + this.showPopTimer = setTimeout(() => this.setState({show: true}), 800) + } + } + + render() { + let { form } = this.props; + let { createForm } = form; + let multiLang = this.props.MutiInit.getIntl(7010); + let { show } = this.state; + + const popStyle = { + transform: show ? 'scale(1)' : 'scale(0)' + } + return ( +
+
+ ) + } +} + +let ClientageDom = createPage({ + mutiLangCode: '7010' +})(ClientageGrid); +export default ClientageDom; +/*UX2P8D6t8UhaTOrNPtG3flR1qutASx5OXJsch8cM6qg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/clientage/config/events/afterEvent.js new file mode 100644 index 0000000..9980bf2 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/afterEvent.js @@ -0,0 +1,117 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +import { base } from "nc-lightapp-front"; +import requestApi from "../requestApi"; +let { NCMessage } = base; +export default function afterEvent(props, moduleId, key, changedrows, value, datas, data) { + let multiLang = props.MutiInit.getIntl(7010); + switch (moduleId) { + case window.presetVar.listArea: + switch (key) { + case "enablestate": + let tableData = props.editTable.getAllData(moduleId); + // 此处转换启用前端switch(true,false)和后端枚举不一致,暂时这么写 + tableData.rows = tableData.rows.filter(item => { + if (item.rowid === data.rowid) { + if (value) { + item.values.enablestate.value = 1; + } else { + item.values.enablestate.value = 2; + } + return [item]; + } + }); + // 此处转换启用前端switch(true,false)和后端枚举不一致,暂时这么写 + if (changedrows) { + // 启用 + requestApi.enable({ + data: { + head: tableData + }, + success: res => { + NCMessage.create({ content: multiLang && multiLang.get('701001RWCL-0043'), color: "success", position: "topRight" });//启用成功 + props.editTable.setValByKeyAndRowId(moduleId, data.rowid, "ts", { + value: res.sscwtgx.rows[0].values.ts.value, + }); + props.editTable.setValByKeyAndRowId(moduleId, data.rowid, "enablestate", { value: true }); + let tableData = this.props.editTable.getAllData(window.presetVar.listArea); + props.editTable.setTableData(window.presetVar.listArea, tableData); + this.setState({ tableData: tableData }); + } + }); + } else { + // 停用 + requestApi.disabled({ + data: { + head: tableData + }, + success: res => { + NCMessage.create({ content: multiLang && multiLang.get('701001RWCL-0044'), color: "success", position: "topRight" });//停用成功 + props.editTable.setValByKeyAndRowId(moduleId, data.rowid, "ts", { + value: res.sscwtgx.rows[0].values.ts.value, + }); + props.editTable.setValByKeyAndRowId(moduleId, data.rowid, "enablestate", { value: false }); + let nowData = this.props.editTable.getAllData(window.presetVar.listArea); + props.editTable.setTableData(window.presetVar.listArea, nowData); + this.setState({ tableData: tableData }); + } + }); + } + break; + case "pk_org": + let rowid = data.rowid; + // 联动业务单元编码 + props.editTable.setValByKeyAndRowId(moduleId, rowid, "pk_org.code", { + value: changedrows.hasOwnProperty('refcode') ?changedrows.refcode:'', + display: changedrows.hasOwnProperty('refcode') ? changedrows.refcode :'' + }); + // 联动业务单元所属集团 + props.editTable.setValByKeyAndRowId(moduleId, rowid, "pk_org.pk_group.name", { + value: changedrows.hasOwnProperty('values') ? changedrows.values.gname.value :'', + display:changedrows.hasOwnProperty('values') ? changedrows.values.gname.value :'' + }); + break; + default: + break; + } + break; + case window.presetVar.sscwtgx_form: + switch (key) { + case "pk_org": + let refcodeArr = []; + let gnameArr = []; + if (datas.length > 0) { + datas.map(item => { + refcodeArr.push(item.refcode); + if (item.values != undefined) { + if (item.values.gname != undefined) { + gnameArr.push(item.values.gname.value); + } + } + }); + // 业务单元联动业务单元编码 + props.form.setFormItemsValue(window.presetVar.sscwtgx_form, { + "pk_org.code": { value: "", display: refcodeArr.join(",") } + }); + // 业务单元联动业务单元所属集团 + props.form.setFormItemsValue(window.presetVar.sscwtgx_form, { + "pk_org.pk_group.name": { value: "", display: gnameArr.join(",") } + }); + }else { + // 业务单元联动业务单元编码 + props.form.setFormItemsValue(window.presetVar.sscwtgx_form, { + "pk_org.code": { value: "", display: "" } + }); + // 业务单元联动业务单元所属集团 + props.form.setFormItemsValue(window.presetVar.sscwtgx_form, { + "pk_org.pk_group.name": { value: "", display: "" } + }); + } + break; + default: + break; + } + default: + break; + } +} +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/clientage/config/events/buttonClick.js new file mode 100644 index 0000000..abf510f --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/buttonClick.js @@ -0,0 +1,232 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import { base, toast } from 'nc-lightapp-front'; +import requestApi from '../requestApi' +import { setTableExtendCol } from 'ssccommon/components/profile' +import dataModelChange from './dataModelChange' +import tableExtendButtonClick from './tableExtendButtonClick'; +import { promptBox } from "nc-lightapp-front" + +const { NCMessage } = base; + +/** + * @Author:gaoymf + * @Description:编辑按钮处理后事件 + * @Date: 16:12 2018/5/11 + * @param: + */ +let afterEdit = function() { + this.setState({ isEdit: true }); + this.props.button.setButtonVisible(['Reset', 'Add','Edit'], false); + this.props.button.setButtonVisible(['BatchDelete'], true); + //设置表格的扩展按钮列 + setTableExtendCol(this.props, this.props.meta.getMeta(), [{ + areaId: window.presetVar.listArea, + btnAreaId: window.presetVar.listBtnArea, + buttonVisible: (record, index) => { + return ['Delete'] + }, + onButtonClick: tableExtendButtonClick.bind(this) + }]); +} + + +/** + * @Author:gaoymf + * @Description:保存按钮处理后事件 + * @Date: 16:12 2018/5/11 + * @param: + */ +let afterSave = (that, data) => { + that.setState({ isEdit: false }); + that.props.button.setButtonVisible(['Reset', 'Add','Edit'], true); + that.props.button.setButtonVisible(['BatchDelete'], false); + that.props.meta.getMeta()[window.presetVar.listArea].items.pop(); + // 后台数据为空,返回值没有data.data + if (data.data == undefined) { + that.props.editTable.setTableData(window.presetVar.listArea, { rows: [] }); + } else { + let newData = dataModelChange.voToJson(data.data); + that.props.editTable.setTableData(window.presetVar.listArea, newData[window.presetVar.listArea]); + } + +} +/** + * @Author:yushuaif + * @Date: 2020/01/15 + * @param: + */ +let beforeSave = (props) => { + // 校验同一共享服务中心不能委托相同的业务单元 + let tableRows = props.editTable.getAllRows(window.presetVar.listArea); + let isExistOrg = [], pkOrgs = [], multiLang = props.MutiInit.getIntl(7010); + tableRows.forEach(row => { + if (pkOrgs.indexOf(row.values.pk_org.value) === -1) { + pkOrgs.push(row.values.pk_org.value) + } else { + isExistOrg.push(row.values.pk_org.display) + } + }) + if (isExistOrg.length) { + let content = multiLang && multiLang.get('701001RWCL-0072') + ':\n' + isExistOrg.forEach((txt, idx) => { + if (idx === isExistOrg.length - 1) { + content += txt + '。' + } else { + content += txt + ';\n' + } + }) + toast({ content, color: 'danger' })//同一共享服务中心下不能委托相同的业务单元 + return false + } + return 'exec' +} +/** + * 取消按钮处理后事件 + * @param {*} that + */ +let afterCancel = function() { + this.setState({ isEdit: false }); + this.props.button.setButtonVisible(['Reset', 'Add','Edit'], true); + this.props.button.setButtonVisible(['BatchDelete'], false); + this.props.meta.getMeta()[window.presetVar.listArea].items.pop(); +} +/** + * 批量删除按钮处理后事件 + * @param {*} that + */ +let batchDelete = function() { + let data = this.props.editTable.getCheckedRows(window.presetVar.listArea); + let arr = data.map(item => item.index); + this.props.editTable.deleteTableRowsByIndex(window.presetVar.listArea, arr); +} + + +/** + * @Author:gaoymf + * @Description:新增按钮点击 + * @Date: 16:12 2018/5/11 + * @param: + */ +let addClick = function() { + this.setState({ showModal: true }); + // 清空表单内容 + this.props.form.EmptyAllFormValue(window.presetVar.sscwtgx_form); + // 新增表单共享中心pk赋值 + this.props.form.setFormItemsValue(window.presetVar.sscwtgx_form, { 'pk_sscunit': { value: this.state.SSCCenter.refpk, display: null } }); +} +/** + * @Author:gaoymf + * @Description:表单保存 + * @Date: 16:12 2018/5/13 + * @param: + */ +let addFormSave = function() { + let flag = true; + // 关闭modal + flag = this.props.form.isCheckNow(window.presetVar.sscwtgx_form); + let multiLang = this.props.MutiInit.getIntl(7010); + if (flag) { + // 获得form数据 + let data = this.props.form.getAllFormValue(window.presetVar.sscwtgx_form); + // 校验同一共享服务中心不能委托相同的业务单元 + let tableRows = this.props.editTable.getAllRows(window.presetVar.listArea); + let isExistOrg = []; + tableRows.map((row) => { + data.rows[0].values.pk_org.value.indexOf(row.values.pk_org.value) > -1 && isExistOrg.push(row.values.pk_org.display); + }) + if (isExistOrg.length > 0) { + let content = multiLang && multiLang.get('701001RWCL-0072') + ':\n' + isExistOrg.forEach((txt, idx) => { + if (idx === isExistOrg.length - 1) { + content += txt + '。' + } else { + content += txt + ';\n' + } + }) + toast({ content, color: 'danger' })//同一共享服务中心下不能委托相同的业务单元 + } else { + // 设置新增状态 + data.rows[0].values.enablestate.value = 2; + requestApi.add({ + data: data, + success: (res) => { + let newres = dataModelChange.voToJson(res); + + let nowTableData = this.props.editTable.getAllData(window.presetVar.listArea); + let nowRows = nowTableData.rows.concat(newres.sscwtgx.rows); + nowTableData.rows = nowRows; + + this.props.editTable.setTableData(window.presetVar.listArea, nowTableData); + this.setState({ showModal: false }); + this.props.form.EmptyAllFormValue([window.presetVar.sscwtgx_form]); + } + }) + } + } +} + +/** + * @Author:gaoymf + * @Description:表单取消 + * @Date: 16:12 2018/5/13 + * @param: + */ +let addFormCancel = function() { + this.setState({ showModal: false }); + this.props.form.EmptyAllFormValue([window.presetVar.sscwtgx_form]); +} + + +/** + * @Author:gaoymf + * @Description:重置任务 + * @Date: 16:12 2018/5/14 + * @param: + */ +let resetTask = function() { + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + fieldid: 'reset', + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0077'),//"重置任务" + content: multiLang && multiLang.get('701001RWCL-0073'),//该操作会重置任务,请确定? + beSureBtnClick: ()=>{ + requestApi.resetTask({ + data: { + pk_sscunit : this.state.SSCCenter.refpk + }, + success: (res) => { + //701001RWCL-0075:重置完成,已重置,701001RWCL-0076:条任务 + //NCMessage.create({ content: (multiLang && multiLang.get('701001RWCL-0075'))+res.resetnum+(multiLang && multiLang.get('701001RWCL-0076')), color: 'success', position: 'bottomRight' }); + toast({ content: (multiLang && multiLang.get('701001RWCL-0075'))+res.resetnum+(multiLang && multiLang.get('701001RWCL-0076')), color:"success"}); + }, + error: (res) => { + console.log(res.message); + } + }) + } + }) +} + +/** + * @Author:gaoymf + * @Description:导航条点击 + * @Date: 16:12 2018/9/15 + * @param: + */ + +let handleTruncation = function(){ + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'), //"提示信息" + content: multiLang && multiLang.get('701001RWCL-0074'),//此操作会丢失本次修改,请确定? + beSureBtnClick: ()=>{ + this.refs.nav.linkByClickedIdx(); + } + }) +} + + +export default { afterEdit, beforeSave, afterSave, afterCancel, batchDelete, addClick, addFormSave, addFormCancel, resetTask,handleTruncation } +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/dataModelChange.js b/src/ssctpaaa/sscsetting/clientage/config/events/dataModelChange.js new file mode 100644 index 0000000..ad0996d --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/dataModelChange.js @@ -0,0 +1,25 @@ +/*Ri21IHu7A9hiIXn8PEqtajpiLnIiLte2KGIwfkD1+GA=*/ +let jsonToVo = (data) =>{ + data[window.presetVar.listArea].rows.map((one)=>{ + if(one.values.enablestate.value == true){ + one.values.enablestate.value=2; + }else{ + one.values.enablestate.value=3; + } + }) + return data; +} + +let voToJson = (data) =>{ + data[window.presetVar.listArea].rows.map((one)=>{ + if(one.values.enablestate.value == 2){ + one.values.enablestate={value:true}; + }else{ + one.values.enablestate={value:false}; + } + }) + return data; +} + +export default {jsonToVo, voToJson} +/*Ri21IHu7A9hiIXn8PEqtajpiLnIiLte2KGIwfkD1+GA=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/fixedTemplet.js b/src/ssctpaaa/sscsetting/clientage/config/events/fixedTemplet.js new file mode 100644 index 0000000..09f1b84 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/fixedTemplet.js @@ -0,0 +1,83 @@ +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ +export default { + button:[ + /* { + "area": 'btnArea', + "children":[ + { + "area":"listhead", + "children":[], + "id": "0001A41000000006J5B1", + "isenable":true, + "iskeyfunc":null, + "key":"Add", + "order":"0", + "parentCode":"head_group", + "title": "新增", + "type": "button_main" + }, + { + "area":"listhead", + "children":[], + "id": "0001A41000000006J5B2", + "isenable":true, + "iskeyfunc":null, + "key":"Edit", + "order":"1", + "parentCode":"head_group", + "title": "修改", + "type": "button_secondary" + }, + ], + "id": "1001ZG10000000000X4G", + "isenable":true, + "iskeyfunc":null, + "key":"head_group", + "order":"0", + "parentCode":null, + "title": "head_group", + "type": "buttongroup" + }, + { + "id": "0001A41000000006J5B1", + "type": "button_secondary", + "key": "Reset", + "title": "重置任务", + "area": 'btnArea', + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "Save", + "title": "保存", + "area": 'btnArea', + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_secondary", + "key": "Cancel", + "title": "取消", + "area": 'btnArea', + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_secondary", + "key": "BatchDelete", + "title": "删除", + "area": 'btnArea', + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "Delete", + "title": "删除", + "area": 'listbtnarea', + "children": [] + }*/ + ], +} +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/index.js b/src/ssctpaaa/sscsetting/clientage/config/events/index.js new file mode 100644 index 0000000..1dae864 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/index.js @@ -0,0 +1,9 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import afterEvent from './afterEvent'; +import selectedChangeEvent from './selectedChangeEvent'; +import buttonClick from './buttonClick'; +import initTemplate from './initTemplate'; +import query from './query'; +import tableExtendButtonClick from './tableExtendButtonClick'; +export { afterEvent,selectedChangeEvent, buttonClick, initTemplate, tableExtendButtonClick, query }; +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/clientage/config/events/initTemplate.js new file mode 100644 index 0000000..5bdb501 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/initTemplate.js @@ -0,0 +1,84 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import 'ssccommon/components/globalPresetVar'; +import {getMultiLang} from 'nc-lightapp-front' +import {query} from './index.js' + +export default function(props) { + const that = this + //变量设置规范 + window.presetVar = { + ...window.presetVar, + pageId: '700102WTGX_L', + sscwtgx_form:'sscwtgx_form', + listArea: 'sscwtgx', + btnArea: 'btnArea', + listBtnArea: 'listbtnarea' + }; + props.createUIDom({ + // pagecode: this.state.showModal == true ? window.presetVar.wtgx_form:window.presetVar.pageId, //页面id + // appid: ' ' //注册按钮的id + }, + (data)=>{ + getMultiLang({moduleId: 7010, domainName: 'ssctp',currentLocale: 'zh-CN', callback: (json) => { + //createUIDom第一次加载是异步加载,以后F5刷新会走缓存 + // window.setTimeout(() => { + let meta = data.template; + let obj = {}; + meta['sscwtgx'].items.find( (item) => { + if (item.visible && item.attrcode != "enablestate") { + obj[item.attrcode] = item.label + } + if (item.attrcode == "enablestate") { + item.onPopconfirmCont = json['701001RWCL-0189'] + item.offPopconfirmCont = json['701001RWCL-0190'] + } + }); + this.json = obj; + //设置新增form编辑态 + meta[window.presetVar.sscwtgx_form].status = 'edit'; + //设置区域模板 + props.meta.setMeta(meta); + //设置按钮模板 + props.button.setButtons(data.button); + meta.sscwtgx_form.items.find((item)=>{ + if(item.attrcode === "pk_org"){ + item.isShowUnit = true; + item.isMultiSelectedEnabled = true; + item.unitProps = { + placeholder: json['701001RWCL-0078'],//701001RWCL-0078:集团(所有) + refName: json['701001RWCL-0078'], + refType: "tree", + refCode: "uapbd.org.GroupDefaultTreeRef", + queryTreeUrl: "/nccloud/uapbd/ref/GroupDefaultTreeRef.do", + rootNode: { refname: json['701001RWCL-0078'], refpk: "root" }, + } + // item.defaultUnitValue={ refname: '123',refpk: '345'} + } + }) + //设置按钮行为为弹窗 + // props.button.setPopContent('Delete','确认要删除该信息吗?') /* 设置操作列上删除按钮的弹窗提示 */ + //设置按钮的初始可见性 + props.button.setButtonVisible(['Add', 'Edit', 'Reset'], true); + // props.button.setButtonVisible(['head_group', 'Reset'], true); + props.button.setButtonVisible(['Save', 'Cancel', 'BatchDelete'], false); + //设置按钮的禁用 + // props.button.setButtonDisabled(['Add', 'Edit', 'Reset'], true); + props.button.setButtonDisabled(['Add', 'Edit', 'Reset'], true); + + // 表格上鼠标移出事件 + Array.from(document.querySelectorAll('.u-table-fixed')).forEach((scrollTarget) => { + scrollTarget.addEventListener('mouseleave', ev => { + // ev = ev || window.event; + if (that.showPopTimer) clearTimeout(that.showPopTimer) + that.setState({show: false}) + that.index = -1 + }) + }) + + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + if(pk_sscunit) query.onSSCCenterChange.call(that, JSON.parse(pk_sscunit)); + }}) + } + ) +} +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/query.js b/src/ssctpaaa/sscsetting/clientage/config/events/query.js new file mode 100644 index 0000000..00574dd --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/query.js @@ -0,0 +1,86 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from "../requestApi"; +import dataModelChange from "./dataModelChange"; +// 查询项对应的pk +function getSearchPkClientage(searchValue){ + let pk_ssclientage = ''; + if(searchValue!==''){ + let pkArr = []; + let tableRows = this.initTableData.rows; + // let tableRows = this.props.editTable.getAllRows(window.presetVar.listArea); + tableRows.filter((row) => { + if (row.values.pk_org.display.indexOf(searchValue) > -1) { + pkArr.push(row.values.pk_ssclientage.value); + } + }) + if(pkArr.length>0){ + pk_ssclientage = pkArr.join(","); + }else { + return '00000000'; + } + } + return pk_ssclientage; +} + + +//共享中心改变事件 +let onSSCCenterChange = function(e) { + this.setState({ SSCCenter: e,searchValue: '',showDisabled:false }, () => { + if (e.hasOwnProperty('refpk')) { + let req = { pk: e.refpk, showDisabled: this.state.showDisabled,searchCondition :"" }; + queryTableData.call(this, req); + } else { + this.props.editTable.setTableData(window.presetVar.listArea, { rows: [] }); + this.props.button.setButtonDisabled(['Add', 'Edit', 'Reset'], true); + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: e.hasOwnProperty('refpk') ? JSON.stringify(e) : ''}); + }); +}; +/** + * 显示停用复选框勾选事件 + * @param {*} e + */ +let showDisabledChange = function(e) { + this.setState({ showDisabled: e }); + // 更改状态 + if(this.state.SSCCenter.hasOwnProperty('refpk')){ + //选中共享中心 执行查询 + let pk_ssclientages = getSearchPkClientage.call(this,this.state.searchValue); + let req = { pk: this.state.SSCCenter.refpk, showDisabled: e,searchCondition: pk_ssclientages}; + queryTableData.call(this, req); + } +}; + +/** + * 查询业务单元内容改变事件 + * @param {*} searchValue + */ +let searchTime = null; +let searchAreaChange = function(searchValue) { + this.setState({ searchValue: searchValue }); + + clearTimeout(searchTime); + searchTime = setTimeout(()=>{ + this.props.editTable.setFiltrateTableData(window.presetVar.listArea, ['pk_org', 'pk_org.code'], searchValue, false) + }, 500); +}; + +// 查询表数据 req:请求参数 +let queryTableData = function(req) { + requestApi.queryTableData({ + data: req, + success: res => { + if (res) { + let resNew = dataModelChange.voToJson(res); + this.props.editTable.setTableData(window.presetVar.listArea, resNew[window.presetVar.listArea]); + this.initTableData = resNew[window.presetVar.listArea]; + } else { + this.props.editTable.setTableData(window.presetVar.listArea, { rows: [] }); + } + this.props.button.setButtonDisabled(['Add', 'Edit', 'Reset'], false); + } + }); +}; +export default { onSSCCenterChange, showDisabledChange, searchAreaChange, queryTableData }; +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/selectedChangeEvent.js b/src/ssctpaaa/sscsetting/clientage/config/events/selectedChangeEvent.js new file mode 100644 index 0000000..c3ce536 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/selectedChangeEvent.js @@ -0,0 +1,10 @@ +/*5iXQH/CJwU21aKg9goGu6iyetoLmrB7d3boG2lM1QCw=*/ +export default function selectedChangeEvent(props, moduleId, newVal, oldVal) { + console.log('selectedChangeEvent',props,moduleId,newVal,oldVal); + if(newVal>0){ + props.button.setButtonDisabled(['BatchDelete'], false); + }else { + props.button.setButtonDisabled(['BatchDelete'], true); + } +} +/*5iXQH/CJwU21aKg9goGu6iyetoLmrB7d3boG2lM1QCw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/events/tableExtendButtonClick.js b/src/ssctpaaa/sscsetting/clientage/config/events/tableExtendButtonClick.js new file mode 100644 index 0000000..151ac93 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/events/tableExtendButtonClick.js @@ -0,0 +1,23 @@ +/*ftMVHn90Wklge8LW19nRRZY+V69Lomh4Egnv/oC6QaLjFUOsrhPJCK7CcVE6BSh9*/ +/** + * 表格扩展按钮click事件 + */ +function tableExtendButtonClick() { + return { + ['Delete']: (record, index) => { + this.props.editTable.delRow(window.presetVar.listArea, index); + //退出对应行的tips提示 + if (this.showPopTimer) clearTimeout(this.showPopTimer) + this.setState({ + show: false + }) + this.index = -1 + + const disabled = !(this.props.editTable.getCheckedRows(window.presetVar.listArea).length > 0) + this.props.button.setButtonDisabled({BatchDelete: disabled}) + } + } +} + +export default tableExtendButtonClick; +/*ftMVHn90Wklge8LW19nRRZY+V69Lomh4Egnv/oC6QaLjFUOsrhPJCK7CcVE6BSh9*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/index.js b/src/ssctpaaa/sscsetting/clientage/config/index.js new file mode 100644 index 0000000..0782ca8 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/index.js @@ -0,0 +1,6 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import ClientageDom from './clientage'; +ReactDOM.render( , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/index.less b/src/ssctpaaa/sscsetting/clientage/config/index.less new file mode 100644 index 0000000..140ee37 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/index.less @@ -0,0 +1,58 @@ +.showOff { + // margin-top: 7px; + font-size: 13px; + // font-family: "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "SimSun", "sans-serif"; + color: #333; + margin-left: 6px; +} + +.nc-singleTable-header-area { + border-bottom: 0px solid #edecec !important; +} + +.ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 10px; +} + +#clientage { + .u-checkbox-label:before { + top: 0; + } + .nc-single-table { + height: 91%; + } + h2.title-search-detail { + margin-right: 20px !important; + font-size: 16px; + font-weight: bold; + color: #111111; + } + + #pop { + padding: 9px 14px; + background: #fff; + border: 1px solid #ccc; + border-radius: 6px; + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + z-index: 100; + transform: scale(0); + transition: .2s; + .popItem { + margin: 10px; + } + } +} + +.ssc_edit_modal_form { + margin-right: 30px; +} + +.combine { + .u-modal-body { + padding-bottom: 88px !important; + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/clientage/config/requestApi.js b/src/ssctpaaa/sscsetting/clientage/config/requestApi.js new file mode 100644 index 0000000..c767da5 --- /dev/null +++ b/src/ssctpaaa/sscsetting/clientage/config/requestApi.js @@ -0,0 +1,119 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { ajax } from 'nc-lightapp-front'; + +let requestApiOverwrite = { + // 表模板初始化查询 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageTempletAction.do', + data: opt.data, + success: opt.success + }); + }, + // 树节点对应业务节点查询 + queryTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageQueryRelationAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 新增 + add: (opt) => { + opt.data = { + head: opt.data + } + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageAddRelationAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存 + save: (opt) => { + opt.data = { + head: opt.data + } + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageSaveRelationAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存 + saveForm: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageSaveRelationAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 删除 + del: (opt) => { + opt.data = { + head: opt.data + }; + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageDelRelationAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }); + }, + // 启用 + enable: (opt) => { + // opt.data = { + // head: opt.data + // } + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageEnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + // 停用 + disabled: (opt) => { + // opt.data = { + // head: opt.data + // } + ajax({ + url: '/nccloud/ssctp/sscbd/ClientageDisableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }); + }, + // 重置任务 + resetTask: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskResetNoApproveTaskAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + } +} + +export default requestApiOverwrite; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/dispatchrules.js b/src/ssctpaaa/sscsetting/dispatchrules/config/dispatchrules.js new file mode 100644 index 0000000..48a0c94 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/dispatchrules.js @@ -0,0 +1,154 @@ +/*Xa1LAZ6Zd2wpAYFNLMjJrugggzKuA+iaoGGpNW+y87o=*/ +import React, { Component } from "react"; +import { createPage, base, createPageIcon } from "nc-lightapp-front"; +import { initTemplate, buttonClick, afterEvent, query } from "./events"; +import Drawformlist from "./drawFormList" +import { Nav } from "ssccommon/components/global-nav"; +import "./index.less"; +import './index.css' +import SSCCenterRef from "../../../refer/sscbd/SSCUnitGridRef"; +import { + ProfileStyle, + ProfileHead, + ProfileBody, + ButtonGroup, + HeadCenterCustom, + ProfileSearch, + NonstandardButtonGroup +} from 'ssccommon/components/profile'; + +const { NCModal, NCButton, NCCheckbox, NCDiv } = base; + +class Dispatchrules extends Component { + constructor(props) { + super(props); + this.props = props; + this.formModalId = "formModal"; // 新增/编辑modal关闭 + this.formId = "dispatchrule_form"; // 新增表单组件模板id + this.billtypeTableId = "billtypelist"; // 单据类型表格模板 + this.credit = '';//是否启用信用 + this.pk = []; //选中规则的pk + this.pk1 = ''; + this.creditState = '';//是否启用信用 + this.state = { + data: [], + SSCCenter: {}, + showDisabled: false, // 显示停用 + enablestate: [],//管理每条规则的启用停用共享中心的状态 + checked: [], + implementDisabled: true,//立即执行按钮状态 + addDisabled: true, //新增按钮状态 + editFormValues: {}, + showFormModal: false, // 新增/编辑表单模态显示 + }; + initTemplate.call(this, props); + } + + // 页面加载 + componentDidMount() { + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && query.onSSCCenterChange.call(this, JSON.parse(pk_sscunit)); + }, 300); + } + + render() { + let { + form: { createForm } + } = this.props; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + return ( +
+
+ ); + } +} + +Dispatchrules = createPage({ + mutiLangCode: '7010' +})(Dispatchrules); +export default Dispatchrules; + +/*Xa1LAZ6Zd2wpAYFNLMjJrugggzKuA+iaoGGpNW+y87o=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/drawFormList.js b/src/ssctpaaa/sscsetting/dispatchrules/config/drawFormList.js new file mode 100644 index 0000000..a078081 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/drawFormList.js @@ -0,0 +1,316 @@ +/*XhWoruwxb5VE9PaqcFXglwML/zDq6k9SWGdwYRnnpZw=*/ +import React, { Component } from "react"; +import gxicon1 from "../../../public/image/gxicon1.png"; +import gxicon2 from "../../../public/image/gxicon2.png"; +import gxicon3 from "../../../public/image/gxicon3.png"; +import gxicon4 from "../../../public/image/gxicon4.png"; +import gxicon5 from "../../../public/image/gxicon5.png"; +import requestApi from "./requestApi"; +import {initConfig} from './events/afterEvent' +import { createPage, base, createPageIcon, toast, getTheme } from "nc-lightapp-front"; + +const { NCPopconfirm, NCTableSwitch, NCCheckbox, NCModal, NCFormControl, NCDiv } = base; + +class Drawformlist extends Component { + constructor(props) { + super(props); + this.props = props; + this.parent = props.parent; + this.formId = "dispatchrule_form"; // 新增表单组件模板id + this.billtypeTableId = "billtypelist"; // 单据类型表格模板 + this.tranctionTableId = "tradetypelist"; // 交易类型表格模板 + this.groupTableId = "orglist"; // 单位范围表格模板 + this.detailModalId = "detailModal"; // 详情modal + this.state = { + data: [], + editFormPk: "", // 当前编辑的form的pk + enablestate: true, + showDetailModal: false, // 详细表格显示 [单位范围,交易类型,单据类型] + modalType: {}, // 控制显示全部模态内容显示 控制显示 [单位范围,交易类型,单据类型] + checked: false, + isBlackTheme: null + } + getTheme().then((theme) => { + this.setState({ + isBlackTheme: theme == 'black' + }) + }) + } + + // 删除表单 + delForm = (values) => { + let data = { + pk_intellidispatchrule: values.pk_intellidispatchrule.value, + ts: values.ts.value, + } + requestApi.delFormData({ + data: data, + success: res => { + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + this.deleteByRow(values.pk_intellidispatchrule.value); + // "701001RWCL-0042": "删除成功" + toast({ title: multiLang && multiLang.get('701001RWCL-0042') }) + + } + }); + }; + // 修改表单 + editForm = (values) => { + this.parent.setState({ showFormModal: true}); + let newValues = JSON.parse(JSON.stringify(values)); + this.parent.props.form.setAllFormValue({ [this.formId]: { rows: [{values: newValues}]}}); + initConfig.call(this.parent, this.parent.props); + }; + + + updateByRow = (data) => { + let values = data && data.dispatchrule_form && data.dispatchrule_form.rows && data.dispatchrule_form.rows[0] && data.dispatchrule_form.rows[0].values; + let pageData = this.parent.state.data; + if(pageData && values){ + pageData.find((item, index) => { + let valuesOne = item.dispatchrule_form.rows[0].values; + if(valuesOne.pk_intellidispatchrule.value == values.pk_intellidispatchrule.value){ + item.dispatchrule_form.rows[0].values = values; + this.parent.setState({data: pageData}); + return; + } + }); + } + } + + deleteByRow=(pk_intellidispatchrule)=>{ + let pageData = this.parent.state.data; + pageData.find((item, index) => { + if (item) { + let valuesOne = item.dispatchrule_form.rows[0].values; + if(valuesOne.pk_intellidispatchrule.value == pk_intellidispatchrule){ + pageData.splice(index, 1); + this.parent.setState({data: pageData}); + return; + } + } + }); + } + + //启用停用审批规则 + onChange = (values) => { + // 请求启用/停止 + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + requestApi.enableSSCUnit({ + data: { + pk_intellidispatchrule: values.pk_intellidispatchrule.value, + ts: values.ts.value + }, + success: res => { + this.updateByRow(res); + if (values.enablestate.value === '3') { + toast({ title: multiLang && multiLang.get('7010-0014') }) + } else { + toast({ title: multiLang && multiLang.get('7010-0015') }) + } + } + }); + }; + // 渲染模态详情 + drawDetailModelContent = () => { + let { createEditTable } = this.parent.props.editTable; + switch (this.state.modalType.value) { + case this.tranctionTableId: + return createEditTable(this.tranctionTableId, { + showIndex: true + }); + case this.billtypeTableId: + return createEditTable(this.billtypeTableId, { + showIndex: true + }); + case this.groupTableId: + return createEditTable(this.groupTableId, { + showIndex: true + }); + } + }; + + // 关闭指定modal + closeModal(key) { + switch (key) { + case this.detailModalId: + this.setState({ showDetailModal: false }); + break; + } + } + + render() { + let formList = []; + let imgList = [gxicon1, gxicon2, gxicon3, gxicon4, gxicon5]; + let multiLang = this.parent.props.MutiInit.getIntl(7010); //this.moduleId + let detailModalContent = this.drawDetailModelContent(); + this.parent.state.data && this.parent.state.data.map((item, index) => { + item = item.dispatchrule_form.rows[0]; + // 处理作业组 + let showWorkgroup = item.values.pk_managelevel.value == '10' ? true : false; + let workgroupArrStr = ''; + if (showWorkgroup) { + let workgroupArr = item.values.workgroup && (item.values.workgroup.display ? item.values.workgroup.display.split(",") : (item.values.workgroup.value ? item.values.workgroup.value.split(",") : '')); + // let displayArr = workgroupArr.slice(0, 3); // 默认显示3个 + workgroupArrStr = workgroupArr && workgroupArr.join(" ; "); + } + formList.push( + +
+
+ + + {/*"700108PDGZ-001": "规则编码"*/} + {/*"700108PDGZ-002": "规则名称",*/} + + {index + 1}. + {multiLang && multiLang.get('700108PDGZ-001') + ':' + item.values.code.value} + + {(multiLang && multiLang.get('700108PDGZ-002')) + ':' + (item.values.name.display ? item.values.name.display : item.values.name.value)} + + + + {/*"700108PDGZ-008": "确定启用派单规则",*/} + {/*"700108PDGZ-009": "确定停用派单规则"*/} + { + this.onChange(item.values); + }} + > + + + + + + { + this.editForm(item.values); + }} + >{/*"700108PDGZ-010": "修改"*/} + {multiLang && multiLang.get('700108PDGZ-010')} + + + {/*"700108PDGZ-011": "确认删除?"*/} + { + this.delForm(item.values); + }} + > + {/*"700108PDGZ-012": "删除",*/} + {item.values.enablestate.value === '1' ? '' : multiLang && multiLang.get('700108PDGZ-012')} + + + +
+
+ {/*"700108PDGZ-003": "按工作日历派单",*/} + {/*"7010-0011": "是",*/} + {/*"7010-0012": "否",*/} +
+ + {multiLang && multiLang.get('700108PDGZ-003') + ':'} + + + {item.values.enablecalendar && item.values.enablecalendar.value ? (multiLang && multiLang.get('7010-0011')) : (multiLang && multiLang.get('7010-0012'))} + +
+ {/*"700108PDGZ-004": "工作日历",*/} +
+ {multiLang && multiLang.get('700108PDGZ-004') + ':'} + {item.values.pk_workcalendar && (item.values.pk_workcalendar.display ? item.values.pk_workcalendar.display : item.values.pk_workcalendar.value)} +
+ {/*"700108PDGZ-005": "任务分配规则",*/} +
+ {multiLang && multiLang.get('700108PDGZ-005') + ':'} + {item.values.dispatchtype && (item.values.dispatchtype.display ? item.values.dispatchtype.display : item.values.dispatchtype.value)} +
+
+
+ {/*"700108PDGZ-006": "管理层级",*/} +
+ {multiLang && multiLang.get('700108PDGZ-006') + ':'} + {item.values.pk_managelevel && (item.values.pk_managelevel.display ? item.values.pk_managelevel.display : item.values.pk_managelevel.value)} +
+ {/*"700108PDGZ-007": "作业组范围",*/} + {/*"700108PDGZ-013": "【查看全部】",*/} + {showWorkgroup ? +
+ {multiLang && multiLang.get('700108PDGZ-007')}: + {workgroupArrStr} + {/* + {workgroupArrStr ? multiLang && multiLang.get('700108PDGZ-007') : ''} + */} +
+ : null} +
+
+ {/*"700108PDGZ-006": "派单阈值",*/} +
+ + {multiLang && multiLang.get('700108PDGZ-016') + ':'} + + + { + item.values.limitnumber + && item.values.limitnumber.value + } + +
+
+
+
+ ); + }); + return ( + + {formList} + {/*显示全部modal*/} + { + this.closeModal(this.detailModalId) + }} + backdrop={false} + > + + {this.state.detailModalTitle} + + + {detailModalContent} + + + + ); + } +} + +export default Drawformlist; +/*XhWoruwxb5VE9PaqcFXglwML/zDq6k9SWGdwYRnnpZw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/dispatchrules/config/events/afterEvent.js new file mode 100644 index 0000000..3983954 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/events/afterEvent.js @@ -0,0 +1,42 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ + +export default function afterEvent(props, moduleId, key, changedrows, value, index, data) { + + switch (key) { + case 'pk_managelevel': // 管理层级 + if (changedrows.value == '10') { + // 作业组 + props.form.setFormItemsDisabled(this.formId, { workgroup: false }); + props.form.setFormItemsRequired(this.formId, { workgroup: true }); + } else { + props.form.setFormItemsDisabled(this.formId, { workgroup: true }); + props.form.setFormItemsValue(this.formId, { workgroup: {value: '', display: ''} }); + props.form.setFormItemsRequired(this.formId, { workgroup: false }); + } + break; + case 'enablecalendar': // 是否按工作日历 + if (changedrows.value) { + // 作业组 + props.form.setFormItemsDisabled(this.formId, { pk_workcalendar: false }); + props.form.setFormItemsRequired(this.formId, { pk_workcalendar: true }); + } else { + props.form.setFormItemsDisabled(this.formId, { pk_workcalendar: true }); + props.form.setFormItemsValue(this.formId, { pk_workcalendar: {value: '', display: ''} }); + props.form.setFormItemsRequired(this.formId, { pk_workcalendar: false }); + } + break; + } +}; +/** + * 初始化页面状态 + * @param {*} props + */ +export function initConfig(props) { + // 管理层级 + let pk_managelevel = props.form.getFormItemsValue(this.formId, 'pk_managelevel'); + // 是否按工作日历 + let enablecalendar = props.form.getFormItemsValue(this.formId, 'enablecalendar'); + afterEvent.call(this, props, this.formId, 'pk_managelevel', pk_managelevel); + afterEvent.call(this, props, this.formId, 'enablecalendar', enablecalendar); +} +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/dispatchrules/config/events/buttonClick.js new file mode 100644 index 0000000..4577bbe --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/events/buttonClick.js @@ -0,0 +1,107 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from "../requestApi"; +import { toast, getTheme } from "nc-lightapp-front"; + +import {initConfig} from './afterEvent' + +// 是否暗黑主题 +let isBlackTheme = null; +getTheme().then((theme) => { + isBlackTheme = theme == 'black'; +}) + +/** + * 新增按钮点击 + */ +let addButtonClick = function () { + // this.pk=""; + this.props.form.EmptyAllFormValue([this.formId]); + this.setState({ showFormModal: true, editFormPk: "" }, () => { + initConfig.call(this, this.props); + }); +}; +/** + * 保存按钮点击 + */ +let saveFormButtonClick = function () { + let formData = this.props.form.getAllFormValue(this.formId); + let multiLang = this.props.MutiInit.getIntl(7010); + if (!this.props.form.isCheckNow(this.formId)) { + return; + } + let approvalrulesForm = { head: formData }; + if (this.state.SSCCenter.refpk) { + // 更新共享中心 + approvalrulesForm.head.rows[0].values.pk_sscunit = { value: this.state.SSCCenter.refpk }; + // 更新前后端不一致内容 + approvalrulesForm.head.rows[0].values.dispatchlimit.value ? approvalrulesForm.head.rows[0].values.dispatchlimit.value = 'Y' : approvalrulesForm.head.rows[0].values.dispatchlimit.value = 'N'; + approvalrulesForm.head.rows[0].values.enablecalendar.value ? approvalrulesForm.head.rows[0].values.enablecalendar.value = 'Y' : approvalrulesForm.head.rows[0].values.enablecalendar.value = 'N'; + approvalrulesForm.head.rows[0].values.enablestate.value = '2'; + + //根据是否有pk判断是新增保存或修改保存 + if (approvalrulesForm.head.rows[0].values.pk_intellidispatchrule.value) { + let pk = approvalrulesForm.head.rows[0].values.pk_intellidispatchrule.value; + requestApi.updateFormData({ + data: approvalrulesForm, + success: res => { + updateByRow.call(this,res, pk); + } + }) + } else { + requestApi.saveFormData({ + data: approvalrulesForm, + success: res => { + updateByRow.call(this,res); + } + }) + } + } else { + // "701004SPGZ_004": "请选择共享中心" + toast({ + duration: 2, // 消失时间,默认是3秒; 值为 infinity 时不消失,非必输 + color: 'danger', // 提示类别,默认是 "success",非必输 + content: multiLang && multiLang.get('701004SPGZ_004') // 提示内容,非必输 + }) + } +}; +/** + * 取消按钮点击 + */ +let cancelFormButtonClick = function () { + this.setState({ showFormModal: false }); + this.props.form.EmptyAllFormValue([this.formId]); +}; + +let updateByRow = function (data, pk) { + let values = data && data.dispatchrule_form && data.dispatchrule_form.rows && data.dispatchrule_form.rows[0] && data.dispatchrule_form.rows[0].values; + let pageData = this.state.data; + if (values) { + if (!pageData) pageData = [] + let find = pageData.find((item, index) => { + let valuesOne = item.dispatchrule_form.rows[0].values; + if ((pk && pk == valuesOne.pk_intellidispatchrule.value) || valuesOne.pk_intellidispatchrule.value == values.pk_intellidispatchrule.value) { + item.dispatchrule_form.rows[0].values = values; + return true; + } + }); + if(!find){ + pageData.push({ + dispatchrule_form: { + rows:[ + { + values:values + } + + ] + } + }); + } + this.setState({ data: pageData, }); + initConfig.call(this, this.props); + } + this.setState({showFormModal: false}) +} + +export default { addButtonClick, saveFormButtonClick, cancelFormButtonClick }; + +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/events/index.js b/src/ssctpaaa/sscsetting/dispatchrules/config/events/index.js new file mode 100644 index 0000000..a636aa6 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/events/index.js @@ -0,0 +1,14 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick'; +import afterEvent from './afterEvent'; +import initTemplate from './initTemplate'; + +import query from './query' + +export { initTemplate,buttonClick, afterEvent,query}; + + + + + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/dispatchrules/config/events/initTemplate.js new file mode 100644 index 0000000..83ecebb --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/events/initTemplate.js @@ -0,0 +1,39 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { getMultiLang } from 'nc-lightapp-front'; +import requestApi from "../requestApi"; + +export default function (props) { + const _this = this + props.createUIDom( + {}, + (data) => { + //获取多语 + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + let meta = data.template; + //根据单据类型过滤交易类型 + meta.dispatchrule_form.items.find((item) => { + // 作业组 + if (item.attrcode == 'workgroup') { + item.onlyLeafCanSelect = true + item.queryCondition = () => { + return { pk_sscunit: this.state.SSCCenter.refpk }; + } + } + // 工作日历 + if (item.attrcode == 'pk_workcalendar') { + item.queryCondition = () => { + let workCanlendarRefBuilder = 'nccloud.web.ssctp.report.sqlbuilder.WorkCalendarRefBuilder'; + return { pk_sscunit: this.state.SSCCenter.refpk, GridRefActionExt: workCanlendarRefBuilder }; + } + } + }) + // 设置表格编辑态 + meta["dispatchrule_form"].status = 'add'; + props.meta.setMeta(meta); + } + }) + }) +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/events/query.js b/src/ssctpaaa/sscsetting/dispatchrules/config/events/query.js new file mode 100644 index 0000000..64903a9 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/events/query.js @@ -0,0 +1,122 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from '../requestApi' + + +/** + * @Description:显示停用勾选 + * @param: + */ +let showDisabledChange = function(e) { + this.setState({ showDisabled: e }); + if (this.state.SSCCenter.refpk) { + if (e) { + requestApi.ApproveRuleQry({ + data: { pk_sscunit: this.state.SSCCenter.refpk, enablestate: e ? '3': '2'}, + success: res => { + this.setState({ + data: res + }); + } + }); + }else{ + requestApi.ApproveRuleQry({ + data: { pk_sscunit: this.state.SSCCenter.refpk, enablestate: e ? '3': '2'}, + success: res => { + this.setState({ + data: res + }); + } + }); + } + } + +} + +/** + * @Description:查询单位明细范围 + * @param: + */ +let queryGroupDetails = function(item) { + let multiLang = this.parent.props.MutiInit.getIntl(7010); + let detailModalTitle = multiLang && multiLang.get('701001RWCL-0102'); + requestApi.queryGroupDetailTableData({ + data: { group: item.values.pk_org.value }, + success: (res) => { + //701001RWCL-0102:单位范围 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: detailModalTitle, value: this.groupTableId } }); + this.parent.props.editTable.setTableData(this.groupTableId, res[this.groupTableId]); + } + }) + +} +/** + * @Description:查询交易类型/单据类型明细 + */ + +let queryBillTypeDetails = function(item, key) { + let multiLang = this.parent.props.MutiInit.getIntl(7010); + let detailModalTitle = null; + switch (key) { + case this.tranctionTableId: + detailModalTitle = multiLang && multiLang.get('701001RWCL-0103') //交易类型 + requestApi.queryDetailTableData({ + data: { billtype: item.values.pk_billtype.value, type: this.tranctionTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0103'):交易类型 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0103'), value: this.tranctionTableId } }); + this.parent.props.editTable.setTableData(key, res[this.tranctionTableId]); + } + }) + break; + case this.billtypeTableId: + detailModalTitle = multiLang && multiLang.get('701001RWCL-0104') //单据类型 + requestApi.queryDetailTableData({ + data: { billtype: item.values.pk_billtype.value, type: this.billtypeTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0104'):单据类型 + this.setState({detailModalTitle: detailModalTitle, showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0104'), value: this.billtypeTableId } }); + this.parent.props.editTable.setTableData(key, res[this.billtypeTableId]); + } + }) + break; + } +} +/** + * @Description:查询详细信息 + * @param: + */ +let queryDetailTable = function(searchValue) { + let filterKey = []; + // 单据类型/交易类型查询 billtypename 单位范围查询name + this.state.modalType.value == this.groupTableId ? filterKey.push('name') :filterKey.push('billtypename') + this.props.editTable.setFiltrateTableData(this.state.modalType.value, filterKey, searchValue, false) +} + +/** + * 获取共享中心 + * + * */ +let onSSCCenterChange = function(ssc) { + if (ssc.hasOwnProperty('refpk')) { + // 选中操作 + this.setState({ + SSCCenter: ssc + }); + this.setState({addDisabled: false}); + requestApi.ApproveRuleQry({ + data: { pk_sscunit: ssc.refpk, enablestate: this.state.showDisabled ? '3': '2'}, + success: (data) => { + console.log(data) + this.setState({ + data: data + }); + } + }) + } else { + this.setState({ SSCCenter: {},data: [], addDisabled: true }); + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: ssc.hasOwnProperty('refpk') ? JSON.stringify(ssc) : ''}); +} +export default { onSSCCenterChange, showDisabledChange, queryGroupDetails, queryBillTypeDetails, queryDetailTable } +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/index.css b/src/ssctpaaa/sscsetting/dispatchrules/config/index.css new file mode 100644 index 0000000..557f6b5 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/index.css @@ -0,0 +1,8 @@ +#dispatchrules .itemText { + min-width: 170px; + max-width: calc(50% - 48px); +} + +#dispatchrules .head-label { + width: calc(100% - 194px); +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/index.js b/src/ssctpaaa/sscsetting/dispatchrules/config/index.js new file mode 100644 index 0000000..df49f3a --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Dispatchrules from './dispatchrules'; +ReactDOM.render( + , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/index.less b/src/ssctpaaa/sscsetting/dispatchrules/config/index.less new file mode 100644 index 0000000..91fb6b8 --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/index.less @@ -0,0 +1,189 @@ +@import "~base"; +#dispatchrules { + .title-search-detail { + margin-right: 25px; + } +} + +.container { + .itemText { + display: inline-block; + margin-right: 10px; + text-overflow: ellipsis; + overflow: hidden; + // min-width: 170px; + // max-width: calc(50% - 48px); + } + .img { + position: absolute; + width: 30px; + height: 30px; + left: -45px; + margin: 5px 7px 0 0; + } + .billTypeName { + display: inline-block; + width: 600px; + } + .unitscope { + display: inline-block; + width: 300px; + } +} + +.content-wrap { + min-height: calc(100% - 12px); + background: rgba(255, 255, 255, 1); + box-shadow: 0px 1px 1px 0px rgba(74, 81, 93, 0.1); + border-radius: 3px; + .ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 10px; + } +} + +.content-wrap .rule-list-wrap { + padding-top: 20px; +} + +.content-wrap .ssc-form { + margin-bottom: 10px; + margin-left: 40px; + margin-right: 240px; + width: auto; + min-height: 150px; + background: rgba(255, 255, 255, 1); + //box-shadow:0px 1px 2px 0px rgba(200,200,200,0.5); + border-radius: 4px; + border: 1px solid rgba(206, 206, 206, 0.75); + + .head-grow { + width: 100%; + height: 40px; + font-size: 17px; + font-family: PingFangSC-Medium; + color: rgba(17, 17, 17, 1); + line-height: 40px; + background-color: #f3f3f3; + margin-bottom: 10px; + display: flex; + align-items: center; + + img { + position: inherit; + left: 0; + margin: 0 15px 5px 50px; + } + + .head-label { + white-space: nowrap; + height: 40px; + // width: calc(100% - 194px); + } + .head-label span { + font-size: 14px; + } + .head-btn { + padding-right: 30px; + white-space: nowrap; + + .btn { + margin-left: 22px; + font-size: 14px; + font-family: PingFangHK-Regular; + color: #007ACE; + line-height: 21px; + cursor: pointer; + outline: none; + } + } + span.customer-label[aria-describedby="delConfirmId"] { + color: #007ACE; + } + } + + .grow { + margin-bottom: 11px; + width: 100%; + height: auto; + font-size: 13px; + font-family: MicrosoftYaHei; + line-height: 21px; + position: relative; + padding: 0 53px; + .column-1-1 { + width: 100% + } + .grow-label-name { + //float:left; + width: 120px; + margin-right: 2px; + display: inline-block; + height: 21px; + text-align: right; + color: rgba(85, 85, 85, 1); + } + .label-value-all { + cursor: pointer + } + } +} + +.ssc_edit_modal_form { + margin-right: 30px; +} + +.u-switch { + display: inline-block !important; +} + +.checkBox { + position: absolute; + top: 2px; + left: 20px; + +} + +//针对新增弹框特殊设计的样式 +#rule { + .nc-scrollElement-wrap { + margin-bottom: 25px; + } + .icon-shouqi { + display: none; + } + .form-item { + margin-top: 30px; + } + .operator { + .name { + //color: rgba(17,17,17,1); + font-weight: 500; + font-size: 13px; + margin-left: 8px; + outline: none; + } + a { + display: none; + } + } + .line-wrap:hover { + background-color: rgba(0, 0, 0, 0); + } + .line { + height: 1px; + padding-top: 2px; + margin-top: 5px; + color: #D9D9D9; + } + .u-modal-combine-body{ + padding-left: 30px; + } +} + + + + diff --git a/src/ssctpaaa/sscsetting/dispatchrules/config/requestApi.js b/src/ssctpaaa/sscsetting/dispatchrules/config/requestApi.js new file mode 100644 index 0000000..9c5737e --- /dev/null +++ b/src/ssctpaaa/sscsetting/dispatchrules/config/requestApi.js @@ -0,0 +1,133 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax} from 'nc-lightapp-front'; + +let requestApi = { + + //单据模板接口 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitTempletAction.do', + data: opt.data, + success: opt.success + }); + }, + + //信用是否启用查询接口 + query:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscapv/CreditStateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + //根据共享中心查询 + ApproveRuleQry: (opt) => { + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存表单 + saveFormData:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleAddAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 修改规则 + updateFormData:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleUpdateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + //立即执行 + immediateExecution:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/sscapv/SSCApproveRuleExecuteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + // 删除表单 + delFormData:(opt)=>{ + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleDeleteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + //停用 + disableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleEnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + //启用 + enableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/dispatchrule/DispatchRuleEnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + // 查询单位范围详细 + queryGroupDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/OrgsQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + // 查询交易类型/单据类型详细 + queryDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/BillTypeQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + +} +export default requestApi; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/afterEvent.js new file mode 100644 index 0000000..468f8ae --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/afterEvent.js @@ -0,0 +1,7 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +export default function (props, id, key, value, data, index) { + if (key === 'isdefault') { + props.editTable.setColValueByData(id, key, { value: false }, index) + } +} +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/buttonClick.js new file mode 100644 index 0000000..926b8ab --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/buttonClick.js @@ -0,0 +1,74 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from '../requestApi' +let pageProps = null; +function pageBtnsCtrl(active) { + switch (active) { + case 'save' : + case 'cancel' : + pageProps.button.setButtonsVisible({ + saveButton: false, + cancelButton: false, + editButton: true, + addButton: true, + delButton: true + }); + break; + default: + pageProps.button.setButtonsVisible({ + saveButton: true, + cancelButton: true, + editButton: false, + addButton: false, + delButton: false + }); + break; + + } +} + +export default function buttonClick(props, id) { + pageProps = props; + switch (id) { + case 'editButton': + props.editTable.setStatus(window.bodyCode, 'edit'); + pageBtnsCtrl(null); + break; + case 'addButton': + pageBtnsCtrl(null); + props.editTable.addRow(window.bodyCode); + break; + case 'delButton': + let rows = props.table.getCheckedRows(window.bodyCode); + if (rows.length) { + props.editTable.delRow(window.bodyCode, rows[0].index); + let reqData = props.editTable.getAllData(window.bodyCode); + requestApi.save({ + data: reqData, + success: (data) => { + data && this.props.editTable.setTableData(window.bodyCode, data[window.bodyCode]); + } + }); + } + break; + case 'saveButton': + let reqData = props.editTable.getAllData(window.bodyCode); + requestApi.save({ + data: reqData, + success: (data) => { + pageBtnsCtrl('save'); + props.editTable.setStatus(window.bodyCode, 'browse'); + data && this.props.editTable.setTableData(window.bodyCode, data[window.bodyCode]); + } + }); + break; + case 'cancelButton': + props.editTable.setStatus(window.bodyCode, 'browse'); + pageBtnsCtrl('cancel'); + break; + default: + break; + } +} + + +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/events/index.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/index.js new file mode 100644 index 0000000..b114fac --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/index.js @@ -0,0 +1,8 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick'; +import initTemplate from './initTemplate'; +import afterEvent from './afterEvent'; +import tableModelConfirm from './tableModelConfirm'; +export { buttonClick, initTemplate, afterEvent, tableModelConfirm}; + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/events/initTemPlate.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/initTemPlate.js new file mode 100644 index 0000000..d76c800 --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/initTemPlate.js @@ -0,0 +1,56 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import {ajax, base } from 'nc-lightapp-front'; +import requestApi from '../requestApi' +let { NCPopconfirm} = base; + +export default function (props) { + + let multiLang = props.MutiInit.getIntl(7010); + requestApi.tpl({ + data: { + "pagecode": "ssccloudunit" + }, + success: (data) => { + let meta = data.data; + console.log(1, meta); + debugger + meta.ssccloudunit.items.find((item) => item.attrcode === "pk_org").queryCondition = function () { + + return { + "pk_group": "0001Z31000000000112T" + } + }; + + // 添加表格操作列 + let event = { + label: multiLang && multiLang.get('701001RWCL-0060'),//操作 + itemtype: "customer", + attrcode: 'opr', + disabled: true, + visible: true, + render(text, record, index) { + return ( + //701001RWCL-0039:确认删除? + { + debugger; + props.editTable.delRow(window.bodyCode, index); + requestApi.del({ + data: record, + success: (res) => { + } + }) + }}> + {/*"7010-0002": "删除"*/} + {multiLang && multiLang.get('7010-0002')} + + ) + } + }; + meta[window.bodyCode].items.push(event); + + props.meta.setMeta(meta); + } + }); +} + +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/events/tableModelConfirm.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/tableModelConfirm.js new file mode 100644 index 0000000..c6b3402 --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/events/tableModelConfirm.js @@ -0,0 +1,24 @@ +/*1A0En7HRfbANBn9tgTXsyCKacgEZJF1sySZ4tBChcV8=*/ +import requestApi from '../requestApi' + +export default function (props, data, action) { + switch (action) { + case 'add' : + props.table.addRow(window.bodyCode, data[window.bodyCode]); + let reqData = { + head: data[window.bodyCode] + } + console.log(111, data); + requestApi.add({ + data: reqData, + success: (data) => { + console.log(333, data) + } + }); + break; + case 'edit' : + + break; + } +} +/*1A0En7HRfbANBn9tgTXsyCKacgEZJF1sySZ4tBChcV8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/index.css b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.css new file mode 100644 index 0000000..52c90b9 --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.css @@ -0,0 +1,16 @@ +.container { + padding: 10px; +} +.title { + float: left; + line-height: 60px; + font-size: 18px; + margin-right: 20px; +} +.header { + line-height: 60px; +} +.content { + clear: both; + background: #fff; +} diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/index.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.js new file mode 100644 index 0000000..483e1af --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.js @@ -0,0 +1,96 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react'; +import ReactDOM from 'react-dom'; +import {createPage, ajax, base} from 'nc-lightapp-front'; +import {buttonClick, initTemplate, afterEvent, tableModelConfirm} from './events'; + +import requestApi from './requestApi' +import './index.less'; + +const {NCDiv} = base; +window.bodyCode = 'ssccloudunit'; + +class SSCCloudUnit extends Component { + + componentDidMount() { + + requestApi.query({ + data: { + "orgflag":"org", + "pk_org":"0001Z310000000001145" + }, + success: (data) => { + //数据加载后处理,要把启用状态适配成开关状态 + data[window.bodyCode].rows.forEach((row) => { + if(row.values.enablestate.value === 3){ + row.values.enablestate = {value:false}; + }else{ + row.values.enablestate = {value:true}; + } + }); + this.props.editTable.setTableData(window.bodyCode, data[window.bodyCode]); + } + }); + this.props.button.setButtonsVisible({ + saveButton: false, + cancelButton: false + }) + } + + + render() { + const {editTable, table, button} = this.props; + const {createEditTable} = editTable; + const {createButton} = button; + let multiLang = this.props.MutiInit.getIntl(7010); + return ( +
+ + +
{multiLang && multiLang.get('701001RWCL-0045')}
+
+ +
+ {createButton('addButton', { + name: multiLang && multiLang.get('701001RWCL-0046'),//新增 + onButtonClick: buttonClick.bind(this), + buttonColor: 'main-button' + })} + {createButton('editButton', { + name: multiLang && multiLang.get('701001RWCL-0038'),//修改 + onButtonClick: buttonClick.bind(this), + buttonColor: 'main-button' + })} +{/* {createButton('delButton', { + name: '删除', + onButtonClick: buttonClick.bind(this), + buttonColor: 'main-button' + })} */} + {createButton('saveButton', { + name: multiLang && multiLang.get('7010-0003'),//保存 + onButtonClick: buttonClick.bind(this), + buttonColor: 'main-button' + })} + {createButton('cancelButton', { + name: multiLang && multiLang.get('7010-0004'),//取消 + onButtonClick: buttonClick.bind(this) + })} +
+
+
+ {createEditTable(window.bodyCode, { + onAfterEvent: afterEvent + })} +
+
+ ) + } +} + +SSCCloudUnit = createPage({ + initTemplate: initTemplate, + mutiLangCode: '7010' +})(SSCCloudUnit); + +ReactDOM.render(, document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/index.less b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.less new file mode 100644 index 0000000..c97d4d9 --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/index.less @@ -0,0 +1,17 @@ +.container { + padding: 10px; +} +.title { + float: left; + line-height: 60px; + font-size: 18px; + margin-right:20px; +} +.header { + line-height: 60px; +} + +.content { + clear: both; + background: #fff; +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/ssccloudunit/config/requestApi.js b/src/ssctpaaa/sscsetting/ssccloudunit/config/requestApi.js new file mode 100644 index 0000000..9d9583f --- /dev/null +++ b/src/ssctpaaa/sscsetting/ssccloudunit/config/requestApi.js @@ -0,0 +1,46 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ + +import {ajax } from 'nc-lightapp-front'; + +let requestDomain = ''; + +let requestApiOverwrite = { + //单据模板接口 + tpl: (opt) => { + ajax({ + url: opt.url || `${requestDomain}/nccloud/ssctp/sscbd/SSCUnitTempletAction.do`, + data: opt.data, + success: opt.success + }); + }, + query:(opt) => { + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/SSCUnitQueryAction.do`, + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + save: (opt) => { + opt.data.rows.forEach((row) => { + delete row.values.ts; + }); + opt.data = { + head: opt.data + } + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/SSCUnitAddAction.do`, + data: opt.data, + success: (data) => { + if (data.success) { + data = data.data; + opt.success(data); + } + } + }) + } +} +export default requestApiOverwrite; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/sscladerule/config/events/afterEvent.js new file mode 100644 index 0000000..994d116 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/events/afterEvent.js @@ -0,0 +1,54 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +export default function (props, moduleId, key, value, data, index) { + switch(key){ + case 'ladetype': + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + { + thresholdvalue: value.value === '10' ? false : true + } + ) + props.form.setFormItemsRequired( window.presetVar.addFormCode,{'thresholdvalue': value.value === '10' ? true : false}); + if (value.value !== '10') { + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'thresholdvalue':{value:null,display:null}} + ) + } + break; + case 'pk_managelevel': + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + { + details: value.value === '10' ? false : true + } + ) + props.form.setFormItemsRequired( window.presetVar.addFormCode,{'details': value.value === '10' ? true : false}); + if (value.value !== '10') { + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'details':{value:null,display:null}} + ) + } + break; + case 'refpk': + props.editTable.setValByKeyAndRowId(moduleId,data[0].rowid,'refpk.code',{value:value.refcode,display:value.refcode}); + if(moduleId==window.presetVar.ladeRuleBodyTable&&value.length>0){ + let newIndex = index; + for(let i=0;i { + const rows = checkedRows.map(row => row.data) + + let index = -1 + while (++index < rows.length) delete rows[index].values.details + let param = { + head: { + areaType: 'table', + areaCode: 'head', + rows + } + } + requestApi.batchDeleteRule({ + param, + success: (res) => { + if(res && res.ladeRuleHeadTable){ + that.props.editTable.setTableData( + window.presetVar.l_list, + res.ladeRuleHeadTable + ) + }else{ + that.props.editTable.setTableData( + window.presetVar.l_list, + {rows: []} + ) + } + } + }) +} + +// 表格操作 +const rowBtnClick = (props, btnKey, text, record, index, _this) => { + switch (btnKey) { + case 'DeleteBtn': + //delete text.values.details + delete record.values.details + let param = { + head: { + areaType: 'table', + areaCode: 'head', + rows: [ + record + ] + } + } + requestApi.batchDeleteRule({ + param, + success: (res) => { + props.editTable.setTableData(window.presetVar.ladeRuleBodyTable, { rows: [] }) + props.button.setButtonsVisible({'Add2': false}) + requestApi.queryLadeRule({ + data: {'pk_sscunit': record.values.pk_sscunit.value}, + success: (res) => { + if(res){ + props.editTable.setTableData( + window.presetVar.l_list, + res[window.presetVar.l_list] + ) + // _this.setState({ + // specBtn: null + // }) + }else{ + props.editTable.setTableData( + window.presetVar.l_list, + { rows: [] } + ) + // _this.setState({ + // specBtn: ( + // { + // window.leftModalStatus = 'add' + // _this.setState({showModal:true}) + // _this.props.form.setFormItemsDisabled( + // window.presetVar.addFormCode, + // {'thresholdvalue': true, 'details': true} + // ) + // } + // } + // >+添加 + // ) + // }) + } + } + }) + } + }) + break; + case 'DeleteBtn2': + if(props.editTable.getStatus(window.presetVar.ladeRuleBodyTable)=="edit"){ + props.editTable.deleteTableRowsByIndex(window.presetVar.ladeRuleBodyTable, index); + return; + } + const data = _this.state.currentRow.values + delete data.details + const paramData = { + head: {head: { + areaType: 'form', + areacode: 'head', + rows: [{ + status: '1', + values: data + }] + }}, + body: {body: { + areaType: 'table', + areacode: 'body', + rows: [] + }} + } + let details = props.editTable.getAllRows(window.presetVar.ladeRuleBodyTable,true) + details.splice(index, 1) + let idx = -1 + while(++idx < details.length) { + paramData.body.body.rows.push({ + status: '2', + rowId: idx, + values: {refpk: { + value: details[idx].values.refpk.value + }} + }) + } + requestApi.saveLadeRule({ + data: paramData, + success: (res) => { + _this.setState({ + currentRow: res.head.ladeRuleHeadTable.rows[0] + }) + let headData = props.editTable.getAllRows(window.presetVar.l_list,true) + headData[_this.state.currentLeftRowIdx] = res.head.ladeRuleHeadTable.rows[0] + props.editTable.setTableData( + window.presetVar.ladeRuleBodyTable, + res.body?res.body.ladeRuleBodyTable:{rows: []} + ) + const setData = res.head.ladeRuleHeadTable + setData.rows = headData + props.editTable.setTableData( + window.presetVar.l_list, + setData + ) + } + }) + + break; + case 'EditBtn': + window.leftModalStatus = 'edit' + _this.setState({showModal: true}) + const {values} = props.editTable.getAllRows(window.presetVar.l_list,true)[index] + _this.setState({currentRow: props.editTable.getAllRows(window.presetVar.l_list,true)[index]}) + for (let key in values) { + if (key === 'ladetype') { + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {[key]:{ + value:values[key].value || '', + display:values[key].display || '' + }} + ) + if (values[key].value === '10') { + props.form.setFormItemsRequired( window.presetVar.addFormCode,{'thresholdvalue': true}); + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + {'thresholdvalue': false} + ) + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'thresholdvalue':{ + value: values.thresholdvalue.value, + display: null + }} + ) + } else { + props.form.setFormItemsRequired( window.presetVar.addFormCode,{'thresholdvalue': false}); + setTimeout(() => { + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + {'thresholdvalue': true} + ) + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'thresholdvalue':{value:null,display:null}} + ) + },0) + } + } else if (key === 'pk_managelevel') { + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {[key]:{ + value:values[key].value || '', + display:values[key].display || '' + }} + ) + if (values[key].value === '10') { + props.form.setFormItemsRequired(window.presetVar.addFormCode,{'details': true}); + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + {'details': false} + ) + let details = '', display = '' + requestApi.queryLadeRuleBody({ + data: {pk_laderule: values.pk_laderule.value}, + success: (res) => { + let ladeRuleBodyTable = null; + let { + body + } = res + if(body)ladeRuleBodyTable = body.ladeRuleBodyTable; + if(ladeRuleBodyTable && ladeRuleBodyTable.rows){ + let idx = -1 + while (++idx < ladeRuleBodyTable.rows.length) { + if(idx != 0 && details != ''){ + details += "," + display += "," + } + if(ladeRuleBodyTable.rows[idx].values.refpk){ + details += ladeRuleBodyTable.rows[idx].values.refpk.value + display += ladeRuleBodyTable.rows[idx].values.refpk.display + } + } + } + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'details':{ + value: details, + display + }} + ) + } + }) + } else { + props.form.setFormItemsRequired(window.presetVar.addFormCode,{'details': false}); + props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + {'details': true} + ) + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'details':{value:null,display:null}} + ) + } + } else if (key !== 'details') { + props.form.setFormItemsValue( + window.presetVar.addFormCode, + {[key]:{ + value:values[key].value || '', + display:values[key].display || '' + }} + ) + } + } + break; + default: + break; + } +} + +// 新增表单保存事件 +const addFormSave = (that) =>{ + // 获得form数据 + let data = that.props.form.getAllFormValue(window.presetVar.addFormCode) + // let needCheck = ['code','name','ladetype','eachextracttasks','pk_managelevel']; + // let name4NeedCheck = ['编码','名称','提取规则','每次提取数量','管理层级']; + const {rows} = data + if(!that.props.form.isCheckNow(window.presetVar.addFormCode)){ + return; + } + // 表单验证 + // for(let i=0;i { + query.queryTableData( + that, + {'pk_sscunit': that.state.sscCenterPk} + ) + that.props.form.EmptyAllFormValue([window.presetVar.addFormCode]) + that.setState({showModal:false}) + } + }) +} + +// 新增表单取消事件 +const addFormCancel = (that) => { + that.setState({showModal:false}) + that.props.form.EmptyAllFormValue([window.presetVar.addFormCode]) +} + +// 新增作业组 +const addRuleBody = (that) => { + that.props.editTable.setStatus(window.presetVar.ladeRuleBodyTable, 'edit'); + that.props.editTable.addRow(window.presetVar.ladeRuleBodyTable) // 添加一行 + //that.props.editTable.hideColByKey(window.presetVar.ladeRuleBodyTable,"opr") // 隐藏操作列 + let bodyAllRows = that.props.editTable.getAllRows(window.presetVar.ladeRuleBodyTable,true) + // if(bodyAllRows.length>0){ + // for(let i = 0; i { + let headData = that.state.currentRow; + let multiLang = that.props.MutiInit.getIntl(7010); + that.props.editTable.filterEmptyRows(window.presetVar.ladeRuleBodyTable, []); + let bodyData = that.props.editTable.getAllData(window.presetVar.ladeRuleBodyTable); + const reqData = {} + headData.status = "1" + delete headData.values.details + let bodyRows = [] + for(let i = 0; i < bodyData.rows.length; i++){ + if(bodyData.rows[i].status=="3")continue; + if(bodyData.rows[i].values.refpk.value==null||bodyData.rows[i].values.refpk.value==""){ + //701001RWCL-0079:第 ; 701001RWCL-0080:行作业组不能为空 + toast({content : multiLang && multiLang.get('701001RWCL-0079')+(i+1)+multiLang && multiLang.get('701001RWCL-0080'),color : 'danger'}) + return + } + bodyRows.push({ + rowId: i, + status: '2', + values: { + refpk: { + value: bodyData.rows[i].values.refpk.value + } + } + }) + } + reqData.head = { + head : { + "areaType": "form", + "areacode": "head", + "rows": [headData] + } + + } + reqData.body = { + body : { + "areaType": "table", + "areacode": "body", + "rows": bodyRows + } + } + requestApi.saveLadeRule({ + data: reqData, + success: (data) => { + that.props.button.setButtonsVisible({ + 'Add2': true, + 'SaveDetails': false, + 'CancelDetails': false, + 'Add': true, + 'DelSpec': true + }) + that.props.editTable.setStatus(window.presetVar.ladeRuleBodyTable, 'browse') + that.props.editTable.showColByKey(window.presetVar.ladeRuleBodyTable,"opr") + if(data.body){ + that.props.editTable.setTableData( + window.presetVar.ladeRuleBodyTable, + data.body.ladeRuleBodyTable + ) + }else{ + that.props.editTable.setTableData( + window.presetVar.ladeRuleBodyTable, + { rows: [] } + ) + } + // + that.setState({ + currentRow: data.head.ladeRuleHeadTable.rows[0], + sscCenterDisabled: false + }) + let headData = that.props.editTable.getAllRows(window.presetVar.l_list,true) + headData[that.state.currentLeftRowIdx] = data.head.ladeRuleHeadTable.rows[0] + const setData = data.head.ladeRuleHeadTable + setData.rows = headData + that.props.editTable.setTableData( + window.presetVar.l_list, + setData + ) + + that.props.editTable.showColByKey(window.presetVar.l_list, 'opr'); + that.props.button.setPopContent('DeleteBtn2', multiLang && multiLang.get('701001RWCL-0168'))//确定要删除所选数据吗? + } + }) +} + +// 取消新增作业组 +const cancelDetails = (that) => { + that.props.button.setButtonsVisible({ + 'Add2': true, + 'SaveDetails': false, + 'CancelDetails': false, + 'Add': true, + 'DelSpec': true + }) + that.props.editTable.cancelEdit(window.presetVar.ladeRuleBodyTable) + that.props.editTable.setStatus(window.presetVar.ladeRuleBodyTable, 'browse') + that.props.editTable.showColByKey(window.presetVar.ladeRuleBodyTable,"opr") + + that.props.editTable.showColByKey(window.presetVar.l_list, 'opr'); + that.setState({ + sscCenterDisabled: false + }) + that.props.button.setPopContent('DeleteBtn2', multiLang && multiLang.get('701001RWCL-0039')) +} +function selectedChange(props, moduleId, newVal, oldVal) { + console.log('selectedChangeEvent',props,moduleId,newVal,oldVal); + if(newVal>0){ + props.button.setButtonDisabled(['DelSpec'], false); + }else { + props.button.setButtonDisabled(['DelSpec'], true); + } + } + +export default { + batchDelete, + rowBtnClick, + addFormSave, + addFormCancel, + addRuleBody, + saveDetails, + cancelDetails, + selectedChange +} +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/events/fixedTpl.js b/src/ssctpaaa/sscsetting/sscladerule/config/events/fixedTpl.js new file mode 100644 index 0000000..c043d0c --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/events/fixedTpl.js @@ -0,0 +1,224 @@ +/*WHFr/fQhJDqCAnV+SHM45eYgHLYMJeF3IWiiKKe8zbo=*/ +export default { + btns: [ + /*{ + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "EditBtn", + "title": "修改", + "area": "ladeRuleHeadTable", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "DeleteBtn", + "title": "删除", + "area": "ladeRuleHeadTable", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "DeleteBtn2", + "title": "删除", + "area": "ladeRuleBodyTable", + "children": [] + }, + // { + // "id": "0001A41000000006J5B1", + // "type": "button_main", + // "key": "Add", + // "title": "新增", + // "area": "l_top_btns", + // "parentCode":"head_group", + // "children": [] + // }, + // { + // "id": "0001A41000000006J5B1", + // "type": "button_secondary", + // "key": "DelSpec", + // "title": "删除", + // "area": "l_top_btns", + // "parentCode":"head_group", + // "children": [] + // }, + { + "type": "buttongroup", + "key": "head_group", + "area": "l_top_btns", + "isenable": true, + "order": "7", + "parentCode": null, + "children": [{ + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "Add", + "title": "新增", + "area": "l_top_btns", + "parentCode":"head_group", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_secondary", + "key": "DelSpec", + "title": "删除", + "area": "l_top_btns", + "parentCode":"head_group", + "children": [] + }] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "Add2", + "title": "新增", + "area": "r_top_btns", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "SaveDetails", + "title": "保存", + "area": "r_top_btns", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_secondary", + "key": "CancelDetails", + "title": "取消", + "area": "r_top_btns", + "children": [] + }*/ + ] + /* + headAddForm: { + pagination: false, + code: "headAddForm", + moduletype: "form", + name: "提取规则新增", + status: 'edit', + items: [ + { + "itemtype": "input", + "visible": true, + "label": "编码", + "attrcode": "code", + "maxlength": "50", + "required": true, + "disabled": false + }, + { + "itemtype": "input", + "visible": true, + "label": "名称", + "attrcode": "name", + "maxlength": "50", + "required": true, + "disabled": false, + "col": "6" + + }, + { + "itemtype": "radio", + "visible": true, + "label": "提取方式", + "attrcode": "ladetype", + "maxlength": "50", + "required": true, + "disabled": false, + "options": [{ + "display": "不限制提取", + "value": "0" + }, + { + "display": "阀值提取", + "value": "10" + }, + { + "display": "处理完毕后提取", + "value": "20" + } + ] + }, + { + "itemtype": "number", + "visible": true, + "label": "每次提取数量", + "attrcode": "eachextracttasks", + "required": true, + "disabled": false, + "scale":"0" + }, + { + "itemtype": "number", + "visible": true, + "label": "在手任务阀值", + "attrcode": "thresholdvalue", + "disabled": true, + "scale":"0" + }, + { + "itemtype": "radio", + "visible": true, + "label": "管理层级", + "attrcode": "pk_managelevel", + "maxlength": "20", + "required": true, + "disabled": false, + "options": [{ + "display": "共享中心", + "value": "0" + }, + { + "display": "作业组", + "value": "10" + } + ] + }, + { + "itemtype": "refer", + "visible": true, + "label": "规则适用作业组", + "disabled": true, + "attrcode": "details", + "isMultiSelectedEnabled": true, + "refcode": "/ssctp/refer/sscbd/SSCWorkGroupGridRef/index.js" + }, + { + "itemtype": "refer", + "label": "组织", + "attrcode": "pk_sscunit", + "visible": false + }, + { + "itemtype": "number", + "label": "序号", + "attrcode": "seqno", + "visible": false + }, + { + "itemtype": "datepicker", + "label": "时间戳", + "attrcode": "ts", + "maxlength": "19" + }, + { + "itemtype": "input", + "label": "主键", + "attrcode": "pk_laderule", + "maxlength": "20" + }, + { + "itemtype": "refer", + "label": "集团", + "attrcode": "pk_group", + "maxlength": "20" + } + ] + } */ +} +/*WHFr/fQhJDqCAnV+SHM45eYgHLYMJeF3IWiiKKe8zbo=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/events/index.js b/src/ssctpaaa/sscsetting/sscladerule/config/events/index.js new file mode 100644 index 0000000..3dfe7c3 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/events/index.js @@ -0,0 +1,9 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick' +import initTemplate from './initTemplate' +import afterEvent from './afterEvent' +import query from './query' + +export {buttonClick, initTemplate, afterEvent, query} + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/events/initTemPlate.js b/src/ssctpaaa/sscsetting/sscladerule/config/events/initTemPlate.js new file mode 100644 index 0000000..6f2d2da --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/events/initTemPlate.js @@ -0,0 +1,120 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import {getMultiLang} from 'nc-lightapp-front'; +import buttonClick from './buttonClick' + +export default function(props) { + window.presetVar = { + ...window.presetVar, + pageId: '700101_laderule', + l_list: 'ladeRuleHeadTable', + ladeRuleBodyTable: 'ladeRuleBodyTable', + addFormCode: 'headAddForm' + } + const _this = this; + + //请求模板 + let createUIDomPromise = new Promise((resolve, reject) => { + props.createUIDom({}, (data) => { + resolve(data); + }) + }); + + //请求多语 + let getMultiLangPromise = new Promise((resolve, reject) => { + getMultiLang({ + moduleId: 7010, domainName: 'ssctp',currentLocale: 'zh-CN', + callback: (json) => { + resolve(json); + } + }) + }); + Promise.all([createUIDomPromise, getMultiLangPromise]).then((resultList) => { + let data = resultList[0]; + let json = resultList[1]; + + if (data) { + let { + ladeRuleHeadTable, // 任务提取规则 + ladeRuleBodyTable // 任务提取规则明细 + } = data.template + //设置表格的扩展按钮列 + let l_event = { + label: json['701001RWCL-0060'],//操作 + attrcode: 'opr', + itemtype: 'customer', + visible: true, + render: (text, record, index) => { + return props.button.createOprationButton(["EditBtn", "DeleteBtn"], { + area: window.presetVar.l_list, + onButtonClick: (props, btnKey, e) => { + buttonClick.rowBtnClick(props, btnKey, text, record, index, _this); + } + }); + } + } + let r_event = { + label: json['701001RWCL-0060'],//操作 + attrcode: 'opr', + itemtype: 'customer', + visible: true, + render: (text, record, index) => { + return props.button.createOprationButton(["DeleteBtn2"], { + area: window.presetVar.ladeRuleBodyTable, + onButtonClick: (props, btnKey) => { + buttonClick.rowBtnClick(props, btnKey, text, record, index, _this) + } + }); + } + } + + props.button.setButtons(data.button) + props.button.setPopContent('DeleteBtn', json['701001RWCL-0039']) + props.button.setPopContent('DeleteBtn2', json['701001RWCL-0039']) + + props.button.setButtonsVisible({ + 'Add': true, + 'DelSpec': true, + 'Add2': false, + 'SaveDetails': false, + 'CancelDetails': false + }) + + if(!props.getUrlParam('pk_sscunit')) props.button.setButtonDisabled(['Add', 'DelSpec'], true); + + ladeRuleHeadTable.items.push(l_event) + ladeRuleBodyTable.items.push(r_event) + + // ladeRuleHeadTable.items.forEach(ele => { + // ele.width = '120px' + // }) + // ladeRuleBodyTable.items.forEach(ele => { + // ele.width = '100px' + // }) + ladeRuleBodyTable.items[ladeRuleBodyTable.items.length - 1].width = '50px'; + + data.template[window.presetVar.ladeRuleBodyTable].items.find((item) => item.attrcode === "refpk").queryCondition = function() { + let pk_sscunit = _this.state.sscCenterPk + return { + "pk_sscunit": pk_sscunit + } + }; + data.template[window.presetVar.addFormCode].items.find((item) => item.attrcode === "details").queryCondition = function() { + let pk_sscunit = _this.state.sscCenterPk + return { + "pk_sscunit": pk_sscunit + } + }; + + data.template[window.presetVar.addFormCode].items.map((item) => { + if (item.attrcode === 'details') { + item.isRunWithChildren =false; + } + }); + + data.template[window.presetVar.addFormCode].status = 'edit'; + props.meta.setMeta(data.template); + + } + }) +} +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/events/query.js b/src/ssctpaaa/sscsetting/sscladerule/config/events/query.js new file mode 100644 index 0000000..17ac710 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/events/query.js @@ -0,0 +1,77 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from '../requestApi' +import {base} from 'nc-lightapp-front' +const {NCButton} = base + +//共享中心改变事件 +let onSSCCenterChange =(that, e)=>{ + that.setState({sscCenterPk:e.refpk, SSCCenter: e}) + if (e.refpk){ + // that.props.button.setButtonVisible(["Add","DelSpec"], true); + that.props.button.setButtonDisabled(['Add'], false); + let req = {'pk_sscunit':e.refpk} + queryTableData(that, req) + }else{ + // that.props.button.setButtonVisible(["Add","DelSpec"], false) + that.props.button.setButtonDisabled(['Add', 'DelSpec'], true); + that.props.editTable.setTableData(window.presetVar.l_list, { rows: [] }) + } + that.props.editTable.setTableData( + window.presetVar.ladeRuleBodyTable, + { rows: [] } + ) + // 保存共享中心 + that.props.setUrlParam({pk_sscunit: e.hasOwnProperty('refpk') ? JSON.stringify(e) : ''}); +} + +// 查询提取规则 +let queryTableData = (that, req) =>{ + // 重置规则适用作业组 + that.props.editTable.setTableData(window.presetVar.ladeRuleBodyTable, { rows: [] }) + that.props.button.setButtonsVisible({'Add2': false}) + requestApi.queryLadeRule({ + data: req, + success: (res) => { + if(res){ + that.props.editTable.setTableData( + window.presetVar.l_list, + res[window.presetVar.l_list] + ) + }else{ + that.props.editTable.setTableData( + window.presetVar.l_list, + { rows: [] } + ) + } + } + }) +} + +//查询规则适用作业组 +let queryDetails = (that, req) =>{ + requestApi.queryLadeRuleBody({ + data: req, + success: (res) => { + let body = res==null?null:res.body; + that.props.button.setButtonsVisible({'Add2': true}) + if (body) { + if(body.ladeRuleBodyTable){ + that.props.editTable.setTableData( + window.presetVar.ladeRuleBodyTable, + body.ladeRuleBodyTable + ) + }else{ + that.props.editTable.setTableData( + window.presetVar.l_list, + { rows: [] } + ) + } + }else{ + that.props.editTable.setTableData('ladeRuleBodyTable', { rows: [] }) + } + } + }) +} + +export default {onSSCCenterChange, queryTableData, queryDetails} +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/index.js b/src/ssctpaaa/sscsetting/sscladerule/config/index.js new file mode 100644 index 0000000..34c057d --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/index.js @@ -0,0 +1,291 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react' +import {createPage, base, toast} from 'nc-lightapp-front' +const {NCModal,NCButton} = base +import {buttonClick, initTemplate, afterEvent, query} from './events' +import {Nav} from 'ssccommon/components/global-nav' +import {EditTable} from 'ssccommon/components/table' +import SSCCenterRef from '../../../refer/sscbd/SSCUnitGridRef' +import './index.less' +import { + ProfileStyle, + ProfileHead, + ProfileBody, + HeadCenterCustom, + ButtonGroup +} from 'ssccommon/components/profile' +//左侧复选框选中的行 +let checkedColumns = [] + +class SSCLadeRule extends Component { + constructor(props) { + super(props); + this.state = { + SSCCenter: '', //共享中心 + sscCenterPk: '', //共享中心pk + showModal: false, + currentRow: null, + currentLeftRowIdx: -1, + // specBtn: null + sscCenterDisabled: false, //禁用共享中心参照 + } + this.leftTableFocusRowIndex = null; //左侧表格焦点行索引 + initTemplate.call(this, props) + } + + // 页面加载 + componentDidMount() { + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && query.onSSCCenterChange.call(this, this, JSON.parse(pk_sscunit)); + }, 300); + } + + // 左侧列表行点击,查询右侧表格数据 + onLeftRowClick = (opt, areaId, column, index) => { + let multiLang = this.props.MutiInit.getIntl(7010); + if(this.props.editTable.getStatus(window.presetVar.ladeRuleBodyTable)=="edit"){ + toast({content : multiLang && multiLang.get('701001RWCL-0083'),color : 'warning'});//701001RWCL-0083:您有未保存的数据,请保存后重试 + this.props.editTable.focusRowByIndex(window.presetVar.l_list, this.leftTableFocusRowIndex); + return; + } + this.leftTableFocusRowIndex = index; + let {values: { + pk_laderule: {value}, + pk_managelevel + }} = column + this.setState({currentRow: column, currentLeftRowIdx: index}) + if (pk_managelevel.value === '10') { + query.queryDetails(this, {pk_laderule: value}) + } else { + this.props.button.setButtonsVisible({'Add2': false}) + this.props.editTable.setTableData('ladeRuleBodyTable', { rows: [] }) + } + } + + // 批量删除 + batchDelete = () => { + let multiLang = this.props.MutiInit.getIntl(7010); + const checkedRows = this.props.editTable.getCheckedRows(window.presetVar.l_list) + if (checkedRows.length > 0) { + buttonClick.batchDelete(this, checkedRows) + return + } + toast({content : multiLang && multiLang.get('701001RWCL-0084'),color : 'warning'})//701001RWCL-0084:请至少选择一条数据 + } + + //左侧选择列单个选择框回调 暂存选中数据 + onSelected = (opt, areaId, column, index, onoff) => { + if (onoff) { + checkedColumns.push({ + index, + data: column + }) + } else { + let idx = -1 + while (++idx < checkedColumns.length) { + if (checkedColumns[idx].index == index) { + checkedColumns.splice(idx, 1) + return + } + } + } + + + } + + // 全选cb + onSelectedAll = (props, areaId, onoff, idx) => { + checkedColumns = [] + if (onoff) { + let data = this.props.editTable.getAllRows(window.presetVar.l_list,true) + let idx = -1 + while (++idx < data.length) { + checkedColumns.push({ + idx, + data: data[idx] + }) + } + } + } + + //新增 + openModal = () => { + window.leftModalStatus = 'add' + this.setState({showModal:true}) + this.initAddFromData() + } + + initAddFromData = ()=>{ + this.props.form.setFormItemsDisabled( + window.presetVar.addFormCode, + {'thresholdvalue': true, 'details': true} + ) + this.props.form.setFormItemsRequired( + window.presetVar.addFormCode, + {'details': false} + ) + this.props.form.setFormItemsValue( + window.presetVar.addFormCode, + {'ladetype':{value:'0'},'pk_managelevel':{value:'0'}} + ) + } + + // showSpecBtn(nextProps, nextState) { + // setTimeout(() => { + // const headData = this.props.editTable.getAllData(window.presetVar.l_list) + // if (this.state.sscCenterPk==null||this.state.sscCenterPk==''||headData.rows && headData.rows.length) { + // // this.setState({ + // // specBtn: null + // // }) + // } else { + // // this.setState({ + // // specBtn: ( + // // +添加 + // // ) + // // }) + // } + // }, 500) + // return true + // } + + render() { + + let {form: {createForm}} = this.props + let multiLang = this.props.MutiInit.getIntl(7010); + const btnModalConfig = { + ['DelSpec'] : { + title: multiLang && multiLang.get('7010-0002'),//删除 + content: multiLang && multiLang.get('701001RWCL-0187'),//确定要删除所选数据吗? + } + } + + return ( +
+
+ ) + } +} +// 初始化节点 +const SSCLaderUle = createPage({ + mutiLangCode: '7010' +})(SSCLadeRule) +// 注册节点 +ReactDOM.render(, document.querySelector('#app')) +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/index.less b/src/ssctpaaa/sscsetting/sscladerule/config/index.less new file mode 100644 index 0000000..942b5ac --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/index.less @@ -0,0 +1,124 @@ +.inner-container { + .left-container { + width: 70%; + float: left; + border-right: 2px solid rgba(230,233,233,1); + position: relative; + + .spec-btn { + position: absolute; + left: 49.3%; + top: 53.5%; + transform: translate(-50%,-50%); + margin-top: 100px; + z-index: 1; + background:#e14c46; + color: #fff; + } + } + + .right-container { + width: 30%; + float: right; + .bottom-bgc-for-single-table{ + right: 0; + left: 0; + } + } + .nc-singleTable-header-area{ + border-bottom: none; + } +} + +.clearfix::after { + content: "."; + clear: both; + display: block; + overflow: hidden; + font-size: 0; + height: 0; +} + +.clearfix { + zoom: 1; +} + +.nc-single-table { +h2.header-title-search-area { + height:22px; + font-size:16px; + color:rgba(71,77,84,1); + line-height:22px; + margin: 0 21px; + width: 200px; +} + +div.header-title-search-area { + margin-right: 21px; +} + +span.showOff { + display: flex; + align-items: center; + .u-checkbox-label { + height:21px; + font-size:13px!important; + color:rgba(110,110,119,1)!important; + line-height:21px; + } +} +} + +.u-modal-dialog .u-modal-content .u-modal-body { + div.u-row>span { + zoom: 1; + .formLabel { + width: 120px; + } + .radio-wrapper { + .u-radio-group { + width: 300px; + } + .u-radio { + display: inline-block; + width: 130px; + } + .u-radio-group:nth-of-type(1) { + height: 100px; + } + } + } + + div.u-row>span::after { + content: "."; + clear: both; + display: block; + overflow: hidden; + font-size: 0; + height: 0; + } +} + +.ssccenter{ + width:200px; + margin-left: 14px; +} + +.ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 10px; +} + +#sscladerule { + h2.title-search-detail { + margin-right: 20px !important; + font-weight: bold; + } +} + +.ssc_edit_modal_form{ + margin-right: 30px; + } \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscladerule/config/requestApi.js b/src/ssctpaaa/sscsetting/sscladerule/config/requestApi.js new file mode 100644 index 0000000..b439d6d --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscladerule/config/requestApi.js @@ -0,0 +1,51 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax } from 'nc-lightapp-front'; + +let requestDomain = ''; + +let requestApiOverwrite = { + queryLadeRule:(opt) => { + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/LadeRuleQryAction.do`, + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + queryLadeRuleBody:(opt) => { + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/LadeRuleBodyQryAction.do`, + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + batchDeleteRule:(opt) => { + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/LadeRuleBatchDeleteAction.do`, + data: opt.param, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + saveLadeRule:(opt) => { + ajax({ + url: `${requestDomain}/nccloud/ssctp/sscbd/LadeRuleSaveAction.do`, + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + } +} + +export default requestApiOverwrite; + +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/TreeTable.js b/src/ssctpaaa/sscsetting/sscpriority/config/TreeTable.js new file mode 100644 index 0000000..7112354 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/TreeTable.js @@ -0,0 +1,265 @@ +/*RXJkFhQCaWpSqyKm3tEedfjWYJ6Noi/eXv1/i1yJzgQ=*/ +import React, { Component } from "react"; +import { createPage, base, high } from "nc-lightapp-front"; +import requestApi from "./requestApi"; +import { buttonClick, initTemplate, afterEvent } from "./events"; +import { ProfileStyle, ProfileHead, ProfileBody, BodyLeft, BodyRight, HeadCenterCustom, ButtonGroup } from "ssccommon/components/profile"; +import { SyncTree } from "ssccommon/components/tree"; +import { EditTable } from "ssccommon/components/table"; +import { Nav } from "ssccommon/components/global-nav"; +import SSCCenter from "../../../refer/sscbd/SSCUnitGridRef"; +import "./index.less"; + +const { NCModal,NCButton } = base; +const { FormulaEditor } = high; + +function PublicField({ setName, setExplain, name }) { + let rowList = []; + name.map(item => { + rowList.push( +
  • { + setExplain(""); + }} + onDoubleClick={() => { + setName("" + item.code + ""); + }} + > + {item.code}  {item.name} +
  • + ); + }); + return
      {rowList}
    ; +} +class TreeTable extends Component { + constructor(props) { + super(); + this.formulaInputValue = ""; // 公式内容 + this.state = { + isHeadEdit: false, + showAddModal: false, // 新增modal + isShowSearch: true, // 控制树查询区显示 + isDisableSearch: false, // 控制树查询区禁用/可用 + SSCCenter: {}, // 共享服务中心 + isAdjustOrder:false, // 判断是否是调序状态,控制操作列显示内容 + showFormula:false, // 判断是否显示公式编辑器 + publicFieldData: "", // 公共字段 + showConfirmModal:false, // 跳转确认框 + isEdit:false // 是否是编辑态 + }; + initTemplate.call(this, props); + } + + // 页面加载 + componentDidMount() { + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && this.onSSCCenterChange.call(this, JSON.parse(pk_sscunit)); + }, 300); + } + + //共享中心改变事件 + onSSCCenterChange = e => { + this.setState({ SSCCenter: e }); + let { syncTree } = this.props; + let { setSyncTreeData } = syncTree; + if (e.hasOwnProperty('refpk')) { + // 选中共享中心 + this.setState({isShowSearch:true}); // 显示树型的查询区 + let req = { pk_sscunit: e.refpk,enablestate:'2' }; // 2:查询启用的作业组 3:查询停用 不传Or传'':查询所有 + this.queryTreeData(req); // 查询左侧树 + this.props.editTable.setTableData(window.presetVar.head.tableId, { rows: [] }); + } else { + // 清空共享中心 + this.setState({isShowSearch:false}); // 隐藏树型的查询区 + setSyncTreeData(window.presetVar.head.treeId, []); // 树数据清空 + this.props.button.setButtonDisabled(['Add', 'Edit', 'Delete'], true); // 按钮禁用 + this.props.editTable.setTableData(window.presetVar.head.tableId, { rows: [] }); // 表格内数据清空 + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: e.hasOwnProperty('refpk') ? JSON.stringify(e) : ''}); + }; + + // 查询树节点数据 + queryTreeData(req) { + let { syncTree } = this.props; + let multiLang = this.props.MutiInit.getIntl(7010); + let { setSyncTreeData } = syncTree; + this.setSyncTreeData = setSyncTreeData; //设置树根节点数据方法 + requestApi.queryTreeData({ + data: req, + success: res => { + res.nodes.push({ + refpk: "0001ZG100000SSCGROUP", + refcode: "ROOT", + refname: multiLang && multiLang.get('701001RWCL-0051'),//"作业组" + }); + let newTree = syncTree.createTreeData(res.nodes); //创建树 组件需要的数据结构 + this.setSyncTreeData(window.presetVar.head.treeId, newTree); + } + }); + } + + openFormula() { + let multiLang = this.props.MutiInit.getIntl(7010); + requestApi.queryPublicFields({ + data: "", + success: res => { + console.log(multiLang && multiLang.get('701001RWCL-0166')/*"公共字段数据"*/, res); + this.setState({ publicFieldData: res, showFormula: true }); + } + }); + } + + handleTruncation = ()=>{ + this.setState({showConfirmModal:true}); + } + + render() { + let { form, modal } = this.props; + let { createForm } = form; + let { createModal } = modal; + let multiLang = this.props.MutiInit.getIntl(7010); + buttonClick.addBtnEventConfig.click = buttonClick.addBtnEventConfig.click.bind(this); + buttonClick.editBtnEventConfig.click = buttonClick.editBtnEventConfig.click.bind(this); + buttonClick.saveBtnEventConfig.click = buttonClick.saveBtnEventConfig.click.bind(this); + buttonClick.cancelBtnEventConfig.click = buttonClick.cancelBtnEventConfig.click.bind(this); + buttonClick.deleteBtnEventConfig.click = buttonClick.deleteBtnEventConfig.click.bind(this); + buttonClick.saveModalBtnEventConfig.click = buttonClick.saveModalBtnEventConfig.click.bind(this); + buttonClick.cancelModalBtnEventConfig.click = buttonClick.cancelModalBtnEventConfig.click.bind(this); + return ( +
    +
    + ); + } +} + +TreeTable = createPage({ + mutiLangCode: '7010' +})(TreeTable); +export default TreeTable; + +/*RXJkFhQCaWpSqyKm3tEedfjWYJ6Noi/eXv1/i1yJzgQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/afterEvent.js new file mode 100644 index 0000000..ade7887 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/afterEvent.js @@ -0,0 +1,28 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +export default function afterEvent(props, moduleId, key, value, changedrows) { + console.log("afterEvent", props, moduleId, key, value, 22, changedrows); + switch (moduleId) { + case window.presetVar.head.modalId: + switch (key) { + case "upgraderule": + if (value.value == "none") { + // 晋级模式:无 + props.form.setFormItemsDisabled(moduleId, { 'upgraderulenum': true }); // 禁用晋级时间字段 + props.form.setFormItemsValue(moduleId,{'upgraderulenum':{value:'',display:''}}) // 初始化晋级时间字段 + props.form.setFormItemsRequired(moduleId,{'upgraderulenum':false}); // 必输晋级时间字段 + } else { + // 晋级模式:有 + props.form.setFormItemsDisabled(moduleId, { 'upgraderulenum': false }); // 可用晋级时间字段 + props.form.setFormItemsRequired(moduleId,{'upgraderulenum':true}); // 必输晋级时间字段 + } + break; + default: + break; + } + break; + default: + break; + } +} + +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/buttonClick.js new file mode 100644 index 0000000..02c9204 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/buttonClick.js @@ -0,0 +1,256 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import { toast } from "nc-lightapp-front"; +import { promptBox } from "nc-lightapp-front" +import requestApi from "../requestApi"; + +//编辑 +let editBtnEventConfig = { + click(props){ + props.button.setButtonsVisible({Add: false,Edit: false,Delete: false,Save: true,Cancel: true}); + props.button.setButtonDisabled(['Save'], false); + this.setState({isAdjustOrder:true,isDisableSearch:true,isEdit:true}); + props.syncTree.setNodeDisable('WorkGroupTree', true); + } +}; + +//保存 +let saveBtnEventConfig = { + click(props){ + // props.button.setButtonsVisible({Add: true,Edit: true,Delete: true,Save: false,Cancel: false}); + let data = props.editTable.getAllData(window.presetVar.head.tableId); + let req = { + 'SSCPriority':data, + 'userjson' : this.state.workGroupPk + } + let that = this; + requestApi.saveTableData({ + data : req, + success: (res) => { + if(res==null){ + + }else { + that.props.editTable.setTableData( + window.presetVar.head.tableId, + res[window.presetVar.head.tableId] + ); + } + props.button.setButtonsVisible({Add: true,Edit: true,Delete: true,Save: false,Cancel: false}); + that.setState({isAdjustOrder:false,isDisableSearch:false,isEdit:false}); + props.syncTree.setNodeDisable('WorkGroupTree', false); + } + }) + } +}; + +//取消 +let cancelBtnEventConfig = { + click(props){ + props.button.setButtonsVisible({Add: true,Edit: true,Delete: true,Save: false,Cancel: false}); + props.editTable.cancelEdit(window.presetVar.head.tableId); + this.setState({isAdjustOrder:false,isDisableSearch:false,isEdit:false}); + props.syncTree.setNodeDisable('WorkGroupTree', false); + } +}; + + +//增加 +let addBtnEventConfig = { + click(props) { + this.setState({ showAddModal: true, isHeadEdit: false }); + // 新增表单赋默认值 + props.form.setFormItemsValue(window.presetVar.head.modalId, { + pk_sscunit: { value: this.state.SSCCenter.refpk, display: null } + }); + props.form.setFormItemsValue(window.presetVar.head.modalId, { + pk_workinggroup: { value: this.state.workGroupPk, display: null } + }); + // 公式编辑器默认值 + this.formulaInputValue = ''; + } +}; + +//删除 +let deleteBtnEventConfig = { + click(props) { + let checkedData = props.editTable.getCheckedRows( + window.presetVar.head.tableId + ); + let delRows = []; + let reqData = {}; + let multiLang = this.props.MutiInit.getIntl(7010); + if (checkedData.length == 0) { + toast({ content: multiLang && multiLang.get('701001RWCL-0089'), color: "warning" });//701001RWCL-0089:请至少选择一行数据 + return; + } + + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('7010-0002'), //删除 + content: multiLang && multiLang.get('701001RWCL-0168'), //"701001RWCL-0168": "确定要删除所选数据吗?" + beSureBtnClick: () => { + for (let i = 0; i < checkedData.length; i++) { + delRows.push(checkedData[i].data); + delRows[i].status = "3"; + } + reqData = { + head: { + areaType: "table", + areacode: "head", + rows: delRows + } + }; + reqData.userjson = this.state.workGroupPk; + requestApi.saveFormData({ + data: reqData, + success: data => { + if (data) { + props.editTable.setTableData( + window.presetVar.head.tableId, + data[window.presetVar.head.tableId] + ); + } else { + props.editTable.setTableData(window.presetVar.head.tableId, { + rows: [] + }); + } + toast({ color: "success", content: multiLang && multiLang.get('701001RWCL-0042') });//701001RWCL-0042:删除成功 + } + }); + }, // 确定按钮点击调用函数,非必输 + }) + } +}; + +let saveModalBtnEventConfig = { + click(props) { + if(!this.props.form.isCheckNow(window.presetVar.head.modalId)){ + return; + } + let data = this.props.form.getAllFormValue(window.presetVar.head.modalId); + data.rows[0].values.formula.value = (this.formulaInputId || {}).value || data.rows[0].values.formula.value; + this.props.form.setFormItemsValue(window.presetVar.head.modalId,{'formula':{value:(this.formulaInputId || {}).value || data.rows[0].values.formula.value,display:null}}); + let reqData = {}; + if(!this.props.form.isCheckNow(window.presetVar.head.modalId)){ + return; + } + // let needChecks = ['code','name','upgraderule','upgraderulenum']; + // let name4NeedChecks = ['编码','名称','晋级模式','晋级时间']; + // let ee = this.props.form.isCheckNow(window.presetVar.head.modalId); + // if(this.formulaInputId.value==""||this.formulaInputId.value.trim()==""){ + // toast({ content: "优先级条件不能为空", color: "danger" }); + // return; + // } + // for(let i=0;i { + this.props.form.EmptyAllFormValue(window.presetVar.head.modalId); + if (data) { + this.setState({ showAddModal: false }); + this.props.editTable.setTableData( + window.presetVar.head.tableId, + data[window.presetVar.head.tableId] + ); + } else { + this.props.editTable.setTableData(window.presetVar.head.tableId, { + rows: [] + }); + } + } + }); + } +}; + +let cancelModalBtnEventConfig = { + click(props) { + this.props.form.EmptyAllFormValue(window.presetVar.head.modalId); + this.setState({ showAddModal: false }); + } +}; + +/** + * 树节点选择事件 + */ +function treeSelectEvent(key, item) { + //设置表格数据 + let req = { pk_workinggroup: item.refpk}; + if(item.refpk=='0001ZG100000SSCGROUP'){ + // 按钮禁用 + this.props.button.setButtonDisabled(['Add', 'Edit', 'Delete'], true); + // 表格清空 + this.props.editTable.setTableData(window.presetVar.head.tableId, {rows: []}); + return; + } + this.setState({ workGroupPk: item.refpk }); + requestApi.getTableData({ + data: req, + success: data => { + // 树节点点击后按钮可用 + this.props.button.setButtonDisabled(['Add', 'Edit'], false); + if (data) { + this.props.editTable.setTableData(window.presetVar.head.tableId,data[window.presetVar.head.tableId]); + } else { + this.props.editTable.setTableData(window.presetVar.head.tableId, {rows: []}); + } + } + }); +} + +function selectedChange(props, moduleId, newVal, oldVal) { + console.log('selectedChangeEvent',props,moduleId,newVal,oldVal); + if(newVal>0){ + props.button.setButtonDisabled(['Delete'], false); + }else { + props.button.setButtonDisabled(['Delete'], true); + } +} + + +/** + * @Author:gaoymf + * @Description:导航条点击 + * @Date: 16:12 2018/9/15 + * @param: + */ +let handleTruncation = function(){ + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'), //"提示信息" + content: multiLang && multiLang.get('701001RWCL-0074'),//此操作会丢失本次修改,请确定? + beSureBtnClick: ()=>{ + this.refs.nav.linkByClickedIdx(); + } + }) +} + + + +export default { cancelBtnEventConfig, editBtnEventConfig, saveBtnEventConfig, deleteBtnEventConfig, addBtnEventConfig, treeSelectEvent, saveModalBtnEventConfig, cancelModalBtnEventConfig,selectedChange,handleTruncation}; + +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/fixedTemplet.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/fixedTemplet.js new file mode 100644 index 0000000..5c12885 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/fixedTemplet.js @@ -0,0 +1,184 @@ +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ +export default { + /* addModal: { + code: "SSCPriority", + moduletype: "form", + items: [ + { + itemtype: "input", + label: "主键", + attrcode: "pk_priority", + maxlength: "20" + }, + { + itemtype: "refer", + label: "集团", + attrcode: "pk_group", + maxlength: "20" + }, + { + itemtype: "refer", + label: "所属组织", + attrcode: "pk_org", + maxlength: "20" + }, + { + itemtype: "input", + visible: true, + label: "编码", + attrcode: "code", + maxlength: "100", + required: true + }, + { + itemtype: "input", + visible: true, + label: "名称", + attrcode: "name", + maxlength: "200", + required: true + }, + { + itemtype: "input", + visible: true, + label: "优先级条件", + attrcode: "formula", + required: true + }, + { + itemtype: "input", + visible: false, + label: "优先级条件显示名称", + attrcode: "formulashow", + required: true + }, + { + itemtype: "select", + visible: true, + label: "晋级模式", + attrcode: "upgraderule", + maxlength: "50", + required: true, + options: [ + { + display: "无", + value: "none" + }, + { + display: "分钟", + value: "minute" + }, + { + display: "小时", + value: "hour" + }, + { + display: "天", + value: "day" + }, + { + display: "周", + value: "week" + } + ] + }, + { + itemtype: "number", + visible: true, + label: "晋级时间", + attrcode: "upgraderulenum" + }, + { + itemtype: "number", + visible: false, + label: "优先级顺序", + attrcode: "ordernum", + "scale":"0" + }, + { + attrcode: "creator", + maxlength: "20", + label: "创建人", + itemtype: "refer" + }, + { + attrcode: "creationtime", + maxlength: "19", + label: "创建时间", + itemtype: "datepicker" + }, + { + attrcode: "modifier", + maxlength: "20", + label: "最后修改人", + itemtype: "refer" + }, + { + attrcode: "modifiedtime", + maxlength: "19", + label: "最后修改时间", + itemtype: "datepicker" + }, + { + itemtype: "datepicker", + label: "时间戳", + attrcode: "ts", + maxlength: "19" + } + ], + name: "优先级设置", + pagination: false + },*/ + extendButtons:[ + { + "id": "0001ZG10000000000X7E", + "type": "button_main", + "key": "Edit_list", + "title": "修改", + "area": 'listbtnarea', + "children": [] + }, + { + "id": "0001ZG10000000000X7K", + "type": "button_main", + "key": "Delete_list", + "title": "删除", + "area": 'listbtnarea', + "children": [] + }, + { + "id": "0001ZG10000000000X7U", + "type": "button_main", + "key": "Up", + "title": "上移", + "area": 'listbtnarea', + "children": [] + }, + { + "id": "0001ZG10000000000X7D", + "type": "button_main", + "key": "Down", + "title": "下移", + "area": 'listbtnarea', + "children": [] + }, + { + "id": "0001ZG10000000000X7T", + "type": "button_main", + "key": "SettingTop", + "title": "置顶", + "area": 'listbtnarea', + "children": [] + }, + { + "id": "0001ZG10000000000X7G", + "type": "button_main", + "key": "SettingBottom", + "title": "置底", + "area": 'listbtnarea', + "children": [] + } +] +}; + +/*QqOYif2dFZXT39A6hY82WQIEANXc0ECdakPiQJg68d0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/index.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/index.js new file mode 100644 index 0000000..66ab623 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/index.js @@ -0,0 +1,9 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ + +import initTemplate from './initTemplate'; +import buttonClick from './buttonClick'; +import afterEvent from './afterEvent'; + +export { buttonClick,initTemplate,afterEvent}; + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/initTemplate.js new file mode 100644 index 0000000..2d20b06 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/initTemplate.js @@ -0,0 +1,102 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import "ssccommon/components/globalPresetVar"; +import { setTableExtendCol } from "ssccommon/components/profile"; +import tableExtendButtonClick from './tableExtendButtonClick'; +import {getMultiLang} from 'nc-lightapp-front'; + +//变量设置规范,如需要 +window.presetVar = { + ...window.presetVar, + head: { + treeId: "WorkGroupTree", + tableId: "SSCPriority", + tableExtendBtnArea:"listbtnarea", + modalId: "mainModal" + } +}; + +export default function(props) { + let _this = this; + + let createUIDomPromise = new Promise((resolve, reject) => { + props.createUIDom( + { + // pagecode: "700106SYXJ_list_001", //页面id + // appid: "0001ZG10000000000TBY", //注册按钮的id + // appcode: "700106SYXJ" + }, + (data) => { + resolve(data); + } + ) + }) + + let getMultiLangPromise = new Promise((resolve, reject) => { + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + resolve(json); + } + }) + }) + + Promise.all([createUIDomPromise, getMultiLangPromise]).then((resultList) => { + let data = resultList[0]; + let json = resultList[1]; + let meta = data.template; + let buttons = data.button; + // 静态模板? + meta[window.presetVar.head.modalId] = data.template['SSCPriority_form']; + // 设置form编辑态 + meta[window.presetVar.head.modalId].status = 'edit'; + //let buttons = button.concat(fixTemplate.extendButtons); + props.meta.setMeta(meta); + props.button.setButtons(buttons); + //设置按钮行为为弹窗 + props.button.setPopContent('Delete_list', json['701001RWCL-0039']) /* 确定要删除吗? */ + // 设置默认显示的按钮 + props.button.setButtonsVisible({ Add: true, Edit: true, Delete: true, Save: false, Cancel: false }); + // 默认禁用 + props.button.setButtonDisabled(['Add', 'Edit', 'Delete'], true); + // 设置操作按钮的事件 + setTableExtendCol(props, meta, [{ + width: '180px', + areaId: window.presetVar.head.tableId, + btnAreaId: window.presetVar.head.tableExtendBtnArea, + buttonVisible: (record, index) => { + if (_this.state.isAdjustOrder) { + return ['SettingTop', 'Up', 'Down', 'SettingBottom'] + } else { + return ['Edit_list', 'Delete_list'] + } + + }, + buttonLimit: 4, + onButtonClick: tableExtendButtonClick.bind(_this) + }]); + }) + + props.renderItem( + "form", + window.presetVar.head.modalId, + "formula", +
    + { + this.formulaInputId = ref; + }} + className="formula-input nc-theme-from-input-bgc nc-theme-form-input-c nc-theme-form-input-bc" + /> + { + this.openFormula(); + }} + style={{ cursor: "pointer" }} + /> +
    + ); +} + + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/events/tableExtendButtonClick.js b/src/ssctpaaa/sscsetting/sscpriority/config/events/tableExtendButtonClick.js new file mode 100644 index 0000000..ec73286 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/events/tableExtendButtonClick.js @@ -0,0 +1,91 @@ +/*ftMVHn90Wklge8LW19nRRZY+V69Lomh4Egnv/oC6QaLjFUOsrhPJCK7CcVE6BSh9*/ +import requestApi from "../requestApi"; +/** + * 表格扩展按钮click事件 + */ +function tableExtendButtonClick() { + return { + ['Delete_list'] : (record, index) => { + let headData = this.props.editTable.getAllRowsRemoveKeys(window.presetVar.head.tableId,["opr"]); + let pk_priority = headData[index].values.pk_priority.value; + if (pk_priority != "") { + let reqData = {}; + reqData.head = { + areaType: "form", + areacode: "head", + rows: [headData[index]] + }; + reqData.head.rows[0].status = "3"; + reqData.userjson = headData[index].values.pk_workinggroup.value; + requestApi.saveFormData({ + data: reqData, + success: data => { + if (data) { + this.props.editTable.setTableData(window.presetVar.head.tableId,data[window.presetVar.head.tableId]); + } else { + this.props.editTable.setTableData(window.presetVar.head.tableId,{ rows: [] }); + } + } + }); + } + }, + ['Edit_list'] : (record, index) => { + this.setState({ showAddModal: true, isHeadEdit: true }); + this.props.form.setFormStatus(window.presetVar.head.modalId, "edit"); + let headValues = this.props.editTable.getAllRowsRemoveKeys(window.presetVar.head.tableId,["opr", "numberindex"])[index].values; + this.formulaInputValue = headValues.formula.value !=undefined ?headValues.formula.value :''; + let formValues = { + rows:[{values:headValues}] + } + this.props.form.setAllFormValue({ [window.presetVar.head.modalId]: formValues }); + if(headValues.upgraderule.value=='none'){ + this.props.form.setFormItemsDisabled(window.presetVar.head.modalId, { 'upgraderulenum': true }); + this.props.form.setFormItemsRequired(window.presetVar.head.modalId,{'upgraderulenum':false}); // 必输晋级时间字段 + }else { + this.props.form.setFormItemsDisabled(window.presetVar.head.modalId, { 'upgraderulenum': false }); + this.props.form.setFormItemsRequired(window.presetVar.head.modalId,{'upgraderulenum':true}); // 必输晋级时间字段 + } + }, + ['Up'] : (record, index) => { + if(index!=0){ + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, index-1, 'ordernum', {value: record.values.ordernum.value, display:record.values.ordernum.value}); + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, index, 'ordernum', {value: parseInt(record.values.ordernum.value)-1, display:parseInt(record.values.ordernum.value)-1}); + this.props.editTable.moveRow(window.presetVar.head.tableId,index, index-1); + this.props.editTable.setRowStatus(window.presetVar.head.tableId, [index,index-1], '1'); + } + }, + ['Down'] : (record, index) => { + let totalIndex = this.props.editTable.getNumberOfRows(window.presetVar.head.tableId); + if(index!=totalIndex-1){ + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, index+1, 'ordernum', {value: record.values.ordernum.value, display:record.values.ordernum.value}); + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, index, 'ordernum', {value: parseInt(record.values.ordernum.value)+1, display:parseInt(record.values.ordernum.value)+1}); + this.props.editTable.moveRow(window.presetVar.head.tableId,index, index+1); + this.props.editTable.setRowStatus(window.presetVar.head.tableId, [index,index+1], '1'); + } + }, + ['SettingTop'] : (record, index) => { + this.props.editTable.setRowPosition(window.presetVar.head.tableId,index,'up'); + let tableData = this.props.editTable.getAllData(window.presetVar.head.tableId); + let changeIndex = [] + tableData.rows.map((row,idx)=>{ + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, idx, 'ordernum', {value:idx+1, display:idx+1}); + changeIndex.push(idx); + }) + this.props.editTable.setRowStatus(window.presetVar.head.tableId, changeIndex, '1'); + }, + ['SettingBottom'] : (record, index) => { + this.props.editTable.setRowPosition(window.presetVar.head.tableId,index,'down'); + let tableData = this.props.editTable.getAllData(window.presetVar.head.tableId); + let changeIndex = [] + tableData.rows.map((row,idx)=>{ + this.props.editTable.setValByKeyAndIndex(window.presetVar.head.tableId, idx, 'ordernum', {value:idx+1, display:idx+1}); + changeIndex.push(idx); + }) + this.props.editTable.setRowStatus(window.presetVar.head.tableId, changeIndex, '1'); + }, + } +} + + +export default tableExtendButtonClick; +/*ftMVHn90Wklge8LW19nRRZY+V69Lomh4Egnv/oC6QaLjFUOsrhPJCK7CcVE6BSh9*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/index.js b/src/ssctpaaa/sscsetting/sscpriority/config/index.js new file mode 100644 index 0000000..b19d4a7 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/index.js @@ -0,0 +1,8 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react'; +import ReactDOM from 'react-dom'; +import TreeTable from './TreeTable'; + +ReactDOM.render( + , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/index.less b/src/ssctpaaa/sscsetting/sscpriority/config/index.less new file mode 100644 index 0000000..f8ef041 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/index.less @@ -0,0 +1,89 @@ +.formula-div { + width: 100%; + height: 30px; + position: relative; + .formula-input { + border: 1px solid #DBDBDB; + outline:none; + color: #292e35; + padding: 0 8px; + border-radius: 4px; + font-size: 13px; + width: 100%; + height: 100%; + position: relative; + display: inline-block; + background-color: #fff; + background-image: none; + letter-spacing: normal; + word-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; + text-rendering: auto; + text-align: start; + } + .icon-refer{ + position: absolute; + right: 1px; + top: 1px; + z-index: 0; + &::after { + font-family: 'iconfont'; + content: '\E62A'; + color: #999; + font-size: 16px; + width: 18px; + height: 26px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + } + } +.ssccenter{ + width:200px; + margin-left: 14px; +} +.tree-table{ + height: calc(~"100% - 114px") +} + +#sscpriority { + .right-area { + padding: 0px 0px; + } + .header{ + height: 46px; + .title{ + font-weight: bold; + } + } + .header-middle { + margin-left: 30px !important; + } + .dragWidthCom_left { + height: auto; + } +} + +.ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 9px; +} + +.ssc_edit_modal_form{ + margin-right: 30px; +} + +.u-table-content .u-table-thead tr{ + border-top:0px !important; +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscpriority/config/requestApi.js b/src/ssctpaaa/sscsetting/sscpriority/config/requestApi.js new file mode 100644 index 0000000..ee55f21 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscpriority/config/requestApi.js @@ -0,0 +1,75 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import requestApi from "ssccommon/components/requestApi"; +import { ajax } from 'nc-lightapp-front'; + + + +let requestDomain = ''; +let requestApiOverwrite = { + ...requestApi, + + query: (opt) => { + ajax({ + url: opt.url || `${requestDomain}/nccloud/erm/erbudgetmg/FysqViewBillAction.do`, + data: opt.data, + success: (data) => { + opt.success(data); + } + }) + }, + // 查询树节点 + queryTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/QueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + getTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCPriorityQryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + saveTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCPrioritySaveAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + saveFormData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCPrioritySaveAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + queryPublicFields: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/QueryPublicFieldAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + } + +} + +export default requestApiOverwrite; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/sscunit/config/events/afterEvent.js new file mode 100644 index 0000000..6806848 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/events/afterEvent.js @@ -0,0 +1,17 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +/** + * 组件编辑后事件 + * @param {} props + * @param {*} moduleId + * @param {*} key + * @param {*} value + */ +export default function afterEvent(props,moduleId,key,value) { + switch(moduleId) { + case 'body1' : + break; + case 'main' : + break; + } +}; +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/sscunit/config/events/buttonClick.js new file mode 100644 index 0000000..fe62476 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/events/buttonClick.js @@ -0,0 +1,51 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from "../requestApi"; + +/** + * 新增按钮点击 + */ +let addButtonClick = function () { + //清空表单 + this.props.form.EmptyAllFormValue([this.formId]); + this.setState({ showFormModal: true }); +}; + +/** + * 保存按钮点击 + */ +let saveFormButtonClick = function () { + let formData = this.props.form.getAllFormValue(this.formId); + //表单验证 + if (!this.props.form.isCheckNow(this.formId)) { + return; + } + //兼容接口数据 + if (formData.rows[0].values.enablestate.value === true || formData.rows[0].values.enablestate.value === "2") { + formData.rows[0].values.enablestate.value = "2"; + } else { + formData.rows[0].values.enablestate.value = "3"; + } + let sscunitForm = { form: formData }; + requestApi.saveFormData({ + data: sscunitForm, + success: res => { + this.setState({ + data: res ? res[this.formId].rows : [], + multiLangName: res ? JSON.parse(decodeURIComponent(res.userjson)) : [], + showFormModal: false + }); + } + }); +}; + +/** + * 取消按钮点击 + */ +let cancelFormButtonClick = function () { + this.setState({ showFormModal: false }); + this.props.form.EmptyAllFormValue([this.formId]); +}; + +export default { addButtonClick, saveFormButtonClick, cancelFormButtonClick }; + +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/events/index.js b/src/ssctpaaa/sscsetting/sscunit/config/events/index.js new file mode 100644 index 0000000..e242bf4 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/events/index.js @@ -0,0 +1,12 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick'; +import afterEvent from './afterEvent'; +import initTemplate from './initTemplate'; + +export { initTemplate,buttonClick, afterEvent}; + + + + + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/sscunit/config/events/initTemplate.js new file mode 100644 index 0000000..34e7255 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/events/initTemplate.js @@ -0,0 +1,21 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +/** + * 数据初始化 + * @param {} props + */ +export default function (props) { + + props.createUIDom( //请求模板 + { + pagecode: '700101GXZX_C',//页面编码 + appcode: '700101GXZX'//小应用编码 + }, + function (data) { + let meta = data.template; + // 设置表格编辑态 + meta["sscunit_card"].status = 'edit'; + props.meta.setMeta(meta); //渲染模板 + }); +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/index.js b/src/ssctpaaa/sscsetting/sscunit/config/index.js new file mode 100644 index 0000000..b2e703e --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import SSCUnit from './sscunit'; +ReactDOM.render( + , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/index.less b/src/ssctpaaa/sscsetting/sscunit/config/index.less new file mode 100644 index 0000000..ba8d5aa --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/index.less @@ -0,0 +1,161 @@ +@import "~base"; + +.content-wrap { + // box-shadow:0px 1px 1px 0px rgba(74,81,93,0.1); + border-radius:3px; + height: 100%; + min-height: 585px; + + div.nc-singleTable-header-area { + border-top-left-radius: 3px !important; + border-top-right-radius: 3px !important; + } +} + +.content-wrap .form-content { + background: #fff; + padding-bottom: 10px; + padding-top: 20px; + margin-bottom: 8px; +} +.content-wrap .form-content .ssc-form { + box-shadow: 0 1px 2px 0 rgba(200, 200, 200, 0.5); + margin-bottom: 10px; + margin-left: 40px; + margin-right: 240px; + width:auto; + min-height:150px; + background:rgba(255,255,255,1); + border-radius:3px; + border:1px solid rgba(206,206,206,0.75); + .head-grow { + margin: 20px 0px 11px; + width: 100%; + height: 24px; + font-size:17px; + font-family:PingFangSC-Medium; + color:rgba(17,17,17,1); + line-height:24px; + position: relative; + .head-label { + white-space: nowrap; + position: absolute; + left: 94px; + } + .head-label span { + font-size: 15px; + font-weight: bold; + } + .head-btn { + position: absolute; + right: 30px; + .btn { + margin-left: 22px; + font-size:14px; + font-family:PingFangHK-Regular; + color:#007ACE; + line-height:21px; + cursor: pointer; + outline: none; + } + } + span.customer-label[aria-describedby="delConfirmId"] { + color: #007ACE; + } + } + .grow { + margin-bottom: 11px; + padding-left:94px; + width:100%; + height:auto; + font-size:13px; + font-family:MicrosoftYaHei; + line-height:21px; + .column-1-1{ + width: 100% + } + .grow-label-name { + float:left; + width: 120px; + margin-right: 15px; + height:21px; + text-align:right; + color:rgba(85,85,85,1); + } + .grow-label-value { + display: block; + overflow: hidden; + zoom: 1; + color: #111111; + word-wrap: break-word; + word-break: break-all; + } + } +} + +.avatar-box { + position: absolute; + width: 25px; + height: 25px; + background:rgba(255,179,84,1); + border-radius: 50%; + left: -45px; +} + +.img{ + position: absolute; + width: 40px; + height:40px; + left: -35px; +} + +.itemText{ + display: inline-block; + width: 120px; + text-align: right; + margin-right: 15px; + color:rgba(85,85,85,1); +} + +.u-button{ + min-width: 60px!important; +} + +.ssc_edit_modal_form{ + margin-right: 30px; +} + +.content-wrap .form-content .ssc-form .grow .grow-label-value{ + margin-right:30px; +} + +.page-title-Icon { + margin: 0 8px 0 20px; +} + +.u-switch { + display: inline-block !important; +} + +.junior { + .u-modal-body { + height: 206px !important; + } +} +.nc-singleTable-header-area{ + border-radius: 0!important; +} + +.nc-single-table { + display: flex; + flex-direction: column; +} +.nc-singleTable-table-area { + flex: 1; + display: flex; + flex-direction: column; +} + +.content-wrap .form-content { + flex: 1; +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/requestApi.js b/src/ssctpaaa/sscsetting/sscunit/config/requestApi.js new file mode 100644 index 0000000..c63ebea --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/requestApi.js @@ -0,0 +1,79 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import {ajax} from 'nc-lightapp-front'; +/** + * 后台接口 + */ +let requestApi = { + + //单据模板接口 + tpl: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitTempletAction.do', + data: opt.data, + success: opt.success + }); + }, + + //查询共享中心 + query:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + // 保存表单 + saveFormData:(opt) =>{ + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitAddAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + // 删除表单 + delFormData:(opt)=>{ + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitDeleteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + + //停用 + disableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitStopAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + + //启用 + enableSSCUnit:(opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUnitStartAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + } + +} +export default requestApi; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/sscunit/config/sscunit.js b/src/ssctpaaa/sscsetting/sscunit/config/sscunit.js new file mode 100644 index 0000000..e1223e8 --- /dev/null +++ b/src/ssctpaaa/sscsetting/sscunit/config/sscunit.js @@ -0,0 +1,304 @@ +/*RonKowrvrGNVYvIZbpH2UWcmWrCJOZn5Kkgd45/8LgM=*/ +import React, { Component } from "react"; +import { createPage, base, createPageIcon, toast } from "nc-lightapp-front"; +import { initTemplate, buttonClick } from "./events"; +import requestApi from "./requestApi"; +import { Nav } from "ssccommon/components/global-nav"; +import "./index.less"; +import gxicon1 from '../../../public/image/gxicon1.png'; +import gxicon2 from '../../../public/image/gxicon2.png'; +import gxicon3 from '../../../public/image/gxicon3.png'; +import gxicon4 from '../../../public/image/gxicon4.png'; +import gxicon5 from '../../../public/image/gxicon5.png'; +import { + ProfileStyle, + ProfileHead, + ProfileBody, + ButtonGroup, + HeadCenterCustom, + ProfileSearch, + NonstandardButtonGroup +} from 'ssccommon/components/profile'; +import PubMessage from 'ssccommon/utils/pubMessage'; + +const { NCModal, NCButton, NCPopconfirm, NCTableSwitch, NCDiv } = base; + +import { + nccGetTheme, +} from 'ssccommon/utils/asyncFunctions.js'; + +/** + * 创建共享中心 + */ +class SSCUnit extends Component { + constructor(props) { + super(props); + this.props = props; + this.formModalId = "formModal"; // 新增/编辑modal关闭 + this.formId = "sscunit_card"; // 新增表单组件模板id + this.pubMessage = new PubMessage(); //公共toast提示 + this.state = { + showFormModal: false, // 新增/编辑表单模态显示 + data: [], //共享中心数据列表 + isBlackTheme: false, + }; + //初始化 + initTemplate.call(this, props); + } + + componentDidMount() { + this._getTheme() + + requestApi.query({ + data: {}, + success: data => { + this.setState({ data: data ? data[this.formId].rows : [], multiLangName: data ? JSON.parse(decodeURIComponent(data.userjson)) : [] }); + } + }); + } + + _getTheme = async () => { + const theme = await nccGetTheme() + const isBlackTheme = theme === 'black' + this.setState({isBlackTheme}) + } + + //列表区域jsx + drawFormList = () => { + let formList = []; + let imgList = [gxicon1, gxicon2, gxicon3, gxicon4, gxicon5]; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + const sscFormStyle = this.state.isBlackTheme ? {boxShadow: 'none'} : {} + this.state.data.map((item, index) => { + let values = item.values; + //拼接自动化测试标记 + let itemFieldId = []; + values.pk_org && itemFieldId.push(values.pk_org.display); + values.code && itemFieldId.push(values.code.value); + formList.push( + +
    +
    + + + {/*  */} + {/*saddsadasdasdasdasdasdasdasdasd*/} + {item.values.code.value + ":"} + {this.state.multiLangName[index]} + + + + {/*701001RWCL-0099:确定停用共享中心?,701001RWCL-00100:确定启用共享中心?*/} + { + this.onChange(item.values.pk_unit.value); + }} + > + + + + + + { + this.editForm(item.values.pk_unit.value); + }} + tabindex={0} + >{/*"701001RWCL-0038": "修改"*/} + {multiLang && multiLang.get('701001RWCL-0038')} + + + {/*"701001RWCL-0039": "确认删除?"*/} + { + this.delForm(item.values.pk_unit.value); + }} + > + {/*"7010-0002": "删除",*/} + {multiLang && multiLang.get('7010-0002')} + + + +
    +
    +
    + {/*"701001RWCL-0040": "对应组织"*/} + {multiLang && multiLang.get('701001RWCL-0040')} + + {item.values.pk_org.display} + +
    +
    +
    +
    + {/*"701001RWCL-0041": "备注"*/} + {multiLang && multiLang.get('701001RWCL-0041')} + + {item.values.remark ? item.values.remark.value : ""} + +
    +
    +
    +
    + ); + }); + return formList; + }; + + // 删除表单 + delForm = pk => { + let newData = this.state.data.filter(item => { + return pk === item.values.pk_unit.value; + }); + let findIdx = -1, index = -1 + while (++index < this.state.data.length) { + if (pk === this.state.data[index].values.pk_unit.value) { + findIdx = index + break + } + } + let sscunitForm = { form: { areaType: "form", rows: newData } }; + // 请求删除 + requestApi.delFormData({ + data: sscunitForm, + success: res => { + const {multiLangName} = this.state + multiLangName.splice(findIdx, 1) + this.setState({ data: res ? res[this.formId].rows : [], multiLangName }); + this.pubMessage.deleteSuccess(); + } + }); + }; + // 修改表单 + editForm = pk => { + this.setState({ showFormModal: true }); + let editFormItem = this.state.data.filter(item => { + return pk == item.values.pk_unit.value; + }); + editFormItem = JSON.parse(JSON.stringify(editFormItem)); + this.props.form.setAllFormValue({ [this.formId]: { rows: editFormItem } }); + }; + + //请求启用/停止 + onChange = (pk) => { + let newData = this.state.data.filter(item => { + return pk === item.values.pk_unit.value; + }); + if (newData[0].values.enablestate.value != "2") { + let sscunitForm = { form: { areaType: "form", rows: newData } }; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + requestApi.enableSSCUnit({ + data: sscunitForm, + success: res => { + this.setState({ data: res ? res[this.formId].rows : [] }); + // "701001RWCL-0043": "启用成功" + toast({ title: multiLang && multiLang.get('701001RWCL-0043')}) + } + }); + } else { + newData[0].values.enablestate.value = "2"; + let sscunitForm = { form: { areaType: "form", rows: newData } }; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + requestApi.disableSSCUnit({ + data: sscunitForm, + success: res => { + this.setState({ data: res ? res[this.formId].rows : [] }); + + // "701001RWCL-0044": "停用成功" + toast({ title: multiLang && multiLang.get('701001RWCL-0044')}) + + } + }); + } + }; + + render() { + let { + form: { createForm } + } = this.props; + let formLists = this.drawFormList(); + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + return ( +
    +
    + ); + } +} + +let SSCUnitDom = createPage({ + mutiLangCode: '7010' +})(SSCUnit); +export default SSCUnitDom; + +/*RonKowrvrGNVYvIZbpH2UWcmWrCJOZn5Kkgd45/8LgM=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/widgets/spgz/config.json b/src/ssctpaaa/sscsetting/widgets/spgz/config.json new file mode 100644 index 0000000..64682f9 --- /dev/null +++ b/src/ssctpaaa/sscsetting/widgets/spgz/config.json @@ -0,0 +1,4 @@ +{ + "template": "widget.html", + "hash": false +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/widgets/spgz/index.js b/src/ssctpaaa/sscsetting/widgets/spgz/index.js new file mode 100644 index 0000000..0b903f1 --- /dev/null +++ b/src/ssctpaaa/sscsetting/widgets/spgz/index.js @@ -0,0 +1,125 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import './index.less'; +import {ajax, createPage,getMultiLang} from 'nc-lightapp-front' + +class Spgz extends Component { + constructor(props) { + super(props); + this.state = { + json: {} + } + } + componentWillMount() { + let callback = (json) => { + this.setState({json}) + } + getMultiLang({moduleId: 7010, currentLocale: 'zh-CN',domainName: 'ssctp',callback}) + } + componentDidMount() { + // ajax({ + // url: '/nccloud/erm/expdetail/LoanBalanceWidgetAction.do', + // data: {}, + // loading: false, + // success: (res) => { + // let data = res.data; + // let { tocommit, todo } = this.state; + // let callback= (json) => { + // if(data.bbye != null){ + // if(data.bbye.split(".").length == 1){ + // tocommit = (data.bbye+'.00'); + // }else if(data.bbye.split(".").length == 2){ + // // if(data.bbye.split(".").length == 1){ + // // document.getElementById('tocommit').innerHTML+=(data.bbye+'0'); + // // } + // let bbye = data.bbye.split(".") + // let decimalPart = bbye[1].length == 1 ? (bbye[1] + '0') : bbye[1].substr(0,2) + // let totalPart = `${bbye[0]}.${decimalPart}` + // tocommit = totalPart + // }else{ + // tocommit = (data.bbye); + // } + // todo = data.name; + // }else{ + // // "201112GRYE-0001": "人民币", + // todo = json['201112GRYE-0001']; + // } + // this.setState({ + // tocommit, todo + // }) + // } + // // getMultiLang({moduleId: 2011, location: '/src/erm/public/lang/standard/zh-CN/2011-zh-CN.json',currentLocale: 'zh-CN',callback}) + // getMultiLang({moduleId: 2011, domainName: 'erm',currentLocale: 'zh-CN',callback}) + // } + // }); + } + open = (event, para = null) => { + event.stopPropagation() + // if(para){ + // // window.parent.openNew({code:'105602BZPT',name:'报账平台'}, {tab: para}); + // this.props.openTo( + // '/ssctp/sscsetting/approvalrules/config/index.html', + // { + // // pagecode: '201112GRYE_Q', + // // appcode: '201112LBYE', + // // "701001RWCL-0181": "设置智能审批规则", + // name: this.state.json['701001RWCL-0181'], + // tab: para + // } + // ) + // }else{ + // // window.parent.openNew({code:'105602BZPT',name:'报账平台'}, null); + // this.props.openTo( + // '/erm/expdetail/broloanbalance/config/index.html', + // { + // pagecode: '201112GRYE_Q', + // appcode: '201112LBYE', + // // "201112GRYE-0002": "借款余额", + // name: this.state.json['201112GRYE-0002'] + // } + // ) + // } + this.props.openTo( + '/ssctp/sscsetting/approvalrules/config/index.html', + { + // pagecode: '201112GRYE_Q', + // appcode: '201112LBYE', + // "701001RWCL-0181": "设置智能审批规则", + name: this.state.json['701001RWCL-0181'], + tab: para + } + ) + } + render() { + // const { tocommit, todo } = this.state; + return ( + // "701001RWCL-0181": "设置智能审批规则", +
    {this.open(e, null);console.log(111111111)}}> +
    {this.state.json['701001RWCL-0181']}
    + {/*
    小部件
    */} +
    + +
    ssssssssssssssss
    + {/**/} + {/**/} + {/**/} + {/**/} + {/**/} + {/**/} + {/**/} + {/**/} + {/**/} + {/*
    {tocommit}
    {todo}
    */} +
    +
    + ); + } +} + +Spgz = createPage({ + mutiLangCode: '7010' +})(Spgz) +export default Spgz +// ReactDOM.render(, document.querySelector('#app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/widgets/spgz/index.less b/src/ssctpaaa/sscsetting/widgets/spgz/index.less new file mode 100644 index 0000000..688780e --- /dev/null +++ b/src/ssctpaaa/sscsetting/widgets/spgz/index.less @@ -0,0 +1,42 @@ +@import '~widgetsless'; + +#Spgz { + padding: 0 !important; + user-select: none; + + //.title { + // //font-size: 16px; + // font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",SimSun, sans-serif; + // //color: #111111; + // //padding-top: 11px; + // //text-indent: 10px; + // //height: 32px; + //} + + .app-ye { + margin-top: 34px; + img{ + margin-left: 39%; + } + .app-ye-table { + width: 100%; + + .one { + #tocommit { + text-align: center; + line-height: 30px; + height: 30px; + font-size: 25px; + color: #F87321; + margin-bottom: 3px; + } + + #todo { + font-size: 15px; + color: #888888; + line-height: 19px; + } + } + } + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/afterEvent.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/afterEvent.js new file mode 100644 index 0000000..9c859aa --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/afterEvent.js @@ -0,0 +1,53 @@ +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ +import requestApi from "../requestApi"; +/** + * form组件编辑后事件 + */ +export default function afterEvent(props, moduleId, key,changedrows, value,index,data) { + + switch(key) {//key为表单字段的attrcode + case 'billtype' : + let billtype = props.form.getFormItemsValue(this.formId,'billtype'); + let tranction = props.form.getFormItemsValue(this.formId,'tranction'); + requestApi.UpdateBilltype({ + data: { + billtype: billtype.value, + tranction: tranction.value + }, + success: res => { + let resvalue = {value:{},display:{}}; + resvalue.value = res.value; + resvalue.display = res.display; + props.form.setFormItemsValue(moduleId, { + tranction: resvalue + }); + } + }); + // props.form.setFormItemsValue(this.formId, { + // tranction: {} + // }); + break; + case 'standardtime' : + if(props.form.getFormItemsValue(this.formId,"standardtime").value>0){ + props.form.setFormItemsDisabled(this.formId,{'advancetime':false}) + }else { + // props.form.setFormItemsValue(this.formId,{"standardtime":{value:null,display:null}}); + props.form.setFormItemsDisabled(this.formId,{'advancetime':true}) + props.form.setFormItemsValue(this.formId,{"advancetime":{value:null,display:null}}); + } + break; + case 'advancetime' : + // if(parseInt(props.form.getFormItemsValue(this.formId,"advancetime").value)<=0){ + // props.form.setFormItemsValue(this.formId,{"advancetime":{value:null,display:null}}); + // } + // if(parseInt(props.form.getFormItemsValue(this.formId,"advancetime").value)>parseInt(props.form.getFormItemsValue(this.formId,"standardtime").value)){ + // toast({ + // color: "danger", + // content: "提前预警时间(小时)不能大于标准作业时间(小时)" + // }); + // // props.form.setFormItemsValue(this.formId,{"advancetime":{value:null,display:null}}); + // } + break; + } +}; +/*DncIqBreQz6WZRX+v7OzgYck/N8QqnGjlSwXHOEruow=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/formEveManager.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/formEveManager.js new file mode 100644 index 0000000..07c740d --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/formEveManager.js @@ -0,0 +1,422 @@ +/*b9zSIuW+hz2B5CYjaIEfjKTxd7CCQI80KlePTTuMlxA=*/ +import { promptBox, toast } from "nc-lightapp-front"; +import requestApi from "./../requestApi"; + +/** + * @Author:gaoymf + * @Description:保存/更新按钮点击 + * @Date: 16:13 2018/6/11 + * @param: + */ +let saveFormButtonClick = function() { + let formListData = this.props.form.getAllFormValue(this.formId); + let multiLang = this.props.MutiInit.getIntl(7010); + formListData.rows[0].values.formula.value = this.formulaInputId == undefined? "": this.formulaInputId.value; + delete formListData.rows[0].status; + let editData = this.state.formListData.filter(formData => { + return ( + formData.values.pk_allotrule.value === + formListData.rows[0].values.pk_allotrule.value + ); + }); + + if (this.props.form.isCheckNow(this.formId)) { + if(parseInt(this.props.form.getFormItemsValue(this.formId,"standardtime").value)<=0){ + toast({ + color: "warning", + content: "标准作业时间(小时)必须大于0!" + }); + return + } + + if(parseInt(this.props.form.getFormItemsValue(this.formId,"advancetime").value)<=0){ + toast({ + color: "warning", + content: "提前预警时间(小时)必须大于0!" + }); + return + } + if(parseInt(this.props.form.getFormItemsValue(this.formId,"advancetime").value)>parseInt(this.props.form.getFormItemsValue(this.formId,"standardtime").value)){ + toast({ + color: "danger", + content: "提前预警时间(小时)不能大于标准作业时间(小时)" + }); + return + } + // 发送请求保存 + if ( + formListData.rows[0].values.pk_allotrule.value !== undefined && + formListData.rows[0].values.pk_allotrule.value !== null + ) { + //console.log("修改规则-保存", formListData.rows[0]); + // 模板中没有childrenVO 单独处理childrenVO,childrenVO做为后端ts校验用 + formListData.rows[0].values.childrenVO = editData[0].values.childrenVO; + formListData.rows[0].values.parentVO = editData[0].values.parentVO; + requestApi.updateFormData({ + data: formListData.rows[0], + success: res => { + toast({ + color: "success", + content: multiLang && multiLang.get('701001RWCL-0118') + }); + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let req = { + pk_workinggroup: selectNode.refpk, + enablestate: this.state.showDisabled + }; + queryFormListData.call(this, req); + this.closeModal(this.formModalId); + } + }); + } else { + // 特殊处理 ts数据 + delete formListData.rows[0].values.childrenVO; + delete formListData.rows[0].values.parentVO, + // console.log("新增规则-保存", formListData.rows[0]); + requestApi.saveFormData({ + data: formListData.rows[0], + success: res => { + toast({ + color: "success", + content: multiLang && multiLang.get('701001RWCL-0118') + }); + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let req = { + pk_workinggroup: selectNode.refpk, + enablestate: this.state.showDisabled + }; + queryFormListData.call(this, req); + this.closeModal(this.formModalId); + } + }); + } + } +}; + +/** + * @Author:gaoymf + * @Description:取消按钮点击 + * @Date: 16:15 2018/6/11 + * @param: + */ +let cancelFormButtonClick = function() { + this.props.form.EmptyAllFormValue(this.formId); + this.formulaInputValue = ""; + this.closeModal(this.formModalId); +}; + +/** + * @Author:gaoymf + * @Description:任务重置 + * @Date: 15:59 2018/6/12 + * @param: + */ +let resetButtonClick = function() { + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: "warning", // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0077'), //"重置任务" + content: multiLang && multiLang.get('701001RWCL-0073'),//该操作会重置任务,请确定? + beSureBtnClick: () => { + requestApi.resetTask({ + data: { + pk_sscunit: this.state.SSCCenter.refpk + }, + success: res => { + toast({title: multiLang && multiLang.get('701001RWCL-0162'), content: (multiLang && multiLang.get('701001RWCL-0163'))+res.resetnum+(multiLang && multiLang.get('701001RWCL-0076'))});//701001RWCL-0162:重置完成,701001RWCL-0163:已重置,701001RWCL-0076:条任务 + } + }); + } + }); +}; + +/** + * @Author:gaoymf + * @Description:新增 + * @Date: 14:59 2018/6/12 + * @param: + */ +let addFormButtonClick = function() { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let multiLang = this.props.MutiInit.getIntl(7010); + if (selectNode.isleaf) { + // 末级节点可以直接修改 + // 清空表单 + this.props.form.EmptyAllFormValue(this.formId); + // 初始化共享中心pk + this.props.form.setFormItemsValue(this.formId, { + pk_sscunit: { value: this.state.SSCCenter.refpk, display: "" } + }); + // 初始化工作组的pk + this.props.form.setFormItemsValue(this.formId, { + pk_workinggroup: { value: selectNode.refpk, display: "" } + }); + // 判断选中节点是父节点还是子节点 父节点共享环节非必填 子节点共享环节必填 + if (selectNode.isleaf) { + // 末级作业组的作业组规则共享环节是必填 + this.props.form.setFormItemsRequired(this.formId, { pk_sscnode: true }); + } else { + // 非末级作业组的作业组规则共享环节非必填 + this.props.form.setFormItemsRequired(this.formId, { pk_sscnode: false }); + } + // 初始化公式字段 + this.formulaInputValue = ""; + this.setState({ showFormModal: true }); + } else { + // 父级节点校验 + requestApi.checkParentHandleEnable({ + data: { pk_workinggroup: selectNode.refpk }, + success: res => { + if (!res) { + // 如果下级作业组有规则就不在允许修改规则 + //701001RWCL-0101:已存在下级作业组规则,不允许修改规则 + toast({ + color: "danger", + content: multiLang && multiLang.get('701001RWCL-0101') + }); + } else { + // 清空表单 + this.props.form.EmptyAllFormValue(this.formId); + // 初始化共享中心pk + this.props.form.setFormItemsValue(this.formId, { + pk_sscunit: { value: this.state.SSCCenter.refpk, display: "" } + }); + // 初始化工作组的pk + this.props.form.setFormItemsValue(this.formId, { + pk_workinggroup: { value: selectNode.refpk, display: "" } + }); + // 判断选中节点是父节点还是子节点 父节点共享环节非必填 子节点共享环节必填 + if (selectNode.isleaf) { + // 末级作业组的作业组规则共享环节是必填 + this.props.form.setFormItemsRequired(this.formId, { + pk_sscnode: true + }); + } else { + // 非末级作业组的作业组规则共享环节非必填 + this.props.form.setFormItemsRequired(this.formId, { + pk_sscnode: false + }); + } + // 初始化公式字段 + this.formulaInputValue = ""; + this.setState({ showFormModal: true }); + } + } + }); + } +}; +/** + * @Author:gaoymf + * @Description:保存上级 + * @Date: 18:58 2018/6/12 + * @param: + */ +let saveParentRulesClick = function() { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + requestApi.copyParentRule({ + data: selectNode, + success: res => { + //console.log("同步上级作业组规则返回", res); + this.setState({ formListData: res }); + } + }); +}; + +/** + * @Author:gaoymf + * @Description:删除点击 + * @Date: 18:58 2018/6/12 + * @param: + */ +let delFormButtonClick = function(pk) { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let multiLang = this.props.MutiInit.getIntl(7010); + if (selectNode.isleaf) { + var newData = this.state.formListData.filter(item => { + return pk == item.values.pk_allotrule.value; + }); + requestApi.delFormData({ + data: newData[0], + success: res => { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let req = { + pk_workinggroup: selectNode.refpk, + enablestate: this.state.showDisabled + }; + queryFormListData.call(this, req); + toast({ + title: multiLang && multiLang.get('701001RWCL-0042') + }); + } + }); + } else { + // 父级节点校验 + requestApi.checkParentHandleEnable({ + data: { pk_workinggroup: selectNode.refpk }, + success: res => { + if (!res) { + // 如果下级作业组有规则就不在允许修改规则 + //701001RWCL-0101:已存在下级作业组规则,不允许修改规则 + toast({ + color: "danger", + content: multiLang && multiLang.get('701001RWCL-0101') + }); + } else { + var newData = this.state.formListData.filter(item => { + return pk == item.values.pk_allotrule.value; + }); + requestApi.delFormData({ + data: newData[0], + success: res => { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let req = { + pk_workinggroup: selectNode.refpk, + enablestate: this.state.showDisabled + }; + queryFormListData.call(this, req); + toast({ + title: multiLang && multiLang.get('701001RWCL-0042') + }); + } + }); + } + } + }); + } +}; + +/** + * @Author:gaoymf + * @Description:修改点击 + * @Date: 19:00 2018/6/12 + * @param: + */ +let editFormButtonClick = function(pk) { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let multiLang = this.props.MutiInit.getIntl(7010); + if (selectNode.isleaf) { + this.setState({ showFormModal: true }); + let editFormItem = this.state.formListData.filter(item => { + return pk == item.values.pk_allotrule.value; + }); + // 公式编辑器单独复制 + this.formulaInputValue = editFormItem[0].values.formula.value; + this.props.form.setAllFormValue({ + [this.formId]: { rows: JSON.parse(JSON.stringify(editFormItem)) } + }); + this.props.form.setFormItemsValue(this.formId,{'formula':{'value':this.formulaInputValue,'display':this.formulaInputValue}}); + if(editFormItem[0].values.standardtime && editFormItem[0].values.standardtime.value){ + // 标准作业时间有值 + this.props.form.setFormItemsDisabled(this.formId,{'advancetime':false}) + }else { + // 标准作业时间没值 + this.props.form.setFormItemsDisabled(this.formId,{'advancetime':true}) + } + } else { + // 父级节点校验 + requestApi.checkParentHandleEnable({ + data: { pk_workinggroup: selectNode.refpk }, + success: res => { + if (!res) { + // 如果下级作业组有规则就不在允许修改规则 + //701001RWCL-0101:已存在下级作业组规则,不允许修改规则 + toast({ + color: "danger", + content: multiLang && multiLang.get('701001RWCL-0101') + }); + } else { + this.setState({ showFormModal: true }); + let editFormItem = this.state.formListData.filter(item => { + return pk == item.values.pk_allotrule.value; + }); + // 公式编辑器单独复制 + this.formulaInputValue = editFormItem[0].values.formula.value; + this.props.form.setAllFormValue({ + [this.formId]: { rows: JSON.parse(JSON.stringify(editFormItem)) } + }); + this.props.form.setFormItemsValue(this.formId,{'formula':{'value':this.formulaInputValue,'display':this.formulaInputValue}}); + } + } + }); + } +}; + +// 查询表单列表 +function queryFormListData(req) { + requestApi.queryFormListData({ + data: req, + success: res => { + // console.log("规则查询返回", res); + if (res.length == 0) { + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + let request = { pk_workinggroup: selectNode.pid, enablestate: false }; + requestApi.queryParentFormListData({ + data: request, + success: res => { + if (res.length > 0) { + // 当前节点规则为空&&上级工作组有规则出现Pop提示拉取上级规则 + this.setState({ isShowPop: true }); + } + } + }); + } + this.setState({ + formListData: res, + isShowPop: false, + disabledBtn: false + }); + } + }); +} + +/** + * @Author:yushuaif + * @Description:NCTableSwitch Change + * @Date: 15:00 2018/6/14 + * @param {pk} String + * @param {e} Boolean 开关新状态 + * @return {} Undefined + */ +let tableSwitchChange = function(pk, e) { + // 请求启用/停止 + let data = this.state.formListData.filter(item => { + return item.values.pk_allotrule.value == pk; + }); + data[0].values.enablestate.value = e; + let req = data[0]; + let multiLang = this.props.MutiInit.getIntl(7010); + // 启用/停用 + requestApi.changeEnableState({ + data: req, + success: res => { + let qReq = { + pk_workinggroup: this.props.syncTree.getSelectNode(this.treeId).refpk, + enablestate: this.state.showDisabled + }; + queryFormListData.call(this, qReq); + if (e) { + toast({ + title: multiLang && multiLang.get('701001RWCL-0043') + }); + } else { + toast({ + title: multiLang && multiLang.get('701001RWCL-0044') + }); + } + } + }); +}; + +export default { + addFormButtonClick, + saveFormButtonClick, + cancelFormButtonClick, + saveParentRulesClick, + delFormButtonClick, + editFormButtonClick, + queryFormListData, + resetButtonClick, + tableSwitchChange +}; + +/*b9zSIuW+hz2B5CYjaIEfjKTxd7CCQI80KlePTTuMlxA=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/index.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/index.js new file mode 100644 index 0000000..e32cd3d --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/index.js @@ -0,0 +1,9 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import initTemplate from './initTemplate'; +import formEveManager from './formEveManager'; +import treeEveManager from './treeEveManager'; +import query from './query'; +import afterEvent from './afterEvent'; + +export { initTemplate, formEveManager, treeEveManager, query, afterEvent }; +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/initTemplate.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/initTemplate.js new file mode 100644 index 0000000..06934e1 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/initTemplate.js @@ -0,0 +1,105 @@ +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ +import { getMultiLang } from 'nc-lightapp-front'; + +export default function (props) { + + const _this = this; + //获取模板 + props.createUIDom({}, + (data) => { + //获取多语 + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + data.template.tranctionlist.items.map((item) => { + if (item.attrcode == 'pk_billtypecode') { + item.itemtype = 'label' + } + }) + //模板数据处理 + data.template.listForm.items.map((item) => { + if (item.attrcode == 'pk_sscnode') { + // item.refcode = '/ssctp/refer/sscbd/SSCNodeGridRef/index.js' + } else if (item.attrcode == 'billtype') { + item.refcode = '/uap/refer/riart/billtype/index.js' + } else if (item.attrcode == 'tranction') { + // item.refcode = '/uap/refer/riart/transtype/index.js' + } else if (item.attrcode == 'group') { + item.refcode = 'uapbd/refer/org/BusinessUnitTreeRef/index.js' + item.isShowUnit = true; + item.isRunWithChildren = false; + item.unitProps = { + placeholder: json['701001RWCL-0078'],//701001RWCL-0078: + refName: json['701001RWCL-0078'], + refType: "tree", + refCode: "uapbd.org.GroupDefaultTreeRef", + queryTreeUrl: "/nccloud/uapbd/ref/GroupDefaultTreeRef.do", + rootNode: { refname: json['701001RWCL-0078'], refpk: "root" }, + } + } + }) + + let BilltypeRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.BilltypeRefSqlBuilder'; + let TranstypeRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.TranstypeRefSqlBuilder'; + let BusinessUnitRefSqlBuilder = 'nccloud.web.ssctp.sscbd.ref.sqlbuilder.BusinessUnitRefSqlBuilder' + + data.template.listForm.items.find((item) => { + + if (item.attrcode === "billtype") { + item.queryCondition = function () { + return { GridRefActionExt: BilltypeRefSqlBuilder }; + } + } else if (item.attrcode === "tranction") { + item.queryCondition = function () { + let billtype = props.form.getFormItemsValue('listForm', 'billtype'); + let data = billtype == null ? "" : billtype.value; + return { billtype: data, GridRefActionExt: TranstypeRefSqlBuilder }; + } + } else if (item.attrcode === "group") { + item.queryCondition = function () { + let sscunit = _this.state.SSCCenter; + let data = sscunit.refpk == null ? "" : sscunit.refpk; + return { sscunit: data, TreeRefActionExt: BusinessUnitRefSqlBuilder }; + } + } + + }); + data.template['listForm'].status = 'edit'; + data.template['treeForm'].status = 'edit'; + props.meta.setMeta(data.template); + // props.meta.setMeta(meta); + + let FormulaComponent = (props) => { + return ( +
    + { + this.formulaInputId = ref; + }} + className="formula-input nc-theme-from-input-bgc nc-theme-form-input-bc nc-theme-form-input-c" + /> + { + this.openFormula(); + }} + style={{ cursor: "pointer" }} + /> +
    + ) + } + + props.renderItem( + "form", + "listForm", + "formula", + + ) + + } + }) + }) +} + +/*pmFWCFu5nhKkBzYmrkBaka23LzwyeVw+yP0Qu3SWeVg=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/query.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/query.js new file mode 100644 index 0000000..d12593b --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/query.js @@ -0,0 +1,106 @@ +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ +import requestApi from '../requestApi' +import formEveManager from './formEveManager' +import treeEveManager from './treeEveManager' + +/** + * @Author:gaoymf + * @Description:共享服务中心改变 + * @Date: 19:12 2018/6/12 + * @param: + */ +let onSSCCenterChange = function(ssc) { + if (ssc.hasOwnProperty('refpk')) { + // 选中操作 + this.setState({ SSCCenter: ssc, showTreeSearch: true, disabledBtn: true ,formListData: [], showEmptyAreaTip: false}); + let req = { "pk_sscunit": ssc.refpk }; + treeEveManager.queryTreeData.call(this, req); // 查询左侧树 + this.props.syncTree.cancelSelectedNode(this.treeId); + } else { + // 清空共享中心操作 + treeEveManager.queryTreeData.call(this, ""); // 查询左侧树 + this.setState({ SSCCenter: {}, showTreeSearch: false, disabledBtn: true, formListData: [], showEmptyAreaTip: true}); + this.props.syncTree.cancelSelectedNode(this.treeId); + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: ssc.hasOwnProperty('refpk') ? JSON.stringify(ssc) : ''}); +} + +/** + * @Author:gaoymf + * @Description:显示停用勾选 + * @Date: 19:17 2018/6/12 + * @param: + */ +let showDisabledChange = function(e) { + this.setState({ showDisabled: e }); + let selectNode = this.props.syncTree.getSelectNode(this.treeId); + // 没有选中树节点不执行查询 + if(selectNode!=null){ + let req = { pk_workinggroup: selectNode.refpk, enablestate: e }; + formEveManager.queryFormListData.call(this,req); + } +} + +/** + * @Author:gaoymf + * @Description:查询单位明细范围 + * @Date: 19:44 2018/6/12 + * @param: + */ +let queryGroupDetails = function(item) { + let multiLang = this.props.MutiInit.getIntl(7010); + requestApi.queryGroupDetailTableData({ + data: { group: item.values.group.value }, + success: (res) => { + //701001RWCL-0102:单位范围 + this.setState({ showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0102'), value: this.groupTableId } }); + this.props.editTable.setTableData(this.groupTableId, res[this.groupTableId]); + } + }) +} +/** + * @Author:gaoymf + * @Description:查询交易类型/单据类型明细 + * @Date: 19:46 2018/6/12 + * @param: + */ +let queryBillTypeDetails = function(item, key) { + let multiLang = this.props.MutiInit.getIntl(7010); + switch (key) { + case this.tranctionTableId: + requestApi.queryDetailTableData({ + data: { billtype: item.values.tranction.value, type: this.tranctionTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0103'):交易类型 + this.setState({ showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0103'), value: this.tranctionTableId } }); + this.props.editTable.setTableData(key, res[this.tranctionTableId]); + } + }) + break; + case this.billtypeTableId: + requestApi.queryDetailTableData({ + data: { billtype: item.values.billtype.value, type: this.billtypeTableId }, + success: (res) => { + //multiLang && multiLang.get('701001RWCL-0104'):单据类型 + this.setState({ showDetailModal: true, searchValue: '', modalType: { display: multiLang && multiLang.get('701001RWCL-0104'), value: this.billtypeTableId } }); + this.props.editTable.setTableData(key, res[this.billtypeTableId]); + } + }) + break; + } +} +/** + * @Author:gaoymf + * @Description:查询详细信息 + * @Date: 19:44 2018/6/12 + * @param: + */ +let queryDetailTable = function(searchValue) { + let filterKey = []; + // 单据类型/交易类型查询 billtypename 单位范围查询name + this.state.modalType.value == this.groupTableId ? filterKey.push('name') :filterKey.push('billtypename') + this.props.editTable.setFiltrateTableData(this.state.modalType.value, filterKey, searchValue, false) +} +export default { onSSCCenterChange, showDisabledChange, queryGroupDetails, queryBillTypeDetails, queryDetailTable } +/*QxYwc1QCwyRcKpenqWuRKUBgRwwb+3V509Zd1/ZuIuY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/events/treeEveManager.js b/src/ssctpaaa/sscsetting/workinggroup/config/events/treeEveManager.js new file mode 100644 index 0000000..81aa58c --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/events/treeEveManager.js @@ -0,0 +1,345 @@ +/*nuioL80pq0ljVs94b3ZOklYmf+7T8e0Ad2GeoH173x4=*/ +import { toast,promptBox } from "nc-lightapp-front"; +import requestApi from "./../requestApi"; +import query from "./query"; +import formEveManager from "./formEveManager" + +/** + * @Author:gaoymf + * @Description:新增icon点击 + * @Date: 18:18 2018/6/12 + * @param:node 当前点击的节点 + */ +let clickAddIconEve = function(node) { + this.setState({ showTreeModal: true,isEditTree:false }); + this.isRoot = node.refpk == "0001ZG100000SSCGROUP"; + // 可编辑 + this.props.form.setFormStatus(this.treeFormId, 'edit'); + // 清空 + this.props.form.EmptyAllFormValue(this.treeFormId); + this.props.form.setFormItemsValue(this.treeFormId, { pid: { value: node.refpk } }); +}; + +/** + * @Author:gaoymf + * @Description:删除icon点击 + * @Date: 18:22 2018/6/12 + * @param:当前点击的节点 + */ +let clickDelIconEve = function(node) { + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('7010-0002'), //删除 + content: multiLang && multiLang.get('701001RWCL-0168'), //"701001RWCL-0168": "确定要删除所选数据吗?" + beSureBtnClick: () => { + let req = this.props.syncTree.getSyncTreeValue(this.treeId, node.refpk); + requestApi.delTreeData({ + data: req, + success: res => { + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + if (res.result == false) { + toast({ color: "danger", content: res.msg }); + } else { + queryTreeData.call(this, req); + } + } + }); + }, // 确定按钮点击调用函数,非必输 + }) +}; + +/** + * @Author:gaoymf + * @Description:树型编辑icon点击 + * @Date: 18:04 2018/6/12 + * @param:node 当前编辑的节点 + */ +let clickEditIconEve = function(node) { + this.setState({ showTreeModal: true,isEditTree:true }); + this.isRoot = true; + this.props.form.EmptyAllFormValue(this.treeFormId); + this.props.form.setFormItemsValue(this.treeFormId, { + refname: { value: node.refname1?node.refname1:node.refname, display: node.refname1?node.refname1:node.refname }, + refname2: { value: node.refname2, display: node.refname2 }, + refname3: { value: node.refname3, display: node.refname3 }, + refcode: { display: node.refcode, value: node.refcode }, + pid: { display: node.pid, value: node.pid }, + refpk: { display: node.refpk, value: node.refpk } + }); +}; +/** + * @Author:gaoymf + * @Description:树型停用icon点击 + * @Date: 18:04 2018/6/12 + * @param:node 当前编辑的节点 + */ +let clickStopIconEve = function(node) { + let treeNode = this.props.syncTree.getSyncTreeValue(this.treeId, node.refpk); + let arr = []; + arr.push(treeNode.refpk); + if( treeNode.refValue.enablestate=='3'){ + // 启用 :更新目标节点和上级节点 + // 查询所有上级节点并更新父节点启用状态 + findP.call(this,treeNode,arr); + console.log('启用的树pk',arr); + requestApi.enableTreeData({ + data: arr, + success: res => { + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + this.closeModal(this.treeModalId); + } + }); + }else { + if(treeNode.children!=null){ + // 查询所有下级节点 + queryTreeList(treeNode.children,arr); + } + console.log('停用的树pk',arr); + requestApi.disableTreeData({ + data: arr, + success: res => { + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + this.closeModal(this.treeModalId); + } + }); + } +}; + + +/** + * @Author:gaoymf + * @Description:树型启用icon点击 + * @Date: 18:04 2018/6/12 + * @param:node 当前编辑的节点 + */ +let clickUpIconEve = function(node) { + let treeNode = this.props.syncTree.getSyncTreeValue(this.treeId, node.refpk); + if( treeNode.refValue.enablestate=='3'){ + // 启用 :更新目标节点和上级节点 + let ans = []; + // 查询所有上级节点并更新父节点启用状态 + ans.push(treeNode.refpk); + findP.call(this,treeNode,ans); + requestApi.enableTreeData({ + data: ans, + success: res => { + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + this.closeModal(this.treeModalId); + } + }); + }else { + let arr = []; + arr.push(treeNode.refpk); + if(treeNode.children!=null){ + // 查询所有下级节点 + queryTreeList(treeNode.children,arr); + } + requestApi.disableTreeData({ + data: arr, + success: res => { + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + this.closeModal(this.treeModalId); + } + }); + } +}; +/** + * @Author:gaoymf + * @Description:递归树结构子集节点,更新作业组启用/停用状态 + * @Date: 16:13 2019/1/17 + * @param: + */ +let queryTreeList = function(treeNode,arr){ + for (var i = 0; i < treeNode.length; i++) { + arr.push(treeNode[i].refpk); + var children = treeNode[i].children; + if (children != null) { + queryTreeList(children, arr); + } + } + return arr; +}; + +/** + * @Author:gaoymf + * @Description:递归查询树结构父集节点 + * @Date: 16:13 2019/1/17 + * @param: + */ +function findP(treeNode,ans) { + let pNode = this.props.syncTree.getSyncTreeValue(this.treeId, treeNode.pid); + if(pNode!=null){ + ans.push(pNode.refpk); + findP.call(this,pNode,ans); + } +} + + +/** + * @Author:gaoymf + * @Description:查询对应规则 + * @Date: 16:13 2018/6/11 + * @param: + */ +let onSelectEve = function(node) { + // 虚拟节点点击不触发查询 + if (node === "0001ZG100000SSCGROUP") { + this.setState({ disabledBtn: true, formListData: [] }); + return; + } else { + let req = { pk_workinggroup: node, enablestate: this.state.showDisabled }; + formEveManager.queryFormListData.call(this, req); + } +}; + + +/** + * @Author:gaoymf + * @Description:保存节点 + * @Date: 16:45 2018/7/18 + * @param: + */ +let saveNode = function(treeFormData, flag) { + let req = { + refpk: treeFormData.rows[0].values.refpk.value, + refcode: treeFormData.rows[0].values.refcode.value, + refname: treeFormData.rows[0].values.refname.value, + refname1: treeFormData.rows[0].values.refname.value, + refname2: treeFormData.rows[0].values.refname2?treeFormData.rows[0].values.refname2.value:'', + refname3: treeFormData.rows[0].values.refname3?treeFormData.rows[0].values.refname3.value:'', + pk_sscunit: this.state.SSCCenter.refpk + }; + if (treeFormData.rows[0].values.pid.value !== "0001ZG100000SSCGROUP") { + req.pid = treeFormData.rows[0].values.pid.value; + } + requestApi.addTreeData({ + data: req, + success: res => { + // this.props.syncTree.addNodeSuccess(this.treeId, res); + // 清空 + this.props.form.EmptyAllFormValue(this.treeFormId); + // pid初始化 + this.props.form.setFormItemsValue(this.treeFormId, { pid: { value: treeFormData.rows[0].values.pid.value } }); + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + if (flag) { + this.closeModal(this.treeModalId); + } + + } + }); +}; + +/** + * @Author:gaoymf + * @Description:保存同级节点 + * @Date: 16:13 2018/7/18 + * @param: + */ +let saveAndAddTreeButton = function() { + if (this.props.form.isCheckNow(this.treeFormId)) { + let treeFormData = this.props.form.getAllFormValue(this.treeFormId); + // false控制点击后弹窗不消失 + saveNode.call(this, treeFormData, false); + } +}; + +/** + * @Author:gaoymf + * @Description:保存按钮点击 + * @Date: 16:13 2018/7/18 + * @param: + */ +let saveOrUpdateTreeButton = function() { + if (this.props.form.isCheckNow(this.treeFormId)) { + let treeFormData = this.props.form.getAllFormValue(this.treeFormId); + let refpk = treeFormData.rows[0].values.refpk.value; + if (refpk == undefined) { + // 新增节点 + saveNode.call(this, treeFormData, true); + } else { + // 更新节点 + let updateReq = this.props.syncTree.getSyncTreeValue(this.treeId, refpk); + updateReq.refcode = treeFormData.rows[0].values.refcode.value; + updateReq.refname = treeFormData.rows[0].values.refname.value; + updateReq.refname1 = treeFormData.rows[0].values.refname.value; + updateReq.refname2 = treeFormData.rows[0].values.refname2?treeFormData.rows[0].values.refname2.value:''; + updateReq.refname3 = treeFormData.rows[0].values.refname3?treeFormData.rows[0].values.refname3.value:''; + requestApi.updateTreeData({ + data: updateReq, + success: res => { + // this.props.syncTree.editNodeSuccess(this.treeId,res); + let req = { pk_sscunit: this.state.SSCCenter.refpk }; + queryTreeData.call(this, req); + this.closeModal(this.treeModalId); + } + }); + } + } +}; +/** + * @Author:gaoymf + * @Description:取消 + * @Date: 16:15 2018/6/11 + * @param: + */ +let cancelTreeButton = function() { + this.closeModal(this.treeModalId); +}; + +// 查询树节点数据 +function queryTreeData(req) { + let { syncTree } = this.props; + let multiLang = this.props.MutiInit.getIntl(7010); + let { setSyncTreeData } = syncTree; + if (req == "") { + setSyncTreeData(this.treeId, []); + } else { + requestApi.queryTreeData({ + data: req, + success: res => { + // 生成启用/停用数据结构 + let iconData = getUpAndStopIconData(res.nodes); + // 设置虚拟根节点 + res.nodes.push({ + refpk: "0001ZG100000SSCGROUP", + refcode: "ROOT", + refname: multiLang && multiLang.get('701001RWCL-0051')//作业组 + }); + let newTree = syncTree.createTreeData(res.nodes); //创建树 组件需要的数据结构 + setSyncTreeData(this.treeId, newTree); + this.props.syncTree.setIconVisible('tree',iconData);// 设置启用/停用icon + this.props.syncTree.hideIcon(this.treeId, "0001ZG100000SSCGROUP", { delIcon: false, editIcon: false }); + } + }); + } +} +// 构建树组件启用/停用数据结构 +let getUpAndStopIconData = function(datas){ + let iconDatas = datas.map((data) => { + if(data.refValue.enablestate=='2'){ + return { + key:data.refpk, + value:{ + stopUpIon: 'up' // 启用 + } + } + }else { + return { + key:data.refpk, + value:{ + stopUpIon: 'stop' // 停用 + } + } + } + }) + return iconDatas; +} + +export default { clickAddIconEve, clickDelIconEve, clickEditIconEve,clickStopIconEve,clickUpIconEve, queryTreeData, onSelectEve, saveAndAddTreeButton, saveOrUpdateTreeButton, cancelTreeButton }; +/*nuioL80pq0ljVs94b3ZOklYmf+7T8e0Ad2GeoH173x4=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/index.css b/src/ssctpaaa/sscsetting/workinggroup/config/index.css new file mode 100644 index 0000000..c1ef33c --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/index.css @@ -0,0 +1,6 @@ +.column-2-2 .label-value { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 238px); +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/index.js b/src/ssctpaaa/sscsetting/workinggroup/config/index.js new file mode 100644 index 0000000..dc556b9 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/index.js @@ -0,0 +1,6 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import A from './workGroup'; +ReactDOM.render( < A / > , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/index.less b/src/ssctpaaa/sscsetting/workinggroup/config/index.less new file mode 100644 index 0000000..7da1b7e --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/index.less @@ -0,0 +1,234 @@ +.ssctp-workinggroup-form { + width: 100%; + border: 1px solid rgba(206, 206, 206, 0.75); + border-radius: 4px; + margin-bottom: 10px; + font-family: MicrosoftYaHei; + + .head-grow { + width: 100%; + height: 35px; + margin-bottom: 19px; + position: relative; + background: #f3f3f3; + .name-area { + font-size: 14px; + color: #111111; + display: inline-block; + height: 35px; + line-height: 35px; + left: 88px; + position: absolute; + font-weight: bold; + } + .operate-area { + font-size: 13px; + color: #007ACE; + height: 35px; + line-height: 35px; + position: absolute; + right: 30px; + display: flex; + align-items: center; + + .btn { + cursor: pointer; + margin-right: 12px !important; + } + } + + .operate-area span:nth-child(1) { + float: left; + } + } + .grow { + margin-bottom: 11px; + padding-left: 30px; + width: 100%; + height: auto; + font-size: 13px; + line-height: 21px; + .label-name { + font-size: 13px; + width: 140px; + color: #555555; + text-align: right; + position: relative; + white-space: normal; + float: left; + } + .item-colon { + margin-right: 15px; + float: left; + } + .label-value { + // &::after { + // content: "..."; + // } + margin-right: 5px; + color: #111111; + } + .label-single-value { + font-size: 13px; + color: #111111; + width: 200px; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + vertical-align: bottom; + } + .label-value-all { + cursor: pointer; + } + .column-1-1 { + font-size: 13px; + width: 100%; + white-space: nowrap; + } + .column-2-1 { + font-size: 13px; + display: inline-block; + width: 40%; + white-space: nowrap; + } + .column-2-2 { + font-size: 13px; + display: inline-block; + width: 60%; + white-space: nowrap; + .label-name { + float: left; + } + .label-value { + float: left; + } + } + } +} + +.u-button { + min-width: 60px !important; +} + +.img { + position: absolute; + width: 30px; + height: 30px; + left: 32px; + top: 2px; +} + +.formula-div { + width: 100%; + height: 30px; + position: relative; + .formula-input { + border: 1px solid #dbdbdb; + outline: none; + color: #292e35; + padding: 0 8px; + border-radius: 4px; + font-size: 13px; + width: 100%; + height: 100%; + position: relative; + display: inline-block; + letter-spacing: normal; + word-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; + text-rendering: auto; + text-align: start; + } + .icon-refer { + position: absolute; + z-index: 0; + top: 1px; + right: 4px; + width: 18px; + height: 26px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + display: flex; + align-items: center; + &::after { + font-family: "iconfont"; + content: "\E6CE"; + color: #999; + font-size: 14px; + } + } +} + +.formula-publicfiled-content { + li:hover { + background: #1e88e5; + } +} + +.u-button-group .u-button { + min-width: 60px !important; +} + +.tree-card { + height: calc(~"100% - 114px"); +} + +.header { + height: 46px; + .search-box { + width: 200px; + margin-left: 30px !important; + margin-right: 25px; + } + .title { + font-weight: bold; + } +} + +.ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 3px; + margin-top: 9px; +} + +.ssc_footbutton { + width: 72px !important; +} + +.refer-wrapper { + width: 100% !important; +} + +.page-title-Icon { + margin-right: 8px; + margin-top: 0 !important; +} + +.u-modal-body { + padding-bottom: 16px !important; +} + +.group-form-wrapper { + padding-bottom: 6px !important; +} + +.btn-group { + .button-primary { + border: none !important; + } +} + +#ssc_group_add { + .form-item-label { + width: 150px; + max-width: 150px; + min-width: 150px; + } + .form-item-control { + width: calc(~"100% - 150px"); + } +} \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/requestApi.js b/src/ssctpaaa/sscsetting/workinggroup/config/requestApi.js new file mode 100644 index 0000000..302ebc4 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/requestApi.js @@ -0,0 +1,216 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { ajax } from 'nc-lightapp-front'; + +let requestApi = { + // 新增树节点 + addTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/InsertAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 删除树节点 + delTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/DeleteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 修改树节点 + updateTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/UpdateAction.do', + data: opt.data, + success: (data) => { + console.log(data); + data = data.data; + opt.success(data); + } + }) + }, + // 启用树节点 + enableTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/EnableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 停用树节点 + disableTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/DisableAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 查询树节点 + queryTreeData: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/QueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 重置任务 + resetTask: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskResetNotakeTaskAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存规则 + saveFormData: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/InsertAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 删除规则 + delFormData: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/DeleteAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 修改规则 + updateFormData: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/UpdateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 查询规则 + queryFormListData: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/QueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 查询父级作业组规则 + queryParentFormListData: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/QueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 保存上级作业组规则 + copyParentRule: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/CopyParentRulesAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 启用/停用规则 + changeEnableState: (opt) => { + ajax({ + url: '/nccloud/sscbd/allotrule/changeEnableStateAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + // 查询交易类型/单据类型详细 + queryDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/BillTypeQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + // 查询单位范围详细 + queryGroupDetailTableData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/OrgsQueryAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + }, + }); + }, + queryPublicFields: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/QueryPublicFieldAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 校验父级作业组规则是否能CRUD + checkParentHandleEnable: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/CheckEnableAddRuleAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + }, + // 修改单据类型需要更新交易类型 + UpdateBilltype: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroup/UpdateBilltypeAction.do', + data: opt.data, + success: (data) => { + data = data.data; + opt.success(data); + } + }) + } +} +export default requestApi; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroup/config/workgroup.js b/src/ssctpaaa/sscsetting/workinggroup/config/workgroup.js new file mode 100644 index 0000000..ad7063a --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroup/config/workgroup.js @@ -0,0 +1,637 @@ +/*QV/xb50vWndooCRXIylWUa+iVO1/Eoiib50JwYZwlI8=*/ +import React, { Component } from "react"; +import { createPage, base, high, createPageIcon, getTheme} from "nc-lightapp-front"; +import { + initTemplate, + formEveManager, + treeEveManager, + query, + afterEvent +} from "./events"; +import requestApi from "./requestApi"; +import SSCCenter from "../../../refer/sscbd/SSCUnitGridRef"; +import { Nav } from "ssccommon/components/global-nav"; +import gxicon1 from "../../../public/image/gxicon1.png"; +import gxicon2 from "../../../public/image/gxicon2.png"; +import gxicon3 from "../../../public/image/gxicon3.png"; +import gxicon4 from "../../../public/image/gxicon4.png"; +import gxicon5 from "../../../public/image/gxicon5.png"; +import "./index.less"; +import "./index.css"; +const { + NCModal, + NCButton, + NCFormControl, + NCCheckbox, + NCPopconfirm, + NCDiv, + NCTableSwitch, + EmptyAreaTip, + NCTooltip, +} = base; + +const { FormulaEditor } = high; + +function PublicField({ setName, setExplain, name }) { + let rowList = []; + name.map(item => { + rowList.push( +
  • { + setExplain(""); + }} + onDoubleClick={() => { + setName("" + item.code + ""); + }} + > + {item.code} +    + {item.name} +
  • + ); + }); + return
      {rowList}
    ; +} +class WorkGroup extends Component { + constructor(props) { + super(props); + this.treeId = "tree"; // 树组件模板 + this.treeFormId = "treeForm"; // 树节点新增/修改模板 + this.formId = "listForm"; // 表单模板 + this.groupTableId = "orglist"; // 单位范围表格模板 + this.tranctionTableId = "tranctionlist"; // 交易类型表格模板 + this.billtypeTableId = "billtypelist"; // 单据类型表格模板 + this.formModalId = "formModal"; // 表单modal + this.treeModalId = "treeModal"; // 树表单modal + this.detailModalId = "detailModal"; // 详情modal + this.isRoot = false; // 判断虚拟工作组使用 + this.formulaInputValue = ""; // 公式内容 + // this.isShowPop = false; // 控制拉取上级规则确认 + this.state = { + SSCCenter: {}, // 共享中心 + disabledBtn: true, // 控制按钮是否禁用 true 禁用,false 启用 + isEditTree:false, // 控制树修改/新增时是否显示保存-新增按钮,false:显示 true:不显示 + showFormModal: false, // 新增/编辑表单模态显示 + showFormula: false, // 公式编辑器显示/隐藏 + publicFieldData: "", // 公式编辑器-公共字段内容 + showTreeModal: false, // 新增/编辑树模态显示 + showTreeSearch: true, // 控制树查询区显示 + showDetailModal: false, // 详细表格显示 [单位范围,交易类型,单据类型] + showDisabled: false, // 显示停用 + isShowPop: false, // 控制拉取上级规则确认 + modalType: {}, // 控制显示全部模态内容显示 控制显示 [单位范围,交易类型,单据类型] + detailTableData: [], // 详细信息的数据 + formListData: [], // 表单集合数据 + isBlackTheme: null, + showEmptyAreaTip: true, + }; + initTemplate.call(this, props); + + getTheme().then((theme) => { + this.setState({ + isBlackTheme: theme == 'black' + }) + }) + } + + // 页面加载 + componentDidMount() { + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && query.onSSCCenterChange.call(this, JSON.parse(pk_sscunit)); + }, 300); + } + + // 渲染表单集合 + drawFormList = () => { + let multiLang = this.props.MutiInit.getIntl(7010); + let formList = []; + let imgList = [gxicon1, gxicon2, gxicon3, gxicon4, gxicon5]; + this.state.formListData.map((item, index) => { + let billTypeArr = item.values.billtype.display.split(","); + let displayArr = billTypeArr.slice(0, 3); // 单据类型默认显示3个 + let billTypeStr = displayArr.join(" ; "); + let tranStr = ""; + if (item.values.tranction.display == "") { + tranStr = ""; + } else { + let tranctionArr = item.values.tranction.display.split(","); + let displayTranArr = tranctionArr.slice(0, 8); // 交易类型默认显示8个 + tranStr = displayTranArr.join(" ; "); + } + let groupArr = item.values.group.display.split(","); + let displayGroupArr = groupArr.slice(0, 8); // 单位范围默认显示8个 + let groupStr = displayGroupArr.join(" ; "); + formList.push( +
    +
    + + {/*"701001RWCL-0106": "规则名称"*/} + + {index + 1} + 、{multiLang && multiLang.get('701001RWCL-0110')}:  + {item.values.multiLangName.value} + + + + {/*"701001RWCL-0105": "确定停用作业组规则?","701001RWCL-0106": "确定启用作业组规则?"*/} + + + + + + + + + {multiLang && multiLang.get('701001RWCL-0038')}{/*"701001RWCL-0038": "修改""*/} + + + + + {multiLang && multiLang.get('7010-0002')}{/*"7010-0002": "删除""*/} + + + + +
    +
    + + {multiLang && multiLang.get('701001RWCL-0050')} + : + + {item.values.pk_sscnode.display} + + + {/*"701001RWCL-0104": "单据类型","701001RWCL-0111":"【查看全部】"*/} + + {multiLang && multiLang.get('701001RWCL-0104')} + : + {billTypeStr} + + {multiLang && multiLang.get('701001RWCL-0111')} + + +
    + {/*"701001RWCL-0103": "交易类型"*/} +
    + + {multiLang && multiLang.get('701001RWCL-0103')} + : + + {tranStr} + + {tranStr == "" ? ( + "" + ) : ( + + {multiLang && multiLang.get('701001RWCL-0111')} + + )} + +
    + {/*"701001RWCL-0102": "单位范围"*/} +
    + + {/* 单位范围 */} + {multiLang && multiLang.get('701001RWCL-0102')} + : + + {groupStr} + + {groupStr == "" ? ( + "" + ) : ( + + {multiLang && multiLang.get('701001RWCL-0111')} + + )} + +
    +
    + + {/*"701001RWCL-0113": "包含下级单位"*/} + {multiLang && multiLang.get('701001RWCL-0113')} + : + + {item.values.iscontainslower.display} + + + + {/*"701001RWCL-0112": "更多范围"*/} + {multiLang && multiLang.get('701001RWCL-0112')} + : + {/* {item.values.formula.value} */} + + + {item.values.formula.value} + + + +
    + {/* 时间 */} +
    + + {multiLang && multiLang.get('701001RWCL-0193')} + : + {item.values.standardtime==undefined?"":item.values.standardtime.value} + + + {multiLang && multiLang.get('701001RWCL-0194')} + : + {item.values.advancetime==undefined?"":item.values.advancetime.value} + +
    + {/* 审核要点必须全部通过 */} +
    + + {multiLang && multiLang.get('701001RWCL-0198')} + : + + { + item.values.isallpass + ? (item.values.isallpass.value ? multiLang && multiLang.get('701001RWCL-0199') : multiLang && multiLang.get('701001RWCL-0200')) + : '' + } + + +
    +
    + ); + }); + return formList; + }; + // 渲染模态详情 + drawDetailModelContent = () => { + let { createEditTable } = this.props.editTable; + switch (this.state.modalType.value) { + case this.tranctionTableId: + return createEditTable(this.tranctionTableId, { + showIndex: true, + height: 265, + }); + case this.groupTableId: + return createEditTable(this.groupTableId, { + showIndex: true, + height: 265, + }); + case this.billtypeTableId: + return createEditTable(this.billtypeTableId, { + showIndex: true, + height: 265, + }); + } + }; + // 关闭指定modal + closeModal(key) { + switch (key) { + case this.treeModalId: + this.setState({ showTreeModal: false }); + break; + case this.detailModalId: + this.setState({ showDetailModal: false }); + break; + case this.formModalId: + this.setState({ showFormModal: false }); + break; + default: + break; + } + } + + openFormula() { + // 查询 + requestApi.queryPublicFields({ + data: "", + success: res => { + console.log("公共字段数据", res); + this.setState({ publicFieldData: res, showFormula: true }); + } + }); + } + render() { + let { syncTree, form, DragWidthCom } = this.props; + let { createSyncTree } = syncTree; + let { createForm } = form; + let formLists = this.drawFormList(); + let detailModalContent = this.drawDetailModelContent(); + let multiLang = this.props.MutiInit.getIntl(7010); + return ( +
    + {/* 导航条*/} +
    +
    + + {/*新增/修改树节点modal*/} + {this.setState({showTreeModal:false})}} className="junior"> + + {multiLang && multiLang.get('701001RWCL-0051')} + +
    {createForm(this.treeFormId)}
    + +
    +
    + + {/*"7010-0003": "保存"*/} + {multiLang && multiLang.get('7010-0003')} + + {/*"701001RWCL-0115": "保存新增"*/} + {this.state.isEditTree ?"": + + {multiLang && multiLang.get('701001RWCL-0115')} + + } +
    +
    + + {multiLang && multiLang.get('7010-0004')} + +
    +
    + + {/*新增/修改表单modal*/} + + (this.formulaInputId == undefined + ? "" + : this.formulaInputId.value) + } + onHide={()=>{this.setState({showFormModal:false})}} + backdrop='false' + > + {/*'701001RWCL-0116':'新增作业组规则'*/} + + {multiLang && multiLang.get('701001RWCL-0116')} + + +
    + {createForm(this.formId, { + //编辑后事件 + onAfterEvent: afterEvent.bind(this) + })} +
    + { + this.setState({ showFormula: false }); + this.formulaInputId.value = value; + }} //点击确定回调 + onCancel={a => { + this.setState({ showFormula: false }); + }} //点击确定回调 + metaParam={{ + pk_billtype: "", + bizmodelStyle: "fip", + classid: "7bd63d9b-f394-4a7d-a52c-72f8274d471f" + }} + onHide={() => { + this.setState({ showFormula: false }); + }} + /> +
    +
    +
    + + + {/*"7010-0003": "保存"*/} + {multiLang && multiLang.get('7010-0003')} + + + {multiLang && multiLang.get('7010-0004')} + + +
    + + {/*显示全部modal*/} + this.closeModal(this.detailModalId)} + > + + + {this.state.modalType.display} + + {/*701001RWCL-0109:搜索名称*/} + { + this.setState({ searchValue: searchValue }); + }} + className="dnd-cancel" + onSearch={query.queryDetailTable.bind(this)} + type="search" + /> + + + + + {detailModalContent} + + +
    +
    + ); + } +} + +let WorkGroupDom = createPage({ + mutiLangCode: '7010' +})(WorkGroup); +export default WorkGroupDom; + +/*QV/xb50vWndooCRXIylWUa+iVO1/Eoiib50JwYZwlI8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/events/affixButtonClick.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/affixButtonClick.js new file mode 100644 index 0000000..85b480a --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/affixButtonClick.js @@ -0,0 +1,54 @@ +/*R26hyIs/35YemAaf2O/E7YeVusQ/+Fu5LhIRysWS0Ws=*/ +import manager from "./managerWorkUser"; + +/** + * @Author:gaoymf + * @Description:清空 + * @Date: 14:00 2018/6/20 + */ +let emptyButtonClick = function() { + this.setState({ checkInfoArr: [] }); +}; + +/** + * @Author:gaoymf + * @Description:移除 + * @Date: 14:00 2018/6/20 + */ +let delButtonClick = function() { + let { checkInfoArr } = this.state; + manager.delWorkUser.call(this, checkInfoArr); +}; + +/** + * @Author:gaoymf + * @Description:确定 + * @Date: 14:43 2018/6/15 + * @param: + */ +let modalSaveButton = function(type, groupInfoArr) { + let { checkInfoArr } = this.state; + let groupArr = []; + groupInfoArr.map((groupInfo)=>{ + groupArr.push(groupInfo.refpk); + }) + // 已选用户且已选目标作业组 + if (checkInfoArr.length > 0 && groupArr.length > 0) { + switch (type) { + case "copy": + manager.addWorkUser.call(this, groupArr, checkInfoArr); + break; + case "move": + let flag = manager.addWorkUser.call(this, groupArr, checkInfoArr); + if(flag){ + manager.delWorkUser.call(this, checkInfoArr); + } + break; + default: + break; + } + } +}; + +export default { emptyButtonClick, delButtonClick, modalSaveButton }; +/*R26hyIs/35YemAaf2O/E7YeVusQ/+Fu5LhIRysWS0Ws=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/events/buttonClick.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/buttonClick.js new file mode 100644 index 0000000..3e02db0 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/buttonClick.js @@ -0,0 +1,98 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from "../requestApi"; +import { base,toast,promptBox } from "nc-lightapp-front"; +const { NCMessage } = base; +/** + * 管理 + */ +let managerButtonClick = function() { + this.setState({ isEdit: true }); +}; +/** + * 保存 + */ +let saveButtonClick = function() { + let { addInfoArr, delInfoArr, initInfoArr } = this.state; + let treeTableData = this.props.treeTableManyCol.getAllValue("treeTableCol"); + let multiLang = this.props.MutiInit.getIntl(7010); + console.log(treeTableData.length); + //701001RWCL-0117:表格无可操作数据,不允许保存 + if(treeTableData.length==0){ + toast({ content: multiLang && multiLang.get('701001RWCL-0117'),color: 'danger' }) + }else { + let data = { + deletes: [], + inserts: addInfoArr + }; + initInfoArr.map(initInfo => { + delInfoArr.map(delInfo => { + if (delInfo.pk_workinggroup == initInfo.pk_workinggroup) { + if (delInfo.usertype == "chargeman") { + initInfo.chargeman.map(charge => { + if (delInfo.pk_user == charge.value) { + data.deletes.push(charge.vos); + } + }); + } else { + initInfo.member.map(mem => { + if (delInfo.pk_user == mem.value) { + data.deletes.push(mem.vos); + } + }); + } + } + }); + }); + requestApi.saveWorkGroupUser({ + data: data, + success: res => { + this.queryData(this.state.SSCCenter.refpk); + //701001RWCL-0118:保存成功 + toast({color:"success", content: multiLang && multiLang.get('701001RWCL-0118')}) + } + }); + } + +}; +/** + * 取消 + */ +let cancelButtonClick = function() { + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('7010-0004'), //"提示信息" + content: multiLang && multiLang.get('701001RWCL-0170'),//确定要取消吗? + beSureBtnClick: ()=>{ + this.setState({ + isEdit: false, + checkInfoArr: [], + addInfoArr: [], + delInfoArr: [] + }); + } + }) + +}; + +/** + * @Author:gaoymf + * @Description:导航条点击 + * @Date: 16:12 2018/9/15 + * @param: + */ + +let handleTruncation = function(){ + let multiLang = this.props.MutiInit.getIntl(7010); + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'), //"提示信息" + content: multiLang && multiLang.get('701001RWCL-0074'),//此操作会丢失本次修改,请确定? + beSureBtnClick: ()=>{ + this.refs.nav.linkByClickedIdx(); + } + }) +} + +export default { managerButtonClick, saveButtonClick, cancelButtonClick,handleTruncation }; +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/events/index.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/index.js new file mode 100644 index 0000000..cd9d905 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/index.js @@ -0,0 +1,7 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick'; +import initTemplate from './initTemplate'; +import manager from './managerWorkUser'; +import affixButtonClick from './affixButtonClick'; +export { initTemplate, buttonClick, affixButtonClick, manager }; +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/events/initTemPlate.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/initTemPlate.js new file mode 100644 index 0000000..191a680 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/initTemPlate.js @@ -0,0 +1,696 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import manager from "./managerWorkUser"; +import User from "../../../../refer/sscbd/SSCSMUserGridRef/index.js"; +import { base,getMultiLang } from "nc-lightapp-front"; + +const { NCTooltip } = base; +export default function(props) { + getMultiLang({moduleId: 7010, domainName: 'ssctp',currentLocale: 'zh-CN', callback: (json) => { + let _this = this; + let meta = { + treeTableCol: { + moduletype: "table", + pagination: false, + items: [ + { + label: json['701001RWCL-0051'],//作业组 + col: 12, + width: "174px", + attrcode: "pk_workinggroup", + itemtype: "label", + visible: true + }, + { + label: json['701001RWCL-0119'],//组长 + col: 12, + width: "174px", + attrcode: "chargeman", + itemtype: "label", + visible: true, + //编辑态渲染:普通样式、选中样式、转移/复制后的样式、搜索样式 + //浏览态渲染:搜索高亮样式、普通样式 + render(text, record, index) { + let { checkInfoArr, isEdit, addInfoArr, delInfoArr } = _this.state; + let itemList = [];// 结果集 + let checkArr = [];// 选中人员pkArr + let pk_workinggroup = record.values.pk_workinggroup.value; + let searchItem = "" +_this.state.searchValue +""; + if (isEdit) { + checkInfoArr.map(obj => { + if ("chargeman" == obj.usertype &&pk_workinggroup == obj.pk_workinggroup) { + checkArr.push(obj.pk_user); + } + }); + //根据工作组pk获取组长 + let initInfoArr = manager.getWorkUserArrByGroupPk.call(_this,[pk_workinggroup],"chargeman"); + //根据操作后数据(增加、删除)计算出最终渲染的数据 + let renderInfoArr = manager.getRenderWorkGroupInfoArr(initInfoArr,addInfoArr,delInfoArr,"chargeman"); + //数据渲染 + renderInfoArr[0].pk_userArr.map((pk_user, idx) => { + let deptName = renderInfoArr[0].deptNames[idx]; // 部门名称 + let orgName = renderInfoArr[0].orgNames[idx]; // 组织名称 + let username = renderInfoArr[0].display[idx]; // 人员名称 + let code = renderInfoArr[0].code[idx]; + let search = username.replace(_this.state.searchValue,searchItem); + + const overlay = (deptName || orgName || code) ? ( +
    + {code &&
    {code}
    } + {deptName &&
    {deptName}
    } + {orgName &&
    {orgName}
    } +
    + ) : (
    {json['701001RWCL-0092']}
    ) + + // 查询 + if (_this.state.searchValue !== "" &&username.indexOf(_this.state.searchValue) > -1) { + // 选中 + if (checkArr.indexOf(pk_user) > -1) { + // 已查询 已选中 原始 + if (renderInfoArr[0].status[idx] == 0) { + //701001RWCL-0092:无 + itemList.push( + + + + ); + } else if (renderInfoArr[0].status[idx] == 1) { + let tempSearchItem = "" +_this.state.searchValue +""; + let tempSearch = username.replace( _this.state.searchValue,tempSearchItem); + // 已查询 已选中 临时 + itemList.push( + + + + ); + } + } else { + // 未选中 + if (renderInfoArr[0].status[idx] == 0) { + // 已查询 未选中 原始 + itemList.push( + + + + ); + } else { + let tempSearchItem = "" +_this.state.searchValue +""; + let tempSearch = username.replace( _this.state.searchValue,tempSearchItem); + // 已查询 未选中 临时 + itemList.push( + + + + ); + } + } + } else { + // 未查询 + if (checkArr.indexOf(pk_user) > -1) { + // 选中 + if (renderInfoArr[0].status[idx] == 0) { + // 未查询 已选中 原始 + itemList.push( + + + {username} + + + ); + } else if (renderInfoArr[0].status[idx] == 1) { + // 未查询 已选中 临时 + itemList.push( + + + {username} + + + ); + } + } else { + // 未选中 + if (renderInfoArr[0].status[idx] == 0) { + // 未查询 未选中 原始 + itemList.push( + + + {username} + + + ); + } else { + // 未查询 未选中 临时 + itemList.push( + + + {username} + + + ); + } + } + } + }); + return ( +
    + {itemList} +
    + ); + } else { + // 浏览态 + record.values.chargeman.display.map((item, idx) => { + let code = record.values.chargeman.code[idx]; + let deptName = record.values.chargeman.deptNames[idx]; // 部门名称 + let orgName = record.values.chargeman.orgNames[idx]; // 组织名称 + + const overlay = (deptName || orgName || code) ? ( +
    + {code &&
    {code}
    } + {deptName &&
    {deptName}
    } + {orgName &&
    {orgName}
    } +
    + ) : (
    {json['701001RWCL-0092']}
    ) + + //搜索关键字高亮 + if (_this.state.searchValue !== "" &&item.indexOf(_this.state.searchValue) > -1) { + let search = item.replace(_this.state.searchValue,searchItem); + itemList.push( + //悬停弹窗 + + + + ); + } else { + itemList.push( + + {item} + + ); + } + }); + return
    {itemList}
    ; + } + } + }, + { + label: json['701001RWCL-0120'],//组员 + col: 12, + width: "auto", + attrcode: "member", + itemtype: "label", + visible: true, + render(text, record, index) { + let { checkInfoArr, isEdit, addInfoArr, delInfoArr } = _this.state; + let itemList = [];// 结果集 + let checkArr = [];// 选中的人员pk + let searchItem ={_this.state.searchValue} + let pk_workinggroup = record.values.pk_workinggroup.value; + /*末级节点*/ + if (record.isleaf) { + /*编辑态*/ + if (isEdit) { + // 暂存选中的人员 + checkInfoArr.map(obj => { + if ("member" == obj.usertype &&pk_workinggroup == obj.pk_workinggroup) { + checkArr.push(obj.pk_user); + } + }); + // 返回作业组原始的人员 + let initInfoArr = manager.getWorkUserArrByGroupPk.call(_this,[pk_workinggroup],"member"); + // 返回作业组显示的人员 显示人员 = 原始人员 + 新增人员 - 删除人员 + let renderInfoArr = manager.getRenderWorkGroupInfoArr(initInfoArr,addInfoArr,delInfoArr,"member"); + renderInfoArr[0].pk_userArr.map((pk_user, idx) => { + let orgName = renderInfoArr[0].orgNames[idx]; // 组织名称 + let deptName = renderInfoArr[0].deptNames[idx]; // 部门名称 + let username = renderInfoArr[0].display[idx]; // 人员名称 + let code = renderInfoArr[0].code[idx]; + let search = highLightKeyWord(_this.state.searchValue, username, searchItem) + + const overlay = (deptName || orgName || code) ? ( +
    + {code &&
    {code}
    } + {deptName &&
    {deptName}
    } + {orgName &&
    {orgName}
    } +
    + ) : (
    {json['701001RWCL-0092']}
    ) + + if (_this.state.searchValue !== "" &&username.indexOf(_this.state.searchValue) > -1) { + // 已查询 + if (checkArr.indexOf(pk_user) > -1) { + // 已选中 + if (renderInfoArr[0].status[idx] == 0) { + //已查询 已选中 原始 + itemList.push( + + + {search} + + + ); + } else if (renderInfoArr[0].status[idx] == 1) { + let tempSearchItem = {_this.state.searchValue} + let tempSearch = highLightKeyWord(_this.state.searchValue, username, tempSearchItem) + //已查询 已选中 临时 + itemList.push( + + + {tempSearch} + + + ); + } + } else { + // 未选中 + if (renderInfoArr[0].status[idx] == 0) { + // 已查询 未选中 原始 + itemList.push( + + + {search} + + + ); + } else { + let tempSearchItem = {_this.state.searchValue} + let tempSearch = highLightKeyWord(_this.state.searchValue, username, tempSearchItem) + // 已查询 未选中 临时数据 + itemList.push( + + + {tempSearch} + + + ); + } + } + } else { + // 未查询 + if (checkArr.indexOf(pk_user) > -1) { + // 选中 + if (renderInfoArr[0].status[idx] == 0) { + // 未查询 已选中 原始 + itemList.push( + + + {username} + + + ); + } else if (renderInfoArr[0].status[idx] == 1) { + // 未查询 已选中 临时数据 + itemList.push( + + + {username} + + + ); + } + } else { + // 未选中 + if (renderInfoArr[0].status[idx] == 0) { + // 未查询 未选中 原始 + itemList.push( + + + {username} + + + ); + } else { + // 未查询 未选中 临时 + itemList.push( + + + {username} + + + ); + } + } + } + }); + return ( +
    + {itemList} +
    + ); + } else { + /*浏览态*/ + record.values.member.display.map((item, idx) => { + let orgName = record.values.member.orgNames[idx]; + let deptName = record.values.member.deptNames[idx]; + let code = record.values.member.code[idx]; + + const overlay = (deptName || orgName || code) ? ( +
    + {code &&
    {code}
    } + {deptName &&
    {deptName}
    } + {orgName &&
    {orgName}
    } +
    + ) : (
    {json['701001RWCL-0092']}
    ) + + if (_this.state.searchValue !== "" &&item.indexOf(_this.state.searchValue) > -1) { + let search = highLightKeyWord(_this.state.searchValue, item, searchItem) + itemList.push( + + + {search} + + + ); + } else { + itemList.push( + + + {item} + + + ); + } + }); + return
    {itemList}
    ; + } + } else { + if (isEdit) { + // 编辑态父节点不显示人数 + } else { + /* 浏览态父节点显示人数 */ + let count = 0; + let children = []; + manager.getLeafChildrenById.call(_this,pk_workinggroup,children); + children.map(child => { + count += child.member.length; + }); + return ( + //701001RWCL-0121:人 +
    + {count + json['701001RWCL-0121']} +
    + ); + } + } + } + }, + { + label: json['701001RWCL-0060'],//操作 + col: 12, + width: "200px", + height: "auto", + itemtype: "customer", + attrcode: "opr", + visible: true, + // fixed: 'right', + render(text, record, index) { + let pk_workinggroup = record.values.pk_workinggroup.value; + /*编辑态*/ + if (_this.state.isEdit) { + return ( +
    + {record.isleaf ? ( +
    + {json['701001RWCL-0122']} +
    + ) : ( + "" + )} +
    + ); + } else { + /*浏览态*/ + return ( +
    + {User({ + fieldid:'SSCSMUserGridRef', + onChange: manager.addWorkGroupUser.bind(_this,pk_workinggroup,"chargeman"), + clickContainer: {`+${json['701001RWCL-0119']}`},//组长 + unitProps: { + placeholder: json['701001RWCL-0195'],//业务单元+集团 + refName: json['701001RWCL-0195'],//业务单元+集团 + refType: "tree", + refCode: "uapbd.refer.org.BusinessUnitAndGroupTreeRef", + // rootNode:{ refname: `+${json['701001RWCL-0195']}`, refpk: 'root' }, + queryTreeUrl: "/nccloud/uapbd/ref/BusinessUnitAndGroupTreeRef.do", + isMultiSelectedEnabled: true + }, + queryCondition:{pk_workinggroup:pk_workinggroup,usertype:'chargeman'}, + isCacheable:false, + isShowUnit: true, + // unitValueIsNeeded:true + })} + {record.isleaf + ? User({ + fieldid:'SSCSMUserGridRef', + onChange: manager.addWorkGroupUser.bind( _this,pk_workinggroup,"member"), + clickContainer: ({`+${json['701001RWCL-0120']}`}),//组员 + unitProps: { + placeholder: json['701001RWCL-0195'],//业务单元+集团 + refName: json['701001RWCL-0195'],//业务单元+集团 + // rootNode:{ refname: `+${json['701001RWCL-0195']}`, refpk: 'root' }, + refType: "tree", + refCode: "uapbd.refer.org.BusinessUnitAndGroupTreeRef", + queryTreeUrl: "/nccloud/uapbd/ref/BusinessUnitAndGroupTreeRef.do", + isMultiSelectedEnabled: true + }, + queryCondition:{pk_workinggroup:pk_workinggroup,usertype:'member'}, + isCacheable:false, + isShowUnit: true, + // unitValueIsNeeded:true + }) + : ""} +
    + ); + } + } + } + ] + } + }; + props.meta.setMeta(meta); + }}) +} + +// 高亮显示搜索关键词 +function highLightKeyWord (searchcontent, val, hightLight) { + if ( + val.indexOf(searchcontent) > -1 + ) { + const arr = val.split(searchcontent), ret = [] + let _idx = -1, onoff = false + while(++_idx < arr.length) { + ret.push(arr[_idx]) + if (_idx !== arr.length - 1) { + if (onoff) { + ret.push(searchcontent) + } else { + ret.push(hightLight) + onoff = true + } + } + } + return ret + } + return val +} + +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/events/managerWorkUser.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/managerWorkUser.js new file mode 100644 index 0000000..9fbbbb7 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/events/managerWorkUser.js @@ -0,0 +1,430 @@ +/*LUMP5jVMiqUsmDt0yAGc515qVJv/XaGG1kSQO/dG1P4=*/ +import { base,toast } from 'nc-lightapp-front'; +import requestApi from '../requestApi' +const { NCMessage } = base; +/** + * @Author:gaoymf + * @Description:根据id查找末级节点,递归计算作业组人员 + * @Date: 14:00 2018/6/11 + * @param: + */ +let getLeafChildrenById = function(id, children) { + let { initInfoArr } = this.state; + initInfoArr.map((initInfo) => { + if (initInfo.pid == id) { + if (initInfo.isleaf) { + children.push(initInfo); + } else { + getLeafChildrenById.call(this, initInfo.pk_workinggroup, children); + } + } + }) +}; + +/** + * @Author:gaoymf + * @Description:获得当前组下的人员 = 原始数据 + 新增 - 删除 + * @Date: 16:40 2018/6/7 + * @param: + */ +let getRenderWorkGroupInfoArr = function(initInfoArr, addInfoArr, delInfoArr, usertype) { + // 原始的数据 + initInfoArr.map((workGroupInfo) => { + // 新增的 + addInfoArr.map((addInfo) => { + if (addInfo.usertype == usertype) { + if (workGroupInfo.pk_workinggroup == addInfo.pk_workinggroup) { + workGroupInfo.orgNames.push(addInfo.orgName); + workGroupInfo.deptNames.push(addInfo.deptName); + workGroupInfo.pk_userArr.push(addInfo.pk_user); + workGroupInfo.status.push(1); + workGroupInfo.display.push(addInfo.display); + workGroupInfo.code.push(addInfo.code); + } + } + }) + // 删除的 + delInfoArr.map((delInfo) => { + if (delInfo.usertype == usertype) { + if (workGroupInfo.pk_workinggroup == delInfo.pk_workinggroup) { + let index = workGroupInfo.pk_userArr.indexOf(delInfo.pk_user); + workGroupInfo.deptNames.splice(index, 1); + workGroupInfo.orgNames.splice(index, 1); + workGroupInfo.pk_userArr.splice(index, 1); + workGroupInfo.status.splice(index, 1); + workGroupInfo.display.splice(index, 1); + workGroupInfo.code.splice(index, 1); + } + } + }) + }) + return initInfoArr; +} + +/** + * @Author:gaoymf + * @Description:根据组的pk获得末级对应的组长/组员用户 + * @Date: 9:38 2018/6/7 + * @param: groupArr 选中组的pk usertype 选中的类型 + */ +let getWorkUserArrByGroupPk = function(groupArr, usertype) { + let { initInfoArr } = this.state; + let workGroupInfoArr = []; + groupArr.map((group) => { + initInfoArr.map((initInfo) => { + let workGroupInfo = { + pid: initInfo.pid, // 作业组pid + orgNames: [], // 组织名称 + deptNames: [], // 部门名称 + pk_workinggroup: group,// 作业组pk + pk_userArr: [], // 人员pks + display: [], // 人员名称 + status: [], // 人员状态 0是原始 1 是新增 + code: [], + isleaf: initInfo.isleaf// 是否是末级作业组 + }; + if (initInfo.isleaf) { + // 末级组返回组员和组长信息 + if (initInfo.pk_workinggroup == group) { + if ('member' === usertype) { + // 组员 member + initInfo.member.map((obj) => { + workGroupInfo.display.push(obj.name); + workGroupInfo.pk_userArr.push(obj.value); + workGroupInfo.deptNames.push(obj.deptNames); + workGroupInfo.orgNames.push(obj.orgNames); + workGroupInfo.code.push(obj.code); + workGroupInfo.status.push(0); + }) + workGroupInfoArr.push(workGroupInfo); + } else { + // 组长 chargeman + initInfo.chargeman.map((obj) => { + workGroupInfo.display.push(obj.name); + workGroupInfo.pk_userArr.push(obj.value); + workGroupInfo.deptNames.push(obj.deptNames); + workGroupInfo.orgNames.push(obj.orgNames); + workGroupInfo.code.push(obj.code); + workGroupInfo.status.push(0); + }) + workGroupInfoArr.push(workGroupInfo); + } + } + } else { + // 父级作业组只返回组长信息 + if (initInfo.pk_workinggroup == group) { + initInfo.chargeman.map((obj) => { + workGroupInfo.display.push(obj.name); + workGroupInfo.pk_userArr.push(obj.value); + workGroupInfo.deptNames.push(obj.deptNames); + workGroupInfo.orgNames.push(obj.orgNames); + workGroupInfo.code.push(obj.code); + workGroupInfo.status.push(0); + }) + workGroupInfoArr.push(workGroupInfo); + } + } + }) + }) + return workGroupInfoArr; +} +/** + * @Author:gaoymf + * @Description: 新增作业组用户 + * @Date: 10:30 2018/6/6 + * @param:groupArr:选中的组pk checkInfoArr:选中的人员 isDrag:标识是拖拽的还是选中引起的新增 + */ +let addWorkUser = function(groupArr, checkInfoArr, isDrag) { + let { delInfoArr, addInfoArr } = this.state; + let multiLang = this.props.MutiInit.getIntl(7010); + // 目标组的信息 + let workGroupInfoArr = getWorkUserArrByGroupPk.call(this, groupArr, checkInfoArr[0].usertype); + // 现在的数据=原始数据+新增的数据+删除的数据 + let nowWorkUserInfoArr = getRenderWorkGroupInfoArr(workGroupInfoArr, addInfoArr, delInfoArr, checkInfoArr[0].usertype); + // 1.判断重复数据 + let repeatArr = []; + // 临时缓存移动人员,防止兼职人员多选移动到统一组中 + let checkInfoUsers1 = []; + nowWorkUserInfoArr.map((workUserInfo) => { + checkInfoArr.map((checkInfo)=>{ + if(workUserInfo.pk_userArr.indexOf(checkInfo.pk_user)>-1){ + // 校验兼职人员复制到同一个组中 + if(checkInfoUsers1.indexOf(checkInfo.pk_user+'-'+workUserInfo.pk_workinggroup)<0){ + repeatArr.push(checkInfo.display); + // 缓存已处理的人员 + checkInfoUsers1.push(checkInfo.pk_user+'-'+workUserInfo.pk_workinggroup); + } + } + }) + }) + // 存在重复的数据 + if(repeatArr.length>0){ + //701001RWCL-0123:'目标作业组下已存在用户:' , 701001RWCL-0124:'、' + toast({ content: multiLang && multiLang.get('701001RWCL-0123') + '\n' + repeatArr.join(multiLang && multiLang.get('701001RWCL-0124')), color: 'danger' }) + return false; + }else { + // 临时缓存移动人员,防止兼职人员多选移动到统一组中 + let checkInfoUsers2 = []; + nowWorkUserInfoArr.map((workUserInfo) => { + if (workUserInfo.isleaf) { + checkInfoArr.map((checkInfo) => { + // 校验兼职人员复制到同一个组中 + if(checkInfoUsers2.indexOf(checkInfo.pk_user+'-'+workUserInfo.pk_workinggroup)<0){ + addInfoArr.push({ + orgName:checkInfo.orgName, // 组织名称 + deptName:checkInfo.deptName, // 部门名称 + pk_workinggroup: workUserInfo.pk_workinggroup, // 作业组pk + usertype: checkInfo.usertype, // 人员类型 + display: checkInfo.display, // 人员名称 + pk_user: checkInfo.pk_user, // 人员pk + code: checkInfo.code, + }) + // 缓存已处理的人员 + checkInfoUsers2.push(checkInfo.pk_user+'-'+workUserInfo.pk_workinggroup); + } + }) + } + }) + if (isDrag) { + this.setState({ addInfoArr: addInfoArr }); + } else { + this.setState({ addInfoArr: addInfoArr, checkInfoArr: [] }); + } + return true; + } +} +/** + * @Author:gaoymf + * @Description:删除作业组用户 + * @Date: 10:31 2018/6/6 + * @param: checkInfoArr:选中的人员 isDrag:标识是拖拽的还是选中的,此处用来控制选中是否清空 + */ +let delWorkUser = function(checkInfoArr, isDrag) { + let { delInfoArr, addInfoArr } = this.state; + checkInfoArr.map((checkInfo) => { + if (checkInfo.isTemp) { + // 临时数据删除 + addInfoArr.map((addInfo, idx) => { + if (addInfo.pk_workinggroup == checkInfo.pk_workinggroup) { + if (addInfo.pk_user == checkInfo.pk_user) { + addInfoArr.splice(idx, 1); + } + } + }) + } else { + delInfoArr.push({ + pk_workinggroup: checkInfo.pk_workinggroup, + pk_user: checkInfo.pk_user, + usertype: checkInfo.usertype, + display: checkInfo.display + }) + } + }) + if (isDrag) { + this.setState({ delInfoArr: delInfoArr, addInfoArr: addInfoArr }); + } else { + this.setState({ delInfoArr: delInfoArr, addInfoArr: addInfoArr, checkInfoArr: [] }); + } +} + +/** + * @Author:gaoymf + * @Description:选中作业组用户 + * @Date: 10:32 2018/6/6 + * @param: + */ +let checkWorkUser = function(deptName,orgName,pk_workinggroup, pk_user, display, usertype, isTemp) { + let { checkInfoArr } = this.state; + let flag = true; + let content; + let multiLang = this.props.MutiInit.getIntl(7010); + // 组长/组员分开操作 + if (checkInfoArr.length > 0) { + if(checkInfoArr[0].usertype!==usertype){ + flag = false; + if(checkInfoArr[0].usertype=='chargeman'){ + content = multiLang && multiLang.get('701001RWCL-0126');//请继续选择组员 + }else { + content = multiLang && multiLang.get('701001RWCL-0125');//请继续选择组长 + } + } + if(flag){ + // checkInfoArr.map((checkInfo)=>{ + // if(checkInfo.pk_user==pk_user){ + // flag = false; + // content = display+'已选中,请勿重复选择'; + // } + // }) + } + } + if (flag) { + // 临时数据点击 + checkInfoArr.push({ + deptName:deptName, // 部门名称 + orgName:orgName, // 组织名称 + pk_workinggroup: pk_workinggroup, // 组的pk + usertype: usertype, // 人员类型 member 组员 chargman 组长 + pk_user: pk_user, // 用户pk + display: display, // 显示值 + isTemp: isTemp // 原始数据:false 临时数据:true + }) + this.setState({ checkInfoArr: checkInfoArr }) + } else { + toast({ content: content, color: 'danger' }) + } + +} +/** + * @Author:gaoymf + * @Description:全选 + * @Date: 16:28 2018/6/6 + * @param: + */ +let checkAllWorkUser = function(record) { + let { checkInfoArr, addInfoArr, delInfoArr } = this.state; + let multiLang = this.props.MutiInit.getIntl(7010); + // 获得原始数据 + let workGroupInfoArr = getWorkUserArrByGroupPk.call(this, [record.pk_workinggroup.value], 'member'); + // 获得当前数据 + let renderWorkUserInfoArr = getRenderWorkGroupInfoArr(workGroupInfoArr, addInfoArr, delInfoArr, 'member'); + // 维护已经选中的人员 + let hasCheckPKUserArr = [] + // 判断选中区是否有相同的人员 + let flag = true + // 提示内容 + let content = []; + renderWorkUserInfoArr[0].pk_userArr.map((pk_user, idx) => { + if (checkInfoArr.length > 0) { + // 校验相同的人员是否已经被选中了 + checkInfoArr.map((checkInfo) => { + // 获得当前作业组已经选中的人员 hasCheckPKUserArr + if (checkInfo.pk_workinggroup == renderWorkUserInfoArr[0].pk_workinggroup) { + if (checkInfo.pk_user == pk_user) { + hasCheckPKUserArr.push(pk_user); + } + }else { + // 已选中中有不同作业组的相同人员 + if (checkInfo.pk_user == pk_user) { + flag = false; + content.push(checkInfo.display); + } + } + }) + } + }) + if(flag){ + renderWorkUserInfoArr[0].pk_userArr.map((pk_user, idx) => { + // 已选中中没有的人员新增到选中中 + if (hasCheckPKUserArr.indexOf(pk_user) == -1) { + checkInfoArr.push({ + deptName:renderWorkUserInfoArr[0].deptName, // 部门名称 + orgName:renderWorkUserInfoArr[0].orgName, // 组织名称 + pk_workinggroup: renderWorkUserInfoArr[0].pk_workinggroup, // 组的pk + usertype: 'member', // 人员类型 member 组员 chargman 组长 + pk_user: pk_user, // 用户pk + display: renderWorkUserInfoArr[0].display[idx], // 显示值 + isTemp: renderWorkUserInfoArr[0].status[idx] == 1 ? true : false // 1 表示新增 0 是原始 + }) + } + }) + }else { + //701001RWCL-0127:']已选中,请勿重复选择' + toast({ content: "["+content+ multiLang && multiLang.get('701001RWCL-0127'), color: 'danger' }) + } + + this.setState({ checkInfoArr: checkInfoArr, addInfoArr: addInfoArr }); +} +/** + * @Author:gaoymf + * @Description:删除选中区的人员 + * @Date: 14:22 2018/6/6 + * @param:pk_workinggroup 组pk pk_user:人员pk + */ +let delCheckWorkUser = function(pk_workinggroup, pk_user) { + let newCheckInfoArr = this.state.checkInfoArr.filter((item) => { + if (item.pk_workinggroup == pk_workinggroup) { + if (item.pk_user !== pk_user) { + return true + } else { + return false; + } + } else { + return true; + } + }) + this.setState({ checkInfoArr: newCheckInfoArr }) +} +/** + * @Author:gaoymf + * @Description:新增人员 + * @Date: 14:22 2018/6/6 + * @param:pk_workinggroup 组pk usertype:人员类型 infoArr:选中的数据 + */ +let addWorkGroupUser = function(pk_workinggroup, usertype, infoArr) { + let data = [] + if (infoArr.length > 0) { + infoArr.map((info) => { + data.push({ + pk_workinggroup: pk_workinggroup, + usertype: usertype, + pk_user: info.refpk + }) + }) + requestApi.addWorkGroupUser({ + data: data, + success: (res) => { + this.queryData(this.state.SSCCenter.refpk); + } + }) + } +} + +/** + * @Author:gaoymf + * @Description:拖拽人员放下时触发 + * @Date: 14:22 2018/8/8 + * @param:pk_workinggroup 组pk + */ +let drop = function(pk_workinggroup, e) { + e.preventDefault(); + // 目标组新增 + let flag = addWorkUser.call(this, [pk_workinggroup], this.dragInfoArr, true); + // 源组删除 + if(flag){ + delWorkUser.call(this, this.dragInfoArr, true); + // 清除选中区中的人员 + delCheckWorkUser.call(this, this.dragInfoArr[0].pk_workinggroup, this.dragInfoArr[0].pk_user); + this.dragInfoArr = []; + } +} +/** + * @Author:gaoymf + * @Description:目标区域阻止浏览器事件 + * @Date: 14:22 2018/8/8 + * @param: + */ +let allowDrop = function(e) { + e.preventDefault(); +} +/** + * @Author:gaoymf + * @Description:拖动时触发 + * @Date: 14:22 2018/8/8 + * @param: + */ +let drag = function(code,deptName,orgName,pk_workinggroup,pk_user,pk_username,usertype,isTemp,e) { + let dragInfoArr = []; + dragInfoArr.push({ + code, + orgName, // 组织名称 + deptName, // 部门名称 + pk_workinggroup, // 组的pk + usertype, // 人员类型 member 组员 chargman 组长 + pk_user, // 用户pk + display:pk_username, // 显示值 + isTemp, // 原始数据 false 临时数据 true + }) + this.dragInfoArr = dragInfoArr; +} +export default { addWorkUser, delWorkUser, checkWorkUser, checkAllWorkUser, delCheckWorkUser, getRenderWorkGroupInfoArr, getWorkUserArrByGroupPk, getLeafChildrenById, addWorkGroupUser,drag,drop,allowDrop } +/*LUMP5jVMiqUsmDt0yAGc515qVJv/XaGG1kSQO/dG1P4=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/index.css b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.css new file mode 100644 index 0000000..e98721d --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.css @@ -0,0 +1,6 @@ +@media screen and (min-width: 1920px) { + #fixed-bottom-area { + padding-left: calc(50% - 930px) !important; + padding-right: calc(50% - 930px) !important; + } +} diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/index.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.js new file mode 100644 index 0000000..04a4007 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.js @@ -0,0 +1,6 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import WorkingGroupUser from './workingGroupUser'; +ReactDOM.render( , document.querySelector('#app')); +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/index.less b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.less new file mode 100644 index 0000000..f4a859b --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/index.less @@ -0,0 +1,408 @@ +@import "~base"; + +.container{ + .nc-single-table{ + height: 91%; + } +} + +.nc-singleTable-table-area{ + .treeTableManyCol{ + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + .void{ + position: absolute; + width: 100%; + background: #f6f6f6; + bottom: 0; + top: 300px; + } +} +.nc-singleTable-table-area--edit { + margin-bottom: 48px; +} +.nc-singleTable-header-area { + border-bottom: 0px solid #edecec !important; + height: 46px!important; + .title-search-detail{ + font-weight: bold!important; + } + .header-button-area{ + .u-button:nth-child(1) { + min-width: 60px !important; + border: none; + &:hover{ + border: none; + } + } + } +} +// 锚点样式 +#fixed-bottom-area { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding-left: 16px; + padding-right: 16px; + z-index: 1; +} +.nc-ssctp-bottom-area { + width: 100%; + height: 100%; + position: relative; + background: #717478; + padding: 9px 30px 9px 36px; + display: flex; + align-items: center; + .nc-ssctp-bottom-button-area { + margin-left: auto; + display: -webkit-box; + display: flex; + + .u-button { + width: max-content; + } + } + .nc-ssctp-bottom-count-area { + margin-right: 24px; + min-width: 68px; + height: 24px; + line-height: 24px; + display: inline-block; + color: #FFFFFF; + font-family: MicrosoftYaHei; + } + .nc-ssctp-bottom-items-area { + height: 100%; + align-items: center; + line-height: 30px; + margin-right: 38px; + .nc-ssctp-bottom-item { + display: inline-block; + border-radius: 4px; + margin-left: 8px; + min-width: 60px; + height: 24px; + line-height: 24px; + background-color:rgb(224,224,224); + padding: 0px 5px 0px 8px; + font-size: 12px; + font-family: PingFangHK; + .nc-ssctp-bottom-item-del-icon { + float: right; + height: 7px; + width: 7px; + color: #76797D; + cursor: pointer; + } + &:hover { + background-color: rgb(238,238,238); + } + } + } + +} + +// 操作列样式 +.currency-opr-col > div { + display: inline-block !important; + cursor: pointer; + line-height: 17px; + color: #007ACE; + width: auto; + min-width: 54px; + margin-right: 10px; +} + +.currency-opr-col > div:last-child { + margin-right: 0; +} + +.currency-opr-col { + width: 175px; +} + + +.nc-ssctp-orgin-div { + padding: 5px 11px 1px 0px; + vertical-align: middle; + text-align: center; + + &:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + + span { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} + +.u-table-row { + td:nth-child(4) { + position: relative; + overflow: hidden; + padding: 0 !important; + + .nc-ssctp-orgin-div { + position: relative; + left: -1px; + } + } +} + + +// 组员样式 +// 初始&&浏览态 +.nc-ssctp-orgin-span { + width: 70px; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + float: left; + margin: 2px 0 2px 0px; + line-height: 22px; + + &::before { + content: ''; + width: 1px; + height: 10px; + background-color: #979797; + float: left; + margin-top: 6px; + } + + span { + padding: 2px 6px; + } +} + +// 初始&&编辑态 +.nc-ssctp-orgin-span-edit { + cursor: pointer; + width: 70px; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + float: left; + margin: 2px 0 2px 0px; + line-height: 22px; + + &::before { + content: ''; + width: 1px; + height: 10px; + background-color: #979797; + float: left; + margin-top: 6px; + } + + span { + padding: 2px 6px; + } +} + +// 初始&&已选中 +.nc-ssctp-orgin-span-check { + cursor: pointer; + width: 70px; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #0073e1; + float: left; + margin: 2px 0 2px 0px; + line-height: 22px; + + &::before { + content: ''; + width: 1px; + height: 10px; + background-color: #979797; + float: left; + margin-top: 6px; + } + + span { + background-color: rgba(243, 243, 243, 1); + border-radius: 9px; + padding: 2px 6px; + } +} + +// 新增&&未选中 +.nc-ssctp-add-span-uncheck { + cursor: pointer; + width: 70px; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #0073e1; + float: left; + margin: 2px 0 2px 0px; + line-height: 22px; + + &::before { + content: ''; + width: 1px; + height: 10px; + background-color: #979797; + float: left; + margin-top: 6px; + } + + span { + background-color: rgba(229, 227, 227, 1); + border-radius: 9px; + padding: 2px 6px; + } +} + +// 新增&&已选中 +.nc-ssctp-add-span-check { + cursor: pointer; + width: 70px; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #0073e1; + float: left; + margin: 2px 0 2px 0px; + line-height: 22px; + + &::before { + content: ''; + width: 1px; + height: 10px; + background-color: #979797; + float: left; + margin-top: 6px; + } + + span { + background-color: rgba(243, 243, 243, 1); + border-radius: 9px; + padding: 2px 6px; + } +} + +.nc-ssctp-orgin-div--black { + .nc-ssctp-orgin-span-check, + .nc-ssctp-add-span-check { + span { + background-color: #35353c !important; + } + } + + .nc-ssctp-add-span-uncheck { + span { + background-color: #2b2b30 !important; + } + } +} + +.ssc-must { + position: absolute; + z-index: 2; + color: #f22c1d; + margin-left: 4px; +} + +// 原始已查询 +.nc-ssctp-orgin-span-search { + height: 17px; + background: #ffd400; + border-radius: 2px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + line-height: 17px; + padding-left: 0 !important; + padding-right: 0 !important; +} +// 临时已查询 +.nc-ssctp-temp-span-search{ + height: 17px; + background: #ffd400; + border-radius: 2px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #C59D1B; + line-height: 17px; + padding-left: 0 !important; + padding-right: 0 !important; +} + +// 组长样式 +.nc-ssctp-orgin-span-check-chargman { + width: auto; + height: 22px; + border-radius: 3px; + background: #F9F2D3; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + float: left; + padding: 1px 9px 1px 9px; + margin: 1px 2px 3px 2px; + line-height: 22px; +} + +.nc-ssctp-add-span-check-chargman { + float:left; + width: auto; + height: 22px; + border-radius: 3px; + background: #F9F2D3; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #C59D1B; + float: left; + padding: 1px 9px 1px 9px; + margin: 1px 2px 1px 2px; + line-height: 22px; +} + +.nc-ssctp-orgin-span-edit-chargman { + cursor: pointer; + width: auto; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + float: left; + margin: 2px 11px 2px 11px; + line-height: 22px; +} + +.nc-ssctp-add-span-uncheck-chargman { + cursor: pointer; + width: auto; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #C59D1B; + float: left; + margin: 2px 11px 2px 11px; + line-height: 22px; +} + +.nc-ssctp-orgin-span-chargman { + width: auto; + height: 22px; + font-size: 13px !important; + font-family: MicrosoftYaHei; + color: #111111; + float: left; + margin: 2px 22px 2px 0px; + line-height: 22px; +} diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/requestApi.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/requestApi.js new file mode 100644 index 0000000..58c8016 --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/requestApi.js @@ -0,0 +1,34 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { ajax } from 'nc-lightapp-front'; + +let requestDomain = ''; + +let requestApiOverwrite = { + // 新增组长/组员接口 + addWorkGroupUser: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroupuser/InsertAction.do', + data: opt.data, + success: opt.success + }); + }, + // 查询作业组人员接口 + queryWorkGroupUser: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroupuser/QueryAction.do', + data: opt.data, + success: opt.success + }); + }, + // 保存接口 + saveWorkGroupUser: (opt) => { + ajax({ + url: '/nccloud/sscbd/workinggroupuser/ConvertUserAction.do', + data: opt.data, + success: opt.success + }); + } +} + +export default requestApiOverwrite; +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscsetting/workinggroupuser/config/workingGroupUser.js b/src/ssctpaaa/sscsetting/workinggroupuser/config/workingGroupUser.js new file mode 100644 index 0000000..e6ad17e --- /dev/null +++ b/src/ssctpaaa/sscsetting/workinggroupuser/config/workingGroupUser.js @@ -0,0 +1,253 @@ +/*5ClB7Pnn+Vci3QeuVCVXi90t/e2aio0eKQpEd2QHkco=*/ +import React, { Component } from 'react'; +import { createPage, base, createPageIcon} from 'nc-lightapp-front'; +import { buttonClick, initTemplate, manager, affixButtonClick } from './events'; +import requestApi from './requestApi' +import SSCCenter from '../../../refer/sscbd/SSCUnitGridRef' +import SSCWorkGroup from '../../../refer/sscbd/SSCWorkGroupGridRef' +import { Nav } from 'ssccommon/components/global-nav' +import './index.less'; +import './index.css'; +const { NCFormControl, NCAffix, NCButton,NCDiv} = base; +import { + nccGetTheme, + } from 'ssccommon/utils/asyncFunctions.js'; + +class WorkingGroupUser extends Component { + constructor(props) { + super(props); + this.state = { + isEdit:false, // 编辑态/浏览态 + SSCCenter:{}, // 共享中心 + searchValue:'', // 查询项 + initInfoArr:[], // 原始的人员 + checkInfoArr:[], // 选中的人员 + addInfoArr:[], // 新增的人员 + delInfoArr:[], // 删除的人员 + isBlackTheme: false, // 是否暗黑主题 + }; + this.dragInfoArr = []; // 拖拽的信息 + initTemplate.call(this, props); + } + componentDidMount() { + this._getTheme() + // 初始化表格 + this.props.treeTableManyCol.initTreeTableData('treeTableCol', [], ''); + + let pk_sscunit = this.props.getUrlParam('pk_sscunit'); + setTimeout(() => { + pk_sscunit && this.onSSCCenterChange.call(this, JSON.parse(pk_sscunit)); + }, 300); + } + + // 获取主题 + _getTheme = async () => { + const theme = await nccGetTheme() + this.setState({isBlackTheme: theme === 'black'}) + } + //共享中心改变事件 + onSSCCenterChange = (ssc) => { + if (ssc.refpk) { + this.setState({ SSCCenter: ssc }); + this.queryData(ssc.refpk); + } else { + this.setState({ SSCCenter: {} }); + this.props.treeTableManyCol.initTreeTableData('treeTableCol', [], ''); + } + // 保存共享中心 + this.props.setUrlParam({pk_sscunit: ssc.hasOwnProperty('refpk') ? JSON.stringify(ssc) : ''}); + } + // 查询datas + queryData(pk_sscunit) { + requestApi.queryWorkGroupUser({ + data:{pk_sscunit:pk_sscunit}, + success:(res)=>{ + //console.log('作业组用户查询',res); + // 以下代码维护一个初始化数据 + let initInfoArr = [] + if(res.data.rows){ + res.data.rows.map((node)=>{ + // pid为null的节点为顶级节点 + node.values.pid==null&&delete node.values.pid; + }) + res.data.rows.map((item)=>{ + let initInfo ={ + pid:item.values.pid!==undefined&&item.values.pid.value, // 父节点pk + pk_workinggroup:item.values.pk_workinggroup.value, // 工作组pk + pk_workinggroup_name:item.values.pk_workinggroup.display,// 工作组名称 + isleaf:item.values.isleaf.value, // 是否末级节点 + chargeman:[], // 组长数组 + member:[], // 组员数组 + } + item.values.chargeman.display.map((name,idx)=>{ + initInfo.chargeman.push({ + orgNames:item.values.chargeman.orgNames[idx], // 组织名称 + deptNames:item.values.chargeman.deptNames[idx], // 部门名称 + name:name, // 组长名称 + value:item.values.chargeman.value[idx], // 组长pk + vos:item.values.chargeman.vos[idx], // 接口返回VO + code: item.values.chargeman.code[idx] + }); + }) + item.values.member.display.map((name,idx)=>{ + initInfo.member.push({ + orgNames:item.values.member.orgNames[idx], // 组织名称 + deptNames:item.values.member.deptNames[idx], // 部门名称 + name:name, // 组员名称 + value:item.values.member.value[idx], // 组员pk + vos:item.values.member.vos[idx], // 接口返回VO + code: item.values.member.code[idx], + }); + }) + initInfoArr.push(initInfo); + }) + //console.log('作业组用户初始化数据',initInfoArr) + //同步时,将数据转换成组件需要的数据结构。需要先添加refpk(值为自身主键的值)、pid(值为父元素主键的值)两个字段。 + let data = this.props.treeTableManyCol.createNewData(res.data.rows); + this.props.treeTableManyCol.initTreeTableData('treeTableCol', data, 'pk_workinggroup',true); + this.setState({ initInfoArr: initInfoArr, addInfoArr: [], delInfoArr: [] ,isEdit: false }); + }else { + this.props.treeTableManyCol.initTreeTableData('treeTableCol', [], ''); + } + // 以上代码维护一个初始化数据 + } + }) + } + // 渲染锚点操作行 + drawCtrContent = () => { + let itemList = []; + this.state.checkInfoArr.map((item)=>{ + itemList.push( + + {item.display} + x + + ) + }) + return itemList; + } + + render() { + const { treeTableManyCol } = this.props; + let { treeTableCol } = treeTableManyCol; + let itemContent = this.drawCtrContent(); + let multiLang = this.props.MutiInit.getIntl(7010); + + const tableClass = this.state.isEdit ? 'nc-singleTable-table-area nc-singleTable-table-area--edit' : 'nc-singleTable-table-area' + + return ( +
    + {/* 导航条*/} +
    + ) + } +} +WorkingGroupUser = createPage({ + mutiLangCode: '7010' +})(WorkingGroupUser); +export default WorkingGroupUser; +/*5ClB7Pnn+Vci3QeuVCVXi90t/e2aio0eKQpEd2QHkco=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/AdjustDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/AdjustDialog.js new file mode 100644 index 0000000..1bb0b73 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/AdjustDialog.js @@ -0,0 +1,67 @@ +/*RYs8HAAEM9KNDnbInZhf7uKd5AB1PazSQimXyaU5WvI=*/ +import React, {Component} from 'react' +import {base} from 'nc-lightapp-front' +const {NCModal,NCButton,NCTextArea} = base +import requestApi from '../requestApi' + +class AdjustDialog extends Component { + constructor(props) { + super(props) + this.state={ + memo:'' + } + } + // 保存并关闭 + save = () => { + requestApi.taskAdjustAction({ + data: { + pk_task: this.props.data.pk_currenttask.value, + actiontype: "adjust", + memo:this.state.memo, + ts: this.props.data.ts.value + }, + success: (data) => { + this.setState({memo: ''}) + this.props.successAdjust(data) + } + }) + } + + cancel = () => { + this.props.handleCloseModal() + this.setState({memo:''}) + } + + render() { + let multiLang = this.props.MutiInit.getIntl(7010); + return ( + {this.cancel()}}> + + {/*701001RWCL-0007:申请调整*/} + {multiLang && multiLang.get('701001RWCL-0007')} + + +
    +
    + {/*701001RWCL-0134:请输入申请调整原因*/} + {this.state.memo=val}} + /> +
    +
    +
    + + {multiLang && multiLang.get('701001RWCL-0007')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default AdjustDialog +/*RYs8HAAEM9KNDnbInZhf7uKd5AB1PazSQimXyaU5WvI=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/CashierRejectDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/CashierRejectDialog.js new file mode 100644 index 0000000..267311b --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/CashierRejectDialog.js @@ -0,0 +1,62 @@ +/*Qa44rZ25gdfsWVjxPrmnzTmsSitiRVWiLkfAsQj6gko=*/ +import React, { + Component +} from 'react' + +let animTimer = null, top = 0 + +class CashierRejectDialog extends Component { + constructor(props) { + super(props) + this.state = {} + } + + componentDidMount() { + const anim = document.getElementById('inner-text') + const flot = document.getElementById('floating-text') + this.setAnimatem(anim) + anim.onmouseenter = () => { + if (animTimer) clearInterval(animTimer) + // anim.style.top = '0' + // top = 0 + flot.style.transform = 'scale(1)' + } + anim.onmouseleave = () => { + if (animTimer) clearInterval(animTimer) + this.setAnimatem(anim) + flot.style.transform = 'scale(0)' + } + } + + setAnimatem = tag => { + animTimer = setInterval(() => { + top -= 0.02 + const basicHeight = document.getElementById('inner-text').childNodes[0].getBoundingClientRect().height + if (top <= basicHeight * -1) { + top = 0 + } + tag.style.top = `${top}px` + }, 0) + } + + render() { + const {manualReason} = this.props + return ( +
    +
    +
    + ! {manualReason}
    + ! {manualReason} +
    +
    + +
    + {manualReason} +
    +
    + ) + } +} + +export default CashierRejectDialog +/*Qa44rZ25gdfsWVjxPrmnzTmsSitiRVWiLkfAsQj6gko=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/creditApproval.js b/src/ssctpaaa/sscuser/sscuser/list/components/creditApproval.js new file mode 100644 index 0000000..e6f568d --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/creditApproval.js @@ -0,0 +1,239 @@ +/*ZsBXL3NdlRxYIImu/l1dnge++xqxU9zcuVCp6oPp5Qk=*/ +import React, {Component} from 'react' +import {base, toast,promptBox, viewModel } from 'nc-lightapp-front' +const {NCModal,NCButton,NCTextArea} = base +const { getGlobalStorage } = viewModel +import requestApi from '../requestApi' +import { reloadBillPage } from '../events' +import classnames from 'classnames'; + + +class CreditApprovalDialog extends Component { + constructor(props) { + super(props) + this.state={ + memo:'', + jkCheck:false, + ntbCheck:false, + memo:'', + ruleSearchValue: '' + } + this.ruleSearchThresholdTime = null; + + + } + + save = () => { + let credits = [] + let multiLang = this.props.MutiInit.getIntl(7010); + this.props.creditsArray.forEach(each => { + credits.push(each.refpk) + }) + if (this.props.creditView && credits.length == 0) { + toast({ + color: 'warning', + title: multiLang && multiLang.get('701001RWCL-0135'),//701001RWCL-0135:请注意 + content: multiLang && multiLang.get('701001RWCL-0136')//701001RWCL-0136:请选择至少一个信用指标 + }) + return + } + + requestApi.taskApproveAction({ + data: { + pk_currenttask: this.state.currentRowData.pk_currenttask.value, + pk_task: this.state.currentRowData.pk_task.value, + pk_group: this.state.currentRowData.pk_group.value, + info: this.state.memo, + billtype:this.props.currentRowData.billtypecode.value, + billno:this.props.currentRowData.billno.value, + busiid:this.props.currentRowData.busiid.value, + skipcodes:this.state.skipcodes, + ntbCheck:this.state.ntbCheck, + actiontype: "sscapprove", + credits, + jkCheck:this.state.jkCheck, + transtypecode:this.props.currentRowData.transtypecode.value, + mod:this.props.currentRowData.module.value, + ts: this.props.currentRowData.ts.value + }, + success: (data) => { + if (data.success) { + if(data.data&&data.data['jkAlarm']){ + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'),//"提示信息" + content: (multiLang && multiLang.get('701001RWCL-0048'))+ data.data['jkAlarm'] + (multiLang && multiLang.get('701001RWCL-0049')), + noFooter: false, // 是否显示底部按钮(确定、取消),默认显示(false),非必输 + noCancelBtn: false, // 是否显示取消按钮,,默认显示(false),非必输 + beSureBtnName: multiLang && multiLang.get('7010-0001'), + cancelBtnName: multiLang && multiLang.get('7010-0004'), + beSureBtnClick: ()=>{ + this.state.jkCheck=true; + this.save(); + } + //cancelBtnClick: functionCancel // 取消按钮点击调用函数,非必输 + }) + }else if(data.data&&data.data['bugetAlarm']){ + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'),//"提示信息" + content: (multiLang && multiLang.get('701001RWCL-0048'))+ data.data['bugetAlarm'] + (multiLang && multiLang.get('701001RWCL-0049')), + noFooter: false, // 是否显示底部按钮(确定、取消),默认显示(false),非必输 + noCancelBtn: false, // 是否显示取消按钮,,默认显示(false),非必输 + beSureBtnName: multiLang && multiLang.get('7010-0001'), + cancelBtnName: multiLang && multiLang.get('7010-0004') , + beSureBtnClick: ()=>{ + this.state.ntbCheck = true; + this.state.skipcodes = data.data['skipcodes'] + this.save(); + } + //cancelBtnClick: functionCancel // 取消按钮点击调用函数,非必输 + }) + } else { + this.props.successCreditApproval(data.data.ts) + this.state.currentRowData = this.props.currentRowData; + let module = this.props.currentRowData.module.value || ""; + let _ncc_websocket_switch_ = getGlobalStorage("localStorage", "_ncc_websocket_switch_") || "0";//默认为合盘环境 + if (_ncc_websocket_switch_ == "0" || module == "webdbl") {//非微服务环境或者工单 + reloadBillPage.call(this); + } + } + } + } + }) + } + + cancel = () => { + this.props.handleCloseModal() + this.setState({memo:''}) + } + + ruleItemSelect = (item, selectedRuleItems) => { + if (selectedRuleItems[item.refpk]) { + delete selectedRuleItems[item.refpk] + } else { + selectedRuleItems[item.refpk] = item; + } + + this.props.setCheckedCredits(Object.values(selectedRuleItems)); + } + + ruleSearchChange(e) { + let value = e.target.value; + let trimValue = value.trim(); + this.setState({ + ruleSearchValue: value + }); + clearTimeout(this.ruleSearchThresholdTime); + this.ruleSearchThresholdTime = setTimeout(() => { + + let creditRuleItems = this.props.creditRuleItems; + Object.values(creditRuleItems).forEach((rootItem) => { + rootItem.children.forEach((item) => { + if (!trimValue || item.refname.indexOf(trimValue) != -1) { + item.notSearch = false; + } else { + item.notSearch = true; + } + }) + }) + this.props.setCreditRuleItems(creditRuleItems); + }, 200) + + + } + + render() { + const { + creditsArray, + setCheckedCredits, + creditView + } = this.props + + let selectedRuleItems = {} + let multiLang = this.props.MutiInit.getIntl(7010); + creditsArray && creditsArray.forEach((item) => { + selectedRuleItems[item.refpk] = item; + }) + + return ( + {this.cancel()}}> + + {/*701001RWCL-0139:信用审批*/} + {multiLang && multiLang.get('701001RWCL-0139')} + + +
    +
    + { + creditsArray.map((each, idx) => ( + + {each.refname} + { + this.props.deleteCreditByIdx(idx) + }} + > - + + )) + } +
    + {/*"701001RWCL-0137": "请输入信用审批建议"*/} + {this.state.memo=val}} + /> +
    +
    +
    + {/*"701001RWCL-0140": "信用评价"*/} + {multiLang && multiLang.get('701001RWCL-0140')} + + {/*"701001RWCL-0138": "请查询"*/} + + +
    +
    + {Object.values(this.props.creditRuleItems).map((rootItem) => { + return [ +
    {rootItem.item.refname}
    , +
      + {rootItem.children.map((item) => { + return ( +
    • + {item.refname} +
    • + ) + })} +
    + ] + })} + +
    + +
    +
    + + {/*701001RWCL-0037:信用批准,7010-0004:取消*/} + {multiLang && multiLang.get('701001RWCL-0037')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default CreditApprovalDialog +/*ZsBXL3NdlRxYIImu/l1dnge++xqxU9zcuVCp6oPp5Qk=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/getTask.js b/src/ssctpaaa/sscuser/sscuser/list/components/getTask.js new file mode 100644 index 0000000..9053382 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/getTask.js @@ -0,0 +1,34 @@ +/*IQX/BvUIMt8UjvN5o3gbnTiguPwFDmb2VqQv+Z12dfw=*/ +import React, {Component} from 'react' + +export default class GetTask extends Component { + constructor(props) { + super(props) + this.state = {} + } + + render() { + let multiLang = this.props.MutiInit.getIntl(7010); + const { + search: {NCCreateSearch}, + queryAreaCode, + taskTakeAction, + oid + } = this.props + + return ( + NCCreateSearch( + queryAreaCode, + { + clickSearchBtn: (props, data, key) => { + taskTakeAction(data) + }, + oid: oid, + onlyShowSuperBtn: true, + replaceSuperBtn: multiLang && multiLang.get('701001RWCL-0001')//701001RWCL-0001:定向提取 + } + ) + ) + } +} +/*IQX/BvUIMt8UjvN5o3gbnTiguPwFDmb2VqQv+Z12dfw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/handonDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/handonDialog.js new file mode 100644 index 0000000..1f821a2 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/handonDialog.js @@ -0,0 +1,74 @@ +/*NNSmk6bhmwq4ZjyD4WJSYuETud2+SW9BqNpYn95LG98=*/ +import React, { Component } from 'react' +import { base } from 'nc-lightapp-front' +const { NCModal, NCButton, NCTextArea } = base +import requestApi from '../requestApi' + +class HandonDialog extends Component { + constructor(props) { + super(props) + this.state = { + memo: '' + } + } + // 保存并关闭 + save = () => { + let reqData = { + pk_task: this.props.data.pk_currenttask.value, + actiontype: "handon", + memo: this.state.memo, + ts: this.props.data.ts.value, + } + if (this.props.showModal) { //单据详情页传递审核侧边栏数据 + reqData = { + ...reqData, + ...this.props.parentThis.auditPointBarInst.getAuditData(true) + } + } + requestApi.taskHandOnAction({ + data: reqData, + success: (data) => { + this.setState({ memo: '' }) + this.props.successHangUp(data) + } + }) + } + // 取消并关闭 + cancel = () => { + this.props.handleCloseModal() + this.setState({ memo: '' }) + } + + render() { + let multiLang = this.props.MutiInit.getIntl(7010); + return ( + { this.cancel() }}> + + {multiLang && multiLang.get('701001RWCL-0006')} + + +
    +
    + {/*701001RWCL-0141:请输入挂起原因*/} + { this.state.memo = val }} + /> +
    +
    +
    + + {/*7010-0004:取消,701001RWCL-0006:挂起*/} + this.save()} >{multiLang && multiLang.get('701001RWCL-0006')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default HandonDialog +/*NNSmk6bhmwq4ZjyD4WJSYuETud2+SW9BqNpYn95LG98=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/imagAndVoucherHandle.js b/src/ssctpaaa/sscuser/sscuser/list/components/imagAndVoucherHandle.js new file mode 100644 index 0000000..d33b028 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/imagAndVoucherHandle.js @@ -0,0 +1,82 @@ +/*zhyjEPGIRKA975SGI1uWC5ht7qFtvsInzPCZLpeEjy4=*/ +import requestApi from '../requestApi' +import { imageView } from "sscrp/rppub/components/image"; + +//打开影像和展示联查凭证按钮处理逻辑 +function imagAndVoucherHandle() { + let imagAndVoucherOpsPromise = null; + let billInfoMap = {}; + billInfoMap.pk_billid = this.state.currentRowData.busiid.value; + billInfoMap.pk_billtype = this.state.currentRowData.billtypecode.value; + billInfoMap.pk_tradetype = this.state.currentRowData.transtypecode.value; + billInfoMap.pk_org = this.state.currentRowData.pk_org.value; + + //存在外系统,创建外系统请求Promise备用 + if (this.alreadySettingOts) { + imagAndVoucherOpsPromise = new Promise((resolve, _) => { + requestApi.imagAndVoucherOps({ + data: { + isImagInstalled: this.isImagInstalled, + billid: billInfoMap.pk_billid, + tradeType: billInfoMap.pk_tradetype, + pk_org: billInfoMap.pk_org, + pk_group: this.state.currentRowData.pk_group.value + }, + success: (data) => { + resolve(data); + } + }) + }) + } + + // TOP 打开未处理单据时打开影像 ADD + if (this.isImagInstalled && this.queryKey.taskstatus == 'pending') { + if (this.alreadySettingOts) { //外系统打开方式 + imagAndVoucherOpsPromise.then((data) => { + if (data.imagShowType == 1) { + openPage(data.imagShowUrl, data.imagShowName); + } else if (data.imagShowType == 2) { + imageView(billInfoMap, 'iweb'); + } + }) + } else { + imageView(billInfoMap, 'iweb'); + } + + } + // BTM 打开单据直接打开影像 + + //是否显示联查凭证按钮 + let showLinkVoucherBtn = false; + if (this.alreadySettingOts) { + imagAndVoucherOpsPromise.then((data) => { + if (data.voucherShowType == 1) { + //显示联查凭证按钮 + showLinkVoucherBtn = true; + } + this.setState({ + showLinkVoucherBtn + }) + }) + } else { + this.setState({ + showLinkVoucherBtn + }) + } + +} + +function openPage(url, name) { + let w = (window.screen || {}).width || 1440; + let h = (window.screen || {}).height || 900; + let l = (window.screen || {}).width || 1440; + let t = (window.screen || {}).height || 900; + if (window.opener == null) { + window.imageBrowserWin = window.open(url, name, "width=" + w + ",height=" + h + ",left=" + l + ",top=" + t + ",toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, status=no"); + } else { + window.imageBrowserWin = window.opener.open(url, name, "width=" + w + ",height=" + h + ",left=" + l + ",top=" + t + ",toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, status=no"); + } +} + +export { imagAndVoucherHandle } +/*zhyjEPGIRKA975SGI1uWC5ht7qFtvsInzPCZLpeEjy4=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/rejectDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/rejectDialog.js new file mode 100644 index 0000000..6a879f8 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/rejectDialog.js @@ -0,0 +1,307 @@ +/*rqIYqQ1CPTAbQUBuqyz4iAGkfps9dmfqfRyrNDqqih4=*/ +import React, { Component } from 'react'; +import { base, ajax, toast, viewModel } from 'nc-lightapp-front'; +const { NCModal, NCButton, NCRadio, NCTextArea, NCSelect } = base; +const { getGlobalStorage } = viewModel +const NCOption = NCSelect.NCOption; +import classnames from 'classnames'; +import { reloadBillPage } from '../events' + +class RejectDialog extends Component { + constructor(props) { + super(); + this.state = { + actid: '', + repeat: '1', + ruleSearchValue: '' + } + this.ruleSearchThresholdTime = null; + } + + save = () => { + let multiLang = this.props.MutiInit.getIntl(7010); + if (!this.state.actid && !this.props.defOption) { + toast({ + color: 'warning', + title: multiLang && multiLang.get('701001RWCL-0135'),//701001RWCL-0135:请注意 + content: multiLang && multiLang.get('701001RWCL-0142')//701001RWCL-0142:请选择驳回流程 + }) + return + } + if (!this.props.reason) { + toast({ + color: 'warning', + title: multiLang && multiLang.get('701001RWCL-0135'),//701001RWCL-0135:请注意 + content: multiLang && multiLang.get('701001RWCL-0143')//701001RWCL-0143:请输入驳回原因 + }) + return + } + let credits = [] + this.props.creditsArray.forEach(each => { + credits.push(each.refpk) + }) + if (this.props.creditView && credits.length == 0) { + toast({ + color: 'warning', + title: multiLang && multiLang.get('701001RWCL-0135'),//701001RWCL-0135:请注意 + content: multiLang && multiLang.get('701001RWCL-0136')//701001RWCL-0136:请选择至少一个信用指标 + }) + return + } + + let actid = this.state.actid || this.props.defOption; + let oneOpt = this.props.ncoptions.find((oneOpt) => { + return oneOpt.value == actid + }) + let actname = oneOpt && oneOpt.name; + + ajax({ + url: '/nccloud/' + this.props.data.module.value + '/ssctp/sscbd/SSCTaskHandleRejectAction.do', + data: { + busiid: this.props.data.busiid.value, + billtypecode: this.props.data.billtypecode.value, + transtypecode: this.props.data.transtypecode.value, + pk_currenttask: this.props.data.pk_currenttask.value, + pk_group: this.props.data.pk_group.value, + pk_task: this.props.data.pk_task.value, + actiontype: 'sscreject', + actid: actid, + actname, + memo: this.props.reason, + mod: this.props.data.module.value, + repeat: this.state.repeat, + credits, + ts: this.props.data.ts.value, + ...this.props.parentThis.auditPointBarInst.getAuditData(true) + }, + success: () => { + // this.props.that.queryKey.taskstatus = 'sscreject';; + //不能用上面注释的方式改状态来控制侧边栏的编辑状态,否则会导致翻页状态不对。见bug NCCLOUD-182090 + let currentRowData = this.props.that.state.currentRowData; + currentRowData.taskstatus.value = 'reject'; + this.props.that.setState({ currentRowData, showdialogmodel: false, creditsArray: [], didAction: true, currentKey: 'sscreject' }); + this.setState({ + actid: '', + atcname: '' + }); + + this.props.setDidAction() + let module = currentRowData.module.value || ""; + let _ncc_websocket_switch_ = getGlobalStorage("localStorage", "_ncc_websocket_switch_") || "0";//默认为合盘环境 + if (_ncc_websocket_switch_ == "0" || module == "webdbl") {//非微服务环境或者工单 + reloadBillPage.call(this.props.that); + } + + toast({ + color: 'success', + title: multiLang && multiLang.get('701001RWCL-0144'),//701001RWCL-0144:驳回成功 + // content: multiLang && multiLang.get('701001RWCL-0144') + }) + return; + } + }); + } + + cancel = () => { + this.setState({ + actid: '' + }); + this.props.that.setState({ showdialogmodel: false, creditsArray: [] }) + } + + handleChange = (value) => { + this.setState({ + actid: value + }) + } + + handleRadio = (value) => { + this.setState({ + repeat: value + }) + } + + ruleItemSelect = (item, selectedRuleItems) => { + if (selectedRuleItems[item.refpk]) { + delete selectedRuleItems[item.refpk] + } else { + selectedRuleItems[item.refpk] = item; + } + + this.props.setCheckedCredits(Object.values(selectedRuleItems)); + } + + ruleSearchChange(e) { + let value = e.target.value; + let trimValue = value.trim(); + this.setState({ + ruleSearchValue: value + }); + clearTimeout(this.ruleSearchThresholdTime); + this.ruleSearchThresholdTime = setTimeout(() => { + + let creditRuleItems = this.props.creditRuleItems; + Object.values(creditRuleItems).forEach((rootItem) => { + rootItem.children.forEach((item) => { + if (!trimValue || item.refname.indexOf(trimValue) != -1) { + item.notSearch = false; + } else { + item.notSearch = true; + } + }) + }) + + this.props.setCreditRuleItems(creditRuleItems); + }, 200) + + + } + + componentwillreceiveprops(nextProps) { + /* if (this.props.reason != nextProps.reason) { + this.setState({ + memo: nextProps.reason + }) + } */ + } + + render() { + let { + ncoptions, + creditsArray, + setCheckedCredits, + creditView + } = this.props + let getNCOptions = () => { + let refHtml = []; + if (ncoptions != null && ncoptions != "" && ncoptions != '') { + ncoptions.map((one) => { + refHtml.push({one.name}) + }) + } + return refHtml + } + + let selectedRuleItems = {} + creditsArray && creditsArray.forEach((item) => { + selectedRuleItems[item.refpk] = item; + }) + let multiLang = this.props.MutiInit.getIntl(7010); + + return ( + { this.cancel() }}> + + {/*701001RWCL-0005:驳回*/} + {multiLang && multiLang.get('701001RWCL-0005')} + + +
    +
    + {/*701001RWCL-0145:驳回至*/} + {multiLang && multiLang.get('701001RWCL-0145')} + + + {getNCOptions()} + + + {/*
    + {CreditRuleTreeRef({ + onChange: setCheckedCredits, + clickContainer: 信用评价, + isMultiSelectedEnabled: true + })} +
    */} +
    +
    +
    + { + creditsArray.map((each, idx) => ( + + {each.refname} + { + this.props.deleteCreditByIdx(idx) + }} + > - + + )) + } +
    + {/*701001RWCL-0143:请输入驳回原因*/} + { this.props.reasonOnChange(val) }} + /> +
    +
    +
    +
    + + {/*701001RWCL-0140:信用评价*/} + {multiLang && multiLang.get('701001RWCL-0140')} + + +
    +
    + {Object.values(this.props.creditRuleItems).map((rootItem) => { + return [ +
    {rootItem.item.refname}
    , +
      + {rootItem.children.map((item) => { + return ( +
    • + {item.refname} +
    • + ) + })} +
    + ] + })} + +
    + +
    +
    + + {this.props.showRadio ? ( + + {/*701001RWCL-0146:重走流程,701001RWCL-0147:不重走流程*/} + {multiLang && multiLang.get('701001RWCL-0146')} + {multiLang && multiLang.get('701001RWCL-0147')} + + ) : ("")} + + + {multiLang && multiLang.get('701001RWCL-0005')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default RejectDialog; +/*rqIYqQ1CPTAbQUBuqyz4iAGkfps9dmfqfRyrNDqqih4=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/unAdjustDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/unAdjustDialog.js new file mode 100644 index 0000000..4401a6f --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/unAdjustDialog.js @@ -0,0 +1,67 @@ +/*W1kgRP7NHxpUeUhDJs3ZyDkqoyjawADYH/03GpAM+28=*/ +import React, {Component} from 'react' +import {base} from 'nc-lightapp-front' +const {NCModal,NCButton,NCTextArea} = base +import requestApi from '../requestApi' + +class UnAdjustDialog extends Component { + constructor(props) { + super(props) + this.state={ + memo:'' + } + } + // 保存并关闭 + save = () => { + requestApi.taskUnAdjustAction({ + data: { + pk_task: this.props.data.pk_currenttask.value, + actiontype: "un-adjust", + memo:this.state.memo, + ts: this.props.data.ts.value + }, + success: (data) => { + this.setState({memo: ''}) + this.props.successUnAdjust(data) + } + }) + } + + cancel = () => { + this.props.handleCloseModal() + this.setState({memo:''}) + } + + render() { + let multiLang = this.props.MutiInit.getIntl(7010); + return ( + {this.cancel()}}> + + {/*701001RWCL-0017:取消调整*/} + {multiLang && multiLang.get('701001RWCL-0017')} + + +
    +
    + {/*701001RWCL-0148:请输入取消调整原因*/} + {this.state.memo=val}} + /> +
    +
    +
    + + {multiLang && multiLang.get('701001RWCL-0017')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default UnAdjustDialog +/*W1kgRP7NHxpUeUhDJs3ZyDkqoyjawADYH/03GpAM+28=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/components/unHandonDialog.js b/src/ssctpaaa/sscuser/sscuser/list/components/unHandonDialog.js new file mode 100644 index 0000000..c207e80 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/components/unHandonDialog.js @@ -0,0 +1,67 @@ +/*KJz9VYhIa2zfu7+ozKyhdBrzjFoSuFCZVWqKcof3Hak=*/ +import React, {Component} from 'react' +import {base} from 'nc-lightapp-front' +const {NCModal,NCButton,NCTextArea} = base +import requestApi from '../requestApi' + +class UnHandonDialog extends Component { + constructor(props) { + super(props) + this.state={ + memo:'' + } + } + // 保存并关闭 + save = () => { + requestApi.taskUnHandOnAction({ + data: { + pk_task: this.props.data.pk_currenttask.value, + actiontype: "un-handon", + memo:this.state.memo, + ts: this.props.data.ts.value + }, + success: (data) => { + this.setState({memo: ''}) + this.props.successUnHangUp(data) + } + }) + } + + cancel = () => { + this.props.handleCloseModal() + this.setState({memo:''}) + } + + render() { + let multiLang = this.props.MutiInit.getIntl(7010); + return ( + {this.cancel()}}> + + {/*701001RWCL-0018:取消挂起*/} + {multiLang && multiLang.get('701001RWCL-0018')} + + +
    +
    + {/*701001RWCL-0149:请输入取消挂起原因*/} + {this.state.memo=val}} + /> +
    +
    +
    + + {multiLang && multiLang.get('701001RWCL-0018')} + {multiLang && multiLang.get('7010-0004')} + +
    + ) + } +} + +export default UnHandonDialog +/*KJz9VYhIa2zfu7+ozKyhdBrzjFoSuFCZVWqKcof3Hak=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/config.json b/src/ssctpaaa/sscuser/sscuser/list/config.json new file mode 100644 index 0000000..7e605d0 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/config.json @@ -0,0 +1,4 @@ +{ + "dependjs": ["../../../../sscrp/rppub/components/image/index.js"], + "dependModuleName": ["sscrp/rppub/components/image"] +} \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/Showtipss.js b/src/ssctpaaa/sscuser/sscuser/list/events/Showtipss.js new file mode 100644 index 0000000..c28ffae --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/Showtipss.js @@ -0,0 +1,92 @@ +/*As6sWqh0yZSSVRl+0f6j6F51J7uUUpQjKEIAG4EeJmU=*/ +import React, { + Component +} from 'react'; + +import urgent1 from '../../../../public/image/billnoOpr/urgent1.png' +import ismereject1 from '../../../../public/image/billnoOpr/ismereject1.png' +import isleaderreject1 from '../../../../public/image/billnoOpr/isleaderreject1.png' +import isappointed1 from '../../../../public/image/billnoOpr/isappointed1.png' +import isunapprove1 from '../../../../public/image/billnoOpr/isunapprove1.png' +import outerhandon from '../../../../public/image/billnoOpr/outerhandon.png' + +let setScreen = null, wrapper = null + +class Showtipss extends Component { + + constructor() { + super() + this.state = {} + setScreen = this.setScreen + } + + componentDidMount() { + wrapper = document.getElementsByClassName('tips-fixed--wrapper')[0] + } + + showTipsHandler(showtips, ev) { + ev = ev || window.event + setScreen(ev.clientX, ev.clientY, showtips) + } + + setScreen = (x, y, showtips) => { + wrapper.style.transform = 'scale(1)' + wrapper.style.left = x + 5 + 'px' + wrapper.style.top = y + 5 + 'px' + this.props.setTipsWrapper(showtips) + } + + hideTipsHandler = () => { + wrapper.style.transform = 'scale(0)' + } + + render() { + const {billnoa, record, json} = this.props.info + + const ret = [], showtips = [] + + if(record.urgent && record.urgent.value == true){ + ret.push( )//紧急 + showtips.push(
    {json['701001RWCL-0056']}
    )//紧急 + } + if(record.ismereject && record.ismereject.value == true){ + ret.push( )//本人驳回 + showtips.push(
    {json['701001RWCL-0057']}
    )//本人驳回 + } + if(record.isleaderreject && record.isleaderreject.value == true){ + ret.push( )//上级驳回 + showtips.push(
    {json['701001RWCL-0058']}
    )//上级驳回 + } + if(record.isappointed && record.isappointed.value == true){ + ret.push( )//强制分配 + showtips.push(
    {json['701001RWCL-0055']}
    )//强制分配 + } + if(record.isunapprove && record.isunapprove.value == true){ + ret.push( )//取消审批 + showtips.push(
    {json['701001RWCL-0169']}
    )//取消审批 + } // + if (record.taskstatus && record.taskstatus.value == 'outerhandon') { + ret.push( )//外部挂起 + showtips.push(
    {json['701001RWCL-0184']}
    )//外部挂起 + } + + if (record.iscmpreject && record.iscmpreject.value == true) { + ret.push( {json['701001RWCL-0203'] || '出纳驳回'})// 出纳驳回 + showtips.push(
    {json['701001RWCL-0203'] || '出纳驳回'}
    )//出纳驳回 + + } + + return ( +
    this.showTipsHandler(showtips)} + onMouseLeave = {this.hideTipsHandler} + > + { billnoa } + { [...ret] } +
    + ) + } +} + +export default Showtipss +/*As6sWqh0yZSSVRl+0f6j6F51J7uUUpQjKEIAG4EeJmU=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/buttonClick.js b/src/ssctpaaa/sscuser/sscuser/list/events/buttonClick.js new file mode 100644 index 0000000..8449277 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/buttonClick.js @@ -0,0 +1,161 @@ +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ +import requestApi from '../requestApi' +import { initTemplate } from './index' +import { pageTo } from 'nc-lightapp-front' +import urlHandle from 'ssccommon/utils/urlHandle'; +import { setPointTreeData } from 'ssccommon/components/auditPointBar/handle'; +import { imagAndVoucherHandle } from '../components/imagAndVoucherHandle'; + + + +export default function buttonClick(key, index) { + switch (key) { + case 'TaskExtract': // 任务提取 + requestApi.taskTakeAction({ + success: (data) => { + if (data.success) { + initTemplate.call(this, this.props) + } + } + }) + break + case 'approve': + let currentRowData = this.data.listRows[index].values; + + this.setState({ + //showModal: true, + didAction: false, + sagaStatus: currentRowData.saga_status.value, + didApprove: currentRowData.taskstatus.value === 'sscapprove', + alarm: false, + hitMessage: '' + }, () => { + // 信用 + let timer = null + const wrap = document.getElementsByClassName('uf-jewel')[0] + const float = document.getElementsByClassName('uf-jewel-float')[0] + wrap.onmouseenter = () => { + if (timer) clearTimeout(timer) + float.style.display = 'block' + } + wrap.onmouseleave = () => { + if (timer) clearTimeout(timer) + timer = setTimeout(() => { + float.style.display = 'none' + }, 800) + } + float.onmouseenter = () => { + if (timer) clearTimeout(timer) + float.style.display = 'block' + } + float.onmouseleave = () => { + if (timer) clearTimeout(timer) + timer = setTimeout(() => { + float.style.display = 'none' + }, 800) + } + }) + this.state.currentRowData = currentRowData; + this.setState({ activeIndex: index + 1 }) + const _this = this + requestApi.openBill({ + data: { + billtypeCode: _this.state.currentRowData.billtypecode.value, + transtypeCode: _this.state.currentRowData.transtypecode.value, + billid: _this.state.currentRowData.busiid.value, + pk_group: _this.state.currentRowData.pk_group.value + }, + success: (data) => { + let approveUrl = urlHandle(data, 'scene=zycl' + `&deal=${this.queryKey.taskstatus}`, null, 'approve-detail'); + let params = data.data.data; + + let pk_task = this.state.currentRowData.pk_task.value; + let billid = this.state.currentRowData.busiid.value; + + //出纳驳回原因 + let cashierRejectReason = this.state.currentRowData.cmprejectinfo ? this.state.currentRowData.cmprejectinfo.value : ''; + + //设置审核侧边栏数据 + setPointTreeData.call(this.auditPointBarInst, { pk_task, billid }) + + _this.setState({ + showModal: true, + approveUrl, + reason: cashierRejectReason + }, () => { + pageTo.addUrlParam({ + c: params.appcode, + p: params.pagecode, + n: params.appname, + custom: JSON.stringify({ + pk_group: _this.state.currentRowData.pk_group.value + }) + }) + }) + + //打开影像和展示联查凭证按钮处理逻辑 + imagAndVoucherHandle.call(_this); + + //手动驳回原因 出纳驳回与手动驳回用同一个变量, 两个原因不会同时存在 + requestApi.manualReasonQry({ + pk: this.data.listRows[index].values.pk_currenttask.value, + success: (response) => { + response.data && _this.setState({ reason: response.data}) + } + }) + + } + }) + // 信用是否设置 + let isCreditInstall + requestApi.queryCredits({ + queryMethod: 'isCreditInstall', + success: (data) => { + isCreditInstall = data.data.isCreditInstall + this.setState({ isCreditInstall }) + if (isCreditInstall) { + // 信用等级 + requestApi.queryCredits({ + queryMethod: 'queryCreditLevel', + success: (data) => { + let levels = data.data + if (levels.length > 5) levels.length = 5 + _this.setState({ levels }, () => { + // 查询信用信息详情 + requestApi.queryCredits({ + queryMethod: 'queryCreditInfo', + billMakerId: _this.state.currentRowData.billmaker.value, + success: (data) => { + _this.setState({ creditLevelInfo: data.data }) + } + }) + }) + } + }) + } + } + }) + + //是否有预警消息 + requestApi.queryBudgetMessage({ + data: { + busiid: _this.state.currentRowData.busiid.value, + billtype: _this.state.currentRowData.transtypecode.value, + pk_group: _this.state.currentRowData.pk_group.value + }, + success: (data) => { + if (data.data && data.data['alarm']) { + this.setState({ + alarm: data.data['alarm'], + hitMessage: data.data['message'] + }) + } + } + }) + + break + default: + break + } +} +/*q2LCmxM8POvl78IL0LiydtfSRmpYU3scGkCvS8PYeCQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/cardButtonClick.js b/src/ssctpaaa/sscuser/sscuser/list/events/cardButtonClick.js new file mode 100644 index 0000000..cba0b98 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/cardButtonClick.js @@ -0,0 +1,214 @@ +/*qH4y8n9P8knQu7KPTubTGpTxDQVIUVgaWdisB4B6Xls=*/ +import requestApi from '../requestApi' +import { pageTo } from 'nc-lightapp-front' +import urlHandle from 'ssccommon/utils/urlHandle'; +import { initTemplate } from './index' +import { setPointTreeData } from 'ssccommon/components/auditPointBar/handle'; +import { imagAndVoucherHandle } from '../components/imagAndVoucherHandle'; + + + + +/**卡片态按钮处理逻辑, 这里后期应与列表态处理逻辑合并 */ +export default function cardButtonClick(btnKey, record, index, acrecordtionFrom) { + let text = this.data.listRows[index].values + switch (btnKey) { + case "AdjustApply": // 申请调整 + this.setState({ showadjustmodel: true, adjustmodeldata: text }) + break + case "OpenBill": // 卡片模式 单据编号点击 + this.setState({ + showModal: true, + didAction: false, + didApprove: this.queryKey.taskstatus === 'handled' ? true : false, + alarm: false, + hitMessage: '' + }, () => { + // 信用 + let timer = null + const wrap = document.getElementsByClassName('uf-jewel')[0] + const float = document.getElementsByClassName('uf-jewel-float')[0] + wrap.onmouseenter = () => { + if (timer) clearTimeout(timer) + float.style.display = 'block' + } + wrap.onmouseleave = () => { + if (timer) clearTimeout(timer) + timer = setTimeout(() => { + float.style.display = 'none' + }, 800) + } + float.onmouseenter = () => { + if (timer) clearTimeout(timer) + float.style.display = 'block' + } + float.onmouseleave = () => { + if (timer) clearTimeout(timer) + timer = setTimeout(() => { + float.style.display = 'none' + }, 800) + } + }) + this.state.currentRowData = this.data.listRows[index].values + const _this = this + requestApi.openBill({ + data: { + billtypeCode: _this.state.currentRowData.billtypecode.value, + transtypeCode: _this.state.currentRowData.transtypecode.value, + billid: _this.state.currentRowData.busiid.value, + pk_group: _this.state.currentRowData.pk_group.value + }, + success: (data) => { + let approveUrl = urlHandle(data, 'scene=zycl' + `&deal=${this.queryKey.taskstatus}`, null, 'approve-detail'); + let params = data.data.data; + + let pk_task = this.state.currentRowData.pk_task.value; + let billid = this.state.currentRowData.busiid.value; + + //出纳驳回原因 + let cashierRejectReason = this.state.currentRowData.cmprejectinfo ? this.state.currentRowData.cmprejectinfo.value : ''; + + //设置审核侧边栏数据 + setPointTreeData.call(this.auditPointBarInst, { pk_task, billid }) + + _this.setState({ + showModal: true, + approveUrl, + reason: cashierRejectReason + }, () => { + pageTo.addUrlParam({ + c: params.appcode, + p: params.pagecode, + n: params.appname, + custom: JSON.stringify({ + pk_group: _this.state.currentRowData.pk_group.value + }) + }) + }) + + //打开影像和展示联查凭证按钮处理逻辑 + imagAndVoucherHandle.call(_this); + + //手动驳回原因 出纳驳回与手动驳回用同一个变量 + requestApi.manualReasonQry({ + pk: this.data.listRows[index].values.pk_currenttask.value, + success: response => _this.setState({ reason: response.data || '' }) + }) + + } + }) + // 信用是否设置 + let isCreditInstall + requestApi.queryCredits({ + queryMethod: 'isCreditInstall', + success: (data) => { + isCreditInstall = data.data.isCreditInstall + this.setState({ isCreditInstall }) + if (isCreditInstall) { + // 信用等级 + requestApi.queryCredits({ + queryMethod: 'queryCreditLevel', + success: (data) => { + let levels = data.data + if (levels.length > 5) levels.length = 5 + _this.setState({ levels }, () => { + // 查询信用信息详情 + requestApi.queryCredits({ + queryMethod: 'queryCreditInfo', + billMakerId: _this.state.currentRowData.billmaker.value, + success: (data) => { + _this.setState({ creditLevelInfo: data.data }) + } + }) + }) + } + }) + } + } + }) + + //是否有预警消息 + requestApi.queryBudgetMessage({ + data: { + busiid: _this.state.currentRowData.busiid.value, + billtype: _this.state.currentRowData.transtypecode.value, + pk_group: _this.state.currentRowData.pk_group.value + }, + success: (data) => { + if (data.data && data.data['alarm']) { + this.setState({ + alarm: data.data['alarm'], + hitMessage: data.data['message'] + }) + } + } + }) + break + case "HangUp": // 挂起 + this.setState({ showhandonmodel: true, handonmodeldata: text }) + break + case "CancelHangUp": // 取消挂起 + this.setState({ + showUnHandonModal: true, + unHandonModalData: text + }) + break + case "CancelAdjust": // 取消调整 + this.setState({ + showUnAdjustModal: true, + unAdjustModalData: text + }) + break + case 'QueryOperation': + requestApi.taskQueryOperationAction({ + data: { + busiid: text.busiid.value + }, + success: (data) => { + if (data.success && data.data.ssctaskhistory) { + let newRows = data.data.ssctaskhistory.rows.map((row, index) => { + let values = row.values; + let newRow = { values }; + for (let attrcode in values) { + if (attrcode != 'opt') { + newRow[attrcode] = values[attrcode].display || values[attrcode].value + newRow.key = values['pk_bill'].value + '_' + index; + } + } + return newRow; + }) + this.setState({ + sscTaskHistoryData: newRows, + showOperateNote: true + }) + } + } + }) + break + case "CancelHandled": // 取消审核 + requestApi.taskUnApproveAction({ + data: { + busiid: record.busiid.value, + billtypecode: record.billtypecode.value, + transtypecode: record.transtypecode.value, + pk_task: record.pk_task.value, + pk_group: record.pk_group.value, + actiontype: "un-sscapprove", + ts: record.ts.value, + mod: record.module.value + }, + success: (data) => { + if (data.success) { + initTemplate.call(this, this.props) + } + } + }) + break + default: + break + } +} + + + +/*qH4y8n9P8knQu7KPTubTGpTxDQVIUVgaWdisB4B6Xls=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/fixedTemplate.js b/src/ssctpaaa/sscuser/sscuser/list/events/fixedTemplate.js new file mode 100644 index 0000000..ba0f696 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/fixedTemplate.js @@ -0,0 +1,57 @@ +/*7hOekIf8hUsv8p/Si0HVBtJo9qHX0rmchb8gnkywXYE=*/ +const buttons = [ + /* { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "AdjustApply", + "title": "申请调整", + "area": "sscuserlist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "HangUp", + "title": "挂起", + "area": "sscuserlist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "CancelHangUp", + "title": "取消挂起", + "area": "sscuserlist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "CancelAdjust", + "title": "取消调整", + "area": "sscuserlist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "CancelHandled", + "title": "取消审核", + "area": "sscuserlist", + "children": [] + }, + { + "id": "0001A41000000006J5B1", + "type": "button_main", + "key": "QueryOperation", + "title": "操作记录", + "area": "sscuserlist", + "children": [] + }*/ +] + + +export default { + buttons +} +/*7hOekIf8hUsv8p/Si0HVBtJo9qHX0rmchb8gnkywXYE=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/getListBtn.js b/src/ssctpaaa/sscuser/sscuser/list/events/getListBtn.js new file mode 100644 index 0000000..8d879b6 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/getListBtn.js @@ -0,0 +1,106 @@ +/*qhVudgKW6ht1y9z2TuPcG5AIM+Or16J7zDlAFufMfx0=*/ +import { listButtonClick } from './index' + +/** + * + * @param {*} props + * @param {*} sagasButtonVisible 判断是否处理sagas事务重试按钮 + */ +export default function getListButtonRender(props, sagasButtonVisible) { + const that = this + let r_render + let multiLang = props.MutiInit.getIntl(7010); + switch (this.queryKey.taskstatus) { + case 'pending': + r_render = (text, record, index) => { + let btnArr = ['AdjustApply', 'HangUp', 'QueryOperation']; + if (record.taskstatus && record.taskstatus.value == 'sscapprove' && record.iscmpreject && record.iscmpreject.value === true) { //出纳驳回时 + btnArr = ['CancelHandled', 'QueryOperation'] + } + return props.button.createOprationButton( + btnArr, + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + } + break + case 'handon': + r_render = (text, record, index) => props.button.createOprationButton( + ['CancelHangUp', 'QueryOperation'], + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + break + case 'adjust': + r_render = (text, record, index) => props.button.createOprationButton( + ['CancelAdjust', 'QueryOperation'], + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + break + case 'handled': + r_render = (text, record, index) => props.button.createOprationButton( + ['CancelHandled', 'QueryOperation'], + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + break + case 'sscreject': + r_render = (text, record, index) => props.button.createOprationButton( + ['QueryOperation'], + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + break + default: + r_render = (text, record, index) => props.button.createOprationButton( + ['QueryOperation'], + { + area: "sscuserlist", + onButtonClick: (props, btnKey) => { + listButtonClick(props, btnKey, text, record, index, that) + } + } + ) + break + } + return { + label: multiLang && multiLang.get('701001RWCL-0060'),//操作 + itemtype: 'customer', + attrcode: 'opr', + visible: true, + width: '205px', + fixed: 'right', + className: "opr", + render: (text, record, index) => { + return sagasButtonVisible ? props.button.createErrorButton({ + record: record, + sucessCallBack: () => { + //状态切换成功后,显示业务 + return r_render(text, record, index); + } + }) : r_render(text, record, index); + } + } +} +/*qhVudgKW6ht1y9z2TuPcG5AIM+Or16J7zDlAFufMfx0=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/index.js b/src/ssctpaaa/sscuser/sscuser/list/events/index.js new file mode 100644 index 0000000..879eb23 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/index.js @@ -0,0 +1,11 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import buttonClick from './buttonClick' +import initTemplate from './initTemplate' +import listButtonClick from './listButtonClick' +import cardButtonClick from './cardButtonClick' +import paginationClick from './paginationClick' +import onRowDoubleClick from './onRowDoubleClick' +import reloadBillPage from './reloadBillPage' +export { buttonClick, initTemplate, listButtonClick, cardButtonClick, paginationClick, onRowDoubleClick, reloadBillPage} + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/initTemPlate.js b/src/ssctpaaa/sscuser/sscuser/list/events/initTemPlate.js new file mode 100644 index 0000000..a826ff6 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/initTemPlate.js @@ -0,0 +1,268 @@ +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ +import getListButtonRender from './getListBtn'; +import { buttonClick } from './index'; +import { getMultiLang } from 'nc-lightapp-front'; +import Showtipss from './Showtipss'; +import { tableAndCardListScrollLoad } from 'ssccommon/utils/scrollLoad'; +import { tplHandle } from 'ssccommon/components/auditPointBar/handle'; +import requestApi from '../requestApi' + +import exceedImg from '../../../../public/image/exceed.png' +import preImg from '../../../../public/image/pre.png' +import timedRefresh from './timedRefresh' + +export default function (props) { + + const _this = this + + props.createUIDom( + { + }, + (data) => { + requestApi.checkGetBillStatus({ + success: (data) => { + _this.setState({ getBillStatus: data.data.state }); + } + }) + getMultiLang({ + moduleId: 7010, domainName: 'ssctp', currentLocale: 'zh-CN', callback: (json) => { + _this.searchAreaConfig = { + searchArea_pending: data.template.searchArea_pending.items, + searchArea_adjust: data.template.searchArea_adjust.items, + searchArea_handled: data.template.searchArea_handled.items, + searchArea_handon: data.template.searchArea_handon.items, + searchArea_sscreject: data.template.searchArea_reject.items + } + let buttonTpl = {} + buttonTpl = { + button: (data.button == null || data.button == undefined) ? [] : data.button + } + props.button.setButtons(buttonTpl.button) + + data.template[window.presetVar.listCode].pagination = false + + //拼装操作记录模板 使用NCTable组件 + let sscTaskHistoryTpl = [{ + title: json['701001RWCL-0201'], + dataIndex: 'index', + key: 'index', + width: '40px', + render(text, record, index) { + return index + 1 + } + }]; + data.template.ssctaskhistory.items.forEach((item) => { + if (item.visible) { + sscTaskHistoryTpl.push( + { + title:
    {item.label}
    , + dataIndex: item.attrcode, + key: item.attrcode, + width: item.width, + render: (text, record, index) => { + return
    {text ||  }
    + } + } + ); + } + }) + sscTaskHistoryTpl.push( + { + title:
    {json['7010-PROBLEM-04']}
    , + dataIndex: "opt", + key: "opt", + width: 100, + fixed: "right", + render: (text, record, index) => { + let optHistoryExpandRowKeys = this.state.optHistoryExpandRowKeys; + let key = record['pk_bill'] + '_' + index; + let hasKey = optHistoryExpandRowKeys[key]; + let isShowBtn = false; + switch (record.values['actiontype'].value) { + //case 'handon': + case 'sscapprove': + case 'sscreject': + isShowBtn = true; + } + return isShowBtn ? + ( +
    { + if (hasKey) { + delete optHistoryExpandRowKeys[key] + } else { + optHistoryExpandRowKeys[key] = true; + + } + this.setState({ + optHistoryExpandRowKeys + }); + } + } style={{ color: '#0073e1', cursor: 'pointer' }} + > + {hasKey ? json['7010-PROBLEM-02'] : json['7010-PROBLEM-03']} +
    + ) + : + null + } + } + ) + this.setState({ + sscTaskHistoryTpl + }) + + + tplHandle.call(this.auditPointBarInst, data.template) + + + // 列表操作列 + const listButtonRender = getListButtonRender.call(_this, props, true); + + const oprBtnsRender = listButtonRender.render + data.template[window.presetVar.list].items.push( + listButtonRender + ) + // 单据编码列 + data.template[window.presetVar.list].items.unshift({ + label: json['7010-0008'], + attrcode: 'billnoa', + visible: true, + width: '235px', + render: (text, record, index) => { + let billnoa = ( + + {record.billno.value} + + ) + + props.table.saveFilterCustomColData(window.presetVar.list, { + attrcode: 'billnoa', + rowId: props.table.getAllTableData(window.presetVar.list).rows[index].rowId, + value: record.billno.value + }) + + if (_this.queryKey.taskstatus === 'handled') return billnoa + + return ( + _this.setState({ tipsInfo: [...showtips] })} + /> + ) + } + }) + + // 定向提取 + if (!_this.state.oid) { + _this.setState({ + oid: data.template.search_Area.oid, + queryAreaCode: data.template.search_Area.code + }) + } + let searchAreaItems = data.template.search_Area.items + let idx = -1 + while (++idx < searchAreaItems.length) { + if (!searchAreaItems[idx].required) searchAreaItems[idx].visible = false + } + data.template['search_Area'] = { + moduletype: 'search', + items: searchAreaItems + } + + data.template[window.presetVar.list].items.map((item) => { + if (item.attrcode === 'billno' + || item.attrcode === 'pk_tradetype' + || item.attrcode === 'pk_currtype' + || item.attrcode === 'remark' + || item.attrcode === 'amount' + || item.attrcode === 'billdate' + || item.attrcode === 'billmaker') { + + item.isSort = true; + } else { + + item.isSort = false; + } + + if (item.attrcode === 'billno') item.visible = false + }) + + setTimeout(() => { + const prevMeta = props.meta.getMeta() + if (!prevMeta.code) { + props.meta.setMeta(data.template, () => { + //setPointTreeData.call(this.auditPointBarInst, tempData); + + tableAndCardListScrollLoad(() => { + if ( + Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number) + && this.canChangPageFlag + ) { + this.canChangPageFlag = false; + setTimeout(() => { this.queryData(true) }, 300); + } + }); + }) + } + // 操作列自定义 + props.table.setTableRender(window.presetVar.list, "opr", oprBtnsRender) + + //超时预警 + const listKeys = data.template[window.presetVar.list].items.map(item => item.attrcode) + if (listKeys.indexOf('exceedstatus') > -1) { + props.table.setTableRender(window.presetVar.list, "exceedstatus", (text, record, index) => { + const { exceedstatus } = record + let txt = '', src = '' + if (exceedstatus) { // exceed:超期 + if (exceedstatus.value === 'exceed') { + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = exceedImg + } else if (exceedstatus.value === 'pre') { // pre:即将超期 + txt = `${JSON.parse(exceedstatus.display).hour}${json['7010-0009']}${JSON.parse(exceedstatus.display).minute}${json['7010-0010']}` + src = preImg + } + } + + props.table.saveFilterCustomColData(window.presetVar.list, { + attrcode: 'exceedstatus', + rowId: props.table.getAllTableData(window.presetVar.list).rows[index].rowId, + value: txt + }) + + return src && txt + ? ([ + , + {txt} + ]) + : null + }) + } + + // 查询列表数据 + _this.queryData(); + if (!_this.queryInterval) { + // 两分钟一次定时执行 + _this.queryInterval = window.setInterval(() => { + timedRefresh.call(this); + }, 10000); + } + }, 200) + } + }) + } + ) + requestApi.checkImageInstalled({ + success: (data) => { + this.isImagInstalled = data.isImagInstalled; + this.alreadySettingOts = data.alreadySettingOts; + } + }) +} + +/*2kFYPys7dcTdBIA5Qvd/fKqvxXOTejMQigvPOvRReys=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/listButtonClick.js b/src/ssctpaaa/sscuser/sscuser/list/events/listButtonClick.js new file mode 100644 index 0000000..d1d2713 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/listButtonClick.js @@ -0,0 +1,78 @@ +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ +import requestApi from '../requestApi' +import {initTemplate} from './index' + +export default function listButtonClick(props, btnKey, text, record, index, that) { + switch(btnKey){ + case "AdjustApply": // 申请调整 + that.setState({showadjustmodel: true, adjustmodeldata: record}) + break + case "HangUp": // 挂起 + that.setState({showhandonmodel: true, handonmodeldata: record}) + break + case "CancelHangUp": // 取消挂起 + that.setState({ + showUnHandonModal: true, + unHandonModalData: record + }) + break + case "CancelAdjust": // 取消调整 + that.setState({ + showUnAdjustModal: true, + unAdjustModalData: record + }) + break + case "CancelHandled": // 取消审核 + requestApi.taskUnApproveAction({ + data: { + busiid: record.busiid.value, + billtypecode: record.billtypecode.value, + transtypecode: record.transtypecode.value, + pk_task: record.pk_task.value, + pk_group:record.pk_group.value, + actiontype: "un-sscapprove", + ts: record.ts.value, + mod: record.module.value + }, + success: (data) => { + if (data.success) { + initTemplate.call(that, props) + } + } + }) + break + case 'QueryOperation': + that.setState({showOperateNote: true}) + requestApi.taskQueryOperationAction({ + data: { + busiid: record.busiid.value + }, + success: (data) => { + if(data.success && data.data.ssctaskhistory) { + let newRows = data.data.ssctaskhistory.rows.map((row, index) => { + let values = row.values; + let newRow = {values}; + for (let attrcode in values) { + if (attrcode != 'opt') { + newRow[attrcode] = values[attrcode].display || values[attrcode].value + newRow.key = values['pk_bill'].value + '_' + index; + } + } + return newRow + }) + that.setState({ + sscTaskHistoryData: newRows, + showOperateNote: true + }) + } + } + }) + break + default: + break + } +} + + + +/*Yad/lD1IE5qm15+d1Lx2QhILg9kVPpuvH2qXGe3BBe8=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/onRowDoubleClick.js b/src/ssctpaaa/sscuser/sscuser/list/events/onRowDoubleClick.js new file mode 100644 index 0000000..c6745e8 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/onRowDoubleClick.js @@ -0,0 +1,6 @@ +/*xbBNZdDFBeHR0NxHIc8oEFCYUdZU5pfbtwgHQlLbfrY=*/ +import buttonClick from './buttonClick' +export default function (record,index,props) { + buttonClick.call(this,'approve', index) +}; +/*xbBNZdDFBeHR0NxHIc8oEFCYUdZU5pfbtwgHQlLbfrY=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/paginationClick.js b/src/ssctpaaa/sscuser/sscuser/list/events/paginationClick.js new file mode 100644 index 0000000..e3158c4 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/paginationClick.js @@ -0,0 +1,164 @@ +/*3jl14Tzepje6wznKjVSKoE3yDgadOV5bdAGwu8Dl5Uc=*/ +import requestApi from '../requestApi' +import { pageTo, toast } from 'nc-lightapp-front'; +import urlHandle from 'ssccommon/utils/urlHandle'; +import { setPointTreeData } from 'ssccommon/components/auditPointBar/handle'; +import { imagAndVoucherHandle } from '../components/imagAndVoucherHandle'; + + + +export default function paginationClick(position, that) { + + that.setState({ activeIndex: position }); + // 选择的数据pk + let selectPK = ''; + // 根据不同页签取得PK + if (that.queryKey.taskstatus == 'pending') { + // 待处理页签,从pendingPklist中取得pk + selectPK = that.pendingPklist[position - 1]; + }else{ + // 其他页签,从列表缓存中取得pk + selectPK = that.data.listRows[position - 1].values.pk_task.value; + } + + getCurrentRowData.call(that, selectPK, currentRowData => { + that.state.currentRowData = currentRowData; + requestApi.openBill({ + data: { + billtypeCode: that.state.currentRowData.billtypecode.value, + transtypeCode: that.state.currentRowData.transtypecode.value, + billid: that.state.currentRowData.busiid.value, + pk_group: that.state.currentRowData.pk_group.value + }, + success: (data) => { + let approveUrl = urlHandle(data, 'scene=zycl' + `&deal=${that.queryKey.taskstatus}`, null, 'approve-detail'); + let params = data.data.data; + + //出纳驳回原因 + let cashierRejectReason = that.state.currentRowData.cmprejectinfo ? that.state.currentRowData.cmprejectinfo.value : ''; + + that.setState({ + approveUrl, + reason: cashierRejectReason, + // didApprove: that.state.currentRowData.isApproved, + didApprove: that.state.currentRowData.taskstatus.value === 'sscapprove', + didAction: that.state.currentRowData.didAction, + sagaStatus: that.state.currentRowData.saga_status.value, + alarm: false, + hitMessage: '' + }, () => { + pageTo.addUrlParam({ + c: params.appcode, + p: params.pagecode, + n: params.appname, + custom: JSON.stringify({ + pk_group: that.state.currentRowData.pk_group.value + }) + }) + + let pk_task = that.state.currentRowData.pk_task.value; + let billid = that.state.currentRowData.busiid.value; + setPointTreeData.call(that.auditPointBarInst, { pk_task, billid }) + }) + + // 信用是否设置 + let isCreditInstall + requestApi.queryCredits({ + queryMethod: 'isCreditInstall', + success: (data) => { + isCreditInstall = data.data.isCreditInstall + that.setState({ isCreditInstall }) + if (isCreditInstall) { + // 信用等级 + requestApi.queryCredits({ + queryMethod: 'queryCreditLevel', + success: (data) => { + let levels = data.data + if (levels.length > 5) levels.length = 5 + that.setState({ levels }, () => { + // 查询信用信息详情 + requestApi.queryCredits({ + queryMethod: 'queryCreditInfo', + billMakerId: that.state.currentRowData.billmaker.value, + success: (data) => { + that.setState({ creditLevelInfo: data.data }) + } + }) + }) + } + }) + } + } + }) + + //是否有预警消息 + requestApi.queryBudgetMessage({ + data: { + busiid: that.state.currentRowData.busiid.value, + billtype: that.state.currentRowData.transtypecode.value, + pk_group: that.state.currentRowData.pk_group.value + }, + success: (data) => { + if (data.data && data.data['alarm']) { + that.setState({ + alarm: data.data['alarm'], + hitMessage: data.data['message'] + }) + } + } + }) + + //手动驳回原因 出纳驳回与手动驳回用同一个变量, 两个原因不会同时存在 + requestApi.manualReasonQry({ + pk: that.data.listRows[position - 1].values.pk_currenttask.value, + success: (response) => { + response.data && that.setState({ manualReason: response.data}) + } + }) + + //打开影像和展示联查凭证按钮处理逻辑 + imagAndVoucherHandle.call(that); + } + }) + }); +} + +/** + * 取得当前行数据 + * @param {*} pk + */ +function getCurrentRowData(pk, callbackFunction) { + // 查找列表中是否有当前行数据 + let currentRowData = this.data.listRows.find(element => { + if (element.values.pk_task.value == pk) { + return element; + } + }); + // 没有找到 + if (!currentRowData) { + // 后端查找数据 + requestApi.query({ + data: { + taskstatus: 'pending', + pk_task: pk, + pageinfo: { + number: 1, + size: 1 + } + }, + loading: false, + success: (data) => { + if (data && data.tasklist && data.tasklist.rows && data.tasklist.rows.length > 0 && data.tasklist.rows[0].values.pk_task.value) { + currentRowData = data.tasklist.rows[0]; + this.data.listRows.push(currentRowData); + callbackFunction.call(this, currentRowData.values); + } else { + toast({ color: 'danger', content: '数据已经变更,请刷新列表重试。' }); + } + } + }); + } else { + callbackFunction.call(this, currentRowData.values); + } +} +/*3jl14Tzepje6wznKjVSKoE3yDgadOV5bdAGwu8Dl5Uc=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/reloadBillPage.js b/src/ssctpaaa/sscuser/sscuser/list/events/reloadBillPage.js new file mode 100644 index 0000000..63f0d92 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/reloadBillPage.js @@ -0,0 +1,53 @@ +/*gxR5J8Nf55REdl6jjtmqQ2FoIFCVo5rsru24fGzhZ7c=*/ +import { pageTo } from 'nc-lightapp-front' + +import requestApi from '../requestApi' +import urlHandle from 'ssccommon/utils/urlHandle'; + +export default function reloadBillPage(deal) { + + // if(this.alreadySettingOts) { + // return; + // } + //非同域下不刷新 + let url = document.getElementById("approve-detail").getAttribute("src"); + if(url && url.indexOf("/nccloud/resources") === -1) { + return; + } + + //尝试直接调用iframe的刷新按钮来刷新单据数据 + let refrushBtn = document.getElementById("approve-detail").contentWindow.document.getElementsByClassName("icon-shuaxin1"); + if(refrushBtn && refrushBtn.length > 0) { + for(let i = 0; i < refrushBtn.length; i++) { + refrushBtn[i].click(); + } + return; + } + + + requestApi.openBill({ + data: { + billtypeCode: this.state.currentRowData.billtypecode.value, + transtypeCode: this.state.currentRowData.transtypecode.value, + billid: this.state.currentRowData.busiid.value, + pk_group: this.state.currentRowData.pk_group.value + }, + success: (data) => { + + let approveUrl = urlHandle(data, 'scene=zycl&deal=' + deal) + + let params = data.data.data; + this.setState({ approveUrl }, () => { + pageTo.addUrlParam({ + c: params.appcode, + p: params.pagecode, + n: params.appname + }) + //强制刷新iframe,只修改iframe的值并没有刷新iframe + document.getElementById("approve-detail").contentWindow.location.reload(true); + }) + } + }) + +} +/*gxR5J8Nf55REdl6jjtmqQ2FoIFCVo5rsru24fGzhZ7c=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/events/timedRefresh.js b/src/ssctpaaa/sscuser/sscuser/list/events/timedRefresh.js new file mode 100644 index 0000000..f3fffb7 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/events/timedRefresh.js @@ -0,0 +1,109 @@ +/*a2eEGcFaeWYjQJZnukZLlgnLTkIoxWKM3QoS4o6XAbo=*/ +import requestApi from '../requestApi'; +import { toast } from 'nc-lightapp-front'; + +export default function () { + checkNewData.call(this, () => { + if (this.queryKey.taskstatus == 'pending') { + // 待处理页签时====================================================(1)=============================================================== + // 判断页面形态 + if (this.state.showModal) { + // 卡片形态时---------------------(1-1)-------------------------- + // 只更新pklist,查询时间戳 + requestApi.query({ + data: { + ...this.queryKey, + pageinfo: { + number: 1, + size: 1 + } + }, + loading: false, + success: (data) => { + // 更新查询时间戳 + this.lastQueryTime = data.lastQueryTime; + // 更新pkList + data.taskPkList.forEach(element => { + if (this.pendingPklist.indexOf(element) < 0) { + this.pendingPklist.push(element); + } + }); + // 更新翻页器 + this.setState({ paginationItems: this.pendingPklist.length }); + } + }); + } else { + // 列表形态时---------------------(1-2)-------------------------- + // 重新查询并更新列表信息 + this.queryData(null, null, true); + } + } else { + // 非待处理页签时=========================================================(2)========================================================== + // 查询待处理数量以及时间戳 + requestApi.query({ + data: { + ...this.queryKey, + pageinfo: { + number: 1, + size: 1 + } + }, + loading: false, + success: (data) => { + // 更新查询时间戳 + this.lastQueryTime = data.lastQueryTime; + // 判断页面形态 + if (this.state.showModal) { + // 卡片形态时-----------------------(2-1)------------------------ + // 不做处理 + } else { + // 列表形态时-----------------------(2-2)------------------------ + // 仅更新待处理数量 + let newState = {} + newState = this.state; + // 更新待处理数字 + newState.showNumbers.pending = data.pending; + // // 更新已驳回数字(暂时只刷新待处理 数字、列表) + // newState.showNumbers.sscreject = data.sscreject; + this.setState(newState); + } + } + }); + } + }) +} +/** + * 判断是否有新分配的数据 + * @param {*} callbackFunction + */ +function checkNewData(callbackFunction) { + requestApi.checkNewData({ + data: { lastQueryTime: this.lastQueryTime }, + success: (data) => { + if (data.addNotice) { + // 存在新数据 + // 提示有新的单据分配 + showPrompt.call(this); + // 回调方法 + callbackFunction && callbackFunction.call(this); + } + } + }); +} +/** + * 提示有新的单据分配 + */ +function showPrompt() { + // 提示消息 + let multiLang = this.props.MutiInit.getIntl(7010); + multiLang && multiLang.get('701001RWCL-0207') && toast({ color: "success", content: multiLang.get('701001RWCL-0207') }); // 有新的单据分配。 + // 播放声音 + window.setTimeout(()=>{ + try { + this.audio.play(); + } catch (e) { + console.log('不支持提示音。'); + } + }, 100); +} +/*a2eEGcFaeWYjQJZnukZLlgnLTkIoxWKM3QoS4o6XAbo=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/index.js b/src/ssctpaaa/sscuser/sscuser/list/index.js new file mode 100644 index 0000000..37301a9 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/index.js @@ -0,0 +1,6 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, {Component} from 'react' +import ReactDOM from 'react-dom' +import SscUserList from './sscUserList' +ReactDOM.render(, document.querySelector('#app')) +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/index.less b/src/ssctpaaa/sscuser/sscuser/list/index.less new file mode 100644 index 0000000..f38ed4f --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/index.less @@ -0,0 +1,792 @@ +.single-line-and-ellipsis[field="opr1"]{overflow:initial!important} +#sscUserList{ + //background: #fff; + border-radius: 3px; + .container { + height: 100%; + display: flex; + flex-direction: column; + } + #WorkbenchDetail { + position: absolute; + width: 100%; + top: 0; + bottom: -10px; + overflow: auto; + } + .title { + float: left; + line-height: 60px; + font-size: 18px; + margin-right:20px; + } + .header { + line-height: 60px; + } + + .content { + clear: both; + background: #fff; + } + + .change-page{ + background-color: white; + text-align: center; + } + + .body-btn-area{ + cursor: pointer; + color: #007ACE; + } + .data-area-show{ + display: block; + position: relative; + flex: 1; + } + .data-area-hide{ + display: none; + } + .billnoa{ + cursor: pointer; + float: left; + margin-right: 5px; + } + .scroll-add-more { + text-align: center; + font-size: 13px; + color: #555; + line-height: 30px; + user-select: none; + background: #fff; + } + #SysComponentsWorkbenchTab{ + .u-tabs-nav-container{ + padding-left: 0!important; + } + } + .u-pagination-list{ + margin: 0!important; + } + .get-bill-checkbox{ + button { + min-width: 96px; + margin-top: -2px; + padding: 0; + height: 30px; + span.active { + width: 100%; + height: 30px; + position: relative; + display: inline-block; + i { + position: absolute; + left: 10px; + top: 6px; + } + span { + display: inline-block; + line-height: 28px; + // text-indent: 20px; + margin-left: 36px; + margin-right: 10px; + } + } + } + .get-bill--default { + i { + color: rgb(0, 148, 67) !important; + } + &:hover { + border-color:#d0d0d0 !important; + color: #111 !important; + i { + color: rgb(0, 148, 67) !important; + } + } + } + .get-bill--black { + i { + color: rgb(0, 148, 67) !important; + } + &:hover { + i { + color: rgb(0, 148, 67) !important; + } + } + } + } + .u-table-fixed-right { + .opr { + .single-line-and-ellipsis { + text-overflow: initial; + } + } + } + .error-flag { + max-width: 28px !important; + } +} + +.approvel-details { + height: 100%; + .approve-header { + background-color: #fff; + padding: 0 20px; + border-radius: 3px; + position: absolute; + top: 0; + width: 100%; + .back{ + float: left; + margin-top: 12px; + } + .back-btn { + float: left; + } + + .approve-title { + color: #111; + //font-weight: normal !important; + //padding-left: 10px; + line-height: 46px; + font-size: 16px; + float: left; + font-weight: bold; + } + + .approve-controls { + height: 46px; + //margin-right: 20px; + display: flex; + align-items: center; + float: right; + .u-form-control-wrapper { + width: 280px !important; + margin-left: 8px; + } + .error-flag { + font-size: 18px; + color: #fc5855; + cursor: pointer; + } + } + + .uf-jewel-wrap { + height: 60px; + float: left; + position: relative; + + .uf-jewel { + margin-left: 10px; + cursor: pointer; + margin-top: 15px; + width: 26px; + } + } + } + + .approve-body { + + height: 100%; + border-top: 50px solid transparent; + box-sizing: border-box; + iframe { + height: 100%; + // padding: 0 90px; + width: 100%; + // min-height: 620px; + } + } + + .reason-control { + width: 280px; + border-radius: 4px; + } + + .cashier-reject--wrap { + position: relative; + float: left; + width: 248px; + height: 22px; + margin-left: 10px; + } + + .cashier-reject--dialog { + width: 248px; + height: 22px; + border: 1px solid #ffcdaf; + border-radius: 4px; + margin-top: 20px; + color: #fc5f00; + font-size: 12px; + position: relative; + overflow: hidden; + cursor: pointer; + + #inner-text { + line-height: 22px; + position: absolute; + left: 0; + top: 0; + padding: 0 10px; + user-select: none; + width: 100%; + + span { + display: inline-block; + width: 100%; + } + } + + span { + display: inline-block; + } + } + + #floating-text { + position: absolute; + left: 134px; + top: 48px; + border: 1px solid #ffcdaf; + border-radius: 4px; + width: 275px; + height: auto; + padding: 6px 10px; + background-color: #fff; + line-height: 22px; + color: #fc5f00; + font-size: 12px; + user-select: none; + transition: .2s; + transform: scale(0); + z-index: 1; + word-break: break-all; + } +} + +.billno-reject { + height: 16px; + font-size: 12px; + color: #E14C46; + line-height: 11px; + border-radius: 2px; + margin-left: 3px; + padding: 3px; + display: inline-block; +} +.operate-note, +.approvel-details { + .u-modal-body { + padding-left: 0!important; + padding-right: 0!important; + padding-top: 0 !important; + } + .operate-note-body-div{ + padding-top: 10px; + } +} +.billno-img { + width: 18px; + height: 18px; + float: left; + cursor: pointer; +} +.cashier-reject-tip { + font-size: 12px; + border-radius: 2px; + margin-left: 3px; + padding: 0 3px; + background: #FFEBEE; + border: 1px solid #F44336; + color: #F44336 +} + +.tips-fixed--wrapper { + color: #555; + background: rgba(255,255,255,1); + border-radius: 2px; + position: fixed; + color: #555; + width:100px; + box-shadow:0px 2px 4px 0px rgba(146,146,146,0.5); + line-height: 20px; + left: 0; + top: 0; + transform: scale(0); + transition: .3s; + + div { + height: 20px; + display: flex; + align-items: center; + } + + img { + width: 14px; + height: 14px; + margin-right: 6px; + margin-left: 14px; + } +} +.reason-amount { + width: 68px; + height: 21px; + font-size: 13px; + line-height: 21px; + padding-left: 8px !important; + border: none !important; + color: #999; + font-weight: normal; +} + +.approve-pagination { + height: 32px; + margin: 0; + margin-left: 10px; + + li { + display: none; + height: 32px; + a { + height: 30px; + padding-top: 0; + padding-bottom: 0; + span { + display: block; + line-height: 28px; + font-size: 16px; + } + } + } + + li:nth-child(1), + li:nth-child(2), + li:nth-last-child(1), + li:nth-last-child(2) { + display: block; + } +} + +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.task-take-modal .u-modal-dialog { + width: 850px; +} + +.NC_searchAdvModalBackground { + opacity: 1; + background: rgba(0, 0, 0, .5); + + .NC_searchAdvModal { + height: 570px!important; + + .modalBody { + height: 427px; + } + } +} + +.searchAdvCom_remove { + position: absolute; + right: 15px; +} + + + +.reject-content { + div:nth-child(1) { + margin-bottom: 5px; + + div.u-form-control-wrapper { + width: 300px!important; + margin-left: 10px; + margin-right: 10px; + } + } +} + +.footer-radio-group { + float: left; +} + +.credits-show { + margin-bottom: 3px; +} + +.credits-box { + //border: 1px solid #d0d0d0; + border-radius: 3px; + height: auto; +} + +.nc-modal.u-modal .u-modal-dialog .u-modal-content { + overflow: inherit; + height: auto; +} + +.uf-jewel-float { + position: relative; + top: 10px; + left: 0; + z-index:1; + min-width: 180px; + height: 80px; + background: #fff; + border-radius: 4px; + // border: 1px solid #d0d0d0; + display: none; + + .uf-t { + width: 15px; + height: 15px; + border: 1px solid #d0d0d0; + position: absolute; + left: 18px; + bottom: 71px; + // box-shadow: 0px 3px 12px 0px rgba(74,81,93,0.25); + transform: rotate(45deg); + background: #fff; + z-index: 999; + border-right-color: transparent; + border-bottom-color: transparent; + } + + .content { + // width: 100%; + height: 100%; + background: #fff; + position: absolute; + border-radius: 4px; + display: flex; + border: 1px solid #d0d0d0; + padding-right: 5px; + + .content-left { + width: 54px; + height: 100%; + float: left; + + img { + margin-left: 5px; + width: 48px; + margin-top: 14px; + } + } + + .content-right { + // width: 70%; + height: 100%; + float: left; + flex: 1; + + div { + height: 40px; + line-height: 36px; + padding-left: 14px; + font-size: 17px; + } + + .user-name { + padding-top: 4px; + height: 25px; + } + + .credit-level { + padding-bottom: 4px; + white-space: nowrap; + } + } + } +} + +.item-credit-view { + float: left; + margin: 5px; + background-color: #d0d0d0; + border-radius: 4px; + text-align: center; + font-size: 12px; + position: relative; + color: #F87321; + background: #E8E8E8; + padding: 4px 10px 4px 5px; + + i { + display: none; + position: absolute; + background: red; + color: #fff; + font-weight: bold; + width: 15px; + height: 15px; + border-radius: 50%; + right: -7px; + top: 7px; + line-height: 13px; + font-size: 22px; + cursor: pointer; + } + + &:hover i { + display: block; + } +} + +.credit-content--top { + margin-bottom: 15px; + + .refer-click-container { + cursor: pointer; + color: #007ACE; + } +} + +.reject-title--content { + display: flex; + align-items: center; + + div:nth-child(3) { + .refer-click-container { + cursor: pointer; + color: #007ACE; + } + } + + div.u-form-control-wrapper { + margin-top: 8px; + } +} + +.content-show { + div:nth-child(2) { + display: inline-block; + } +} +.content-hide { + div:nth-child(2) { + display: none; + } +} + +.contentdiv-show { + display: block; +} +.contentdiv-hide { + display: none; +} + +.operate-note { + .viewer-close { + position: absolute; + font-size: 16px; + font-weight: bold; + padding-left: 19px; + text-align: left; + top: 18px; + right: 15px; + cursor: pointer; + color: #000; + } +} + +#rejectdialog { + .u-modal-body { + padding-top: 0; + } + + .reject-title--content > span { + width: 80px; + } +} + +#handon-dialog { + .u-modal-dialog { + height: 300px; + // overflow: auto; + .u-modal-body .textarea-wrap { + border-radius: 3px; + height: auto; + } + } +} + +#credit-dialog { + .u-modal-dialog { + overflow: auto; + } +} + +.rule-title { + padding: 8px; + color: #111; + font-size: 14px; + font-weight: normal; +} +.rule-search-input { + border: 1px solid #D0D0D0; + margin-left: 24px; + width: 200px; + height: 30px; + border-radius: 4px; + font-size: 13px; + padding: 5px; + padding-right: 25px; +} + +.icon-sousuo-c:after { + content: "\E611"; + position: relative; + right: 23px; + font-size: 20px; + top: 3px; + color: #555; +} +.rule-content-wrap { + background:rgba(255,251,244,1); + border: 1px dashed #FBDB94; + padding: 10px 23px; + height: 200px; + overflow: auto; + .first-level { + position: relative; + color: #111; + font-size: 13px; + .icon { + position: absolute; + top: 2px; + left: -16px; + font-size: 12px; + color: #898888; + } + } + .second-level { + color: #555555; + font-size: 12px; + cursor: pointer; + } + .rule-item-selected { + color: #F87321; + } +} + +.credits-box { + textarea { + resize: none !important; + } +} + +.icon-yujing{ + color: #d7332c; + display: inline-block; + height: 30px; + width: 30px; + vertical-align: middle; + margin-left: 5px; + border-radius: 4px; + background: #e0e0e0; + line-height: 30px; + text-align: center; +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#SysComponentsWorkbenchTab { + .tab-btns { + .search-area-contant { + margin-left: 0px !important; + } + } +} + +.work-bench-search-area { + margin-bottom: 4px; +} + +.u-pagination-list { + li > a { + padding-top: 0 !important; + padding-bottom: 0 !important; + } +} + +.opt_history_ul { + margin-top: 8px; + .opt_history_li { + margin-bottom: 8px; + .opt_history_name_wrap { + color: #111111; + font-weight: 500; + font-size: 14px; + } + .opt_history_level { + padding: 0 4px; + height:15px; + border-radius:9px; + font-weight:400; + line-height:17px; + font-size: 12px; + display: inline-block; + text-align: center; + margin-left: 12px; + } + //一般 + .pro-GENERAL { + color:rgba(255,165,9,1); + background:rgba(255,238,211,1); + } + //非常严重 + .pro-MORESERIOUS { + color:rgba(225,76,70,1); + background:rgba(255,228,228,1); + + } + //很轻微 + .pro-MORESLIGHT { + color:rgba(54,193,61,1); + background:rgba(210,244,212,1); + + } + //严重 + .pro-SERIOUS { + color:rgba(250,100,19,1); + background:rgba(255,234,220,1); + + } + //轻微 + .pro-SLIGHT { + color:rgba(0,145,255,1); + background:rgba(212,236,255,1); + + } + .opt_history_memo { + margin-top: 4px; + font-size: 14px; + font-weight: 400; + white-space: pre-wrap; + } + + } +} + + +.ellipsis { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.operate-note .u-table-expanded-row-expand-icon,.operate-note .u-table-row-expand-icon { + display: none !important; +} \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/requestApi.js b/src/ssctpaaa/sscuser/sscuser/list/requestApi.js new file mode 100644 index 0000000..e073814 --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/requestApi.js @@ -0,0 +1,280 @@ +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ +import { ajax } from 'nc-lightapp-front' + +let requestApiOverwrite = { + // 查询条件 模板查询 + querySSCTemplateAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskTempletAction.do', + data: opt.data, + success: (data) => { + opt.success(data.data.searchArea) + } + }) + }, + // 作业任务查询 + query: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleQueryAction.do', + data: opt.data, + loading: opt.loading, + success: (data) => { + opt.success(data.data) + } + }) + }, + // 作业任务申请调整 作业任务挂起 + taskAdjustAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleAdjustAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务挂起 + taskHandOnAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleHandonAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任取消调整 + taskUnAdjustAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleUnAdjustAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务取消挂起 + taskUnHandOnAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleUnHandonAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务提取 + taskTakeAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleTakeAction.do', + data: opt.data || {}, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务驳回 + taskRejectAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleRejectAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 驳回活动 + getRejectActivityAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskGetRejectActivityAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务审核 + taskApproveAction: (opt) => { + ajax({ + url: '/nccloud/' + opt.data.mod + '/ssctp/sscbd/SSCTaskHandleApproveAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 作业任务联查操作记录 + taskQueryOperationAction: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleQueryOperationAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 获取iframe url + openBill: (opt) => { + ajax({ + url: '/nccloud/sscrp/rpbill/BrowseBillAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }); + }, + // 作业任务取消审核 + taskUnApproveAction: (opt) => { + ajax({ + url: '/nccloud/' + opt.data.mod + '/ssctp/sscbd/SSCTaskHandleUnApproveAction.do', + data: opt.data, + success: (data) => { + opt.success(data) + } + }) + }, + // 模糊查询 + queryFuzzyKey: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskBlurQueryAction.do', + data: opt.data, + success: data => { + opt.success(data) + } + }) + }, + // 查询云端信用指标 + queryCredits: (opt) => { + /*** + * @param queryMethod {String} 查询方法 + * 1、queryStandard(查询启用的信用标准) + * 2、queryCreditRuleClass(查询信用指标分类) + * 3、queryCreditRule(查询信用指标) + * 4、queryCreditInfo(查询信用值信息) + * 5、queryCreditLevel(查询信用等级) + * 6、isCreditInstall(是否设置信用) + * **/ + ajax({ + url: '/nccloud/ssctp/credit/creditAction.do', + data: { method: opt.queryMethod, billMakerId: opt.billMakerId || '' }, + success: data => { + opt.success(data) + } + }) + }, + // + queryCreditRule: (opt) => { + ajax({ + url: '/nccloud/ssctp/credit/creditRuleAction.do', + data: { + "pid": "", + "keyword": "", + "queryCondition": { + "isShowUnit": false + }, + "pageInfo": { + "pageSize": 50, + "pageIndex": -1 + } + }, + success: data => { + opt.success(data) + } + }) + }, + + //查询预算预警信息 + queryBudgetMessage: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskBudgetMessagAction.do', + data: opt.data, + success: data => { + opt.success(data) + } + }) + }, + + manualReasonQry: ({ pk, success }) => { + ajax({ + url: '/nccloud/ssctp/sscapv/TransToManualReasonQryAction.do', + data: { pk }, + success + }) + }, + + checkGetBillStatus: ({ success }) => { + ajax({ + url: '/nccloud/ssctp/intellidispatch/QueryNowMyStateAction.do', + data: {}, + success + }) + }, + + setStart: ({ success, error }) => { + ajax({ + url: '/nccloud/ssctp/intellidispatch/SetStartStateAction.do', + data: {}, + success, + error + }) + }, + + setEnd: ({ success, error }) => { + ajax({ + url: '/nccloud/ssctp/intellidispatch/SetEndStateAction.do', + data: {}, + success, + error + }) + }, + // 判断是否有新的任务分配 + checkNewData: (opt) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleAddNoticeAction.do', + data: opt.data, + loading: false, + success: (data) => { + opt.success(data.data) + } + }) + }, + updateTs: ({ pk_task, success }) => { + ajax({ + url: '/nccloud/ssctp/sscbd/SSCUpdateTaskAction.do', + data: { pk_task }, + success + }) + }, + // 判断影响是否安装 + checkImageInstalled: (opt) => { + ajax({ + url: '/nccloud/ssctp/dapsystem/DapSystemInstalled4ImageAction.do', + data: opt.data, + loading: false, + success: (data) => { + opt.success(data.data) + } + }) + }, + //外系统凭证和影像接口 + imagAndVoucherOps: (opt) => { + ajax({ + url: '/nccloud/ssctp/dapsystem/TryReqImageAndVoucherShowTypeAction.do', + data: opt.data, + loading: false, + success: (data) => { + opt.success(data.data) + } + }) + }, + // 取得子页面控制列表刷新注册信息 + apiRefreshList: ({success}) => { + ajax({ + url: '/nccloud/sscrp/rpbill/RPRefreshActionQueryAction.do', + success + }) + } +} + +export default requestApiOverwrite +/*Mq+ry/aXt/6nN0mNqW5qEIFeSGycgB9gi2ynbY6bvYw=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/sscuser/list/sscUserList.js b/src/ssctpaaa/sscuser/sscuser/list/sscUserList.js new file mode 100644 index 0000000..c714c1c --- /dev/null +++ b/src/ssctpaaa/sscuser/sscuser/list/sscUserList.js @@ -0,0 +1,1579 @@ +/*b8DESLMYZe2kOZjnZDqmEhRfChTTStWDAoDSflO4zHk=*/ +import React, { Component } from 'react' +import { createPage, promptBox, base, pageTo, toast, broadcast, viewModel } from 'nc-lightapp-front' +const { NCModal, NCButton, NCFormControl, NCPagination, NCIcon, NCBackBtn, NCAffix, NCTooltip, NCDiv, NCCheckbox, NCTable } = base +const { getGlobalStorage } = viewModel +import { buttonClick, initTemplate, cardButtonClick, paginationClick, onRowDoubleClick, reloadBillPage } from './events' +import requestApi from './requestApi' +import './index.less' + +import WorkbenchTab from 'ssccommon/components/workbench-tab' +import WorkbenchSearcharea from 'ssccommon/components/workbench-searcharea' +import WorkbenchDetail from 'ssccommon/components/workbench-detail' + +import RejectDialog from './components/rejectDialog' +import HandonDialog from './components/handonDialog' +import AdjustDialog from './components/AdjustDialog' +import CreditApprovalDialog from './components/creditApproval' +import UnHandonDialog from './components/unHandonDialog' +import UnAdjustDialog from './components/unAdjustDialog' +import { setPointTreeData } from 'ssccommon/components/auditPointBar/handle'; + +import GetTask from './components/getTask' + +import AuditPointBar from 'ssccommon/components/auditPointBar/AuditPointBar'; + +import level1_1 from '../../../public/image/level1_1.png' +import level1_2 from '../../../public/image/level1_2.png' +import level2_1 from '../../../public/image/level2_1.png' +import level2_2 from '../../../public/image/level2_2.png' +import level3_1 from '../../../public/image/level3_1.png' +import level3_2 from '../../../public/image/level3_2.png' +import level4_1 from '../../../public/image/level4_1.png' +import level4_2 from '../../../public/image/level4_2.png' +import level5_1 from '../../../public/image/level5_1.png' +import level5_2 from '../../../public/image/level5_2.png' + +const levelImgs = [ + { img1: level1_1, img2: level1_2 }, + { img1: level2_1, img2: level2_2 }, + { img1: level3_1, img2: level3_2 }, + { img1: level4_1, img2: level4_2 }, + { img1: level5_1, img2: level5_2 } +] + +window.presetVar = { + ...window.presetVar, + list: 'ssctaskhandle', + card: 'sscusercard', + listCode: 'ssctaskhandle', + pageSize: 30 +} + +import CashierRejectDialog from './components/CashierRejectDialog.js' + +import { + nccGetTheme, +} from 'ssccommon/utils/asyncFunctions.js'; + +class SscUserList extends Component { + constructor(props) { + super(props) + + this.state = { + showType: 'list', //列表页:列表显示、缩略图显示 + showNumbers: {}, //存放pending 、handled、handon、sscreject 等状态的单据数 + searcharea: { //查询条件,传给WorkbenchSearcharea组件 + conditions: [] + }, + pageControll: 'none', //滚动翻页标记,标识是否翻到页尾 + fuzzyquerychild: [], //模糊查询变量,传入WorkbenchSearcharea组件 + showModal: false, //是否显示单据详情页 + showdialogmodel: false, //是否显示驳回dialog + showradio: false, //驳回dialog中是否显示 冲走流程 不重走流程 单选组件。 + ncoptions: '', //驳回dialog中, 驳回至下拉组建的选项 + defaultOption: '', //驳回dialog,驳回至下拉组件默认选项 + showOperateNote: false, //是否显示操作记录dialog + currentRowData: null, //打开列表某张单据时,记录当前行数据 + approveUrl: '', //单据详情页的url, iframe src的值 + reason: '', //审批或驳回原因 + activeIndex: 1, //tab活动标签索引 + didApprove: false, //审批逻辑完成时的标记变量 + defaultKey: 'pending', //列表页默认的tab状态 + currentKey: 'pending', //列表页当前的tab状态 + showhandonmodel: false, //是否显示挂起dialog + handonmodeldata: null, //挂起组件HandonDialog用到的属性 + showadjustmodel: false,//是否显示调整dialog + adjustmodeldata: null, //调整组件用到的属性 + showcreditmodel: false, //是否显示信用批准dialog + creditmodeldata: null, //信用批准dialog用到的数据 + creditsArray: [], //信用指标 + levels: [], //信用级别 + creditLevelInfo: {}, //信用级别信息 + isCreditInstall: true, // + showUnHandonModal: false, //显示取消挂起dialog + unHandonModalData: null, //取消挂起dialog变量 + showUnAdjustModal: false, //显示取消调整dialog + unAdjustModalData: null, //取消调整dialog变量 + creditView: false, //显示信用指标 + didAction: false, //操作完成时的状态标记 + sagaStatus: "0", //sgaa参数 + oid: '', //任务提取用到的变量 + queryAreaCode: '', //任务提取参数 + jkCheck: false, //审批接口参数 + ntbCheck: false, //审批接口参数 + skipcodes: '', //审批接口参数 + alarm: false, //预警标记 + hitMessage: '', //预警信息 + creditRuleItems: {}, //信用查询规则 + tipsInfo: [], + getBillStatus: false, //接单状态:开始接单 停止接单 + sscTaskHistoryTpl: [], //操作记录NCTable模板 + sscTaskHistoryData: [], //操作记录NCTable数据 + optHistoryExpandRowKeys: {}, //操作记录中已经展开的行的key + paginationItems: 0, // 翻页器总页数 + showCashierReject: false, + orderInfo: true, // 接单按钮提示语 + theme: '', // 当前主题 + } + // 查询条件 + this.queryKey = { + taskstatus: 'pending', + fuzzyQueryKey: [], + pageinfo: { + number: 1, + size: window.presetVar.pageSize, + totalElements: 0, + totalPages: 0 + }, + iscmpreject: 'N' //是否查询出纳驳回 + } + this.searchAreaConfig = {} + this.data = { + listRows: [], + oid: '', + queryAreaCode: '' + } + this.canChangPageFlag = true + this.fuzzyKey = "" + // initTemplate.call(this, props) + + // 当前查询时间戳,用于提示用户是否有新的单据指派功能 + this.lastQueryTime = ''; + + // 待处理pklist + this.pendingPklist = []; + } + componentWillMount() { + // debugger + const key = this.props.getUrlParam("process") ? this.props.getUrlParam("process").toLowerCase() : 'pending' + const that = this + this.setState({ + defaultKey: key, + currentKey: key, + showCashierReject: key == 'pending' ? true : false + }, () => { + this.queryKey.taskstatus = key + initTemplate.call(that, that.props) + }) + } + componentDidMount() { + let iframeObj = document.getElementById('approve-detail'); + iframeObj.onload = () => { + if (iframeObj.contentWindow) { + iframeObj.contentWindow.document.body.style.padding = 0; + iframeObj.contentWindow.app.style.minWidth = 'auto'; + } + } + this.getTheme() + + setTimeout(() => { //降低请求优先级 + requestApi.apiRefreshList({ //请求需要刷新的接口列表 + success: (data) => { + let urlArr = data.data.actionnames; + broadcast.on('TabBroadcast', (obj, key) => { //监听ajax事件 + if (this.state.showModal) { //只在审批详情页面时触发 + if (urlArr.indexOf(obj.ajaxUrl.slice(9, -3).split('/').join('.')) > -1) { + let currentRowData = this.state.currentRowData; + //调用审核侧边栏刷新 + setPointTreeData.call(this.auditPointBarInst, this.auditPointBarInst.baseReqParam, true, null, true) + //更新ts 否则接口提示:数据已修改,请刷新页面后重试! + requestApi.query({ + data: { + pk_task: currentRowData.pk_task.value, + pk_sscnode: currentRowData.pk_sscnode.value, + taskstatus: currentRowData.taskstatus.value, + pageinfo: this.queryKey.pageinfo + }, + success: (data) => { + currentRowData.ts.value = data.tasklist.rows[0].values.ts.value; + this.setState({ + currentRowData + }) + } + }) + } + } + + }) + } + }) + }) + } + // 获取主题 + getTheme = async () => { + const theme = await nccGetTheme() + this.setState({ theme }) + } + // 查询数据(参数:是否是翻页动作) + /** + * + * @param {*} isAddPage 是否翻页 + * @param {*} afterSortCb 排序查询回调 + * @param {*} isTimeRefresh 是否是自动刷新 + * @param {*} callback 查询成功后调用的回调函数 扫描单据需求会用到 + * @param {*} barcode 扫描单据码 + */ + queryData = (isAddPage, afterSortCb, isTimeRefresh, callback, barcode) => { + // 翻页标志 + let addPageFlag = isAddPage; + if (addPageFlag) { + if (this.queryKey.taskstatus == 'pending') { + // 待处理页签时,由于自动审批功能会在不固定位置插入数据,所以翻页动作使用全部查询模式。 + this.queryKey.pageinfo.number = 1; + this.queryKey.pageinfo.size = this.queryKey.pageinfo.size + window.presetVar.pageSize; + addPageFlag = false; + } else { + // 待处理以外页签使用默认后端翻页模式 + this.queryKey.pageinfo.number++ + this.queryKey.pageinfo.size = window.presetVar.pageSize; + } + } else { + // 非翻页模式时重置页信息 + if (!isTimeRefresh) { + // 非自动刷新场合 + this.queryKey.pageinfo.number = 1; + this.queryKey.pageinfo.size = window.presetVar.pageSize; + } + } + + let queryCondtion; + if (this.queryKey.taskstatus !== 'pending') { + queryCondtion = JSON.parse(JSON.stringify(this.queryKey)); + delete queryCondtion['alarm']; + } else { + queryCondtion = this.queryKey; + } + + if (barcode) { + queryCondtion.barcode = barcode; + } + requestApi.query({ + data: queryCondtion, + success: (data) => { + callback && callback(data); + //设置查询区域数据 + this.queryDataCallback(data, addPageFlag); + //排序查询后,回调函数 + afterSortCb && afterSortCb(); + //重新计算表格高度 + this.props.table.updateTableHeight(); + } + }) + if (this.queryKey.taskstatus === 'pending') { // 待处理隐藏 超期日期 预警日期 列 + this.props.table.showColByKey(window.presetVar.list, 'endtime') + this.props.table.showColByKey(window.presetVar.list, 'warningtime') + } else { // 其他标签页显示 + this.props.table.hideColByKey(window.presetVar.list, 'endtime') + this.props.table.hideColByKey(window.presetVar.list, 'warningtime') + } + } + queryDataCallback = (data, isAddPage = false) => { + + // 更新查询时间戳 + this.lastQueryTime = data.lastQueryTime; + // 更新待处理pklist + this.pendingPklist = data.taskPkList; + + let listRows = [] + let detailData = {}; + if (isAddPage) { + this.data.listRows.map((one) => { + listRows.push(this.copyData(one)) + }); + detailData = data.taskcard; + } else { + detailData = data.taskcard; + this.refs.detail.clearAllDetailData(); + } + data.tasklist.rows.map((one) => { + listRows.push(this.copyData(one)) + }) + this.data.listRows = listRows; + // 设置列表数据 + this.props.table.setAllTableData(window.presetVar.list, { + areacode: window.presetVar.list, + rows: listRows + }) + // 设置缩略数据 + this.refs.detail.addDetailData(detailData, this.data.listRows); + let newState = {} + newState = this.state + // 更新未完成数量 + if (data.pending) { + newState.showNumbers.pending = data.pending + } + if (data.handled) { + newState.showNumbers.handled = data.handled + } + if (data.handon) { + newState.showNumbers.handon = data.handon + } + if (data.sscreject) { + newState.showNumbers.sscreject = data.sscreject + } + if (data.adjust) { + newState.showNumbers.adjust = data.adjust + } + // 更新查询条件区域 + let conditions = null + switch (this.queryKey.taskstatus) { + case 'pending': + conditions = this.searchAreaConfig.searchArea_pending + break + case 'handled': + conditions = this.searchAreaConfig.searchArea_handled + break + case 'handon': + conditions = this.searchAreaConfig.searchArea_handon + break + case 'sscreject': + conditions = this.searchAreaConfig.searchArea_sscreject + break + case 'adjust': + conditions = this.searchAreaConfig.searchArea_adjust + break + default: + conditions = this.searchAreaConfig.searchArea_pending + break + } + let idx = -1 + conditions.forEach((ele, index) => { + if (ele.attrcode === 'pk_tradetype') { + idx = index + } + }) + if (idx != -1) { + conditions[idx] = data.searchArea.items[0] + } + + newState.searcharea.conditions = conditions + // 更新页信息 + this.queryKey.pageinfo = data.tasklist.pageinfo + if (Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number)) { + newState.pageControll = 'notend' + } else if (Number(this.queryKey.pageinfo.totalPages) == Number(this.queryKey.pageinfo.number)) { + newState.pageControll = 'end' + } else { + newState.pageControll = 'none' + } + newState.creditView = data.isCreditInstall || false + if (newState.creditView) { + //查询规则 + this.queryCreditRuleItems(); + } + newState.paginationItems = this.pendingPklist.length; + this.setState(newState); + setTimeout(() => { this.canChangPageFlag = true; }, 100) + } + // 复制列表数据 + copyData(data) { + let newData = {} + newData.values = {} + for (let child in data.values) { + newData.values[child] = { + display: data.values[child].display, + value: data.values[child].value, + scale: data.values[child].scale + } + } + return newData + } + // 已完成/未完成 页签切换 + selectTabChange(selectKey) { + this.queryKey.taskstatus = selectKey + for (let attr in this.queryKey) { + if (attr !== 'pageinfo' && attr !== 'taskstatus' && attr != 'iscmpreject') { + delete this.queryKey[attr] + } + } + this.refs.searchArea.resetState() + this.setState({ + currentKey: selectKey, + showCashierReject: selectKey == 'pending' ? true : false, + fuzzyquerychild: [] + }, () => { + initTemplate.call(this, this.props) + }) + } + // 查询条件选择变更 + handleConditionChange(attrcode, value) { + this.queryKey[attrcode] = value + this.queryData() + } + // 列表/缩略切换 + showTypeClick(type) { + this.setState({ showType: type }) + } + // 查询操作记录 + queryOperNote() { + requestApi.taskQueryOperationAction({ + data: { + busiid: this.state.currentRowData.busiid.value, + pk_currenttask: this.state.currentRowData.pk_currenttask.value + }, + success: (data) => { + if (data.success && data.data.ssctaskhistory) { + let newRows = data.data.ssctaskhistory.rows.map((row, index) => { + let values = row.values; + let newRow = { values }; + for (let attrcode in values) { + if (attrcode != 'opt') { + newRow[attrcode] = values[attrcode].display || values[attrcode].value + newRow.key = values['pk_bill'].value + '_' + index; + } + } + return newRow + }) + this.setState({ + sscTaskHistoryData: newRows, + showOperateNote: true + }) + } + } + }) + } + // 申请调整 + adjustApply() { + this.setState({ showadjustmodel: true, adjustmodeldata: this.state.currentRowData }) + } + successAdjust = (data) => { + if (data.success) { + initTemplate.call(this, this.props) + this.setState({ showadjustmodel: false, showModal: false, reason: '', activeIndex: 1, currentKey: this.queryKey.taskstatus, didAction: true }) + } + } + successUnAdjust = (data) => { + if (data.success) { + initTemplate.call(this, this.props) + this.setState({ showUnAdjustModal: false, showModal: false, reason: '', activeIndex: 1, currentKey: this.queryKey.taskstatus }) + } + } + // 取消调整 + adjustUnApply() { + this.setState({ + showUnAdjustModal: true, + unAdjustModalData: this.state.currentRowData + }) + } + // 按钮 挂起 + hangUp() { + this.setState({ showhandonmodel: true, handonmodeldata: this.state.currentRowData }) + } + successHangUp = (data) => { + if (data.success) { + initTemplate.call(this, this.props) + this.setState({ showhandonmodel: false, showModal: false, reason: '', activeIndex: 1, currentKey: this.queryKey.taskstatus, didAction: true }) + } + } + successUnHangUp = (data) => { + if (data.success) { + initTemplate.call(this, this.props) + this.setState({ showUnHandonModal: false, showModal: false, reason: '', activeIndex: 1, currentKey: this.queryKey.taskstatus }) + } + } + // 取消挂起 + cancelHangUp() { + this.setState({ + showUnHandonModal: true, + unHandonModalData: this.state.currentRowData + }) + } + reasonOnChange = (val) => { + if (val.length > 200) return + this.setState({ reason: val }) + } + // 批准 + taskApprove() { + let multiLang = this.props.MutiInit.getIntl(7010); + requestApi.taskApproveAction({ + data: { + pk_currenttask: this.state.currentRowData.pk_currenttask.value, + pk_task: this.state.currentRowData.pk_task.value, + reason: this.state.reason, + billtype: this.state.currentRowData.billtypecode.value, + billno: this.state.currentRowData.billno.value, + busiid: this.state.currentRowData.busiid.value, + skipcodes: this.state.skipcodes, + actiontype: "sscapprove", + ntbCheck: this.state.ntbCheck, + jkCheck: this.state.jkCheck, + ts: this.state.currentRowData.ts.value, + pk_group: this.state.currentRowData.pk_group.value, + transtypecode: this.state.currentRowData.transtypecode.value, + mod: this.state.currentRowData.module.value, + ...this.auditPointBarInst.getAuditData(true) + }, + success: (data) => { + if (data.success) { + let currentRowData = this.state.currentRowData; + currentRowData.taskstatus.value = 'sscapprove'; //此处设置用于审核侧边栏编辑态控制 + this.setState({ + currentRowData, + currentKey: 'handled' + }) + if (data.data && data.data['jkAlarm']) { //监控预警 + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'),//"提示信息" + content: (multiLang && multiLang.get('701001RWCL-0048')) + data.data['jkAlarm'] + (multiLang && multiLang.get('701001RWCL-0049')), + noFooter: false, // 是否显示底部按钮(确定、取消),默认显示(false),非必输 + noCancelBtn: false, // 是否显示取消按钮,,默认显示(false),非必输 + beSureBtnName: multiLang && multiLang.get('7010-0001'), + cancelBtnName: multiLang && multiLang.get('7010-0004'), + beSureBtnClick: () => { + this.state.jkCheck = true; + this.taskApprove(); + } + //cancelBtnClick: functionCancel // 取消按钮点击调用函数,非必输 + }) + } else if (data.data && data.data['bugetAlarm']) { //预算预警 + promptBox({ + color: 'warning', // 提示类别默认"success", "success"/"info"/"warning"/"danger",非必输 + title: multiLang && multiLang.get('701001RWCL-0047'),//"提示信息" + content: (multiLang && multiLang.get('701001RWCL-0048')) + data.data['bugetAlarm'] + (multiLang && multiLang.get('701001RWCL-0049')), + noFooter: false, // 是否显示底部按钮(确定、取消),默认显示(false),非必输 + noCancelBtn: false, // 是否显示取消按钮,,默认显示(false),非必输 + beSureBtnName: multiLang && multiLang.get('7010-0001'), + cancelBtnName: multiLang && multiLang.get('7010-0004'), + beSureBtnClick: () => { + this.state.ntbCheck = true; + this.state.skipcodes = data.data['skipcodes'] + this.taskApprove(); + } + //cancelBtnClick: functionCancel // 取消按钮点击调用函数,非必输 + }) + } else { + this.state.currentRowData.ts.value = data.data.ts + this.state.currentRowData.isApproved = true; + this.setState({ didApprove: true, approveUrl: '' }, () => { + let module = this.state.currentRowData.module.value || ""; + let _ncc_websocket_switch_ = getGlobalStorage("localStorage", "_ncc_websocket_switch_") || "0";//默认为合盘环境 + if (_ncc_websocket_switch_ == "0" || module == "webdbl") {//非微服务环境或者工单 + reloadBillPage.call(this); + } + }) + } + // document.getElementById('approve-detail').contentWindow.location.reload(true) + } + } + }) + + } + + // 取消审核 + taskUnApprove() { + requestApi.taskUnApproveAction({ + data: { + busiid: this.state.currentRowData.busiid.value, + billtypecode: this.state.currentRowData.billtypecode.value, + transtypecode: this.state.currentRowData.transtypecode.value, + pk_task: this.state.currentRowData.pk_task.value, + pk_group: this.state.currentRowData.pk_group.value, + pk_currenttask: this.state.currentRowData.pk_currenttask.value, + actiontype: "un-sscapprove", + ts: this.state.currentRowData.ts.value, + mod: this.state.currentRowData.module.value + }, + success: (data) => { + if (data.success) { + this.setState({ + currentKey: 'pending' + }) + this.state.ntbCheck = false; + this.state.jkCheck = false; + this.state.currentRowData.ts.value = data.data.ts + this.state.currentRowData.isApproved = false; + this.state.currentRowData.taskstatus.value = 'taken'; + this.setState({ didApprove: false, approveUrl: '' }, () => { + let module = this.state.currentRowData.module.value || ""; + let _ncc_websocket_switch_ = getGlobalStorage("localStorage", "_ncc_websocket_switch_") || "0";//默认为合盘环境 + if (_ncc_websocket_switch_ == "0" || module == "webdbl") {//非微服务环境或者工单 + reloadBillPage.call(this); + } + }) + } + } + }) + } + // 按钮 驳回 + taskReject() { + requestApi.getRejectActivityAction({ + data: { + billid: this.state.currentRowData.busiid.value, + billtype: this.state.currentRowData.transtypecode.value, + pk_currenttask: this.state.currentRowData.pk_currenttask.value, + pk_group: this.state.currentRowData.pk_group.value + }, + success: (data) => { + if (data.success) { + this.setState({ + showdialogmodel: true, + operationData: this.state.currentRowData, + showradio: data.data.showradio, + ncoptions: data.data.NCOptions, + defaultOption: data.data.default + }) + // this.refs.rejectDialog.setDefaultDefOption(data.data.default || '') + } + } + }) + } + // 分页点击 + paginationClick(position) { + paginationClick(position, this) + } + // 模糊查询输入内容变化 + onFuzzyChange(data) { + this.fuzzyKey = data + let newQueryKey = {} + let multiLang = this.props.MutiInit.getIntl(7010) + for (let child in this.queryKey) { + newQueryKey[child] = this.queryKey[child] + } + newQueryKey.fuzzyQueryKey = data + setTimeout((that, data) => { + if (data == that.fuzzyKey) { + requestApi.queryFuzzyKey({ + data: newQueryKey, + success: (data) => { + + let fuzzyquerychild = this.state.fuzzyquerychild; + + data.data.forEach((item) => { + let obj = {}; + obj.value = item.value + '=' + that.fuzzyKey; + obj.key = item.key + (multiLang && multiLang.get('701001RWCL-0061')) + that.fuzzyKey;//包含 + if (!this.queryKey.fuzzyQueryKey || !this.queryKey.fuzzyQueryKey.includes(obj.value)) { //避免重复 + fuzzyquerychild.push(obj); + } + }) + + that.setState({ fuzzyquerychild }); + } + }) + } + }, 500, this, data) + } + + // 模糊查询选择 + onFuzzySelected(data) { + let fuzzyquerychild = []; + + if (data) { //data为空时是清空操作, 需要清空记录。 不为控制进行下面的逻辑 + this.state.fuzzyquerychild.forEach((item) => { //取消没有选择的项 + if (data.includes(item.value)) { + fuzzyquerychild.push(item); + } + }) + } + + this.setState({ fuzzyquerychild }) + this.queryKey.fuzzyQueryKey = data + this.queryData() + } + backToUserList(multiLang) { + let $frame = document.querySelector("#approve-detail"); + try { + let frameWin = $frame.contentWindow; + let targetDom = frameWin.document.querySelector(".nc-bill-form-area .form-component-item-wrapper"); + if (targetDom && targetDom.className.includes('edit')) { + alert(multiLang && multiLang.get('701004RWCL-0173')); + return; + } + } catch (e) { + //跨域报错,不处理 + } + + this.setState({ + showModal: false, + reason: '', + activeIndex: -1, + approveUrl: '', + currentKey: this.queryKey.taskstatus + }) + // this.queryKey = { + // taskstatus: this.queryKey.taskstatus, + // fuzzyQueryKey: [], + // pageinfo: { + // number: 1, + // size: 30, + // totalElements: 0, + // totalPages: 0 + // } + // } + initTemplate.call(this, this.props) + // 重置查询区焦点 + // this.refs.searchArea.resetState() + } + + //定向提取 + taskTakeAction = (params) => { + const { + queryAreaCode, + oid + } = this.data + + requestApi.taskTakeAction({ + data: { + querycondition: params, + oid, + queryAreaCode, + querytype: 'tree', + pagecode: window.presetVar.listCode + }, + success: (data) => { + if (data.success) { + initTemplate.call(this, this.props) + } + } + }) + } + + //扫描条码未查询到单据时调用:任务提取 + taskTakeActionByBarCode = (barcode, callback) => { + requestApi.taskTakeAction({ + data: { + barcode + }, + success: (data) => { + if (data.success) { + this.queryData(null, null, true, callback, barcode) + } + } + }) + } + + // 删除信用指标 + deleteCreditByIdx = (idx) => { + let newarr = this.state.creditsArray.filter((each, index) => index != idx) + this.setState({ creditsArray: newarr }) + } + setCheckedCredits = (arr, mixin) => { + this.setState({ + creditsArray: arr + }) + } + + setCreditRuleItems = (data) => { + this.setState({ + creditRuleItems: data + }) + } + queryCreditRuleItems = () => { + requestApi.queryCreditRule({ + success: (data) => { + let creditRuleItems = {}; + let rules = data.data.rows + rules.forEach((rule) => { + if (!rule.pid) { + creditRuleItems[rule.refpk] || (creditRuleItems[rule.refpk] = { item: null, children: [] }) + creditRuleItems[rule.refpk].item = rule + } else { + creditRuleItems[rule.pid] || (creditRuleItems[rule.pid] = { item: null, children: [] }) + creditRuleItems[rule.pid].children.push(rule) + } + }) + this.setState({ + creditRuleItems + }) + } + }); + } + + // 处理排序后的模板变化 + handleTempletAfterSort(sortParam) { + let sortObj = {}; + sortParam.forEach(item => { + sortObj[item.field] = item; + }); + let meta = this.props.meta.getMeta() + meta[window.presetVar.list].items.forEach(item => { + //保存返回的column状态,没有则终止order状态 + if (sortObj[item.attrcode]) { + item.order = sortObj[item.attrcode].order; + item.orderNum = sortObj[item.attrcode].orderNum; + } else { + item.order = "flatscend"; + item.orderNum = ""; + } + }) + this.props.meta.setMeta(meta); + } + + getBillChange(params) { + if (params) { + requestApi.setStart({ + success: () => { + this.setState({ getBillStatus: true }); + }, + error: (res) => { + this.setState({ getBillStatus: false }); + toast({ color: 'danger', content: res.message }); + } + }) + } else { + requestApi.setEnd({ + success: () => { + this.setState({ getBillStatus: false }); + }, + error: (res) => { + this.setState({ getBillStatus: true }); + toast({ color: 'danger', content: res.message }); + } + }) + } + } + + handleSagaErrorClick = () => { + const { currentRowData: { saga_gtxid, busiid, billtypecode } } = this.state; + + this.refs.detail.setState({ + billErrorInfo: { + show: true, + pk: (busiid && busiid.value) || "", + gtxid: (saga_gtxid && saga_gtxid.value) || "", + type: (billtypecode && billtypecode.value) || "" + } + }); + } + + socketMesg = (props, mesg) => { + let sagaStatus = mesg.error ? "1" : "0"; + // this.setState({ sagaStatus }); + const refreshData = mesg.refreshData || []; + const { activeIndex } = this.state; + refreshData.forEach(data => { + if (activeIndex === -1) {//表示在列表界面 + //列表下需要处理更新列表数据,根据已处理取消批准操作的逻辑,重新查询列表数据 + if (sagaStatus === "0") { + initTemplate.call(this, this.props); + } + } else { + //卡片也需要更新缓存数据 根据_businessPk和当前数据的busiid来判断是否还打开了此单据 + const { _businessPk } = data; + if (_businessPk) { + const { currentRowData } = this.state; + let { saga_gtxid, saga_status, busiid, ts, module } = currentRowData; + let row = this.data.listRows.find(r => r.values.busiid.value === data._businessPk); + if (row) { + row.values.saga_status.value = data.saga_status; + row.values.saga_gtxid.value = data.saga_gtxid; + if (sagaStatus === "0") {//saga事务正确 + requestApi.updateTs({ + pk_task: row.values.pk_task.value, + success: response => { + let _ts = response.data.data; + row.values.ts.value = _ts; + if (_businessPk === busiid.value) { + saga_status.value = data.saga_status; + saga_gtxid.value = data.saga_gtxid; + ts.value = _ts; + this.setState({ currentRowData, sagaStatus }) + } + } + }) + } else {//saga事务出错 + if (_businessPk === busiid.value) { + saga_status.value = data.saga_status; + saga_gtxid.value = data.saga_gtxid; + this.setState({ currentRowData, sagaStatus }) + } + } + //微服务环境下不刷新工单 + if (module.value !== "webdbl") { + reloadBillPage.call(this); + } + } + } + } + + }) + } + + render() { + const { button, table, socket } = this.props + const { createSimpleTable } = table + const { queryAreaCode, oid, didApprove, defaultKey, currentKey, levels, creditLevelInfo, isCreditInstall, theme, getBillStatus } = this.state + {/* 连接到 socket */ } + + const tablePkName = "pk_task"; + let multiLang = this.props.MutiInit.getIntl(7010); //this.moduleId + let isShow = (type) => { + if (this.state.showType == "list" && type == "list") { + return "data-area-show"; + } else if (this.state.showType == "card" && type == "card") { + return "data-area-show"; + } else { + return "data-area-hide"; + } + } + // 信用评级 + let img1 = '' + let img2 = '' + if (isCreditInstall && creditLevelInfo.creditscore) { + const { creditscore } = creditLevelInfo + let imgIdx = -1 + levels.forEach((ele, idx) => { + if (creditscore == ele.limitscore) imgIdx = idx + }) + if (imgIdx == -1) imgIdx = levels.length - 1 + if (imgIdx != -1) { + img1 = levelImgs[imgIdx].img1 + img2 = levelImgs[imgIdx].img2 + } + } + + let addMoreOnOff = this.data.listRows.length > 0 && Number(this.queryKey.pageinfo.totalPages) > Number(this.queryKey.pageinfo.number) + + let getDetailBtns = (record, index) => { + switch (this.queryKey.taskstatus) { + case 'pending': + let btnArr; + if (record.taskstatus && record.taskstatus.value == 'sscapprove' && record.iscmpreject && record.iscmpreject.value === true) { //出纳驳回时 + btnArr = ['CancelHandled', 'QueryOperation']; + } else { + btnArr = ['AdjustApply', 'HangUp', 'QueryOperation']; + } + return btnArr; + case 'handon': + return ['CancelHangUp', 'QueryOperation'] + case 'adjust': + return ['CancelAdjust', 'QueryOperation'] + case 'handled': + case 'sscreject': + return ['CancelHandled', 'QueryOperation'] + default: + return ['AdjustApply', 'HangUp', 'QueryOperation'] + } + } + + let hintContent =
    {this.state.hitMessage}
    + + const sagaError = this.state.sagaStatus === "1" && + + {/* 操作记录 页签 */ } + const operateAndNCPagination = [ + { + this.queryOperNote.call(this) + // "701001RWCL-0008": "操作记录" + }} + >{multiLang && multiLang.get('701001RWCL-0008')}, + ]; + const pending = ( +
    + {sagaError} + + {/* reason */} + { + !this.state.didAction + && + ( + + ) + } + { + !this.state.didAction + && + + {this.state.reason ? this.state.reason.length : 0}/200 + + } + { + this.state.alarm ? + + : "" + } + {/* 批准 */} + { + !this.state.didAction + && + {multiLang && multiLang.get('701001RWCL-0003')} + } + { + !this.state.didAction + && + {multiLang && multiLang.get('701001RWCL-0004')} + } + { + !this.state.didAction + && + { + this.setState({ showcreditmodel: true, creditmodeldata: this.state.currentRowData }) + }} + > + {/*"701001RWCL-0037": "信用批准"*/} + {multiLang && multiLang.get('701001RWCL-0037')} + + } + { + !this.state.didAction + && + {multiLang && multiLang.get('701001RWCL-0005')} + } + { + !this.state.didAction + && + {multiLang && multiLang.get('701001RWCL-0006')} + } + { + !this.state.didAction + && + {multiLang && multiLang.get('701001RWCL-0007')} + } + + {/* 联查凭证 按钮*/} + { + this.state.showLinkVoucherBtn + && + { + let cRow = this.state.currentRowData + this.props.openTo('/nccloud/resources/ssctp/dooroad/linkvoucher/config/', { + appcode: '700107LCPZ', + pagecode: '700107LCPZ_list', + billid: cRow.busiid.value, + pk_group: cRow.pk_group.value, + pk_org: cRow.pk_org.value, + transtypecode: cRow.transtypecode.value + }) + }} + > + {multiLang && multiLang.get('701001RWCL-0202')} + + } + + {/* 操作记录 页签 */} + {operateAndNCPagination} + +
    + ) + + const sscreject = ( +
    + {sagaError} + {operateAndNCPagination} +
    + ) + + const handon = ( +
    + {sagaError} + {multiLang && multiLang.get('701001RWCL-0018')} + {operateAndNCPagination} +
    + ) + + const adjust = ( +
    + {sagaError} + {multiLang && multiLang.get('701001RWCL-0017')} + {operateAndNCPagination} +
    + ) + + let getBillClass = '' + if (theme === 'black') { // 暗黑主题接单css类 + getBillClass = `get-bill--black` + } else { // 其他主题接单css类 + getBillClass = `get-bill--default` + } + + const orderInnerContent = ( + getBillStatus + ? + ( + + + {this.state.orderInfo ? multiLang && multiLang.get('701001RWCL-0204') : multiLang && multiLang.get('701001RWCL-0205')} + + ) + : + ( + + + {multiLang && multiLang.get('701001RWCL-0206')} + + ) + ) + + return ( +
    + { + socket.connectMesg({ + tableAreaCode: window.presetVar.list, + billpkname: "busiid",//需要传单据的主键,不然不能显示单据追溯 + billtypeFromList: "billtypecode", + billtype: "", + onMessage: this.socketMesg, + isShowToast: false + // 本地前端调试,请传ip和端口 + // 打包到测试环境之前 去掉 + // serverLocation: "172.16.86.11:8883" + }) + } +
    +
    + {/*
    { + this.setState({ + currentKey: this.state.currentKey == 'pending' ? '66' : 'pending' + }) + } + }>666
    */} +
    + +
    + + {/*"701001RWCL-0002": "审批情况"*/} +
    + {multiLang && multiLang.get('701001RWCL-0002')} +
    +
    + +
    + +
    +
    + +
    +
    +
    + {this.state.creditLevelInfo.name} +
    +
    + {/*"701001RWCL-0036": "信用:"*/} + {multiLang && multiLang.get('701001RWCL-0036')} + {this.state.creditLevelInfo.creditlevel} +
    +
    +
    +
    +
    + {/* 出纳驳回 */} + {/* {this.state.manualReason && } */} + { + (() => { + switch (this.queryKey.taskstatus) { + case 'pending': + return pending + case 'sscreject': + return sscreject + case 'handon': + + return handon + case 'adjust': + return adjust + case 'handled': + return pending + default: + return pending + } + })() + } +
    +
    + this.auditPointBarInst = auditPointBarInst} + {...this.props} + > + + + + +
    +
    + +
    + + + + + +
    + {/* 作业任务状态 */} + + { + if (this.state.getBillStatus) { + this.getBillChange.call(this, false) + } else { + this.getBillChange.call(this, true) + } + }} + onMouseEnter={() => this.setState({ orderInfo: false })} + onMouseLeave={() => this.setState({ orderInfo: true })} + + > + {orderInnerContent} + +
    + )} + btnsClick={buttonClick.bind(this)} + currentKey={currentKey} + superBtn={( + + )} + /> +
    + +
    + {/* 查询条件 */} + { + this.onFuzzyChange.call(this, data) + }} + onFuzzySelected={this.onFuzzySelected.bind(this)} + showTypeClick={this.showTypeClick.bind(this)} + barcodeApi={requestApi.query} + queryKey={this.queryKey} + queryData={this.queryData} + queryDataCallback={this.queryDataCallback} + showCashierReject={this.state.showCashierReject} + taskTakeActionByBarCode={this.taskTakeActionByBarCode} + /> +
    +
    + {/* 列表模式 */} + {createSimpleTable(window.presetVar.list, { + pkname: tablePkName, + lazyload: false, + showIndex: true, + onRowDoubleClick: (...params) => { onRowDoubleClick.call(this, ...params) }, + sort: { + mode: 'single', + backSource: true, + sortFun: (sortParam) => { + if (sortParam[0].order == 'flatscend') { + this.queryKey.orderByInfo = []; + } else { + this.queryKey.orderByInfo = sortParam; + } + this.queryData(null, () => { + this.handleTempletAfterSort(sortParam); + }); + } + } + })} + {/*
    {multiLang && multiLang.get('701001RWCL-0062')}
    {/*"701001RWCL-0062": "滑动加载更多"*/} +
    +
    + {/* 卡片模式 */} + getDetailBtns(data, index)} + sagasButtonVisible={true} + /> + {/*
    {multiLang && multiLang.get('701001RWCL-0062')}
    {/*"701001RWCL-0062": "滑动加载更多"*/} */} +
    +
    + + {/* 操作记录 */} + this.setState({ showOperateNote: false })} + size='lg' + > + + {/*"701001RWCL-0008": "操作记录"*/} + {multiLang && multiLang.get('701001RWCL-0008')} + + + + + { + let problems = []; + if (record.problems) { + problems = record.problems.map((item, index) => { + return ( +
  • +
    + {index + 1}. {item.displayname} + + {item.serious_level_name} + +
    +
    {item.memo}
    +
  • + ) + }) + } + return problems.length ? + ( +
      + {problems} +
    + ) + : + ({multiLang && multiLang.get('7010-PROBLEM-01')}) + }} + /> + +
    +
    +
    +
    + + {/* 挂起 */} + { this.setState({ showhandonmodel: false }) }} + successHangUp={this.successHangUp} + data={this.state.handonmodeldata} + parentThis={this} + /> + {/* 取消挂起 */} + { this.setState({ showUnHandonModal: false }) }} + successUnHangUp={this.successUnHangUp} + data={this.state.unHandonModalData} + /> + + {/* 申请调整 */} + { this.setState({ showadjustmodel: false }) }} + successAdjust={this.successAdjust} + data={this.state.adjustmodeldata} + /> + {/* 取消调整 */} + { this.setState({ showUnAdjustModal: false }) }} + successUnAdjust={this.successUnAdjust} + data={this.state.unAdjustModalData} + /> + + {/* 驳回 */} + { + this.state.currentRowData.didAction = true + }} + reason={this.state.reason} + reasonOnChange={this.reasonOnChange} + /> + {/* 信用审批 */} + { + this.setState({ showcreditmodel: false, creditsArray: [] }) + }} + successCreditApproval={(ts) => { + this.state.currentRowData.ts.value = ts + this.setState({ showcreditmodel: false, didApprove: true, approveUrl: '' }, () => { + requestApi.openBill({ + data: { + billtypeCode: this.state.currentRowData.billtypecode.value, + transtypeCode: this.state.currentRowData.transtypecode.value, + billid: this.state.currentRowData.busiid.value, + pk_group: this.state.currentRowData.pk_group.value + }, + success: (data) => { + let url = data.data.url + let params = data.data.data + if (url.indexOf('#') > -1) { + if (url.indexOf('#/') > -1) { + if (url.indexOf('?') < 0) { + url += '?' + } + } + } else { + url += '#/?' + } + let approveUrl = '/nccloud/resources' + url + 'status=' + params.status + '&scene=zycl&deal=done' + for (let attr in params) { + if (attr != 'status') { + approveUrl += `&${attr}=${params[attr]}` + } + } + this.setState({ approveUrl }, () => { + pageTo.addUrlParam({ + c: params.appcode, + p: params.pagecode, + n: params.appname + }) + }) + } + }) + }) + // document.getElementById('approve-detail').contentWindow.location.reload(true) + }} + data={this.state.creditmodeldata} + creditsArray={this.state.creditsArray} + deleteCreditByIdx={this.deleteCreditByIdx} + setCheckedCredits={this.setCheckedCredits} + currentRowData={this.state.currentRowData} + reason={this.state.reason} + creditView={this.state.creditView} + creditRuleItems={this.state.creditRuleItems} + setCreditRuleItems={this.setCreditRuleItems} + /> + + + { + [...this.state.tipsInfo] + } + + +
    + ) + } +} +SscUserList = createPage({ + mutiLangCode: '7010', + appAutoFocus: true +})(SscUserList) +export default SscUserList +/*b8DESLMYZe2kOZjnZDqmEhRfChTTStWDAoDSflO4zHk=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/widgets/bzclqk/config.json b/src/ssctpaaa/sscuser/widgets/bzclqk/config.json new file mode 100644 index 0000000..9efb30f --- /dev/null +++ b/src/ssctpaaa/sscuser/widgets/bzclqk/config.json @@ -0,0 +1,4 @@ +{ + "template": "widget.html", + "hash": false +} \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/widgets/bzclqk/index.js b/src/ssctpaaa/sscuser/widgets/bzclqk/index.js new file mode 100644 index 0000000..7eff74c --- /dev/null +++ b/src/ssctpaaa/sscuser/widgets/bzclqk/index.js @@ -0,0 +1,132 @@ +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ +import React, { Component } from 'react'; +import './index.less'; +import {ajax,base,createPage, getMultiLang} from 'nc-lightapp-front' + +const { NCSelect } = base; +const NCOption = NCSelect.NCOption; + + +class Test1 extends Component { + constructor(props) { + super(props); + this.state={ + activeKey:'', + groups: [], + json: {}, + res: {} + } + } + + componentWillMount() { + + } + deal(groupid) { + if(!groupid || '' == groupid){ + return; + } + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleBzclqkWidgetAction.do', + sysAppcode: '701011BZCL', + data: {"groupid":groupid}, + loading: false, + success: (res) => { + this.setState({res: res.data}); + } + }); + } + + componentDidMount() { + let callback = (json) => { + this.setState({json}); + + ajax({ + url: '/nccloud/ssctp/sscbd/SSCTaskHandleBzclqkWidgetAction.do', + sysAppcode: '701011BZCL', + data: {}, + async: false, + loading: false, + success: (res) => { + if(res.data && res.data.groups && res.data.groups[0]){ + this.setState({groups: res.data.groups, activeKey: res.data.groups[0].groupid}); + this.deal.call(this, res.data.groups[0].groupid); + } + } + }); + + } + getMultiLang({moduleId: 7010, currentLocale: 'zh-CN',domainName: 'ssctp',callback}); + } + + selectTabChange(selectKey){ + this.setState({activeKey: selectKey}); + this.deal.call(this, selectKey); + } + render() { + return ( +
    + + + + + + + + + + + + + + +
    + {/*"701001RWCL-0029": "本周作业情况"*/} + {this.state.json['701001RWCL-0029']} + + { + this.state.activeKey + ? + ( + document.body} + > + { + this.state.groups.map(one => {one.groupname}) + } + + + ) + : + null + } +
    + {/*701001RWCL-0150:单*/} + {/*
    {(this.state.res.handleCount || '') + (this.state.json['701001RWCL-0150'] || '')}
    */} +
    {this.state.res.handleCount ? (this.state.res.handleCount + this.state.json['701001RWCL-0150']) : '--'}
    + {/*"701001RWCL-0015": "已处理"*/} +
    {this.state.json['701001RWCL-0015']}
    +
    +
    {this.state.res.avgHandleMinutes ? this.state.res.avgHandleMinutes : '--'}
    + {/*"701001RWCL-0030": "平均处理时间"*/} +
    {this.state.json['701001RWCL-0030']}
    +
    +
    {this.state.res.rank ? this.state.res.rank : '--'}
    + {/*"701001RWCL-0031": "组内排名"*/} +
    {this.state.json['701001RWCL-0031']}
    +
    +
    + ); + } +} +Test1 = createPage({ + // initTemplate: initTemplate, + // mutiLangCode: '7010' + +})(Test1) +export default Test1 +// ReactDOM.render(, document.querySelector('#app')); + +/*FDKFkr+TYgGKTTudQv9suM5TObrl0kaUnLjqLMCkTsQ=*/ \ No newline at end of file diff --git a/src/ssctpaaa/sscuser/widgets/bzclqk/index.less b/src/ssctpaaa/sscuser/widgets/bzclqk/index.less new file mode 100644 index 0000000..b0047fd --- /dev/null +++ b/src/ssctpaaa/sscuser/widgets/bzclqk/index.less @@ -0,0 +1,64 @@ +@import '~widgetsless'; + +#Operational-status { + //.title{ + // //padding: 11px 0 0 0!important; + // //font-size: 16px; + // font-family: MicrosoftYaHei; + // //color: rgba(17,17,17,1); + //} + #bzclqk-select { + .nc-select { + margin-right: 0 !important; + } + } + #bzclqk-content { + .one { + width: 108px; + padding-top: 31px; + text-align: center; + padding-left: 3px; + padding-right: 3px; + } + } + + .avg-minutes { + padding-top: 31px; + text-align: center; + padding-left: 3px; + padding-right: 3px; + width: 130px; + } + .biankuang { + width: 0; + height: 18px; + // color: rgba(151,151,151,1); + // padding-top: 14px; + margin-top: 14px; + // opacity: 0.3771; + // font-size: 18px; + border: 1px solid rgba(151, 151, 151, 0.3771); + } + .one-content { + font-size: 22px; + font-family: 'PingFangSC-Medium'; + color: #111111; + line-height: 30px; + font-weight: 500; + } + .one-title { + font-size: 13px; + font-family: MicrosoftYaHei; + color: rgba(139, 142, 149, 1); + line-height: 17px; + } + #bzclqk-select { + position: absolute; + left: 230px; + top: 10px; + } + #bzclqk-content { + display: flex; + align-items: center; + } +} diff --git a/src/ssctpaaa/sscuser/widgets/linkquery/components/card.js b/src/ssctpaaa/sscuser/widgets/linkquery/components/card.js new file mode 100644 index 0000000..44dc04b --- /dev/null +++ b/src/ssctpaaa/sscuser/widgets/linkquery/components/card.js @@ -0,0 +1,83 @@ +/*9p2K2vOAWNpnqaOIf99//g==*/ +import React, { Component } from 'react'; +import { pageTo, base } from 'nc-lightapp-front' +const { NCTabs } = base; +const NCTabPane = NCTabs.NCTabPane; +import requestApi from '../requestApi' +import urlHandle from 'ssccommon/utils/urlHandle'; +import { setPointTreeData } from 'ssccommon/components/auditPointBar/handle'; +import AuditPointBar from 'ssccommon/components/auditPointBar/AuditPointBar'; + + + +class Card extends Component { + constructor(props) { + super(props); + this.state = { + letfSrc: '', + defaultActiveKey: '', + tabs: [] + } + this.parent = this.props.parentComponent; + this.record = this.parent.state.billRecord; + this.auditPointBarInst; + } + componentDidMount() { + let iframeObj = document.getElementById('leftcard'); + iframeObj.onload = () => { + if (iframeObj.contentWindow) { + iframeObj.contentWindow.document.body.style.padding = 0; + iframeObj.contentWindow.app.style.minWidth = 'auto'; + } + } + requestApi.openBill({ + data: { + billtypeCode: this.record.billtypecode.value, + transtypeCode: this.record.tradetypecode.value, + billid: this.record.billid.value, + pk_group: this.record.pk_group.value + }, + success: (data) => { + let letfSrc = urlHandle(data, 'scene=bzcx', null, 'leftcard'); + this.setState({ + letfSrc + }, () => { + pageTo.addUrlParam({ + c: data.data.data.appcode, + p: data.data.data.pagecode, + n: data.data.data.appname, + custom: JSON.stringify({ + pk_group: this.record.pk_group.value + }) + }) + + setPointTreeData.call(this.auditPointBarInst, { billid: this.record.billid.value }); + + }) + } + }) + + } + + render() { + + return ( +
    + this.auditPointBarInst = auditPointBarInst} + queryUrl="/nccloud/ssctp/ssccheck/LinkBillQueryProblemsAction.do" + notJudgeBarHide={true} + {...this.props} + > +