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,428 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :title="opt.title"
5
+ :visible.sync="dialogVisible"
6
+ width="650px"
7
+ top="8vh"
8
+ @open="openDialog"
9
+ :before-close="handleClose"
10
+ :close-on-click-modal="false"
11
+ append-to-body
12
+ custom-class="bpmjump"
13
+ >
14
+ <el-form>
15
+ <div style="padding: 10px 0px 30px 0px">
16
+ <el-row>
17
+ <el-col
18
+ :span="9"
19
+ style="padding-right:125px"
20
+ >
21
+ {{ $t('bpm.back_anyLink.choice_activity') }}
22
+ </el-col>
23
+ </el-row>
24
+ <el-row
25
+ type="flex"
26
+ justify="center"
27
+ >
28
+ <span style="padding-right:5px;line-height:2;">
29
+ {{ $t('bpm.back_anyLink.activity_name') }}
30
+ </span>
31
+
32
+ <el-select
33
+ style="width:200px"
34
+ @change="handleChange"
35
+ v-model="value"
36
+ :placeholder="$t('bpm.back_anyLink.please_select')"
37
+ >
38
+ <el-option
39
+ v-for="item in options"
40
+ :key="item.value"
41
+ :label="item.label"
42
+ :value="item.value"
43
+ >
44
+ </el-option>
45
+ </el-select>
46
+ </el-row>
47
+ </div>
48
+ <div>
49
+ <el-row>
50
+ <el-col
51
+ :span="9"
52
+ style="padding-right:125px"
53
+ >{{
54
+ $t('bpm.back_anyLink.for_personnel')
55
+ }}</el-col>
56
+ </el-row>
57
+ <el-table
58
+ :data="initialTableData"
59
+ tooltip-effect="dark"
60
+ stripe
61
+ height="150"
62
+ @select="handleSelect"
63
+ @select-all="handleSelectAll"
64
+ ref="eltableCurrentRow"
65
+ >
66
+ <el-table-column
67
+ type="selection"
68
+ width="55"
69
+ > </el-table-column>
70
+ <el-table-column
71
+ prop="name"
72
+ :label="$t('bpm.back_anyLink.name')"
73
+ >
74
+ <template slot-scope="scope">
75
+ <div
76
+ :title="scope.row.name"
77
+ class="cell-hidden"
78
+ >
79
+ {{ scope.row.name }}
80
+ </div>
81
+ </template>
82
+ </el-table-column>
83
+ <el-table-column
84
+ prop="code"
85
+ :label="$t('bpm.back_anyLink.coding')"
86
+ >
87
+ <template slot-scope="scope">
88
+ <div
89
+ :title="scope.row.code"
90
+ class="cell-hidden"
91
+ >
92
+ {{ scope.row.code }}
93
+ </div>
94
+ </template>
95
+ </el-table-column>
96
+ <el-table-column
97
+ prop="deptName"
98
+ :label="$t('bpm.back_anyLink.department')"
99
+ >
100
+ <template slot-scope="scope">
101
+ <div
102
+ :title="scope.row.deptName"
103
+ class="cell-hidden"
104
+ >
105
+ {{ scope.row.deptName }}
106
+ </div>
107
+ </template>
108
+ </el-table-column>
109
+ </el-table>
110
+ </div>
111
+ <div style="padding: 20px 0px 0px 0px">
112
+ <el-row>
113
+ <el-col
114
+ :span="9"
115
+ style="padding-right:125px"
116
+ >{{
117
+ $t('bpm.back_anyLink.selected_personnel_list')
118
+ }}</el-col>
119
+ </el-row>
120
+ <el-table
121
+ :data="selectTableData"
122
+ tooltip-effect="dark"
123
+ stripe
124
+ height="150"
125
+ @row-click="handleRowClick"
126
+ >
127
+ <el-table-column width="55"></el-table-column>
128
+ <el-table-column
129
+ prop="name"
130
+ :label="$t('bpm.back_anyLink.name')"
131
+ >
132
+ <template slot-scope="scope">
133
+ <div
134
+ :title="scope.row.name"
135
+ class="cell-hidden"
136
+ >
137
+ {{ scope.row.name }}
138
+ </div>
139
+ </template>
140
+ </el-table-column>
141
+ <el-table-column
142
+ prop="code"
143
+ :label="$t('bpm.back_anyLink.coding')"
144
+ >
145
+ <template slot-scope="scope">
146
+ <div
147
+ :title="scope.row.code"
148
+ class="cell-hidden"
149
+ >
150
+ {{ scope.row.code }}
151
+ </div>
152
+ </template>
153
+ </el-table-column>
154
+ <el-table-column
155
+ prop="deptName"
156
+ :label="$t('bpm.back_anyLink.department')"
157
+ >
158
+ <template slot-scope="scope">
159
+ <div
160
+ :title="scope.row.deptName"
161
+ class="cell-hidden"
162
+ >
163
+ {{ scope.row.deptName }}
164
+ </div>
165
+ </template>
166
+ </el-table-column>
167
+ </el-table>
168
+ </div>
169
+ </el-form>
170
+
171
+ <span
172
+ slot="footer"
173
+ class="dialog-footer"
174
+ >
175
+ <el-button @click="handleClose">{{
176
+ $t('base.button.cancel')
177
+ }}</el-button>
178
+ <el-button
179
+ type="primary"
180
+ @click="handleSave"
181
+ >{{
182
+ $t('base.button.ok')
183
+ }}</el-button>
184
+ </span>
185
+ </el-dialog>
186
+ </div>
187
+ </template>
188
+ <script>
189
+ import {
190
+ Dialog,
191
+ Aside,
192
+ Main,
193
+ Container,
194
+ Button,
195
+ Form,
196
+ FormItem,
197
+ Col,
198
+ Row,
199
+ Input,
200
+ Tabs,
201
+ TabPane
202
+ } from 'element-ui';
203
+ import axios from 'cloud-module-base/packages/httpConfig/http';
204
+ export default {
205
+ name: 'bpm-back-anylink',
206
+ components: {
207
+ 'el-dialog': Dialog,
208
+ 'el-aside': Aside,
209
+ 'el-main': Main,
210
+ 'el-container': Container,
211
+ 'el-button': Button,
212
+ 'el-form': Form,
213
+ 'el-form-item': FormItem,
214
+ 'el-col': Col,
215
+ 'el-row': Row,
216
+ 'el-input': Input,
217
+ 'el-tabs': Tabs,
218
+ 'el-tab-pane': TabPane
219
+ },
220
+ //父组件传过来的数据属性
221
+ props: {
222
+ dialogVisible: {
223
+ type: Boolean,
224
+ required: true
225
+ },
226
+ ruleEngine: {
227
+ type: Object,
228
+ required: true
229
+ }
230
+ },
231
+ data () {
232
+ return {
233
+ //默认参数
234
+ opt: {
235
+ title: this.$t('bpm.back_anyLink.dialog_title')
236
+ },
237
+ //流程key
238
+ toTaskDefKey: '',
239
+ //初始值
240
+ initialTableData: [],
241
+ //选中的值
242
+ selectTableData: [],
243
+ //节点相关数据(节点,待选人员,节点审批方式)
244
+ resultData: {},
245
+ //下拉框
246
+ options: [],
247
+ //下拉框初始值
248
+ value: '',
249
+ //节点批准类型
250
+ approveType: ''
251
+ };
252
+ },
253
+ created () { },
254
+ methods: {
255
+ handleRowClick (row, event, column) {
256
+ this.removeData(this.selectTableData, row);
257
+ },
258
+ ////取消已选中的
259
+ removeData (userData, row) {
260
+ //取消已选中的人员
261
+ var index = -1;
262
+ for (var i = 0; i < userData.length; i++) {
263
+ if (userData[i].code == row.code) {
264
+ index = i;
265
+ }
266
+ }
267
+ if (index != -1) {
268
+ userData.splice(index, 1);
269
+ }
270
+ //更新待选的人员
271
+ for (var i = 0; i < this.initialTableData.length; i++) {
272
+ if (this.initialTableData[i].code == row.code) {
273
+ this.$refs.eltableCurrentRow.toggleRowSelection(
274
+ this.initialTableData[i],
275
+ false
276
+ );
277
+ }
278
+ }
279
+ },
280
+
281
+ //全部取消或者删除
282
+ handleSelectAll (select) {
283
+ var _this = this;
284
+ if ('onlyApprove' == _this.approveType) {
285
+ this.selectTableData = [];
286
+ this.$refs.eltableCurrentRow.clearSelection();
287
+ } else {
288
+ if (select.length > 0) {
289
+ // 全选
290
+ select.forEach(element => {
291
+ if (_this.indexOfselectTableData(element) == -1) {
292
+ _this.selectTableData.push(element);
293
+ }
294
+ });
295
+ } else {
296
+ //全取消
297
+ _this.initialTableData.forEach(element => {
298
+ var index = _this.indexOfselectTableData(element);
299
+ if (index != -1) {
300
+ _this.selectTableData.splice(index, 1);
301
+ }
302
+ });
303
+ }
304
+ }
305
+ },
306
+ handleSelect (select, row) {
307
+ var _this = this;
308
+
309
+ // 单人审批 只能选择一个
310
+ if ('onlyApprove' == _this.approveType) {
311
+ // 清楚数据
312
+ _this.selectTableData = [];
313
+ _this.$refs.eltableCurrentRow.clearSelection();
314
+ if (_this.selectRow(select, row)) {
315
+ _this.$refs.eltableCurrentRow.toggleRowSelection(row);
316
+ }
317
+ }
318
+ if (_this.selectRow(select, row)) {
319
+ // 选中
320
+ //判断已选列表中是否存在该条数据
321
+ if (_this.indexOfselectTableData(row) == -1) {
322
+ _this.selectTableData.push(row);
323
+ }
324
+ } else {
325
+ //取消
326
+ //取消已选中的列表数据
327
+ var index = _this.indexOfselectTableData(row);
328
+ if (index != -1) {
329
+ _this.selectTableData.splice(index, 1);
330
+ }
331
+ }
332
+ },
333
+ //是选中还是取消
334
+ selectRow (select, row) {
335
+ return select.some(element => {
336
+ if (element.code == row.code) {
337
+ return true;
338
+ }
339
+ });
340
+ },
341
+ // 是否已选中该条数据
342
+ indexOfselectTableData (row) {
343
+ var index = -1;
344
+ var _this = this;
345
+ if (_this.selectTableData.length > 0) {
346
+ for (var i = 0; i < _this.selectTableData.length; i++) {
347
+ if (_this.selectTableData[i].code == row.code) {
348
+ index = i;
349
+ return index;
350
+ }
351
+ }
352
+ }
353
+ return index;
354
+ },
355
+ //下拉框change事件
356
+ handleChange (val) {
357
+ // var = 选中的label
358
+ var _this = this;
359
+ _this.selectTableData = [];
360
+ _this.toTaskDefKey = val;
361
+ _this.initialTableData = [];
362
+ if (_this.resultData[val] != null) {
363
+ _this.resultData[val].forEach(element => {
364
+ var obj = {};
365
+ obj.name = element.name;
366
+ obj.code = element.code;
367
+ obj.deptName = element.deptName;
368
+ _this.initialTableData.push(obj);
369
+ });
370
+ // 获取每个节点的审批方式
371
+ _this.approveType = _this.resultData.approveName[val];
372
+ }
373
+ },
374
+ openDialog () {
375
+ var _this = this;
376
+ _this.procInstId = _this.ruleEngine.runtime.mainForm.procInstId;
377
+ _this.requestData();
378
+ },
379
+ //关闭对话框
380
+ handleClose () {
381
+ this.options = [];
382
+ this.$emit('dialog-close', this.dialogVisible);
383
+ },
384
+ requestData () {
385
+ var _this = this;
386
+ axios['bpm-engine']
387
+ .post(
388
+ '/api/engine/bpm/query/processedNode/' + _this.procInstId,
389
+ _this.ruleEngine
390
+ )
391
+ .then(function (res) {
392
+ for (var key in res.data.activityName) {
393
+ var obj = {};
394
+ obj.label = res.data.activityName[key];
395
+ obj.value = key;
396
+ _this.options.push(obj);
397
+ }
398
+
399
+ //下拉框初始化选中数据
400
+ _this.value = _this.options[0].value;
401
+ _this.resultData = res.data;
402
+ _this.handleChange(_this.value);
403
+ })
404
+ .catch(function (err) {
405
+ console.log(err);
406
+ });
407
+ },
408
+ handleSave () {
409
+ var _this = this;
410
+ if (_this.selectTableData.length == 0) {
411
+ _this.$message.warning(
412
+ _this.$i18n.t('bpm.back_anyLink.please_personnel')
413
+ );
414
+ return;
415
+ }
416
+ var codes = [];
417
+ _this.selectTableData.forEach(element => {
418
+ codes.push(element.code);
419
+ });
420
+ _this.ruleEngine['resultCodes'] = codes.join(',');
421
+ _this.ruleEngine['resultToTaskDefKey'] = _this.toTaskDefKey;
422
+ _this.$emit('dialog-save', _this.ruleEngine);
423
+ _this.options = [];
424
+ }
425
+ },
426
+ mounted () { }
427
+ };
428
+ </script>
@@ -0,0 +1,7 @@
1
+ import bpmBackAnylink from './bpm-back-anylink-dialog.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmBackAnylink.install = function(Vue) {
5
+ Vue.component(bpmBackAnylink.name, bpmBackAnylink);
6
+ };
7
+ export default bpmBackAnylink;
@@ -0,0 +1 @@
1
+ ### 特送对话框
@@ -0,0 +1,238 @@
1
+ <template>
2
+ <el-col style="text-align:left">
3
+ <el-button
4
+ style="margin-top:5px;"
5
+ v-for="bpmBtn in MeritBPM.bpmBtns"
6
+ :key="bpmBtn.id"
7
+ :type="bpmBtn.type"
8
+ v-prevent-re-click
9
+ :class="bpmBtn.id"
10
+ @click="BPMEventBus('doSend', bpmBtn)"
11
+ >{{ bpmBtn.name }}</el-button>
12
+ <bpm-user-select
13
+ :dialogVisible="MeritBPM.userSelectDialogVisible"
14
+ :ruleEngine="ruleEngine"
15
+ @dialog-close="BPMEventBus('bpmUserSelectClose', ruleEngine)"
16
+ @dialog-save="BPMEventBus('bpmUserSelectSave', ruleEngine)"
17
+ />
18
+ <bpm-opinion
19
+ :dialogVisible="MeritBPM.opinionDialogVisible"
20
+ :ruleEngine="ruleEngine"
21
+ @dialog-close="BPMEventBus('bpmOpinionClose', ruleEngine)"
22
+ @dialog-save="BPMEventBus('bpmOpinionSave', ruleEngine)"
23
+ />
24
+ <!-- 特送对话框 -->
25
+ <bpm-jump
26
+ :dialogVisible="MeritBPM.bpmJumpDialogVisible"
27
+ :ruleEngine="ruleEngine"
28
+ @dialog-close="BPMEventBus('bpmJumpClose', ruleEngine)"
29
+ @dialog-save="BPMEventBus('bpmJumpSave', ruleEngine)"
30
+ >
31
+ </bpm-jump>
32
+
33
+ <!-- 特送管理对话框 -->
34
+ <bpm-jump-latest
35
+ :dialogVisible="MeritBPM.bpmJumpManagementDialogVisible"
36
+ :ruleEngine="ruleEngine"
37
+ @dialog-close="BPMEventBus('bpmJumpManagementClose', ruleEngine)"
38
+ @dialog-save="BPMEventBus('bpmJumpManagementSave', ruleEngine)"
39
+ >
40
+ </bpm-jump-latest>
41
+
42
+ <!-- 返回任意环节对话框 -->
43
+ <bpm-back-anylink
44
+ :dialogVisible="MeritBPM.bpmAnyLink"
45
+ :ruleEngine="ruleEngine"
46
+ @dialog-close="BPMEventBus('bpmRetRandomNodeStatusClose', ruleEngine)"
47
+ @dialog-save="BPMEventBus('bpmRetRandomNodeStatusSave', ruleEngine)"
48
+ >
49
+ </bpm-back-anylink>
50
+ <!--送阅知-->
51
+ <bpm-send-read
52
+ :dialogVisible="MeritBPM.sendReadDialogVisible"
53
+ :ruleEngine="ruleEngine"
54
+ @dialog-close="BPMEventBus('bpmSendReadClose', ruleEngine)"
55
+ @dialog-save="BPMEventBus('bpmSendReadSave', ruleEngine)"
56
+ >
57
+ </bpm-send-read>
58
+ <!--阅知意见-->
59
+ <bpm-send-read-opinion
60
+ :dialogVisible="MeritBPM.sednReadOpinionDialogVisible"
61
+ :ruleEngine="ruleEngine"
62
+ @dialog-close="BPMEventBus('bpmSendReadOpinionClose', ruleEngine)"
63
+ @dialog-save="BPMEventBus('bpmSendReadOpinionSave', ruleEngine)"
64
+ ></bpm-send-read-opinion>
65
+ <!--转发意见-->
66
+ <bpm-sign-opinion
67
+ :dialogVisible="MeritBPM.signOpinionDialogVisible"
68
+ :ruleEngine="ruleEngine"
69
+ @dialog-close="BPMEventBus('bpmSignOpinionClose', ruleEngine)"
70
+ @dialog-save="BPMEventBus('bpmSignOpinionSave', ruleEngine)"
71
+ ></bpm-sign-opinion>
72
+ <!--转发-->
73
+ <bpm-sign-select
74
+ :dialogVisible="MeritBPM.signDialogVisible"
75
+ :ruleEngine="ruleEngine"
76
+ @dialog-close="BPMEventBus('bpmSignClose', ruleEngine)"
77
+ @dialog-save="BPMEventBus('bpmSignSave', ruleEngine)"
78
+ ></bpm-sign-select>
79
+ </el-col>
80
+ </template>
81
+ <script>
82
+ import { MeritBPM, BPMEventBus } from '../utils/merit-bpm.js';
83
+ import axios from 'cloud-module-base/packages/httpConfig/http';
84
+ import { preventReClick } from 'cloud-module-base/static/js/utils/preventReClick';
85
+ export default {
86
+ name: 'bpm-form-tools',
87
+ data () {
88
+ return {
89
+ // repetFlag: true,
90
+ MeritBPM,
91
+ bpmBtn: {},
92
+ ruleEngine: {
93
+ businessId: '', //流程业务数据id
94
+ procInstId: undefined, //流程实例id
95
+ undoId: '' //待办业务id
96
+ },
97
+ flag: false
98
+ };
99
+ },
100
+ props: {
101
+ //流程定义id
102
+ procDefKey: {
103
+ type: String,
104
+ required: true
105
+ }
106
+ },
107
+ created () {
108
+ Object.assign(this.ruleEngine, { procDefKey: this.procDefKey });
109
+ let id = MeritBPM.getUrlParameter('id') || '';
110
+ let undoId = MeritBPM.getUrlParameter('undoId') || ''; //截取表单url中undoId, add by zhangyan,
111
+ let params = MeritBPM.getUrlParameter('params') || ''; // 截取路径中传入的参数
112
+ //打开表单之前,触发外层的init事件。业务模块获取业务数据对象
113
+ this.$emit('init', {
114
+ id: id.replace('businessId', ''),
115
+ undoId: undoId.replace('undoId', ''), //add by zhangyan
116
+ params: params.replace('params', ''),
117
+ callback: this.bpmInit
118
+ });
119
+ },
120
+ methods: {
121
+ BPMEventBus,
122
+ //初始化表单,返回值为业务数据对象
123
+ bpmInit (businessData) {
124
+ Object.assign(this.ruleEngine, businessData);
125
+ if (businessData.id == null || businessData.id == '') {
126
+ this.MeritBPM.initRuleEngine(this);
127
+ } else {
128
+ this.ruleEngine.businessId = businessData.id;
129
+ this.ruleEngine.undoId = businessData.undoId; //add by zhangyan
130
+ this.MeritBPM.runRuleEngine(this, {}, {});
131
+ }
132
+ },
133
+ getEventSendRead () { },
134
+
135
+ getBpmVar () {
136
+ return this.ruleEngine;
137
+ },
138
+ opinionCallback () {
139
+ this.$emit('opinion-Callback');
140
+ },
141
+ bpmAddOrUpdate (bpmBtn) {
142
+ var _this = this;
143
+ // 初始化
144
+ if (_this.ruleEngine.procInstId != null) {
145
+ //保存之前判断版本号是否一致
146
+ var bpmVersion = _this.ruleEngine.runtime.mainForm.bpmVersion;
147
+ var businessId = _this.ruleEngine.businessId;
148
+ axios['bpm-engine']
149
+ .post(
150
+ '/api/engine/bpm/process/version/' + businessId + '/' + bpmVersion
151
+ )
152
+ .then(function (res) {
153
+ if (res.data.isDifferent == 'NoBusinessData') {
154
+ _this.$alert('业务数据不存在!', '警告', {
155
+ confirmButtonText: '确定',
156
+ type: 'warning',
157
+ callback: action => { }
158
+ });
159
+ } else if (res.data.isDifferent) {
160
+ _this.$alert(
161
+ '数据已被' + res.data.lockUserName + '修改!',
162
+ '警告',
163
+ {
164
+ confirmButtonText: '确定',
165
+ type: 'warning',
166
+ callback: action => { }
167
+ }
168
+ );
169
+ } else {
170
+ //业务应用保存数据的方法,保存后回调方法
171
+ _this.$emit('save', _this.bpmSaveAfter, bpmBtn);
172
+ _this.flag = true;
173
+ }
174
+ })
175
+ .catch(function (err) {
176
+ console.log(err);
177
+ });
178
+ } else {
179
+ //业务应用保存数据的方法,保存后回调方法
180
+ _this.$emit('save', _this.bpmSaveAfter, bpmBtn);
181
+ _this.flag = true;
182
+ }
183
+ },
184
+
185
+ bpmSaveAfter (data, Func) {
186
+ let _this = this;
187
+ this.customFun = Func;
188
+ Object.assign(this.ruleEngine, data);
189
+ this.ruleEngine.businessId = data.id;
190
+ // if (!this.ruleEngine.procInstId && !_this.repetFlag) {
191
+ // return;
192
+ // }
193
+ //如果没有流程实例id 创建流程
194
+ if (this.bpmBtn.id == 'bpmSaveOrUpdateBtn') {
195
+ this.$message.success(_this.$t('base.operation.save_success'));
196
+ }
197
+ if (
198
+ this.ruleEngine.procInstId == undefined ||
199
+ this.ruleEngine.procInstId == ''
200
+ ) {
201
+ this.MeritBPM.startProcess(this, this.bpmBtn, function (params) {
202
+ _this.bpmBtn.isSave = '1';
203
+ _this.MeritBPM.doSend(_this, _this.bpmBtn);
204
+ });
205
+ this.flag = false;
206
+ } else {
207
+ if (this.bpmBtn.id == 'bpmSaveOrUpdateBtn') {
208
+ // 点击保存按钮
209
+ this.MeritBPM.runRuleEngine(this, _this.bpmBtn, {});
210
+ } else {
211
+ //点击填写意见、发送按钮,更新流程操作按钮
212
+ this.bpmBtn.isSave = '1';
213
+ this.MeritBPM.doSend(this, this.bpmBtn);
214
+ }
215
+ }
216
+ this.flag = false;
217
+ },
218
+
219
+ // 判断是否存在回调函数,如果存在,回调
220
+ bpmCustomFunction () {
221
+ this.flag = false;
222
+ if (this.customFun != undefined && typeof this.customFun == 'function') {
223
+ this.customFun.apply();
224
+ }
225
+ },
226
+ //关闭按钮事件
227
+ bpmClose () {
228
+ //关闭按钮事件,如果有父窗口,则调用父窗口的监听事件
229
+ if (window.opener && window.opener.refreshBpmGrid) {
230
+ window.opener.refreshBpmGrid();
231
+ window.close();
232
+ } else {
233
+ window.close();
234
+ }
235
+ }
236
+ }
237
+ };
238
+ </script>
@@ -0,0 +1,7 @@
1
+ import bpmFormTools from './bpm-form-tools.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmFormTools.install = function(Vue) {
5
+ Vue.component(bpmFormTools.name, bpmFormTools);
6
+ };
7
+ export default bpmFormTools;
@@ -0,0 +1,5 @@
1
+ 流程表单工具组件
2
+
3
+ 封装表单流程按钮组件
4
+
5
+ 封装意见填写对话框、选人对话框、控制对话框显示