fmui-base 2.2.96 → 2.2.98

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 CHANGED
@@ -3,6 +3,8 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.2.98:批示意见态度增加回调方法
7
+ - 2.2.97:表单字段关联选人字段关联子表,没有触发关联时还原原来状态
6
8
  - 2.2.96:表单字段关联选人字段关联时可能会出现死循环问题修复
7
9
  - 2.2.95:表单字段关联只读字段必填不需要生效
8
10
  - 2.2.94:流程办理回调时的type不准确问题修复
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
- if (defaulthideFields.indexOf(itemParam.uniqueName) != -1) {
1883
- itemParam.isHidden = true;
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 || itemParam.readOnly === true || this.props.form && this.props.form.readOnly === true;
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.forEach(function (rule) {
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
- } else if (defaulthideFields.indexOf(itemParam.uniqueName) == -1) {
1896
- itemParam.isHidden = false;
1936
+ hideFlag = true;
1937
+ } else if (!hideFlag) {
1938
+ itemParam.isHidden = baseline.isHidden;
1897
1939
  }
1898
1940
  } else if (editType == 'must') {
1899
- if (!skipEditMust) {
1900
- if (matched) {
1901
- itemParam.required = true;
1902
- } else {
1903
- itemParam.required = false;
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
- if (matched) {
1909
- itemParam.readOnly = false;
1910
- } else if (nowValue != '') {
1911
- itemParam.readOnly = true;
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
- }.bind(this));
1958
+ }
1916
1959
 
1917
1960
  if (itemParam.isHidden) {
1918
1961
  itemParam.required = false;
@@ -3644,6 +3687,18 @@ var PageHome = function (_React$Component) {
3644
3687
  });
3645
3688
  this.props.newspyj.content = spyj + commonwords;
3646
3689
  }
3690
+
3691
+ // 意见态度点击:先执行默认拼接,再触发 FlowCommon 扩展回调
3692
+
3693
+ }, {
3694
+ key: 'attitudeItemClick',
3695
+ value: function attitudeItemClick(item) {
3696
+ var attitudeValue = item && item.value != null ? item.value : '';
3697
+ this.phraseItemClick(attitudeValue);
3698
+ if (FlowCommon && typeof FlowCommon.dealwithAttitudeClick === 'function') {
3699
+ FlowCommon.dealwithAttitudeClick(item, this);
3700
+ }
3701
+ }
3647
3702
  //切换修改常用语
3648
3703
 
3649
3704
  }, {
@@ -4380,7 +4435,7 @@ var PageHome = function (_React$Component) {
4380
4435
  this.state.attitudeList.length > 0 ? this.state.attitudeList.map(function (item, i) {
4381
4436
  return _react2.default.createElement(
4382
4437
  'div',
4383
- { className: 'phrase-item', onClick: this.phraseItemClick.bind(this, item.value) },
4438
+ { className: 'phrase-item', onClick: this.attitudeItemClick.bind(this, item) },
4384
4439
  item.value
4385
4440
  );
4386
4441
  }.bind(this)) : ''
@@ -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
- if (!isSubTrigger) {
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
- if (this.refs[triggerUnique] && this.refs[triggerUnique].state && this.refs[triggerUnique].state.itemParam.isHidden) {
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 > 0) {
1077
- var subRow = data.subTbl[j].subTblData[0];
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
- // 按 relaFieldsMap 全局顺序刷新所有关联字段(props 传入 form.jsx 的同一份数据)
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 || !t.refs[targetUniqueName]) {
1385
+ if (!rules || !rules.length) {
1193
1386
  continue;
1194
1387
  }
1195
- // 当前变更字段本身不是触发字段时,跳过自身刷新,避免 popuser 等组件重复 init
1196
- if (changedUniqueName && targetUniqueName === changedUniqueName) {
1197
- continue;
1198
- }
1199
- var fieldRef = t.refs[targetUniqueName];
1200
- var skipEditMust = t.isRelaFieldSkipEditMust(targetUniqueName, fieldControll, fieldRef);
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
- }
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);
1220
1394
  }
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
- }
1246
- }
1247
- }
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 });
1395
+ } else {
1396
+ // 主表字段:子表触发时用触发行号读取子表触发值
1397
+ var mainContextRow = typeof changedSubTblNo !== 'undefined' ? changedSubTblNo : undefined;
1398
+ t.applyRelaRulesToTarget(targetUniqueName, rules, data, mainContextRow, changedUniqueName, changedSubTblNo, fieldControll, defaulthideFields, defaultmustFields, defaultshowFields);
1264
1399
  }
1265
- t.reloadRelaItemParam(t.refs[targetUniqueName], paramList);
1266
1400
  }
1267
1401
  } catch (err) {
1268
1402
  _didIteratorError3 = true;
@@ -2317,6 +2451,28 @@ var PageHome = function (_React$Component) {
2317
2451
  this.props.newspyj.content = spyj + commonwords;
2318
2452
  }
2319
2453
 
2454
+ // 意见态度点击:先执行默认拼接,再触发 FlowCommon 扩展回调
2455
+
2456
+ }, {
2457
+ key: 'attitudeItemClick',
2458
+ value: function attitudeItemClick(item) {
2459
+ var t = this;
2460
+ var attitudeValue = item && item.value != null ? item.value : '';
2461
+ t.phraseItemClick(attitudeValue);
2462
+ var flowCommonRef = FlowCommon;
2463
+ if (!flowCommonRef) {
2464
+ var formCode = t.state.formCode || t.props.formCode || '';
2465
+ var module = t.state.module || t.props.module;
2466
+ if (formCode || module) {
2467
+ var loaded = (0, _formExtHelper.loadFlowOrFormCommon)({ formCode: formCode, module: module || '' });
2468
+ flowCommonRef = loaded.FlowCommon;
2469
+ }
2470
+ }
2471
+ if (flowCommonRef && typeof flowCommonRef.dealwithAttitudeClick === 'function') {
2472
+ flowCommonRef.dealwithAttitudeClick(item, t);
2473
+ }
2474
+ }
2475
+
2320
2476
  //切换修改常用语
2321
2477
 
2322
2478
  }, {
@@ -2595,7 +2751,7 @@ var PageHome = function (_React$Component) {
2595
2751
  this.state.attitudeList.length > 0 ? this.state.attitudeList.map(function (item, i) {
2596
2752
  return _react2.default.createElement(
2597
2753
  'div',
2598
- { className: 'phrase-item', onClick: this.phraseItemClick.bind(this, item.value) },
2754
+ { className: 'phrase-item', onClick: this.attitudeItemClick.bind(this, item) },
2599
2755
  item.value
2600
2756
  );
2601
2757
  }.bind(this)) : ''
@@ -223,7 +223,7 @@ var FlowCommentPane = function (_BaseTable) {
223
223
  {
224
224
  key: item.value,
225
225
  className: 'phrase-item',
226
- onClick: this.phraseItemClick.bind(this, item.value)
226
+ onClick: this.attitudeItemClick.bind(this, item)
227
227
  },
228
228
  item.value
229
229
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fmui-base",
3
- "version": "2.2.96",
3
+ "version": "2.2.98",
4
4
  "title": "fmui-base",
5
5
  "description": "fmui移动端组件",
6
6
  "main": "lib/index.js",