@bit-sun/business-component 2.3.21 → 2.3.23

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 (202) 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/CustomerMenu/MenuSetting/index.d.ts +1 -1
  9. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +1 -1
  10. package/dist/components/Business/SearchSelect/index.d.ts +1 -1
  11. package/dist/components/Business/moreTreeTable/FixedScrollBar.d.ts +1 -1
  12. package/dist/components/Functional/AddSelect/helps.d.ts +13 -0
  13. package/dist/components/Functional/SearchSelect/index.d.ts +1 -1
  14. package/dist/index.esm.js +1338 -1258
  15. package/dist/index.js +1344 -1264
  16. package/dist/utils/utils.d.ts +1 -1
  17. package/docs/index.md +21 -21
  18. package/lib/assets/drag.svg +17 -17
  19. package/lib/assets/exportFail.svg +37 -37
  20. package/lib/assets/exportProcessing.svg +28 -28
  21. package/lib/assets/exportSuccess.svg +34 -34
  22. package/lib/assets/label_icon_bottom.svg +25 -25
  23. package/lib/assets/upExport.svg +22 -22
  24. package/package.json +78 -78
  25. package/src/assets/32.svg +27 -27
  26. package/src/assets/addIcon.svg +17 -17
  27. package/src/assets/allfunc.svg +27 -27
  28. package/src/assets/arrowRight.svg +24 -24
  29. package/src/assets/btn-delete.svg +29 -29
  30. package/src/assets/btn-edit.svg +19 -19
  31. package/src/assets/btn-more.svg +17 -17
  32. package/src/assets/btn-submit.svg +19 -19
  33. package/src/assets/caidan.svg +11 -11
  34. package/src/assets/close.svg +26 -26
  35. package/src/assets/drag.svg +17 -17
  36. package/src/assets/exportFail.svg +37 -37
  37. package/src/assets/exportProcessing.svg +28 -28
  38. package/src/assets/exportSuccess.svg +34 -34
  39. package/src/assets/fixed-left-active.svg +11 -11
  40. package/src/assets/fixed-left.svg +15 -15
  41. package/src/assets/fixed-right-active.svg +11 -11
  42. package/src/assets/fixed-right.svg +15 -15
  43. package/src/assets/guanbi.svg +15 -15
  44. package/src/assets/icon-quanping.svg +15 -15
  45. package/src/assets/icon-shezhi.svg +17 -17
  46. package/src/assets/label_icon_bottom.svg +25 -25
  47. package/src/assets/list-no-img.svg +21 -21
  48. package/src/assets/morentouxiang-32.svg +23 -23
  49. package/src/assets/scanning.svg +24 -24
  50. package/src/assets/upExport.svg +22 -22
  51. package/src/common/ENUM.ts +41 -41
  52. package/src/components/Business/AddSelectBusiness/index.md +162 -162
  53. package/src/components/Business/AddSelectBusiness/index.tsx +1060 -895
  54. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  55. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  56. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  63. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  64. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  65. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  66. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  67. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  68. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  69. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  70. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  71. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  72. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  73. package/src/components/Business/BsLayouts/index.less +79 -79
  74. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  75. package/src/components/Business/BsLayouts/service.ts +10 -10
  76. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  77. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +564 -564
  78. package/src/components/Business/BsSulaQueryTable/index.less +221 -221
  79. package/src/components/Business/BsSulaQueryTable/index.tsx +535 -535
  80. package/src/components/Business/BsSulaQueryTable/setting.tsx +852 -852
  81. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  82. package/src/components/Business/BsSulaQueryTable/utils.tsx +690 -690
  83. package/src/components/Business/CommodityEntry/index.md +70 -70
  84. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  85. package/src/components/Business/CommonAlert/index.tsx +23 -23
  86. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  87. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  88. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  89. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  90. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  91. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  92. package/src/components/Business/HomePageWrapper/index.less +33 -33
  93. package/src/components/Business/HomePageWrapper/index.md +45 -45
  94. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  95. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  96. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  97. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  98. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  99. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  100. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  101. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  102. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  103. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  104. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  105. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  106. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  107. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  108. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  109. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  110. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  111. package/src/components/Business/JsonQueryTable/index.less +16 -16
  112. package/src/components/Business/JsonQueryTable/index.md +328 -328
  113. package/src/components/Business/JsonQueryTable/index.tsx +535 -535
  114. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  115. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  116. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  117. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  118. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  119. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  120. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  121. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  122. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  123. package/src/components/Business/SearchSelect/BusinessUtils.ts +1762 -1762
  124. package/src/components/Business/SearchSelect/common.ts +75 -75
  125. package/src/components/Business/SearchSelect/index.md +1329 -1329
  126. package/src/components/Business/SearchSelect/index.tsx +55 -55
  127. package/src/components/Business/SearchSelect/utils.ts +100 -100
  128. package/src/components/Business/StateFlow/index.less +130 -130
  129. package/src/components/Business/StateFlow/index.md +60 -60
  130. package/src/components/Business/StateFlow/index.tsx +29 -29
  131. package/src/components/Business/TreeSearchSelect/index.md +156 -156
  132. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  133. package/src/components/Business/TreeSearchSelect/utils.ts +75 -75
  134. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  135. package/src/components/Business/columnSettingTable/index.less +247 -247
  136. package/src/components/Business/columnSettingTable/index.md +357 -357
  137. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  138. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  139. package/src/components/Business/columnSettingTable/utils.tsx +71 -71
  140. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  141. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  142. package/src/components/Business/moreTreeTable/index.less +99 -99
  143. package/src/components/Business/moreTreeTable/index.md +448 -448
  144. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  145. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  146. package/src/components/Functional/AddSelect/helps.ts +79 -14
  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 +1170 -1282
  150. package/src/components/Functional/BillEntry/index.less +371 -371
  151. package/src/components/Functional/BillEntry/index.md +39 -39
  152. package/src/components/Functional/BillEntry/index.tsx +772 -772
  153. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  154. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  155. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  156. package/src/components/Functional/DataImport/index.less +63 -63
  157. package/src/components/Functional/DataImport/index.md +44 -44
  158. package/src/components/Functional/DataImport/index.tsx +695 -695
  159. package/src/components/Functional/DataValidation/index.less +63 -63
  160. package/src/components/Functional/DataValidation/index.md +39 -39
  161. package/src/components/Functional/DataValidation/index.tsx +687 -687
  162. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  163. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  164. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  165. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  166. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  167. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  168. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  169. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  170. package/src/components/Functional/SearchSelect/index.less +115 -115
  171. package/src/components/Functional/SearchSelect/index.md +141 -141
  172. package/src/components/Functional/SearchSelect/index.tsx +879 -879
  173. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  174. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  175. package/src/components/Functional/TreeSearchSelect/index.tsx +199 -199
  176. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  177. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  178. package/src/components/Solution/RuleComponent/index.js +2032 -2032
  179. package/src/components/Solution/RuleComponent/index.less +230 -230
  180. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  181. package/src/components/Solution/RuleComponent/ruleFiled.js +2107 -2107
  182. package/src/components/Solution/RuleComponent/services.ts +13 -13
  183. package/src/components/Solution/RuleComponent/util.js +139 -139
  184. package/src/index.ts +38 -38
  185. package/src/plugin/TableColumnSetting/index.less +247 -247
  186. package/src/plugin/TableColumnSetting/index.md +50 -50
  187. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  188. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  189. package/src/styles/bsDefault.less +1912 -1912
  190. package/src/utils/CheckOneUser/index.md +39 -39
  191. package/src/utils/CheckOneUser/index.ts +51 -51
  192. package/src/utils/LocalstorageUtils.ts +95 -95
  193. package/src/utils/TableUtils.tsx +18 -18
  194. package/src/utils/checkUtils.ts +39 -39
  195. package/src/utils/enumConfig.ts +11 -11
  196. package/src/utils/getFormMode.js +12 -12
  197. package/src/utils/index.ts +4 -4
  198. package/src/utils/requestUtils.ts +34 -34
  199. package/src/utils/serialize.js +7 -7
  200. package/src/utils/utils.ts +212 -212
  201. package/tsconfig.json +29 -29
  202. package/typings.d.ts +4 -4
