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,532 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :title="opt.title"
5
+ :visible.sync="dialogVisible"
6
+ width="900px"
7
+ top="2vh"
8
+ @open="openDialog"
9
+ :before-close="handleClose"
10
+ :close-on-click-modal="false"
11
+ append-to-body
12
+ class="jumpDialog"
13
+ >
14
+ <el-container>
15
+ <el-aside
16
+ style="height:456px;width:65%;margin-right: 0px;margin-left: 0px;background: #e8ecf3"
17
+ >
18
+ <el-container>
19
+ <el-aside
20
+ style="height:456px;width: 35%;max-width: 400px;padding-top:5px;margin:0px;border-radius: 0px;"
21
+ >
22
+ <v-tree />
23
+ </el-aside>
24
+ <!-- 待选择人员列表 -->
25
+ <el-main
26
+ style="height:456px; width: 45%; padding: 0px; margin-left: 2px;"
27
+ >
28
+ <div class="selected-grid">
29
+ <el-row>
30
+ <el-col style="text-align: left;padding: 7px 7px 0 7px">
31
+ {{ $t('bpm.jump.choice_activity') }}
32
+ </el-col>
33
+ </el-row>
34
+ <el-row>
35
+ <el-col align="center"
36
+ >{{ $t('bpm.jump.activity_name') }}
37
+ <el-select
38
+ style="width:200px"
39
+ @change="handleChange"
40
+ v-model="value"
41
+ :placeholder="$t('bpm.jump.please_select')"
42
+ >
43
+ <el-option
44
+ v-for="item in options"
45
+ :key="item.value"
46
+ :label="item.label"
47
+ :value="item.value"
48
+ >
49
+ </el-option>
50
+ </el-select>
51
+ </el-col>
52
+ </el-row>
53
+ <el-row>
54
+ <el-col style="text-align: left;padding: 7px 7px 0 7px">{{
55
+ $t('bpm.jump.for_personnel')
56
+ }}</el-col>
57
+ </el-row>
58
+ <el-table
59
+ :data="initialTableData"
60
+ :height="tableHeight"
61
+ @select="handleSelect"
62
+ ref="eltableCurrentRow"
63
+ @select-all="handleSelectAll"
64
+ >
65
+ <el-table-column type="selection"> </el-table-column>
66
+ <el-table-column prop="name" :label="$t('bpm.jump.name')">
67
+ <template slot-scope="scope">
68
+ <div :title="scope.row.name" class="cell-hidden">
69
+ {{ scope.row.name }}
70
+ </div>
71
+ </template>
72
+ </el-table-column>
73
+ <el-table-column prop="code" :label="$t('bpm.jump.coding')">
74
+ <template slot-scope="scope">
75
+ <div :title="scope.row.code" class="cell-hidden">
76
+ {{ scope.row.code }}
77
+ </div>
78
+ </template>
79
+ </el-table-column>
80
+ <el-table-column
81
+ prop="deptName"
82
+ :label="$t('bpm.jump.department')"
83
+ >
84
+ <template slot-scope="scope">
85
+ <div :title="scope.row.deptName" class="cell-hidden">
86
+ {{ scope.row.deptName }}
87
+ </div>
88
+ </template>
89
+ </el-table-column>
90
+ </el-table>
91
+ <!--tree分页-->
92
+ <el-pagination
93
+ v-if="isShowPagination"
94
+ class="SourceGrid"
95
+ @size-change="handleSizeChange"
96
+ @current-change="handleCurrentChange"
97
+ :current-page="currentPage"
98
+ :page-size="pageSize"
99
+ layout="total, prev, pager, next"
100
+ :total="total"
101
+ :pager-count="pagerCount"
102
+ ></el-pagination>
103
+ <!--下拉框分页-->
104
+ <el-pagination
105
+ v-if="isShowPagination == false"
106
+ class="SourceGrid"
107
+ @size-change="elSelectHandleSizeChange"
108
+ @current-change="elSelectHandleCurrentChange"
109
+ :current-page="currentPage"
110
+ :page-size="pageSize"
111
+ layout="total, prev, pager, next"
112
+ :total="total"
113
+ :pager-count="pagerCount"
114
+ ></el-pagination>
115
+ </div>
116
+ </el-main>
117
+ </el-container>
118
+ </el-aside>
119
+ <!-- 已选择人员列表-->
120
+ <el-main
121
+ style="height: 456px; padding: 0px; width: 35%; margin-left: 10px;"
122
+ >
123
+ <div>
124
+ <el-row style="float:left;padding:7px;">
125
+ {{ $t('bpm.jump.selected_personnel_list') }}
126
+ </el-row>
127
+ <el-table
128
+ :data="selectTableData"
129
+ :height="tableHeight + 85"
130
+ @row-click="handleRowClick"
131
+ >
132
+ <el-table-column prop="name" :label="$t('bpm.jump.name')">
133
+ <template slot-scope="scope">
134
+ <div :title="scope.row.name" class="cell-hidden">
135
+ {{ scope.row.name }}
136
+ </div>
137
+ </template>
138
+ </el-table-column>
139
+ <el-table-column prop="code" :label="$t('bpm.jump.coding')">
140
+ <template slot-scope="scope">
141
+ <div :title="scope.row.code" class="cell-hidden">
142
+ {{ scope.row.code }}
143
+ </div>
144
+ </template>
145
+ </el-table-column>
146
+ <el-table-column
147
+ prop="deptName"
148
+ :label="$t('bpm.jump.department')"
149
+ >
150
+ <template slot-scope="scope">
151
+ <div :title="scope.row.deptName" class="cell-hidden">
152
+ {{ scope.row.deptName }}
153
+ </div>
154
+ </template>
155
+ </el-table-column>
156
+ </el-table>
157
+ </div>
158
+ </el-main>
159
+ </el-container>
160
+ <span slot="footer" class="dialog-footer">
161
+ <el-button @click="handleClose">{{
162
+ $t('base.button.cancel')
163
+ }}</el-button>
164
+ <el-button type="primary" @click="handleSave">{{
165
+ $t('base.button.ok')
166
+ }}</el-button>
167
+ </span>
168
+ </el-dialog>
169
+ </div>
170
+ </template>
171
+ <script>
172
+ import {
173
+ Dialog,
174
+ Aside,
175
+ Main,
176
+ Container,
177
+ Button,
178
+ Form,
179
+ FormItem,
180
+ Col,
181
+ Row,
182
+ Input,
183
+ Tabs,
184
+ TabPane
185
+ } from 'element-ui';
186
+ import axios from 'cloud-module-base/packages/httpConfig/http';
187
+ import tree from './Tree';
188
+ export default {
189
+ name: 'bpm-jump-latest',
190
+ components: {
191
+ 'el-dialog': Dialog,
192
+ 'el-aside': Aside,
193
+ 'el-main': Main,
194
+ 'el-container': Container,
195
+ 'el-button': Button,
196
+ 'el-form': Form,
197
+ 'el-form-item': FormItem,
198
+ 'el-col': Col,
199
+ 'el-row': Row,
200
+ 'el-input': Input,
201
+ 'el-tabs': Tabs,
202
+ 'el-tab-pane': TabPane,
203
+ 'v-tree': tree
204
+ },
205
+ //父组件传过来的数据属性
206
+ props: {
207
+ dialogVisible: {
208
+ type: Boolean,
209
+ required: true
210
+ },
211
+ ruleEngine: {
212
+ type: Object,
213
+ required: true
214
+ }
215
+ },
216
+ data() {
217
+ return {
218
+ currentRuleEngine: {},
219
+ currentPage: 1,
220
+ pageSize: 10,
221
+ pagerCount: 5,
222
+ total: 10,
223
+ tableHeight: 300,
224
+ maxHeight: '483px',
225
+ //默认参数
226
+ opt: {
227
+ title: this.$t('bpm.jump_latest.dialog_title')
228
+ },
229
+ //业务id 3f28804f736ee91401736eec34950000
230
+ businessId: '',
231
+ //初始值
232
+ initialTableData: [],
233
+ //选中的值
234
+ selectTableData: [],
235
+ //下拉框
236
+ options: [],
237
+ value: '',
238
+ isShowPagination: false,
239
+ treeNode: {},
240
+ //流程key
241
+ toTaskDefKey: '',
242
+ //批准类型
243
+ approveType: ''
244
+ };
245
+ },
246
+ created() {
247
+ // this.tableHeight = window.outerHeight > 900 ? 386 : 256;
248
+ },
249
+ methods: {
250
+ //============tree分页===========
251
+ //每页显示数据个数变化时调用
252
+ handleSizeChange(val) {
253
+ this.pageSize = val;
254
+ this.treeClickData();
255
+ },
256
+ //页码变化时调用
257
+ handleCurrentChange(val) {
258
+ this.currentPage = val;
259
+ this.treeClickData();
260
+ },
261
+
262
+ //============下拉框分页===========
263
+ //每页显示数据个数变化时调用
264
+ elSelectHandleSizeChange(val) {
265
+ this.pageSize = val;
266
+ },
267
+ //页码变化时调用
268
+ elSelectHandleCurrentChange(val) {
269
+ this.currentPage = val;
270
+ this.resultDataChange();
271
+ },
272
+ resultDataChange() {
273
+ if (this.initialTableData) {
274
+ var result = this.initialTableData.slice(
275
+ this.pageSize * (this.currentPage - 1),
276
+ this.pageSize * this.currentPage
277
+ );
278
+ this.initialTableData = result;
279
+ } else {
280
+ this.initialTableData = [];
281
+ }
282
+ },
283
+
284
+ handleRowClick(row, event, column) {
285
+ this.removeData(this.selectTableData, row);
286
+ },
287
+
288
+ ////取消已选中的
289
+ removeData(selectTableData, row) {
290
+ let index = this.indexOfselectTableData(row);
291
+ if (index != -1) {
292
+ selectTableData.splice(index, 1);
293
+ }
294
+ //更新待选的人员
295
+ for (var i = 0; i < this.initialTableData.length; i++) {
296
+ if (this.initialTableData[i].code == row.code) {
297
+ this.$refs.eltableCurrentRow.toggleRowSelection(
298
+ this.initialTableData[i],
299
+ false
300
+ );
301
+ }
302
+ }
303
+ },
304
+ //是选中还是取消
305
+ selectRow(select, row) {
306
+ return select.some(element => {
307
+ if (element.code == row.code) {
308
+ return true;
309
+ }
310
+ });
311
+ },
312
+ // 是否已选中该条数据
313
+ indexOfselectTableData(row) {
314
+ var index = -1;
315
+ var _this = this;
316
+ if (_this.selectTableData.length > 0) {
317
+ for (var i = 0; i < _this.selectTableData.length; i++) {
318
+ if (_this.selectTableData[i].code == row.code) {
319
+ index = i;
320
+ return index;
321
+ }
322
+ }
323
+ }
324
+ return index;
325
+ },
326
+
327
+ // 是否已选中该条数据
328
+ indexOfselectTableData2() {
329
+ _this.initialTableData.forEach(element => {
330
+ var index = _this.indexOfselectTableData(element);
331
+ if (index != -1) {
332
+ _this.selectTableData.splice(index, 1);
333
+ }
334
+ });
335
+ },
336
+
337
+ //全选或者全取消
338
+ handleSelectAll(select) {
339
+ var _this = this;
340
+ if (
341
+ 'onlyApprove' ==
342
+ _this.currentRuleEngine.runtime.nextNodes[0].approve.type
343
+ ) {
344
+ this.selectTableData = [];
345
+ this.$refs.eltableCurrentRow.clearSelection();
346
+ } else {
347
+ if (select.length > 0) {
348
+ // 全选
349
+ select.forEach(element => {
350
+ if (_this.indexOfselectTableData(element) == -1) {
351
+ _this.selectTableData.push(element);
352
+ }
353
+ });
354
+ } else {
355
+ //全取消
356
+ _this.initialTableData.forEach(element => {
357
+ var index = _this.indexOfselectTableData(element);
358
+ if (index != -1) {
359
+ _this.selectTableData.splice(index, 1);
360
+ }
361
+ });
362
+ }
363
+ }
364
+ },
365
+
366
+ handleSelect(select, row) {
367
+ var _this = this;
368
+ // 单人审批 只能选择一个
369
+ if (
370
+ 'onlyApprove' ==
371
+ _this.currentRuleEngine.runtime.nextNodes[0].approve.type
372
+ ) {
373
+ // 清楚数据
374
+ _this.selectTableData = [];
375
+ _this.$refs.eltableCurrentRow.clearSelection();
376
+ if (_this.selectRow(select, row)) {
377
+ _this.$refs.eltableCurrentRow.toggleRowSelection(row);
378
+ }
379
+ }
380
+ if (_this.selectRow(select, row)) {
381
+ // 选中
382
+ //判断已选列表中是否存在该条数据
383
+ if (_this.indexOfselectTableData(row) == -1) {
384
+ _this.selectTableData.push(row);
385
+ }
386
+ } else {
387
+ //取消
388
+ //取消已选中的列表数据
389
+ var index = _this.indexOfselectTableData(row);
390
+ if (index != -1) {
391
+ _this.selectTableData.splice(index, 1);
392
+ }
393
+ }
394
+ },
395
+ //下拉框change事件
396
+ handleChange(val) {
397
+ var _this = this;
398
+ _this.selectTableData = [];
399
+ _this.toTaskDefKey = val;
400
+ _this.initialTableData = [];
401
+ _this.ruleEngine['bpmIsLatest'] = true;
402
+ // 为了解决入参过多的问题
403
+ let temRuleEngine = JSON.parse(JSON.stringify(_this.ruleEngine));
404
+ if (temRuleEngine.runtime) {
405
+ temRuleEngine.runtime = {};
406
+ }
407
+ if (temRuleEngine.opinion) {
408
+ temRuleEngine.opinion = {};
409
+ }
410
+ if (temRuleEngine.actors) {
411
+ temRuleEngine.actors = {};
412
+ }
413
+ axios['bpm-engine']
414
+ .post(
415
+ '/api/engine/bpm//query/jump/candidate/' +
416
+ _this.businessId +
417
+ '/' +
418
+ _this.toTaskDefKey,
419
+ temRuleEngine
420
+ )
421
+ .then(function(res) {
422
+ if (res.data.runtime.nextNodes[0].bpmUsers.length > 0) {
423
+ res.data.runtime.nextNodes[0].bpmUsers.forEach(element => {
424
+ var obj = {};
425
+ obj.name = element.name;
426
+ obj.code = element.code;
427
+ obj.deptName = element.deptName;
428
+ _this.initialTableData.push(obj);
429
+ });
430
+ _this.total = _this.initialTableData.length;
431
+ _this.approveType = res.data.approve.type;
432
+ }
433
+
434
+ _this.currentRuleEngine = res.data;
435
+ _this.isShowPagination = false;
436
+ })
437
+ .catch(function(err) {
438
+ console.log(err);
439
+ });
440
+ },
441
+ openDialog() {
442
+ var _this = this;
443
+ _this.businessId = _this.ruleEngine.runtime.mainForm.businessId;
444
+ _this.requestData();
445
+ _this.selectTableData = [];
446
+ },
447
+ //关闭对话框
448
+ handleClose() {
449
+ this.options = [];
450
+ this.$emit('dialog-close', this.dialogVisible);
451
+ },
452
+ requestData() {
453
+ var _this = this;
454
+ axios['bpm-engine']
455
+ .post('/api/engine/bpm/query/jump/all/usertasks/' + _this.businessId, {
456
+ bpmIsLatest: true
457
+ })
458
+ .then(function(res) {
459
+ for (var key in res.data) {
460
+ var obj = {};
461
+ obj.label = res.data[key];
462
+ obj.value = key;
463
+ _this.options.push(obj);
464
+ }
465
+ //初始化选中数据
466
+ _this.value = _this.options[0].value;
467
+ _this.handleChange(_this.value);
468
+ })
469
+ .catch(function(err) {
470
+ console.log(err);
471
+ });
472
+ },
473
+ //保存
474
+ handleSave() {
475
+ var _this = this;
476
+ if (_this.selectTableData.length == 0) {
477
+ _this.$message.warning(_this.$i18n.t('bpm.jump.please_personnel'));
478
+ return;
479
+ }
480
+
481
+ var codes = [];
482
+ _this.selectTableData.forEach(element => {
483
+ codes.push(element.code);
484
+ });
485
+ //
486
+ _this.ruleEngine[
487
+ _this.toTaskDefKey + '_' + _this.approveType
488
+ ] = codes.join(',');
489
+
490
+ //
491
+ _this.ruleEngine.toTaskDefKey = _this.toTaskDefKey;
492
+
493
+ _this.$emit('dialog-save', _this.ruleEngine);
494
+ },
495
+
496
+ treeClickData() {
497
+ var _this = this;
498
+ axios['system-manager']
499
+ .post('/api/ou/emp/listOrgUnselectedUserByOrg', {
500
+ id: _this.treeNode.id,
501
+ dLevelCode: _this.treeNode.dLevelCode,
502
+ page: _this.currentPage,
503
+ rows: _this.pageSize
504
+ })
505
+ .then(function(res) {
506
+ if (res.status == '1') {
507
+ _this.initialTableData = [];
508
+ res.data.rows.forEach(arr => {
509
+ var obj = {};
510
+ obj.name = arr.name;
511
+ obj.code = arr.code;
512
+ obj.deptName = arr.deptName;
513
+ _this.initialTableData.push(obj);
514
+ });
515
+ _this.total = res.data.total;
516
+ _this.isShowPagination = true;
517
+ }
518
+ });
519
+ }
520
+ },
521
+
522
+ mounted() {
523
+ var _this = this;
524
+ this.EventBus.$on('refreshGrid', treeNode => {
525
+ _this.treeNode = treeNode;
526
+ _this.currentPage = 1;
527
+ _this.treeClickData();
528
+ });
529
+ }
530
+ };
531
+ </script>
532
+ <style></style>
@@ -0,0 +1,7 @@
1
+ import bpmJumpLatestDialog from './bpm-jump-latest-dialog.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmJumpLatestDialog.install = function(Vue) {
5
+ Vue.component(bpmJumpLatestDialog.name, bpmJumpLatestDialog);
6
+ };
7
+ export default bpmJumpLatestDialog;
@@ -0,0 +1 @@
1
+ ### 管理特送对话框