cloud-module-bpm 6.2.6

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