@bit-sun/business-component 2.2.13 → 2.2.15

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 (181) 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/Business/AddSelectBusiness/index.d.ts +1 -0
  9. package/dist/components/Business/BsLayouts/utils.d.ts +0 -4
  10. package/dist/index.esm.js +329 -44
  11. package/dist/index.js +329 -43
  12. package/dist/utils/LocalstorageUtils.d.ts +9 -1
  13. package/dist/utils/index.d.ts +1 -0
  14. package/docs/index.md +21 -21
  15. package/lib/assets/drag.svg +17 -17
  16. package/lib/assets/exportFail.svg +37 -37
  17. package/lib/assets/exportProcessing.svg +28 -28
  18. package/lib/assets/exportSuccess.svg +34 -34
  19. package/lib/assets/label_icon_bottom.svg +25 -25
  20. package/lib/assets/upExport.svg +22 -22
  21. package/package.json +77 -77
  22. package/src/assets/32.svg +27 -27
  23. package/src/assets/addIcon.svg +17 -17
  24. package/src/assets/allfunc.svg +27 -27
  25. package/src/assets/arrowRight.svg +24 -24
  26. package/src/assets/btn-delete.svg +29 -29
  27. package/src/assets/btn-edit.svg +19 -19
  28. package/src/assets/btn-more.svg +17 -17
  29. package/src/assets/btn-submit.svg +19 -19
  30. package/src/assets/caidan.svg +11 -11
  31. package/src/assets/close.svg +26 -26
  32. package/src/assets/drag.svg +17 -17
  33. package/src/assets/exportFail.svg +37 -37
  34. package/src/assets/exportProcessing.svg +28 -28
  35. package/src/assets/exportSuccess.svg +34 -34
  36. package/src/assets/fixed-left-active.svg +11 -11
  37. package/src/assets/fixed-left.svg +15 -15
  38. package/src/assets/fixed-right-active.svg +11 -11
  39. package/src/assets/fixed-right.svg +15 -15
  40. package/src/assets/guanbi.svg +15 -15
  41. package/src/assets/icon-quanping.svg +15 -15
  42. package/src/assets/icon-shezhi.svg +17 -17
  43. package/src/assets/label_icon_bottom.svg +25 -25
  44. package/src/assets/list-no-img.svg +21 -21
  45. package/src/assets/morentouxiang-32.svg +23 -23
  46. package/src/assets/scanning.svg +24 -24
  47. package/src/assets/upExport.svg +22 -22
  48. package/src/components/Business/AddSelectBusiness/index.md +129 -93
  49. package/src/components/Business/AddSelectBusiness/index.tsx +835 -601
  50. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  51. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  52. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  62. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  63. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  64. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  65. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  66. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -156
  67. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  68. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  69. package/src/components/Business/BsLayouts/index.less +79 -79
  70. package/src/components/Business/BsLayouts/index.tsx +1479 -1479
  71. package/src/components/Business/BsLayouts/service.ts +10 -10
  72. package/src/components/Business/BsLayouts/utils.tsx +203 -226
  73. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +538 -538
  74. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  75. package/src/components/Business/BsSulaQueryTable/index.tsx +527 -527
  76. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  77. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  78. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  79. package/src/components/Business/CommodityEntry/index.md +70 -70
  80. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  81. package/src/components/Business/CommonAlert/index.tsx +23 -23
  82. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  83. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  84. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  85. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  86. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  87. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  88. package/src/components/Business/HomePageWrapper/index.less +33 -33
  89. package/src/components/Business/HomePageWrapper/index.md +45 -45
  90. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  91. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  92. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  93. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  94. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  95. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  96. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  97. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  98. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  99. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  100. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  101. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  102. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  103. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  104. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  105. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  106. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  107. package/src/components/Business/JsonQueryTable/index.less +16 -16
  108. package/src/components/Business/JsonQueryTable/index.md +328 -328
  109. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  110. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  111. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  112. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  113. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  114. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  115. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  116. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  117. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  118. package/src/components/Business/JsonQueryTable/static.ts +356 -356
  119. package/src/components/Business/SearchSelect/BusinessUtils.ts +1723 -1723
  120. package/src/components/Business/SearchSelect/common.ts +53 -53
  121. package/src/components/Business/SearchSelect/index.md +1310 -1310
  122. package/src/components/Business/SearchSelect/index.tsx +51 -51
  123. package/src/components/Business/SearchSelect/utils.ts +100 -100
  124. package/src/components/Business/StateFlow/index.less +130 -130
  125. package/src/components/Business/StateFlow/index.md +60 -60
  126. package/src/components/Business/StateFlow/index.tsx +29 -29
  127. package/src/components/Business/TreeSearchSelect/index.md +126 -126
  128. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  129. package/src/components/Business/TreeSearchSelect/utils.ts +60 -60
  130. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  131. package/src/components/Business/columnSettingTable/index.less +247 -247
  132. package/src/components/Business/columnSettingTable/index.md +357 -357
  133. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  134. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  135. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  136. package/src/components/Business/moreTreeTable/index.less +99 -99
  137. package/src/components/Business/moreTreeTable/index.md +508 -508
  138. package/src/components/Business/moreTreeTable/index.tsx +315 -315
  139. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  140. package/src/components/Functional/AddSelect/index.less +367 -367
  141. package/src/components/Functional/AddSelect/index.md +155 -155
  142. package/src/components/Functional/AddSelect/index.tsx +1199 -1165
  143. package/src/components/Functional/BillEntry/index.less +371 -371
  144. package/src/components/Functional/BillEntry/index.md +39 -39
  145. package/src/components/Functional/BillEntry/index.tsx +766 -766
  146. package/src/components/Functional/DataImport/index.less +63 -63
  147. package/src/components/Functional/DataImport/index.md +44 -44
  148. package/src/components/Functional/DataImport/index.tsx +695 -695
  149. package/src/components/Functional/DataValidation/index.less +63 -63
  150. package/src/components/Functional/DataValidation/index.md +39 -39
  151. package/src/components/Functional/DataValidation/index.tsx +687 -687
  152. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  153. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  154. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  155. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  156. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  157. package/src/components/Functional/SearchSelect/index.less +115 -115
  158. package/src/components/Functional/SearchSelect/index.md +141 -141
  159. package/src/components/Functional/SearchSelect/index.tsx +813 -813
  160. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  161. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  162. package/src/components/Functional/TreeSearchSelect/index.tsx +160 -160
  163. package/src/index.ts +34 -34
  164. package/src/plugin/TableColumnSetting/index.less +247 -247
  165. package/src/plugin/TableColumnSetting/index.md +50 -50
  166. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  167. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  168. package/src/styles/bsDefault.less +1912 -1912
  169. package/src/utils/CheckOneUser/index.md +39 -39
  170. package/src/utils/CheckOneUser/index.ts +51 -51
  171. package/src/utils/LocalstorageUtils.ts +90 -58
  172. package/src/utils/TableUtils.tsx +18 -18
  173. package/src/utils/checkUtils.ts +39 -39
  174. package/src/utils/enumConfig.ts +11 -11
  175. package/src/utils/getFormMode.js +12 -12
  176. package/src/utils/index.ts +3 -2
  177. package/src/utils/requestUtils.ts +34 -36
  178. package/src/utils/serialize.js +7 -7
  179. package/src/utils/utils.ts +183 -183
  180. package/tsconfig.json +29 -29
  181. package/typings.d.ts +4 -4
