@bit-sun/business-component 3.1.4 → 3.1.6

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 (225) 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/.yarnclean +45 -0
  8. package/README.md +27 -27
  9. package/dist/components/Business/DetailPageWrapper/utils.d.ts +3 -1
  10. package/dist/components/Functional/DataImport/index.d.ts +2 -0
  11. package/dist/components/Functional/DataValidation/index.d.ts +2 -0
  12. package/dist/index.esm.js +403 -43
  13. package/dist/index.js +405 -41
  14. package/dist/utils/LocalstorageUtils.d.ts +1 -0
  15. package/dist/utils/enumConfig.d.ts +1 -0
  16. package/dist/utils/index.d.ts +2 -0
  17. package/dist/utils/xlsxUtil.d.ts +6 -0
  18. package/docs/index.md +21 -21
  19. package/lib/assets/drag.svg +17 -17
  20. package/lib/assets/exportFail.svg +37 -37
  21. package/lib/assets/exportProcessing.svg +28 -28
  22. package/lib/assets/exportSuccess.svg +34 -34
  23. package/lib/assets/label_icon_bottom.svg +25 -25
  24. package/lib/assets/upExport.svg +22 -22
  25. package/package.json +88 -87
  26. package/src/assets/32.svg +27 -27
  27. package/src/assets/addIcon.svg +17 -17
  28. package/src/assets/allfunc.svg +27 -27
  29. package/src/assets/arrowRight.svg +24 -24
  30. package/src/assets/arrow_top.svg +17 -17
  31. package/src/assets/btn-delete.svg +29 -29
  32. package/src/assets/btn-edit.svg +19 -19
  33. package/src/assets/btn-more.svg +17 -17
  34. package/src/assets/btn-submit.svg +19 -19
  35. package/src/assets/caidan.svg +11 -11
  36. package/src/assets/close.svg +26 -26
  37. package/src/assets/drag.svg +17 -17
  38. package/src/assets/exportFail.svg +37 -37
  39. package/src/assets/exportProcessing.svg +28 -28
  40. package/src/assets/exportSuccess.svg +34 -34
  41. package/src/assets/fixed-left-active.svg +11 -11
  42. package/src/assets/fixed-left.svg +15 -15
  43. package/src/assets/fixed-right-active.svg +11 -11
  44. package/src/assets/fixed-right.svg +15 -15
  45. package/src/assets/guanbi.svg +15 -15
  46. package/src/assets/icon-quanping.svg +15 -15
  47. package/src/assets/icon-shezhi.svg +17 -17
  48. package/src/assets/label_icon_bottom.svg +25 -25
  49. package/src/assets/list-no-img.svg +21 -21
  50. package/src/assets/morentouxiang-32.svg +23 -23
  51. package/src/assets/scanning.svg +24 -24
  52. package/src/assets/upExport.svg +22 -22
  53. package/src/common/ENUM.ts +41 -41
  54. package/src/components/Business/AddSelectBusiness/index.md +398 -398
  55. package/src/components/Business/AddSelectBusiness/index.tsx +1116 -1116
  56. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +112 -112
  57. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  58. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  59. package/src/components/Business/BsLayouts/Components/ChooseStore/index.tsx +193 -193
  60. package/src/components/Business/BsLayouts/Components/ChooseStore/services.ts +10 -10
  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 +163 -163
  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/i18n.ts +8 -8
  75. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +172 -172
  76. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  77. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  78. package/src/components/Business/BsLayouts/index.less +79 -79
  79. package/src/components/Business/BsLayouts/index.tsx +1606 -1606
  80. package/src/components/Business/BsLayouts/service.ts +10 -10
  81. package/src/components/Business/BsLayouts/utils.tsx +205 -205
  82. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +566 -566
  83. package/src/components/Business/BsSulaQueryTable/bssulaquerytable.less +5 -5
  84. package/src/components/Business/BsSulaQueryTable/index.less +227 -227
  85. package/src/components/Business/BsSulaQueryTable/index.tsx +772 -772
  86. package/src/components/Business/BsSulaQueryTable/setting.tsx +888 -888
  87. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  88. package/src/components/Business/BsSulaQueryTable/utils.tsx +709 -709
  89. package/src/components/Business/CommodityEntry/index.md +84 -84
  90. package/src/components/Business/CommodityEntry/index.tsx +82 -82
  91. package/src/components/Business/CommonAlert/index.tsx +23 -23
  92. package/src/components/Business/CommonGuideWrapper/index.less +121 -121
  93. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  94. package/src/components/Business/CommonGuideWrapper/index.tsx +94 -94
  95. package/src/components/Business/DetailPageWrapper/index.less +87 -87
  96. package/src/components/Business/DetailPageWrapper/index.tsx +327 -326
  97. package/src/components/Business/DetailPageWrapper/utils.tsx +166 -164
  98. package/src/components/Business/HomePageWrapper/index.less +33 -33
  99. package/src/components/Business/HomePageWrapper/index.md +45 -45
  100. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  101. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +823 -823
  102. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  103. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  104. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  105. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  106. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  107. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  108. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  109. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  110. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  111. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  112. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  113. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  114. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  115. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  116. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  117. package/src/components/Business/JsonQueryTable/index.less +16 -16
  118. package/src/components/Business/JsonQueryTable/index.md +328 -328
  119. package/src/components/Business/JsonQueryTable/index.tsx +534 -534
  120. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  121. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  122. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  123. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  124. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  125. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  126. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  127. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  128. package/src/components/Business/JsonQueryTable/static.ts +450 -450
  129. package/src/components/Business/SearchSelect/BusinessUtils.tsx +2162 -2160
  130. package/src/components/Business/SearchSelect/common.ts +134 -134
  131. package/src/components/Business/SearchSelect/index.md +1512 -1512
  132. package/src/components/Business/SearchSelect/index.tsx +55 -55
  133. package/src/components/Business/SearchSelect/utils.ts +125 -125
  134. package/src/components/Business/StateFlow/index.less +130 -130
  135. package/src/components/Business/StateFlow/index.md +60 -60
  136. package/src/components/Business/StateFlow/index.tsx +29 -29
  137. package/src/components/Business/TreeSearchSelect/index.md +211 -211
  138. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  139. package/src/components/Business/TreeSearchSelect/utils.ts +104 -104
  140. package/src/components/Business/columnSettingTable/columnSetting.tsx +816 -816
  141. package/src/components/Business/columnSettingTable/index.less +253 -253
  142. package/src/components/Business/columnSettingTable/index.md +357 -357
  143. package/src/components/Business/columnSettingTable/index.tsx +226 -226
  144. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +233 -233
  145. package/src/components/Business/columnSettingTable/utils.tsx +87 -87
  146. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  147. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  148. package/src/components/Business/moreTreeTable/index.less +99 -99
  149. package/src/components/Business/moreTreeTable/index.md +448 -448
  150. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  151. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  152. package/src/components/Functional/AccessWrapper/index.tsx +33 -33
  153. package/src/components/Functional/AddSelect/helps.ts +81 -81
  154. package/src/components/Functional/AddSelect/index.less +367 -367
  155. package/src/components/Functional/AddSelect/index.md +155 -155
  156. package/src/components/Functional/AddSelect/index.tsx +1065 -1065
  157. package/src/components/Functional/AuthButton/index.tsx +15 -15
  158. package/src/components/Functional/BillEntry/index.less +371 -371
  159. package/src/components/Functional/BillEntry/index.md +39 -39
  160. package/src/components/Functional/BillEntry/index.tsx +772 -772
  161. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  162. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  163. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  164. package/src/components/Functional/DataImport/index.less +63 -63
  165. package/src/components/Functional/DataImport/index.md +44 -44
  166. package/src/components/Functional/DataImport/index.tsx +783 -706
  167. package/src/components/Functional/DataValidation/index.less +63 -63
  168. package/src/components/Functional/DataValidation/index.md +52 -52
  169. package/src/components/Functional/DataValidation/index.tsx +788 -708
  170. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  171. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  172. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  173. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  174. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +65 -65
  175. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  176. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  177. package/src/components/Functional/QueryMutipleInput/index.tsx +129 -129
  178. package/src/components/Functional/SearchSelect/index.less +121 -121
  179. package/src/components/Functional/SearchSelect/index.md +141 -141
  180. package/src/components/Functional/SearchSelect/index.tsx +1034 -1034
  181. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  182. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  183. package/src/components/Functional/TreeSearchSelect/index.tsx +224 -224
  184. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  185. package/src/components/Solution/RuleComponent/InnerSelect.tsx +62 -62
  186. package/src/components/Solution/RuleComponent/RenderCompItem.tsx +670 -670
  187. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  188. package/src/components/Solution/RuleComponent/index.js +1601 -1601
  189. package/src/components/Solution/RuleComponent/index.less +247 -247
  190. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  191. package/src/components/Solution/RuleComponent/ruleFiled.js +2293 -2293
  192. package/src/components/Solution/RuleComponent/services.ts +13 -13
  193. package/src/components/Solution/RuleComponent/util.js +143 -143
  194. package/src/components/Solution/RuleSetter/RuleInstance.tsx +6 -6
  195. package/src/components/Solution/RuleSetter/baseRule.tsx +394 -394
  196. package/src/components/Solution/RuleSetter/function.ts +437 -437
  197. package/src/components/Solution/RuleSetter/index.less +221 -221
  198. package/src/components/Solution/RuleSetter/index.tsx +208 -208
  199. package/src/components/Solution/RuleSetter/service.js +276 -276
  200. package/src/index.ts +41 -41
  201. package/src/plugin/TableColumnSetting/index.less +247 -247
  202. package/src/plugin/TableColumnSetting/index.md +50 -50
  203. package/src/plugin/TableColumnSetting/index.tsx +725 -725
  204. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  205. package/src/styles/bsDefault.less +1933 -1933
  206. package/src/utils/CheckOneUser/index.md +39 -39
  207. package/src/utils/CheckOneUser/index.ts +51 -51
  208. package/src/utils/CustomLoginInfo.ts +55 -55
  209. package/src/utils/LocalstorageUtils.ts +134 -128
  210. package/src/utils/TableUtils.less +51 -51
  211. package/src/utils/TableUtils.tsx +691 -691
  212. package/src/utils/auth.ts +38 -38
  213. package/src/utils/businessUtils.ts +434 -434
  214. package/src/utils/checkUtils.ts +39 -39
  215. package/src/utils/constant.ts +38 -38
  216. package/src/utils/enumConfig.ts +17 -16
  217. package/src/utils/getFormMode.js +12 -12
  218. package/src/utils/index.ts +19 -16
  219. package/src/utils/request.ts +53 -53
  220. package/src/utils/requestUtils.ts +193 -193
  221. package/src/utils/serialize.js +7 -7
  222. package/src/utils/utils.ts +238 -238
  223. package/src/utils/xlsxUtil.tsx +146 -0
  224. package/tsconfig.json +29 -29
  225. package/typings.d.ts +4 -4
