fmui-base 2.3.4 → 2.3.5
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/README.md +1 -0
- package/lib/form/table.js +314 -309
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/form/table.js
CHANGED
|
@@ -165,6 +165,72 @@ function buildFormRelaFieldMapsByRelaField(triggerFieldsMap) {
|
|
|
165
165
|
return relaFieldsMap;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
// 构建联动下拉选项(对齐 PC:从联动结果 + 已保存 multiItemsLinkField 取显示文本)
|
|
169
|
+
function buildLinkageSelectOptions(contentValue, relateItemParam, fieldDataItem) {
|
|
170
|
+
var selectOptions = [];
|
|
171
|
+
var lookupSources = [];
|
|
172
|
+
if (relateItemParam) {
|
|
173
|
+
if (relateItemParam.selectOptions) {
|
|
174
|
+
lookupSources.push(relateItemParam.selectOptions);
|
|
175
|
+
}
|
|
176
|
+
if (relateItemParam.selectItem) {
|
|
177
|
+
lookupSources.push(relateItemParam.selectItem);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (fieldDataItem && fieldDataItem.multiItemsLinkField) {
|
|
181
|
+
lookupSources.push(fieldDataItem.multiItemsLinkField);
|
|
182
|
+
}
|
|
183
|
+
for (var c = 0; c < contentValue.length; c++) {
|
|
184
|
+
var val = contentValue[c];
|
|
185
|
+
var option = { value: val, text: val };
|
|
186
|
+
for (var s = 0; s < lookupSources.length; s++) {
|
|
187
|
+
var src = lookupSources[s];
|
|
188
|
+
if (!src) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
for (var i = 0; i < src.length; i++) {
|
|
192
|
+
var item = src[i];
|
|
193
|
+
if (item && item.value == val) {
|
|
194
|
+
option.text = item.text || item.name || val;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
selectOptions.push(option);
|
|
200
|
+
}
|
|
201
|
+
return selectOptions;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// 联动下拉赋值:编辑打开时优先保留已保存值(对齐 PC real-value 逻辑)
|
|
205
|
+
function resolveLinkageSelectValue(containUniqueFlag, savedValue, candidateValue, formItem, fieldKey) {
|
|
206
|
+
var tva = candidateValue || '';
|
|
207
|
+
if (containUniqueFlag === true) {
|
|
208
|
+
return tva;
|
|
209
|
+
}
|
|
210
|
+
if (savedValue != null && savedValue !== '') {
|
|
211
|
+
var available = tva ? String(tva).split(',') : [];
|
|
212
|
+
var savedArr = String(savedValue).split(',');
|
|
213
|
+
var matched = savedArr.filter(function (v) {
|
|
214
|
+
return available.indexOf(v) > -1;
|
|
215
|
+
});
|
|
216
|
+
if (matched.length > 0) {
|
|
217
|
+
return matched.join(',');
|
|
218
|
+
}
|
|
219
|
+
if (available.length === 1) {
|
|
220
|
+
return available[0];
|
|
221
|
+
}
|
|
222
|
+
return savedValue;
|
|
223
|
+
}
|
|
224
|
+
if (formItem && fieldKey) {
|
|
225
|
+
for (var f = 0; f < formItem.length; f++) {
|
|
226
|
+
if (formItem[f].itemCode == fieldKey && formItem[f].value == tva) {
|
|
227
|
+
return tva;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return '';
|
|
232
|
+
}
|
|
233
|
+
|
|
168
234
|
var PageHome = function (_React$Component) {
|
|
169
235
|
_inherits(PageHome, _React$Component);
|
|
170
236
|
|
|
@@ -350,6 +416,7 @@ var PageHome = function (_React$Component) {
|
|
|
350
416
|
// "relaTblName" : "cs_test"
|
|
351
417
|
// } ]
|
|
352
418
|
// }
|
|
419
|
+
_this._isFormInitialLoading = true;
|
|
353
420
|
return _this;
|
|
354
421
|
}
|
|
355
422
|
|
|
@@ -357,17 +424,53 @@ var PageHome = function (_React$Component) {
|
|
|
357
424
|
key: 'componentDidMount',
|
|
358
425
|
value: function componentDidMount() {
|
|
359
426
|
var t = this;
|
|
427
|
+
// 等子字段 loadComponet 完成后再统一刷新关联/联动,避免打开编辑页时清空已保存值
|
|
428
|
+
setTimeout(function () {
|
|
429
|
+
t.initFormLinkageAndRelaFields();
|
|
430
|
+
}, 500);
|
|
431
|
+
}
|
|
360
432
|
|
|
361
|
-
|
|
362
|
-
// let commentList = this.props.commentList;
|
|
363
|
-
// let formData = this.props.formData;
|
|
433
|
+
// 编辑/查看打开后:刷新字段关联规则,并按触发条件回填联动字段(保留已保存值)
|
|
364
434
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
435
|
+
}, {
|
|
436
|
+
key: 'initFormLinkageAndRelaFields',
|
|
437
|
+
value: function initFormLinkageAndRelaFields() {
|
|
438
|
+
var t = this;
|
|
439
|
+
var data = t.props.data;
|
|
440
|
+
if (!data) {
|
|
441
|
+
t._isFormInitialLoading = false;
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
t._isRelaFieldRefreshing = true;
|
|
445
|
+
try {
|
|
446
|
+
t.reloadFormRelaField({ initFlag: true });
|
|
447
|
+
} finally {
|
|
448
|
+
t._isRelaFieldRefreshing = false;
|
|
449
|
+
}
|
|
450
|
+
var linkFields = data.linkFields;
|
|
451
|
+
if (linkFields && linkFields.length > 0) {
|
|
452
|
+
var processed = {};
|
|
453
|
+
var formItem = data.formItem || [];
|
|
454
|
+
for (var i = 0; i < linkFields.length; i++) {
|
|
455
|
+
var formField = linkFields[i].formField;
|
|
456
|
+
if (!formField || processed[formField]) {
|
|
457
|
+
continue;
|
|
458
|
+
}
|
|
459
|
+
processed[formField] = true;
|
|
460
|
+
for (var j = 0; j < formItem.length; j++) {
|
|
461
|
+
if (formField.indexOf(formItem[j].fieldId) > -1) {
|
|
462
|
+
t.processLinkFieldsUpdate(data, {
|
|
463
|
+
fieldId: formItem[j].fieldId,
|
|
464
|
+
key: formItem[j].itemCode,
|
|
465
|
+
uniqueName: data.mainTblName + '_' + formItem[j].itemCode,
|
|
466
|
+
itemType: formItem[j].itemType
|
|
467
|
+
}, undefined, { initFlag: true });
|
|
468
|
+
break;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
t._isFormInitialLoading = false;
|
|
371
474
|
}
|
|
372
475
|
}, {
|
|
373
476
|
key: 'reloadItemParam',
|
|
@@ -529,308 +632,20 @@ var PageHome = function (_React$Component) {
|
|
|
529
632
|
|
|
530
633
|
var fieldId = itemParam.fieldId;
|
|
531
634
|
var linkFields = data.linkFields;
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
for (var i = 0; i < linkFields.length; i++) {
|
|
535
|
-
var formField = linkFields[i].formField;
|
|
536
|
-
if (formField != null && formField != '') {
|
|
537
|
-
var ffid = formField.split(",");
|
|
538
|
-
var conditionArrayJSON = [];
|
|
539
|
-
if (formField.indexOf(fieldId) != -1) {
|
|
540
|
-
for (var j = 0; j < ffid.length; j++) {
|
|
541
|
-
var linkFormKey = "";
|
|
542
|
-
var linkFormTableKey = "";
|
|
543
|
-
var isSub = false;
|
|
544
|
-
for (var f = 0; f < formItem.length; f++) {
|
|
545
|
-
if (ffid[j] == formItem[f].fieldId) {
|
|
546
|
-
linkFormKey = formItem[f].itemCode;
|
|
547
|
-
linkFormTableKey = mainTblName;
|
|
548
|
-
continue;
|
|
549
|
-
} else if (formItem[f].itemType == 'detail') {
|
|
550
|
-
for (var g = 0; g < formItem[f].children.length; g++) {
|
|
551
|
-
if (ffid[j] == formItem[f].children[g].fieldId) {
|
|
552
|
-
linkFormKey = formItem[f].children[g].itemCode;
|
|
553
|
-
linkFormTableKey = formItem[f].itemCode;
|
|
554
|
-
isSub = true;
|
|
555
|
-
continue;
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
if (linkFormKey) {
|
|
561
|
-
var selectValue = "";
|
|
562
|
-
var isSelect = false;
|
|
563
|
-
if (isSub) {
|
|
564
|
-
for (var l = 0; l < subTbl.length; l++) {
|
|
565
|
-
if (subTbl[l].subTblName == linkFormTableKey) {
|
|
566
|
-
for (var g = 0; g < subTbl[l].subTblData[subTblNo].length; g++) {
|
|
567
|
-
if (subTbl[l].subTblData[subTblNo][g].key == linkFormKey) {
|
|
568
|
-
var option = {};
|
|
569
|
-
option.value = subTbl[l].subTblData[subTblNo][g].value;
|
|
570
|
-
option.formField = ffid[j];
|
|
571
|
-
conditionArrayJSON.push(option);
|
|
572
|
-
continue;
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
} else {
|
|
578
|
-
for (var k = 0; k < mainTblData.length; k++) {
|
|
579
|
-
if (linkFormTableKey + "_" + linkFormKey == mainTblName + "_" + mainTblData[k].key) {
|
|
580
|
-
var option = {};
|
|
581
|
-
selectValue = mainTblData[k].value;
|
|
582
|
-
option.value = mainTblData[k].value;
|
|
583
|
-
option.formField = ffid[j];
|
|
584
|
-
conditionArrayJSON.push(option);
|
|
585
|
-
isSelect = true;
|
|
586
|
-
continue;
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
if (conditionArrayJSON.length > 0) {
|
|
594
|
-
_db2.default.FlowModuleAPI.getLinkFieldValueMap({
|
|
595
|
-
triggerFormFields: formField,
|
|
596
|
-
formId: data.formId,
|
|
597
|
-
conditionArrayJSON: JSON.stringify(conditionArrayJSON)
|
|
598
|
-
}).then(function (content) {
|
|
599
|
-
if (content) {
|
|
600
|
-
var containUniqueFlag = content['containUniqueFlag'];
|
|
601
|
-
var content = content['map'];
|
|
602
|
-
for (var key in content) {
|
|
603
|
-
var contentValue = content[key];
|
|
604
|
-
|
|
605
|
-
var tolinkFormKey = "";
|
|
606
|
-
var tolinkFormType = "";
|
|
607
|
-
var tolinkFormTableKey = "";
|
|
608
|
-
var toisSub = false;
|
|
609
|
-
for (var f = 0; f < formItem.length; f++) {
|
|
610
|
-
if (key == formItem[f].fieldId) {
|
|
611
|
-
tolinkFormKey = formItem[f].itemCode;
|
|
612
|
-
tolinkFormType = formItem[f].itemType;
|
|
613
|
-
tolinkFormTableKey = mainTblName;
|
|
614
|
-
} else if (formItem[f].itemType == 'detail') {
|
|
615
|
-
for (var g = 0; g < formItem[f].children.length; g++) {
|
|
616
|
-
if (key == formItem[f].children[g].fieldId) {
|
|
617
|
-
tolinkFormKey = formItem[f].children[g].itemCode;
|
|
618
|
-
tolinkFormType = formItem[f].children[g].itemType;
|
|
619
|
-
tolinkFormTableKey = formItem[f].itemCode;
|
|
620
|
-
toisSub = true;
|
|
621
|
-
continue;
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
if (tolinkFormKey) {
|
|
627
|
-
if (!toisSub) {
|
|
628
|
-
for (var m = 0; m < mainTblData.length; m++) {
|
|
629
|
-
if (tolinkFormKey == mainTblData[m].key) {
|
|
630
|
-
var relateItemParam = t.refs[mainTblName + "_" + mainTblData[m].key].getItemParam();
|
|
631
|
-
if (",text,textarea,datetime,datetimeStep,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
632
|
-
var textValue = '';
|
|
633
|
-
var valueMap = {};
|
|
634
|
-
valueMap.key = 'value';
|
|
635
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
636
|
-
textValue = textValue + "," + contentValue[c];
|
|
637
|
-
}
|
|
638
|
-
valueMap.value = textValue.substring(1);
|
|
639
|
-
|
|
640
|
-
t.refs[mainTblName + "_" + mainTblData[m].key].reloadItemParam([valueMap]);
|
|
641
|
-
mainTblData[m].value = textValue.substring(1);
|
|
642
|
-
} else if (",radio,checkbox,select,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
643
|
-
var textValue = '';
|
|
644
|
-
var resultMap = {};
|
|
645
|
-
resultMap.key = 'selectOptions';
|
|
646
|
-
|
|
647
|
-
var selectOptions = [];
|
|
648
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
649
|
-
textValue = textValue + "," + contentValue[c];
|
|
650
|
-
var option = {};
|
|
651
|
-
relateItemParam.selectItem.map(function (selectItemObj) {
|
|
652
|
-
if (selectItemObj.value == contentValue[c]) {
|
|
653
|
-
option.value = contentValue[c];
|
|
654
|
-
option.text = selectItemObj.text;
|
|
655
|
-
selectOptions.push(option);
|
|
656
|
-
}
|
|
657
|
-
});
|
|
658
|
-
}
|
|
659
|
-
resultMap.value = selectOptions;
|
|
660
|
-
|
|
661
|
-
var valueMap1 = {};
|
|
662
|
-
valueMap1.key = 'value';
|
|
663
|
-
valueMap1.value = "";
|
|
664
|
-
mainTblData[m].value = "";
|
|
665
|
-
var tva = textValue.substring(1);
|
|
666
|
-
if (containUniqueFlag == true) {
|
|
667
|
-
valueMap1.value = tva;
|
|
668
|
-
mainTblData[m].value = tva;
|
|
669
|
-
} else {
|
|
670
|
-
for (var f = 0; f < formItem.length; f++) {
|
|
671
|
-
if (formItem[f].itemCode == mainTblData[m].key && formItem[f].value == tva) {
|
|
672
|
-
valueMap1.value = tva;
|
|
673
|
-
mainTblData[m].value = tva;
|
|
674
|
-
break;
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
t.refs[mainTblName + "_" + mainTblData[m].key].reloadItemParam([resultMap, valueMap1]);
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
} else {
|
|
683
|
-
if (isSub) {
|
|
684
|
-
for (var l = 0; l < subTbl.length; l++) {
|
|
685
|
-
if (subTbl[l].subTblName == tolinkFormTableKey) {
|
|
686
|
-
for (var g = 0; g < subTbl[l].subTblData[subTblNo].length; g++) {
|
|
687
|
-
if (subTbl[l].subTblData[subTblNo][g].key == tolinkFormKey) {
|
|
688
|
-
var relateItemParam = t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[subTblNo][g].key + "_" + subTblNo].getItemParam();
|
|
689
|
-
if (",text,textarea,datetime,datetimeStep,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
690
|
-
var textValue = '';
|
|
691
|
-
var valueMap = {};
|
|
692
|
-
valueMap.key = 'value';
|
|
693
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
694
|
-
textValue = textValue + "," + contentValue[c];
|
|
695
|
-
}
|
|
696
|
-
valueMap.value = textValue.substring(1);
|
|
697
|
-
|
|
698
|
-
t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[subTblNo][g].key + "_" + subTblNo].reloadItemParam([valueMap]);
|
|
699
|
-
subTbl[l].subTblData[subTblNo][g].value = textValue.substring(1);
|
|
700
|
-
} else if (",radio,checkbox,select,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
701
|
-
var textValue = '';
|
|
702
|
-
var resultMap = {};
|
|
703
|
-
resultMap.key = 'selectOptions';
|
|
704
|
-
|
|
705
|
-
var selectOptions = [];
|
|
706
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
707
|
-
textValue = textValue + "," + contentValue[c];
|
|
708
|
-
var option = {};
|
|
709
|
-
relateItemParam.selectItem.map(function (selectItemObj) {
|
|
710
|
-
if (selectItemObj.value == contentValue[c]) {
|
|
711
|
-
option.value = contentValue[c];
|
|
712
|
-
option.text = selectItemObj.text;
|
|
713
|
-
selectOptions.push(option);
|
|
714
|
-
}
|
|
715
|
-
});
|
|
716
|
-
}
|
|
717
|
-
resultMap.value = selectOptions;
|
|
718
|
-
|
|
719
|
-
var valueMap1 = {};
|
|
720
|
-
valueMap1.key = 'value';
|
|
721
|
-
valueMap1.value = "";
|
|
722
|
-
subTbl[l].subTblData[subTblNo][g].value = "";
|
|
723
|
-
var tva = textValue.substring(1);
|
|
724
|
-
if (containUniqueFlag == true) {
|
|
725
|
-
valueMap1.value = tva;
|
|
726
|
-
subTbl[l].subTblData[subTblNo][g].value = tva;
|
|
727
|
-
} else {
|
|
728
|
-
for (var f = 0; f < formItem.length; f++) {
|
|
729
|
-
if (formItem[f].itemType == 'detail' && formItem[f].itemCode == tolinkFormTableKey) {
|
|
730
|
-
for (var h = 0; h < formItem[f].children.length; h++) {
|
|
731
|
-
if (formItem[f].children[h].itemCode == subTbl[l].subTblData[subTblNo][g].key && formItem[f].children[h].value == tva) {
|
|
732
|
-
valueMap1.value = tva;
|
|
733
|
-
subTbl[l].subTblData[subTblNo][g].value = tva;
|
|
734
|
-
break;
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
}
|
|
739
|
-
}
|
|
740
|
-
t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[subTblNo][g].key + "_" + subTblNo].reloadItemParam([resultMap, valueMap1]);
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
} else {
|
|
747
|
-
for (var l = 0; l < subTbl.length; l++) {
|
|
748
|
-
if (subTbl[l].subTblName == tolinkFormTableKey) {
|
|
749
|
-
for (var o = 0; o < subTbl[l].subTblData.length; o++) {
|
|
750
|
-
for (var g = 0; g < subTbl[l].subTblData[o].length; g++) {
|
|
751
|
-
if (tolinkFormKey == subTbl[l].subTblData[o][g].key) {
|
|
752
|
-
var relateItemParam = t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[o][g].key + "_" + o].getItemParam();
|
|
753
|
-
if (",text,textarea,datetime,datetimeStep,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
754
|
-
var textValue = '';
|
|
755
|
-
var valueMap = {};
|
|
756
|
-
valueMap.key = 'value';
|
|
757
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
758
|
-
textValue = textValue + "," + contentValue[c];
|
|
759
|
-
}
|
|
760
|
-
valueMap.value = textValue.substring(1);
|
|
761
|
-
|
|
762
|
-
t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[o][g].key + "_" + o].reloadItemParam([valueMap]);
|
|
763
|
-
subTbl[l].subTblData[o][g].value = textValue.substring(1);
|
|
764
|
-
} else if (",radio,checkbox,select,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
765
|
-
var textValue = '';
|
|
766
|
-
var resultMap = {};
|
|
767
|
-
resultMap.key = 'selectOptions';
|
|
768
|
-
|
|
769
|
-
var selectOptions = [];
|
|
770
|
-
for (var c = 0; c < contentValue.length; c++) {
|
|
771
|
-
textValue = textValue + "," + contentValue[c];
|
|
772
|
-
var option = {};
|
|
773
|
-
relateItemParam.selectItem.map(function (selectItemObj) {
|
|
774
|
-
if (selectItemObj.value == contentValue[c]) {
|
|
775
|
-
option.value = contentValue[c];
|
|
776
|
-
option.text = selectItemObj.text;
|
|
777
|
-
selectOptions.push(option);
|
|
778
|
-
}
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
resultMap.value = selectOptions;
|
|
782
|
-
|
|
783
|
-
var valueMap1 = {};
|
|
784
|
-
valueMap1.key = 'value';
|
|
785
|
-
valueMap1.value = "";
|
|
786
|
-
subTbl[l].subTblData[o][g].value = "";
|
|
787
|
-
var tva = textValue.substring(1);
|
|
788
|
-
if (containUniqueFlag == true) {
|
|
789
|
-
valueMap1.value = tva;
|
|
790
|
-
subTbl[l].subTblData[o][g].value = tva;
|
|
791
|
-
} else {
|
|
792
|
-
for (var f = 0; f < formItem.length; f++) {
|
|
793
|
-
if (formItem[f].itemType == 'detail' && formItem[f].itemCode == tolinkFormTableKey) {
|
|
794
|
-
for (var h = 0; h < formItem[f].children.length; h++) {
|
|
795
|
-
if (formItem[f].children[h].itemCode == subTbl[l].subTblData[o][g].key && formItem[f].children[h].value == tva) {
|
|
796
|
-
valueMap1.value = tva;
|
|
797
|
-
subTbl[l].subTblData[o][g].value = tva;
|
|
798
|
-
break;
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
t.refs["sub_" + tolinkFormTableKey].refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[o][g].key + "_" + o].reloadItemParam([resultMap, valueMap1]);
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
}).catch(function (error) {
|
|
817
|
-
console.error(error);
|
|
818
|
-
});
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
}
|
|
635
|
+
if (!t._isFormInitialLoading && linkFields && linkFields != null) {
|
|
636
|
+
t.processLinkFieldsUpdate(data, itemParam, subTblNo, { initFlag: false });
|
|
822
637
|
}
|
|
823
638
|
|
|
824
639
|
//关联字段刷新(silent 模式,不向上触发 onChange)
|
|
825
640
|
var hasRelaFieldsMap = t.state.formRelaFieldMaps && Object.keys(t.state.formRelaFieldMaps).length > 0;
|
|
826
|
-
if (hasRelaFieldsMap) {
|
|
641
|
+
if (!t._isFormInitialLoading && hasRelaFieldsMap) {
|
|
827
642
|
t._isRelaFieldRefreshing = true;
|
|
828
643
|
try {
|
|
829
644
|
t.refreshAllRelaFieldsByRelaMap(data, itemParam.uniqueName, subTblNo);
|
|
830
645
|
} finally {
|
|
831
646
|
t._isRelaFieldRefreshing = false;
|
|
832
647
|
}
|
|
833
|
-
} else if (formRelaFieldMaps) {
|
|
648
|
+
} else if (!t._isFormInitialLoading && formRelaFieldMaps) {
|
|
834
649
|
var formRelaFieldMapsObj = formRelaFieldMaps[itemParam.uniqueName];
|
|
835
650
|
if (formRelaFieldMapsObj && formRelaFieldMapsObj.length > 0) {
|
|
836
651
|
t._isRelaFieldRefreshing = true;
|
|
@@ -898,17 +713,206 @@ var PageHome = function (_React$Component) {
|
|
|
898
713
|
}
|
|
899
714
|
}
|
|
900
715
|
|
|
716
|
+
// 字段联动:触发字段变更或编辑页打开时回填联动目标(initFlag=true 时保留已保存文本/下拉值)
|
|
717
|
+
|
|
718
|
+
}, {
|
|
719
|
+
key: 'processLinkFieldsUpdate',
|
|
720
|
+
value: function processLinkFieldsUpdate(data, itemParam, subTblNo, options) {
|
|
721
|
+
var t = this;
|
|
722
|
+
var initFlag = options && options.initFlag === true;
|
|
723
|
+
var linkFields = data.linkFields;
|
|
724
|
+
var formItem = data.formItem;
|
|
725
|
+
var mainTblData = data.mainTblData;
|
|
726
|
+
var mainTblName = data.mainTblName;
|
|
727
|
+
var subTbl = data.subTbl;
|
|
728
|
+
var fieldId = itemParam.fieldId;
|
|
729
|
+
if (!linkFields || !fieldId) {
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
for (var i = 0; i < linkFields.length; i++) {
|
|
733
|
+
var formField = linkFields[i].formField;
|
|
734
|
+
if (!formField || formField.indexOf(fieldId) == -1) {
|
|
735
|
+
continue;
|
|
736
|
+
}
|
|
737
|
+
var ffid = formField.split(",");
|
|
738
|
+
var conditionArrayJSON = [];
|
|
739
|
+
for (var j = 0; j < ffid.length; j++) {
|
|
740
|
+
var linkFormKey = "";
|
|
741
|
+
var linkFormTableKey = "";
|
|
742
|
+
var isSubTrigger = false;
|
|
743
|
+
for (var f = 0; f < formItem.length; f++) {
|
|
744
|
+
if (ffid[j] == formItem[f].fieldId) {
|
|
745
|
+
linkFormKey = formItem[f].itemCode;
|
|
746
|
+
linkFormTableKey = mainTblName;
|
|
747
|
+
} else if (formItem[f].itemType == 'detail') {
|
|
748
|
+
for (var g = 0; g < formItem[f].children.length; g++) {
|
|
749
|
+
if (ffid[j] == formItem[f].children[g].fieldId) {
|
|
750
|
+
linkFormKey = formItem[f].children[g].itemCode;
|
|
751
|
+
linkFormTableKey = formItem[f].itemCode;
|
|
752
|
+
isSubTrigger = true;
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
if (!linkFormKey) {
|
|
758
|
+
continue;
|
|
759
|
+
}
|
|
760
|
+
if (isSubTrigger && typeof subTblNo != 'undefined') {
|
|
761
|
+
for (var l = 0; l < subTbl.length; l++) {
|
|
762
|
+
if (subTbl[l].subTblName == linkFormTableKey && subTbl[l].subTblData[subTblNo]) {
|
|
763
|
+
for (var g = 0; g < subTbl[l].subTblData[subTblNo].length; g++) {
|
|
764
|
+
if (subTbl[l].subTblData[subTblNo][g].key == linkFormKey) {
|
|
765
|
+
conditionArrayJSON.push({
|
|
766
|
+
value: subTbl[l].subTblData[subTblNo][g].value,
|
|
767
|
+
formField: ffid[j]
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
} else {
|
|
774
|
+
for (var k = 0; k < mainTblData.length; k++) {
|
|
775
|
+
if (linkFormTableKey + "_" + linkFormKey == mainTblName + "_" + mainTblData[k].key) {
|
|
776
|
+
conditionArrayJSON.push({
|
|
777
|
+
value: mainTblData[k].value,
|
|
778
|
+
formField: ffid[j]
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
if (conditionArrayJSON.length === 0) {
|
|
785
|
+
continue;
|
|
786
|
+
}
|
|
787
|
+
_db2.default.FlowModuleAPI.getLinkFieldValueMap({
|
|
788
|
+
triggerFormFields: formField,
|
|
789
|
+
formId: data.formId,
|
|
790
|
+
conditionArrayJSON: JSON.stringify(conditionArrayJSON)
|
|
791
|
+
}).then(function (content) {
|
|
792
|
+
if (!content) {
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
var containUniqueFlag = content['containUniqueFlag'];
|
|
796
|
+
var resultMap = content['map'] || {};
|
|
797
|
+
for (var key in resultMap) {
|
|
798
|
+
var contentValue = resultMap[key];
|
|
799
|
+
t.applyLinkageFieldResult(data, key, contentValue, containUniqueFlag, formItem, mainTblData, mainTblName, subTbl, subTblNo, initFlag);
|
|
800
|
+
}
|
|
801
|
+
}).catch(function (error) {
|
|
802
|
+
console.error(error);
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}, {
|
|
807
|
+
key: 'applyLinkageFieldResult',
|
|
808
|
+
value: function applyLinkageFieldResult(data, targetFieldId, contentValue, containUniqueFlag, formItem, mainTblData, mainTblName, subTbl, subTblNo, initFlag) {
|
|
809
|
+
var t = this;
|
|
810
|
+
var tolinkFormKey = "";
|
|
811
|
+
var tolinkFormType = "";
|
|
812
|
+
var tolinkFormTableKey = "";
|
|
813
|
+
var toisSub = false;
|
|
814
|
+
for (var f = 0; f < formItem.length; f++) {
|
|
815
|
+
if (targetFieldId == formItem[f].fieldId) {
|
|
816
|
+
tolinkFormKey = formItem[f].itemCode;
|
|
817
|
+
tolinkFormType = formItem[f].itemType;
|
|
818
|
+
tolinkFormTableKey = mainTblName;
|
|
819
|
+
} else if (formItem[f].itemType == 'detail') {
|
|
820
|
+
for (var g = 0; g < formItem[f].children.length; g++) {
|
|
821
|
+
if (targetFieldId == formItem[f].children[g].fieldId) {
|
|
822
|
+
tolinkFormKey = formItem[f].children[g].itemCode;
|
|
823
|
+
tolinkFormType = formItem[f].children[g].itemType;
|
|
824
|
+
tolinkFormTableKey = formItem[f].itemCode;
|
|
825
|
+
toisSub = true;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
if (!tolinkFormKey) {
|
|
831
|
+
return;
|
|
832
|
+
}
|
|
833
|
+
var applyToField = function applyToField(fieldDataItem, fieldRef) {
|
|
834
|
+
if (!fieldRef || !fieldDataItem) {
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
var relateItemParam = fieldRef.getItemParam ? fieldRef.getItemParam() : {};
|
|
838
|
+
if (",text,textarea,datetime,datetimeStep,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
839
|
+
if (initFlag && fieldDataItem.value != null && fieldDataItem.value !== '') {
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
var textValue = '';
|
|
843
|
+
for (var c = 0; c < contentValue.length; c++) {
|
|
844
|
+
textValue = textValue + "," + contentValue[c];
|
|
845
|
+
}
|
|
846
|
+
var valueMap = { key: 'value', value: textValue.substring(1) };
|
|
847
|
+
fieldRef.reloadItemParam([valueMap]);
|
|
848
|
+
fieldDataItem.value = valueMap.value;
|
|
849
|
+
} else if (",radio,checkbox,select,".indexOf("," + tolinkFormType + ",") != -1) {
|
|
850
|
+
var textValue = '';
|
|
851
|
+
for (var c2 = 0; c2 < contentValue.length; c2++) {
|
|
852
|
+
textValue = textValue + "," + contentValue[c2];
|
|
853
|
+
}
|
|
854
|
+
var tva = textValue.substring(1);
|
|
855
|
+
var selectOptions = buildLinkageSelectOptions(contentValue, relateItemParam, fieldDataItem);
|
|
856
|
+
var resolvedValue = resolveLinkageSelectValue(containUniqueFlag, fieldDataItem.value, tva, formItem, fieldDataItem.key);
|
|
857
|
+
fieldRef.reloadItemParam([{ key: 'selectOptions', value: selectOptions }, { key: 'value', value: resolvedValue }]);
|
|
858
|
+
fieldDataItem.value = resolvedValue;
|
|
859
|
+
if (fieldDataItem.multiItemsLinkField == null && selectOptions.length > 0) {
|
|
860
|
+
fieldDataItem.multiItemsLinkField = selectOptions.map(function (opt) {
|
|
861
|
+
return { value: opt.value, name: opt.text };
|
|
862
|
+
});
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
};
|
|
866
|
+
if (!toisSub) {
|
|
867
|
+
for (var m = 0; m < mainTblData.length; m++) {
|
|
868
|
+
if (tolinkFormKey == mainTblData[m].key) {
|
|
869
|
+
applyToField(mainTblData[m], t.refs[mainTblName + "_" + mainTblData[m].key]);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
} else if (typeof subTblNo != 'undefined') {
|
|
873
|
+
for (var l = 0; l < subTbl.length; l++) {
|
|
874
|
+
if (subTbl[l].subTblName == tolinkFormTableKey && subTbl[l].subTblData[subTblNo]) {
|
|
875
|
+
for (var g = 0; g < subTbl[l].subTblData[subTblNo].length; g++) {
|
|
876
|
+
if (subTbl[l].subTblData[subTblNo][g].key == tolinkFormKey) {
|
|
877
|
+
var subRef = t.refs["sub_" + tolinkFormTableKey];
|
|
878
|
+
if (subRef && subRef.refs) {
|
|
879
|
+
applyToField(subTbl[l].subTblData[subTblNo][g], subRef.refs[tolinkFormTableKey + "_" + subTbl[l].subTblData[subTblNo][g].key + "_" + subTblNo]);
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
} else {
|
|
886
|
+
for (var l2 = 0; l2 < subTbl.length; l2++) {
|
|
887
|
+
if (subTbl[l2].subTblName != tolinkFormTableKey) {
|
|
888
|
+
continue;
|
|
889
|
+
}
|
|
890
|
+
for (var o = 0; o < subTbl[l2].subTblData.length; o++) {
|
|
891
|
+
for (var g2 = 0; g2 < subTbl[l2].subTblData[o].length; g2++) {
|
|
892
|
+
if (tolinkFormKey == subTbl[l2].subTblData[o][g2].key) {
|
|
893
|
+
var subRef2 = t.refs["sub_" + tolinkFormTableKey];
|
|
894
|
+
if (subRef2 && subRef2.refs) {
|
|
895
|
+
applyToField(subTbl[l2].subTblData[o][g2], subRef2.refs[tolinkFormTableKey + "_" + subTbl[l2].subTblData[o][g2].key + "_" + o]);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
|
|
901
904
|
//重新加载关联字段
|
|
902
905
|
|
|
903
906
|
}, {
|
|
904
907
|
key: 'reloadFormRelaField',
|
|
905
|
-
value: function reloadFormRelaField() {
|
|
908
|
+
value: function reloadFormRelaField(options) {
|
|
906
909
|
var t = this;
|
|
907
910
|
var data = t.props.data;
|
|
911
|
+
var initFlag = options && options.initFlag === true;
|
|
908
912
|
t._isRelaFieldRefreshing = true;
|
|
909
913
|
try {
|
|
910
914
|
if (t.state.formRelaFieldMaps && Object.keys(t.state.formRelaFieldMaps).length > 0) {
|
|
911
|
-
t.refreshAllRelaFieldsByRelaMap(data);
|
|
915
|
+
t.refreshAllRelaFieldsByRelaMap(data, null, undefined, { initFlag: initFlag });
|
|
912
916
|
} else if (formRelaFieldMaps) {
|
|
913
917
|
var _iteratorNormalCompletion2 = true;
|
|
914
918
|
var _didIteratorError2 = false;
|
|
@@ -1250,8 +1254,9 @@ var PageHome = function (_React$Component) {
|
|
|
1250
1254
|
|
|
1251
1255
|
}, {
|
|
1252
1256
|
key: 'applyRelaRulesToTarget',
|
|
1253
|
-
value: function applyRelaRulesToTarget(targetUniqueName, rules, data, contextRowIndex, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields) {
|
|
1257
|
+
value: function applyRelaRulesToTarget(targetUniqueName, rules, data, contextRowIndex, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields, options) {
|
|
1254
1258
|
var t = this;
|
|
1259
|
+
var initFlag = options && options.initFlag === true;
|
|
1255
1260
|
if (changedUniqueName && targetUniqueName === changedUniqueName) {
|
|
1256
1261
|
if (typeof changedSubTblNo === 'undefined' || changedSubTblNo === contextRowIndex) {
|
|
1257
1262
|
return;
|
|
@@ -1318,14 +1323,14 @@ var PageHome = function (_React$Component) {
|
|
|
1318
1323
|
}
|
|
1319
1324
|
}
|
|
1320
1325
|
}
|
|
1321
|
-
if (isHidden) {
|
|
1326
|
+
if (isHidden && !initFlag) {
|
|
1322
1327
|
t.clearFieldDataValue(data, targetUniqueName, contextRowIndex);
|
|
1323
1328
|
}
|
|
1324
1329
|
var finalRequired = isHidden ? false : skipEditMust ? baseline.required : required;
|
|
1325
1330
|
var finalReadOnly = skipEditMust ? baseline.readOnly : readOnly;
|
|
1326
1331
|
t.syncRelaFieldMetaToData(data, targetUniqueName, { required: finalRequired }, contextRowIndex);
|
|
1327
1332
|
var paramList = [];
|
|
1328
|
-
if (isHidden) {
|
|
1333
|
+
if (isHidden && !initFlag) {
|
|
1329
1334
|
paramList.push({ key: "value", value: "" });
|
|
1330
1335
|
paramList.push({ key: "required", value: false });
|
|
1331
1336
|
} else if (required !== baseline.required || !isHidden) {
|
|
@@ -1341,7 +1346,7 @@ var PageHome = function (_React$Component) {
|
|
|
1341
1346
|
|
|
1342
1347
|
}, {
|
|
1343
1348
|
key: 'refreshAllRelaFieldsByRelaMap',
|
|
1344
|
-
value: function refreshAllRelaFieldsByRelaMap(data, changedUniqueName, changedSubTblNo) {
|
|
1349
|
+
value: function refreshAllRelaFieldsByRelaMap(data, changedUniqueName, changedSubTblNo, options) {
|
|
1345
1350
|
var t = this;
|
|
1346
1351
|
var relaFieldsMap = t.state.formRelaFieldMaps;
|
|
1347
1352
|
if (!relaFieldsMap) {
|
|
@@ -1390,12 +1395,12 @@ var PageHome = function (_React$Component) {
|
|
|
1390
1395
|
// 子表触发只刷新当前行;主表触发刷新子表所有行
|
|
1391
1396
|
var subRowIndexes = t.getSubRelaRefreshRowIndexes(targetSubTblName, data, typeof changedSubTblNo !== 'undefined' ? changedSubTblNo : undefined);
|
|
1392
1397
|
for (var sri = 0; sri < subRowIndexes.length; sri++) {
|
|
1393
|
-
t.applyRelaRulesToTarget(targetUniqueName, rules, data, subRowIndexes[sri], changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields);
|
|
1398
|
+
t.applyRelaRulesToTarget(targetUniqueName, rules, data, subRowIndexes[sri], changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields, options);
|
|
1394
1399
|
}
|
|
1395
1400
|
} else {
|
|
1396
1401
|
// 主表字段:子表触发时用触发行号读取子表触发值
|
|
1397
1402
|
var mainContextRow = typeof changedSubTblNo !== 'undefined' ? changedSubTblNo : undefined;
|
|
1398
|
-
t.applyRelaRulesToTarget(targetUniqueName, rules, data, mainContextRow, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields);
|
|
1403
|
+
t.applyRelaRulesToTarget(targetUniqueName, rules, data, mainContextRow, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields, options);
|
|
1399
1404
|
}
|
|
1400
1405
|
}
|
|
1401
1406
|
} catch (err) {
|