fmui-base 2.2.86 → 2.2.88
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/db/db.js +31 -0
- package/lib/db/variables.js +2 -0
- package/lib/form/form.js +145 -158
- package/lib/form/formExtHelper.js +152 -0
- package/lib/form/form_common/.placeholder.js +5 -0
- package/lib/form/subForm.js +11 -6
- package/lib/form/table.js +449 -88
- package/lib/selectMember/README.md +420 -0
- package/lib/selectMember/select.js +51 -3
- package/lib/tblform/FlowCommentPane.js +252 -0
- package/lib/tblform/README.md +483 -0
- package/lib/tblform/TblForm.js +427 -0
- package/lib/tblform/formCommon.js +128 -0
- package/lib/tblform/formFieldProps.js +44 -0
- package/lib/tblform/formSaveUtils.js +117 -0
- package/lib/tblform/index.js +109 -0
- package/lib/tblform/pureFormAdapter.js +159 -0
- package/package.json +1 -1
package/lib/form/subForm.js
CHANGED
|
@@ -23,6 +23,8 @@ var _form = require('./form');
|
|
|
23
23
|
|
|
24
24
|
var _form2 = _interopRequireDefault(_form);
|
|
25
25
|
|
|
26
|
+
var _formExtHelper = require('./formExtHelper');
|
|
27
|
+
|
|
26
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
29
|
|
|
28
30
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
@@ -34,6 +36,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
|
34
36
|
var HBox = _Boxs2.default.HBox,
|
|
35
37
|
Box = _Boxs2.default.Box;
|
|
36
38
|
|
|
39
|
+
|
|
37
40
|
var FlowCommon = void 0;
|
|
38
41
|
|
|
39
42
|
var PageHome = function (_React$Component) {
|
|
@@ -49,14 +52,16 @@ var PageHome = function (_React$Component) {
|
|
|
49
52
|
var status = props.status;
|
|
50
53
|
var context = document.getElementById("context").value;
|
|
51
54
|
|
|
52
|
-
var
|
|
53
|
-
|
|
55
|
+
var extLoaded = (0, _formExtHelper.loadFlowOrFormCommon)(props);
|
|
56
|
+
var module = extLoaded.module;
|
|
57
|
+
FlowCommon = extLoaded.FlowCommon;
|
|
54
58
|
//需要隐藏表头的子表表名
|
|
55
59
|
var isHideSubTblHeadTblList = ['dj_org_mb_duty_now'];
|
|
56
60
|
|
|
57
61
|
// var itemParam =
|
|
58
62
|
_this.state = {
|
|
59
63
|
module: module,
|
|
64
|
+
formCode: extLoaded.formCode,
|
|
60
65
|
status: status,
|
|
61
66
|
fieldControll: props.fieldControll,
|
|
62
67
|
urlPrev: context + '/dingisv/api/common/viewImage?fid=',
|
|
@@ -189,7 +194,7 @@ var PageHome = function (_React$Component) {
|
|
|
189
194
|
itemParam.value = value;
|
|
190
195
|
itemParam.detailAction = form.detailAction; //添加事件名字
|
|
191
196
|
//处理特有按钮事件
|
|
192
|
-
if (typeof FlowCommon.dealwithCommonFormParam === "function") {
|
|
197
|
+
if (FlowCommon && typeof FlowCommon.dealwithCommonFormParam === "function") {
|
|
193
198
|
itemParam = FlowCommon.dealwithCommonFormParam(itemParam, this);
|
|
194
199
|
}
|
|
195
200
|
|
|
@@ -197,12 +202,12 @@ var PageHome = function (_React$Component) {
|
|
|
197
202
|
var mobileExt;
|
|
198
203
|
try {
|
|
199
204
|
if (formKey) {
|
|
200
|
-
mobileExt =
|
|
205
|
+
mobileExt = (0, _formExtHelper.resolveMobileFormExt)(this.props.formCode, module, formKey);
|
|
201
206
|
}
|
|
202
207
|
} catch (e) {
|
|
203
208
|
// alert("exception: "+e.message);
|
|
204
209
|
}
|
|
205
|
-
if (
|
|
210
|
+
if (mobileExt && typeof mobileExt["dealwithFormParamExt"] === "function") {
|
|
206
211
|
itemParam = mobileExt["dealwithFormParamExt"](itemParam, this);
|
|
207
212
|
itemType = itemParam.itemType;
|
|
208
213
|
}
|
|
@@ -777,7 +782,7 @@ var PageHome = function (_React$Component) {
|
|
|
777
782
|
}, {
|
|
778
783
|
key: 'extOperate',
|
|
779
784
|
value: function extOperate(i, itemParam, buttonFun, extParam) {
|
|
780
|
-
if (typeof FlowCommon.subFormItemExtOperate === "function") {
|
|
785
|
+
if (FlowCommon && typeof FlowCommon.subFormItemExtOperate === "function") {
|
|
781
786
|
FlowCommon.subFormItemExtOperate(this.state, i, itemParam, buttonFun, extParam, this);
|
|
782
787
|
}
|
|
783
788
|
}
|
package/lib/form/table.js
CHANGED
|
@@ -61,6 +61,8 @@ var _db = require('../db/db');
|
|
|
61
61
|
|
|
62
62
|
var _db2 = _interopRequireDefault(_db);
|
|
63
63
|
|
|
64
|
+
var _formExtHelper = require('./formExtHelper');
|
|
65
|
+
|
|
64
66
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
65
67
|
|
|
66
68
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
@@ -84,6 +86,85 @@ var savePhraseList = [{
|
|
|
84
86
|
}];
|
|
85
87
|
var formRelaFieldMaps = void 0;
|
|
86
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
|
+
|
|
87
168
|
var PageHome = function (_React$Component) {
|
|
88
169
|
_inherits(PageHome, _React$Component);
|
|
89
170
|
|
|
@@ -116,53 +197,14 @@ var PageHome = function (_React$Component) {
|
|
|
116
197
|
async: false,
|
|
117
198
|
success: function success(data) {
|
|
118
199
|
if (data.code == "0") {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
var k = _step.value;
|
|
128
|
-
|
|
129
|
-
formRelaFieldMaps[k].map(function (item) {
|
|
130
|
-
var relaFieldTblName = item.relaFieldTblName;
|
|
131
|
-
var relaFieldName = item.relaFieldName;
|
|
132
|
-
var relaFieldTblNameArray = relaFieldTblName.split(",");
|
|
133
|
-
var relaFieldNameArray = relaFieldName.split(",");
|
|
134
|
-
relaFieldTblNameArray.map(function (relaFieldTblNameArrayItem, index) {
|
|
135
|
-
var relaFieldTblNameNew = {
|
|
136
|
-
"relaFieldTblName": relaFieldTblNameArrayItem,
|
|
137
|
-
"triggerFieldName": item.triggerFieldName,
|
|
138
|
-
"triggerFieldVal": item.triggerFieldVal,
|
|
139
|
-
"triggerTblName": item.triggerTblName,
|
|
140
|
-
"editType": item.editType,
|
|
141
|
-
"relaFieldName": relaFieldNameArray[index],
|
|
142
|
-
"relaTblName": item.relaTblName
|
|
143
|
-
};
|
|
144
|
-
if (formRelaFieldMapsNew[relaFieldTblNameArrayItem]) {
|
|
145
|
-
formRelaFieldMapsNew[relaFieldTblNameArrayItem].push(relaFieldTblNameNew);
|
|
146
|
-
} else {
|
|
147
|
-
formRelaFieldMapsNew[relaFieldTblNameArrayItem] = [relaFieldTblNameNew];
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
} catch (err) {
|
|
153
|
-
_didIteratorError = true;
|
|
154
|
-
_iteratorError = err;
|
|
155
|
-
} finally {
|
|
156
|
-
try {
|
|
157
|
-
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
158
|
-
_iterator.return();
|
|
159
|
-
}
|
|
160
|
-
} finally {
|
|
161
|
-
if (_didIteratorError) {
|
|
162
|
-
throw _iteratorError;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
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);
|
|
166
208
|
}
|
|
167
209
|
}
|
|
168
210
|
},
|
|
@@ -247,10 +289,16 @@ var PageHome = function (_React$Component) {
|
|
|
247
289
|
chooseSignature: []
|
|
248
290
|
};
|
|
249
291
|
|
|
250
|
-
var module = props.module
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
292
|
+
var module = props.module;
|
|
293
|
+
if (module === undefined || module === null || module === 'undefined') {
|
|
294
|
+
module = 'approve';
|
|
295
|
+
}
|
|
296
|
+
// module 为空时不加载 flow_common(纯表单 TblForm 使用 form_common)
|
|
297
|
+
if (module) {
|
|
298
|
+
try {
|
|
299
|
+
FlowCommon = require('pages/flow_common/' + module).default ? require('pages/flow_common/' + module).default : require('pages/flow_common/' + module);
|
|
300
|
+
} catch (error) {}
|
|
301
|
+
}
|
|
254
302
|
|
|
255
303
|
// DB.form.getRelaFieldsMap({
|
|
256
304
|
// formId: formId,
|
|
@@ -331,8 +379,11 @@ var PageHome = function (_React$Component) {
|
|
|
331
379
|
}, {
|
|
332
380
|
key: 'change',
|
|
333
381
|
value: function change(data, itemParam, subTblNo) {
|
|
334
|
-
console.log("formRelaFieldMaps==" + this.state.formRelaFieldMaps);
|
|
335
382
|
var t = this;
|
|
383
|
+
// 字段关联 reloadItemParam 会再次进入 change,此处拦截避免死循环
|
|
384
|
+
if (t._isRelaFieldRefreshing) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
336
387
|
var module = t.props.module;
|
|
337
388
|
var formKey = t.props.allForm ? t.props.allForm.formcode : "";
|
|
338
389
|
var formTblId = t.props.allForm ? t.props.allForm.formTblId : "";
|
|
@@ -353,23 +404,17 @@ var PageHome = function (_React$Component) {
|
|
|
353
404
|
}
|
|
354
405
|
// var subTblNo = data.subTblNo;
|
|
355
406
|
//处理特有参数
|
|
356
|
-
if (typeof FlowCommon.dealwithFormItemChange === "function") {
|
|
407
|
+
if (FlowCommon && typeof FlowCommon.dealwithFormItemChange === "function") {
|
|
357
408
|
try {
|
|
358
409
|
FlowCommon.dealwithFormItemChange(itemParam, this);
|
|
359
410
|
} catch (error) {
|
|
360
411
|
console.log("Error occurred while dealing with form item change:", error);
|
|
361
412
|
}
|
|
362
413
|
}
|
|
363
|
-
var
|
|
364
|
-
|
|
365
|
-
if (formKey) {
|
|
366
|
-
mobileExt = typeof eval(module + "_" + formKey + "_mobileExt") !== 'undefined' ? eval(module + "_" + formKey + "_mobileExt") : null;
|
|
367
|
-
}
|
|
368
|
-
} catch (e) {}
|
|
369
|
-
// alert("exception: "+e.message);
|
|
370
|
-
|
|
414
|
+
var formCode = t.props.formCode || t.state && t.state.formCode || '';
|
|
415
|
+
var mobileExt = (0, _formExtHelper.resolveMobileFormExt)(formCode, module, formKey);
|
|
371
416
|
//项目开发扩展
|
|
372
|
-
if (
|
|
417
|
+
if (mobileExt && typeof mobileExt["dealwithFormItemChangeExt"] === "function") {
|
|
373
418
|
mobileExt["dealwithFormItemChangeExt"](itemParam, this, function (paramsExt) {
|
|
374
419
|
if (paramsExt.length > 0) {
|
|
375
420
|
paramsExt.map(function (itemExt) {
|
|
@@ -772,11 +817,31 @@ var PageHome = function (_React$Component) {
|
|
|
772
817
|
}
|
|
773
818
|
}
|
|
774
819
|
|
|
775
|
-
|
|
776
|
-
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) {
|
|
777
837
|
var formRelaFieldMapsObj = formRelaFieldMaps[itemParam.uniqueName];
|
|
778
838
|
if (formRelaFieldMapsObj && formRelaFieldMapsObj.length > 0) {
|
|
779
|
-
t.
|
|
839
|
+
t._isRelaFieldRefreshing = true;
|
|
840
|
+
try {
|
|
841
|
+
t.dealwithRelaField(formRelaFieldMapsObj, data, itemParam);
|
|
842
|
+
} finally {
|
|
843
|
+
t._isRelaFieldRefreshing = false;
|
|
844
|
+
}
|
|
780
845
|
}
|
|
781
846
|
}
|
|
782
847
|
}
|
|
@@ -843,31 +908,327 @@ var PageHome = function (_React$Component) {
|
|
|
843
908
|
value: function reloadFormRelaField() {
|
|
844
909
|
var t = this;
|
|
845
910
|
var data = t.props.data;
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
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;
|
|
851
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) {
|
|
852
955
|
try {
|
|
853
|
-
|
|
854
|
-
|
|
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)
|
|
855
1008
|
|
|
856
|
-
|
|
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;
|
|
857
1021
|
}
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
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
|
+
}
|
|
865
1033
|
}
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
|
|
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
|
+
}
|
|
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
|
+
}
|
|
869
1199
|
}
|
|
870
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;
|
|
1231
|
+
}
|
|
871
1232
|
}
|
|
872
1233
|
}
|
|
873
1234
|
}
|
|
@@ -1119,7 +1480,7 @@ var PageHome = function (_React$Component) {
|
|
|
1119
1480
|
isSubField = true;
|
|
1120
1481
|
var subTblNameItem = "sub_" + subTblName;
|
|
1121
1482
|
var subItem = relaFieldTblNameArrayItem + '_' + thisSubTblNo;
|
|
1122
|
-
t.refs[subTblNameItem].refs[subItem]
|
|
1483
|
+
t.reloadRelaItemParam(t.refs[subTblNameItem].refs[subItem], [relaFieldMap]);
|
|
1123
1484
|
}
|
|
1124
1485
|
}
|
|
1125
1486
|
}
|
|
@@ -1132,7 +1493,7 @@ var PageHome = function (_React$Component) {
|
|
|
1132
1493
|
isSubField = true;
|
|
1133
1494
|
var subTblNameItem = "sub_" + subTblName;
|
|
1134
1495
|
var subItem = relaFieldTblNameArrayItem + '_' + b;
|
|
1135
|
-
t.refs[subTblNameItem].refs[subItem]
|
|
1496
|
+
t.reloadRelaItemParam(t.refs[subTblNameItem].refs[subItem], [relaFieldMap]);
|
|
1136
1497
|
}
|
|
1137
1498
|
}
|
|
1138
1499
|
}
|
|
@@ -1144,10 +1505,10 @@ var PageHome = function (_React$Component) {
|
|
|
1144
1505
|
}
|
|
1145
1506
|
if (isSubField) {} else if (t.refs[relaFieldTblNameArrayItem]) {
|
|
1146
1507
|
if (relaFieldMap.key == "required" && relaFieldMap.value) {
|
|
1147
|
-
|
|
1148
|
-
|
|
1508
|
+
t.reloadRelaItemParam(t.refs[relaFieldTblNameArrayItem], [{ "key": "isHidden", "value": false }, relaFieldMap]);
|
|
1509
|
+
} else {
|
|
1510
|
+
t.reloadRelaItemParam(t.refs[relaFieldTblNameArrayItem], [relaFieldMap]);
|
|
1149
1511
|
}
|
|
1150
|
-
t.refs[relaFieldTblNameArrayItem].reloadItemParam([relaFieldMap]);
|
|
1151
1512
|
}
|
|
1152
1513
|
}
|
|
1153
1514
|
}
|