@bit-sun/business-component 3.1.10-alpha.1 → 3.1.10-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.editorconfig +16 -16
  2. package/.fatherrc.ts +5 -5
  3. package/.gitlab-ci.yml +179 -179
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +74 -74
  7. package/README.md +27 -27
  8. package/dist/components/Functional/AddSelect/index.d.ts +1 -1
  9. package/dist/index.esm.js +485 -205
  10. package/dist/index.js +486 -206
  11. package/docs/index.md +21 -21
  12. package/lib/assets/drag.svg +17 -17
  13. package/lib/assets/exportFail.svg +37 -37
  14. package/lib/assets/exportProcessing.svg +28 -28
  15. package/lib/assets/exportSuccess.svg +34 -34
  16. package/lib/assets/label_icon_bottom.svg +25 -25
  17. package/lib/assets/upExport.svg +22 -22
  18. package/package.json +88 -88
  19. package/src/assets/32.svg +27 -27
  20. package/src/assets/addIcon.svg +17 -17
  21. package/src/assets/allfunc.svg +27 -27
  22. package/src/assets/arrowRight.svg +24 -24
  23. package/src/assets/arrow_top.svg +17 -17
  24. package/src/assets/btn-delete.svg +29 -29
  25. package/src/assets/btn-edit.svg +19 -19
  26. package/src/assets/btn-more.svg +17 -17
  27. package/src/assets/btn-submit.svg +19 -19
  28. package/src/assets/caidan.svg +11 -11
  29. package/src/assets/close.svg +26 -26
  30. package/src/assets/drag.svg +17 -17
  31. package/src/assets/exportFail.svg +37 -37
  32. package/src/assets/exportProcessing.svg +28 -28
  33. package/src/assets/exportSuccess.svg +34 -34
  34. package/src/assets/fixed-left-active.svg +11 -11
  35. package/src/assets/fixed-left.svg +15 -15
  36. package/src/assets/fixed-right-active.svg +11 -11
  37. package/src/assets/fixed-right.svg +15 -15
  38. package/src/assets/guanbi.svg +15 -15
  39. package/src/assets/icon-quanping.svg +15 -15
  40. package/src/assets/icon-shezhi.svg +17 -17
  41. package/src/assets/label_icon_bottom.svg +25 -25
  42. package/src/assets/list-no-img.svg +21 -21
  43. package/src/assets/morentouxiang-32.svg +23 -23
  44. package/src/assets/scanning.svg +24 -24
  45. package/src/assets/upExport.svg +22 -22
  46. package/src/common/ENUM.ts +41 -41
  47. package/src/components/Business/AddSelectBusiness/index.md +398 -398
  48. package/src/components/Business/AddSelectBusiness/index.tsx +1116 -1116
  49. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +112 -112
  50. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  51. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  52. package/src/components/Business/BsLayouts/Components/ChooseStore/index.tsx +193 -193
  53. package/src/components/Business/BsLayouts/Components/ChooseStore/services.ts +10 -10
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  63. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  64. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +163 -163
  65. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  66. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  67. package/src/components/Business/BsLayouts/Components/RightContent/i18n.ts +8 -8
  68. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +172 -172
  69. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  70. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  71. package/src/components/Business/BsLayouts/index.less +79 -79
  72. package/src/components/Business/BsLayouts/index.tsx +1606 -1606
  73. package/src/components/Business/BsLayouts/service.ts +10 -10
  74. package/src/components/Business/BsLayouts/utils.tsx +205 -205
  75. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +568 -566
  76. package/src/components/Business/BsSulaQueryTable/bssulaquerytable.less +5 -5
  77. package/src/components/Business/BsSulaQueryTable/index.less +227 -227
  78. package/src/components/Business/BsSulaQueryTable/index.tsx +767 -767
  79. package/src/components/Business/BsSulaQueryTable/setting.tsx +890 -888
  80. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  81. package/src/components/Business/BsSulaQueryTable/utils.tsx +709 -709
  82. package/src/components/Business/CommodityEntry/index.md +84 -84
  83. package/src/components/Business/CommodityEntry/index.tsx +82 -82
  84. package/src/components/Business/CommonAlert/index.tsx +23 -23
  85. package/src/components/Business/CommonGuideWrapper/index.less +121 -121
  86. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  87. package/src/components/Business/CommonGuideWrapper/index.tsx +94 -94
  88. package/src/components/Business/DetailPageWrapper/index.less +87 -87
  89. package/src/components/Business/DetailPageWrapper/index.tsx +327 -327
  90. package/src/components/Business/DetailPageWrapper/utils.tsx +166 -166
  91. package/src/components/Business/HomePageWrapper/index.less +33 -33
  92. package/src/components/Business/HomePageWrapper/index.md +45 -45
  93. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  94. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +823 -823
  95. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  96. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  97. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  98. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  99. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  100. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  101. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  102. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  103. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  104. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  105. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  106. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  107. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  108. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  109. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  110. package/src/components/Business/JsonQueryTable/index.less +16 -16
  111. package/src/components/Business/JsonQueryTable/index.md +328 -328
  112. package/src/components/Business/JsonQueryTable/index.tsx +534 -534
  113. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  114. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  115. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  116. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  117. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  118. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  119. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  120. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  121. package/src/components/Business/JsonQueryTable/static.ts +450 -450
  122. package/src/components/Business/SearchSelect/BusinessUtils.tsx +2326 -2318
  123. package/src/components/Business/SearchSelect/common.ts +134 -134
  124. package/src/components/Business/SearchSelect/index.md +1570 -1570
  125. package/src/components/Business/SearchSelect/index.tsx +55 -55
  126. package/src/components/Business/SearchSelect/utils.ts +125 -125
  127. package/src/components/Business/StateFlow/index.less +130 -130
  128. package/src/components/Business/StateFlow/index.md +60 -60
  129. package/src/components/Business/StateFlow/index.tsx +29 -29
  130. package/src/components/Business/TreeSearchSelect/index.md +239 -239
  131. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  132. package/src/components/Business/TreeSearchSelect/utils.ts +115 -115
  133. package/src/components/Business/columnSettingTable/columnSetting.tsx +818 -816
  134. package/src/components/Business/columnSettingTable/index.less +253 -253
  135. package/src/components/Business/columnSettingTable/index.md +372 -372
  136. package/src/components/Business/columnSettingTable/index.tsx +225 -225
  137. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +232 -232
  138. package/src/components/Business/columnSettingTable/utils.tsx +87 -87
  139. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  140. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  141. package/src/components/Business/moreTreeTable/index.less +99 -99
  142. package/src/components/Business/moreTreeTable/index.md +448 -448
  143. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  144. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  145. package/src/components/Functional/AccessWrapper/index.tsx +33 -33
  146. package/src/components/Functional/AddSelect/helps.ts +81 -81
  147. package/src/components/Functional/AddSelect/index.less +367 -367
  148. package/src/components/Functional/AddSelect/index.md +155 -155
  149. package/src/components/Functional/AddSelect/index.tsx +1088 -1072
  150. package/src/components/Functional/AuthButton/index.tsx +15 -15
  151. package/src/components/Functional/BillEntry/index.less +371 -371
  152. package/src/components/Functional/BillEntry/index.md +39 -39
  153. package/src/components/Functional/BillEntry/index.tsx +771 -771
  154. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  155. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  156. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  157. package/src/components/Functional/DataImport/index.less +63 -63
  158. package/src/components/Functional/DataImport/index.md +44 -44
  159. package/src/components/Functional/DataImport/index.tsx +782 -782
  160. package/src/components/Functional/DataValidation/index.less +63 -63
  161. package/src/components/Functional/DataValidation/index.md +52 -52
  162. package/src/components/Functional/DataValidation/index.tsx +788 -788
  163. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  164. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  165. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  166. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  167. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +65 -65
  168. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  169. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  170. package/src/components/Functional/QueryMutipleInput/index.tsx +129 -129
  171. package/src/components/Functional/SearchSelect/index.less +121 -121
  172. package/src/components/Functional/SearchSelect/index.md +141 -141
  173. package/src/components/Functional/SearchSelect/index.tsx +1050 -1046
  174. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  175. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  176. package/src/components/Functional/TreeSearchSelect/index.tsx +224 -224
  177. package/src/components/Solution/RuleComponent/CustomPlugin/CustomSelector/CustomSelectorModal.tsx +358 -358
  178. package/src/components/Solution/RuleComponent/CustomPlugin/CustomSelector/function.js +255 -255
  179. package/src/components/Solution/RuleComponent/CustomPlugin/CustomSelector/helps.tsx +57 -57
  180. package/src/components/Solution/RuleComponent/CustomPlugin/CustomSelector/index.tsx +129 -129
  181. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  182. package/src/components/Solution/RuleComponent/InnerSelect.tsx +62 -62
  183. package/src/components/Solution/RuleComponent/RenderCompItem.tsx +774 -774
  184. package/src/components/Solution/RuleComponent/index.d.ts +34 -29
  185. package/src/components/Solution/RuleComponent/index.js +1680 -1663
  186. package/src/components/Solution/RuleComponent/index.less +247 -247
  187. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  188. package/src/components/Solution/RuleComponent/ruleFiled.js +2695 -2695
  189. package/src/components/Solution/RuleComponent/services.ts +13 -13
  190. package/src/components/Solution/RuleComponent/util.js +143 -143
  191. package/src/components/Solution/RuleSetter/RuleInstance.tsx +6 -6
  192. package/src/components/Solution/RuleSetter/baseRule.tsx +414 -414
  193. package/src/components/Solution/RuleSetter/function.ts +467 -467
  194. package/src/components/Solution/RuleSetter/index.less +221 -221
  195. package/src/components/Solution/RuleSetter/index.tsx +210 -210
  196. package/src/components/Solution/RuleSetter/service.js +276 -276
  197. package/src/index.ts +42 -42
  198. package/src/plugin/TableColumnSetting/index.less +247 -247
  199. package/src/plugin/TableColumnSetting/index.md +50 -50
  200. package/src/plugin/TableColumnSetting/index.tsx +725 -725
  201. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  202. package/src/styles/bsDefault.less +1933 -1933
  203. package/src/utils/CheckOneUser/index.md +39 -39
  204. package/src/utils/CheckOneUser/index.ts +51 -51
  205. package/src/utils/CustomLoginInfo.ts +55 -55
  206. package/src/utils/LocalstorageUtils.ts +134 -134
  207. package/src/utils/TableUtils.less +51 -51
  208. package/src/utils/TableUtils.tsx +691 -691
  209. package/src/utils/TreeUtils.ts +12 -12
  210. package/src/utils/auth.ts +38 -38
  211. package/src/utils/businessUtils.ts +434 -434
  212. package/src/utils/checkUtils.ts +39 -39
  213. package/src/utils/constant.ts +38 -38
  214. package/src/utils/enumConfig.ts +17 -17
  215. package/src/utils/getFormMode.js +12 -12
  216. package/src/utils/index.ts +21 -21
  217. package/src/utils/request.ts +53 -53
  218. package/src/utils/requestUtils.ts +197 -197
  219. package/src/utils/serialize.js +7 -7
  220. package/src/utils/utils.ts +266 -266
  221. package/src/utils/xlsxUtil.tsx +145 -145
  222. package/tsconfig.json +29 -29
  223. package/typings.d.ts +4 -4
