fmui-base 2.3.58 → 2.3.60
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 +48 -0
- package/lib/db/variables.js +4 -0
- package/lib/form/filterEmptySubTblRows.js +129 -7
- package/lib/form/form.js +51 -10
- package/lib/form_info/formInfo.js +7 -2
- package/lib/process_batch/processBatch.js +4 -1
- package/lib/process_info/RelationProcess.js +112 -14
- package/lib/process_info/RelationProcessPicker.js +509 -0
- package/lib/process_info/processInfo.js +501 -10
- package/lib/process_info/processInfo.less +32 -0
- package/lib/tblform/formSaveUtils.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/db/db.js
CHANGED
|
@@ -383,6 +383,29 @@ context.create('FlowModuleAPI', {
|
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
385
|
},
|
|
386
|
+
getRelationProcessList: {
|
|
387
|
+
url: _variables2.default.URLS.getRelationProcessList,
|
|
388
|
+
method: 'GET',
|
|
389
|
+
header: {
|
|
390
|
+
Authorization: 'Bearer ' + getLoginUserInfo().token
|
|
391
|
+
},
|
|
392
|
+
willFetch: function willFetch() {}
|
|
393
|
+
},
|
|
394
|
+
deleteRelation: {
|
|
395
|
+
url: _variables2.default.URLS.deleteRelation,
|
|
396
|
+
method: 'POST',
|
|
397
|
+
postDataFomat: 'FORM',
|
|
398
|
+
header: {
|
|
399
|
+
Authorization: 'Bearer ' + getLoginUserInfo().token
|
|
400
|
+
},
|
|
401
|
+
willFetch: function willFetch() {
|
|
402
|
+
_Toast2.default.show({
|
|
403
|
+
content: _react2.default.createElement(_loading2.default, null),
|
|
404
|
+
hasMask: true,
|
|
405
|
+
duration: 800
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
},
|
|
386
409
|
startFlowTest: {
|
|
387
410
|
url: _variables2.default.URLS.startFlowTest,
|
|
388
411
|
method: 'POST',
|
|
@@ -688,6 +711,31 @@ context.create('FlowModuleAPI', {
|
|
|
688
711
|
});
|
|
689
712
|
}
|
|
690
713
|
},
|
|
714
|
+
getSignUserList: {
|
|
715
|
+
mockUrl: 'query/getSignUserList.json',
|
|
716
|
+
header: {
|
|
717
|
+
Authorization: 'Bearer ' + getLoginUserInfo().token
|
|
718
|
+
},
|
|
719
|
+
url: _variables2.default.URLS.getSignUserList,
|
|
720
|
+
method: 'GET',
|
|
721
|
+
willFetch: function willFetch() {}
|
|
722
|
+
},
|
|
723
|
+
reduceSign: {
|
|
724
|
+
mockUrl: 'query/reduceSign.json',
|
|
725
|
+
header: {
|
|
726
|
+
Authorization: 'Bearer ' + getLoginUserInfo().token
|
|
727
|
+
},
|
|
728
|
+
url: _variables2.default.URLS.reduceSign,
|
|
729
|
+
method: 'POST',
|
|
730
|
+
postDataFomat: 'FORM',
|
|
731
|
+
willFetch: function willFetch() {
|
|
732
|
+
_Toast2.default.show({
|
|
733
|
+
content: _react2.default.createElement(_loading2.default, null),
|
|
734
|
+
hasMask: true,
|
|
735
|
+
duration: 800
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
},
|
|
691
739
|
getCanJumpActivity: {
|
|
692
740
|
mockUrl: 'query/getCanJumpActivity.json',
|
|
693
741
|
header: {
|
package/lib/db/variables.js
CHANGED
|
@@ -72,6 +72,8 @@ exports.default = {
|
|
|
72
72
|
getComponentInfoList: urlBasicPrefix + 'mobilehall/mobileoffice/getComponentInfoList' + '?', //获取关联表单字段
|
|
73
73
|
|
|
74
74
|
insertBatchRelation: approveUrlPrefix + 'insertBatchRelation' + '?', // 关联流程
|
|
75
|
+
getRelationProcessList: approveUrlPrefix + 'getRelationProcessList' + '?', // 可选关联流程列表
|
|
76
|
+
deleteRelation: approveUrlPrefix + 'deleteRelation' + '?', // 删除关联流程
|
|
75
77
|
startFlowTest: approveUrlPrefix + 'startFlowTest' + '?', // 检验间隔时间
|
|
76
78
|
startProcess: approveUrlPrefix + 'startProcess' + '?', // 启动流程的接口
|
|
77
79
|
claimTask: approveUrlPrefix + 'claimTask' + '?', //校验流程
|
|
@@ -90,6 +92,8 @@ exports.default = {
|
|
|
90
92
|
queryFlowChart: approveUrlPrefix + "queryFlowChart" + '?', //查找流程记录
|
|
91
93
|
getFlowImage: approveUrlPrefix + "getFlowImage" + '?token=' + getLoginUserInfo().token + "&processInstanceId=", //查找流程图片
|
|
92
94
|
addSign: approveUrlPrefix + "addSign" + '?', //加签
|
|
95
|
+
getSignUserList: approveUrlPrefix + "getSignUserList" + '?', //减签用户列表
|
|
96
|
+
reduceSign: approveUrlPrefix + "reduceSign" + '?', //减签
|
|
93
97
|
getCanJumpActivity: approveUrlPrefix + "getCanJumpActivity" + '?', //跳转流程
|
|
94
98
|
jump: approveUrlPrefix + "jump" + '?', //跳转
|
|
95
99
|
getDoneTaskListByProcessId: approveUrlPrefix + "getDoneTaskListByProcessId" + '?', //根据流程实例id查询已办
|
|
@@ -6,10 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
|
|
7
7
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
8
8
|
|
|
9
|
+
exports.isValidFormDataId = isValidFormDataId;
|
|
9
10
|
exports.cloneAndFilterEmptySubTblRows = cloneAndFilterEmptySubTblRows;
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
12
|
+
* 子表空行过滤 + 提交 formData 精简(对齐 PC runtimeUtil.getInputData):
|
|
13
|
+
* - UI 仍可留空行,仅从提交数据中去掉业务全空行
|
|
14
|
+
* - 去掉 formItem / linkFields 等仅前端渲染用的大字段
|
|
15
|
+
* - 字段项只保留 key / value(与 PC、后端 KeyValueDto 一致)
|
|
13
16
|
*/
|
|
14
17
|
|
|
15
18
|
var SUB_TBL_SYS_FIELDS = {
|
|
@@ -29,6 +32,27 @@ var SUB_TBL_SYS_FIELDS = {
|
|
|
29
32
|
sort_no: true
|
|
30
33
|
};
|
|
31
34
|
|
|
35
|
+
/** 提交时从 formData 顶层去掉的前端元数据(PC getInputData 不携带) */
|
|
36
|
+
var SUBMIT_STRIP_TOP_KEYS = {
|
|
37
|
+
formItem: true,
|
|
38
|
+
linkFields: true
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 是否为可用的主表 dataId(排除 null / "null" / "undefined" / 空串)
|
|
43
|
+
* 后端 optlock 校验:已传 optlock 但 dataId 无效会直接报「数据已被他人修改」
|
|
44
|
+
*/
|
|
45
|
+
function isValidFormDataId(dataId) {
|
|
46
|
+
if (dataId === null || typeof dataId === 'undefined') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
var s = String(dataId).replace(/^\s+|\s+$/g, '');
|
|
50
|
+
if (s === '' || s === 'null' || s === 'undefined' || s === '-1') {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
32
56
|
function isSubTblSysField(key) {
|
|
33
57
|
if (key == null || key === '') {
|
|
34
58
|
return true;
|
|
@@ -87,11 +111,14 @@ function isEmptySubTblBusinessRow(row) {
|
|
|
87
111
|
return true;
|
|
88
112
|
}
|
|
89
113
|
for (var i = 0; i < row.length; i++) {
|
|
90
|
-
var
|
|
91
|
-
if (!
|
|
114
|
+
var cell = row[i];
|
|
115
|
+
if (!cell) {
|
|
92
116
|
continue;
|
|
93
117
|
}
|
|
94
|
-
if (
|
|
118
|
+
if (isSubTblSysField(cell.key)) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (hasSubTblBusinessValue(cell.value)) {
|
|
95
122
|
return false;
|
|
96
123
|
}
|
|
97
124
|
}
|
|
@@ -111,8 +138,103 @@ function filterEmptySubTblDataList(subTblData) {
|
|
|
111
138
|
return kept;
|
|
112
139
|
}
|
|
113
140
|
|
|
141
|
+
/** 对齐 PC:字段项只保留 key / value */
|
|
142
|
+
function slimKeyValueItem(item) {
|
|
143
|
+
if (!item || (typeof item === 'undefined' ? 'undefined' : _typeof(item)) !== 'object') {
|
|
144
|
+
return item;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
key: item.key,
|
|
148
|
+
value: item.value
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function slimKeyValueList(list) {
|
|
153
|
+
if (!list || !list.length) {
|
|
154
|
+
return list || [];
|
|
155
|
+
}
|
|
156
|
+
var out = [];
|
|
157
|
+
for (var i = 0; i < list.length; i++) {
|
|
158
|
+
out.push(slimKeyValueItem(list[i]));
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function slimSubTblDataRows(subTblData) {
|
|
164
|
+
if (!subTblData || !subTblData.length) {
|
|
165
|
+
return subTblData || [];
|
|
166
|
+
}
|
|
167
|
+
var rows = [];
|
|
168
|
+
for (var i = 0; i < subTblData.length; i++) {
|
|
169
|
+
rows.push(slimKeyValueList(subTblData[i]));
|
|
170
|
+
}
|
|
171
|
+
return rows;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 去掉 formItem/linkFields,并将 main/sub/related 字段精简为 key/value
|
|
176
|
+
*/
|
|
177
|
+
function slimFormDataForSubmit(data) {
|
|
178
|
+
if (!data || (typeof data === 'undefined' ? 'undefined' : _typeof(data)) !== 'object') {
|
|
179
|
+
return data;
|
|
180
|
+
}
|
|
181
|
+
for (var stripKey in SUBMIT_STRIP_TOP_KEYS) {
|
|
182
|
+
if (Object.prototype.hasOwnProperty.call(SUBMIT_STRIP_TOP_KEYS, stripKey) && data.hasOwnProperty(stripKey)) {
|
|
183
|
+
delete data[stripKey];
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// 规范化 dataId:字符串 "null" 会导致后端 optlock 按主键更新失败
|
|
187
|
+
if (!isValidFormDataId(data.dataId)) {
|
|
188
|
+
data.dataId = '';
|
|
189
|
+
// 无真实主键时不带 optlock,后端才会跳过乐观锁校验(新建/发起场景)
|
|
190
|
+
if (data.hasOwnProperty('optlock')) {
|
|
191
|
+
delete data.optlock;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// 对齐 PC getInputData:moduleCode / paramJson 用空串,不传 null
|
|
195
|
+
if (data.moduleCode == null || data.moduleCode === 'null' || data.moduleCode === 'undefined') {
|
|
196
|
+
data.moduleCode = '';
|
|
197
|
+
}
|
|
198
|
+
if (data.paramJson == null || data.paramJson === 'null' || data.paramJson === 'undefined') {
|
|
199
|
+
data.paramJson = '';
|
|
200
|
+
}
|
|
201
|
+
// PC 已注释写入 formVersion;无有效值时不携带,避免 formVersion:null
|
|
202
|
+
if (data.formVersion == null || data.formVersion === '' || data.formVersion === 'null' || data.formVersion === 'undefined') {
|
|
203
|
+
delete data.formVersion;
|
|
204
|
+
}
|
|
205
|
+
if (data.mainTblData) {
|
|
206
|
+
data.mainTblData = slimKeyValueList(data.mainTblData);
|
|
207
|
+
}
|
|
208
|
+
var subTbl = data.subTbl || [];
|
|
209
|
+
for (var i = 0; i < subTbl.length; i++) {
|
|
210
|
+
if (subTbl[i] && subTbl[i].subTblData) {
|
|
211
|
+
subTbl[i].subTblData = slimSubTblDataRows(subTbl[i].subTblData);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
var relatedTbl = data.relatedTbl || [];
|
|
215
|
+
for (var r = 0; r < relatedTbl.length; r++) {
|
|
216
|
+
var related = relatedTbl[r];
|
|
217
|
+
if (!related) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (related.relatedMainTblData) {
|
|
221
|
+
related.relatedMainTblData = slimKeyValueList(related.relatedMainTblData);
|
|
222
|
+
}
|
|
223
|
+
var relatedSub = related.relatedSubTblData;
|
|
224
|
+
if (!relatedSub) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
for (var s = 0; s < relatedSub.length; s++) {
|
|
228
|
+
if (relatedSub[s] && relatedSub[s].subTblData) {
|
|
229
|
+
relatedSub[s].subTblData = slimSubTblDataRows(relatedSub[s].subTblData);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return data;
|
|
234
|
+
}
|
|
235
|
+
|
|
114
236
|
/**
|
|
115
|
-
*
|
|
237
|
+
* 深拷贝后过滤空子表行,并精简为与 PC getInputData 一致的提交结构(不改动页面 state / UI)
|
|
116
238
|
*/
|
|
117
239
|
function cloneAndFilterEmptySubTblRows(editFormData) {
|
|
118
240
|
if (!editFormData) {
|
|
@@ -142,7 +264,7 @@ function cloneAndFilterEmptySubTblRows(editFormData) {
|
|
|
142
264
|
}
|
|
143
265
|
}
|
|
144
266
|
}
|
|
145
|
-
return data;
|
|
267
|
+
return slimFormDataForSubmit(data);
|
|
146
268
|
}
|
|
147
269
|
|
|
148
270
|
exports.default = cloneAndFilterEmptySubTblRows;
|
package/lib/form/form.js
CHANGED
|
@@ -423,9 +423,39 @@ var PageHome = function (_React$Component) {
|
|
|
423
423
|
//处理数据
|
|
424
424
|
var tableData = {};
|
|
425
425
|
if (status == '0') {
|
|
426
|
-
//新增
|
|
427
|
-
|
|
428
|
-
|
|
426
|
+
//新增 / 再次发起(readd 也走 status=0 以便自动编号取 defaultValue)
|
|
427
|
+
// 再次发起等场景:formData 已带回原值。若一律用 defaultValue,普通字段会空,且后面 sync 会冲掉 mainTblData。
|
|
428
|
+
// 但自动编号/赋值宏必须继续用重新生成的 defaultValue,不能继承原单编号。
|
|
429
|
+
var loadedValue = this.dealwithData(itemParam, mainTblData, relatedTbl);
|
|
430
|
+
var hasLoadedField = false;
|
|
431
|
+
if (formTblId.indexOf(fieldTblId) > 0) {
|
|
432
|
+
relatedTbl.map(function (item) {
|
|
433
|
+
if (item.relatedMainTblName == fieldTblName) {
|
|
434
|
+
item.relatedMainTblData.map(function (item2) {
|
|
435
|
+
if (item2.key == key) {
|
|
436
|
+
hasLoadedField = true;
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
} else {
|
|
442
|
+
mainTblData.map(function (item) {
|
|
443
|
+
if (item.key == key) {
|
|
444
|
+
hasLoadedField = true;
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
var isBizCodeMacroEarly = form.dataAttr && form.dataAttr.dataSrc == '2' && form.dataAttr.fromMacro && form.dataAttr.fromMacro.value == 'bizCode';
|
|
449
|
+
var inFuzhiFields = !!(fuzhiFields && fuzhiFields.split(",").indexOf(uniqueName) != -1);
|
|
450
|
+
// 赋值字段 或 自动编号宏:有新 defaultValue 时强制重生(对齐上次「再次发起自动编号重新生成」)
|
|
451
|
+
var shouldRegenDefault = form.defaultValue != null && form.defaultValue !== '' && (inFuzhiFields || isBizCodeMacroEarly);
|
|
452
|
+
if (shouldRegenDefault) {
|
|
453
|
+
value = form.defaultValue;
|
|
454
|
+
} else if (hasLoadedField) {
|
|
455
|
+
value = loadedValue || loadedValue === 0 ? loadedValue : form.defaultValue != null ? form.defaultValue : '';
|
|
456
|
+
} else {
|
|
457
|
+
value = form.defaultValue;
|
|
458
|
+
}
|
|
429
459
|
|
|
430
460
|
if (formTblId.indexOf(fieldTblId) > 0) {
|
|
431
461
|
var hasTable = false;
|
|
@@ -445,7 +475,7 @@ var PageHome = function (_React$Component) {
|
|
|
445
475
|
//字段不存在
|
|
446
476
|
|
|
447
477
|
tableData.key = key;
|
|
448
|
-
tableData.value =
|
|
478
|
+
tableData.value = value;
|
|
449
479
|
tableData.required = required;
|
|
450
480
|
tableData.label = title;
|
|
451
481
|
tableData.inputFormat = form.inputFormat;
|
|
@@ -484,7 +514,7 @@ var PageHome = function (_React$Component) {
|
|
|
484
514
|
});
|
|
485
515
|
if (!hasField) {
|
|
486
516
|
tableData.key = key;
|
|
487
|
-
tableData.value =
|
|
517
|
+
tableData.value = value;
|
|
488
518
|
tableData.required = required;
|
|
489
519
|
tableData.label = title;
|
|
490
520
|
tableData.inputFormat = form.inputFormat;
|
|
@@ -703,13 +733,19 @@ var PageHome = function (_React$Component) {
|
|
|
703
733
|
// value = form.defaultValue;
|
|
704
734
|
// }
|
|
705
735
|
// 宏值新需求,赋值字段取defaultValue;自动编号额外兜底 form.value,避免 formData 偶发缺字段导致空白/丢数
|
|
736
|
+
// 再次发起(status=0):即使 formData 已有旧编号,赋值/自动编号仍强制用重新生成的 defaultValue
|
|
706
737
|
if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && fuzhiFields != '') {
|
|
707
738
|
var isBizCodeMacro = itemParam.dataAttr.fromMacro && itemParam.dataAttr.fromMacro.value == 'bizCode';
|
|
708
739
|
if (fuzhiFields.split(",").indexOf(itemParam.uniqueName) != -1 && form.defaultValue && form.defaultValue != null) {
|
|
709
740
|
value = form.defaultValue;
|
|
741
|
+
} else if (status == '0' && isBizCodeMacro && form.defaultValue && form.defaultValue != null) {
|
|
742
|
+
value = form.defaultValue;
|
|
710
743
|
} else if (isBizCodeMacro && (value === '' || value == null || typeof value == 'undefined') && form.value) {
|
|
711
744
|
value = form.value;
|
|
712
745
|
}
|
|
746
|
+
} else if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && itemParam.dataAttr.fromMacro && itemParam.dataAttr.fromMacro.value == 'bizCode' && status == '0' && form.defaultValue && form.defaultValue != null) {
|
|
747
|
+
// 再次发起:无 fuzhiFields 列表时,只要后端 readd 重生了 defaultValue 也要用新编号
|
|
748
|
+
value = form.defaultValue;
|
|
713
749
|
} else if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && itemParam.dataAttr.fromMacro && itemParam.dataAttr.fromMacro.value == 'bizCode' && (value === '' || value == null || typeof value == 'undefined') && form.value) {
|
|
714
750
|
value = form.value;
|
|
715
751
|
} else if (itemParam.dataAttr && itemParam.dataAttr.dataSrc == '2' && itemParam.dataAttr.fromMacro && itemParam.dataAttr.fromMacro.value == 'bizCode' && (value === '' || value == null || typeof value == 'undefined') && form.defaultValue) {
|
|
@@ -888,15 +924,17 @@ var PageHome = function (_React$Component) {
|
|
|
888
924
|
// }else{
|
|
889
925
|
// valueArray.push(value);
|
|
890
926
|
// }
|
|
891
|
-
if (status == '0') {
|
|
927
|
+
if (status == '0' && !value && value !== 0) {
|
|
892
928
|
selectItem.map(function (selectI) {
|
|
893
929
|
if (selectI.isDefault == 1) {
|
|
894
930
|
valueArray.push(selectI.value);
|
|
895
931
|
}
|
|
896
932
|
});
|
|
897
933
|
} else {
|
|
898
|
-
if (value.indexOf("[") >= 0) {
|
|
934
|
+
if (value && (value + '').indexOf("[") >= 0) {
|
|
899
935
|
valueArray = JSON.parse(value);
|
|
936
|
+
} else if (value || value === 0) {
|
|
937
|
+
valueArray = (value + '').split(",");
|
|
900
938
|
}
|
|
901
939
|
}
|
|
902
940
|
selectItem.map(function (selectI) {
|
|
@@ -1425,9 +1463,12 @@ var PageHome = function (_React$Component) {
|
|
|
1425
1463
|
value = false;
|
|
1426
1464
|
}
|
|
1427
1465
|
} else {
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1466
|
+
// 再次发起:已有落库值优先;全新新增才用设计默认
|
|
1467
|
+
var switchSrc = value || value === 0 || value === false ? value : form.defaultValue;
|
|
1468
|
+
if (switchSrc === true || switchSrc === false) {
|
|
1469
|
+
value = switchSrc;
|
|
1470
|
+
} else if (switchSrc) {
|
|
1471
|
+
if (switchSrc == '1') {
|
|
1431
1472
|
value = true;
|
|
1432
1473
|
} else {
|
|
1433
1474
|
value = false;
|
|
@@ -1432,7 +1432,6 @@ var PageHome = function (_React$Component) {
|
|
|
1432
1432
|
} else if (operate == 1) {
|
|
1433
1433
|
//提交
|
|
1434
1434
|
var sendData = (0, _filterEmptySubTblRows.cloneAndFilterEmptySubTblRows)(t.state.editFormData) || {};
|
|
1435
|
-
sendData.formItem = [];
|
|
1436
1435
|
var param = {
|
|
1437
1436
|
taskId: this.state.taskId,
|
|
1438
1437
|
auditorUserIds: auditorUserIds,
|
|
@@ -1444,8 +1443,14 @@ var PageHome = function (_React$Component) {
|
|
|
1444
1443
|
module: this.state.module,
|
|
1445
1444
|
lock: this.state.lock,
|
|
1446
1445
|
reminderContent: this.state.reminderContent,
|
|
1447
|
-
processInstanceId: this.state.processInstanceId
|
|
1446
|
+
processInstanceId: this.state.processInstanceId,
|
|
1447
|
+
// 网关条件「上一环节办理人批示内容」依赖当前批示意见,getNextActivity 必须透传
|
|
1448
|
+
comment: typeof newComment === 'undefined' || newComment == null ? '' : newComment,
|
|
1449
|
+
commentType: 'text'
|
|
1448
1450
|
};
|
|
1451
|
+
if (this.state.commentId) {
|
|
1452
|
+
param.commentId = this.state.commentId;
|
|
1453
|
+
}
|
|
1449
1454
|
var dealActionName = "";
|
|
1450
1455
|
if (this.state.isStart == true) {
|
|
1451
1456
|
dealActionName = "提交";
|
|
@@ -323,7 +323,10 @@ var PageHome = function (_React$Component) {
|
|
|
323
323
|
var hasRadomList = false; //判断下次办理是否有随机活动节点
|
|
324
324
|
_db2.default.FlowModuleAPI.getNextActivity({
|
|
325
325
|
taskId: taskId,
|
|
326
|
-
code: code
|
|
326
|
+
code: code,
|
|
327
|
+
// 网关条件「上一环节办理人批示内容」依赖当前批示意见,getNextActivity 必须透传
|
|
328
|
+
comment: t.state.spyj == null || typeof t.state.spyj === 'undefined' ? '' : t.state.spyj,
|
|
329
|
+
commentType: 'text'
|
|
327
330
|
}).then(function (content) {
|
|
328
331
|
var nextList = content.activityList; //下一个后继节点列表
|
|
329
332
|
var radomList = content.radomList; //下一个随机活动节点
|
|
@@ -15,6 +15,14 @@ var _Boxs = require('saltui/lib/Boxs');
|
|
|
15
15
|
|
|
16
16
|
var _Boxs2 = _interopRequireDefault(_Boxs);
|
|
17
17
|
|
|
18
|
+
var _Dialog = require('saltui/lib/Dialog');
|
|
19
|
+
|
|
20
|
+
var _Dialog2 = _interopRequireDefault(_Dialog);
|
|
21
|
+
|
|
22
|
+
var _Toast = require('saltui/lib/Toast');
|
|
23
|
+
|
|
24
|
+
var _Toast2 = _interopRequireDefault(_Toast);
|
|
25
|
+
|
|
18
26
|
var _AngleRight = require('salt-icon/lib/AngleRight');
|
|
19
27
|
|
|
20
28
|
var _AngleRight2 = _interopRequireDefault(_AngleRight);
|
|
@@ -50,34 +58,119 @@ var Page = function (_React$Component) {
|
|
|
50
58
|
_this.state = {
|
|
51
59
|
relationList: []
|
|
52
60
|
};
|
|
53
|
-
|
|
54
61
|
return _this;
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
_createClass(Page, [{
|
|
58
65
|
key: 'componentDidMount',
|
|
59
66
|
value: function componentDidMount() {
|
|
67
|
+
this.reload();
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: 'componentDidUpdate',
|
|
71
|
+
value: function componentDidUpdate(prevProps) {
|
|
72
|
+
if (prevProps.processInstanceId !== this.props.processInstanceId && this.props.processInstanceId) {
|
|
73
|
+
this.reload();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
key: 'reload',
|
|
78
|
+
value: function reload() {
|
|
60
79
|
var t = this;
|
|
61
|
-
t.setState({
|
|
62
|
-
relationList: []
|
|
63
|
-
});
|
|
64
80
|
var processInstanceId = this.props.processInstanceId;
|
|
81
|
+
if (!processInstanceId || processInstanceId === '-99' || processInstanceId === 'undefined') {
|
|
82
|
+
t.setState({ relationList: [] });
|
|
83
|
+
if (typeof t.props.onCountChange === 'function') {
|
|
84
|
+
t.props.onCountChange(0);
|
|
85
|
+
}
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
65
88
|
_db2.default.FlowModuleAPI.getRelationProcess({ processInstanceId: processInstanceId }).then(function (content) {
|
|
89
|
+
var list = [];
|
|
90
|
+
if (Array.isArray(content)) {
|
|
91
|
+
list = content;
|
|
92
|
+
} else if (content && Array.isArray(content.data)) {
|
|
93
|
+
list = content.data;
|
|
94
|
+
} else if (content && Array.isArray(content.content)) {
|
|
95
|
+
list = content.content;
|
|
96
|
+
} else if (content && content.list && Array.isArray(content.list)) {
|
|
97
|
+
list = content.list;
|
|
98
|
+
}
|
|
66
99
|
t.setState({
|
|
67
|
-
relationList:
|
|
100
|
+
relationList: list
|
|
101
|
+
}, function () {
|
|
102
|
+
if (typeof t.props.onCountChange === 'function') {
|
|
103
|
+
t.props.onCountChange(list.length);
|
|
104
|
+
}
|
|
68
105
|
});
|
|
69
|
-
}).catch(function (
|
|
106
|
+
}).catch(function () {
|
|
107
|
+
t.setState({ relationList: [] });
|
|
108
|
+
if (typeof t.props.onCountChange === 'function') {
|
|
109
|
+
t.props.onCountChange(0);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
70
112
|
}
|
|
71
113
|
}, {
|
|
72
114
|
key: 'clickDetail',
|
|
73
115
|
value: function clickDetail(item) {
|
|
74
116
|
var processInstanceId = item.processInstanceId;
|
|
75
|
-
var formId = item.formId;
|
|
76
|
-
var module = item.module;
|
|
77
|
-
var url =
|
|
117
|
+
var formId = item.formId || '-99';
|
|
118
|
+
var module = item.module || 'approve';
|
|
119
|
+
var url = 'process/processDetails/-99/' + formId + '/-99/-99/0/' + processInstanceId + '/' + module;
|
|
78
120
|
decodeURI(url);
|
|
79
121
|
location.hash = url;
|
|
80
|
-
|
|
122
|
+
}
|
|
123
|
+
}, {
|
|
124
|
+
key: 'canDelete',
|
|
125
|
+
value: function canDelete(item) {
|
|
126
|
+
var canManage = this.props.canManage === true || this.props.canManage === '1';
|
|
127
|
+
if (!canManage) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
if (String(item.canDel) !== '1') {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
var currentActivityId = this.props.activityId;
|
|
134
|
+
if (currentActivityId == null || currentActivityId === '') {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return String(item.activityId) === String(currentActivityId);
|
|
138
|
+
}
|
|
139
|
+
}, {
|
|
140
|
+
key: 'deleteRelation',
|
|
141
|
+
value: function deleteRelation(item, e) {
|
|
142
|
+
if (e && e.stopPropagation) {
|
|
143
|
+
e.stopPropagation();
|
|
144
|
+
}
|
|
145
|
+
var t = this;
|
|
146
|
+
var processInstanceId = t.props.processInstanceId;
|
|
147
|
+
var relationId = item.processInstanceId;
|
|
148
|
+
_Dialog2.default.confirm({
|
|
149
|
+
locale: 'zh_CN',
|
|
150
|
+
title: '提示',
|
|
151
|
+
content: '确定删除该关联流程吗?',
|
|
152
|
+
onConfirm: function onConfirm() {
|
|
153
|
+
_db2.default.FlowModuleAPI.deleteRelation({
|
|
154
|
+
processInstanceId: processInstanceId,
|
|
155
|
+
relationId: relationId
|
|
156
|
+
}).then(function () {
|
|
157
|
+
_Toast2.default.show({
|
|
158
|
+
type: 'success',
|
|
159
|
+
content: '删除成功'
|
|
160
|
+
});
|
|
161
|
+
t.reload();
|
|
162
|
+
if (typeof t.props.onDeleted === 'function') {
|
|
163
|
+
t.props.onDeleted();
|
|
164
|
+
}
|
|
165
|
+
}).catch(function () {
|
|
166
|
+
_Toast2.default.show({
|
|
167
|
+
type: 'error',
|
|
168
|
+
content: '删除失败'
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
onCancel: function onCancel() {}
|
|
173
|
+
});
|
|
81
174
|
}
|
|
82
175
|
}, {
|
|
83
176
|
key: 'render',
|
|
@@ -89,10 +182,10 @@ var Page = function (_React$Component) {
|
|
|
89
182
|
t.state.relationList.map(function (item, i) {
|
|
90
183
|
return _react2.default.createElement(
|
|
91
184
|
HBox,
|
|
92
|
-
{ className: 't-BCf t-P16 t-PR12 dd-bottom-border',
|
|
185
|
+
{ key: (item.processInstanceId || '') + '_' + i, className: 't-BCf t-P16 t-PR12 dd-bottom-border', vAlign: 'center' },
|
|
93
186
|
_react2.default.createElement(
|
|
94
187
|
Box,
|
|
95
|
-
{ flex: 1 },
|
|
188
|
+
{ flex: 1, onClick: t.clickDetail.bind(t, item) },
|
|
96
189
|
_react2.default.createElement(
|
|
97
190
|
'div',
|
|
98
191
|
{ className: 't-omit t-FC3 t-FS16 t-LH1_3 t-MR8' },
|
|
@@ -134,16 +227,21 @@ var Page = function (_React$Component) {
|
|
|
134
227
|
)
|
|
135
228
|
)
|
|
136
229
|
),
|
|
230
|
+
t.canDelete(item) ? _react2.default.createElement(
|
|
231
|
+
Box,
|
|
232
|
+
{ className: 't-PL8 t-PR8 t-FCred t-FS14', onClick: t.deleteRelation.bind(t, item) },
|
|
233
|
+
'\u5220\u9664'
|
|
234
|
+
) : null,
|
|
137
235
|
_react2.default.createElement(
|
|
138
236
|
Box,
|
|
139
|
-
|
|
237
|
+
{ onClick: t.clickDetail.bind(t, item) },
|
|
140
238
|
_react2.default.createElement(_AngleRight2.default, { width: 20, fill: '#ccc', className: 'demo-t-list-arrow' })
|
|
141
239
|
)
|
|
142
240
|
);
|
|
143
241
|
}.bind(this)),
|
|
144
242
|
_react2.default.createElement(
|
|
145
243
|
'div',
|
|
146
|
-
{ className: t.state.relationList.length == 0 ?
|
|
244
|
+
{ className: t.state.relationList.length == 0 ? 'nodata-wrapper' : 't-DN' },
|
|
147
245
|
_react2.default.createElement(
|
|
148
246
|
VBox,
|
|
149
247
|
{ vAlign: 'center', hAlign: 'center', className: 'nodata' },
|