fmui-base 2.2.87 → 2.2.89
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 +2 -0
- package/lib/form/form.js +191 -147
- package/lib/form/formExtHelper.js +131 -55
- package/lib/form/subForm.js +272 -21
- package/lib/form/table.js +472 -76
- package/lib/process_info/processInfo.js +2 -1
- package/lib/tblform/README.md +12 -3
- package/lib/tblform/TblForm.js +2 -0
- package/lib/tblform/formFieldProps.js +1 -0
- package/lib/tblform/pureFormAdapter.js +2 -1
- package/package.json +1 -1
package/lib/form/table.js
CHANGED
|
@@ -86,6 +86,85 @@ var savePhraseList = [{
|
|
|
86
86
|
}];
|
|
87
87
|
var formRelaFieldMaps = void 0;
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* 将按触发字段分组的数据转为按关联字段分组,并保持配置页自上而下优先级
|
|
91
|
+
*/
|
|
92
|
+
function buildFormRelaFieldMapsByRelaField(triggerFieldsMap) {
|
|
93
|
+
var relaFieldsMap = {};
|
|
94
|
+
if (!triggerFieldsMap) {
|
|
95
|
+
return relaFieldsMap;
|
|
96
|
+
}
|
|
97
|
+
var allRules = [];
|
|
98
|
+
var _iteratorNormalCompletion = true;
|
|
99
|
+
var _didIteratorError = false;
|
|
100
|
+
var _iteratorError = undefined;
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
for (var _iterator = Object.keys(triggerFieldsMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
104
|
+
var triggerKey = _step.value;
|
|
105
|
+
|
|
106
|
+
var ruleList = triggerFieldsMap[triggerKey] || [];
|
|
107
|
+
for (var i = 0; i < ruleList.length; i++) {
|
|
108
|
+
allRules.push(ruleList[i]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
} catch (err) {
|
|
112
|
+
_didIteratorError = true;
|
|
113
|
+
_iteratorError = err;
|
|
114
|
+
} finally {
|
|
115
|
+
try {
|
|
116
|
+
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
117
|
+
_iterator.return();
|
|
118
|
+
}
|
|
119
|
+
} finally {
|
|
120
|
+
if (_didIteratorError) {
|
|
121
|
+
throw _iteratorError;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
allRules.sort(function (a, b) {
|
|
127
|
+
var sortA = parseInt(a.sortNo, 10);
|
|
128
|
+
var sortB = parseInt(b.sortNo, 10);
|
|
129
|
+
if (isNaN(sortA)) {
|
|
130
|
+
sortA = 0;
|
|
131
|
+
}
|
|
132
|
+
if (isNaN(sortB)) {
|
|
133
|
+
sortB = 0;
|
|
134
|
+
}
|
|
135
|
+
return sortA - sortB;
|
|
136
|
+
});
|
|
137
|
+
allRules.reverse();
|
|
138
|
+
allRules.forEach(function (item) {
|
|
139
|
+
var relaFieldTblName = item.relaFieldTblName;
|
|
140
|
+
var relaFieldName = item.relaFieldName;
|
|
141
|
+
if (!relaFieldTblName) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
var relaFieldTblNameArray = relaFieldTblName.split(",");
|
|
145
|
+
var relaFieldNameArray = relaFieldName ? relaFieldName.split(",") : [];
|
|
146
|
+
var relaTblNameArray = item.relaTblName ? item.relaTblName.split(",") : [];
|
|
147
|
+
relaFieldTblNameArray.forEach(function (relaFieldTblNameItem, index) {
|
|
148
|
+
var relaFieldItem = {
|
|
149
|
+
relaFieldTblName: relaFieldTblNameItem,
|
|
150
|
+
triggerFieldName: item.triggerFieldName,
|
|
151
|
+
triggerFieldVal: item.triggerFieldVal,
|
|
152
|
+
triggerTblName: item.triggerTblName,
|
|
153
|
+
editType: item.editType,
|
|
154
|
+
relaFieldName: relaFieldNameArray[index] || relaFieldNameArray[0],
|
|
155
|
+
relaTblName: relaTblNameArray[index] || relaTblNameArray[0],
|
|
156
|
+
sortNo: item.sortNo
|
|
157
|
+
};
|
|
158
|
+
if (relaFieldsMap[relaFieldTblNameItem]) {
|
|
159
|
+
relaFieldsMap[relaFieldTblNameItem].push(relaFieldItem);
|
|
160
|
+
} else {
|
|
161
|
+
relaFieldsMap[relaFieldTblNameItem] = [relaFieldItem];
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
return relaFieldsMap;
|
|
166
|
+
}
|
|
167
|
+
|
|
89
168
|
var PageHome = function (_React$Component) {
|
|
90
169
|
_inherits(PageHome, _React$Component);
|
|
91
170
|
|
|
@@ -118,53 +197,14 @@ var PageHome = function (_React$Component) {
|
|
|
118
197
|
async: false,
|
|
119
198
|
success: function success(data) {
|
|
120
199
|
if (data.code == "0") {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
var k = _step.value;
|
|
130
|
-
|
|
131
|
-
formRelaFieldMaps[k].map(function (item) {
|
|
132
|
-
var relaFieldTblName = item.relaFieldTblName;
|
|
133
|
-
var relaFieldName = item.relaFieldName;
|
|
134
|
-
var relaFieldTblNameArray = relaFieldTblName.split(",");
|
|
135
|
-
var relaFieldNameArray = relaFieldName.split(",");
|
|
136
|
-
relaFieldTblNameArray.map(function (relaFieldTblNameArrayItem, index) {
|
|
137
|
-
var relaFieldTblNameNew = {
|
|
138
|
-
"relaFieldTblName": relaFieldTblNameArrayItem,
|
|
139
|
-
"triggerFieldName": item.triggerFieldName,
|
|
140
|
-
"triggerFieldVal": item.triggerFieldVal,
|
|
141
|
-
"triggerTblName": item.triggerTblName,
|
|
142
|
-
"editType": item.editType,
|
|
143
|
-
"relaFieldName": relaFieldNameArray[index],
|
|
144
|
-
"relaTblName": item.relaTblName
|
|
145
|
-
};
|
|
146
|
-
if (formRelaFieldMapsNew[relaFieldTblNameArrayItem]) {
|
|
147
|
-
formRelaFieldMapsNew[relaFieldTblNameArrayItem].push(relaFieldTblNameNew);
|
|
148
|
-
} else {
|
|
149
|
-
formRelaFieldMapsNew[relaFieldTblNameArrayItem] = [relaFieldTblNameNew];
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
} catch (err) {
|
|
155
|
-
_didIteratorError = true;
|
|
156
|
-
_iteratorError = err;
|
|
157
|
-
} finally {
|
|
158
|
-
try {
|
|
159
|
-
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
160
|
-
_iterator.return();
|
|
161
|
-
}
|
|
162
|
-
} finally {
|
|
163
|
-
if (_didIteratorError) {
|
|
164
|
-
throw _iteratorError;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
200
|
+
var responseData = data.data || {};
|
|
201
|
+
// 移动端新结构:triggerFieldsMap 按触发字段分组;relaFieldsMap 按关联字段分组且保留全局优先级
|
|
202
|
+
if (responseData.triggerFieldsMap) {
|
|
203
|
+
formRelaFieldMaps = responseData.triggerFieldsMap;
|
|
204
|
+
formRelaFieldMapsNew = responseData.relaFieldsMap || {};
|
|
205
|
+
} else {
|
|
206
|
+
formRelaFieldMaps = responseData;
|
|
207
|
+
formRelaFieldMapsNew = buildFormRelaFieldMapsByRelaField(formRelaFieldMaps);
|
|
168
208
|
}
|
|
169
209
|
}
|
|
170
210
|
},
|
|
@@ -339,8 +379,11 @@ var PageHome = function (_React$Component) {
|
|
|
339
379
|
}, {
|
|
340
380
|
key: 'change',
|
|
341
381
|
value: function change(data, itemParam, subTblNo) {
|
|
342
|
-
console.log("formRelaFieldMaps==" + this.state.formRelaFieldMaps);
|
|
343
382
|
var t = this;
|
|
383
|
+
// 字段关联 reloadItemParam 会再次进入 change,此处拦截避免死循环
|
|
384
|
+
if (t._isRelaFieldRefreshing) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
344
387
|
var module = t.props.module;
|
|
345
388
|
var formKey = t.props.allForm ? t.props.allForm.formcode : "";
|
|
346
389
|
var formTblId = t.props.allForm ? t.props.allForm.formTblId : "";
|
|
@@ -774,11 +817,31 @@ var PageHome = function (_React$Component) {
|
|
|
774
817
|
}
|
|
775
818
|
}
|
|
776
819
|
|
|
777
|
-
|
|
778
|
-
if (formRelaFieldMaps) {
|
|
820
|
+
//关联字段刷新(silent 模式,不向上触发 onChange)
|
|
821
|
+
if (t.state.formRelaFieldMaps) {
|
|
822
|
+
var isSubTrigger = typeof subTblNo != 'undefined' && itemParam.tableName != data.mainTblName;
|
|
823
|
+
t._isRelaFieldRefreshing = true;
|
|
824
|
+
try {
|
|
825
|
+
if (!isSubTrigger) {
|
|
826
|
+
t.refreshAllRelaFieldsByRelaMap(data);
|
|
827
|
+
} else if (formRelaFieldMaps) {
|
|
828
|
+
var formRelaFieldMapsObj = formRelaFieldMaps[itemParam.uniqueName];
|
|
829
|
+
if (formRelaFieldMapsObj && formRelaFieldMapsObj.length > 0) {
|
|
830
|
+
t.dealwithRelaField(formRelaFieldMapsObj, data, itemParam);
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
} finally {
|
|
834
|
+
t._isRelaFieldRefreshing = false;
|
|
835
|
+
}
|
|
836
|
+
} else if (formRelaFieldMaps) {
|
|
779
837
|
var formRelaFieldMapsObj = formRelaFieldMaps[itemParam.uniqueName];
|
|
780
838
|
if (formRelaFieldMapsObj && formRelaFieldMapsObj.length > 0) {
|
|
781
|
-
t.
|
|
839
|
+
t._isRelaFieldRefreshing = true;
|
|
840
|
+
try {
|
|
841
|
+
t.dealwithRelaField(formRelaFieldMapsObj, data, itemParam);
|
|
842
|
+
} finally {
|
|
843
|
+
t._isRelaFieldRefreshing = false;
|
|
844
|
+
}
|
|
782
845
|
}
|
|
783
846
|
}
|
|
784
847
|
}
|
|
@@ -845,30 +908,326 @@ var PageHome = function (_React$Component) {
|
|
|
845
908
|
value: function reloadFormRelaField() {
|
|
846
909
|
var t = this;
|
|
847
910
|
var data = t.props.data;
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
911
|
+
t._isRelaFieldRefreshing = true;
|
|
912
|
+
try {
|
|
913
|
+
if (t.state.formRelaFieldMaps) {
|
|
914
|
+
t.refreshAllRelaFieldsByRelaMap(data);
|
|
915
|
+
} else if (formRelaFieldMaps) {
|
|
916
|
+
var _iteratorNormalCompletion2 = true;
|
|
917
|
+
var _didIteratorError2 = false;
|
|
918
|
+
var _iteratorError2 = undefined;
|
|
853
919
|
|
|
920
|
+
try {
|
|
921
|
+
for (var _iterator2 = Object.keys(formRelaFieldMaps)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
922
|
+
var k = _step2.value;
|
|
923
|
+
|
|
924
|
+
var triggerRules = formRelaFieldMaps[k];
|
|
925
|
+
if (triggerRules && triggerRules.length > 0) {
|
|
926
|
+
t.dealwithRelaField(triggerRules, data, { uniqueName: k, key: k.split('_').pop(), tableName: k.split('_')[0] });
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
} catch (err) {
|
|
930
|
+
_didIteratorError2 = true;
|
|
931
|
+
_iteratorError2 = err;
|
|
932
|
+
} finally {
|
|
933
|
+
try {
|
|
934
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return) {
|
|
935
|
+
_iterator2.return();
|
|
936
|
+
}
|
|
937
|
+
} finally {
|
|
938
|
+
if (_didIteratorError2) {
|
|
939
|
+
throw _iteratorError2;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
} finally {
|
|
945
|
+
t._isRelaFieldRefreshing = false;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
}, {
|
|
949
|
+
key: 'normalizeRelaTriggerValue',
|
|
950
|
+
value: function normalizeRelaTriggerValue(nowValue) {
|
|
951
|
+
if (nowValue == null || typeof nowValue == 'undefined') {
|
|
952
|
+
return "";
|
|
953
|
+
}
|
|
954
|
+
if (nowValue && nowValue.indexOf("[") >= 0 && nowValue.indexOf("]") >= 0) {
|
|
854
955
|
try {
|
|
855
|
-
|
|
856
|
-
|
|
956
|
+
var nowValueArray = JSON.parse(nowValue);
|
|
957
|
+
if (nowValueArray.length == 1) {
|
|
958
|
+
return nowValueArray[0];
|
|
959
|
+
}
|
|
960
|
+
return nowValueArray.join(",");
|
|
961
|
+
} catch (e) {
|
|
962
|
+
return nowValue;
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
if (nowValue != '' && (nowValue.indexOf("$#$#") >= 0 || nowValue.indexOf("#$#$") >= 0)) {
|
|
966
|
+
if (nowValue.indexOf("#$#$") >= 0) {
|
|
967
|
+
var nowValueList = nowValue.split("#$#$");
|
|
968
|
+
if (nowValueList.length == 1) {
|
|
969
|
+
return nowValueList[0].replace("$#$#", "");
|
|
970
|
+
}
|
|
971
|
+
return nowValueList.map(function (item) {
|
|
972
|
+
return item.replace("$#$#", "");
|
|
973
|
+
}).join(",");
|
|
974
|
+
}
|
|
975
|
+
return nowValue.replace("$#$#", "");
|
|
976
|
+
}
|
|
977
|
+
return nowValue;
|
|
978
|
+
}
|
|
979
|
+
}, {
|
|
980
|
+
key: 'clearFieldDataValue',
|
|
981
|
+
value: function clearFieldDataValue(data, uniqueName) {
|
|
982
|
+
if (!data || !uniqueName) {
|
|
983
|
+
return;
|
|
984
|
+
}
|
|
985
|
+
var mainTblName = data.mainTblName;
|
|
986
|
+
var mainTblData = data.mainTblData || [];
|
|
987
|
+
for (var i = 0; i < mainTblData.length; i++) {
|
|
988
|
+
if (mainTblName + '_' + mainTblData[i].key == uniqueName) {
|
|
989
|
+
mainTblData[i].value = '';
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
if (data.subTbl && data.subTbl.length > 0) {
|
|
993
|
+
for (var j = 0; j < data.subTbl.length; j++) {
|
|
994
|
+
var subRows = data.subTbl[j].subTblData || [];
|
|
995
|
+
for (var r = 0; r < subRows.length; r++) {
|
|
996
|
+
var row = subRows[r] || [];
|
|
997
|
+
for (var c = 0; c < row.length; c++) {
|
|
998
|
+
if (row[c].uniqueName == uniqueName) {
|
|
999
|
+
row[c].value = '';
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
// 同步关联字段的必填等元数据到提交数据(checkSubmit 读取 mainTblData.required,非组件 state)
|
|
857
1008
|
|
|
858
|
-
|
|
1009
|
+
}, {
|
|
1010
|
+
key: 'syncRelaFieldMetaToData',
|
|
1011
|
+
value: function syncRelaFieldMetaToData(data, uniqueName, meta) {
|
|
1012
|
+
if (!data || !uniqueName || !meta) {
|
|
1013
|
+
return;
|
|
1014
|
+
}
|
|
1015
|
+
var mainTblName = data.mainTblName;
|
|
1016
|
+
var mainTblData = data.mainTblData || [];
|
|
1017
|
+
if (typeof meta.required !== 'undefined') {
|
|
1018
|
+
for (var i = 0; i < mainTblData.length; i++) {
|
|
1019
|
+
if (mainTblName + '_' + mainTblData[i].key == uniqueName) {
|
|
1020
|
+
mainTblData[i].required = meta.required;
|
|
859
1021
|
}
|
|
860
|
-
}
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
if (data.subTbl && data.subTbl.length > 0 && typeof meta.required !== 'undefined') {
|
|
1025
|
+
for (var j = 0; j < data.subTbl.length; j++) {
|
|
1026
|
+
var subRows = data.subTbl[j].subTblData || [];
|
|
1027
|
+
for (var r = 0; r < subRows.length; r++) {
|
|
1028
|
+
var row = subRows[r] || [];
|
|
1029
|
+
for (var c = 0; c < row.length; c++) {
|
|
1030
|
+
if (row[c].uniqueName == uniqueName) {
|
|
1031
|
+
row[c].required = meta.required;
|
|
1032
|
+
}
|
|
867
1033
|
}
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
if (data.relatedTbl && data.relatedTbl.length > 0 && typeof meta.required !== 'undefined') {
|
|
1038
|
+
for (var ri = 0; ri < data.relatedTbl.length; ri++) {
|
|
1039
|
+
var relatedMainTblData = data.relatedTbl[ri].relatedMainTblData;
|
|
1040
|
+
if (!relatedMainTblData) {
|
|
1041
|
+
continue;
|
|
1042
|
+
}
|
|
1043
|
+
var relatedTblName = data.relatedTbl[ri].relatedMainTblName;
|
|
1044
|
+
for (var rk = 0; rk < relatedMainTblData.length; rk++) {
|
|
1045
|
+
if (relatedTblName + '_' + relatedMainTblData[rk].key == uniqueName) {
|
|
1046
|
+
relatedMainTblData[rk].required = meta.required;
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}, {
|
|
1053
|
+
key: 'getRelaTriggerFieldValue',
|
|
1054
|
+
value: function getRelaTriggerFieldValue(rule, data) {
|
|
1055
|
+
var nowValue = "";
|
|
1056
|
+
var mainTblName = data.mainTblName;
|
|
1057
|
+
var triggerUnique = rule.triggerTblName + '_' + rule.triggerFieldName;
|
|
1058
|
+
if (this.refs[triggerUnique] && this.refs[triggerUnique].state && this.refs[triggerUnique].state.itemParam.isHidden) {
|
|
1059
|
+
return '';
|
|
1060
|
+
}
|
|
1061
|
+
var mainTblData = data.mainTblData || [];
|
|
1062
|
+
if (rule.triggerTblName == mainTblName) {
|
|
1063
|
+
for (var i = 0; i < mainTblData.length; i++) {
|
|
1064
|
+
if (mainTblData[i].key == rule.triggerFieldName) {
|
|
1065
|
+
nowValue = mainTblData[i].value ? mainTblData[i].value : "";
|
|
1066
|
+
break;
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
} else if (data.subTbl && data.subTbl.length > 0) {
|
|
1070
|
+
for (var j = 0; j < data.subTbl.length; j++) {
|
|
1071
|
+
if (data.subTbl[j].subTblName == rule.triggerTblName && data.subTbl[j].subTblData && data.subTbl[j].subTblData.length > 0) {
|
|
1072
|
+
var subRow = data.subTbl[j].subTblData[0];
|
|
1073
|
+
for (var k = 0; k < subRow.length; k++) {
|
|
1074
|
+
if (subRow[k].key == rule.triggerFieldName) {
|
|
1075
|
+
nowValue = subRow[k].value ? subRow[k].value : "";
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
return this.normalizeRelaTriggerValue(nowValue);
|
|
1082
|
+
}
|
|
1083
|
+
}, {
|
|
1084
|
+
key: 'isRelaRuleMatched',
|
|
1085
|
+
value: function isRelaRuleMatched(rule, nowValue) {
|
|
1086
|
+
var triggerFieldVal = rule.triggerFieldVal;
|
|
1087
|
+
if (triggerFieldVal == " ") {
|
|
1088
|
+
triggerFieldVal = "";
|
|
1089
|
+
}
|
|
1090
|
+
if (triggerFieldVal === '') {
|
|
1091
|
+
return true;
|
|
1092
|
+
}
|
|
1093
|
+
return triggerFieldVal == nowValue || nowValue.split(',').indexOf(triggerFieldVal) != -1;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
// 静默刷新关联字段 UI,不触发 change 死循环
|
|
1097
|
+
|
|
1098
|
+
}, {
|
|
1099
|
+
key: 'reloadRelaItemParam',
|
|
1100
|
+
value: function reloadRelaItemParam(formRef, paramList) {
|
|
1101
|
+
if (formRef && formRef.reloadItemParam) {
|
|
1102
|
+
formRef.reloadItemParam(paramList, { silent: true });
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
// 按 relaFieldsMap 全局顺序刷新所有关联字段(props 传入 form.jsx 的同一份数据)
|
|
1107
|
+
|
|
1108
|
+
}, {
|
|
1109
|
+
key: 'refreshAllRelaFieldsByRelaMap',
|
|
1110
|
+
value: function refreshAllRelaFieldsByRelaMap(data) {
|
|
1111
|
+
var t = this;
|
|
1112
|
+
var relaFieldsMap = t.state.formRelaFieldMaps;
|
|
1113
|
+
if (!relaFieldsMap) {
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
var fieldControll = t.props.fieldControll || {};
|
|
1117
|
+
var defaulthideFields = [];
|
|
1118
|
+
var defaultmustFields = [];
|
|
1119
|
+
var defaultshowFields = [];
|
|
1120
|
+
if (fieldControll.hiddenFields) {
|
|
1121
|
+
fieldControll.hiddenFields.split(',').forEach(function (f) {
|
|
1122
|
+
if (f) {
|
|
1123
|
+
defaulthideFields.push(f);
|
|
1124
|
+
}
|
|
1125
|
+
});
|
|
1126
|
+
}
|
|
1127
|
+
if (fieldControll.mustFields) {
|
|
1128
|
+
fieldControll.mustFields.split(',').forEach(function (f) {
|
|
1129
|
+
if (f) {
|
|
1130
|
+
defaultmustFields.push(f);
|
|
1131
|
+
}
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
if (fieldControll.showFields) {
|
|
1135
|
+
fieldControll.showFields.split(',').forEach(function (f) {
|
|
1136
|
+
if (f) {
|
|
1137
|
+
defaultshowFields.push(f);
|
|
1138
|
+
}
|
|
1139
|
+
});
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
var _iteratorNormalCompletion3 = true;
|
|
1143
|
+
var _didIteratorError3 = false;
|
|
1144
|
+
var _iteratorError3 = undefined;
|
|
1145
|
+
|
|
1146
|
+
try {
|
|
1147
|
+
for (var _iterator3 = Object.keys(relaFieldsMap)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
|
1148
|
+
var targetUniqueName = _step3.value;
|
|
1149
|
+
|
|
1150
|
+
var rules = relaFieldsMap[targetUniqueName];
|
|
1151
|
+
if (!rules || !rules.length || !t.refs[targetUniqueName]) {
|
|
1152
|
+
continue;
|
|
1153
|
+
}
|
|
1154
|
+
var hideFlag = defaulthideFields.indexOf(targetUniqueName) != -1;
|
|
1155
|
+
var mustFlag = defaultmustFields.indexOf(targetUniqueName) != -1;
|
|
1156
|
+
var editFlag = false;
|
|
1157
|
+
var isHidden = hideFlag;
|
|
1158
|
+
var required = false;
|
|
1159
|
+
var readOnly = false;
|
|
1160
|
+
|
|
1161
|
+
// sortNo 升序排列后倒序执行,配置页越靠上的规则越晚执行、优先生效
|
|
1162
|
+
var sortedRules = rules.slice().sort(function (a, b) {
|
|
1163
|
+
return (parseInt(a.sortNo, 10) || 0) - (parseInt(b.sortNo, 10) || 0);
|
|
1164
|
+
});
|
|
1165
|
+
for (var ri = sortedRules.length - 1; ri >= 0; ri--) {
|
|
1166
|
+
var rule = sortedRules[ri];
|
|
1167
|
+
var nowValue = t.getRelaTriggerFieldValue(rule, data);
|
|
1168
|
+
if (nowValue === '' && rule.triggerTblName) {
|
|
1169
|
+
var triggerUnique = rule.triggerTblName + '_' + rule.triggerFieldName;
|
|
1170
|
+
if (t.refs[triggerUnique] && t.refs[triggerUnique].state && t.refs[triggerUnique].state.itemParam.isHidden) {
|
|
1171
|
+
continue;
|
|
1172
|
+
}
|
|
871
1173
|
}
|
|
1174
|
+
var matched = t.isRelaRuleMatched(rule, nowValue);
|
|
1175
|
+
var editType = rule.editType;
|
|
1176
|
+
if (editType == 'hide' || editType == 'rowhide') {
|
|
1177
|
+
if (matched) {
|
|
1178
|
+
isHidden = true;
|
|
1179
|
+
hideFlag = true;
|
|
1180
|
+
required = false;
|
|
1181
|
+
} else if (!hideFlag && defaulthideFields.indexOf(targetUniqueName) == -1) {
|
|
1182
|
+
isHidden = false;
|
|
1183
|
+
}
|
|
1184
|
+
} else if (editType == 'must') {
|
|
1185
|
+
if (matched && !hideFlag) {
|
|
1186
|
+
required = true;
|
|
1187
|
+
mustFlag = true;
|
|
1188
|
+
isHidden = false;
|
|
1189
|
+
} else if (!mustFlag) {
|
|
1190
|
+
required = false;
|
|
1191
|
+
}
|
|
1192
|
+
} else if (editType == 'edit') {
|
|
1193
|
+
if (matched && defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1194
|
+
readOnly = false;
|
|
1195
|
+
editFlag = true;
|
|
1196
|
+
} else if (!editFlag && defaultshowFields.indexOf(targetUniqueName) != -1 && nowValue != '') {
|
|
1197
|
+
readOnly = true;
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
if (isHidden) {
|
|
1202
|
+
t.clearFieldDataValue(data, targetUniqueName);
|
|
1203
|
+
}
|
|
1204
|
+
var finalRequired = isHidden ? false : required;
|
|
1205
|
+
t.syncRelaFieldMetaToData(data, targetUniqueName, { required: finalRequired });
|
|
1206
|
+
var paramList = [];
|
|
1207
|
+
if (isHidden) {
|
|
1208
|
+
paramList.push({ key: "value", value: "" });
|
|
1209
|
+
paramList.push({ key: "required", value: false });
|
|
1210
|
+
} else if (required) {
|
|
1211
|
+
paramList.push({ key: "isHidden", value: false });
|
|
1212
|
+
}
|
|
1213
|
+
paramList.push({ key: "isHidden", value: isHidden });
|
|
1214
|
+
paramList.push({ key: "required", value: finalRequired });
|
|
1215
|
+
if (defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1216
|
+
paramList.push({ key: "readOnly", value: readOnly });
|
|
1217
|
+
}
|
|
1218
|
+
t.reloadRelaItemParam(t.refs[targetUniqueName], paramList);
|
|
1219
|
+
}
|
|
1220
|
+
} catch (err) {
|
|
1221
|
+
_didIteratorError3 = true;
|
|
1222
|
+
_iteratorError3 = err;
|
|
1223
|
+
} finally {
|
|
1224
|
+
try {
|
|
1225
|
+
if (!_iteratorNormalCompletion3 && _iterator3.return) {
|
|
1226
|
+
_iterator3.return();
|
|
1227
|
+
}
|
|
1228
|
+
} finally {
|
|
1229
|
+
if (_didIteratorError3) {
|
|
1230
|
+
throw _iteratorError3;
|
|
872
1231
|
}
|
|
873
1232
|
}
|
|
874
1233
|
}
|
|
@@ -1121,7 +1480,7 @@ var PageHome = function (_React$Component) {
|
|
|
1121
1480
|
isSubField = true;
|
|
1122
1481
|
var subTblNameItem = "sub_" + subTblName;
|
|
1123
1482
|
var subItem = relaFieldTblNameArrayItem + '_' + thisSubTblNo;
|
|
1124
|
-
t.refs[subTblNameItem].refs[subItem]
|
|
1483
|
+
t.reloadRelaItemParam(t.refs[subTblNameItem].refs[subItem], [relaFieldMap]);
|
|
1125
1484
|
}
|
|
1126
1485
|
}
|
|
1127
1486
|
}
|
|
@@ -1134,7 +1493,7 @@ var PageHome = function (_React$Component) {
|
|
|
1134
1493
|
isSubField = true;
|
|
1135
1494
|
var subTblNameItem = "sub_" + subTblName;
|
|
1136
1495
|
var subItem = relaFieldTblNameArrayItem + '_' + b;
|
|
1137
|
-
t.refs[subTblNameItem].refs[subItem]
|
|
1496
|
+
t.reloadRelaItemParam(t.refs[subTblNameItem].refs[subItem], [relaFieldMap]);
|
|
1138
1497
|
}
|
|
1139
1498
|
}
|
|
1140
1499
|
}
|
|
@@ -1146,10 +1505,10 @@ var PageHome = function (_React$Component) {
|
|
|
1146
1505
|
}
|
|
1147
1506
|
if (isSubField) {} else if (t.refs[relaFieldTblNameArrayItem]) {
|
|
1148
1507
|
if (relaFieldMap.key == "required" && relaFieldMap.value) {
|
|
1149
|
-
|
|
1150
|
-
|
|
1508
|
+
t.reloadRelaItemParam(t.refs[relaFieldTblNameArrayItem], [{ "key": "isHidden", "value": false }, relaFieldMap]);
|
|
1509
|
+
} else {
|
|
1510
|
+
t.reloadRelaItemParam(t.refs[relaFieldTblNameArrayItem], [relaFieldMap]);
|
|
1151
1511
|
}
|
|
1152
|
-
t.refs[relaFieldTblNameArrayItem].reloadItemParam([relaFieldMap]);
|
|
1153
1512
|
}
|
|
1154
1513
|
}
|
|
1155
1514
|
}
|
|
@@ -1955,6 +2314,43 @@ var PageHome = function (_React$Component) {
|
|
|
1955
2314
|
// })
|
|
1956
2315
|
// }
|
|
1957
2316
|
|
|
2317
|
+
// 子表列数:走 form_common / flow_common / mobileExt 现有扩展(dealwithCommonFormParam、dealwithFormParamExt)
|
|
2318
|
+
|
|
2319
|
+
}, {
|
|
2320
|
+
key: 'getSubColumnCount',
|
|
2321
|
+
value: function getSubColumnCount(detailItem) {
|
|
2322
|
+
var t = this;
|
|
2323
|
+
if (detailItem && detailItem.__subColumnCountResolved != null) {
|
|
2324
|
+
return detailItem.__subColumnCountResolved;
|
|
2325
|
+
}
|
|
2326
|
+
var allForm = t.props.allForm;
|
|
2327
|
+
var formKey = allForm && allForm.formcode;
|
|
2328
|
+
var formCode = t.state.formCode || t.props.formCode || '';
|
|
2329
|
+
var module = t.props.module;
|
|
2330
|
+
var flowCommonRef = FlowCommon;
|
|
2331
|
+
if (!flowCommonRef && formCode) {
|
|
2332
|
+
var loaded = (0, _formExtHelper.loadFlowOrFormCommon)({ formCode: formCode, module: module || '' });
|
|
2333
|
+
flowCommonRef = loaded.FlowCommon;
|
|
2334
|
+
}
|
|
2335
|
+
var itemParam = (0, _formExtHelper.applyDealwithFormParamExt)({
|
|
2336
|
+
detailForm: detailItem,
|
|
2337
|
+
FlowCommon: flowCommonRef,
|
|
2338
|
+
module: module,
|
|
2339
|
+
formKey: formKey,
|
|
2340
|
+
formCode: formCode,
|
|
2341
|
+
component: t
|
|
2342
|
+
});
|
|
2343
|
+
var count = (0, _formExtHelper.resolveSubColumnCountFromConfig)({
|
|
2344
|
+
itemParam: itemParam,
|
|
2345
|
+
detailForm: detailItem,
|
|
2346
|
+
subColumnCount: t.props.subColumnCount,
|
|
2347
|
+
allForm: allForm
|
|
2348
|
+
});
|
|
2349
|
+
if (detailItem) {
|
|
2350
|
+
detailItem.__subColumnCountResolved = count;
|
|
2351
|
+
}
|
|
2352
|
+
return count;
|
|
2353
|
+
}
|
|
1958
2354
|
}, {
|
|
1959
2355
|
key: 'render',
|
|
1960
2356
|
value: function render() {
|
|
@@ -1984,7 +2380,7 @@ var PageHome = function (_React$Component) {
|
|
|
1984
2380
|
}.bind(this)) : item.itemType == 'detail' ? _react2.default.createElement(
|
|
1985
2381
|
'div',
|
|
1986
2382
|
{ className: "subform_" + item.itemCode },
|
|
1987
|
-
_react2.default.createElement(_subForm2.default, { keyNo: i, ref: 'sub_' + item.itemCode, operate: t.props.operate, newspyj: t.props.newspyj, hasCommentField: t.props.hasCommentField, commentUpload: t.props.commentUpload, commentField: t.props.commentField, commentAttitude: t.props.commentAttitude, module: t.props.module, formKey: t.props.allForm.formcode, status: t.props.status, form: item, allForm: t.props.allForm, formStyle: t.props.formStyleObj, isCaUser: t.props.isCaUser, caFirm: t.props.caFirm, caESignatureName: t.props.caESignatureName, caFormSign: t.props.caFormSign, commentList: t.props.commentFieldList, defaultValue: t.props.defaultValue, data: t.props.data, fieldControll: t.props.fieldControll, caIsPrd: t.props.caIsPrd, preCaFields: t.props.preCaFields, formRelaFieldMaps: t.state.formRelaFieldMaps, linkFields: t.state.linkFields, isRemoveCommentFormHtml: t.props.isRemoveCommentFormHtml, inscriptionShow: t.props.inscriptionShow, onChange: this.change.bind(this) })
|
|
2383
|
+
_react2.default.createElement(_subForm2.default, { keyNo: i, ref: 'sub_' + item.itemCode, subColumnCount: t.getSubColumnCount(item), operate: t.props.operate, newspyj: t.props.newspyj, hasCommentField: t.props.hasCommentField, commentUpload: t.props.commentUpload, commentField: t.props.commentField, commentAttitude: t.props.commentAttitude, module: t.props.module, formKey: t.props.allForm.formcode, status: t.props.status, form: item, allForm: t.props.allForm, formStyle: t.props.formStyleObj, isCaUser: t.props.isCaUser, caFirm: t.props.caFirm, caESignatureName: t.props.caESignatureName, caFormSign: t.props.caFormSign, commentList: t.props.commentFieldList, defaultValue: t.props.defaultValue, data: t.props.data, fieldControll: t.props.fieldControll, caIsPrd: t.props.caIsPrd, preCaFields: t.props.preCaFields, formRelaFieldMaps: t.state.formRelaFieldMaps, linkFields: t.state.linkFields, isRemoveCommentFormHtml: t.props.isRemoveCommentFormHtml, inscriptionShow: t.props.inscriptionShow, onChange: this.change.bind(this) })
|
|
1988
2384
|
) : _react2.default.createElement(
|
|
1989
2385
|
'div',
|
|
1990
2386
|
{ className: "form_" + item.uniqueName },
|
|
@@ -2020,7 +2416,7 @@ var PageHome = function (_React$Component) {
|
|
|
2020
2416
|
}.bind(this)) : item.itemType == 'detail' ? _react2.default.createElement(
|
|
2021
2417
|
'div',
|
|
2022
2418
|
{ className: t.state.active == item.tabCode ? "" : "t-DN" },
|
|
2023
|
-
_react2.default.createElement(_subForm2.default, { className: "subform_" + item.itemCode, keyNo: i, ref: 'sub_' + item.itemCode, operate: t.props.operate, newspyj: t.props.newspyj, hasCommentField: t.props.hasCommentField, commentUpload: t.props.commentUpload, commentAttitude: t.props.commentAttitude, commentField: t.props.commentField, module: t.props.module, formKey: t.props.allForm.formcode, isCaUser: t.props.isCaUser, caFirm: t.props.caFirm, caESignatureName: t.props.caESignatureName, caFormSign: t.props.caFormSign, status: t.props.status, form: item, allForm: t.props.allForm, formStyle: t.props.formStyleObj, commentList: t.props.commentFieldList, inscriptionShow: t.props.inscriptionShow, data: t.props.data, fieldControll: t.props.fieldControll, onChange: this.change.bind(this) })
|
|
2419
|
+
_react2.default.createElement(_subForm2.default, { className: "subform_" + item.itemCode, keyNo: i, ref: 'sub_' + item.itemCode, subColumnCount: t.getSubColumnCount(item), operate: t.props.operate, newspyj: t.props.newspyj, hasCommentField: t.props.hasCommentField, commentUpload: t.props.commentUpload, commentAttitude: t.props.commentAttitude, commentField: t.props.commentField, module: t.props.module, formKey: t.props.allForm.formcode, isCaUser: t.props.isCaUser, caFirm: t.props.caFirm, caESignatureName: t.props.caESignatureName, caFormSign: t.props.caFormSign, status: t.props.status, form: item, allForm: t.props.allForm, formStyle: t.props.formStyleObj, commentList: t.props.commentFieldList, inscriptionShow: t.props.inscriptionShow, data: t.props.data, fieldControll: t.props.fieldControll, onChange: this.change.bind(this) })
|
|
2024
2420
|
) : _react2.default.createElement(
|
|
2025
2421
|
'div',
|
|
2026
2422
|
{ className: t.state.active == item.tabCode ? "" : "t-DN" },
|
|
@@ -349,6 +349,7 @@ var PageHome = function (_React$Component) {
|
|
|
349
349
|
userId: loginUserId,
|
|
350
350
|
formItem: [],
|
|
351
351
|
formStyleObj: {}, //表单字体样式
|
|
352
|
+
subColumnCount: props.subColumnCount != null && props.subColumnCount !== '' ? props.subColumnCount : 1, //子表每行列数,默认1
|
|
352
353
|
formTblName: '',
|
|
353
354
|
dataId: dataId,
|
|
354
355
|
formId: props.formId,
|
|
@@ -7786,7 +7787,7 @@ var PageHome = function (_React$Component) {
|
|
|
7786
7787
|
_react2.default.createElement(
|
|
7787
7788
|
_Group2.default.List,
|
|
7788
7789
|
null,
|
|
7789
|
-
this.state.tableStatus == '0' ? "" : _react2.default.createElement(_table2.default, { module: this.state.module, operate: this.state.operate, editType: this.state.editType, dataId: this.state.dataId, hasCommentField: t.state.hasCommentField, newspyj: t.state.newspyj, commentField: t.state.commentField, commentAttitude: t.state.commentAttitude, status: t.state.status, form: t.state.formItem, formStyleObj: t.state.formStyleObj, allForm: t.state.form, data: t.state.editFormData, commentFieldList: t.state.commentFieldList, defaultValue: t.state.defaultValue, commentDefaultList: t.state.commentDefaultList, commentBackList: t.state.commentBackList, fieldControll: t.state.fieldControll, caIsPrd: t.state.caIsPrd, preCaFields: t.state.preCaFields, formRelaField: t.state.formRelaField, isRemoveCommentFormHtml: t.state.isRemoveCommentFormHtml, commentUpload: t.state.commentUpload, isCaUser: t.state.isCaUser, caFirm: t.state.caFirm, caESignatureName: t.state.caESignatureName, caFormSign: t.state.caFormSign, inscriptionShow: t.state.inscriptionShow, onChange: this.change.bind(this) })
|
|
7790
|
+
this.state.tableStatus == '0' ? "" : _react2.default.createElement(_table2.default, { module: this.state.module, operate: this.state.operate, editType: this.state.editType, dataId: this.state.dataId, hasCommentField: t.state.hasCommentField, newspyj: t.state.newspyj, commentField: t.state.commentField, commentAttitude: t.state.commentAttitude, status: t.state.status, form: t.state.formItem, formStyleObj: t.state.formStyleObj, subColumnCount: t.state.subColumnCount, allForm: t.state.form, data: t.state.editFormData, commentFieldList: t.state.commentFieldList, defaultValue: t.state.defaultValue, commentDefaultList: t.state.commentDefaultList, commentBackList: t.state.commentBackList, fieldControll: t.state.fieldControll, caIsPrd: t.state.caIsPrd, preCaFields: t.state.preCaFields, formRelaField: t.state.formRelaField, isRemoveCommentFormHtml: t.state.isRemoveCommentFormHtml, commentUpload: t.state.commentUpload, isCaUser: t.state.isCaUser, caFirm: t.state.caFirm, caESignatureName: t.state.caESignatureName, caFormSign: t.state.caFormSign, inscriptionShow: t.state.inscriptionShow, onChange: this.change.bind(this) })
|
|
7790
7791
|
)
|
|
7791
7792
|
)
|
|
7792
7793
|
)
|
package/lib/tblform/README.md
CHANGED
|
@@ -325,8 +325,11 @@ export default {
|
|
|
325
325
|
// table: TblForm 实例(可访问 refs)
|
|
326
326
|
},
|
|
327
327
|
|
|
328
|
-
/**
|
|
329
|
-
dealwithCommonFormParam(itemParam,
|
|
328
|
+
/** 字段参数处理(子表 SubForm 加载时也会调用,可设置 subColumnCount: 1-4) */
|
|
329
|
+
dealwithCommonFormParam(itemParam, subForm) {
|
|
330
|
+
if (itemParam.key === 'sub_tbl_1') {
|
|
331
|
+
itemParam.subColumnCount = 2;
|
|
332
|
+
}
|
|
330
333
|
return itemParam;
|
|
331
334
|
},
|
|
332
335
|
|
|
@@ -345,12 +348,18 @@ window.test_lizhao0316_mobileExt = {
|
|
|
345
348
|
dealwithFormItemChangeExt(itemParam, table, callback) {
|
|
346
349
|
// callback([{ type: 'main', key: 'f11$', data: '联动值' }]);
|
|
347
350
|
},
|
|
348
|
-
dealwithFormParamExt(itemParam,
|
|
351
|
+
dealwithFormParamExt(itemParam, subForm) {
|
|
352
|
+
// 子表多列:在现有扩展里赋值 subColumnCount(1-4),SubForm/Table 会自动读取
|
|
353
|
+
if (itemParam.key === 'sub_tbl_1') {
|
|
354
|
+
itemParam.subColumnCount = 2;
|
|
355
|
+
}
|
|
349
356
|
return itemParam;
|
|
350
357
|
},
|
|
351
358
|
};
|
|
352
359
|
```
|
|
353
360
|
|
|
361
|
+
流程表单在 `pages/flow_common/{module}.js` 的 **`dealwithCommonFormParam`** 中同样可设置 `itemParam.subColumnCount`;流程页还可通过 `{module}_{formKey}_mobileExt.dealwithFormParamExt` 按子表编码区分列数。无需新增扩展方法名。
|
|
362
|
+
|
|
354
363
|
### 手动加载扩展(高级)
|
|
355
364
|
|
|
356
365
|
```javascript
|