aldehyde 0.2.342 → 0.2.345

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 (48) hide show
  1. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  2. package/lib/controls/entity-select/entity-select.js +1 -1
  3. package/lib/controls/entity-select/entity-select.js.map +1 -1
  4. package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
  5. package/lib/controls/entity-select/popover-entity-select.js +2 -0
  6. package/lib/controls/entity-select/popover-entity-select.js.map +1 -1
  7. package/lib/controls/select/index.d.ts.map +1 -1
  8. package/lib/controls/select/index.js +5 -0
  9. package/lib/controls/select/index.js.map +1 -1
  10. package/lib/form/dtmpl-form.d.ts.map +1 -1
  11. package/lib/form/dtmpl-form.js +3 -3
  12. package/lib/form/dtmpl-form.js.map +1 -1
  13. package/lib/form/form-Item-group.d.ts +3 -0
  14. package/lib/form/form-Item-group.d.ts.map +1 -1
  15. package/lib/form/form-Item-group.js +44 -4
  16. package/lib/form/form-Item-group.js.map +1 -1
  17. package/lib/index.d.ts +3 -1
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/index.js +3 -3
  20. package/lib/index.js.map +1 -1
  21. package/lib/login3/index.less +36 -2
  22. package/lib/login3/login-page.d.ts +2 -0
  23. package/lib/login3/login-page.d.ts.map +1 -1
  24. package/lib/login3/login-page.js +7 -4
  25. package/lib/login3/login-page.js.map +1 -1
  26. package/lib/module/dtmpl-edit-page.d.ts +10 -1
  27. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  28. package/lib/module/dtmpl-edit-page.js +40 -8
  29. package/lib/module/dtmpl-edit-page.js.map +1 -1
  30. package/lib/table/relation-table.d.ts +74 -0
  31. package/lib/table/relation-table.d.ts.map +1 -1
  32. package/lib/table/relation-table.js +20 -1
  33. package/lib/table/relation-table.js.map +1 -1
  34. package/lib/tmpl/interface.d.ts +6 -1
  35. package/lib/tmpl/interface.d.ts.map +1 -1
  36. package/lib/tmpl/interface.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/aldehyde/controls/entity-select/entity-select.tsx +97 -96
  39. package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +2 -0
  40. package/src/aldehyde/controls/select/index.tsx +33 -29
  41. package/src/aldehyde/form/dtmpl-form.tsx +38 -36
  42. package/src/aldehyde/form/form-Item-group.tsx +70 -29
  43. package/src/aldehyde/index.tsx +7 -1
  44. package/src/aldehyde/login3/index.less +36 -2
  45. package/src/aldehyde/login3/login-page.tsx +10 -8
  46. package/src/aldehyde/module/dtmpl-edit-page.tsx +42 -5
  47. package/src/aldehyde/table/relation-table.tsx +22 -2
  48. package/src/aldehyde/tmpl/interface.tsx +4 -2
@@ -46,6 +46,7 @@ interface ModalEditorState {
46
46
  loading?: boolean;
47
47
  serial?: number;
48
48
  dtmplData?: DtmplData;
49
+ valueFieldMap?: { [key: string]: any }
49
50
  }
50
51
 
51
52
  export default class DtmplEditPage extends React.PureComponent<
@@ -84,6 +85,7 @@ export default class DtmplEditPage extends React.PureComponent<
84
85
  loading: false,
85
86
  serial: 1,
86
87
  dtmplData: undefined,
88
+ valueFieldMap: {}
87
89
  };
88
90
 
89
91
  async componentDidMount() {
@@ -134,6 +136,7 @@ export default class DtmplEditPage extends React.PureComponent<
134
136
  addTmplId
135
137
  );
136
138
  }
139
+ this.handleRelValueField(dtmplConfig);
137
140
  // 直接复制
138
141
  if (dtmplConfig?.entity && dtmplConfig?.entity?.code == code) {
139
142
  let dtmplData = dtmplConfig.entity;
@@ -265,10 +268,41 @@ export default class DtmplEditPage extends React.PureComponent<
265
268
  setTimeout(() => this.onValuesChange(), 300);
266
269
  };
267
270
 
