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.
- package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
- package/lib/controls/entity-select/entity-select.js +1 -1
- package/lib/controls/entity-select/entity-select.js.map +1 -1
- package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
- package/lib/controls/entity-select/popover-entity-select.js +2 -0
- package/lib/controls/entity-select/popover-entity-select.js.map +1 -1
- package/lib/controls/select/index.d.ts.map +1 -1
- package/lib/controls/select/index.js +5 -0
- package/lib/controls/select/index.js.map +1 -1
- package/lib/form/dtmpl-form.d.ts.map +1 -1
- package/lib/form/dtmpl-form.js +3 -3
- package/lib/form/dtmpl-form.js.map +1 -1
- package/lib/form/form-Item-group.d.ts +3 -0
- package/lib/form/form-Item-group.d.ts.map +1 -1
- package/lib/form/form-Item-group.js +44 -4
- package/lib/form/form-Item-group.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/login3/index.less +36 -2
- package/lib/login3/login-page.d.ts +2 -0
- package/lib/login3/login-page.d.ts.map +1 -1
- package/lib/login3/login-page.js +7 -4
- package/lib/login3/login-page.js.map +1 -1
- package/lib/module/dtmpl-edit-page.d.ts +10 -1
- package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
- package/lib/module/dtmpl-edit-page.js +40 -8
- package/lib/module/dtmpl-edit-page.js.map +1 -1
- package/lib/table/relation-table.d.ts +74 -0
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/table/relation-table.js +20 -1
- package/lib/table/relation-table.js.map +1 -1
- package/lib/tmpl/interface.d.ts +6 -1
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tmpl/interface.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/entity-select/entity-select.tsx +97 -96
- package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +2 -0
- package/src/aldehyde/controls/select/index.tsx +33 -29
- package/src/aldehyde/form/dtmpl-form.tsx +38 -36
- package/src/aldehyde/form/form-Item-group.tsx +70 -29
- package/src/aldehyde/index.tsx +7 -1
- package/src/aldehyde/login3/index.less +36 -2
- package/src/aldehyde/login3/login-page.tsx +10 -8
- package/src/aldehyde/module/dtmpl-edit-page.tsx +42 -5
- package/src/aldehyde/table/relation-table.tsx +22 -2
- 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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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={
|
|
865
|
+
fieldGroupConfig={temFieldGroupConfig}
|
|
846
866
|
onOk={this.handleColData}
|
|
847
|
-
|
|
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 {
|