@@ -1,320 +1,320 @@
1
- // @ts-nocheck
2
- import React, { useState, useRef, useEffect } from 'react';
3
- import { message, Button, Table } from 'antd';
4
- import Drawer from './drawer';
5
- import ConfigButton from './configButton';
6
- import Editor from './jsonEditor';
7
- import axios from 'axios';
8
- import FieldsSettingsTable from './components/FieldsSettingsTable';
9
- import { isEmpty } from "lodash"
10
- import './index.less';
11
-
12
- function iterFileds (fields) {
13
- let filedsValue = [];
14
-
15
- function iter(field) {
16
- if(Array.isArray(field.fields)) {
17
- field.fields.forEach(item => {
18
- const targetValue = iterFileds(item);
19
- if(targetValue){
20
- filedsValue.push(targetValue);
21
- }
22
- })
23
- } else {
24
- return {
25
- name: field.name,
26
- isStaticCode: true,
27
- label: field.label,
28
- }
29
- }
30
-
31
- return {
32
- container: {
33
- name: field?.container?.props?.name,
34
- title: field?.container?.props?.title
35
- },
36
- isStaticCode: true,
37
- fields: filedsValue,
38
- };
39
- }
40
-
41
- filedsValue = iter(fields)
42
-
43
- return filedsValue;
44
- }
45
-
46
- function flatFileds (fields) {
47
- let filedsValue = {
48
- };
49
- function iter(field, containerName) {
50
- if(Array.isArray(field.fields)) {
51
- if (field?.container?.props?.name) {
52
- filedsValue[field?.container?.props?.name] = {
53
- ...field,
54
- fields: []
55
- }
56
- }
57
- field.fields.forEach(item => {
58
- iter(item, field?.container?.props?.name)
59
- })
60
- } else {
61
- filedsValue[containerName ? (containerName + field.name) : field.name] = field
62
- }
63
- }
64
-
65
- iter(fields)
66
-
67
- return filedsValue;
68
- }
69
-
70
- function convertFileds (fields, falltValue, faltFieldRange, containerName) {
71
- let filedsValue = [];
72
-
73
- function iter(field) {
74
- if(Array.isArray(field.fields)) {
75
- field.fields.forEach(item => {
76
- const targetValue = convertFileds(item, falltValue, faltFieldRange, field?.container?.name);
77
- if(targetValue){
78
- filedsValue.push(targetValue)
79
- }
80
- })
81
- } else {
82
- const returnField = field.isStaticCode ? falltValue[containerName ? (containerName + field.name) : field.name] : faltFieldRange[field.name];
83
- if (returnField) {
84
- returnField.label = field?.label;
85
- if(Array.isArray(returnField.name)&&returnField.name?.includes("extensionFields")){
86
- returnField.notShowLabel = true;
87
- }
88
- } else {
89
- debugger
90
- }
91
- return returnField;
92
- }
93
-
94
- return {...falltValue[field?.container?.name], fields: filedsValue};
95
- }
96
-
97
- filedsValue = iter(fields)
98
-
99
- return filedsValue;
100
- }
101
-
102
- function faltColumns(columns) {
103
- let columnsValue = {}
104
-
105
- columns.forEach(item => {
106
- columnsValue[item.key] = {...item}
107
- })
108
-
109
- return columnsValue;
110
- }
111
-
112
- function faltCustomerFieldRange(fileds) {
113
- let columnsValue = {}
114
-
115
- fileds.forEach(item => {
116
- columnsValue[item.name] = {...item}
117
- })
118
-
119
- return columnsValue;
120
- }
121
-
122
- function hanleCallbackValue(codeProps, value, customerFields) {
123
- const faltFieldRange = faltCustomerFieldRange(customerFields)
124
- const falltValue = flatFileds({fields: codeProps.fields})
125
- let newCodeProps = {...codeProps};
126
- newCodeProps.fields = convertFileds({fields: value.fields}, falltValue, faltFieldRange).fields;
127
- if (codeProps.columns) {
128
- const faltColumnsValue = faltColumns(codeProps.columns)
129
- newCodeProps.columns = value.columns.map(item => {
130
- if (item.isStaticCode) {
131
- return faltColumnsValue[item.key]
132
- } else {
133
- //自定义字段-列字段
134
- if(item?.key&&item?.key.includes('extensionFields')&&item?.key.includes(',')){
135
- return {
136
- ...item,
137
- render: ({ record }: any) => {
138
- try{
139
- const lastName1= item?.key.split(',')[1]; //兼容没有fieldName的情况
140
- const lastName2 = `${lastName1}Name`;
141
- const target = record?.extensionFields || {};
142
- return target[lastName2] || target[lastName1] || '';
143
- }catch(e){
144
- console.log('e',e);
145
- }
146
- }
147
- }
148
- }else{
149
- return {
150
- ...item
151
- }
152
- }
153
- }
154
- });
155
-
156
- //进行列表搜索项自定义字段name替换 (排除是编辑表单的fields)
157
- newCodeProps.fields = newCodeProps.fields.map(item => {
158
- if(Array.isArray(item?.name)){
159
- return {
160
- ...item,
161
- name: item?.realSearchName || item?.name
162
- }
163
- }
164
- return item;
165
- });
166
-
167
- }
168
-
169
- return newCodeProps;
170
- }
171
-
172
- function isAdmin() {
173
- const username = JSON.parse(localStorage.getItem('userInfo') || '{}')
174
- ?.accountPersonDetail?.username;
175
-
176
- return username === 'admin' || username === 'uiuiui'
177
- }
178
-
179
- const tableStyleList = [
180
- {
181
- type: '快速搜索',
182
- img: 'https://img.alicdn.com/tfs/TB1al1JqHr1gK0jSZR0XXbP8XXa-40-40.svg',
183
- url: '/list/singlesearch',
184
- },
185
- {
186
- type: '高级搜索',
187
- img: 'https://img.alicdn.com/tfs/TB1QgKIqQL0gK0jSZFtXXXQCXXa-40-40.svg',
188
- url: '/list/advancedsearch',
189
- },
190
- {
191
- type: '一般搜索',
192
- img: 'https://img.alicdn.com/tfs/TB1xHCPqRr0gK0jSZFnXXbRRXXa-40-40.svg',
193
- url: '/list/basic',
194
- },
195
- {
196
- type: '无分页表格',
197
- img: 'https://img.alicdn.com/tfs/TB1txuMqQL0gK0jSZFxXXXWHVXa-40-40.svg',
198
- url: '/list/nopagination',
199
- },
200
- {
201
- type: '分步查询表格',
202
- img: 'https://img.alicdn.com/tfs/TB10IOmGkL0gK0jSZFAXXcA9pXa-53-46.svg',
203
- url: '/list/stepquerytable',
204
- },
205
- ];
206
- const JsonQueryTable = React.memo(props => {
207
- const {
208
- callBack,
209
- codeProps,
210
- customerFields,
211
- initialSetting,
212
- pageType
213
- } = props;
214
-
215
- let codeFilter = {};
216
- if (codeProps.columns) { // table
217
- codeFilter.columns = codeProps.columns.map(item => ({
218
- key: item.key,
219
- isStaticCode: true,
220
- title: item.title
221
- }))
222
-
223
- codeFilter.fields = codeProps.fields.map(item => ({
224
- name: item.name,
225
- isStaticCode: true,
226
- label: item.label,
227
- notShowLabel: item.notShowLabel || false
228
- }))
229
- } else {
230
- codeFilter.fields = iterFileds({fields: codeProps.fields}).fields
231
- }
232
- console.log('codeFilter',codeFilter)
233
-
234
- const styleRef = useRef(null);
235
-
236
- const [visible, setVisible] = useState(false)
237
- const [code, setCode] = useState(codeProps);
238
- const [init, setInit] = useState(true);
239
- const [jsonEditorVal, setJsonEditorVal] = useState(initialSetting || codeFilter);
240
- const [moduleParams, setModuleParams] = useState({});
241
-
242
- useEffect(()=>{
243
- Promise.all([
244
- axios.get(`/basic/flow/businessFieldGroup/one?moduleType=2&layoutPoint=${pageType}`),
245
- ]).then(([res] )=> {
246
- const { code, data } = res?.data || {};
247
- if (code === '000000') {
248
- if(data){
249
- const { businessType, code:fieldGroup, moduleType, moduleRelationId } = data;
250
- setModuleParams({
251
- businessType,
252
- fieldGroup,
253
- moduleType,
254
- moduleRelationId
255
- });
256
- }
257
- }
258
- })
259
- },[]);
260
-
261
- const onClickRun = (value, isSave) => {
262
- setJsonEditorVal(value);
263
-
264
- try {
265
- setCode(value);
266
- callBack(hanleCallbackValue(codeProps, value, customerFields), isSave, value);
267
- } catch (e) {
268
- message.error(e);
269
- }
270
- };
271
-
272
- React.useEffect(() => {
273
- localStorage.setItem('jsonEditorVal',JSON.stringify(jsonEditorVal||{}))
274
- }, [jsonEditorVal]);
275
-
276
- React.useEffect(() => {
277
- if (initialSetting) {
278
- onClickRun(initialSetting);
279
- setJsonEditorVal(initialSetting)
280
- }
281
- }, [initialSetting]);
282
-
283
- const height =
284
- styleRef?.current?.clientHeight || styleRef?.current?.offsetHeight;
285
-
286
- const tableParams = {
287
- ...moduleParams,
288
- jsonEditorVal,
289
- codeProps,
290
- };
291
-
292
- return (
293
- <div>
294
- <Drawer visible={visible} width={800} onClose={() => setVisible(false)} className={'customFieldsDrawer'}>
295
- <div ref={styleRef}>
296
-
297
- </div>
298
- {
299
- isEmpty(moduleParams)?(
300
- <div style={{padding:"10px 0", fontSize:"16px", fontWeight:"bolder"}}>
301
- 提示:业务对象未维护,请在通用单据对应业务类型下维护业务对象
302
- </div>
303
- ):(
304
- <FieldsSettingsTable {...tableParams}/>
305
- )
306
- }
307
- <Editor
308
- type="table"
309
- onRun={onClickRun}
310
- value={jsonEditorVal}
311
- shallowHeight={height}
312
- />
313
- </Drawer>
314
-
315
- {!visible && isAdmin() && <ConfigButton type='primary' onClick={() => setVisible(true)}>setting</ConfigButton>}
316
- </div>
317
- );
318
- });
319
-
320
- export default JsonQueryTable;
1
+ // @ts-nocheck
2
+ import React, { useState, useRef, useEffect } from 'react';
3
+ import { message, Button, Table } from 'antd';
4
+ import Drawer from './drawer';
5
+ import ConfigButton from './configButton';
6
+ import Editor from './jsonEditor';
7
+ import axios from 'axios';
8
+ import FieldsSettingsTable from './components/FieldsSettingsTable';
9
+ import { isEmpty } from "lodash"
10
+ import './index.less';
11
+ import { getUserId } from '@/utils/LocalstorageUtils';
12
+
13
+ function iterFileds (fields) {
14
+ let filedsValue = [];
15
+
16
+ function iter(field) {
17
+ if(Array.isArray(field.fields)) {
18
+ field.fields.forEach(item => {
19
+ const targetValue = iterFileds(item);
20
+ if(targetValue){
21
+ filedsValue.push(targetValue);
22
+ }
23
+ })
24
+ } else {
25
+ return {
26
+ name: field.name,
27
+ isStaticCode: true,
28
+ label: field.label,
29
+ }
30
+ }
31
+
32
+ return {
33
+ container: {
34
+ name: field?.container?.props?.name,
35
+ title: field?.container?.props?.title
36
+ },
37
+ isStaticCode: true,
38
+ fields: filedsValue,
39
+ };
40
+ }
41
+
42
+ filedsValue = iter(fields)
43
+
44
+ return filedsValue;
45
+ }
46
+
47
+ function flatFileds (fields) {
48
+ let filedsValue = {
49
+ };
50
+ function iter(field, containerName) {
51
+ if(Array.isArray(field.fields)) {
52
+ if (field?.container?.props?.name) {
53
+ filedsValue[field?.container?.props?.name] = {
54
+ ...field,
55
+ fields: []
56
+ }
57
+ }
58
+ field.fields.forEach(item => {
59
+ iter(item, field?.container?.props?.name)
60
+ })
61
+ } else {
62
+ filedsValue[containerName ? (containerName + field.name) : field.name] = field
63
+ }
64
+ }
65
+
66
+ iter(fields)
67
+
68
+ return filedsValue;
69
+ }
70
+
71
+ function convertFileds (fields, falltValue, faltFieldRange, containerName) {
72
+ let filedsValue = [];
73
+
74
+ function iter(field) {
75
+ if(Array.isArray(field.fields)) {
76
+ field.fields.forEach(item => {
77
+ const targetValue = convertFileds(item, falltValue, faltFieldRange, field?.container?.name);
78
+ if(targetValue){
79
+ filedsValue.push(targetValue)
80
+ }
81
+ })
82
+ } else {
83
+ const returnField = field.isStaticCode ? falltValue[containerName ? (containerName + field.name) : field.name] : faltFieldRange[field.name];
84
+ if (returnField) {
85
+ returnField.label = field?.label;
86
+ if(Array.isArray(returnField.name)&&returnField.name?.includes("extensionFields")){
87
+ returnField.notShowLabel = true;
88
+ }
89
+ } else {
90
+ debugger
91
+ }
92
+ return returnField;
93
+ }
94
+
95
+ return {...falltValue[field?.container?.name], fields: filedsValue};
96
+ }
97
+
98
+ filedsValue = iter(fields)
99
+
100
+ return filedsValue;
101
+ }
102
+
103
+ function faltColumns(columns) {
104
+ let columnsValue = {}
105
+
106
+ columns.forEach(item => {
107
+ columnsValue[item.key] = {...item}
108
+ })
109
+
110
+ return columnsValue;
111
+ }
112
+
113
+ function faltCustomerFieldRange(fileds) {
114
+ let columnsValue = {}
115
+
116
+ fileds.forEach(item => {
117
+ columnsValue[item.name] = {...item}
118
+ })
119
+
120
+ return columnsValue;
121
+ }
122
+
123
+ function hanleCallbackValue(codeProps, value, customerFields) {
124
+ const faltFieldRange = faltCustomerFieldRange(customerFields)
125
+ const falltValue = flatFileds({fields: codeProps.fields})
126
+ let newCodeProps = {...codeProps};
127
+ newCodeProps.fields = convertFileds({fields: value.fields}, falltValue, faltFieldRange).fields;
128
+ if (codeProps.columns) {
129
+ const faltColumnsValue = faltColumns(codeProps.columns)
130
+ newCodeProps.columns = value.columns.map(item => {
131
+ if (item.isStaticCode) {
132
+ return faltColumnsValue[item.key]
133
+ } else {
134
+ //自定义字段-列字段
135
+ if(item?.key&&item?.key.includes('extensionFields')&&item?.key.includes(',')){
136
+ return {
137
+ ...item,
138
+ render: ({ record }: any) => {
139
+ try{
140
+ const lastName1= item?.key.split(',')[1]; //兼容没有fieldName的情况
141
+ const lastName2 = `${lastName1}Name`;
142
+ const target = record?.extensionFields || {};
143
+ return target[lastName2] || target[lastName1] || '';
144
+ }catch(e){
145
+ console.log('e',e);
146
+ }
147
+ }
148
+ }
149
+ }else{
150
+ return {
151
+ ...item
152
+ }
153
+ }
154
+ }
155
+ });
156
+
157
+ //进行列表搜索项自定义字段name替换 (排除是编辑表单的fields
158
+ newCodeProps.fields = newCodeProps.fields.map(item => {
159
+ if(Array.isArray(item?.name)){
160
+ return {
161
+ ...item,
162
+ name: item?.realSearchName || item?.name
163
+ }
164
+ }
165
+ return item;
166
+ });
167
+
168
+ }
169
+
170
+ return newCodeProps;
171
+ }
172
+
173
+ function isAdmin() {
174
+ const username = getUserId();
175
+
176
+ return username === 'admin' || username === 'uiuiui'
177
+ }
178
+
179
+ const tableStyleList = [
180
+ {
181
+ type: '快速搜索',
182
+ img: 'https://img.alicdn.com/tfs/TB1al1JqHr1gK0jSZR0XXbP8XXa-40-40.svg',
183
+ url: '/list/singlesearch',
184
+ },
185
+ {
186
+ type: '高级搜索',
187
+ img: 'https://img.alicdn.com/tfs/TB1QgKIqQL0gK0jSZFtXXXQCXXa-40-40.svg',
188
+ url: '/list/advancedsearch',
189
+ },
190
+ {
191
+ type: '一般搜索',
192
+ img: 'https://img.alicdn.com/tfs/TB1xHCPqRr0gK0jSZFnXXbRRXXa-40-40.svg',
193
+ url: '/list/basic',
194
+ },
195
+ {
196
+ type: '无分页表格',
197
+ img: 'https://img.alicdn.com/tfs/TB1txuMqQL0gK0jSZFxXXXWHVXa-40-40.svg',
198
+ url: '/list/nopagination',
199
+ },
200
+ {
201
+ type: '分步查询表格',
202
+ img: 'https://img.alicdn.com/tfs/TB10IOmGkL0gK0jSZFAXXcA9pXa-53-46.svg',
203
+ url: '/list/stepquerytable',
204
+ },
205
+ ];
206
+ const JsonQueryTable = React.memo(props => {
207
+ const {
208
+ callBack,
209
+ codeProps,
210
+ customerFields,
211
+ initialSetting,
212
+ pageType
213
+ } = props;
214
+
215
+ let codeFilter = {};
216
+ if (codeProps.columns) { // table
217
+ codeFilter.columns = codeProps.columns.map(item => ({
218
+ key: item.key,
219
+ isStaticCode: true,
220
+ title: item.title
221
+ }))
222
+
223
+ codeFilter.fields = codeProps.fields.map(item => ({
224
+ name: item.name,
225
+ isStaticCode: true,
226
+ label: item.label,
227
+ notShowLabel: item.notShowLabel || false
228
+ }))
229
+ } else {
230
+ codeFilter.fields = iterFileds({fields: codeProps.fields}).fields
231
+ }
232
+ console.log('codeFilter',codeFilter)
233
+
234
+ const styleRef = useRef(null);
235
+
236
+ const [visible, setVisible] = useState(false)
237
+ const [code, setCode] = useState(codeProps);
238
+ const [init, setInit] = useState(true);
239
+ const [jsonEditorVal, setJsonEditorVal] = useState(initialSetting || codeFilter);
240
+ const [moduleParams, setModuleParams] = useState({});
241
+
242
+ useEffect(()=>{
243
+ Promise.all([
244
+ axios.get(`/basic/flow/businessFieldGroup/one?moduleType=2&layoutPoint=${pageType}`),
245
+ ]).then(([res] )=> {
246
+ const { code, data } = res?.data || {};
247
+ if (code === '000000') {
248
+ if(data){
249
+ const { businessType, code:fieldGroup, moduleType, moduleRelationId } = data;
250
+ setModuleParams({
251
+ businessType,
252
+ fieldGroup,
253
+ moduleType,
254
+ moduleRelationId
255
+ });
256
+ }
257
+ }
258
+ })
259
+ },[]);
260
+
261
+ const onClickRun = (value, isSave) => {
262
+ setJsonEditorVal(value);
263
+
264
+ try {
265
+ setCode(value);
266
+ callBack(hanleCallbackValue(codeProps, value, customerFields), isSave, value);
267
+ } catch (e) {
268
+ message.error(e);
269
+ }
270
+ };
271
+
272
+ React.useEffect(() => {
273
+ localStorage.setItem('jsonEditorVal',JSON.stringify(jsonEditorVal||{}))
274
+ }, [jsonEditorVal]);
275
+
276
+ React.useEffect(() => {
277
+ if (initialSetting) {
278
+ onClickRun(initialSetting);
279
+ setJsonEditorVal(initialSetting)
280
+ }
281
+ }, [initialSetting]);
282
+
283
+ const height =
284
+ styleRef?.current?.clientHeight || styleRef?.current?.offsetHeight;
285
+
286
+ const tableParams = {
287
+ ...moduleParams,
288
+ jsonEditorVal,
289
+ codeProps,
290
+ };
291
+
292
+ return (
293
+ <div>
294
+ <Drawer visible={visible} width={800} onClose={() => setVisible(false)} className={'customFieldsDrawer'}>
295
+ <div ref={styleRef}>
296
+
297
+ </div>
298
+ {
299
+ isEmpty(moduleParams)?(
300
+ <div style={{padding:"10px 0", fontSize:"16px", fontWeight:"bolder"}}>
301
+ 提示:业务对象未维护,请在通用单据对应业务类型下维护业务对象
302
+ </div>
303
+ ):(
304
+ <FieldsSettingsTable {...tableParams}/>
305
+ )
306
+ }
307
+ <Editor
308
+ type="table"
309
+ onRun={onClickRun}
310
+ value={jsonEditorVal}
311
+ shallowHeight={height}
312
+ />
313
+ </Drawer>
314
+
315
+ {!visible && isAdmin() && <ConfigButton type='primary' onClick={() => setVisible(true)}>setting</ConfigButton>}
316
+ </div>
317
+ );
318
+ });
319
+
320
+ export default JsonQueryTable;