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,378 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :title="opt.title"
5
+ :visible.sync="dialogVisible"
6
+ width="700px"
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 :span="8" style="text-align: left">
18
+ {{ $t('bpm.jump.choice_activity') }}
19
+ </el-col>
20
+ <el-col :span="16">
21
+ <span style="padding-right:5px;line-height:2.5;">
22
+ {{ $t('bpm.jump.activity_name') }}
23
+ </span>
24
+ <el-select
25
+ style="width:200px"
26
+ @change="handleChange"
27
+ v-model="value"
28
+ :placeholder="$t('bpm.jump.please_select')"
29
+ >
30
+ <el-option
31
+ v-for="item in options"
32
+ :key="item.value"
33
+ :label="item.label"
34
+ :value="item.value"
35
+ >
36
+ </el-option>
37
+ </el-select>
38
+ </el-col>
39
+ </el-row>
40
+ </div>
41
+ <div>
42
+ <el-row style="text-align: left">
43
+ <el-col :span="8">{{ $t('bpm.jump.for_personnel') }}</el-col>
44
+ </el-row>
45
+ <el-table
46
+ :data="initialTableData"
47
+ tooltip-effect="dark"
48
+ stripe
49
+ height="150"
50
+ @select="handleSelect"
51
+ @select-all="handleSelectAll"
52
+ ref="eltableCurrentRow"
53
+ >
54
+ <el-table-column type="selection" width="55"> </el-table-column>
55
+ <el-table-column prop="name" :label="$t('bpm.jump.name')">
56
+ </el-table-column>
57
+ <el-table-column prop="code" :label="$t('bpm.jump.coding')">
58
+ </el-table-column>
59
+ <el-table-column prop="deptName" :label="$t('bpm.jump.department')">
60
+ <template slot-scope="scope">
61
+ <div :title="scope.row.deptName" class="cell-hidden">
62
+ {{ scope.row.deptName }}
63
+ </div>
64
+ </template>
65
+ </el-table-column>
66
+ </el-table>
67
+ </div>
68
+ <div style="padding: 20px 0px 0px 0px">
69
+ <el-row style="text-align: left">
70
+ <el-col :span="8">{{
71
+ $t('bpm.jump.selected_personnel_list')
72
+ }}</el-col>
73
+ </el-row>
74
+ <el-table
75
+ :data="selectTableData"
76
+ tooltip-effect="dark"
77
+ stripe
78
+ height="150"
79
+ @row-click="handleRowClick"
80
+ >
81
+ <el-table-column width="55"></el-table-column>
82
+ <el-table-column prop="name" :label="$t('bpm.jump.name')">
83
+ </el-table-column>
84
+ <el-table-column prop="code" :label="$t('bpm.jump.coding')">
85
+ </el-table-column>
86
+ <el-table-column prop="deptName" :label="$t('bpm.jump.department')">
87
+ <template slot-scope="scope">
88
+ <div :title="scope.row.deptName" class="cell-hidden">
89
+ {{ scope.row.deptName }}
90
+ </div>
91
+ </template>
92
+ </el-table-column>
93
+ </el-table>
94
+ </div>
95
+ </el-form>
96
+ <span slot="footer" class="dialog-footer">
97
+ <el-button @click="handleClose">{{
98
+ $t('base.button.cancel')
99
+ }}</el-button>
100
+ <el-button type="primary" @click="handleSave">{{
101
+ $t('base.button.ok')
102
+ }}</el-button>
103
+ </span>
104
+ </el-dialog>
105
+ </div>
106
+ </template>
107
+ <script>
108
+ import {
109
+ Dialog,
110
+ Aside,
111
+ Main,
112
+ Container,
113
+ Button,
114
+ Form,
115
+ FormItem,
116
+ Col,
117
+ Row,
118
+ Input,
119
+ Tabs,
120
+ TabPane
121
+ } from 'element-ui';
122
+ import axios from 'cloud-module-base/packages/httpConfig/http';
123
+ export default {
124
+ name: 'bpm-jump',
125
+ components: {
126
+ 'el-dialog': Dialog,
127
+ 'el-aside': Aside,
128
+ 'el-main': Main,
129
+ 'el-container': Container,
130
+ 'el-button': Button,
131
+ 'el-form': Form,
132
+ 'el-form-item': FormItem,
133
+ 'el-col': Col,
134
+ 'el-row': Row,
135
+ 'el-input': Input,
136
+ 'el-tabs': Tabs,
137
+ 'el-tab-pane': TabPane
138
+ },
139
+ //父组件传过来的数据属性
140
+ props: {
141
+ dialogVisible: {
142
+ type: Boolean,
143
+ required: true
144
+ },
145
+ ruleEngine: {
146
+ type: Object,
147
+ required: true
148
+ }
149
+ },
150
+ data() {
151
+ return {
152
+ //默认参数
153
+ opt: {
154
+ title: this.$t('bpm.jump.dialog_title')
155
+ },
156
+ //业务id 从父组件ruleEngine中runtime->mainFrom中获取businessId = ruleEngine.runtime.mainForm.businessId
157
+ businessId: '',
158
+ //流程key
159
+ toTaskDefKey: '',
160
+ //初始值
161
+ initialTableData: [],
162
+ //选中的值
163
+ selectTableData: [],
164
+ //下拉框
165
+ options: [],
166
+ //下拉框初始值
167
+ value: '',
168
+ //批准类型
169
+ approveType: '',
170
+ currentRuleEngine: {}
171
+ };
172
+ },
173
+ created() {},
174
+ methods: {
175
+ handleRowClick(row, event, column) {
176
+ this.removeData(this.selectTableData, row);
177
+ },
178
+ ////取消已选中的
179
+ removeData(userData, row) {
180
+ //取消已选中的人员
181
+ var index = -1;
182
+ for (var i = 0; i < userData.length; i++) {
183
+ if (userData[i].code == row.code) {
184
+ index = i;
185
+ }
186
+ }
187
+ if (index != -1) {
188
+ userData.splice(index, 1);
189
+ }
190
+ //更新待选的人员
191
+ for (var i = 0; i < this.initialTableData.length; i++) {
192
+ if (this.initialTableData[i].code == row.code) {
193
+ this.$refs.eltableCurrentRow.toggleRowSelection(
194
+ this.initialTableData[i],
195
+ false
196
+ );
197
+ }
198
+ }
199
+ },
200
+
201
+ //全部取消或者删除
202
+ handleSelectAll(select) {
203
+ var _this = this;
204
+ if (
205
+ 'onlyApprove' ==
206
+ _this.currentRuleEngine.runtime.nextNodes[0].approve.type
207
+ ) {
208
+ this.selectTableData = [];
209
+ this.$refs.eltableCurrentRow.clearSelection();
210
+ } else {
211
+ if (select.length > 0) {
212
+ // 全选
213
+ select.forEach(element => {
214
+ if (_this.indexOfselectTableData(element) == -1) {
215
+ _this.selectTableData.push(element);
216
+ }
217
+ });
218
+ } else {
219
+ //全取消
220
+ _this.initialTableData.forEach(element => {
221
+ var index = _this.indexOfselectTableData(element);
222
+ if (index != -1) {
223
+ _this.selectTableData.splice(index, 1);
224
+ }
225
+ });
226
+ }
227
+ }
228
+ },
229
+ handleSelect(select, row) {
230
+ var _this = this;
231
+
232
+ // 单人审批 只能选择一个
233
+ if (
234
+ 'onlyApprove' ==
235
+ _this.currentRuleEngine.runtime.nextNodes[0].approve.type
236
+ ) {
237
+ // 清楚数据
238
+ _this.selectTableData = [];
239
+ _this.$refs.eltableCurrentRow.clearSelection();
240
+ if (_this.selectRow(select, row)) {
241
+ _this.$refs.eltableCurrentRow.toggleRowSelection(row);
242
+ }
243
+ }
244
+ if (_this.selectRow(select, row)) {
245
+ // 选中
246
+ //判断已选列表中是否存在该条数据
247
+ if (_this.indexOfselectTableData(row) == -1) {
248
+ _this.selectTableData.push(row);
249
+ }
250
+ } else {
251
+ //取消
252
+ //取消已选中的列表数据
253
+ var index = _this.indexOfselectTableData(row);
254
+ if (index != -1) {
255
+ _this.selectTableData.splice(index, 1);
256
+ }
257
+ }
258
+ },
259
+ //是选中还是取消
260
+ selectRow(select, row) {
261
+ return select.some(element => {
262
+ if (element.code == row.code) {
263
+ return true;
264
+ }
265
+ });
266
+ },
267
+ // 是否已选中该条数据
268
+ indexOfselectTableData(row) {
269
+ var index = -1;
270
+ var _this = this;
271
+ if (_this.selectTableData.length > 0) {
272
+ for (var i = 0; i < _this.selectTableData.length; i++) {
273
+ if (_this.selectTableData[i].code == row.code) {
274
+ index = i;
275
+ return index;
276
+ }
277
+ }
278
+ }
279
+ return index;
280
+ },
281
+ //下拉框change事件
282
+ handleChange(val) {
283
+ // var = 选中的label
284
+ var _this = this;
285
+ _this.selectTableData = [];
286
+ _this.toTaskDefKey = val;
287
+ _this.initialTableData = [];
288
+ _this.ruleEngine['bpmIsLatest'] = false;
289
+ // 为了解决入参过多的问题
290
+ let temRuleEngine = JSON.parse(JSON.stringify(_this.ruleEngine));
291
+ if (temRuleEngine.runtime) {
292
+ temRuleEngine.runtime = {};
293
+ }
294
+ if (temRuleEngine.opinion) {
295
+ temRuleEngine.opinion = {};
296
+ }
297
+ if (temRuleEngine.actors) {
298
+ temRuleEngine.actors = {};
299
+ }
300
+ axios['bpm-engine']
301
+ .post(
302
+ '/api/engine/bpm/query/jump/candidate/' +
303
+ _this.businessId +
304
+ '/' +
305
+ _this.toTaskDefKey,
306
+ temRuleEngine
307
+ )
308
+ .then(function(res) {
309
+ if (res.data.runtime.nextNodes[0].bpmUsers.length > 0) {
310
+ res.data.runtime.nextNodes[0].bpmUsers.forEach(element => {
311
+ var obj = {};
312
+ obj.name = element.name;
313
+ obj.code = element.code;
314
+ obj.deptName = element.deptName;
315
+ _this.initialTableData.push(obj);
316
+ });
317
+ _this.currentRuleEngine = res.data;
318
+ _this.approveType = res.data.approve.type;
319
+ }
320
+ })
321
+ .catch(function(err) {
322
+ console.log(err);
323
+ });
324
+ },
325
+ openDialog() {
326
+ var _this = this;
327
+ _this.businessId = _this.ruleEngine.runtime.mainForm.businessId;
328
+ _this.requestData();
329
+ },
330
+ //关闭对话框
331
+ handleClose() {
332
+ this.options = [];
333
+ this.$emit('dialog-close', this.dialogVisible);
334
+ },
335
+ requestData() {
336
+ var _this = this;
337
+ axios['bpm-engine']
338
+ .post('/api/engine/bpm/query/jump/all/usertasks/' + _this.businessId, {
339
+ bpmIsLatest: false
340
+ })
341
+ .then(function(res) {
342
+ for (var key in res.data) {
343
+ var obj = {};
344
+ obj.label = res.data[key];
345
+ obj.value = key;
346
+ _this.options.push(obj);
347
+ }
348
+
349
+ //下拉框初始化选中数据
350
+ _this.value = _this.options[0].value;
351
+ _this.handleChange(_this.value);
352
+ })
353
+ .catch(function(err) {
354
+ console.log(err);
355
+ });
356
+ },
357
+ handleSave() {
358
+ var _this = this;
359
+ if (_this.selectTableData.length == 0) {
360
+ _this.$message.warning(_this.$i18n.t('bpm.jump.please_personnel'));
361
+ return;
362
+ }
363
+ var codes = [];
364
+ _this.selectTableData.forEach(element => {
365
+ codes.push(element.code);
366
+ });
367
+
368
+ _this.ruleEngine[
369
+ _this.toTaskDefKey + '_' + _this.approveType
370
+ ] = codes.join(',');
371
+ _this.ruleEngine.toTaskDefKey = _this.toTaskDefKey;
372
+ _this.$emit('dialog-save', _this.ruleEngine);
373
+ _this.options = [];
374
+ }
375
+ },
376
+ mounted() {}
377
+ };
378
+ </script>
@@ -0,0 +1,7 @@
1
+ import bpmJumpDialog from './bpm-jump-dialog.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmJumpDialog.install = function(Vue) {
5
+ Vue.component(bpmJumpDialog.name, bpmJumpDialog);
6
+ };
7
+ export default bpmJumpDialog;
@@ -0,0 +1 @@
1
+ ### 特送对话框
@@ -0,0 +1,91 @@
1
+ <template>
2
+ <!--
3
+ load:加载子树数据方法 当lazy为true时可用
4
+ lazy:默认为false
5
+ data:数据展示
6
+ node-key:树节点唯一标识
7
+ @node-click:节点被点击时回调
8
+ default-expanded-keys:默认展开节点的key的数组
9
+ -->
10
+ <el-tree
11
+ class="flow-tree"
12
+ :load="loadNode"
13
+ :data="treeNode"
14
+ lazy
15
+ node-key="id"
16
+ highlight-current
17
+ ref="tree"
18
+ :props="treeProps"
19
+ @node-click="handelrNodeClick"
20
+ :default-expanded-keys="defaultExpandedKeys"
21
+ >
22
+ <span class="custom-tree-node cell-hidden" slot-scope="{ node, data }">
23
+ <!-- 通过部门层级选择标签 -->
24
+ <div :title="node.label" class="cell-hidden">
25
+ <span v-if="data.dLevel == 0" class="iconfont icon-jigou "></span>
26
+ <span v-else class="iconfont icon-bumenkaoqin"></span>
27
+ <span :title="node.label">{{ node.label }}</span>
28
+ </div>
29
+ </span>
30
+ </el-tree>
31
+ </template>
32
+ <script>
33
+ import { Tree, Container } from 'element-ui';
34
+ import axios from "cloud-module-base/packages/httpConfig/http";
35
+ export default {
36
+ //初始化数据
37
+ data() {
38
+ return {
39
+ treeNode: [],
40
+ treeData: [],
41
+ defaultExpandedKeys: [],
42
+ treeProps: {
43
+ children: "children", //指定子树为节点对象的某个属性值
44
+ label: "name", //指定节点标签为节点对象的某个属性值
45
+ id: "id"
46
+ },
47
+ id: "-1"
48
+ };
49
+ },
50
+ components: {
51
+ 'el-tree':Tree,
52
+ 'el-container':Container
53
+ },
54
+ //方法
55
+ methods: {
56
+ //请求方法
57
+ loadNode(node, resolve) {
58
+ let _this = this;
59
+ axios['system-manager']
60
+ .post("/api/ou/org/tree", {
61
+ id: node.data.id
62
+ })
63
+ .then(function(res) {
64
+ resolve(res.data);
65
+ if (node.data.length == 0 && res.data.length > 0) {
66
+ _this.defaultExpandedKeys.push(res.data[0].id);
67
+ // _this.$nextTick(() => {
68
+ // _this.$refs.tree.setCurrentKey(res.data[0].id);
69
+ // _this.EventBus.$emit("refreshGrid", res.data[0]); //EventBus事件总线,通过emit方法与父组件沟通。$emit触发当前实例上的所有事件
70
+ // });
71
+ }
72
+ })
73
+ .catch(function(err) {
74
+ console.log(err);
75
+ });
76
+ },
77
+
78
+ //节点点击事件
79
+ handelrNodeClick(data) {
80
+ this.EventBus.$emit("refreshGrid", data);
81
+ }
82
+ },
83
+ //页面渲染之前调用方法 函数
84
+ created() {},
85
+ //页面渲染完成调用方法 函数
86
+ mounted() {}
87
+ };
88
+ </script>
89
+ <style scoped>
90
+
91
+ </style>