@bchr/bchr-front-lib 0.3.87 → 0.3.91

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.
@@ -0,0 +1,3 @@
1
+ /** 全局颜色 **/
2
+ /** 常用色值 **/
3
+ /** 常用字体大小 **/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bchr/bchr-front-lib",
3
- "version": "0.3.87",
3
+ "version": "0.3.91",
4
4
  "description": "bchr front lib",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -4,6 +4,8 @@ const UI_RENDER_TYPE = {
4
4
  INPUT_NUMBER: "inputNumber",
5
5
  TEXT_AREA: "textArea",
6
6
  DATE: "date",
7
+ DATE_YEAR: "dateYear",
8
+ DATE_MONTH: "dateMonth",
7
9
  DATE_TIME: "dateTime",
8
10
  SELECT: "select",
9
11
  TREE_SELECT: "treeSelect",
@@ -15,7 +15,6 @@ class FormForBrowse extends React.Component{
15
15
 
16
16
  componentDidMount() {
17
17
  let {initialValues} = this.props;
18
-
19
18
  if (Array.isArray(initialValues)) {
20
19
  initialValues = initialValues[0] || {};
21
20
  }
@@ -94,11 +93,42 @@ class FormForBrowse extends React.Component{
94
93
  )
95
94
  }
96
95
 
97
- buildFormItems = () => {
98
- let {info_set_fields, ext_form_items} = this.props;
96
+ buildFormItems = (editFormulasState) => {
97
+ let {initialValues, info_set_fields, ext_form_items} = this.props;
99
98
 
100
99
  if (info_set_fields && info_set_fields.length > 0) {
101
100
 
101
+ info_set_fields.forEach(formItem => {
102
+ formItem.initialValue = null;
103
+
104
+ this.preParseFormItemExtConfig(formItem);
105
+
106
+ if (formItem.editFormulaConfigs) {
107
+ for (let i = 0, len = formItem.editFormulaConfigs.length; i < len; i++) {
108
+ let editFormulaConfig = formItem.editFormulaConfigs[i];
109
+ let initialValue = formItem.ui_render_type === 'switch' ? (initialValues[formItem.code] || '').toLowerCase() !== 'true' : initialValues[formItem.code];
110
+ let formulaValueOf = formItem.ui_render_type === 'switch' ? (editFormulaConfig.onValueOf || '').toLowerCase() !== 'true' : editFormulaConfig.onValueOf;
111
+
112
+ if (formulaValueOf === initialValue) {
113
+ let currentOtherFormItemResponses = editFormulaConfig.otherFormItemResponses;
114
+ currentOtherFormItemResponses.forEach(item => {
115
+ info_set_fields.forEach(formItemInner => {
116
+ if (formItemInner.code === item.formItemCode) {
117
+ if (item.formItemValue === 'disabled') {
118
+ formItemInner.b_disabled = true;
119
+ } else if (item.formItemValue === 'enabled') {
120
+ formItemInner.b_disabled = false;
121
+ }
122
+ }
123
+ })
124
+ })
125
+ }
126
+
127
+ }
128
+
129
+ }
130
+ })
131
+
102
132
  let groupNames = info_set_fields.map(item => item.belong_form_group).filter((item, index, arr) => item && item.trim().length > 0 && arr.indexOf(item) === index);
103
133
 
104
134
  if (groupNames.length > 0) {
@@ -167,6 +197,81 @@ class FormForBrowse extends React.Component{
167
197
  }
168
198
  };
169
199
 
200
+ preParseFormItemExtConfig = (formItem) => {
201
+ let formulas = formItem['edit_formula'];
202
+ if (formulas && formulas.length > 5) {
203
+ let rawFormulaTextArray = formulas.split(';');
204
+ let pureFormulaTextItems = [];
205
+ for (let i = 0, len = rawFormulaTextArray.length; i < len; i++) {
206
+ let rawFormulaTextItem = rawFormulaTextArray[i];
207
+ if (rawFormulaTextItem && rawFormulaTextItem.trim().length > 0) {
208
+ pureFormulaTextItems.push(rawFormulaTextItem.trim());
209
+ }
210
+ }
211
+
212
+ if (pureFormulaTextItems.length === 0) {
213
+ return;
214
+ }
215
+
216
+ let editFormulaConfigs = [];
217
+
218
+ for (let i = 0, len = pureFormulaTextItems.length; i < len; i++) {
219
+ let formulaTextItem = pureFormulaTextItems[i];
220
+ let formulaChildTextItems = formulaTextItem.split("=>");
221
+
222
+ if (formulaChildTextItems.length !== 2) {
223
+ continue;
224
+ }
225
+
226
+ let formItemValueText = formulaChildTextItems[0].trim();
227
+ let onChangeEventText = formulaChildTextItems[1].trim()
228
+ if (formItemValueText.length === 0 || onChangeEventText.length === 0) {
229
+ continue;
230
+ }
231
+
232
+ if (formItemValueText.startsWith("(") && formItemValueText.endsWith(")")) {
233
+ formItemValueText = formItemValueText.substr(1, formItemValueText.length - 2);
234
+ }
235
+
236
+ let editFormulaConfig = {
237
+ onValueOf : formItemValueText,
238
+ otherFormItemResponses : []
239
+ };
240
+
241
+ if (onChangeEventText.startsWith("(") && onChangeEventText.endsWith(")")) {
242
+ onChangeEventText = onChangeEventText.substr(1, onChangeEventText.length - 2);
243
+ }
244
+
245
+
246
+ let otherFormItemResponseStates = onChangeEventText.split(",")
247
+ for (let m = 0, count = otherFormItemResponseStates.length; m < count; m++) {
248
+ let otherFormItemResponseState = otherFormItemResponseStates[m];
249
+ let otherFormItemResponseOptions = otherFormItemResponseState.split(":");
250
+ if (otherFormItemResponseOptions.length === 2) {
251
+ let otherFormItemCode = otherFormItemResponseOptions[0].trim();
252
+ let otherFormItemValue = otherFormItemResponseOptions[1].trim();
253
+ if (otherFormItemCode.length && otherFormItemValue.length > 0) {
254
+ let otherFormItemResponse = {
255
+ formItemCode : otherFormItemCode,
256
+ formItemValue : otherFormItemValue
257
+ }
258
+
259
+ editFormulaConfig.otherFormItemResponses.push(otherFormItemResponse)
260
+ }
261
+ }
262
+ }
263
+
264
+ if (editFormulaConfig.onValueOf && editFormulaConfig.otherFormItemResponses.length > 0) {
265
+ editFormulaConfigs.push(editFormulaConfig);
266
+ }
267
+ }
268
+
269
+ if (editFormulaConfigs.length > 0) {
270
+ formItem.editFormulaConfigs = editFormulaConfigs;
271
+ }
272
+ }
273
+ }
274
+
170
275
  generatorFormItem = (dataItem, is_ext_field) => {
171
276
  if (is_ext_field) {
172
277
 
@@ -178,7 +283,7 @@ class FormForBrowse extends React.Component{
178
283
  key={dataItem.code}
179
284
  label={dataItem.label}
180
285
  name={dataItem.name}
181
- rules={[{ required: dataItem.required}]}
286
+ rules={[{ required: !dataItem.b_disabled && dataItem.required}]}
182
287
  >
183
288
  {dataItem.render}
184
289
  </Form.Item>
@@ -193,7 +298,7 @@ class FormForBrowse extends React.Component{
193
298
  initialValues = initialValues[0] || {};
194
299
  }
195
300
 
196
- let {ui_render_type, ref_pk, code, display_code, b_multiple, upload_file_biz_object_type} = dataItem;
301
+ let {ui_render_type, ref_pk, code, display_code, b_multiple, b_disabled, upload_file_biz_object_type} = dataItem;
197
302
  let value;
198
303
 
199
304
  display_code = display_code || code;
@@ -215,6 +320,12 @@ class FormForBrowse extends React.Component{
215
320
  case UI_RENDER_TYPE.DATE:
216
321
  value = (initialValues[display_code] ? moment(initialValues[display_code]).format("YYYY-MM-DD") : "");
217
322
  break;
323
+ case UI_RENDER_TYPE.DATE_YEAR:
324
+ value = (initialValues[display_code] ? moment(initialValues[display_code], 'YYYY').format("YYYY") : "");
325
+ break;
326
+ case UI_RENDER_TYPE.DATE_MONTH:
327
+ value = (initialValues[display_code] ? moment(initialValues[display_code], 'YYYYMM').format("YYYY-MM") : "");
328
+ break;
218
329
  case UI_RENDER_TYPE.DATE_TIME:
219
330
  value = (initialValues[display_code] ? moment(initialValues[display_code]).format("YYYY-MM-DD hh:mm:ss") : "");
220
331
  break;
@@ -295,7 +406,7 @@ class FormForBrowse extends React.Component{
295
406
  </Fragment>
296
407
  }
297
408
  name={dataItem.code}
298
- rules={[{ required: dataItem.b_required}]}
409
+ rules={[{ required: (!dataItem.b_disabled && dataItem.b_required)}]}
299
410
  >
300
411
  {components}
301
412
  </Form.Item>
@@ -35,6 +35,23 @@ class FormForModify extends React.Component{
35
35
  }
36
36
 
37
37
  componentDidMount() {
38
+ let {data, info_set_fields} = this.props;
39
+ let {editFormulasState} = this.state;
40
+ info_set_fields.forEach(formItem => {
41
+ this.preParseFormItemExtConfig(formItem);
42
+ if (formItem.editFormulaConfigs) {
43
+ for (let i = 0, len = formItem.editFormulaConfigs.length; i < len; i++) {
44
+ let editFormulaConfig = formItem.editFormulaConfigs[i];
45
+ let initialValue = formItem.ui_render_type === 'switch' ? (data[formItem.code] || '').toLowerCase() !== 'true' : data[formItem.code];
46
+ let formulaValueOf = formItem.ui_render_type === 'switch' ? (editFormulaConfig.onValueOf || '').toLowerCase() !== 'true' : editFormulaConfig.onValueOf;
47
+
48
+ if (formulaValueOf === initialValue) {
49
+ editFormulasState.push({editFormulasStateCode: formItem.code, editFormulaItem: editFormulaConfig})
50
+ }
51
+ }
52
+ }
53
+ })
54
+ this.setState({editFormulasState})
38
55
  }
39
56
 
40
57
  buildExtFormItems = () => {
@@ -115,7 +132,6 @@ class FormForModify extends React.Component{
115
132
  buildFormItems = (editFormulasState) => {
116
133
  let {data, info_set_fields, ext_form_items} = this.props;
117
134
  if (info_set_fields && info_set_fields.length > 0) {
118
-
119
135
  info_set_fields.forEach(formItem => {
120
136
  formItem.initialValue = null;
121
137
 
@@ -133,7 +149,7 @@ class FormForModify extends React.Component{
133
149
  } else if (item.formItemValue === 'enabled') {
134
150
  formItem.b_disabled = false;
135
151
  } else {
136
- formItem.initialValue = item.formItemValue || '';
152
+ formItem.initialValue = item.formItemValue || data[formItem.display_code];
137
153
  }
138
154
  }
139
155
  })
@@ -141,16 +157,13 @@ class FormForModify extends React.Component{
141
157
  }
142
158
 
143
159
  } else {
144
-
145
160
  if (formItem.editFormulaConfigs) {
146
-
147
161
  for (let i = 0, len = formItem.editFormulaConfigs.length; i < len; i++) {
148
162
  let editFormulaConfig = formItem.editFormulaConfigs[i];
149
163
  let initialValue = formItem.ui_render_type === 'switch' ? (data[formItem.code] || '').toLowerCase() !== 'true' : data[formItem.code];
150
164
  let formulaValueOf = formItem.ui_render_type === 'switch' ? (editFormulaConfig.onValueOf || '').toLowerCase() !== 'true' : editFormulaConfig.onValueOf;
151
165
 
152
166
  if (formulaValueOf === initialValue) {
153
- editFormulasState.push({editFormulasStateCode: formItem.code, editFormulaItem: editFormulaConfig});
154
167
  let currentOtherFormItemResponses = editFormulaConfig.otherFormItemResponses;
155
168
  currentOtherFormItemResponses.forEach(item => {
156
169
  info_set_fields.forEach(formItemInner => {
@@ -160,7 +173,7 @@ class FormForModify extends React.Component{
160
173
  } else if (item.formItemValue === 'enabled') {
161
174
  formItemInner.b_disabled = false;
162
175
  } else {
163
- formItemInner.initialValue = item.formItemValue || '';
176
+ formItemInner.initialValue = item.formItemValue || data[formItem.display_code];
164
177
  }
165
178
  }
166
179
  })
@@ -330,7 +343,7 @@ class FormForModify extends React.Component{
330
343
  key={form_id + "_" + dataItem.code}
331
344
  label={dataItem.label}
332
345
  name={dataItem.name}
333
- rules={[{ required: dataItem.required}]}
346
+ rules={[{ required: !dataItem.b_disabled && dataItem.required}]}
334
347
  >
335
348
  {dataItem.render}
336
349
  </Form.Item>
@@ -341,7 +354,7 @@ class FormForModify extends React.Component{
341
354
 
342
355
  display_code = display_code || code;
343
356
  let initialValue = dataItem.initialValue || data[code];
344
- let displayValue = dataItem.initialValue || data[display_code];
357
+ let displayValue = data[display_code];
345
358
 
346
359
  let component, valuePropName;
347
360
  if (custom_form_items && custom_form_items[code + "_form_item"] && typeof custom_form_items[code + "_form_item"] === "function") {
@@ -455,6 +468,50 @@ class FormForModify extends React.Component{
455
468
  />
456
469
  );
457
470
  break;
471
+ case UI_RENDER_TYPE.DATE_YEAR:
472
+ initialValue = (initialValue ? moment(initialValue) : "");
473
+ displayValue = (displayValue ? moment(displayValue, 'YYYY').format("YYYY") : "");
474
+
475
+ component = (b_disabled !== undefined ? b_disabled : b_readonly) ? (
476
+ <div>
477
+ <span>{displayValue}</span>
478
+ </div>
479
+ )
480
+ :
481
+ (
482
+ <DatePicker
483
+ key={form_id + "_" + code}
484
+ getPopupContainer={() => document.getElementById(`ant_form_item_${code}`)}
485
+ placeholder={"请选择" + name}
486
+ picker="year"
487
+ onChange={this.datePickerOnChange.bind(this, dataItem, onChange)}
488
+ disabledDate={this.disabledDate.bind(this, dataItem)}
489
+ {...ext_props}
490
+ />
491
+ );
492
+ break;
493
+ case UI_RENDER_TYPE.DATE_MONTH:
494
+ initialValue = (initialValue ? moment(initialValue) : "");
495
+ displayValue = (displayValue ? moment(displayValue, 'YYYYMM').format("YYYY-MM") : "");
496
+
497
+ component = (b_disabled !== undefined ? b_disabled : b_readonly) ? (
498
+ <div>
499
+ <span>{displayValue}</span>
500
+ </div>
501
+ )
502
+ :
503
+ (
504
+ <DatePicker
505
+ key={form_id + "_" + code}
506
+ getPopupContainer={() => document.getElementById(`ant_form_item_${code}`)}
507
+ placeholder={"请选择" + name}
508
+ picker="month"
509
+ onChange={this.datePickerOnChange.bind(this, dataItem, onChange)}
510
+ disabledDate={this.disabledDate.bind(this, dataItem)}
511
+ {...ext_props}
512
+ />
513
+ );
514
+ break;
458
515
  case UI_RENDER_TYPE.DATE_TIME:
459
516
  initialValue = (initialValue ? moment(initialValue) : "");
460
517
  displayValue = (displayValue ? moment(displayValue).format("YYYY-MM-DD hh:mm:ss") : "");
@@ -688,10 +745,10 @@ class FormForModify extends React.Component{
688
745
  name={code}
689
746
  initialValue={initialValue}
690
747
  rules={[
691
- {required: b_required, message: ("请填写" + name), whitespace: true, validator: this.validator.bind(this, b_required, ui_render_type)},
748
+ {required: (!dataItem.b_disabled && b_required), message: ("请填写" + name), whitespace: true, validator: this.validator.bind(this, (!dataItem.b_disabled && b_required), ui_render_type)},
692
749
  {required: false, message: (name + "格式不正确"), whitespace: true, validator: this.formatValidator.bind(this), pattern: regexp_pattern}
693
750
  ]}
694
- hasFeedback={b_required}
751
+ hasFeedback={(!dataItem.b_disabled && b_required)}
695
752
  valuePropName={valuePropName ? valuePropName : "value"}
696
753
  >
697
754
  {component}
@@ -909,6 +966,7 @@ class FormForModify extends React.Component{
909
966
  }
910
967
 
911
968
  if (config.editFormulaConfigs && config.editFormulaConfigs.length) {
969
+ let {data} = this.props;
912
970
  let {editFormulasState} = this.state;
913
971
  let {setFieldsValue} = this.ref.current;
914
972
  if (value) {
@@ -917,7 +975,11 @@ class FormForModify extends React.Component{
917
975
  if (value) {
918
976
  editFormulaItem.otherFormItemResponses.forEach(item => {
919
977
  if (item.formItemValue === 'disabled') {
920
- setFieldsValue({[item.formItemCode]: ''})
978
+ if (item.formItemCode.indexOf('date') !== -1) {
979
+ setFieldsValue({[item.formItemCode]: moment(data[item.formItemCode]) || ''})
980
+ } else {
981
+ setFieldsValue({[item.formItemCode]: data[item.formItemCode] || ''})
982
+ }
921
983
  }
922
984
  })
923
985
  }
@@ -1048,15 +1110,20 @@ class FormForModify extends React.Component{
1048
1110
  }
1049
1111
 
1050
1112
  switchOnChange(config, callback, checked, event) {
1051
- let {code} = config;
1052
1113
  if (config.editFormulaConfigs && config.editFormulaConfigs.length) {
1114
+ let {data} = this.props;
1115
+ let {code} = config;
1053
1116
  let {editFormulasState} = this.state;
1054
1117
  let {setFieldsValue} = this.ref.current;
1055
1118
  let editFormulaItem = config.editFormulaConfigs.filter(editFormulaItem => editFormulaItem.onValueOf === checked.toString())[0];
1056
1119
  if (editFormulaItem) {
1057
1120
  if (!checked) {
1058
1121
  editFormulaItem.otherFormItemResponses.forEach(item => {
1059
- setFieldsValue({[item.formItemCode]: ''})
1122
+ if (item.formItemCode.indexOf('date') !== -1) {
1123
+ setFieldsValue({[item.formItemCode]: moment(data[item.formItemCode]) || ''})
1124
+ } else {
1125
+ setFieldsValue({[item.formItemCode]: data[item.formItemCode] || ''})
1126
+ }
1060
1127
  })
1061
1128
  }
1062
1129
  if (editFormulasState.filter(item => item.editFormulasStateCode === code).length) {
@@ -514,6 +514,12 @@ class GridForBrowse extends React.Component{
514
514
  case UI_RENDER_TYPE.DATE:
515
515
  value = (rowData[display_code] ? moment(rowData[display_code]).format("YYYY-MM-DD") : "");
516
516
  break;
517
+ case UI_RENDER_TYPE.DATE_YEAR:
518
+ value = (rowData[display_code] ? moment(rowData[display_code]).format("YYYY") : "");
519
+ break;
520
+ case UI_RENDER_TYPE.DATE_MONTH:
521
+ value = (rowData[display_code] ? moment(rowData[display_code]).format("YYYY-MM") : "");
522
+ break;
517
523
  case UI_RENDER_TYPE.DATE_TIME:
518
524
  value = (rowData[display_code] ? moment(rowData[display_code]).format("YYYY-MM-DD hh:mm:ss") : "");
519
525
  break;
@@ -147,6 +147,24 @@ class GridForModify extends React.Component{
147
147
  defaultValue={dataItem[code] && moment(dataItem[code])}/>
148
148
  );
149
149
  break;
150
+ case UI_RENDER_TYPE.DATE_YEAR:
151
+ component = (
152
+ <DatePicker format={DateFormat}
153
+ picker="year"
154
+ placeholder={"请填写" + name}
155
+ onChange={this.datePickerOnChange.bind(this, dataItem, fieldConfig, onChange)}
156
+ defaultValue={dataItem[code] && moment(dataItem[code])}/>
157
+ );
158
+ break;
159
+ case UI_RENDER_TYPE.DATE_MONTH:
160
+ component = (
161
+ <DatePicker format={DateFormat}
162
+ picker="month"
163
+ placeholder={"请填写" + name}
164
+ onChange={this.datePickerOnChange.bind(this, dataItem, fieldConfig, onChange)}
165
+ defaultValue={dataItem[code] && moment(dataItem[code])}/>
166
+ );
167
+ break;
150
168
  case UI_RENDER_TYPE.DATE_TIME:
151
169
  component = (
152
170
  <DatePicker showTime={true}