268
- onValuesChange = () => {
269
- this.setState({
270
- serial: this.state.serial + 1,
271
- });
271
+ /**
272
+ * 处理表单关联项
273
+ * 匹配关联项的字段,实现值更新关联字段值变化
274
+ */
275
+ handleRelValueField = (dtmplConfig: DtmplConfig) => {
276
+ const { groups } = dtmplConfig;
277
+ const valueFieldMap = groups.reduce((total, item) => {
278
+ if (item.fields) {
279
+ item.fields.forEach(field => {
280
+ if (field.relValueField) {
281
+ const temArr = total[field.relValueField.id] || [];
282
+ const isItem = temArr.find(r => r.id === item.id);
283
+ if (!isItem) {
284
+ total[field.relValueField.id] = [...temArr, item];
285
+ }
286
+ }
287
+ })
288
+ }
289
+ return total;
290
+ }, {});
291
+ this.setState({ valueFieldMap });
292
+ };
293
+
294
+ onValuesChange = (changedValues?: any, allValues?: any) => {
295
+ const { dtmplData, valueFieldMap } = this.state;
296
+ const changeValKey = Object.keys(changedValues || {})[0];
297
+ if (changeValKey && valueFieldMap[changeValKey]) {
298
+ // 处理关联字段值变化, 表单值变化,处理关联字段值为空
299
+ const temArrayMap = valueFieldMap[changeValKey].reduce((total, item) => {
300
+ total[item.id] = [];
301
+ return total;
302
+ }, {});
303
+ this.setState({ dtmplData: { ...dtmplData, fieldMap: allValues, arrayMap: { ...dtmplData.arrayMap, ...temArrayMap } } });
304
+ }
305
+ this.setState({ serial: this.state.serial + 1 });
272
306
  };
273
307
 
274
308
  doSubmit = (actionId?: number, codes?: string[], params?: object) => {
@@ -357,7 +391,7 @@ export default class DtmplEditPage extends React.PureComponent<
357
391
  title,
358
392
  serverKey, parentFormInstance
359
393
  } = this.props;
360
- const { dtmplConfig, id, dtmplData } = this.state;
394
+ const { dtmplConfig, id, dtmplData, valueFieldMap } = this.state;
361
395
 
362
396
  let title1 = title ? title : dtmplConfig ? dtmplConfig.title : "";
363
397
  const { translate } = this.context;
@@ -395,6 +429,7 @@ export default class DtmplEditPage extends React.PureComponent<
395
429
  dtmplData={dtmplData}
396
430
  onValuesChange={this.onValuesChange}
397
431
  parentFormInstance={parentFormInstance}
432
+ valueFieldMap={valueFieldMap}
398
433
  />
399
434
  </div>
400
435
  </Scrollbars>}
@@ -433,6 +468,7 @@ export default class DtmplEditPage extends React.PureComponent<
433
468
  dtmplData={dtmplData}
434
469
  onValuesChange={this.onValuesChange}
435
470
  parentFormInstance={parentFormInstance}
471
+ valueFieldMap={valueFieldMap}
436
472
  />
437
473
  </Drawer>
438
474
  ) : (
@@ -450,6 +486,7 @@ export default class DtmplEditPage extends React.PureComponent<
450
486
  dtmplData={dtmplData}
451
487
  onValuesChange={this.onValuesChange}
452
488
  parentFormInstance={parentFormInstance}
489
+ valueFieldMap={valueFieldMap}
453
490
  />
454
491
  </Card>
455
492
  )}
@@ -811,11 +811,31 @@ class RelationTable extends React.PureComponent<
811
811
  }
812
812
  }
813
813
 
814
+ // 处理fieldConfig,添加exceptCodes
815
+ handleFieldConfig = () => {
816
+ const { fieldGroupConfig, value } = this.props;
817
+ const fields = fieldGroupConfig.fields.map(field => {
818
+ if (!field || !value || !field.relDeduplication) {
819
+ return field;
820
+ }
821
+ const exceptCodes = value.map(item => {
822
+ let val = item.fieldMap[field.id];
823
+ if (val?.includes("@R@")) {
824
+ return val.split("@R@")[0];
825
+ }
826
+ return val;
827
+ }).filter(Boolean);
828
+ return { ...field, exceptCodes };
829
+ });
830
+ return { ...fieldGroupConfig, fields };
831
+ }
832
+
814
833
  buildButtons = () => {
815
834
  const { fieldGroupConfig, viewOrEdit, value, serverKey } = this.props;
816
835
  const { translate } = this.context;
817
836
  const { buttons, disabled, addOrEditType, batchAddFileField } = fieldGroupConfig;
818
837
  const { uploadingFiles } = this.state;
838
+ const temFieldGroupConfig = this.handleFieldConfig();
819
839
 
820
840
  const buttonDisabled: boolean = disabled
821
841
  ? disabled
@@ -842,9 +862,9 @@ class RelationTable extends React.PureComponent<
842
862
  disabled={buttonDisabled}
843
863
  buttonStyle={{ marginBottom: 10 }}
844
864
  buttonTitle={translate("${新建一行}")}
845
- fieldGroupConfig={fieldGroupConfig}
865
+ fieldGroupConfig={temFieldGroupConfig}
846
866
  onOk={this.handleColData}
847
- ></PopoverEditor>
867
+ />
848
868
  ) : (
849
869
  ""
850
870
  )}
@@ -116,8 +116,8 @@ export interface DtmplFormProps extends DtmplBaseProps {
116
116
  showConfirm?: boolean;
117
117
  showHeader?: boolean;
118
118
  onFinish: (code: string | boolean) => void;
119
- onValuesChange?: () => void;
120
-
119
+ onValuesChange?: (changedValues, allValues: DtmplData) => void;
120
+ valueFieldMap?: { [key: string]: any } // 表单关联项
121
121
  }
122
122
 
123
123
  export interface CQueryConfig extends OrderableTmplBase {
@@ -416,6 +416,8 @@ export interface FieldConfig extends FieldBase {
416
416
  configChanged?: boolean;
417
417
  rowEditType?: "editable" | "readonly" | "editonly" | "addonly";
418
418
  colWidth?: number;
419
+ exceptCodes?: string[];
420
+ relDeduplication?: boolean;
419
421
  }
420
422
 
421
423
  export interface ActionRenderProps {