@@ -1,210 +1,210 @@
1
- import React, {
2
- useEffect,
3
- useState,
4
- forwardRef,
5
- useImperativeHandle,
6
- useRef,
7
- } from 'react';
8
- import { Card } from 'antd';
9
- import BaseRule from './baseRule';
10
- import { request } from 'bssula';
11
- import {
12
- formatOperationList,
13
- formatRegularList,
14
- formatGroupOtherPriorityList,
15
- formatOtherPriorityList,
16
- } from './function';
17
-
18
- export default forwardRef((props: any, ref) => {
19
- const currentSceneId = props?.id || props?.sceneId; // 规则模板id
20
- const extStrField01 = props?.extStrField01; // 上层业务关键字段
21
- const instanceName = props?.name; // 实例名称
22
- const type = props?.type;
23
-
24
- const [datail, setDetail] = useState<any>({}); // 规则模板详情
25
- const [defRuleDetail, setDefRuleDetail] = useState<any>({}); // 规则设计器详情
26
- const [operationList, setOperationList] = useState<any>([]);
27
- const [regularDataList, setRegularDataList] = useState<any>([]);
28
- const [baseRuleDetailList, setBaseRuleDetailList] = useState<any>([]); // 规则实例详情集合
29
- const [systemVariableList, setSystemVariableList] = useState<any>([]);
30
- const [isGetDefRuleDataRes, setIsGetDefRuleDataRes] = useState(false); // 为了在回显的时候辨别异步查询是否已完成,防止提前认为为新增设置了模板数据,导致再渲染编辑时候 输入框defaultValue不再渲染问题
31
- const [isGetRuleDataRes, setIsGetRuleDataRes] = useState(false);
32
- const [groupOtherPriorityList, setGroupOtherPriorityList] = useState(false);
33
- const baseRuleRef = useRef();
34
-
35
- const currentSceneName = datail?.name || '';
36
-
37
- // 查询规则组下所有规则实例
38
- const loadGroupRule = (params: any) => {
39
- request({
40
- url: '/basic/ruleDetail/listNoPage',
41
- method: 'get',
42
- convertParams: () => {
43
- return params;
44
- },
45
- }).then((res: any) => {
46
- const handleRes = res && Array.isArray(res) ? res : [];
47
- // ①模板下所有实例 获取其他模板数据;②模板下部分实例 获取其他模板+此模板下另外一部分的实例数据
48
- const otherPriorityList = !!extStrField01
49
- ? formatOtherPriorityList(handleRes, currentSceneId, extStrField01)
50
- : formatGroupOtherPriorityList(handleRes, currentSceneId);
51
- setGroupOtherPriorityList(otherPriorityList);
52
- });
53
- };
54
-
55
- // 查询规则模板详情
56
- const loadDetail = (id: string) => {
57
- request({
58
- url: `/basic/ruleTemplate/${id}`,
59
- method: 'get',
60
- converter: (res: any) => {
61
- return res;
62
- },
63
- }).then((res: any) => {
64
- const handleRes = res?.data || {};
65
- setDetail(handleRes);
66
- if (type == 'instance') {
67
- const groupList = handleRes?.ruleList?.map((h: any) => h.id) || [];
68
- if (groupList?.length) {
69
- const groupId = groupList.join(',');
70
- loadGroupRule({
71
- 'qp-ruleId-in': groupId,
72
- 'qp-extStrField01-eq': extStrField01,
73
- });
74
- } else if (!!extStrField01) {
75
- // 兼容没有规则组的情况
76
- loadGroupRule({
77
- 'qp-templateId-eq': id,
78
- 'qp-extStrField01-eq': extStrField01,
79
- });
80
- }
81
- }
82
- });
83
- };
84
-
85
- // 查询规则对象树
86
- const loadSceneObjectTree = (id: string) => {
87
- request({
88
- url: '/basic/ruleObject/list/detail',
89
- method: 'get',
90
- convertParams: () => {
91
- return {
92
- 'qp-templateId-eq': id,
93
- };
94
- },
95
- }).then((res: any) => {
96
- const handleRes = res && Array.isArray(res) ? res : [];
97
- setRegularDataList(formatRegularList(handleRes));
98
- });
99
- };
100
-
101
- // 查询规则对象属性所有操作符类型
102
- const getDataTypeOperation = (id: string) => {
103
- request({
104
- url: '/basic/rule/dataType',
105
- method: 'get',
106
- convertParams: () => {
107
- return {
108
- templateId: id,
109
- };
110
- },
111
- }).then((res: any) => {
112
- const handleRes = res && Array.isArray(res) ? res : [];
113
- setOperationList(formatOperationList(handleRes));
114
- });
115
- };
116
-
117
- // 查询模板设计器详情
118
- const loadDefRuleData = (id: string) => {
119
- request({
120
- url: `/basic/ruleDefTemplate/one?ruleTemplateId=${id}`,
121
- method: 'get',
122
- }).then((res: any) => {
123
- if (res?.id) {
124
- setDefRuleDetail(res);
125
- }
126
- setIsGetDefRuleDataRes(true);
127
- });
128
- };
129
- // 查询某模板规则实例设置
130
- const loadRuleData = (id: string, extStr?: string) => {
131
- request({
132
- url: `/basic/ruleDetail/listNoPage`,
133
- method: 'get',
134
- convertParams: () => {
135
- return {
136
- 'qp-templateId-eq': id,
137
- 'qp-extStrField01-eq': extStr,
138
- };
139
- },
140
- }).then((res: any) => {
141
- if (Array.isArray(res)) {
142
- setBaseRuleDetailList(res);
143
- }
144
- setIsGetRuleDataRes(true);
145
- });
146
- };
147
-
148
- // 查询某模板规则变量
149
- const loadVariableData = (id: string) => {
150
- request({
151
- url: `/basic/ruleVariable/listNoPage?qp-templateId-eq=${id}`,
152
- method: 'get',
153
- converter: (res: any) => {
154
- return res;
155
- },
156
- }).then(({ response }: any) => {
157
- const data = response?.data || [];
158
- setSystemVariableList(data);
159
- });
160
- };
161
-
162
- useImperativeHandle(ref, () => ({
163
- // @ts-ignore
164
- handleSave: () => baseRuleRef.current.handleSave(),
165
- }));
166
-
167
- useEffect(() => {
168
- if (currentSceneId) {
169
- loadDetail(currentSceneId);
170
- loadSceneObjectTree(currentSceneId);
171
- getDataTypeOperation(currentSceneId);
172
- loadDefRuleData(currentSceneId);
173
- if (type == 'instance') {
174
- loadRuleData(currentSceneId, extStrField01);
175
- }
176
- loadVariableData(currentSceneId);
177
- }
178
- }, [currentSceneId]);
179
-
180
- return (
181
- <div>
182
- <Card bordered={false} bodyStyle={{ paddingTop: 0 }}>
183
- <BaseRule
184
- ref={baseRuleRef}
185
- customerValidator={props?.customerValidator}
186
- saveUrl={props?.saveUrl}
187
- scenceParams={{
188
- sceneId: currentSceneId,
189
- sceneName: currentSceneName,
190
- type,
191
- ruleGroupList: datail?.ruleList || [],
192
- isGetDefRuleDataRes: isGetDefRuleDataRes,
193
- isGetRuleDataRes: isGetRuleDataRes,
194
- groupOtherPriorityList: groupOtherPriorityList,
195
- extStrField01,
196
- instanceName,
197
- }}
198
- operationList={operationList}
199
- regularDataList={regularDataList}
200
- systemVariableList={systemVariableList}
201
- loadRuleData={loadRuleData}
202
- baseRuleDetailList={baseRuleDetailList}
203
- loadDefRuleData={loadDefRuleData}
204
- defRuleDetail={defRuleDetail}
205
- RuleObjectComponentProps={props?.RuleObjectComponentProps||{}}
206
- />
207
- </Card>
208
- </div>
209
- );
210
- });
1
+ import React, {
2
+ useEffect,
3
+ useState,
4
+ forwardRef,
5
+ useImperativeHandle,
6
+ useRef,
7
+ } from 'react';
8
+ import { Card } from 'antd';
9
+ import BaseRule from './baseRule';
10
+ import { request } from 'bssula';
11
+ import {
12
+ formatOperationList,
13
+ formatRegularList,
14
+ formatGroupOtherPriorityList,
15
+ formatOtherPriorityList,
16
+ } from './function';
17
+
18
+ export default forwardRef((props: any, ref) => {
19
+ const currentSceneId = props?.id || props?.sceneId; // 规则模板id
20
+ const extStrField01 = props?.extStrField01; // 上层业务关键字段
21
+ const instanceName = props?.name; // 实例名称
22
+ const type = props?.type;
23
+
24
+ const [datail, setDetail] = useState<any>({}); // 规则模板详情
25
+ const [defRuleDetail, setDefRuleDetail] = useState<any>({}); // 规则设计器详情
26
+ const [operationList, setOperationList] = useState<any>([]);
27
+ const [regularDataList, setRegularDataList] = useState<any>([]);
28
+ const [baseRuleDetailList, setBaseRuleDetailList] = useState<any>([]); // 规则实例详情集合
29
+ const [systemVariableList, setSystemVariableList] = useState<any>([]);
30
+ const [isGetDefRuleDataRes, setIsGetDefRuleDataRes] = useState(false); // 为了在回显的时候辨别异步查询是否已完成,防止提前认为为新增设置了模板数据,导致再渲染编辑时候 输入框defaultValue不再渲染问题
31
+ const [isGetRuleDataRes, setIsGetRuleDataRes] = useState(false);
32
+ const [groupOtherPriorityList, setGroupOtherPriorityList] = useState(false);
33
+ const baseRuleRef = useRef();
34
+
35
+ const currentSceneName = datail?.name || '';
36
+
37
+ // 查询规则组下所有规则实例
38
+ const loadGroupRule = (params: any) => {
39
+ request({
40
+ url: '/basic/ruleDetail/listNoPage',
41
+ method: 'get',
42
+ convertParams: () => {
43
+ return params;
44
+ },
45
+ }).then((res: any) => {
46
+ const handleRes = res && Array.isArray(res) ? res : [];
47
+ // ①模板下所有实例 获取其他模板数据;②模板下部分实例 获取其他模板+此模板下另外一部分的实例数据
48
+ const otherPriorityList = !!extStrField01
49
+ ? formatOtherPriorityList(handleRes, currentSceneId, extStrField01)
50
+ : formatGroupOtherPriorityList(handleRes, currentSceneId);
51
+ setGroupOtherPriorityList(otherPriorityList);
52
+ });
53
+ };
54
+
55
+ // 查询规则模板详情
56
+ const loadDetail = (id: string) => {
57
+ request({
58
+ url: `/basic/ruleTemplate/${id}`,
59
+ method: 'get',
60
+ converter: (res: any) => {
61
+ return res;
62
+ },
63
+ }).then((res: any) => {
64
+ const handleRes = res?.data || {};
65
+ setDetail(handleRes);
66
+ if (type == 'instance') {
67
+ const groupList = handleRes?.ruleList?.map((h: any) => h.id) || [];
68
+ if (groupList?.length) {
69
+ const groupId = groupList.join(',');
70
+ loadGroupRule({
71
+ 'qp-ruleId-in': groupId,
72
+ 'qp-extStrField01-eq': extStrField01,
73
+ });
74
+ } else if (!!extStrField01) {
75
+ // 兼容没有规则组的情况
76
+ loadGroupRule({
77
+ 'qp-templateId-eq': id,
78
+ 'qp-extStrField01-eq': extStrField01,
79
+ });
80
+ }
81
+ }
82
+ });
83
+ };
84
+
85
+ // 查询规则对象树
86
+ const loadSceneObjectTree = (id: string) => {
87
+ request({
88
+ url: '/basic/ruleObject/list/detail',
89
+ method: 'get',
90
+ convertParams: () => {
91
+ return {
92
+ 'qp-templateId-eq': id,
93
+ };
94
+ },
95
+ }).then((res: any) => {
96
+ const handleRes = res && Array.isArray(res) ? res : [];
97
+ setRegularDataList(formatRegularList(handleRes));
98
+ });
99
+ };
100
+
101
+ // 查询规则对象属性所有操作符类型
102
+ const getDataTypeOperation = (id: string) => {
103
+ request({
104
+ url: '/basic/rule/dataType',
105
+ method: 'get',
106
+ convertParams: () => {
107
+ return {
108
+ templateId: id,
109
+ };
110
+ },
111
+ }).then((res: any) => {
112
+ const handleRes = res && Array.isArray(res) ? res : [];
113
+ setOperationList(formatOperationList(handleRes));
114
+ });
115
+ };
116
+
117
+ // 查询模板设计器详情
118
+ const loadDefRuleData = (id: string) => {
119
+ request({
120
+ url: `/basic/ruleDefTemplate/one?ruleTemplateId=${id}`,
121
+ method: 'get',
122
+ }).then((res: any) => {
123
+ if (res?.id) {
124
+ setDefRuleDetail(res);
125
+ }
126
+ setIsGetDefRuleDataRes(true);
127
+ });
128
+ };
129
+ // 查询某模板规则实例设置
130
+ const loadRuleData = (id: string, extStr?: string) => {
131
+ request({
132
+ url: `/basic/ruleDetail/listNoPage`,
133
+ method: 'get',
134
+ convertParams: () => {
135
+ return {
136
+ 'qp-templateId-eq': id,
137
+ 'qp-extStrField01-eq': extStr,
138
+ };
139
+ },
140
+ }).then((res: any) => {
141
+ if (Array.isArray(res)) {
142
+ setBaseRuleDetailList(res);
143
+ }
144
+ setIsGetRuleDataRes(true);
145
+ });
146
+ };
147
+
148
+ // 查询某模板规则变量
149
+ const loadVariableData = (id: string) => {
150
+ request({
151
+ url: `/basic/ruleVariable/listNoPage?qp-templateId-eq=${id}`,
152
+ method: 'get',
153
+ converter: (res: any) => {
154
+ return res;
155
+ },
156
+ }).then(({ response }: any) => {
157
+ const data = response?.data || [];
158
+ setSystemVariableList(data);
159
+ });
160
+ };
161
+
162
+ useImperativeHandle(ref, () => ({
163
+ // @ts-ignore
164
+ handleSave: () => baseRuleRef.current.handleSave(),
165
+ }));
166
+
167
+ useEffect(() => {
168
+ if (currentSceneId) {
169
+ loadDetail(currentSceneId);
170
+ loadSceneObjectTree(currentSceneId);
171
+ getDataTypeOperation(currentSceneId);
172
+ loadDefRuleData(currentSceneId);
173
+ if (type == 'instance') {
174
+ loadRuleData(currentSceneId, extStrField01);
175
+ }
176
+ loadVariableData(currentSceneId);
177
+ }
178
+ }, [currentSceneId]);
179
+
180
+ return (
181
+ <div>
182
+ <Card bordered={false} bodyStyle={{ paddingTop: 0 }}>
183
+ <BaseRule
184
+ ref={baseRuleRef}
185
+ customerValidator={props?.customerValidator}
186
+ saveUrl={props?.saveUrl}
187
+ scenceParams={{
188
+ sceneId: currentSceneId,
189
+ sceneName: currentSceneName,
190
+ type,
191
+ ruleGroupList: datail?.ruleList || [],
192
+ isGetDefRuleDataRes: isGetDefRuleDataRes,
193
+ isGetRuleDataRes: isGetRuleDataRes,
194
+ groupOtherPriorityList: groupOtherPriorityList,
195
+ extStrField01,
196
+ instanceName,
197
+ }}
198
+ operationList={operationList}
199
+ regularDataList={regularDataList}
200
+ systemVariableList={systemVariableList}
201
+ loadRuleData={loadRuleData}
202
+ baseRuleDetailList={baseRuleDetailList}
203
+ loadDefRuleData={loadDefRuleData}
204
+ defRuleDetail={defRuleDetail}
205
+ RuleObjectComponentProps={props?.RuleObjectComponentProps||{}}
206
+ />
207
+ </Card>
208
+ </div>
209
+ );
210
+ });