fmui-base 2.2.96 → 2.2.97
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/form.js +63 -20
- package/lib/form/subForm.js +1 -0
- package/lib/form/table.js +221 -87
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/form/form.js
CHANGED
|
@@ -1497,6 +1497,12 @@ var PageHome = function (_React$Component) {
|
|
|
1497
1497
|
}
|
|
1498
1498
|
}
|
|
1499
1499
|
itemParam = t.dealwithLinkField(itemParam, data, status);
|
|
1500
|
+
// 关联联动还原基线:流程权限/表单设计确定后的初始状态
|
|
1501
|
+
itemParam.relaBaseline = {
|
|
1502
|
+
isHidden: !!itemParam.isHidden,
|
|
1503
|
+
required: !!itemParam.required,
|
|
1504
|
+
readOnly: !!itemParam.readOnly
|
|
1505
|
+
};
|
|
1500
1506
|
itemParam = t.dealwithRelaField(itemParam, allForm);
|
|
1501
1507
|
|
|
1502
1508
|
if (itemType != 'weboffice') {
|
|
@@ -1817,6 +1823,29 @@ var PageHome = function (_React$Component) {
|
|
|
1817
1823
|
break;
|
|
1818
1824
|
}
|
|
1819
1825
|
}
|
|
1826
|
+
} else if (this.props.dataType === 'sub' && this.props.fullFormData) {
|
|
1827
|
+
var fullData = this.props.fullFormData;
|
|
1828
|
+
if (rule.triggerTblName == fullData.mainTblName) {
|
|
1829
|
+
var fullMainTblData = fullData.mainTblData || [];
|
|
1830
|
+
for (var fi = 0; fi < fullMainTblData.length; fi++) {
|
|
1831
|
+
if (fullMainTblData[fi].key == rule.triggerFieldName) {
|
|
1832
|
+
nowValue = fullMainTblData[fi].value ? fullMainTblData[fi].value : "";
|
|
1833
|
+
break;
|
|
1834
|
+
}
|
|
1835
|
+
}
|
|
1836
|
+
} else if (fullData.subTbl && fullData.subTbl.length > 0) {
|
|
1837
|
+
var rowIndex = typeof this.props.keyNo !== 'undefined' ? this.props.keyNo : 0;
|
|
1838
|
+
for (var sj = 0; sj < fullData.subTbl.length; sj++) {
|
|
1839
|
+
if (fullData.subTbl[sj].subTblName == rule.triggerTblName && fullData.subTbl[sj].subTblData && fullData.subTbl[sj].subTblData.length > rowIndex) {
|
|
1840
|
+
var subRow = fullData.subTbl[sj].subTblData[rowIndex];
|
|
1841
|
+
for (var sk = 0; sk < subRow.length; sk++) {
|
|
1842
|
+
if (subRow[sk].key == rule.triggerFieldName) {
|
|
1843
|
+
nowValue = subRow[sk].value ? subRow[sk].value : "";
|
|
1844
|
+
}
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
}
|
|
1820
1849
|
} else if (allForm && allForm.item) {
|
|
1821
1850
|
allForm.item.map(function (subTblItem) {
|
|
1822
1851
|
if (allForm.tblName == rule.triggerTblName && subTblItem) {
|
|
@@ -1879,40 +1908,54 @@ var PageHome = function (_React$Component) {
|
|
|
1879
1908
|
}
|
|
1880
1909
|
});
|
|
1881
1910
|
}
|
|
1882
|
-
|
|
1883
|
-
itemParam.
|
|
1884
|
-
|
|
1911
|
+
var baseline = itemParam.relaBaseline || {
|
|
1912
|
+
isHidden: defaulthideFields.indexOf(itemParam.uniqueName) != -1,
|
|
1913
|
+
required: defaultmustFields.indexOf(itemParam.uniqueName) != -1,
|
|
1914
|
+
readOnly: defaultshowFields.indexOf(itemParam.uniqueName) != -1
|
|
1915
|
+
};
|
|
1916
|
+
itemParam.isHidden = baseline.isHidden;
|
|
1917
|
+
itemParam.required = baseline.required;
|
|
1918
|
+
itemParam.readOnly = baseline.readOnly;
|
|
1885
1919
|
// 流程只读/必填或表单设计只读时,关联编辑/必填不生效
|
|
1886
|
-
var skipEditMust = defaultshowFields.indexOf(itemParam.uniqueName) != -1 || defaultmustFields.indexOf(itemParam.uniqueName) != -1 ||
|
|
1920
|
+
var skipEditMust = defaultshowFields.indexOf(itemParam.uniqueName) != -1 || defaultmustFields.indexOf(itemParam.uniqueName) != -1 || baseline.readOnly === true || this.props.form && this.props.form.readOnly === true;
|
|
1921
|
+
var hideFlag = baseline.isHidden;
|
|
1922
|
+
var mustFlag = baseline.required;
|
|
1923
|
+
var editFlag = false;
|
|
1887
1924
|
|
|
1888
|
-
formRelaFieldMapsArray.
|
|
1925
|
+
var sortedRules = formRelaFieldMapsArray.slice().sort(function (a, b) {
|
|
1926
|
+
return (parseInt(a.sortNo, 10) || 0) - (parseInt(b.sortNo, 10) || 0);
|
|
1927
|
+
});
|
|
1928
|
+
for (var ri = sortedRules.length - 1; ri >= 0; ri--) {
|
|
1929
|
+
var rule = sortedRules[ri];
|
|
1889
1930
|
var nowValue = this.getRelaTriggerFieldValue(rule, data, allForm);
|
|
1890
1931
|
var matched = this.isRelaRuleMatched(rule, nowValue);
|
|
1891
1932
|
var editType = rule.editType;
|
|
1892
1933
|
if (editType == 'hide' || editType == 'rowhide') {
|
|
1893
1934
|
if (matched) {
|
|
1894
1935
|
itemParam.isHidden = true;
|
|
1895
|
-
|
|
1896
|
-
|
|
1936
|
+
hideFlag = true;
|
|
1937
|
+
} else if (!hideFlag) {
|
|
1938
|
+
itemParam.isHidden = baseline.isHidden;
|
|
1897
1939
|
}
|
|
1898
1940
|
} else if (editType == 'must') {
|
|
1899
|
-
if (!skipEditMust) {
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1941
|
+
if (!skipEditMust && matched && !hideFlag) {
|
|
1942
|
+
itemParam.required = true;
|
|
1943
|
+
mustFlag = true;
|
|
1944
|
+
itemParam.isHidden = false;
|
|
1945
|
+
} else if (!mustFlag) {
|
|
1946
|
+
itemParam.required = baseline.required;
|
|
1905
1947
|
}
|
|
1906
1948
|
} else if (editType == 'edit') {
|
|
1907
|
-
if (!skipEditMust) {
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1949
|
+
if (!skipEditMust && matched && defaultshowFields.indexOf(itemParam.uniqueName) != -1) {
|
|
1950
|
+
itemParam.readOnly = false;
|
|
1951
|
+
editFlag = true;
|
|
1952
|
+
} else if (!skipEditMust && !editFlag && defaultshowFields.indexOf(itemParam.uniqueName) != -1 && nowValue != '') {
|
|
1953
|
+
itemParam.readOnly = true;
|
|
1954
|
+
} else if (!editFlag && defaultshowFields.indexOf(itemParam.uniqueName) != -1) {
|
|
1955
|
+
itemParam.readOnly = baseline.readOnly;
|
|
1913
1956
|
}
|
|
1914
1957
|
}
|
|
1915
|
-
}
|
|
1958
|
+
}
|
|
1916
1959
|
|
|
1917
1960
|
if (itemParam.isHidden) {
|
|
1918
1961
|
itemParam.required = false;
|
package/lib/form/subForm.js
CHANGED
|
@@ -635,6 +635,7 @@ var PageHome = function (_React$Component) {
|
|
|
635
635
|
allForm: t.props.allForm,
|
|
636
636
|
formStyle: t.props.formStyle,
|
|
637
637
|
data: t.state.itemParam.value[rowIndex],
|
|
638
|
+
fullFormData: t.props.data,
|
|
638
639
|
fieldControll: t.state.fieldControll,
|
|
639
640
|
caIsPrd: t.props.caIsPrd,
|
|
640
641
|
preCaFields: t.props.preCaFields,
|
package/lib/form/table.js
CHANGED
|
@@ -824,17 +824,9 @@ var PageHome = function (_React$Component) {
|
|
|
824
824
|
//关联字段刷新(silent 模式,不向上触发 onChange)
|
|
825
825
|
var hasRelaFieldsMap = t.state.formRelaFieldMaps && Object.keys(t.state.formRelaFieldMaps).length > 0;
|
|
826
826
|
if (hasRelaFieldsMap) {
|
|
827
|
-
var isSubTrigger = typeof subTblNo != 'undefined' && itemParam.tableName != data.mainTblName;
|
|
828
827
|
t._isRelaFieldRefreshing = true;
|
|
829
828
|
try {
|
|
830
|
-
|
|
831
|
-
t.refreshAllRelaFieldsByRelaMap(data, itemParam.uniqueName);
|
|
832
|
-
} else if (formRelaFieldMaps) {
|
|
833
|
-
var formRelaFieldMapsObj = formRelaFieldMaps[itemParam.uniqueName];
|
|
834
|
-
if (formRelaFieldMapsObj && formRelaFieldMapsObj.length > 0) {
|
|
835
|
-
t.dealwithRelaField(formRelaFieldMapsObj, data, itemParam);
|
|
836
|
-
}
|
|
837
|
-
}
|
|
829
|
+
t.refreshAllRelaFieldsByRelaMap(data, itemParam.uniqueName, subTblNo);
|
|
838
830
|
} finally {
|
|
839
831
|
t._isRelaFieldRefreshing = false;
|
|
840
832
|
}
|
|
@@ -983,7 +975,7 @@ var PageHome = function (_React$Component) {
|
|
|
983
975
|
}
|
|
984
976
|
}, {
|
|
985
977
|
key: 'clearFieldDataValue',
|
|
986
|
-
value: function clearFieldDataValue(data, uniqueName) {
|
|
978
|
+
value: function clearFieldDataValue(data, uniqueName, contextRowIndex) {
|
|
987
979
|
if (!data || !uniqueName) {
|
|
988
980
|
return;
|
|
989
981
|
}
|
|
@@ -998,6 +990,9 @@ var PageHome = function (_React$Component) {
|
|
|
998
990
|
for (var j = 0; j < data.subTbl.length; j++) {
|
|
999
991
|
var subRows = data.subTbl[j].subTblData || [];
|
|
1000
992
|
for (var r = 0; r < subRows.length; r++) {
|
|
993
|
+
if (typeof contextRowIndex !== 'undefined' && r != contextRowIndex) {
|
|
994
|
+
continue;
|
|
995
|
+
}
|
|
1001
996
|
var row = subRows[r] || [];
|
|
1002
997
|
for (var c = 0; c < row.length; c++) {
|
|
1003
998
|
if (row[c].uniqueName == uniqueName) {
|
|
@@ -1009,11 +1004,76 @@ var PageHome = function (_React$Component) {
|
|
|
1009
1004
|
}
|
|
1010
1005
|
}
|
|
1011
1006
|
|
|
1007
|
+
// 判断 uniqueName 是否属于子表字段
|
|
1008
|
+
|
|
1009
|
+
}, {
|
|
1010
|
+
key: 'getSubTblNameByUniqueName',
|
|
1011
|
+
value: function getSubTblNameByUniqueName(uniqueName, data) {
|
|
1012
|
+
if (!uniqueName || !data || !data.subTbl) {
|
|
1013
|
+
return null;
|
|
1014
|
+
}
|
|
1015
|
+
for (var i = 0; i < data.subTbl.length; i++) {
|
|
1016
|
+
var subTblName = data.subTbl[i].subTblName;
|
|
1017
|
+
if (uniqueName.indexOf(subTblName + '_') === 0) {
|
|
1018
|
+
return subTblName;
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
return null;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
// 获取关联字段 Form 组件 ref(主表或子表指定行)
|
|
1025
|
+
|
|
1026
|
+
}, {
|
|
1027
|
+
key: 'getRelaFieldFormRef',
|
|
1028
|
+
value: function getRelaFieldFormRef(uniqueName, contextRowIndex, data) {
|
|
1029
|
+
data = data || this.props.data;
|
|
1030
|
+
var subTblName = this.getSubTblNameByUniqueName(uniqueName, data);
|
|
1031
|
+
if (subTblName != null) {
|
|
1032
|
+
if (typeof contextRowIndex === 'undefined') {
|
|
1033
|
+
return null;
|
|
1034
|
+
}
|
|
1035
|
+
var subFormRef = this.refs['sub_' + subTblName];
|
|
1036
|
+
if (subFormRef && subFormRef.refs) {
|
|
1037
|
+
return subFormRef.refs[uniqueName + '_' + contextRowIndex] || null;
|
|
1038
|
+
}
|
|
1039
|
+
return null;
|
|
1040
|
+
}
|
|
1041
|
+
return this.refs[uniqueName] || null;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
// 子表目标字段需要刷新的行号列表
|
|
1045
|
+
|
|
1046
|
+
}, {
|
|
1047
|
+
key: 'getSubRelaRefreshRowIndexes',
|
|
1048
|
+
value: function getSubRelaRefreshRowIndexes(targetSubTblName, data, changedSubTblNo) {
|
|
1049
|
+
var rowIndexes = [];
|
|
1050
|
+
if (!data || !data.subTbl) {
|
|
1051
|
+
return rowIndexes;
|
|
1052
|
+
}
|
|
1053
|
+
for (var i = 0; i < data.subTbl.length; i++) {
|
|
1054
|
+
if (data.subTbl[i].subTblName != targetSubTblName) {
|
|
1055
|
+
continue;
|
|
1056
|
+
}
|
|
1057
|
+
var subRows = data.subTbl[i].subTblData || [];
|
|
1058
|
+
if (typeof changedSubTblNo !== 'undefined') {
|
|
1059
|
+
if (changedSubTblNo < subRows.length) {
|
|
1060
|
+
rowIndexes.push(changedSubTblNo);
|
|
1061
|
+
}
|
|
1062
|
+
} else {
|
|
1063
|
+
for (var r = 0; r < subRows.length; r++) {
|
|
1064
|
+
rowIndexes.push(r);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
break;
|
|
1068
|
+
}
|
|
1069
|
+
return rowIndexes;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1012
1072
|
// 同步关联字段的必填等元数据到提交数据(checkSubmit 读取 mainTblData.required,非组件 state)
|
|
1013
1073
|
|
|
1014
1074
|
}, {
|
|
1015
1075
|
key: 'syncRelaFieldMetaToData',
|
|
1016
|
-
value: function syncRelaFieldMetaToData(data, uniqueName, meta) {
|
|
1076
|
+
value: function syncRelaFieldMetaToData(data, uniqueName, meta, contextRowIndex) {
|
|
1017
1077
|
if (!data || !uniqueName || !meta) {
|
|
1018
1078
|
return;
|
|
1019
1079
|
}
|
|
@@ -1030,6 +1090,9 @@ var PageHome = function (_React$Component) {
|
|
|
1030
1090
|
for (var j = 0; j < data.subTbl.length; j++) {
|
|
1031
1091
|
var subRows = data.subTbl[j].subTblData || [];
|
|
1032
1092
|
for (var r = 0; r < subRows.length; r++) {
|
|
1093
|
+
if (typeof contextRowIndex !== 'undefined' && r != contextRowIndex) {
|
|
1094
|
+
continue;
|
|
1095
|
+
}
|
|
1033
1096
|
var row = subRows[r] || [];
|
|
1034
1097
|
for (var c = 0; c < row.length; c++) {
|
|
1035
1098
|
if (row[c].uniqueName == uniqueName) {
|
|
@@ -1056,11 +1119,15 @@ var PageHome = function (_React$Component) {
|
|
|
1056
1119
|
}
|
|
1057
1120
|
}, {
|
|
1058
1121
|
key: 'getRelaTriggerFieldValue',
|
|
1059
|
-
value: function getRelaTriggerFieldValue(rule, data) {
|
|
1122
|
+
value: function getRelaTriggerFieldValue(rule, data, contextRowIndex) {
|
|
1060
1123
|
var nowValue = "";
|
|
1061
1124
|
var mainTblName = data.mainTblName;
|
|
1062
1125
|
var triggerUnique = rule.triggerTblName + '_' + rule.triggerFieldName;
|
|
1063
|
-
|
|
1126
|
+
var triggerRef = this.getRelaFieldFormRef(triggerUnique, contextRowIndex, data);
|
|
1127
|
+
if (!triggerRef) {
|
|
1128
|
+
triggerRef = this.refs[triggerUnique];
|
|
1129
|
+
}
|
|
1130
|
+
if (triggerRef && triggerRef.state && triggerRef.state.itemParam.isHidden) {
|
|
1064
1131
|
return '';
|
|
1065
1132
|
}
|
|
1066
1133
|
var mainTblData = data.mainTblData || [];
|
|
@@ -1072,9 +1139,10 @@ var PageHome = function (_React$Component) {
|
|
|
1072
1139
|
}
|
|
1073
1140
|
}
|
|
1074
1141
|
} else if (data.subTbl && data.subTbl.length > 0) {
|
|
1142
|
+
var rowIndex = typeof contextRowIndex !== 'undefined' ? contextRowIndex : 0;
|
|
1075
1143
|
for (var j = 0; j < data.subTbl.length; j++) {
|
|
1076
|
-
if (data.subTbl[j].subTblName == rule.triggerTblName && data.subTbl[j].subTblData && data.subTbl[j].subTblData.length >
|
|
1077
|
-
var subRow = data.subTbl[j].subTblData[
|
|
1144
|
+
if (data.subTbl[j].subTblName == rule.triggerTblName && data.subTbl[j].subTblData && data.subTbl[j].subTblData.length > rowIndex) {
|
|
1145
|
+
var subRow = data.subTbl[j].subTblData[rowIndex];
|
|
1078
1146
|
for (var k = 0; k < subRow.length; k++) {
|
|
1079
1147
|
if (subRow[k].key == rule.triggerFieldName) {
|
|
1080
1148
|
nowValue = subRow[k].value ? subRow[k].value : "";
|
|
@@ -1098,6 +1166,40 @@ var PageHome = function (_React$Component) {
|
|
|
1098
1166
|
return triggerFieldVal == nowValue || nowValue.split(',').indexOf(triggerFieldVal) != -1;
|
|
1099
1167
|
}
|
|
1100
1168
|
|
|
1169
|
+
// 获取关联字段还原基线(流程权限/表单设计后的初始状态)
|
|
1170
|
+
|
|
1171
|
+
}, {
|
|
1172
|
+
key: 'getRelaFieldBaseline',
|
|
1173
|
+
value: function getRelaFieldBaseline(targetUniqueName, fieldRef, fieldControll) {
|
|
1174
|
+
fieldControll = fieldControll || {};
|
|
1175
|
+
var baseline = { isHidden: false, required: false, readOnly: false };
|
|
1176
|
+
if (fieldRef && fieldRef.state && fieldRef.state.itemParam && fieldRef.state.itemParam.relaBaseline) {
|
|
1177
|
+
baseline = {
|
|
1178
|
+
isHidden: !!fieldRef.state.itemParam.relaBaseline.isHidden,
|
|
1179
|
+
required: !!fieldRef.state.itemParam.relaBaseline.required,
|
|
1180
|
+
readOnly: !!fieldRef.state.itemParam.relaBaseline.readOnly
|
|
1181
|
+
};
|
|
1182
|
+
} else if (fieldRef && fieldRef.props) {
|
|
1183
|
+
var form = fieldRef.props.form || {};
|
|
1184
|
+
if (form.valid == 'true') {
|
|
1185
|
+
baseline.required = true;
|
|
1186
|
+
}
|
|
1187
|
+
if (form.readOnly === true) {
|
|
1188
|
+
baseline.readOnly = true;
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
if (fieldControll.hiddenFields && fieldControll.hiddenFields.split(',').indexOf(targetUniqueName) != -1) {
|
|
1192
|
+
baseline.isHidden = true;
|
|
1193
|
+
}
|
|
1194
|
+
if (fieldControll.mustFields && fieldControll.mustFields.split(',').indexOf(targetUniqueName) != -1) {
|
|
1195
|
+
baseline.required = true;
|
|
1196
|
+
}
|
|
1197
|
+
if (fieldControll.showFields && fieldControll.showFields.split(',').indexOf(targetUniqueName) != -1) {
|
|
1198
|
+
baseline.readOnly = true;
|
|
1199
|
+
}
|
|
1200
|
+
return baseline;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1101
1203
|
// 流程只读/必填或表单设计只读时,关联的编辑/必填不生效(与PC init-readonly-flag / init-notnull-flag 一致)
|
|
1102
1204
|
|
|
1103
1205
|
}, {
|
|
@@ -1144,11 +1246,102 @@ var PageHome = function (_React$Component) {
|
|
|
1144
1246
|
}
|
|
1145
1247
|
}
|
|
1146
1248
|
|
|
1147
|
-
//
|
|
1249
|
+
// 对单个关联目标字段应用规则(主表或子表指定行)
|
|
1250
|
+
|
|
1251
|
+
}, {
|
|
1252
|
+
key: 'applyRelaRulesToTarget',
|
|
1253
|
+
value: function applyRelaRulesToTarget(targetUniqueName, rules, data, contextRowIndex, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields) {
|
|
1254
|
+
var t = this;
|
|
1255
|
+
if (changedUniqueName && targetUniqueName === changedUniqueName) {
|
|
1256
|
+
if (typeof changedSubTblNo === 'undefined' || changedSubTblNo === contextRowIndex) {
|
|
1257
|
+
return;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
var fieldRef = t.getRelaFieldFormRef(targetUniqueName, contextRowIndex, data);
|
|
1261
|
+
if (!fieldRef) {
|
|
1262
|
+
return;
|
|
1263
|
+
}
|
|
1264
|
+
var skipEditMust = t.isRelaFieldSkipEditMust(targetUniqueName, fieldControll, fieldRef);
|
|
1265
|
+
var baseline = t.getRelaFieldBaseline(targetUniqueName, fieldRef, fieldControll);
|
|
1266
|
+
var hideFlag = baseline.isHidden;
|
|
1267
|
+
var mustFlag = baseline.required;
|
|
1268
|
+
var editFlag = false;
|
|
1269
|
+
var isHidden = baseline.isHidden;
|
|
1270
|
+
var required = baseline.required;
|
|
1271
|
+
var readOnly = baseline.readOnly;
|
|
1272
|
+
|
|
1273
|
+
var sortedRules = rules.slice().sort(function (a, b) {
|
|
1274
|
+
return (parseInt(a.sortNo, 10) || 0) - (parseInt(b.sortNo, 10) || 0);
|
|
1275
|
+
});
|
|
1276
|
+
for (var ri = sortedRules.length - 1; ri >= 0; ri--) {
|
|
1277
|
+
var rule = sortedRules[ri];
|
|
1278
|
+
var nowValue = t.getRelaTriggerFieldValue(rule, data, contextRowIndex);
|
|
1279
|
+
if (nowValue === '' && rule.triggerTblName) {
|
|
1280
|
+
var triggerUnique = rule.triggerTblName + '_' + rule.triggerFieldName;
|
|
1281
|
+
var triggerRef = t.getRelaFieldFormRef(triggerUnique, contextRowIndex, data);
|
|
1282
|
+
if (!triggerRef) {
|
|
1283
|
+
triggerRef = t.refs[triggerUnique];
|
|
1284
|
+
}
|
|
1285
|
+
if (triggerRef && triggerRef.state && triggerRef.state.itemParam.isHidden) {
|
|
1286
|
+
continue;
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
var matched = t.isRelaRuleMatched(rule, nowValue);
|
|
1290
|
+
var editType = rule.editType;
|
|
1291
|
+
if (editType == 'hide' || editType == 'rowhide') {
|
|
1292
|
+
if (matched) {
|
|
1293
|
+
isHidden = true;
|
|
1294
|
+
hideFlag = true;
|
|
1295
|
+
required = false;
|
|
1296
|
+
} else if (!hideFlag) {
|
|
1297
|
+
isHidden = baseline.isHidden;
|
|
1298
|
+
if (!baseline.isHidden && !mustFlag) {
|
|
1299
|
+
required = baseline.required;
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
} else if (editType == 'must') {
|
|
1303
|
+
if (!skipEditMust && matched && !hideFlag) {
|
|
1304
|
+
required = true;
|
|
1305
|
+
mustFlag = true;
|
|
1306
|
+
isHidden = false;
|
|
1307
|
+
} else if (!mustFlag) {
|
|
1308
|
+
required = baseline.required;
|
|
1309
|
+
}
|
|
1310
|
+
} else if (editType == 'edit') {
|
|
1311
|
+
if (!skipEditMust && matched && defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1312
|
+
readOnly = false;
|
|
1313
|
+
editFlag = true;
|
|
1314
|
+
} else if (!skipEditMust && !editFlag && defaultshowFields.indexOf(targetUniqueName) != -1 && nowValue != '') {
|
|
1315
|
+
readOnly = true;
|
|
1316
|
+
} else if (!editFlag && defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1317
|
+
readOnly = baseline.readOnly;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
if (isHidden) {
|
|
1322
|
+
t.clearFieldDataValue(data, targetUniqueName, contextRowIndex);
|
|
1323
|
+
}
|
|
1324
|
+
var finalRequired = isHidden ? false : skipEditMust ? baseline.required : required;
|
|
1325
|
+
var finalReadOnly = skipEditMust ? baseline.readOnly : readOnly;
|
|
1326
|
+
t.syncRelaFieldMetaToData(data, targetUniqueName, { required: finalRequired }, contextRowIndex);
|
|
1327
|
+
var paramList = [];
|
|
1328
|
+
if (isHidden) {
|
|
1329
|
+
paramList.push({ key: "value", value: "" });
|
|
1330
|
+
paramList.push({ key: "required", value: false });
|
|
1331
|
+
} else if (required !== baseline.required || !isHidden) {
|
|
1332
|
+
paramList.push({ key: "isHidden", value: isHidden });
|
|
1333
|
+
}
|
|
1334
|
+
paramList.push({ key: "isHidden", value: isHidden });
|
|
1335
|
+
paramList.push({ key: "required", value: finalRequired });
|
|
1336
|
+
paramList.push({ key: "readOnly", value: finalReadOnly });
|
|
1337
|
+
t.reloadRelaItemParam(fieldRef, paramList);
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
// 按 relaFieldsMap 全局顺序刷新所有关联字段(主表 + 子表各行)
|
|
1148
1341
|
|
|
1149
1342
|
}, {
|
|
1150
1343
|
key: 'refreshAllRelaFieldsByRelaMap',
|
|
1151
|
-
value: function refreshAllRelaFieldsByRelaMap(data, changedUniqueName) {
|
|
1344
|
+
value: function refreshAllRelaFieldsByRelaMap(data, changedUniqueName, changedSubTblNo) {
|
|
1152
1345
|
var t = this;
|
|
1153
1346
|
var relaFieldsMap = t.state.formRelaFieldMaps;
|
|
1154
1347
|
if (!relaFieldsMap) {
|
|
@@ -1189,80 +1382,21 @@ var PageHome = function (_React$Component) {
|
|
|
1189
1382
|
var targetUniqueName = _step3.value;
|
|
1190
1383
|
|
|
1191
1384
|
var rules = relaFieldsMap[targetUniqueName];
|
|
1192
|
-
if (!rules || !rules.length
|
|
1385
|
+
if (!rules || !rules.length) {
|
|
1193
1386
|
continue;
|
|
1194
1387
|
}
|
|
1195
|
-
|
|
1196
|
-
if (
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
var hideFlag = defaulthideFields.indexOf(targetUniqueName) != -1;
|
|
1202
|
-
var mustFlag = defaultmustFields.indexOf(targetUniqueName) != -1;
|
|
1203
|
-
var editFlag = false;
|
|
1204
|
-
var isHidden = hideFlag;
|
|
1205
|
-
var required = false;
|
|
1206
|
-
var readOnly = false;
|
|
1207
|
-
|
|
1208
|
-
// sortNo 升序排列后倒序执行,配置页越靠上的规则越晚执行、优先生效
|
|
1209
|
-
var sortedRules = rules.slice().sort(function (a, b) {
|
|
1210
|
-
return (parseInt(a.sortNo, 10) || 0) - (parseInt(b.sortNo, 10) || 0);
|
|
1211
|
-
});
|
|
1212
|
-
for (var ri = sortedRules.length - 1; ri >= 0; ri--) {
|
|
1213
|
-
var rule = sortedRules[ri];
|
|
1214
|
-
var nowValue = t.getRelaTriggerFieldValue(rule, data);
|
|
1215
|
-
if (nowValue === '' && rule.triggerTblName) {
|
|
1216
|
-
var triggerUnique = rule.triggerTblName + '_' + rule.triggerFieldName;
|
|
1217
|
-
if (t.refs[triggerUnique] && t.refs[triggerUnique].state && t.refs[triggerUnique].state.itemParam.isHidden) {
|
|
1218
|
-
continue;
|
|
1219
|
-
}
|
|
1220
|
-
}
|
|
1221
|
-
var matched = t.isRelaRuleMatched(rule, nowValue);
|
|
1222
|
-
var editType = rule.editType;
|
|
1223
|
-
if (editType == 'hide' || editType == 'rowhide') {
|
|
1224
|
-
if (matched) {
|
|
1225
|
-
isHidden = true;
|
|
1226
|
-
hideFlag = true;
|
|
1227
|
-
required = false;
|
|
1228
|
-
} else if (!hideFlag && defaulthideFields.indexOf(targetUniqueName) == -1) {
|
|
1229
|
-
isHidden = false;
|
|
1230
|
-
}
|
|
1231
|
-
} else if (editType == 'must') {
|
|
1232
|
-
if (!skipEditMust && matched && !hideFlag) {
|
|
1233
|
-
required = true;
|
|
1234
|
-
mustFlag = true;
|
|
1235
|
-
isHidden = false;
|
|
1236
|
-
} else if (!mustFlag) {
|
|
1237
|
-
required = false;
|
|
1238
|
-
}
|
|
1239
|
-
} else if (editType == 'edit') {
|
|
1240
|
-
if (!skipEditMust && matched && defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1241
|
-
readOnly = false;
|
|
1242
|
-
editFlag = true;
|
|
1243
|
-
} else if (!skipEditMust && !editFlag && defaultshowFields.indexOf(targetUniqueName) != -1 && nowValue != '') {
|
|
1244
|
-
readOnly = true;
|
|
1245
|
-
}
|
|
1388
|
+
var targetSubTblName = t.getSubTblNameByUniqueName(targetUniqueName, data);
|
|
1389
|
+
if (targetSubTblName) {
|
|
1390
|
+
// 子表触发只刷新当前行;主表触发刷新子表所有行
|
|
1391
|
+
var subRowIndexes = t.getSubRelaRefreshRowIndexes(targetSubTblName, data, typeof changedSubTblNo !== 'undefined' ? changedSubTblNo : undefined);
|
|
1392
|
+
for (var sri = 0; sri < subRowIndexes.length; sri++) {
|
|
1393
|
+
t.applyRelaRulesToTarget(targetUniqueName, rules, data, subRowIndexes[sri], changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields);
|
|
1246
1394
|
}
|
|
1395
|
+
} else {
|
|
1396
|
+
// 主表字段:子表触发时用触发行号读取子表触发值
|
|
1397
|
+
var mainContextRow = typeof changedSubTblNo !== 'undefined' ? changedSubTblNo : undefined;
|
|
1398
|
+
t.applyRelaRulesToTarget(targetUniqueName, rules, data, mainContextRow, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields);
|
|
1247
1399
|
}
|
|
1248
|
-
if (isHidden) {
|
|
1249
|
-
t.clearFieldDataValue(data, targetUniqueName);
|
|
1250
|
-
}
|
|
1251
|
-
var finalRequired = isHidden ? false : skipEditMust ? false : required;
|
|
1252
|
-
t.syncRelaFieldMetaToData(data, targetUniqueName, { required: finalRequired });
|
|
1253
|
-
var paramList = [];
|
|
1254
|
-
if (isHidden) {
|
|
1255
|
-
paramList.push({ key: "value", value: "" });
|
|
1256
|
-
paramList.push({ key: "required", value: false });
|
|
1257
|
-
} else if (required) {
|
|
1258
|
-
paramList.push({ key: "isHidden", value: false });
|
|
1259
|
-
}
|
|
1260
|
-
paramList.push({ key: "isHidden", value: isHidden });
|
|
1261
|
-
paramList.push({ key: "required", value: finalRequired });
|
|
1262
|
-
if (defaultshowFields.indexOf(targetUniqueName) != -1) {
|
|
1263
|
-
paramList.push({ key: "readOnly", value: readOnly });
|
|
1264
|
-
}
|
|
1265
|
-
t.reloadRelaItemParam(t.refs[targetUniqueName], paramList);
|
|
1266
1400
|
}
|
|
1267
1401
|
} catch (err) {
|
|
1268
1402
|
_didIteratorError3 = true;
|