@@ -1,823 +1,823 @@
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
- form?.setFieldValue(
391
- 'formula',
392
- formulaArray
393
- .map((item:any) => {
394
- if (
395
- ['+', '-', '*', '/', '(', ')'].indexOf(item.value) == -1
396
- ) {
397
- return `{${item.value}}`;
398
- }
399
- return item.value;
400
- })
401
- .join(''),
402
- );
403
- };
404
-
405
- const formula = form.getFieldValue('formula');
406
-
407
- return (
408
- <div style={{ display: 'flex', width: '868px' }}>
409
- <Formula
410
- formula={formula}
411
- setValue={setValue}
412
- record={{ ...record }}
413
- />
414
- </div>
415
- );
416
- },
417
- },
418
- initialDisabled: mode !== 'create',
419
- initialVisible: false,
420
- dependency: {
421
- source: {
422
- relates: ['inputType'],
423
- type: (ctx: any) => {
424
- const { values, form, name } = ctx;
425
- if (values[0] === 40) {
426
- form.setFieldVisible(name, true);
427
- } else {
428
- form.setFieldVisible(name, false);
429
- }
430
- },
431
- },
432
- },
433
- rules: [{ required: true }],
434
- },
435
- {
436
- name: 'valueType',
437
- label: '字段类型',
438
- field: {
439
- type: 'select',
440
- },
441
- initialDisabled: mode !== 'create',
442
- initialSource: Object.keys(valueType).map((d: any) => ({
443
- text: valueType[d],
444
- value: Number(d),
445
- })),
446
- dependency: {
447
- source: {
448
- relates: ['inputType'],
449
- type: (ctx: any) => {
450
- const { values, form, name } = ctx;
451
- if (values[0] === 40) {
452
- form?.setFieldValue(name, null);
453
- form.setFieldVisible(name, false);
454
- }
455
- if (mode === 'create') {
456
- if (values[0] && values[0] === 10) {
457
- form?.setFieldValue(name, null);
458
- form.setFieldDisabled(name, false);
459
- } else {
460
- form?.setFieldValue(name, 10);
461
- form.setFieldDisabled(name, true);
462
- }
463
- }
464
- },
465
- },
466
- },
467
- rules: [{ required: true }],
468
- },
469
- {
470
- name: 'showValue',
471
- label: '显示属性',
472
- field: {
473
- type: 'checkboxgroup',
474
- },
475
- initialValue: [
476
- 'createVisibleFlag',
477
- 'editVisibleFlag',
478
- 'createEditableFlag',
479
- ],
480
- initialSource: [
481
- { text: '新增时显示', value: 'createVisibleFlag' },
482
- { text: '编辑时显示', value: 'editVisibleFlag' },
483
- { text: '新增时编辑', value: 'createEditableFlag' },
484
- ],
485
- },
486
- {
487
- name: 'choiceType',
488
- label: '选项集',
489
- field: {
490
- type: 'select',
491
- props: {
492
- onChange: handleChoiceTypeChange,
493
- showSearch: true,
494
- filterOption: (input: any, option: any) =>
495
- option.props.children
496
- .toLowerCase()
497
- .indexOf(input.toLowerCase()) >= 0,
498
- },
499
- },
500
- initialVisible: false,
501
- initialDisabled: mode !== 'create',
502
- initialSource: Object.keys(choiceType).map((d: any) => ({
503
- text: choiceType[d],
504
- value: Number(d),
505
- })),
506
- dependencies: ['inputType'],
507
- dependency: {
508
- source: {
509
- relates: ['inputType'],
510
- type: ({ form, name, values }: any) => {
511
- const flag = values[0] === 20 || values[0] === 30;
512
- form.setFieldVisible(name, flag);
513
- },
514
- },
515
- },
516
- rules: [
517
- ({ getFieldValue }: any) => {
518
- const value = getFieldValue('inputType');
519
- const flag = value === 20 || value === 30;
520
- return {
521
- required: flag,
522
- };
523
- },
524
- ],
525
- },
526
- {
527
- name: 'dictionaryCode',
528
- label: '数据字典',
529
- field: {
530
- type: 'bs-searchSelect',
531
- props: {
532
- requestConfig: {
533
- url: `/basic/bscDict/getBscDictList`,
534
- filter: 'qp-name-like',
535
- mappingTextField: 'name',
536
- mappingValueField: 'code',
537
- },
538
- },
539
- },
540
- initialVisible: false,
541
- dependency: {
542
- source: {
543
- relates: ['choiceType', 'inputType'],
544
- type: ({ values, name, form }: any) => {
545
- if (values[1] === 40) {
546
- form?.setFieldValue(name, null);
547
- form.setFieldVisible(name, false);
548
- }
549
-
550
- if (values[0] === 20) {
551
- form.setFieldVisible(name, true);
552
- } else {
553
- form.setFieldVisible(name, false);
554
- }
555
- },
556
- },
557
- },
558
- },
559
- {
560
- name: 'dictionaryCode_dynamic',
561
- label: '数据字典',
562
- field: {
563
- type: 'select',
564
- },
565
- initialVisible: false,
566
- dependency: {
567
- source: {
568
- relates: ['choiceType', 'inputType'],
569
- type: async ({ values, name, form }: any) => {
570
- if (values[1] === 40) {
571
- form?.setFieldValue(name, null);
572
- form.setFieldVisible(name, false);
573
- }
574
-
575
- if (values[0] === 30) {
576
- const source = await request({
577
- url:'/basic/dictDynamicItem/queryList',
578
- converter:({data}: any) => {
579
- return data?.map((d:any) => ({
580
- text: d.dictCode,
581
- value: d.dictCode,
582
- }))
583
- }
584
- })
585
- form?.setFieldSource(name, source)
586
- form.setFieldVisible(name, true);
587
- } else {
588
- form.setFieldVisible(name, false);
589
- }
590
- },
591
- },
592
- },
593
- },
594
- {
595
- name: 'enumeration',
596
- label: '维护自定义选项',
597
- field: {
598
- type: ({ form }: any) => {
599
- return (
600
- <Button
601
- type={'link'}
602
- onClick={() => {
603
- setMaintainOptionsModal({
604
- ...maintainOptionsModal,
605
- visible: true,
606
- record: {
607
- choiceInfo: form.getFieldValue('enumeration'),
608
- },
609
- onParentOk: (rows:any) => {
610
- const obj:any = {};
611
- rows.forEach((d: any) => {
612
- obj[d.value] = d.text;
613
- });
614
- form?.setFieldValue('enumeration', obj);
615
- maintainOptionsModal.onCancel();
616
- },
617
- });
618
- }}
619
- >
620
- 点击维护自定义选项
621
- </Button>
622
- );
623
- },
624
- },
625
- initialVisible: false,
626
- dependency: {
627
- source: {
628
- relates: ['choiceType'],
629
- type: ({ values, name, form }: any) => {
630
- if (values[0] === 10) {
631
- form.setFieldVisible(name, true);
632
- } else {
633
- form.setFieldVisible(name, false);
634
- }
635
- },
636
- },
637
- },
638
- },
639
- {
640
- name: 'variable',
641
- label: '变量值',
642
- initialVisible: false,
643
- dependency:{
644
- visible:{
645
- relates:['choiceType'],
646
- type:({name, values, form}: any) => {
647
- if(values[0] == 330){
648
- form.setFieldVisible(name, true)
649
- }else{
650
- form.setFieldVisible(name, false)
651
- }
652
- }
653
- }
654
- },
655
- field:{
656
- type:'select',
657
- props:{
658
- allowClear: true,
659
- showSearch: true,
660
- filterOption: (input: string, option: { props: { children: string } }) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
661
- }
662
- },
663
- remoteSource: {
664
- url:'/basic/businessVariable/listNoPage',
665
- params:{
666
- 'qp-businessType-eq': record.businessType,
667
- },
668
- converter:({data}: any) => {
669
- return data?.map((d:any) => ({
670
- text: d.name,
671
- value: d.code
672
- })) || []
673
- },
674
- },
675
- },
676
- ...(isShowAndType.isShow ? fieldOfDefaultValue() : []),
677
- {
678
- name: 'editableStatus',
679
- label: '允许编辑状态',
680
- field: {
681
- type: 'select',
682
- props: {
683
- mode: 'multiple',
684
- },
685
- },
686
- dependency: {
687
- source: {
688
- relates: ['inputType'],
689
- type: (ctx: any) => {
690
- const { values, form, name } = ctx;
691
- if (values[0] === 40) {
692
- form?.setFieldValue(name, null);
693
- form.setFieldVisible(name, false);
694
- } else {
695
- form.setFieldVisible(name, true);
696
- }
697
- },
698
- },
699
- },
700
- remoteSource: {
701
- url: `/basic/flow/businessStatus/listNoPage`,
702
- params: {
703
- 'qp-businessType-eq': record.businessType,
704
- 'qp-status-eq': 1,
705
- },
706
- converter: ({ data }: any) => {
707
- return (
708
- data?.map((d: any) => ({
709
- text: d.name,
710
- value: d.code?.toString(),
711
- })) || []
712
- );
713
- },
714
- },
715
- },
716
- {
717
- name: 'fieldMapping',
718
- label:'关联字段',
719
- initialVisible: lineDetail?.moduleType == 1 || lineDetail?.moduleType == 2,
720
- initialDisabled: lineDetail?.moduleType == 2,
721
- rules:[{required: isFieldMappingRequired}],
722
- field:{
723
- type:'select',
724
- props:{
725
- allowClear: true,
726
- },
727
- },
728
- ...((lineDetail?.moduleRelationId) ? {
729
- remoteSource:{
730
- url: lineDetail.moduleType == 1 ? `/basic/planModelField/listNoPage?qp-modelCode-eq=${lineDetail?.moduleRelationId}` : `/basic/flow/businessField/metaFieldMapping?metaEntityCode=${lineDetail?.moduleRelationId}&fieldMapping=${record?.fieldMapping}`,
731
- method:'get',
732
- converter:({data}: any) => {
733
- if(lineDetail.moduleType == 1){
734
- return data?.map((d:any) => ({
735
- text: d.fieldName,
736
- value: d.fieldCode,
737
- })) || []
738
- }
739
- if(lineDetail.moduleType == 2){
740
- return data?.map((d:any) =>({
741
- text: d.name,
742
- value: d.code
743
- })) || []
744
- }
745
- return []
746
- }
747
- }
748
- } : {}),
749
- }
750
- ],
751
- };
752
-
753
- return (
754
- <Modal
755
- {...props}
756
- width={900}
757
- maskClosable={false}
758
- onOk={async () => {
759
- // @ts-ignore
760
- const res = await ref?.current?.validateFields();
761
- res.editableStatus = res.editableStatus?.join(',');
762
- res.fieldGroup = record.fieldGroup;
763
- res.businessType = record.businessType;
764
- res.info = {
765
- enumeration: res.enumeration,
766
- dictionaryCode: res.dictionaryCode || res?.['dictionaryCode_dynamic'],
767
- formula: res.formula,
768
- scale: res.scale,
769
- variable: res.variable,
770
- };
771
-
772
- res.createVisibleFlag = res.showValue.indexOf('createVisibleFlag') >= 0;
773
- res.editVisibleFlag = res.showValue.indexOf('editVisibleFlag') >= 0;
774
- res.createEditableFlag =
775
- res.showValue.indexOf('createEditableFlag') >= 0;
776
-
777
- if (res.inputType === 40) {
778
- res.valueType = 22;
779
- }
780
- // 把数组处理成文本
781
- if (res.inputType === 30) {
782
- if (res.defaultValue) {
783
- res.defaultValue = res.defaultValue?.join(',');
784
- }
785
- }
786
-
787
- res.fieldMapping = res.fieldMapping || ''
788
-
789
- delete res.formula;
790
- delete res.showValue;
791
-
792
- if (mode === 'create') {
793
- request({
794
- url: `/basic/flow/businessField`,
795
- method: 'POST',
796
- params: res,
797
- successMessage: '创建成功!',
798
- converter: () => {
799
- onParentOk();
800
- },
801
- });
802
- return;
803
- }
804
- request({
805
- url: `/basic/flow/businessField/${record.id}`,
806
- method: 'PATCH',
807
- params: res,
808
- successMessage: '修改成功!',
809
- converter: () => {
810
- onParentOk();
811
- },
812
- });
813
- }}
814
- >
815
- <Form {...formConfig} ref={ref} />
816
- {maintainOptionsModal.visible && (
817
- <MaintainOptions {...maintainOptionsModal} />
818
- )}
819
- </Modal>
820
- );
821
- };
822
-
823
- 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
+ form?.setFieldValue(
391
+ 'formula',
392
+ formulaArray
393
+ .map((item:any) => {
394
+ if (
395
+ ['+', '-', '*', '/', '(', ')'].indexOf(item.value) == -1
396
+ ) {
397
+ return `{${item.value}}`;
398
+ }
399
+ return item.value;
400
+ })
401
+ .join(''),
402
+ );
403
+ };
404
+
405
+ const formula = form.getFieldValue('formula');
406
+
407
+ return (
408
+ <div style={{ display: 'flex', width: '868px' }}>
409
+ <Formula
410
+ formula={formula}
411
+ setValue={setValue}
412
+ record={{ ...record }}
413
+ />
414
+ </div>
415
+ );
416
+ },
417
+ },
418
+ initialDisabled: mode !== 'create',
419
+ initialVisible: false,
420
+ dependency: {
421
+ source: {
422
+ relates: ['inputType'],
423
+ type: (ctx: any) => {
424
+ const { values, form, name } = ctx;
425
+ if (values[0] === 40) {
426
+ form.setFieldVisible(name, true);
427
+ } else {
428
+ form.setFieldVisible(name, false);
429
+ }
430
+ },
431
+ },
432
+ },
433
+ rules: [{ required: true }],
434
+ },
435
+ {
436
+ name: 'valueType',
437
+ label: '字段类型',
438
+ field: {
439
+ type: 'select',
440
+ },
441
+ initialDisabled: mode !== 'create',
442
+ initialSource: Object.keys(valueType).map((d: any) => ({
443
+ text: valueType[d],
444
+ value: Number(d),
445
+ })),
446
+ dependency: {
447
+ source: {
448
+ relates: ['inputType'],
449
+ type: (ctx: any) => {
450
+ const { values, form, name } = ctx;
451
+ if (values[0] === 40) {
452
+ form?.setFieldValue(name, null);
453
+ form.setFieldVisible(name, false);
454
+ }
455
+ if (mode === 'create') {
456
+ if (values[0] && values[0] === 10) {
457
+ form?.setFieldValue(name, null);
458
+ form.setFieldDisabled(name, false);
459
+ } else {
460
+ form?.setFieldValue(name, 10);
461
+ form.setFieldDisabled(name, true);
462
+ }
463
+ }
464
+ },
465
+ },
466
+ },
467
+ rules: [{ required: true }],
468
+ },
469
+ {
470
+ name: 'showValue',
471
+ label: '显示属性',
472
+ field: {
473
+ type: 'checkboxgroup',
474
+ },
475
+ initialValue: [
476
+ 'createVisibleFlag',
477
+ 'editVisibleFlag',
478
+ 'createEditableFlag',
479
+ ],
480
+ initialSource: [
481
+ { text: '新增时显示', value: 'createVisibleFlag' },
482
+ { text: '编辑时显示', value: 'editVisibleFlag' },
483
+ { text: '新增时编辑', value: 'createEditableFlag' },
484
+ ],
485
+ },
486
+ {
487
+ name: 'choiceType',
488
+ label: '选项集',
489
+ field: {
490
+ type: 'select',
491
+ props: {
492
+ onChange: handleChoiceTypeChange,
493
+ showSearch: true,
494
+ filterOption: (input: any, option: any) =>
495
+ option.props.children
496
+ .toLowerCase()
497
+ .indexOf(input.toLowerCase()) >= 0,
498
+ },
499
+ },
500
+ initialVisible: false,
501
+ initialDisabled: mode !== 'create',
502
+ initialSource: Object.keys(choiceType).map((d: any) => ({
503
+ text: choiceType[d],
504
+ value: Number(d),
505
+ })),
506
+ dependencies: ['inputType'],
507
+ dependency: {
508
+ source: {
509
+ relates: ['inputType'],
510
+ type: ({ form, name, values }: any) => {
511
+ const flag = values[0] === 20 || values[0] === 30;
512
+ form.setFieldVisible(name, flag);
513
+ },
514
+ },
515
+ },
516
+ rules: [
517
+ ({ getFieldValue }: any) => {
518
+ const value = getFieldValue('inputType');
519
+ const flag = value === 20 || value === 30;
520
+ return {
521
+ required: flag,
522
+ };
523
+ },
524
+ ],
525
+ },
526
+ {
527
+ name: 'dictionaryCode',
528
+ label: '数据字典',
529
+ field: {
530
+ type: 'bs-searchSelect',
531
+ props: {
532
+ requestConfig: {
533
+ url: `/basic/bscDict/getBscDictList`,
534
+ filter: 'qp-name-like',
535
+ mappingTextField: 'name',
536
+ mappingValueField: 'code',
537
+ },
538
+ },
539
+ },
540
+ initialVisible: false,
541
+ dependency: {
542
+ source: {
543
+ relates: ['choiceType', 'inputType'],
544
+ type: ({ values, name, form }: any) => {
545
+ if (values[1] === 40) {
546
+ form?.setFieldValue(name, null);
547
+ form.setFieldVisible(name, false);
548
+ }
549
+
550
+ if (values[0] === 20) {
551
+ form.setFieldVisible(name, true);
552
+ } else {
553
+ form.setFieldVisible(name, false);
554
+ }
555
+ },
556
+ },
557
+ },
558
+ },
559
+ {
560
+ name: 'dictionaryCode_dynamic',
561
+ label: '数据字典',
562
+ field: {
563
+ type: 'select',
564
+ },
565
+ initialVisible: false,
566
+ dependency: {
567
+ source: {
568
+ relates: ['choiceType', 'inputType'],
569
+ type: async ({ values, name, form }: any) => {
570
+ if (values[1] === 40) {
571
+ form?.setFieldValue(name, null);
572
+ form.setFieldVisible(name, false);
573
+ }
574
+
575
+ if (values[0] === 30) {
576
+ const source = await request({
577
+ url:'/basic/dictDynamicItem/queryList',
578
+ converter:({data}: any) => {
579
+ return data?.map((d:any) => ({
580
+ text: d.dictCode,
581
+ value: d.dictCode,
582
+ }))
583
+ }
584
+ })
585
+ form?.setFieldSource(name, source)
586
+ form.setFieldVisible(name, true);
587
+ } else {
588
+ form.setFieldVisible(name, false);
589
+ }
590
+ },
591
+ },
592
+ },
593
+ },
594
+ {
595
+ name: 'enumeration',
596
+ label: '维护自定义选项',
597
+ field: {
598
+ type: ({ form }: any) => {
599
+ return (
600
+ <Button
601
+ type={'link'}
602
+ onClick={() => {
603
+ setMaintainOptionsModal({
604
+ ...maintainOptionsModal,
605
+ visible: true,
606
+ record: {
607
+ choiceInfo: form.getFieldValue('enumeration'),
608
+ },
609
+ onParentOk: (rows:any) => {
610
+ const obj:any = {};
611
+ rows.forEach((d: any) => {
612
+ obj[d.value] = d.text;
613
+ });
614
+ form?.setFieldValue('enumeration', obj);
615
+ maintainOptionsModal.onCancel();
616
+ },
617
+ });
618
+ }}
619
+ >
620
+ 点击维护自定义选项
621
+ </Button>
622
+ );
623
+ },
624
+ },
625
+ initialVisible: false,
626
+ dependency: {
627
+ source: {
628
+ relates: ['choiceType'],
629
+ type: ({ values, name, form }: any) => {
630
+ if (values[0] === 10) {
631
+ form.setFieldVisible(name, true);
632
+ } else {
633
+ form.setFieldVisible(name, false);
634
+ }
635
+ },
636
+ },
637
+ },
638
+ },
639
+ {
640
+ name: 'variable',
641
+ label: '变量值',
642
+ initialVisible: false,
643
+ dependency:{
644
+ visible:{
645
+ relates:['choiceType'],
646
+ type:({name, values, form}: any) => {
647
+ if(values[0] == 330){
648
+ form.setFieldVisible(name, true)
649
+ }else{
650
+ form.setFieldVisible(name, false)
651
+ }
652
+ }
653
+ }
654
+ },
655
+ field:{
656
+ type:'select',
657
+ props:{
658
+ allowClear: true,
659
+ showSearch: true,
660
+ filterOption: (input: string, option: { props: { children: string } }) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
661
+ }
662
+ },
663
+ remoteSource: {
664
+ url:'/basic/businessVariable/listNoPage',
665
+ params:{
666
+ 'qp-businessType-eq': record.businessType,
667
+ },
668
+ converter:({data}: any) => {
669
+ return data?.map((d:any) => ({
670
+ text: d.name,
671
+ value: d.code
672
+ })) || []
673
+ },
674
+ },
675
+ },
676
+ ...(isShowAndType.isShow ? fieldOfDefaultValue() : []),
677
+ {
678
+ name: 'editableStatus',
679
+ label: '允许编辑状态',
680
+ field: {
681
+ type: 'select',
682
+ props: {
683
+ mode: 'multiple',
684
+ },
685
+ },
686
+ dependency: {
687
+ source: {
688
+ relates: ['inputType'],
689
+ type: (ctx: any) => {
690
+ const { values, form, name } = ctx;
691
+ if (values[0] === 40) {
692
+ form?.setFieldValue(name, null);
693
+ form.setFieldVisible(name, false);
694
+ } else {
695
+ form.setFieldVisible(name, true);
696
+ }
697
+ },
698
+ },
699
+ },
700
+ remoteSource: {
701
+ url: `/basic/flow/businessStatus/listNoPage`,
702
+ params: {
703
+ 'qp-businessType-eq': record.businessType,
704
+ 'qp-status-eq': 1,
705
+ },
706
+ converter: ({ data }: any) => {
707
+ return (
708
+ data?.map((d: any) => ({
709
+ text: d.name,
710
+ value: d.code?.toString(),
711
+ })) || []
712
+ );
713
+ },
714
+ },
715
+ },
716
+ {
717
+ name: 'fieldMapping',
718
+ label:'关联字段',
719
+ initialVisible: lineDetail?.moduleType == 1 || lineDetail?.moduleType == 2,
720
+ initialDisabled: lineDetail?.moduleType == 2,
721
+ rules:[{required: isFieldMappingRequired}],
722
+ field:{
723
+ type:'select',
724
+ props:{
725
+ allowClear: true,
726
+ },
727
+ },
728
+ ...((lineDetail?.moduleRelationId) ? {
729
+ remoteSource:{
730
+ url: lineDetail.moduleType == 1 ? `/basic/planModelField/listNoPage?qp-modelCode-eq=${lineDetail?.moduleRelationId}` : `/basic/flow/businessField/metaFieldMapping?metaEntityCode=${lineDetail?.moduleRelationId}&fieldMapping=${record?.fieldMapping}`,
731
+ method:'get',
732
+ converter:({data}: any) => {
733
+ if(lineDetail.moduleType == 1){
734
+ return data?.map((d:any) => ({
735
+ text: d.fieldName,
736
+ value: d.fieldCode,
737
+ })) || []
738
+ }
739
+ if(lineDetail.moduleType == 2){
740
+ return data?.map((d:any) =>({
741
+ text: d.name,
742
+ value: d.code
743
+ })) || []
744
+ }
745
+ return []
746
+ }
747
+ }
748
+ } : {}),
749
+ }
750
+ ],
751
+ };
752
+
753
+ return (
754
+ <Modal
755
+ {...props}
756
+ width={900}
757
+ maskClosable={false}
758
+ onOk={async () => {
759
+ // @ts-ignore
760
+ const res = await ref?.current?.validateFields();
761
+ res.editableStatus = res.editableStatus?.join(',');
762
+ res.fieldGroup = record.fieldGroup;
763
+ res.businessType = record.businessType;
764
+ res.info = {
765
+ enumeration: res.enumeration,
766
+ dictionaryCode: res.dictionaryCode || res?.['dictionaryCode_dynamic'],
767
+ formula: res.formula,
768
+ scale: res.scale,
769
+ variable: res.variable,
770
+ };
771
+
772
+ res.createVisibleFlag = res.showValue.indexOf('createVisibleFlag') >= 0;
773
+ res.editVisibleFlag = res.showValue.indexOf('editVisibleFlag') >= 0;
774
+ res.createEditableFlag =
775
+ res.showValue.indexOf('createEditableFlag') >= 0;
776
+
777
+ if (res.inputType === 40) {
778
+ res.valueType = 22;
779
+ }
780
+ // 把数组处理成文本
781
+ if (res.inputType === 30) {
782
+ if (res.defaultValue) {
783
+ res.defaultValue = res.defaultValue?.join(',');
784
+ }
785
+ }
786
+
787
+ res.fieldMapping = res.fieldMapping || ''
788
+
789
+ delete res.formula;
790
+ delete res.showValue;
791
+
792
+ if (mode === 'create') {
793
+ request({
794
+ url: `/basic/flow/businessField`,
795
+ method: 'POST',
796
+ params: res,
797
+ successMessage: '创建成功!',
798
+ converter: () => {
799
+ onParentOk();
800
+ },
801
+ });
802
+ return;
803
+ }
804
+ request({
805
+ url: `/basic/flow/businessField/${record.id}`,
806
+ method: 'PATCH',
807
+ params: res,
808
+ successMessage: '修改成功!',
809
+ converter: () => {
810
+ onParentOk();
811
+ },
812
+ });
813
+ }}
814
+ >
815
+ <Form {...formConfig} ref={ref} />
816
+ {maintainOptionsModal.visible && (
817
+ <MaintainOptions {...maintainOptionsModal} />
818
+ )}
819
+ </Modal>
820
+ );
821
+ };
822
+
823
+ export default FieldsModifyModal;