@@ -1,824 +1,824 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import { Button, Modal, Input } from 'antd';
3
- import { Form, request, Table } from 'bssula';
4
- import { useMount } from 'ahooks';
5
- import _ from 'lodash';
6
- import MaintainOptions from '../components/MaintainOptions';
7
- import Formula from '../components/Formula';
8
- import { inputTypes } from './../static';
9
- import { getDictionarySource } from '@/utils/utils';
10
- import { getDynamicDict } from "./../function";
11
-
12
- // @ts-nocheck
13
- const FieldsModifyModal = (props: any) => {
14
- const { onParentOk, mode, inputType, choiceType, valueType, lineDetail } = props;
15
- const [maintainOptionsModal, setMaintainOptionsModal]:any = useState({
16
- visible: false,
17
- onCancel: () =>
18
- setMaintainOptionsModal({
19
- ...maintainOptionsModal,
20
- visible: false,
21
- }),
22
- onParentOk: () => {},
23
- });
24
- const record = {
25
- ...props.record,
26
- ...props.record.info,
27
- dictionaryCode_dynamic: props.record.info?.dictionaryCode,
28
- defaultValue:
29
- props.record.defaultValue && props.record.inputType === 30
30
- ? props.record.defaultValue.split(',')
31
- : props.record?.defaultValue,
32
- showValue: [
33
- 'createVisibleFlag',
34
- 'editVisibleFlag',
35
- 'createEditableFlag',
36
- ].filter((item) => props.record[item]),
37
- editableStatus:
38
- props.record?.editableStatus === ''
39
- ? []
40
- : props.record?.editableStatus?.split(',') || [],
41
- };
42
-
43
- console.log(record,'record')
44
- const trueOrFalseSource = [
45
- {
46
- text: '是',
47
- value: true,
48
- },
49
- {
50
- text: '否',
51
- value: false,
52
- },
53
- ];
54
- const ref = useRef();
55
- useMount(async () => {
56
- await setIsShowAndType((prev: any) => {
57
- if (record.inputType === 20 || record.inputType === 30) {
58
- return {
59
- isShow: true,
60
- singleOrMultiple: record.inputType,
61
- type: record.choiceType,
62
- };
63
- }
64
- return prev;
65
- });
66
- if(record.dictionaryCode){
67
- let source = record.choiceType == 20 ? getDictionarySource(record.dictionaryCode) : record.choiceType == 30 ? await getDynamicDict(record.dictionaryCode) : []
68
- // @ts-ignore
69
- ref?.current?.setFieldSource('defaultValue', source)
70
- }
71
-
72
- });
73
- const [isShowAndType, setIsShowAndType] = useState({
74
- isShow: false,
75
- singleOrMultiple: 20,
76
- type: 10,
77
- });
78
- const [isFieldMappingRequired,setIsFieldMappingRequired] = useState(lineDetail?.moduleType == 1)
79
-
80
- const fieldOfDefaultValue = () => {
81
- const { singleOrMultiple, type } = isShowAndType;
82
- if (type === 10) {
83
- // 自定义
84
- return [
85
- {
86
- name: 'defaultValue',
87
- label: '默认值',
88
- field: {
89
- ...inputTypes[singleOrMultiple][type],
90
- },
91
- initialSource: Object.keys(record.enumeration || {})?.map(
92
- (value: any) => ({
93
- text: record?.enumeration[value],
94
- value,
95
- }),
96
- ),
97
- dependency: {
98
- value: {
99
- relates: ['enumeration'],
100
- type: ({ form, values, name, relates }: any) => {
101
- if (values[0]) {
102
- form?.setFieldSource(name[0], []);
103
- form?.setFieldValue(name[0], undefined);
104
- form?.setFieldSource(
105
- name[0],
106
- Object.keys(values[0]).map((value: any) => ({
107
- text: values[0][value],
108
- value,
109
- })),
110
- );
111
- }
112
- },
113
- },
114
- },
115
- },
116
- ];
117
- }
118
- if (type === 20 || type === 30) {
119
- // 数据字典 或 动态数据字典
120
- return [
121
- {
122
- name: 'defaultValue',
123
- label: '默认值',
124
- field: {
125
- ...inputTypes[singleOrMultiple][type],
126
- },
127
- dependency: {
128
- source: {
129
- relates: ['dictionaryCode', 'dictionaryCode_dynamic', 'choiceType'],
130
- type: async ({ form, values, name, relates }: any) => {
131
- if (values[0]) {
132
- form?.setFieldSource(name[0], []);
133
- form?.setFieldValue(name[0], undefined);
134
- form?.setFieldSource(name[0], getDictionarySource(values[0]));
135
- }
136
- if(values[1]){
137
- const source = await getDynamicDict(record.dictionaryCode || values[1])
138
- form?.setFieldSource(name[0], []);
139
- form?.setFieldValue(name[0], undefined);
140
- form?.setFieldSource(name[0], source);
141
- }
142
- },
143
- },
144
- },
145
- },
146
- ];
147
- }
148
- if(type === 330){
149
- // 变量
150
- return [{
151
- name:'defaultValue',
152
- label:'默认值',
153
- dependency:{
154
- value:{
155
- relates: ['variable'],
156
- type:({name, values, form}: any) => {
157
- if(values[0]){
158
- form?.setFieldValue(name, undefined)
159
- request({
160
- url:`/basic/businessVariable/dict/${values[0]}`,
161
- converter:({data}: any) => {
162
- let source = []
163
- form.setFieldDisabled(name, false)
164
- if(data?.defaultValue?.modeType == 1){
165
- if(typeof data?.defaultValue?.value[0] === 'string'){
166
- source = data?.defaultValue?.value.map((d:any) => ({
167
- text: d,
168
- value: d
169
- }))
170
- }
171
- }else if(data?.defaultValue?.modeType == 2) {
172
- source = [{text: data?.defaultValue?.value, value: data?.defaultValue?.value}]
173
- form.setFieldDisabled(name, true)
174
- form?.setFieldValue(name,singleOrMultiple == 30 ? [data?.defaultValue?.value] : data?.defaultValue?.value)
175
- }
176
- form?.setFieldSource(name, source)
177
- }
178
- })
179
- }
180
- }
181
- }
182
- },
183
- field:{
184
- type:'select',
185
- props:{
186
- allowClear: true,
187
- mode: singleOrMultiple == 30 ? 'multiple': 'default',
188
- },
189
- },
190
- }]
191
- }
192
- return [
193
- {
194
- name: 'defaultValue',
195
- label: '默认值',
196
- field: {
197
- ...inputTypes[singleOrMultiple][type],
198
- },
199
- },
200
- ];
201
- };
202
-
203
- const handleChoiceTypeChange = (val: any) => {
204
- // @ts-ignore
205
- ref?.current?.setFieldValue('defaultValue', undefined);
206
- // @ts-ignore
207
- const singleOrMultiple = ref?.current?.getFieldValue('inputType'); // 20-单选, 30多选
208
- setIsShowAndType((prev: any) => {
209
- if (singleOrMultiple === 20 || singleOrMultiple === 30) {
210
- return {
211
- isShow: true,
212
- singleOrMultiple,
213
- type: val,
214
- };
215
- }
216
- return prev;
217
- });
218
- };
219
- const formConfig = {
220
- mode,
221
- initialValues:
222
- mode !== 'create'
223
- ? record
224
- : {
225
- showValue: [
226
- 'createVisibleFlag',
227
- 'editVisibleFlag',
228
- 'createEditableFlag',
229
- ],
230
- },
231
- itemLayout: {
232
- cols: 2,
233
- },
234
- fields: [
235
- {
236
- name: 'code',
237
- label: '字段编号',
238
- field: 'input',
239
- initialDisabled: true,
240
- },
241
- {
242
- name: 'name',
243
- label: '字段名',
244
- field: {
245
- type: 'input',
246
- },
247
- rules: [{ required: true }],
248
- },
249
- // {
250
- // name:'name',
251
- // label:'是否显示',
252
- // field:{
253
- // type:'select',
254
- // },
255
- // initialSource: trueOrFalseSource,
256
- // rules:[{required: true,}],
257
- // },x
258
- {
259
- name: 'priority',
260
- label: '排序',
261
- field: {
262
- type: 'inputnumber',
263
- props: {
264
- min: 1,
265
- max: Number.MAX_SAFE_INTEGER,
266
- precision: 0,
267
- },
268
- },
269
- rules: [{ required: true }],
270
- },
271
- {
272
- name: 'requiredFlag',
273
- label: '是否必填',
274
- field: {
275
- type: 'select',
276
- },
277
- initialSource: trueOrFalseSource,
278
- initialValue: false,
279
- rules: [{ required: true }],
280
- },
281
- // {
282
- // name:'businessType',
283
- // label:'校验规则',
284
- // field:'input',
285
- // rules:[{required: true,}]
286
- // },
287
- {
288
- name: 'searchableFlag',
289
- label: '是否查询项',
290
- field: {
291
- type: 'select',
292
- props: {
293
- onChange: (value: any) => {
294
- // if(lineDetail?.moduleType == 2) {
295
- // setIsFieldMappingRequired(value)
296
- // }
297
- }
298
- }
299
- },
300
- rules: [{ required: true }],
301
- initialSource: trueOrFalseSource,
302
- initialValue: false,
303
- },
304
- {
305
- name: 'sortableFlag',
306
- label: '是否允许排序',
307
- field: {
308
- type: 'select',
309
- },
310
- initialSource: trueOrFalseSource,
311
- rules: [{ required: true }],
312
- initialValue: false,
313
- },
314
- // {
315
- // name:'multiFlag',
316
- // label:'是否汇总项',
317
- // field:{
318
- // type:'select',
319
- // },
320
- // initialSource: trueOrFalseSource,
321
- // rules:[{required: true,}],
322
- // },
323
- {
324
- name: 'inputType',
325
- label: '显示类型',
326
- field: {
327
- type: 'select',
328
- props: {
329
- onChange: (val: any) => {
330
- setIsShowAndType((prev: any) => {
331
- if (val !== 20 && val !== 30) {
332
- return {
333
- ...prev,
334
- isShow: false,
335
- };
336
- }
337
- return { ...prev };
338
- });
339
- },
340
- },
341
- },
342
- initialDisabled: mode !== 'create',
343
- initialSource: Object.keys(inputType).map((d: any) => ({
344
- text: inputType[d],
345
- value: Number(d),
346
- })),
347
- rules: [{ required: true }],
348
- },
349
- {
350
- name: 'scale',
351
- label: '精度值',
352
- field: {
353
- type: 'InputNumber',
354
- props: {
355
- min: 1,
356
- max: Number.MAX_SAFE_INTEGER,
357
- precision: 0,
358
- },
359
- },
360
- initialVisible: false,
361
- initialValue: 2,
362
- dependency: {
363
- source: {
364
- relates: ['inputType'],
365
- type: (ctx: any) => {
366
- const { values, form, name } = ctx;
367
- if (values[0] === 40) {
368
- form.setFieldVisible(name, true);
369
- !form.getFieldValue(name) && form?.setFieldValue(name, 2);
370
- } else {
371
- form.setFieldVisible(name, false);
372
- }
373
- },
374
- },
375
- },
376
- rules: [{ required: true }],
377
- },
378
- {
379
- name: 'formula',
380
- label: '表达式',
381
- itemLayout: {
382
- cols: 1,
383
- span: 24,
384
- labelCol: { span: 4 },
385
- wrapperCol: { span: 20 },
386
- },
387
- field: {
388
- type: ({ form }:any) => {
389
- const setValue = (formulaArray:any) => {
390
- debugger;
391
- form?.setFieldValue(
392
- 'formula',
393
- formulaArray
394
- .map((item:any) => {
395
- if (
396
- ['+', '-', '*', '/', '(', ')'].indexOf(item.value) == -1
397
- ) {
398
- return `{${item.value}}`;
399
- }
400
- return item.value;
401
- })
402
- .join(''),
403
- );
404
- };
405
-
406
- const formula = form.getFieldValue('formula');
407
-
408
- return (
409
- <div style={{ display: 'flex', width: '868px' }}>
410
- <Formula
411
- formula={formula}
412
- setValue={setValue}
413
- record={{ ...record }}
414
- />
415
- </div>
416
- );
417
- },
418
- },
419
- initialDisabled: mode !== 'create',
420
- initialVisible: false,
421
- dependency: {
422
- source: {
423
- relates: ['inputType'],
424
- type: (ctx: any) => {
425
- const { values, form, name } = ctx;
426
- if (values[0] === 40) {
427
- form.setFieldVisible(name, true);
428
- } else {
429
- form.setFieldVisible(name, false);
430
- }
431
- },
432
- },
433
- },
434
- rules: [{ required: true }],
435
- },
436
- {
437
- name: 'valueType',
438
- label: '字段类型',
439
- field: {
440
- type: 'select',
441
- },
442
- initialDisabled: mode !== 'create',
443
- initialSource: Object.keys(valueType).map((d: any) => ({
444
- text: valueType[d],
445
- value: Number(d),
446
- })),
447
- dependency: {
448
- source: {
449
- relates: ['inputType'],
450
- type: (ctx: any) => {
451
- const { values, form, name } = ctx;
452
- if (values[0] === 40) {
453
- form?.setFieldValue(name, null);
454
- form.setFieldVisible(name, false);
455
- }
456
- if (mode === 'create') {
457
- if (values[0] && values[0] === 10) {
458
- form?.setFieldValue(name, null);
459
- form.setFieldDisabled(name, false);
460
- } else {
461
- form?.setFieldValue(name, 10);
462
- form.setFieldDisabled(name, true);
463
- }
464
- }
465
- },
466
- },
467
- },
468
- rules: [{ required: true }],
469
- },
470
- {
471
- name: 'showValue',
472
- label: '显示属性',
473
- field: {
474
- type: 'checkboxgroup',
475
- },
476
- initialValue: [
477
- 'createVisibleFlag',
478
- 'editVisibleFlag',
479
- 'createEditableFlag',
480
- ],
481
- initialSource: [
482
- { text: '新增时显示', value: 'createVisibleFlag' },
483
- { text: '编辑时显示', value: 'editVisibleFlag' },
484
- { text: '新增时编辑', value: 'createEditableFlag' },
485
- ],
486
- },
487
- {
488
- name: 'choiceType',
489
- label: '选项集',
490
- field: {
491
- type: 'select',
492
- props: {
493
- onChange: handleChoiceTypeChange,
494
- showSearch: true,
495
- filterOption: (input: any, option: any) =>
496
- option.props.children
497
- .toLowerCase()
498
- .indexOf(input.toLowerCase()) >= 0,
499
- },
500
- },
501
- initialVisible: false,
502
- initialDisabled: mode !== 'create',
503
- initialSource: Object.keys(choiceType).map((d: any) => ({
504
- text: choiceType[d],
505
- value: Number(d),
506
- })),
507
- dependencies: ['inputType'],
508
- dependency: {
509
- source: {
510
- relates: ['inputType'],
511
- type: ({ form, name, values }: any) => {
512
- const flag = values[0] === 20 || values[0] === 30;
513
- form.setFieldVisible(name, flag);
514
- },
515
- },
516
- },
517
- rules: [
518
- ({ getFieldValue }: any) => {
519
- const value = getFieldValue('inputType');
520
- const flag = value === 20 || value === 30;
521
- return {
522
- required: flag,
523
- };
524
- },
525
- ],
526
- },
527
- {
528
- name: 'dictionaryCode',
529
- label: '数据字典',
530
- field: {
531
- type: 'bs-searchSelect',
532
- props: {
533
- requestConfig: {
534
- url: `/basic/bscDict/getBscDictList`,
535
- filter: 'qp-name-like',
536
- mappingTextField: 'name',
537
- mappingValueField: 'code',
538
- },
539
- },
540
- },
541
- initialVisible: false,
542
- dependency: {
543
- source: {
544
- relates: ['choiceType', 'inputType'],
545
- type: ({ values, name, form }: any) => {
546
- if (values[1] === 40) {
547
- form?.setFieldValue(name, null);
548
- form.setFieldVisible(name, false);
549
- }
550
-
551
- if (values[0] === 20) {
552
- form.setFieldVisible(name, true);
553
- } else {
554
- form.setFieldVisible(name, false);
555
- }
556
- },
557
- },
558
- },
559
- },
560
- {
561
- name: 'dictionaryCode_dynamic',
562
- label: '数据字典',
563
- field: {
564
- type: 'select',
565
- },
566
- initialVisible: false,
567
- dependency: {
568
- source: {
569
- relates: ['choiceType', 'inputType'],
570
- type: async ({ values, name, form }: any) => {
571
- if (values[1] === 40) {
572
- form?.setFieldValue(name, null);
573
- form.setFieldVisible(name, false);
574
- }
575
-
576
- if (values[0] === 30) {
577
- const source = await request({
578
- url:'/basic/dictDynamicItem/queryList',
579
- converter:({data}: any) => {
580
- return data?.map((d:any) => ({
581
- text: d.dictCode,
582
- value: d.dictCode,
583
- }))
584
- }
585
- })
586
- form?.setFieldSource(name, source)
587
- form.setFieldVisible(name, true);
588
- } else {
589
- form.setFieldVisible(name, false);
590
- }
591
- },
592
- },
593
- },
594
- },
595
- {
596
- name: 'enumeration',
597
- label: '维护自定义选项',
598
- field: {
599
- type: ({ form }: any) => {
600
- return (
601
- <Button
602
- type={'link'}
603
- onClick={() => {
604
- setMaintainOptionsModal({
605
- ...maintainOptionsModal,
606
- visible: true,
607
- record: {
608
- choiceInfo: form.getFieldValue('enumeration'),
609
- },
610
- onParentOk: (rows:any) => {
611
- const obj:any = {};
612
- rows.forEach((d: any) => {
613
- obj[d.value] = d.text;
614
- });
615
- form?.setFieldValue('enumeration', obj);
616
- maintainOptionsModal.onCancel();
617
- },
618
- });
619
- }}
620
- >
621
- 点击维护自定义选项
622
- </Button>
623
- );
624
- },
625
- },
626
- initialVisible: false,
627
- dependency: {
628
- source: {
629
- relates: ['choiceType'],
630
- type: ({ values, name, form }: any) => {
631
- if (values[0] === 10) {
632
- form.setFieldVisible(name, true);
633
- } else {
634
- form.setFieldVisible(name, false);
635
- }
636
- },
637
- },
638
- },
639
- },
640
- {
641
- name: 'variable',
642
- label: '变量值',
643
- initialVisible: false,
644
- dependency:{
645
- visible:{
646
- relates:['choiceType'],
647
- type:({name, values, form}: any) => {
648
- if(values[0] == 330){
649
- form.setFieldVisible(name, true)
650
- }else{
651
- form.setFieldVisible(name, false)
652
- }
653
- }
654
- }
655
- },
656
- field:{
657
- type:'select',
658
- props:{
659
- allowClear: true,
660
- showSearch: true,
661
- filterOption: (input: string, option: { props: { children: string } }) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
662
- }
663
- },
664
- remoteSource: {
665
- url:'/basic/businessVariable/listNoPage',
666
- params:{
667
- 'qp-businessType-eq': record.businessType,
668
- },
669
- converter:({data}: any) => {
670
- return data?.map((d:any) => ({
671
- text: d.name,
672
- value: d.code
673
- })) || []
674
- },
675
- },
676
- },
677
- ...(isShowAndType.isShow ? fieldOfDefaultValue() : []),
678
- {
679
- name: 'editableStatus',
680
- label: '允许编辑状态',
681
- field: {
682
- type: 'select',
683
- props: {
684
- mode: 'multiple',
685
- },
686
- },
687
- dependency: {
688
- source: {
689
- relates: ['inputType'],
690
- type: (ctx: any) => {
691
- const { values, form, name } = ctx;
692
- if (values[0] === 40) {
693
- form?.setFieldValue(name, null);
694
- form.setFieldVisible(name, false);
695
- } else {
696
- form.setFieldVisible(name, true);
697
- }
698
- },
699
- },
700
- },
701
- remoteSource: {
702
- url: `/basic/flow/businessStatus/listNoPage`,
703
- params: {
704
- 'qp-businessType-eq': record.businessType,
705
- 'qp-status-eq': 1,
706
- },
707
- converter: ({ data }: any) => {
708
- return (
709
- data?.map((d: any) => ({
710
- text: d.name,
711
- value: d.code?.toString(),
712
- })) || []
713
- );
714
- },
715
- },
716
- },
717
- {
718
- name: 'fieldMapping',
719
- label:'关联字段',
720
- initialVisible: lineDetail?.moduleType == 1 || lineDetail?.moduleType == 2,
721
- initialDisabled: lineDetail?.moduleType == 2,
722
- rules:[{required: isFieldMappingRequired}],
723
- field:{
724
- type:'select',
725
- props:{
726
- allowClear: true,
727
- },
728
- },
729
- ...((lineDetail?.moduleRelationId) ? {
730
- remoteSource:{
731
- url: lineDetail.moduleType == 1 ? `/basic/planModelField/listNoPage?qp-modelCode-eq=${lineDetail?.moduleRelationId}` : `/basic/flow/businessField/metaFieldMapping?metaEntityCode=${lineDetail?.moduleRelationId}&fieldMapping=${record?.fieldMapping}`,
732
- method:'get',
733
- converter:({data}: any) => {
734
- if(lineDetail.moduleType == 1){
735
- return data?.map((d:any) => ({
736
- text: d.fieldName,
737
- value: d.fieldCode,
738
- })) || []
739
- }
740
- if(lineDetail.moduleType == 2){
741
- return data?.map((d:any) =>({
742
- text: d.name,
743
- value: d.code
744
- })) || []
745
- }
746
- return []
747
- }
748
- }
749
- } : {}),
750
- }
751
- ],
752
- };
753
-
754
- return (
755
- <Modal
756
- {...props}
757
- width={900}
758
- maskClosable={false}
759
- onOk={async () => {
760
- // @ts-ignore
761
- const res = await ref?.current?.validateFields();
762
- res.editableStatus = res.editableStatus?.join(',');
763
- res.fieldGroup = record.fieldGroup;
764
- res.businessType = record.businessType;
765
- res.info = {
766
- enumeration: res.enumeration,
767
- dictionaryCode: res.dictionaryCode || res?.['dictionaryCode_dynamic'],
768
- formula: res.formula,
769
- scale: res.scale,
770
- variable: res.variable,
771
- };
772
-
773
- res.createVisibleFlag = res.showValue.indexOf('createVisibleFlag') >= 0;
774
- res.editVisibleFlag = res.showValue.indexOf('editVisibleFlag') >= 0;
775
- res.createEditableFlag =
776
- res.showValue.indexOf('createEditableFlag') >= 0;
777
-
778
- if (res.inputType === 40) {
779
- res.valueType = 22;
780
- }
781
- // 把数组处理成文本
782
- if (res.inputType === 30) {
783
- if (res.defaultValue) {
784
- res.defaultValue = res.defaultValue?.join(',');
785
- }
786
- }
787
-
788
- res.fieldMapping = res.fieldMapping || ''
789
-
790
- delete res.formula;
791
- delete res.showValue;
792
-
793
- if (mode === 'create') {
794
- request({
795
- url: `/basic/flow/businessField`,
796
- method: 'POST',
797
- params: res,
798
- successMessage: '创建成功!',
799
- converter: () => {
800
- onParentOk();
801
- },
802
- });
803
- return;
804
- }
805
- request({
806
- url: `/basic/flow/businessField/${record.id}`,
807
- method: 'PATCH',
808
- params: res,
809
- successMessage: '修改成功!',
810
- converter: () => {
811
- onParentOk();
812
- },
813
- });
814
- }}
815
- >
816
- <Form {...formConfig} ref={ref} />
817
- {maintainOptionsModal.visible && (
818
- <MaintainOptions {...maintainOptionsModal} />
819
- )}
820
- </Modal>
821
- );
822
- };
823
-
824
- export default FieldsModifyModal;
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { Button, Modal, Input } from 'antd';
3
+ import { Form, request, Table } from 'bssula';
4
+ import { useMount } from 'ahooks';
5
+ import _ from 'lodash';
6
+ import MaintainOptions from '../components/MaintainOptions';
7
+ import Formula from '../components/Formula';
8
+ import { inputTypes } from './../static';
9
+ import { getDictionarySource } from '@/utils/utils';
10
+ import { getDynamicDict } from "./../function";
11
+
12
+ // @ts-nocheck
13
+ const FieldsModifyModal = (props: any) => {
14
+ const { onParentOk, mode, inputType, choiceType, valueType, lineDetail } = props;
15
+ const [maintainOptionsModal, setMaintainOptionsModal]:any = useState({
16
+ visible: false,
17
+ onCancel: () =>
18
+ setMaintainOptionsModal({
19
+ ...maintainOptionsModal,
20
+ visible: false,
21
+ }),
22
+ onParentOk: () => {},
23
+ });
24
+ const record = {
25
+ ...props.record,
26
+ ...props.record.info,
27
+ dictionaryCode_dynamic: props.record.info?.dictionaryCode,
28
+ defaultValue:
29
+ props.record.defaultValue && props.record.inputType === 30
30
+ ? props.record.defaultValue.split(',')
31
+ : props.record?.defaultValue,
32
+ showValue: [
33
+ 'createVisibleFlag',
34
+ 'editVisibleFlag',
35
+ 'createEditableFlag',
36
+ ].filter((item) => props.record[item]),
37
+ editableStatus:
38
+ props.record?.editableStatus === ''
39
+ ? []
40
+ : props.record?.editableStatus?.split(',') || [],
41
+ };
42
+
43
+ console.log(record,'record')
44
+ const trueOrFalseSource = [
45
+ {
46
+ text: '是',
47
+ value: true,
48
+ },
49
+ {
50
+ text: '否',
51
+ value: false,
52
+ },
53
+ ];
54
+ const ref = useRef();
55
+ useMount(async () => {
56
+ await setIsShowAndType((prev: any) => {
57
+ if (record.inputType === 20 || record.inputType === 30) {
58
+ return {
59
+ isShow: true,
60
+ singleOrMultiple: record.inputType,
61
+ type: record.choiceType,
62
+ };
63
+ }
64
+ return prev;
65
+ });
66
+ if(record.dictionaryCode){
67
+ let source = record.choiceType == 20 ? getDictionarySource(record.dictionaryCode) : record.choiceType == 30 ? await getDynamicDict(record.dictionaryCode) : []
68
+ // @ts-ignore
69
+ ref?.current?.setFieldSource('defaultValue', source)
70
+ }
71
+
72
+ });
73
+ const [isShowAndType, setIsShowAndType] = useState({
74
+ isShow: false,
75
+ singleOrMultiple: 20,
76
+ type: 10,
77
+ });
78
+ const [isFieldMappingRequired,setIsFieldMappingRequired] = useState(lineDetail?.moduleType == 1)
79
+
80
+ const fieldOfDefaultValue = () => {
81
+ const { singleOrMultiple, type } = isShowAndType;
82
+ if (type === 10) {
83
+ // 自定义
84
+ return [
85
+ {
86
+ name: 'defaultValue',
87
+ label: '默认值',
88
+ field: {
89
+ ...inputTypes[singleOrMultiple][type],
90
+ },
91
+ initialSource: Object.keys(record.enumeration || {})?.map(
92
+ (value: any) => ({
93
+ text: record?.enumeration[value],
94
+ value,
95
+ }),
96
+ ),
97
+ dependency: {
98
+ value: {
99
+ relates: ['enumeration'],
100
+ type: ({ form, values, name, relates }: any) => {
101
+ if (values[0]) {
102
+ form?.setFieldSource(name[0], []);
103
+ form?.setFieldValue(name[0], undefined);
104
+ form?.setFieldSource(
105
+ name[0],
106
+ Object.keys(values[0]).map((value: any) => ({
107
+ text: values[0][value],
108
+ value,
109
+ })),
110
+ );
111
+ }
112
+ },
113
+ },
114
+ },
115
+ },
116
+ ];
117
+ }
118
+ if (type === 20 || type === 30) {
119
+ // 数据字典 或 动态数据字典
120
+ return [
121
+ {
122
+ name: 'defaultValue',
123
+ label: '默认值',
124
+ field: {
125
+ ...inputTypes[singleOrMultiple][type],
126
+ },
127
+ dependency: {
128
+ source: {
129
+ relates: ['dictionaryCode', 'dictionaryCode_dynamic', 'choiceType'],
130
+ type: async ({ form, values, name, relates }: any) => {
131
+ if (values[0]) {
132
+ form?.setFieldSource(name[0], []);
133
+ form?.setFieldValue(name[0], undefined);
134
+ form?.setFieldSource(name[0], getDictionarySource(values[0]));
135
+ }
136
+ if(values[1]){
137
+ const source = await getDynamicDict(record.dictionaryCode || values[1])
138
+ form?.setFieldSource(name[0], []);
139
+ form?.setFieldValue(name[0], undefined);
140
+ form?.setFieldSource(name[0], source);
141
+ }
142
+ },
143
+ },
144
+ },
145
+ },
146
+ ];
147
+ }
148
+ if(type === 330){
149
+ // 变量
150
+ return [{
151
+ name:'defaultValue',
152
+ label:'默认值',
153
+ dependency:{
154
+ value:{
155
+ relates: ['variable'],
156
+ type:({name, values, form}: any) => {
157
+ if(values[0]){
158
+ form?.setFieldValue(name, undefined)
159
+ request({
160
+ url:`/basic/businessVariable/dict/${values[0]}`,
161
+ converter:({data}: any) => {
162
+ let source = []
163
+ form.setFieldDisabled(name, false)
164
+ if(data?.defaultValue?.modeType == 1){
165
+ if(typeof data?.defaultValue?.value[0] === 'string'){
166
+ source = data?.defaultValue?.value.map((d:any) => ({
167
+ text: d,
168
+ value: d
169
+ }))
170
+ }
171
+ }else if(data?.defaultValue?.modeType == 2) {
172
+ source = [{text: data?.defaultValue?.value, value: data?.defaultValue?.value}]
173
+ form.setFieldDisabled(name, true)
174
+ form?.setFieldValue(name,singleOrMultiple == 30 ? [data?.defaultValue?.value] : data?.defaultValue?.value)
175
+ }
176
+ form?.setFieldSource(name, source)
177
+ }
178
+ })
179
+ }
180
+ }
181
+ }
182
+ },
183
+ field:{
184
+ type:'select',
185
+ props:{
186
+ allowClear: true,
187
+ mode: singleOrMultiple == 30 ? 'multiple': 'default',
188
+ },
189
+ },
190
+ }]
191
+ }
192
+ return [
193
+ {
194
+ name: 'defaultValue',
195
+ label: '默认值',
196
+ field: {
197
+ ...inputTypes[singleOrMultiple][type],
198
+ },
199
+ },
200
+ ];
201
+ };
202
+
203
+ const handleChoiceTypeChange = (val: any) => {
204
+ // @ts-ignore
205
+ ref?.current?.setFieldValue('defaultValue', undefined);
206
+ // @ts-ignore
207
+ const singleOrMultiple = ref?.current?.getFieldValue('inputType'); // 20-单选, 30多选
208
+ setIsShowAndType((prev: any) => {
209
+ if (singleOrMultiple === 20 || singleOrMultiple === 30) {
210
+ return {
211
+ isShow: true,
212
+ singleOrMultiple,
213
+ type: val,
214
+ };
215
+ }
216
+ return prev;
217
+ });
218
+ };
219
+ const formConfig = {
220
+ mode,
221
+ initialValues:
222
+ mode !== 'create'
223
+ ? record
224
+ : {
225
+ showValue: [
226
+ 'createVisibleFlag',
227
+ 'editVisibleFlag',
228
+ 'createEditableFlag',
229
+ ],
230
+ },
231
+ itemLayout: {
232
+ cols: 2,
233
+ },
234
+ fields: [
235
+ {
236
+ name: 'code',
237
+ label: '字段编号',
238
+ field: 'input',
239
+ initialDisabled: true,
240
+ },
241
+ {
242
+ name: 'name',
243
+ label: '字段名',
244
+ field: {
245
+ type: 'input',
246
+ },
247
+ rules: [{ required: true }],
248
+ },
249
+ // {
250
+ // name:'name',
251
+ // label:'是否显示',
252
+ // field:{
253
+ // type:'select',
254
+ // },
255
+ // initialSource: trueOrFalseSource,
256
+ // rules:[{required: true,}],
257
+ // },x
258
+ {
259
+ name: 'priority',
260
+ label: '排序',
261
+ field: {
262
+ type: 'inputnumber',
263
+ props: {
264
+ min: 1,
265
+ max: Number.MAX_SAFE_INTEGER,
266
+ precision: 0,
267
+ },
268
+ },
269
+ rules: [{ required: true }],
270
+ },
271
+ {
272
+ name: 'requiredFlag',
273
+ label: '是否必填',
274
+ field: {
275
+ type: 'select',
276
+ },
277
+ initialSource: trueOrFalseSource,
278
+ initialValue: false,
279
+ rules: [{ required: true }],
280
+ },
281
+ // {
282
+ // name:'businessType',
283
+ // label:'校验规则',
284
+ // field:'input',
285
+ // rules:[{required: true,}]
286
+ // },
287
+ {
288
+ name: 'searchableFlag',
289
+ label: '是否查询项',
290
+ field: {
291
+ type: 'select',
292
+ props: {
293
+ onChange: (value: any) => {
294
+ // if(lineDetail?.moduleType == 2) {
295
+ // setIsFieldMappingRequired(value)
296
+ // }
297
+ }
298
+ }
299
+ },
300
+ rules: [{ required: true }],
301
+ initialSource: trueOrFalseSource,
302
+ initialValue: false,
303
+ },
304
+ {
305
+ name: 'sortableFlag',
306
+ label: '是否允许排序',
307
+ field: {
308
+ type: 'select',
309
+ },
310
+ initialSource: trueOrFalseSource,
311
+ rules: [{ required: true }],
312
+ initialValue: false,
313
+ },
314
+ // {
315
+ // name:'multiFlag',
316
+ // label:'是否汇总项',
317
+ // field:{
318
+ // type:'select',
319
+ // },
320
+ // initialSource: trueOrFalseSource,
321
+ // rules:[{required: true,}],
322
+ // },
323
+ {
324
+ name: 'inputType',
325
+ label: '显示类型',
326
+ field: {
327
+ type: 'select',
328
+ props: {
329
+ onChange: (val: any) => {
330
+ setIsShowAndType((prev: any) => {
331
+ if (val !== 20 && val !== 30) {
332
+ return {
333
+ ...prev,
334
+ isShow: false,
335
+ };
336
+ }
337
+ return { ...prev };
338
+ });
339
+ },
340
+ },
341
+ },
342
+ initialDisabled: mode !== 'create',
343
+ initialSource: Object.keys(inputType).map((d: any) => ({
344
+ text: inputType[d],
345
+ value: Number(d),
346
+ })),
347
+ rules: [{ required: true }],
348
+ },
349
+ {
350
+ name: 'scale',
351
+ label: '精度值',
352
+ field: {
353
+ type: 'InputNumber',
354
+ props: {
355
+ min: 1,
356
+ max: Number.MAX_SAFE_INTEGER,
357
+ precision: 0,
358
+ },
359
+ },
360
+ initialVisible: false,
361
+ initialValue: 2,
362
+ dependency: {
363
+ source: {
364
+ relates: ['inputType'],
365
+ type: (ctx: any) => {
366
+ const { values, form, name } = ctx;
367
+ if (values[0] === 40) {
368
+ form.setFieldVisible(name, true);
369
+ !form.getFieldValue(name) && form?.setFieldValue(name, 2);
370
+ } else {
371
+ form.setFieldVisible(name, false);
372
+ }
373
+ },
374
+ },
375
+ },
376
+ rules: [{ required: true }],
377
+ },
378
+ {
379
+ name: 'formula',
380
+ label: '表达式',
381
+ itemLayout: {
382
+ cols: 1,
383
+ span: 24,
384
+ labelCol: { span: 4 },
385
+ wrapperCol: { span: 20 },
386
+ },
387
+ field: {
388
+ type: ({ form }:any) => {
389
+ const setValue = (formulaArray:any) => {
390
+ debugger;
391
+ form?.setFieldValue(
392
+ 'formula',
393
+ formulaArray
394
+ .map((item:any) => {
395
+ if (
396
+ ['+', '-', '*', '/', '(', ')'].indexOf(item.value) == -1
397
+ ) {
398
+ return `{${item.value}}`;
399
+ }
400
+ return item.value;
401
+ })
402
+ .join(''),
403
+ );
404
+ };
405
+
406
+ const formula = form.getFieldValue('formula');
407
+
408
+ return (
409
+ <div style={{ display: 'flex', width: '868px' }}>
410
+ <Formula
411
+ formula={formula}
412
+ setValue={setValue}
413
+ record={{ ...record }}
414
+ />
415
+ </div>
416
+ );
417
+ },
418
+ },
419
+ initialDisabled: mode !== 'create',
420
+ initialVisible: false,
421
+ dependency: {
422
+ source: {
423
+ relates: ['inputType'],
424
+ type: (ctx: any) => {
425
+ const { values, form, name } = ctx;
426
+ if (values[0] === 40) {
427
+ form.setFieldVisible(name, true);
428
+ } else {
429
+ form.setFieldVisible(name, false);
430
+ }
431
+ },
432
+ },
433
+ },
434
+ rules: [{ required: true }],
435
+ },
436
+ {
437
+ name: 'valueType',
438
+ label: '字段类型',
439
+ field: {
440
+ type: 'select',
441
+ },
442
+ initialDisabled: mode !== 'create',
443
+ initialSource: Object.keys(valueType).map((d: any) => ({
444
+ text: valueType[d],
445
+ value: Number(d),
446
+ })),
447
+ dependency: {
448
+ source: {
449
+ relates: ['inputType'],
450
+ type: (ctx: any) => {
451
+ const { values, form, name } = ctx;
452
+ if (values[0] === 40) {
453
+ form?.setFieldValue(name, null);
454
+ form.setFieldVisible(name, false);
455
+ }
456
+ if (mode === 'create') {
457
+ if (values[0] && values[0] === 10) {
458
+ form?.setFieldValue(name, null);
459
+ form.setFieldDisabled(name, false);
460
+ } else {
461
+ form?.setFieldValue(name, 10);
462
+ form.setFieldDisabled(name, true);
463
+ }
464
+ }
465
+ },
466
+ },
467
+ },
468
+ rules: [{ required: true }],
469
+ },
470
+ {
471
+ name: 'showValue',
472
+ label: '显示属性',
473
+ field: {
474
+ type: 'checkboxgroup',
475
+ },
476
+ initialValue: [
477
+ 'createVisibleFlag',
478
+ 'editVisibleFlag',
479
+ 'createEditableFlag',
480
+ ],
481
+ initialSource: [
482
+ { text: '新增时显示', value: 'createVisibleFlag' },
483
+ { text: '编辑时显示', value: 'editVisibleFlag' },
484
+ { text: '新增时编辑', value: 'createEditableFlag' },
485
+ ],
486
+ },
487
+ {
488
+ name: 'choiceType',
489
+ label: '选项集',
490
+ field: {
491
+ type: 'select',
492
+ props: {
493
+ onChange: handleChoiceTypeChange,
494
+ showSearch: true,
495
+ filterOption: (input: any, option: any) =>
496
+ option.props.children
497
+ .toLowerCase()
498
+ .indexOf(input.toLowerCase()) >= 0,
499
+ },
500
+ },
501
+ initialVisible: false,
502
+ initialDisabled: mode !== 'create',
503
+ initialSource: Object.keys(choiceType).map((d: any) => ({
504
+ text: choiceType[d],
505
+ value: Number(d),
506
+ })),
507
+ dependencies: ['inputType'],
508
+ dependency: {
509
+ source: {
510
+ relates: ['inputType'],
511
+ type: ({ form, name, values }: any) => {
512
+ const flag = values[0] === 20 || values[0] === 30;
513
+ form.setFieldVisible(name, flag);
514
+ },
515
+ },
516
+ },
517
+ rules: [
518
+ ({ getFieldValue }: any) => {
519
+ const value = getFieldValue('inputType');
520
+ const flag = value === 20 || value === 30;
521
+ return {
522
+ required: flag,
523
+ };
524
+ },
525
+ ],
526
+ },
527
+ {
528
+ name: 'dictionaryCode',
529
+ label: '数据字典',
530
+ field: {
531
+ type: 'bs-searchSelect',
532
+ props: {
533
+ requestConfig: {
534
+ url: `/basic/bscDict/getBscDictList`,
535
+ filter: 'qp-name-like',
536
+ mappingTextField: 'name',
537
+ mappingValueField: 'code',
538
+ },
539
+ },
540
+ },
541
+ initialVisible: false,
542
+ dependency: {
543
+ source: {
544
+ relates: ['choiceType', 'inputType'],
545
+ type: ({ values, name, form }: any) => {
546
+ if (values[1] === 40) {
547
+ form?.setFieldValue(name, null);
548
+ form.setFieldVisible(name, false);
549
+ }
550
+
551
+ if (values[0] === 20) {
552
+ form.setFieldVisible(name, true);
553
+ } else {
554
+ form.setFieldVisible(name, false);
555
+ }
556
+ },
557
+ },
558
+ },
559
+ },
560
+ {
561
+ name: 'dictionaryCode_dynamic',
562
+ label: '数据字典',
563
+ field: {
564
+ type: 'select',
565
+ },
566
+ initialVisible: false,
567
+ dependency: {
568
+ source: {
569
+ relates: ['choiceType', 'inputType'],
570
+ type: async ({ values, name, form }: any) => {
571
+ if (values[1] === 40) {
572
+ form?.setFieldValue(name, null);
573
+ form.setFieldVisible(name, false);
574
+ }
575
+
576
+ if (values[0] === 30) {
577
+ const source = await request({
578
+ url:'/basic/dictDynamicItem/queryList',
579
+ converter:({data}: any) => {
580
+ return data?.map((d:any) => ({
581
+ text: d.dictCode,
582
+ value: d.dictCode,
583
+ }))
584
+ }
585
+ })
586
+ form?.setFieldSource(name, source)
587
+ form.setFieldVisible(name, true);
588
+ } else {
589
+ form.setFieldVisible(name, false);
590
+ }
591
+ },
592
+ },
593
+ },
594
+ },
595
+ {
596
+ name: 'enumeration',
597
+ label: '维护自定义选项',
598
+ field: {
599
+ type: ({ form }: any) => {
600
+ return (
601
+ <Button
602
+ type={'link'}
603
+ onClick={() => {
604
+ setMaintainOptionsModal({
605
+ ...maintainOptionsModal,
606
+ visible: true,
607
+ record: {
608
+ choiceInfo: form.getFieldValue('enumeration'),
609
+ },
610
+ onParentOk: (rows:any) => {
611
+ const obj:any = {};
612
+ rows.forEach((d: any) => {
613
+ obj[d.value] = d.text;
614
+ });
615
+ form?.setFieldValue('enumeration', obj);
616
+ maintainOptionsModal.onCancel();
617
+ },
618
+ });
619
+ }}
620
+ >
621
+ 点击维护自定义选项
622
+ </Button>
623
+ );
624
+ },
625
+ },
626
+ initialVisible: false,
627
+ dependency: {
628
+ source: {
629
+ relates: ['choiceType'],
630
+ type: ({ values, name, form }: any) => {
631
+ if (values[0] === 10) {
632
+ form.setFieldVisible(name, true);
633
+ } else {
634
+ form.setFieldVisible(name, false);
635
+ }
636
+ },
637
+ },
638
+ },
639
+ },
640
+ {
641
+ name: 'variable',
642
+ label: '变量值',
643
+ initialVisible: false,
644
+ dependency:{
645
+ visible:{
646
+ relates:['choiceType'],
647
+ type:({name, values, form}: any) => {
648
+ if(values[0] == 330){
649
+ form.setFieldVisible(name, true)
650
+ }else{
651
+ form.setFieldVisible(name, false)
652
+ }
653
+ }
654
+ }
655
+ },
656
+ field:{
657
+ type:'select',
658
+ props:{
659
+ allowClear: true,
660
+ showSearch: true,
661
+ filterOption: (input: string, option: { props: { children: string } }) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
662
+ }
663
+ },
664
+ remoteSource: {
665
+ url:'/basic/businessVariable/listNoPage',
666
+ params:{
667
+ 'qp-businessType-eq': record.businessType,
668
+ },
669
+ converter:({data}: any) => {
670
+ return data?.map((d:any) => ({
671
+ text: d.name,
672
+ value: d.code
673
+ })) || []
674
+ },
675
+ },
676
+ },
677
+ ...(isShowAndType.isShow ? fieldOfDefaultValue() : []),
678
+ {
679
+ name: 'editableStatus',
680
+ label: '允许编辑状态',
681
+ field: {
682
+ type: 'select',
683
+ props: {
684
+ mode: 'multiple',
685
+ },
686
+ },
687
+ dependency: {
688
+ source: {
689
+ relates: ['inputType'],
690
+ type: (ctx: any) => {
691
+ const { values, form, name } = ctx;
692
+ if (values[0] === 40) {
693
+ form?.setFieldValue(name, null);
694
+ form.setFieldVisible(name, false);
695
+ } else {
696
+ form.setFieldVisible(name, true);
697
+ }
698
+ },
699
+ },
700
+ },
701
+ remoteSource: {
702
+ url: `/basic/flow/businessStatus/listNoPage`,
703
+ params: {
704
+ 'qp-businessType-eq': record.businessType,
705
+ 'qp-status-eq': 1,
706
+ },
707
+ converter: ({ data }: any) => {
708
+ return (
709
+ data?.map((d: any) => ({
710
+ text: d.name,
711
+ value: d.code?.toString(),
712
+ })) || []
713
+ );
714
+ },
715
+ },
716
+ },
717
+ {
718
+ name: 'fieldMapping',
719
+ label:'关联字段',
720
+ initialVisible: lineDetail?.moduleType == 1 || lineDetail?.moduleType == 2,
721
+ initialDisabled: lineDetail?.moduleType == 2,
722
+ rules:[{required: isFieldMappingRequired}],
723
+ field:{
724
+ type:'select',
725
+ props:{
726
+ allowClear: true,
727
+ },
728
+ },
729
+ ...((lineDetail?.moduleRelationId) ? {
730
+ remoteSource:{
731
+ url: lineDetail.moduleType == 1 ? `/basic/planModelField/listNoPage?qp-modelCode-eq=${lineDetail?.moduleRelationId}` : `/basic/flow/businessField/metaFieldMapping?metaEntityCode=${lineDetail?.moduleRelationId}&fieldMapping=${record?.fieldMapping}`,
732
+ method:'get',
733
+ converter:({data}: any) => {
734
+ if(lineDetail.moduleType == 1){
735
+ return data?.map((d:any) => ({
736
+ text: d.fieldName,
737
+ value: d.fieldCode,
738
+ })) || []
739
+ }
740
+ if(lineDetail.moduleType == 2){
741
+ return data?.map((d:any) =>({
742
+ text: d.name,
743
+ value: d.code
744
+ })) || []
745
+ }
746
+ return []
747
+ }
748
+ }
749
+ } : {}),
750
+ }
751
+ ],
752
+ };
753
+
754
+ return (
755
+ <Modal
756
+ {...props}
757
+ width={900}
758
+ maskClosable={false}
759
+ onOk={async () => {
760
+ // @ts-ignore
761
+ const res = await ref?.current?.validateFields();
762
+ res.editableStatus = res.editableStatus?.join(',');
763
+ res.fieldGroup = record.fieldGroup;
764
+ res.businessType = record.businessType;
765
+ res.info = {
766
+ enumeration: res.enumeration,
767
+ dictionaryCode: res.dictionaryCode || res?.['dictionaryCode_dynamic'],
768
+ formula: res.formula,
769
+ scale: res.scale,
770
+ variable: res.variable,
771
+ };
772
+
773
+ res.createVisibleFlag = res.showValue.indexOf('createVisibleFlag') >= 0;
774
+ res.editVisibleFlag = res.showValue.indexOf('editVisibleFlag') >= 0;
775
+ res.createEditableFlag =
776
+ res.showValue.indexOf('createEditableFlag') >= 0;
777
+
778
+ if (res.inputType === 40) {
779
+ res.valueType = 22;
780
+ }
781
+ // 把数组处理成文本
782
+ if (res.inputType === 30) {
783
+ if (res.defaultValue) {
784
+ res.defaultValue = res.defaultValue?.join(',');
785
+ }
786
+ }
787
+
788
+ res.fieldMapping = res.fieldMapping || ''
789
+
790
+ delete res.formula;
791
+ delete res.showValue;
792
+
793
+ if (mode === 'create') {
794
+ request({
795
+ url: `/basic/flow/businessField`,
796
+ method: 'POST',
797
+ params: res,
798
+ successMessage: '创建成功!',
799
+ converter: () => {
800
+ onParentOk();
801
+ },
802
+ });
803
+ return;
804
+ }
805
+ request({
806
+ url: `/basic/flow/businessField/${record.id}`,
807
+ method: 'PATCH',
808
+ params: res,
809
+ successMessage: '修改成功!',
810
+ converter: () => {
811
+ onParentOk();
812
+ },
813
+ });
814
+ }}
815
+ >
816
+ <Form {...formConfig} ref={ref} />
817
+ {maintainOptionsModal.visible && (
818
+ <MaintainOptions {...maintainOptionsModal} />
819
+ )}
820
+ </Modal>
821
+ );
822
+ };
823
+
824
+ export default FieldsModifyModal;