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 CHANGED
@@ -3,6 +3,8 @@
3
3
  ---npm publish
4
4
 
5
5
  ## 更新日志
6
+ - 2.3.60:移动端支持减签
7
+ - 2.3.59:移动端不通过的流程允许作废,移动端支持关联流程
6
8
  - 2.3.58:移动端数据表设置字段的关联值支持用户岗位
7
9
  - 2.3.57:移动端自动通过返回后打开表单报错
8
10
  - 2.3.56:移动端再次发起自动编号重新生成
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: {
@@ -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
- * 子表空行过滤(提交用):UI 仍可留空行,仅从提交数据中去掉业务全空行。
12
- * 系统字段忽略;0/false 有值;宏回填有值则保留。
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 kv = row[i];
91
- if (!kv || isSubTblSysField(kv.key)) {
114
+ var cell = row[i];
115
+ if (!cell) {
92
116
  continue;
93
117
  }
94
- if (hasSubTblBusinessValue(kv.value)) {
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
- * 深拷贝后过滤空子表行(不改动页面 state / UI)
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
- value = form.defaultValue;
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 = form.defaultValue;
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 = form.defaultValue;
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
- var defaultValue = form.defaultValue;
1429
- if (defaultValue) {
1430
- if (defaultValue == '1') {
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: content
100
+ relationList: list
101
+ }, function () {
102
+ if (typeof t.props.onCountChange === 'function') {
103
+ t.props.onCountChange(list.length);
104
+ }
68
105
  });
69
- }).catch(function (error) {});
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 = "process/processDetails/-99/" + formId + "/-99/-99/0/" + processInstanceId + "/" + module;
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
- //location.reload();
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', onClick: t.clickDetail.bind(this, item) },
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
- null,
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 ? "nodata-wrapper" : "t-DN" },
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' },