cloud-module-bpm 6.3.0

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.
Files changed (68) hide show
  1. package/README.md +20 -0
  2. package/babel.config.js +3 -0
  3. package/dist/cloud-module-bpm.common.js +104959 -0
  4. package/dist/cloud-module-bpm.common.js.map +1 -0
  5. package/dist/cloud-module-bpm.css +1 -0
  6. package/dist/cloud-module-bpm.umd.js +104969 -0
  7. package/dist/cloud-module-bpm.umd.js.map +1 -0
  8. package/dist/cloud-module-bpm.umd.min.js +48 -0
  9. package/dist/cloud-module-bpm.umd.min.js.map +1 -0
  10. package/dist/demo.html +10 -0
  11. package/dist/fonts/element-icons.535877f5.woff +0 -0
  12. package/dist/fonts/element-icons.732389de.ttf +0 -0
  13. package/examples/App.vue +221 -0
  14. package/examples/main.js +17 -0
  15. package/package.json +66 -0
  16. package/packages/bpm-back-anylink-dialog/bpm-back-anylink-dialog.vue +377 -0
  17. package/packages/bpm-back-anylink-dialog/index.js +7 -0
  18. package/packages/bpm-back-anylink-dialog/readme.md +1 -0
  19. package/packages/bpm-form-tools/bpm-form-tools.vue +216 -0
  20. package/packages/bpm-form-tools/index.js +7 -0
  21. package/packages/bpm-form-tools/readme.md +5 -0
  22. package/packages/bpm-grid-buttons/bpm-grid-buttons.vue +140 -0
  23. package/packages/bpm-grid-buttons/index.js +7 -0
  24. package/packages/bpm-grid-buttons/readme.md +5 -0
  25. package/packages/bpm-grid-buttons-new/bpm-grid-buttons-new.vue +189 -0
  26. package/packages/bpm-grid-buttons-new/index.js +7 -0
  27. package/packages/bpm-grid-buttons-new/readme.md +8 -0
  28. package/packages/bpm-jump-dialog/bpm-jump-dialog.vue +311 -0
  29. package/packages/bpm-jump-dialog/index.js +7 -0
  30. package/packages/bpm-jump-dialog/readme.md +1 -0
  31. package/packages/bpm-jump-latest-dialog/Tree.vue +91 -0
  32. package/packages/bpm-jump-latest-dialog/bpm-jump-latest-dialog.vue +453 -0
  33. package/packages/bpm-jump-latest-dialog/index.js +7 -0
  34. package/packages/bpm-jump-latest-dialog/readme.md +1 -0
  35. package/packages/bpm-opinion-dialog/bpm-opinion.vue +291 -0
  36. package/packages/bpm-opinion-dialog/index.js +7 -0
  37. package/packages/bpm-proctrack-dialog/bpm-proctrack.vue +102 -0
  38. package/packages/bpm-proctrack-dialog/index.js +7 -0
  39. package/packages/bpm-send-read-dialog/SelectedGrid.vue +99 -0
  40. package/packages/bpm-send-read-dialog/SourceGrid.vue +396 -0
  41. package/packages/bpm-send-read-dialog/Tree.vue +74 -0
  42. package/packages/bpm-send-read-dialog/bpm-next-node.vue +51 -0
  43. package/packages/bpm-send-read-dialog/bpm-send-read.vue +100 -0
  44. package/packages/bpm-send-read-dialog/index.js +7 -0
  45. package/packages/bpm-send-read-opinion-dialog/bpm-send-read-opinion.vue +261 -0
  46. package/packages/bpm-send-read-opinion-dialog/index.js +7 -0
  47. package/packages/bpm-sign-dialog/SelectedGrid.vue +102 -0
  48. package/packages/bpm-sign-dialog/SourceGrid.vue +413 -0
  49. package/packages/bpm-sign-dialog/Tree.vue +197 -0
  50. package/packages/bpm-sign-dialog/bpm-next-node.vue +57 -0
  51. package/packages/bpm-sign-dialog/bpm-sign-select.vue +116 -0
  52. package/packages/bpm-sign-dialog/index.js +7 -0
  53. package/packages/bpm-sign-opinion-dialog/bpm-sign-opinion.vue +259 -0
  54. package/packages/bpm-sign-opinion-dialog/index.js +7 -0
  55. package/packages/bpm-user-select-dialog/SelectedGrid.vue +155 -0
  56. package/packages/bpm-user-select-dialog/SourceGrid.vue +419 -0
  57. package/packages/bpm-user-select-dialog/Tree.vue +98 -0
  58. package/packages/bpm-user-select-dialog/bpm-next-node.vue +51 -0
  59. package/packages/bpm-user-select-dialog/bpm-user-select.vue +108 -0
  60. package/packages/bpm-user-select-dialog/index.js +7 -0
  61. package/packages/i18n/i18n.js +15 -0
  62. package/packages/i18n/langs/en_US.js +42 -0
  63. package/packages/i18n/langs/index.js +6 -0
  64. package/packages/i18n/langs/zh_CN.js +86 -0
  65. package/packages/index.js +48 -0
  66. package/packages/utils/merit-bpm.js +900 -0
  67. package/public/favicon.ico +0 -0
  68. package/vue.config.js +55 -0
