@bit-sun/business-component 2.2.36 → 2.2.38

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 (190) 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/BsLayouts/Components/AllFunc/drawContent.d.ts +1 -1
  9. package/dist/components/Business/BsLayouts/Components/AllFunc/index.d.ts +1 -1
  10. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.d.ts +1 -1
  11. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +1 -1
  12. package/dist/components/Business/BsLayouts/Components/RightContent/index.d.ts +2 -2
  13. package/dist/components/Business/BsLayouts/Components/SearchFunc/index.d.ts +2 -2
  14. package/dist/components/Business/BsLayouts/index.d.ts +2 -2
  15. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +2 -2
  16. package/dist/components/Business/SearchSelect/index.d.ts +1 -1
  17. package/dist/components/Functional/SearchSelect/index.d.ts +1 -1
  18. package/dist/index.esm.js +653 -642
  19. package/dist/index.js +653 -642
  20. package/dist/utils/TableUtils.d.ts +2 -2
  21. package/dist/utils/utils.d.ts +1 -1
  22. package/docs/index.md +21 -21
  23. package/lib/assets/drag.svg +17 -17
  24. package/lib/assets/exportFail.svg +37 -37
  25. package/lib/assets/exportProcessing.svg +28 -28
  26. package/lib/assets/exportSuccess.svg +34 -34
  27. package/lib/assets/label_icon_bottom.svg +25 -25
  28. package/lib/assets/upExport.svg +22 -22
  29. package/package.json +77 -77
  30. package/src/assets/32.svg +27 -27
  31. package/src/assets/addIcon.svg +17 -17
  32. package/src/assets/allfunc.svg +27 -27
  33. package/src/assets/arrowRight.svg +24 -24
  34. package/src/assets/btn-delete.svg +29 -29
  35. package/src/assets/btn-edit.svg +19 -19
  36. package/src/assets/btn-more.svg +17 -17
  37. package/src/assets/btn-submit.svg +19 -19
  38. package/src/assets/caidan.svg +11 -11
  39. package/src/assets/close.svg +26 -26
  40. package/src/assets/drag.svg +17 -17
  41. package/src/assets/exportFail.svg +37 -37
  42. package/src/assets/exportProcessing.svg +28 -28
  43. package/src/assets/exportSuccess.svg +34 -34
  44. package/src/assets/fixed-left-active.svg +11 -11
  45. package/src/assets/fixed-left.svg +15 -15
  46. package/src/assets/fixed-right-active.svg +11 -11
  47. package/src/assets/fixed-right.svg +15 -15
  48. package/src/assets/guanbi.svg +15 -15
  49. package/src/assets/icon-quanping.svg +15 -15
  50. package/src/assets/icon-shezhi.svg +17 -17
  51. package/src/assets/label_icon_bottom.svg +25 -25
  52. package/src/assets/list-no-img.svg +21 -21
  53. package/src/assets/morentouxiang-32.svg +23 -23
  54. package/src/assets/scanning.svg +24 -24
  55. package/src/assets/upExport.svg +22 -22
  56. package/src/components/Business/AddSelectBusiness/index.md +161 -161
  57. package/src/components/Business/AddSelectBusiness/index.tsx +861 -861
  58. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  59. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  60. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  63. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  64. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  65. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  66. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  67. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  68. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  69. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  70. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  71. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  72. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  73. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  74. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  75. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  76. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  77. package/src/components/Business/BsLayouts/index.less +79 -79
  78. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  79. package/src/components/Business/BsLayouts/service.ts +10 -10
  80. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  81. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +538 -538
  82. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  83. package/src/components/Business/BsSulaQueryTable/index.tsx +527 -527
  84. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  85. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  86. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  87. package/src/components/Business/CommodityEntry/index.md +70 -70
  88. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  89. package/src/components/Business/CommonAlert/index.tsx +23 -23
  90. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  91. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  92. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  93. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  94. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  95. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  96. package/src/components/Business/HomePageWrapper/index.less +33 -33
  97. package/src/components/Business/HomePageWrapper/index.md +45 -45
  98. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  99. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  100. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  101. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  102. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  103. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  104. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  105. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  106. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  107. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  108. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  109. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  110. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  111. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  112. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  113. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  114. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  115. package/src/components/Business/JsonQueryTable/index.less +16 -16
  116. package/src/components/Business/JsonQueryTable/index.md +328 -328
  117. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  118. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  119. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  120. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  121. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  122. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  123. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  124. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  125. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  126. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  127. package/src/components/Business/SearchSelect/BusinessUtils.ts +1732 -1731
  128. package/src/components/Business/SearchSelect/common.ts +53 -53
  129. package/src/components/Business/SearchSelect/index.md +1319 -1319
  130. package/src/components/Business/SearchSelect/index.tsx +51 -51
  131. package/src/components/Business/SearchSelect/utils.ts +100 -100
  132. package/src/components/Business/StateFlow/index.less +130 -130
  133. package/src/components/Business/StateFlow/index.md +60 -60
  134. package/src/components/Business/StateFlow/index.tsx +29 -29
  135. package/src/components/Business/TreeSearchSelect/index.md +154 -154
  136. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  137. package/src/components/Business/TreeSearchSelect/utils.ts +69 -69
  138. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  139. package/src/components/Business/columnSettingTable/index.less +247 -247
  140. package/src/components/Business/columnSettingTable/index.md +357 -357
  141. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  142. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  143. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  144. package/src/components/Business/moreTreeTable/index.less +99 -99
  145. package/src/components/Business/moreTreeTable/index.md +448 -448
  146. package/src/components/Business/moreTreeTable/index.tsx +368 -365
  147. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  148. package/src/components/Functional/AddSelect/helps.ts +14 -14
  149. package/src/components/Functional/AddSelect/index.less +367 -367
  150. package/src/components/Functional/AddSelect/index.md +155 -155
  151. package/src/components/Functional/AddSelect/index.tsx +1279 -1279
  152. package/src/components/Functional/BillEntry/index.less +371 -371
  153. package/src/components/Functional/BillEntry/index.md +39 -39
  154. package/src/components/Functional/BillEntry/index.tsx +772 -772
  155. package/src/components/Functional/DataImport/index.less +63 -63
  156. package/src/components/Functional/DataImport/index.md +44 -44
  157. package/src/components/Functional/DataImport/index.tsx +695 -695
  158. package/src/components/Functional/DataValidation/index.less +63 -63
  159. package/src/components/Functional/DataValidation/index.md +39 -39
  160. package/src/components/Functional/DataValidation/index.tsx +687 -687
  161. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  162. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  163. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  164. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  165. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  166. package/src/components/Functional/SearchSelect/index.less +115 -115
  167. package/src/components/Functional/SearchSelect/index.md +141 -141
  168. package/src/components/Functional/SearchSelect/index.tsx +849 -849
  169. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  170. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  171. package/src/components/Functional/TreeSearchSelect/index.tsx +162 -162
  172. package/src/index.ts +34 -34
  173. package/src/plugin/TableColumnSetting/index.less +247 -247
  174. package/src/plugin/TableColumnSetting/index.md +50 -50
  175. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  176. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  177. package/src/styles/bsDefault.less +1912 -1912
  178. package/src/utils/CheckOneUser/index.md +39 -39
  179. package/src/utils/CheckOneUser/index.ts +51 -51
  180. package/src/utils/LocalstorageUtils.ts +90 -90
  181. package/src/utils/TableUtils.tsx +18 -18
  182. package/src/utils/checkUtils.ts +39 -39
  183. package/src/utils/enumConfig.ts +11 -11
  184. package/src/utils/getFormMode.js +12 -12
  185. package/src/utils/index.ts +3 -3
  186. package/src/utils/requestUtils.ts +34 -34
  187. package/src/utils/serialize.js +7 -7
  188. package/src/utils/utils.ts +183 -183
  189. package/tsconfig.json +29 -29
  190. 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
- 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;
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;