@@ -0,0 +1,900 @@
1
+ import axios from 'cloud-module-base/packages/httpConfig/http';
2
+ var MeritBPM = {
3
+ procManagePermit: false, // 流程管理权限,默认为false没有删除流程的权限,不会有删除按钮 后续控制流程特送和管理特送功能
4
+ procCreatePermit: false, // 流程管理权限,默认为false没有管理权限,不会有删除按钮
5
+ userSelectDialogVisible: false, // 发送人员对话框是否显示
6
+ opinionDialogVisible: false, // 填写意见对话框是否显示
7
+ bpmJumpDialogVisible: false, // 特送对话框是否显示
8
+ bpmJumpManagementDialogVisible: false, // 特送管理对话框是否显示
9
+ bpmAnyLink: false, // 任意环节
10
+ bpmBtns: [], //流程表单按钮对象
11
+ sendReadDialogVisible: false, // 阅知对话框是否显示
12
+ sednReadOpinionDialogVisible: false, // 阅知意见对话框是否显示
13
+ signDialogVisible: false, // 转发对话框是否显示
14
+ signOpinionDialogVisible: false // 转发意见对话框是否显示
15
+ };
16
+ /**
17
+ * 功能说明:创建流程,并不发启流程,只是为了获取流程第一个用户任务表单地址
18
+ */
19
+ MeritBPM.create = function(that, procDefKey, params, callback) {
20
+ axios['bpm-engine']
21
+ .post('/api/engine/bpm/ruleengine/init/' + procDefKey, params)
22
+ .then(function(res) {
23
+ if (res.success) {
24
+ if (typeof callback == 'function') {
25
+ callback(res);
26
+ } else if (res.data != null) {
27
+ let url = res.data.runtime.formLink;
28
+ // var iTop = (window.screen.availHeight - 30 - 700) / 2;
29
+ // var iLeft = (window.screen.availWidth - 10 - 900) / 2;
30
+ // var features =
31
+ // 'width=900px,height=700px,' +
32
+ // 'left=' +
33
+ // iLeft +
34
+ // 'px,' +
35
+ // 'top=' +
36
+ // iTop +
37
+ // 'px';
38
+ window.open(url, '_blank');
39
+ }
40
+ } else {
41
+ that.$message.error(res.message);
42
+ }
43
+ })
44
+ .catch(function(err) {
45
+ that.$message.error(that.$t('base.operation.error') + err);
46
+ });
47
+ };
48
+
49
+ /**
50
+ * 功能说明:打开流程
51
+ */
52
+ MeritBPM.open = function(that, params, callback) {
53
+ axios['bpm-engine']
54
+ .post('/api/engine/bpm/ruleengine/run', {
55
+ businessId: params.businessId,
56
+ undoId: params.undoId
57
+ })
58
+ .then(function(res) {
59
+ if (res) {
60
+ if (typeof callback == 'function') {
61
+ callback(res);
62
+ } else if (res.data != null) {
63
+ if (params.undoId == undefined || params.undoId == null) {
64
+ let url = res.data.runtime.formLink;
65
+ window.open(url, '_blank');
66
+ } else {
67
+ let url = res.data.runtime.formLink + '&undoId=' + params.undoId; //edit by zhangyan
68
+ // var iTop = (window.screen.availHeight - 30 - 700) / 2;
69
+ // var iLeft = (window.screen.availWidth - 10 - 900) / 2;
70
+ // var features =
71
+ // 'width=900px,height=700px,' +
72
+ // 'left=' +
73
+ // iLeft +
74
+ // 'px,' +
75
+ // 'top=' +
76
+ // iTop +
77
+ // 'px';
78
+ window.open(url, '_blank');
79
+ }
80
+ }
81
+ }
82
+ })
83
+ .catch(function(err) {
84
+ that.$message.error(that.$t('base.operation.error') + err);
85
+ });
86
+ };
87
+ /**
88
+ * 前置条件:that.getBpmVar方法必须存在,必须有businessId和procInstId
89
+ * that.bpmBtns对象必须存在
90
+ * that.ruleEngine对象必须存在
91
+ *
92
+ * 功能一说明:打开流程、更新流程执行该方法
93
+ * 参数说明:
94
+ * bpmBtn : {}
95
+ * callback : {}
96
+ *
97
+ * 功能二说明:操作流程按钮,执行流程回调方法callback
98
+ * 参数说明:
99
+ * bpmBtn : 流程操作按钮
100
+ * callback : function(res){ 执行流程相关操作 }
101
+ */
102
+ MeritBPM.runRuleEngine = function(that, bpmBtn, callback) {
103
+ console.log("runzhang"+that)
104
+ let bpmVars = that.getBpmVar(bpmBtn);
105
+ if (typeof bpmBtn == 'object') {
106
+ bpmVars.bpmOperName = bpmBtn.name || ''; //【流程内置变量名】
107
+ bpmVars.bpmOperValue = bpmBtn.id || ''; //【流程内置变量名】
108
+ }
109
+ // 添加原因:人员选择过多造成入参过长报500,发现后端没有用nextNodes中类容,故置空
110
+ if (bpmVars.runtime != undefined && bpmVars.runtime.nextNodes != undefined) {
111
+ bpmVars.runtime.nextNodes = [];
112
+ }
113
+ axios['bpm-engine']
114
+ .post('/api/engine/bpm/ruleengine/run', bpmVars)
115
+ .then(function(res) {
116
+ if (res.data.runtime != null) {
117
+ Object.assign(that.ruleEngine, res.data);
118
+ that.ruleEngine.procInstId = res.data.runtime.procInstId;
119
+ let bpmBtns = that.ruleEngine.runtime.bpmBtns;
120
+ that.MeritBPM.bpmBtns = bpmBtns;
121
+ }
122
+ if (typeof callback === 'function') {
123
+ callback(res);
124
+ } else {
125
+ // 当实例id不为null,点击保存操作,回调函数
126
+ that.bpmCustomFunction();
127
+ }
128
+ })
129
+ .catch(function(err) {
130
+ that.$message.error(that.$t('base.operation.error') + err);
131
+ });
132
+ if(window.opener && window.opener.refreshBpmGrid){
133
+ window.opener.refreshBpmGrid();
134
+ }
135
+ };
136
+
137
+ /**
138
+ 功能说明:流程操作按钮统一入口,由该方法分发到对应的功能
139
+ 参数说明:
140
+ bpmBtns: [
141
+ {id:'send',name:'发送',procInstId:'流程实例Id',isSave:是否已保存},
142
+ {id:'bpmFlow0',name:'审批',procInstId:'流程实例Id',isSave:是否已保存}
143
+ ]
144
+ **/
145
+
146
+ MeritBPM.doSend = function(that, bpmBtn) {
147
+ that.bpmBtn = bpmBtn;
148
+ if (bpmBtn.id == 'bpmProcTrackBtn') {
149
+ that.MeritBPM.openProcTrackWindow(that, {
150
+ procInstId: bpmBtn.procInstId,
151
+ procDefId: bpmBtn.procDefId
152
+ });
153
+ } else if (bpmBtn.id == 'bpmSaveOrUpdateBtn ' && bpmBtn.isSave != '1') {
154
+ that.bpmAddOrUpdate(bpmBtn);
155
+ } else if (bpmBtn.id == 'bpmCloseBtn') {
156
+ that.bpmClose();
157
+ } else {
158
+ if (
159
+ bpmBtn.isSave == '1' ||
160
+ (that.ruleEngine.procInstId != '' &&
161
+ that.ruleEngine.editStatus.type != '1')
162
+ ) {
163
+ bpmBtn.isSave = '0';
164
+ //运行规则引擎,查询办理任务、后续人员等相关配置
165
+ MeritBPM.runRuleEngine(that, bpmBtn, function(res) {
166
+ let nextNodes = [];
167
+ let nodesLength = that.ruleEngine.runtime.nextNodes.length;
168
+ for (let i = 0; i < nodesLength; i++) {
169
+ //let dealerKey = that.ruleEngine.runtime.nextNodes[i].taskDeKey + '_' + that.ruleEngine.runtime.nextNodes[i].approve.type;
170
+ let _length = that.ruleEngine.runtime.nextNodes[i].bpmUsers.length;
171
+ if (_length == 0) {
172
+ that.$message.error(
173
+ '待处理节点【' +
174
+ that.ruleEngine.runtime.nextNodes[i].taskName +
175
+ '】人员为空,请联系管理员!'
176
+ );
177
+ return;
178
+ }
179
+ //let dealerKeyValue = that.ruleEngine.runtime.nextNodes[i].bpmUsers[0].code; //多值使用,分隔
180
+ //nextNodes[dealerKey] = dealerKeyValue;
181
+ }
182
+ that.ruleEngine.nextNodes = nextNodes;
183
+ //================================是否打开人员选择对话框====================================
184
+ if (bpmBtn.id == 'bpmOpinionBtn') {
185
+ that.MeritBPM.opinionDialogVisible = true;
186
+ } else if (that.ruleEngine.runtime.opinionWin == 'yes') {
187
+ that.MeritBPM.opinionDialogVisible = true;
188
+ } else if (that.ruleEngine.runtime.selUserWin == 'yes') {
189
+ that.MeritBPM.userSelectDialogVisible = true;
190
+ } else if (
191
+ bpmBtn.id.indexOf('Flow') > 0 ||
192
+ bpmBtn.id.indexOf('Send') > 0
193
+ ) {
194
+ that.MeritBPM.finishTask(that, that.ruleEngine);
195
+ } else if (bpmBtn.id == 'bpmJumpBtn') {
196
+ that.MeritBPM.bpmJumpDialogVisible = true;
197
+ } else if (bpmBtn.id == 'bpmJumpManagementBtn') {
198
+ that.MeritBPM.bpmJumpManagementDialogVisible = true;
199
+ } else if (bpmBtn.id == 'bpmJumpBtnEnd') {
200
+ that.MeritBPM.bpmJumpBtnEnd(that, that.ruleEngine);
201
+ } else if (bpmBtn.id == 'bpmTakeBackBtn') {
202
+ that.MeritBPM.bpmTakeBackBtn(that, that.ruleEngine);
203
+ } else if (bpmBtn.id == 'bpmRetRandomNodeStatusBtn') {
204
+ that.MeritBPM.bpmAnyLink = true;
205
+ } else if (bpmBtn.id == 'bpmRetfirnodeBtn') {
206
+ that.MeritBPM.bpmRetfirnodeBtn(that, that.ruleEngine);
207
+ } else if (bpmBtn.id == 'bpmRetprenodeBtn') {
208
+ that.MeritBPM.bpmRetprenodeBtn(that, that.ruleEngine);
209
+ } else if (bpmBtn.id == 'bpmDoBackBtn') {
210
+ that.MeritBPM.bpmDoBackBtn(that, that.ruleEngine);
211
+ } else if (bpmBtn.id == 'bpmReadToKnowBtn') {
212
+ that.MeritBPM.sendReadDialogVisible = true;
213
+ } else if (bpmBtn.id == 'bpmReadEndBtn') {
214
+ that.MeritBPM.bpmReadEndBtn(that, that.ruleEngine);
215
+ } else if (bpmBtn.id == 'bpmReadOpinionBtn') {
216
+ that.MeritBPM.sednReadOpinionDialogVisible = true;
217
+ } else if (bpmBtn.id == 'bpmSignBtn') {
218
+ that.MeritBPM.signOpinionDialogVisible = true;
219
+ } else {
220
+ //回调函数
221
+ that.bpmCustomFunction();
222
+ }
223
+ });
224
+ } else {
225
+ that.bpmAddOrUpdate(bpmBtn);
226
+ }
227
+ }
228
+ return;
229
+ };
230
+
231
+ /**
232
+ * 前置条件:that.ruleEngine,that.bpmBtns必须存在
233
+ * 功能说明:初始化规则引擎
234
+ * 参数说明:
235
+ * bpmVars{
236
+ * procDefKey:'流程定义Key',//必须
237
+ * 流程变量:'变量值',
238
+ * ...... : .....
239
+ * }
240
+ **/
241
+
242
+ MeritBPM.initRuleEngine = function(that) {
243
+ let bpmVars = that.getBpmVar({});
244
+ axios['bpm-engine']
245
+ .post('/api/engine/bpm/ruleengine/init/' + bpmVars.procDefKey, bpmVars)
246
+ .then(function(res) {
247
+ if (res) {
248
+ if (res.data != null) {
249
+ Object.assign(that.ruleEngine, res.data);
250
+ that.MeritBPM.bpmBtns = res.data.runtime.bpmBtns;
251
+ }
252
+ }
253
+ })
254
+ .catch(function(err) {
255
+ that.$message.error(that.$t('base.operation.error') + err);
256
+ });
257
+ };
258
+
259
+ /**
260
+ * 前置条件:
261
+ * 功能说明:发启流程
262
+ * 参数说明:
263
+ */
264
+ MeritBPM.startProcess = function(that, bpmBtn, callback) {
265
+ let bpmVars = that.getBpmVar({});
266
+ if (bpmBtn.procInstId == '') {
267
+ axios['bpm-engine']
268
+ .post(
269
+ '/api/engine/bpm/' +
270
+ that.ruleEngine.runtime.procDefKey +
271
+ '/startprocess',
272
+ bpmVars
273
+ )
274
+ .then(function(res) {
275
+ Object.assign(that.ruleEngine, res.data);
276
+ MeritBPM.runRuleEngine(that, bpmBtn, callback);
277
+ });
278
+ }
279
+ };
280
+ /**
281
+ * 功能说明
282
+ */
283
+ MeritBPM.finishTask = function(that, _ruleEngine) {
284
+ let bpmBtn = _ruleEngine.bpmBtn; //操作流程按钮
285
+ let bpmVars = that.getBpmVar(bpmBtn);
286
+ let nextNodes = _ruleEngine.nextNodes;
287
+ let nodesLength = that.ruleEngine.runtime.nextNodes.length;
288
+ for (let i = 0; i < nodesLength; i++) {
289
+ let dealerKey =
290
+ that.ruleEngine.runtime.nextNodes[i].taskDeKey +
291
+ '_' +
292
+ that.ruleEngine.runtime.nextNodes[i].approve.type;
293
+ bpmVars[dealerKey] = nextNodes[dealerKey]; //设置后续处理人员
294
+ }
295
+ if (typeof bpmBtn == 'object') {
296
+ bpmVars.bpmOperName = bpmBtn.name || ''; //【流程内置变量名】
297
+ bpmVars.bpmOperValue = bpmBtn.id || ''; //【流程内置变量名】
298
+ }
299
+ // 添加原因:人员选择过多造成入参过长报500,发现后端没有用nextNodes中类容,故置空
300
+ if (bpmVars.runtime != undefined && bpmVars.runtime.nextNodes != undefined) {
301
+ bpmVars.runtime.nextNodes = [];
302
+ }
303
+ if (_ruleEngine.runtime.taskId != null) {
304
+ //办理任务
305
+ axios['bpm-engine']
306
+ .post(
307
+ '/api/engine/bpm/task/' + _ruleEngine.runtime.taskId + '/complete',
308
+ bpmVars
309
+ )
310
+ .then(function(res) {
311
+ // 判断是否存在回调函数,如果存在,回调,在回调函数中手动关闭。不存在,自动关闭
312
+ if (
313
+ that.customFun != undefined &&
314
+ typeof that.customFun == 'function'
315
+ ) {
316
+ that.bpmCustomFunction();
317
+ } else {
318
+ that.bpmClose();
319
+ }
320
+ })
321
+ .catch(function(err) {
322
+ if (err.data.message.indexOf('No outgoing sequence')) {
323
+ that.$message.error(
324
+ that.$t('base.operation.error') + ':没有后处理节点!请联系管理员。'
325
+ );
326
+ }
327
+ });
328
+ }
329
+ };
330
+ // 流程终止
331
+ MeritBPM.bpmJumpBtnEnd = function(that, ruleEngine) {
332
+ that
333
+ .$confirm('此操作将终止该流程, 是否继续?', '提示', {
334
+ confirmButtonText: '确定',
335
+ cancelButtonText: '取消',
336
+ closeOnClickModal: false,
337
+ type: 'warning'
338
+ })
339
+ .then(() => {
340
+ axios['bpm-engine']
341
+ .post(
342
+ '/api/engine/bpm/process/over/' + ruleEngine.businessId,
343
+ ruleEngine
344
+ )
345
+ .then(function(res) {
346
+ if (res.status == '1') {
347
+ that.$message.success(res.message);
348
+ that.bpmClose();
349
+ } else {
350
+ that.$message.error(res.message);
351
+ }
352
+ })
353
+ .catch(function(err) {
354
+ console.log(err);
355
+ });
356
+ })
357
+ .catch(() => {});
358
+ };
359
+ // 退回上一环节处理人
360
+ (MeritBPM.bpmRetprenodeBtn = function(that, ruleEngine) {
361
+ let businessId = that.ruleEngine.businessId;
362
+ that
363
+ .$confirm('此操作将退回到上一环节处理人, 是否继续?', '提示', {
364
+ confirmButtonText: '确定',
365
+ cancelButtonText: '取消',
366
+ closeOnClickModal: false,
367
+ type: 'warning'
368
+ })
369
+ .then(() => {
370
+ axios['bpm-engine']
371
+ .post('/api/engine/bpm/process/retprenode/' + businessId, ruleEngine)
372
+ .then(function(res) {
373
+ if (res.status == '1') {
374
+ that.$message.success(res.message);
375
+ that.bpmClose();
376
+ } else {
377
+ that.$message.error(res.message);
378
+ }
379
+ })
380
+ .catch(function(err) {
381
+ console.log(err);
382
+ });
383
+ })
384
+ .catch(() => {});
385
+ }),
386
+ //发送到退回人
387
+ (MeritBPM.bpmDoBackBtn = function(that, ruleEngine) {
388
+ let businessId = that.ruleEngine.businessId;
389
+ that
390
+ .$confirm('是否将流程直接发送给退回人', '发送提示', {
391
+ confirmButtonText: '确定',
392
+ cancelButtonText: '取消',
393
+ closeOnClickModal: false,
394
+ type: 'warning'
395
+ })
396
+ .then(() => {
397
+ axios['bpm-engine']
398
+ .post('/api/engine/bpm/process/dostatus/' + businessId, ruleEngine)
399
+ .then(function(res) {
400
+ if (res.status == '1') {
401
+ that.$message.success(res.message);
402
+ that.bpmClose();
403
+ } else {
404
+ that.$message.error(res.message);
405
+ }
406
+ })
407
+ .catch(function(err) {
408
+ console.log(err);
409
+ });
410
+ })
411
+ .catch(() => {});
412
+ }),
413
+ // 送阅知
414
+ (MeritBPM.sendReadSave = function(that, ruleEngine) {
415
+ var procInstId = ruleEngine.runtime.mainForm.procInstId;
416
+ var userCodes = ruleEngine.sendReadUserCodes;
417
+
418
+ axios['bpm-engine']
419
+ .post('/api/engine/bpm/process/sendingRead/' + procInstId, userCodes)
420
+ .then(function(res) {
421
+ if (res.status == '1') {
422
+ that.$message.success(res.message);
423
+ } else {
424
+ that.$message.error(res.message);
425
+ }
426
+ })
427
+ .catch(function(err) {
428
+ console.log(err);
429
+ });
430
+ }),
431
+ (MeritBPM.signSave = function(that, ruleEngine) {
432
+ var procInstId = ruleEngine.procInstId;
433
+ var approveType = ruleEngine.approve.type;
434
+ var variables = ruleEngine.signUserCodes;
435
+ axios['bpm-engine']
436
+ .post('/api/engine/bpm/process/sendSign/' + procInstId, variables)
437
+ .then(function(res) {
438
+ if (res.status == '1') {
439
+ that.$message.success(res.message);
440
+ that.bpmClose();
441
+ } else {
442
+ that.$message.error(res.message);
443
+ }
444
+ })
445
+ .catch(function(err) {
446
+ console.log(err);
447
+ });
448
+ }),
449
+ // 阅知完毕
450
+ (MeritBPM.bpmReadEndBtn = function(that, ruleEngine) {
451
+ var procInstId = ruleEngine.runtime.mainForm.procInstId;
452
+ axios['bpm-engine']
453
+ .post('/api/engine/bpm/process/sendReadEnd/' + procInstId)
454
+ .then(function(res) {
455
+ if (res.status == '1') {
456
+ that.$message.success(res.message);
457
+ that.bpmClose();
458
+ } else {
459
+ that.$message.error(res.message);
460
+ }
461
+ })
462
+ .catch(function(err) {
463
+ console.log(err);
464
+ });
465
+ }),
466
+ // 退回拟稿人
467
+ (MeritBPM.bpmRetfirnodeBtn = function(that, ruleEngine) {
468
+ let businessId = that.ruleEngine.businessId;
469
+ that
470
+ .$confirm('此操作将退回到拟稿人, 是否继续?', '提示', {
471
+ confirmButtonText: '确定',
472
+ cancelButtonText: '取消',
473
+ closeOnClickModal: false,
474
+ type: 'warning'
475
+ })
476
+ .then(() => {
477
+ axios['bpm-engine']
478
+ .post('/api/engine/bpm/process/retfirnode/' + businessId, ruleEngine)
479
+ .then(function(res) {
480
+ if (res.status == '1') {
481
+ that.$message.success(res.message);
482
+ that.bpmClose();
483
+ } else {
484
+ that.$message.error(res.message);
485
+ }
486
+ })
487
+ .catch(function(err) {
488
+ console.log(err);
489
+ });
490
+ })
491
+ .catch(() => {});
492
+ }),
493
+ // 返回任意环节
494
+ (MeritBPM.retRandomNodeStatusSave = function(that, ruleEngine) {
495
+ let businessId = that.ruleEngine.businessId;
496
+ let receiver = ruleEngine.resultCodes;
497
+ let toTaskDefKey = ruleEngine.resultToTaskDefKey;
498
+ axios['bpm-engine']
499
+ .post(
500
+ '/api/engine/bpm/process/RetRandomNodeStatus/' +
501
+ businessId +
502
+ '/' +
503
+ toTaskDefKey +
504
+ '/' +
505
+ receiver,
506
+ ruleEngine
507
+ )
508
+ .then(function(res) {
509
+ if (res.status == '1') {
510
+ that.$message.success(res.message);
511
+ that.bpmClose();
512
+ } else {
513
+ that.$message.error(res.message);
514
+ }
515
+ })
516
+ .catch(function(err) {
517
+ console.log(err);
518
+ });
519
+ }),
520
+ // 流程收回
521
+ (MeritBPM.bpmTakeBackBtn = function(that, ruleEngine) {
522
+ let businessId = that.ruleEngine.businessId;
523
+ that
524
+ .$confirm('此操作将收回该流程, 是否继续?', '提示', {
525
+ confirmButtonText: '确定',
526
+ cancelButtonText: '取消',
527
+ closeOnClickModal: false,
528
+ type: 'warning'
529
+ })
530
+ .then(() => {
531
+ axios['bpm-engine']
532
+ .post('/api/engine/bpm/process/takeBack/' + businessId, ruleEngine)
533
+ .then(function(res) {
534
+ if (res.status == '1') {
535
+ that.$message.success(res.message);
536
+ that.bpmClose();
537
+ } else {
538
+ that.$message.error(res.message);
539
+ }
540
+ })
541
+ .catch(function(err) {
542
+ console.log(err);
543
+ });
544
+ })
545
+ .catch(() => {});
546
+ }),
547
+ // 特送对话框
548
+ (MeritBPM.JumpSave = function(that, ruleEngine) {
549
+ let toTaskDefKey = ruleEngine.toTaskDefKey;
550
+ let businessId = that.ruleEngine.businessId;
551
+ axios['bpm-engine']
552
+ .post(
553
+ '/api/engine/bpm/jump/process/' + businessId + '/' + toTaskDefKey,
554
+ ruleEngine
555
+ )
556
+ .then(function(res) {
557
+ if (res.status == '1') {
558
+ that.$message.success(res.message);
559
+ that.bpmClose();
560
+ } else {
561
+ that.$message.error(res.message);
562
+ }
563
+ })
564
+ .catch(function(err) {
565
+ console.log(err);
566
+ });
567
+ }),
568
+ //特送管理对话框
569
+ (MeritBPM.JumpManagementSave = function(that, ruleEngine) {
570
+ let toTaskDefKey = ruleEngine.toTaskDefKey;
571
+ let businessId = that.ruleEngine.businessId;
572
+ axios['bpm-engine']
573
+ .post(
574
+ '/api/engine/bpm/jump/latest/process/' +
575
+ businessId +
576
+ '/' +
577
+ toTaskDefKey,
578
+ ruleEngine
579
+ )
580
+ .then(function(res) {
581
+ if (res.status == '1') {
582
+ that.$message.success(res.message);
583
+ that.bpmClose();
584
+ } else {
585
+ that.$message.error(res.message);
586
+ }
587
+ })
588
+ .catch(function(err) {
589
+ console.log(err);
590
+ });
591
+ });
592
+ // 打开窗口工具
593
+ MeritBPM.openWindow = function(url, params) {
594
+ var width = 1200;
595
+ var height = 700;
596
+ var _top = 50;
597
+ var _scrollbars = 'yes';
598
+ var _resizable = '1';
599
+ if (params != undefined) {
600
+ width = params.width != undefined ? params.width : width;
601
+ height = params.height != undefined ? params.height : height;
602
+ _top = params.top != undefined ? params.top : _top;
603
+ if (params.scrollbars != undefined) {
604
+ _scrollbars = params.scrollbars;
605
+ }
606
+ if (params.resizable != undefined) {
607
+ _resizable = params.resizable;
608
+ }
609
+ }
610
+ var _height = screen.availHeight;
611
+ var _width = screen.availWidth;
612
+ var _left = width == undefined ? (_width - 800) / 2 : (_width - width) / 2;
613
+ var atts =
614
+ 'top=' +
615
+ _top +
616
+ ',left=' +
617
+ _left +
618
+ ',height=' +
619
+ height +
620
+ ',width=' +
621
+ width +
622
+ ',scrollbars=' +
623
+ _scrollbars +
624
+ ',resizable=' +
625
+ _resizable +
626
+ ',status=no,toolbar=no,menubar=no,location=no';
627
+ var win = window.open(url, '', atts, true);
628
+ return win;
629
+ };
630
+
631
+ // 打开流程跟踪窗口
632
+ MeritBPM.openProcTrackWindow = function(that, params) {
633
+ var shielding = params.shielding;
634
+ if (params.shielding == null) {
635
+ // 不传参,赋值为true
636
+ shielding = true;
637
+ }
638
+ axios['bpm-engine'].post('/api/engine/track/port', {}).then(function(res) {
639
+ var port = res.data;
640
+ var url = '';
641
+ if (port == '80') {
642
+ url =
643
+ 'http://' +
644
+ window.location.hostname +
645
+ '/bpm/proctrack/index.html?procInstId=' +
646
+ params.procInstId +
647
+ '&procDefId=' +
648
+ params.procDefId +
649
+ '&IsShielding=' +
650
+ shielding;
651
+ } else {
652
+ url =
653
+ 'http://' +
654
+ window.location.hostname +
655
+ ':' +
656
+ port +
657
+ '/bpm/proctrack/index.html?procInstId=' +
658
+ params.procInstId +
659
+ '&procDefId=' +
660
+ params.procDefId +
661
+ '&IsShielding=' +
662
+ shielding;
663
+ }
664
+ MeritBPM.openWindow(url, params);
665
+ });
666
+ };
667
+
668
+ // 发送人员对话框关闭
669
+ MeritBPM.bpmUserSelectClose = function(that, params) {
670
+ MeritBPM.userSelectDialogVisible = false;
671
+ };
672
+
673
+ // 发送人员对话框确定
674
+ MeritBPM.bpmUserSelectSave = function(that, _ruleEngine) {
675
+ MeritBPM.finishTask(that, _ruleEngine);
676
+ MeritBPM.userSelectDialogVisible = false;
677
+ };
678
+
679
+ // 送阅知对话框关闭
680
+ MeritBPM.bpmSendReadClose = function(that, params) {
681
+ MeritBPM.sendReadDialogVisible = false;
682
+ window.location.reload();
683
+ };
684
+ // 送阅知对话框确认
685
+ MeritBPM.bpmSendReadSave = function(that, ruleEngine) {
686
+ MeritBPM.sendReadSave(that, ruleEngine);
687
+ MeritBPM.sendReadDialogVisible = false;
688
+ };
689
+ // 阅知意见对话框关闭
690
+ MeritBPM.bpmSendReadOpinionClose = function(that, params) {
691
+ MeritBPM.sednReadOpinionDialogVisible = false;
692
+ };
693
+ // 阅知意见对话框确定
694
+ MeritBPM.bpmSendReadOpinionSave = function(that, params) {
695
+ MeritBPM.sednReadOpinionDialogVisible = false;
696
+ };
697
+
698
+ // 转发意见对话框关闭
699
+ MeritBPM.bpmSignOpinionClose = function(that, params) {
700
+ MeritBPM.signOpinionDialogVisible = false;
701
+ };
702
+ // 转发意见对话框确定
703
+ MeritBPM.bpmSignOpinionSave = function(that, params) {
704
+ MeritBPM.signOpinionDialogVisible = false;
705
+ // 打开转发对话框
706
+ // if()
707
+ MeritBPM.signDialogVisible = true;
708
+ };
709
+
710
+ // 转发对话框关闭
711
+ MeritBPM.bpmSignClose = function(that, params) {
712
+ MeritBPM.signDialogVisible = false;
713
+ };
714
+ // 转发对话框确定
715
+ MeritBPM.bpmSignSave = function(that, ruleEngine) {
716
+ MeritBPM.signSave(that, ruleEngine);
717
+ MeritBPM.signDialogVisible = false;
718
+ };
719
+
720
+ // 特送对话框关闭
721
+ MeritBPM.bpmJumpClose = function(that, params) {
722
+ MeritBPM.bpmJumpDialogVisible = false;
723
+ };
724
+
725
+ // 特送对话框确定
726
+ MeritBPM.bpmJumpSave = function(that, ruleEngine) {
727
+ MeritBPM.JumpSave(that, ruleEngine);
728
+ MeritBPM.bpmJumpDialogVisible = false;
729
+ };
730
+
731
+ // 特送管理对话框关闭
732
+ MeritBPM.bpmJumpManagementClose = function(that, params) {
733
+ MeritBPM.bpmJumpManagementDialogVisible = false;
734
+ };
735
+
736
+ // 特送管理对话框确定
737
+ MeritBPM.bpmJumpManagementSave = function(that, ruleEngine) {
738
+ MeritBPM.JumpManagementSave(that, ruleEngine);
739
+ MeritBPM.bpmJumpManagementDialogVisible = false;
740
+ };
741
+
742
+ // 任意环节对话框 关闭
743
+ MeritBPM.bpmRetRandomNodeStatusClose = function(that, params) {
744
+ MeritBPM.bpmAnyLink = false;
745
+ };
746
+ // 任意环节对话框 确定
747
+ MeritBPM.bpmRetRandomNodeStatusSave = function(that, ruleEngine) {
748
+ MeritBPM.retRandomNodeStatusSave(that, ruleEngine);
749
+ MeritBPM.bpmAnyLink = false;
750
+ };
751
+
752
+ // 意见对话框关闭
753
+ MeritBPM.bpmOpinionClose = function(that, params) {
754
+ MeritBPM.opinionDialogVisible = false;
755
+ };
756
+
757
+ // 意见对话框确定
758
+ MeritBPM.bpmOpinionSave = function(that, params) {
759
+ MeritBPM.opinionDialogVisible = false;
760
+ Object.assign(that.ruleEngine, params);
761
+ let bpmBtn = that.bpmBtn;
762
+ if (bpmBtn.id == 'bpmOpinionBtn') {
763
+ // 直接填写意见,什么也不做
764
+ if (typeof that.opinionCallback == 'function') {
765
+ that.opinionCallback();
766
+ }
767
+ } else if (that.ruleEngine.runtime.selUserWin == 'yes') {
768
+ // 点击发送,需要选择人员
769
+ MeritBPM.userSelectDialogVisible = true;
770
+ } else if (bpmBtn.id == 'bpmRetfirnodeBtn') {
771
+ that.MeritBPM.bpmRetfirnodeBtn(that, that.ruleEngine);
772
+ } else if (bpmBtn.id == 'bpmRetprenodeBtn') {
773
+ that.MeritBPM.bpmRetprenodeBtn(that, that.ruleEngine);
774
+ } else if (bpmBtn.id == 'bpmRetRandomNodeStatusBtn') {
775
+ that.MeritBPM.bpmAnyLink = true;
776
+ } else {
777
+ // 点击发送,不需要选择人员
778
+ that.MeritBPM.finishTask(that, that.ruleEngine);
779
+ }
780
+ };
781
+
782
+ // 根据流程定义Key获取管理权限和新增权限
783
+ MeritBPM.validatePermit = function(that, procDefKey, callback) {
784
+ that.MeritBPM.procManagePermit = false;
785
+ that.MeritBPM.procCreatePermit = false;
786
+ axios['bpm-engine']
787
+ .post('/api/engine/bpm/' + procDefKey + '/validate/permit')
788
+ .then(function(res) {
789
+ let permitData = res.data || {};
790
+ let permitManage = permitData['manage'] ? true : false;
791
+ let createPermit = permitData['create'] ? true : false;
792
+ that.MeritBPM.procManagePermit = permitManage;
793
+ that.MeritBPM.procCreatePermit = createPermit;
794
+ if (typeof callback == 'function') {
795
+ callback(permitData);
796
+ }
797
+ });
798
+ };
799
+
800
+ /**
801
+ * 获取url上的参数值
802
+ * @param {*} name 参数名
803
+ * 拼接参数/bpm-demo/example/index.html#/formEdit?id=businessId&undoId=undoId
804
+ */
805
+ MeritBPM.getUrlParameter = function(name) {
806
+ var query = window.location.hash.substring(
807
+ window.location.hash.indexOf('?') + 1
808
+ );
809
+ var vars = query.split('&');
810
+ for (var i = 0; i < vars.length; i++) {
811
+ var pair = vars[i].split('=');
812
+ if (pair[0] == name) {
813
+ return pair[1];
814
+ }
815
+ }
816
+ return null;
817
+ };
818
+
819
+ /**
820
+ * 功能说明:
821
+ * @param {} event
822
+ * @param {*} bpmBtn
823
+ */
824
+ function BPMEventBus(event, bpmBtn) {
825
+ var that = this;
826
+ if (event == 'bpmUserSelectClose') {
827
+ MeritBPM.bpmUserSelectClose(that, bpmBtn);
828
+ }
829
+ if (event == 'bpmUserSelectSave') {
830
+ MeritBPM.bpmUserSelectSave(that, bpmBtn);
831
+ }
832
+ if (event == 'bpmOpinionClose') {
833
+ MeritBPM.bpmOpinionClose(that, bpmBtn);
834
+ }
835
+ if (event == 'bpmOpinionSave') {
836
+ MeritBPM.bpmOpinionSave(that, bpmBtn);
837
+ }
838
+ if (event == 'doSend') {
839
+ MeritBPM.doSend(that, bpmBtn);
840
+ }
841
+ if (event == 'bpmJumpClose') {
842
+ MeritBPM.bpmJumpClose(that, bpmBtn);
843
+ }
844
+ if (event == 'bpmJumpSave') {
845
+ MeritBPM.bpmJumpSave(that, bpmBtn);
846
+ }
847
+ if (event == 'bpmJumpManagementClose') {
848
+ MeritBPM.bpmJumpManagementClose(that, bpmBtn);
849
+ }
850
+ if (event == 'bpmJumpManagementSave') {
851
+ MeritBPM.bpmJumpManagementSave(that, bpmBtn);
852
+ }
853
+ if (event == 'bpmJumpBtnEnd') {
854
+ MeritBPM.bpmJumpBtnEnd(that, bpmBtn);
855
+ }
856
+ if (event == 'bpmTakeBackBtn') {
857
+ MeritBPM.bpmTakeBackBtn(that, bpmBtn);
858
+ }
859
+ if (event == 'bpmRetRandomNodeStatusClose') {
860
+ MeritBPM.bpmRetRandomNodeStatusClose(that, bpmBtn);
861
+ }
862
+ if (event == 'bpmRetRandomNodeStatusSave') {
863
+ MeritBPM.bpmRetRandomNodeStatusSave(that, bpmBtn);
864
+ }
865
+ if (event == 'bpmRetfirnodeBtn') {
866
+ MeritBPM.bpmRetfirnodeBtn(that, bpmBtn);
867
+ }
868
+ if (event == 'bpmRetprenodeBtn') {
869
+ MeritBPM.bpmRetprenodeBtn(that, bpmBtn);
870
+ }
871
+ if (event == 'bpmDoBackBtn') {
872
+ MeritBPM.bpmDoBackBtn(that, bpmBtn);
873
+ }
874
+ if (event == 'bpmSendReadClose') {
875
+ MeritBPM.bpmSendReadClose(that, bpmBtn);
876
+ }
877
+ if (event == 'bpmSendReadSave') {
878
+ MeritBPM.bpmSendReadSave(that, bpmBtn);
879
+ }
880
+ if (event == 'bpmSendReadOpinionClose') {
881
+ MeritBPM.bpmSendReadOpinionClose(that, bpmBtn);
882
+ }
883
+ if (event == 'bpmSendReadOpinionSave') {
884
+ MeritBPM.bpmSendReadOpinionSave(that, bpmBtn);
885
+ }
886
+ if (event == 'bpmSignOpinionClose') {
887
+ MeritBPM.bpmSignOpinionClose(that, bpmBtn);
888
+ }
889
+ if (event == 'bpmSignOpinionSave') {
890
+ MeritBPM.bpmSignOpinionSave(that, bpmBtn);
891
+ }
892
+ if (event == 'bpmSignClose') {
893
+ MeritBPM.bpmSignClose(that, bpmBtn);
894
+ }
895
+ if (event == 'bpmSignSave') {
896
+ MeritBPM.bpmSignSave(that, bpmBtn);
897
+ }
898
+ }
899
+
900
+ export { MeritBPM, BPMEventBus };