cloud-module-bpm 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +20 -0
  2. package/babel.config.js +3 -0
  3. package/dist/cloud-module-bpm.common.js +104959 -0
  4. package/dist/cloud-module-bpm.common.js.map +1 -0
  5. package/dist/cloud-module-bpm.css +1 -0
  6. package/dist/cloud-module-bpm.umd.js +104969 -0
  7. package/dist/cloud-module-bpm.umd.js.map +1 -0
  8. package/dist/cloud-module-bpm.umd.min.js +48 -0
  9. package/dist/cloud-module-bpm.umd.min.js.map +1 -0
  10. package/dist/demo.html +10 -0
  11. package/dist/fonts/element-icons.535877f5.woff +0 -0
  12. package/dist/fonts/element-icons.732389de.ttf +0 -0
  13. package/examples/App.vue +221 -0
  14. package/examples/main.js +17 -0
  15. package/package.json +66 -0
  16. package/packages/bpm-back-anylink-dialog/bpm-back-anylink-dialog.vue +377 -0
  17. package/packages/bpm-back-anylink-dialog/index.js +7 -0
  18. package/packages/bpm-back-anylink-dialog/readme.md +1 -0
  19. package/packages/bpm-form-tools/bpm-form-tools.vue +216 -0
  20. package/packages/bpm-form-tools/index.js +7 -0
  21. package/packages/bpm-form-tools/readme.md +5 -0
  22. package/packages/bpm-grid-buttons/bpm-grid-buttons.vue +140 -0
  23. package/packages/bpm-grid-buttons/index.js +7 -0
  24. package/packages/bpm-grid-buttons/readme.md +5 -0
  25. package/packages/bpm-grid-buttons-new/bpm-grid-buttons-new.vue +189 -0
  26. package/packages/bpm-grid-buttons-new/index.js +7 -0
  27. package/packages/bpm-grid-buttons-new/readme.md +8 -0
  28. package/packages/bpm-jump-dialog/bpm-jump-dialog.vue +311 -0
  29. package/packages/bpm-jump-dialog/index.js +7 -0
  30. package/packages/bpm-jump-dialog/readme.md +1 -0
  31. package/packages/bpm-jump-latest-dialog/Tree.vue +91 -0
  32. package/packages/bpm-jump-latest-dialog/bpm-jump-latest-dialog.vue +453 -0
  33. package/packages/bpm-jump-latest-dialog/index.js +7 -0
  34. package/packages/bpm-jump-latest-dialog/readme.md +1 -0
  35. package/packages/bpm-opinion-dialog/bpm-opinion.vue +291 -0
  36. package/packages/bpm-opinion-dialog/index.js +7 -0
  37. package/packages/bpm-proctrack-dialog/bpm-proctrack.vue +102 -0
  38. package/packages/bpm-proctrack-dialog/index.js +7 -0
  39. package/packages/bpm-send-read-dialog/SelectedGrid.vue +99 -0
  40. package/packages/bpm-send-read-dialog/SourceGrid.vue +396 -0
  41. package/packages/bpm-send-read-dialog/Tree.vue +74 -0
  42. package/packages/bpm-send-read-dialog/bpm-next-node.vue +51 -0
  43. package/packages/bpm-send-read-dialog/bpm-send-read.vue +100 -0
  44. package/packages/bpm-send-read-dialog/index.js +7 -0
  45. package/packages/bpm-send-read-opinion-dialog/bpm-send-read-opinion.vue +261 -0
  46. package/packages/bpm-send-read-opinion-dialog/index.js +7 -0
  47. package/packages/bpm-sign-dialog/SelectedGrid.vue +102 -0
  48. package/packages/bpm-sign-dialog/SourceGrid.vue +413 -0
  49. package/packages/bpm-sign-dialog/Tree.vue +197 -0
  50. package/packages/bpm-sign-dialog/bpm-next-node.vue +57 -0
  51. package/packages/bpm-sign-dialog/bpm-sign-select.vue +116 -0
  52. package/packages/bpm-sign-dialog/index.js +7 -0
  53. package/packages/bpm-sign-opinion-dialog/bpm-sign-opinion.vue +259 -0
  54. package/packages/bpm-sign-opinion-dialog/index.js +7 -0
  55. package/packages/bpm-user-select-dialog/SelectedGrid.vue +155 -0
  56. package/packages/bpm-user-select-dialog/SourceGrid.vue +419 -0
  57. package/packages/bpm-user-select-dialog/Tree.vue +98 -0
  58. package/packages/bpm-user-select-dialog/bpm-next-node.vue +51 -0
  59. package/packages/bpm-user-select-dialog/bpm-user-select.vue +108 -0
  60. package/packages/bpm-user-select-dialog/index.js +7 -0
  61. package/packages/i18n/i18n.js +15 -0
  62. package/packages/i18n/langs/en_US.js +42 -0
  63. package/packages/i18n/langs/index.js +6 -0
  64. package/packages/i18n/langs/zh_CN.js +86 -0
  65. package/packages/index.js +48 -0
  66. package/packages/utils/merit-bpm.js +900 -0
  67. package/public/favicon.ico +0 -0
  68. package/vue.config.js +55 -0
@@ -0,0 +1,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
+ ### 管理特送对话框
@@ -0,0 +1,291 @@
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
+ >
13
+ <el-form
14
+ ref="procOpinion"
15
+ :rules="rules"
16
+ :model="procOpinion"
17
+ label-width="80px"
18
+ label-position="right"
19
+ >
20
+ <el-row>
21
+ <el-form-item :label="$t('bpm.opinion.opinion_area')">
22
+ <el-tabs v-model="activeOpinionArea" class="cloud-opinion-area">
23
+ <el-tab-pane :label="$t('bpm.opinion.common_opinion')">
24
+ <el-row class="cloud-opinion-area-tab-pane">
25
+ <el-row
26
+ v-for="commonOpinion in commonOpinions"
27
+ :key="commonOpinion"
28
+ >
29
+ <el-col>
30
+ <div
31
+ class="cloud-opinion-area-item"
32
+ @click="handleOpnionSelect(commonOpinion)"
33
+ >
34
+ {{ commonOpinion }}
35
+ </div>
36
+ </el-col>
37
+ </el-row>
38
+ </el-row>
39
+ </el-tab-pane>
40
+ <el-tab-pane :label="$t('bpm.opinion.personal_opinion')">
41
+ <el-row class="cloud-opinion-area-tab-pane">
42
+ <el-row
43
+ v-for="personalOpinion in personalOpinions"
44
+ :key="personalOpinion"
45
+ >
46
+ <el-col>
47
+ <div
48
+ class="cloud-opinion-area-item"
49
+ @click="handleOpnionSelect(personalOpinion)"
50
+ >
51
+ {{ personalOpinion }}
52
+ </div>
53
+ </el-col>
54
+ </el-row>
55
+ </el-row>
56
+ </el-tab-pane>
57
+ </el-tabs>
58
+ </el-form-item>
59
+ </el-row>
60
+ <el-row class="cloud-opinion-area-tab-pane">
61
+ <div class="cloud-opinion-area-item">
62
+ <el-form-item
63
+ :label="$t('bpm.opinion.opinion_content')"
64
+ prop="content"
65
+ >
66
+ <el-input
67
+ v-model="procOpinion.content"
68
+ type="textarea"
69
+ :maxlength="200"
70
+ show-word-limit
71
+ :autosize="{ minRows: 4, maxRows: 4 }"
72
+ style=" width: 100%;"
73
+ ></el-input>
74
+ </el-form-item>
75
+ </div>
76
+ </el-row>
77
+ </el-form>
78
+
79
+ <span slot="footer" class="dialog-footer">
80
+ <el-button @click="handleClose">{{
81
+ $t('base.button.cancel')
82
+ }}</el-button>
83
+ <el-button type="primary" @click="handleSave">暂存</el-button>
84
+ <el-button type="primary" @click="handlePublish">发布</el-button>
85
+ </span>
86
+ </el-dialog>
87
+ </div>
88
+ </template>
89
+ <script>
90
+ import {
91
+ Dialog,
92
+ Aside,
93
+ Main,
94
+ Container,
95
+ Button,
96
+ Form,
97
+ FormItem,
98
+ Col,
99
+ Row,
100
+ Input,
101
+ Tabs,
102
+ TabPane
103
+ } from 'element-ui';
104
+ import axios from 'cloud-module-base/packages/httpConfig/http';
105
+ export default {
106
+ name: 'bpm-opinion',
107
+ components: {
108
+ 'el-dialog': Dialog,
109
+ 'el-aside': Aside,
110
+ 'el-main': Main,
111
+ 'el-container': Container,
112
+ 'el-button': Button,
113
+ 'el-form': Form,
114
+ 'el-form-item': FormItem,
115
+ 'el-col': Col,
116
+ 'el-row': Row,
117
+ 'el-input': Input,
118
+ 'el-tabs': Tabs,
119
+ 'el-tab-pane': TabPane
120
+ },
121
+ //父组件传过来的数据属性
122
+ props: {
123
+ dialogVisible: {
124
+ type: Boolean,
125
+ required: true
126
+ },
127
+ ruleEngine: {
128
+ type: Object,
129
+ required: true
130
+ }
131
+ },
132
+ data() {
133
+ return {
134
+ maxHeight: '',
135
+ rules: {
136
+ content: [
137
+ {
138
+ required: true,
139
+ message: this.$t('base.rule.required'),
140
+ trigger: 'blur'
141
+ }
142
+ ]
143
+ },
144
+ //默认参数
145
+ opt: {
146
+ title: this.$t('bpm.opinion.dialog_title')
147
+ },
148
+ activeOpinionArea: '',
149
+ procOpinion: {
150
+ content: undefined
151
+ },
152
+ commonOpinions: [],
153
+ personalOpinions: []
154
+ };
155
+ },
156
+ created() {
157
+ this.maxHeight = window.outerHeight > 900 ? '483px' : '361px';
158
+ },
159
+ methods: {
160
+ openDialog() {
161
+ let _this = this;
162
+ let procDefId = _this.ruleEngine.runtime.procDefId;
163
+ let procInstId = _this.ruleEngine.runtime.procInstId;
164
+ let taskId = _this.ruleEngine.runtime.taskId;
165
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
166
+
167
+ axios['bpm-engine']
168
+ .post('/api/engine/procopinion/getContent/nopublish', {
169
+ procDefId: procDefId,
170
+ procInstId: procInstId,
171
+ taskId: taskId,
172
+ taskDefKey: taskDefKey
173
+ })
174
+ .then(function(res) {
175
+ _this.procOpinion.content = res.data;
176
+ })
177
+ .catch(function(err) {
178
+ console.log(err);
179
+ });
180
+ //在此处查询公共意见和个人意见
181
+ axios['bpm-engine']
182
+ .post('/bpm/api/opinion/getAllOpionContent', {})
183
+ .then(function(res) {
184
+ //公共意见
185
+ if (res.data.commonOpinions.length > 0) {
186
+ _this.commonOpinions = res.data.commonOpinions;
187
+ }
188
+ //个人意见
189
+ if (res.data.personalOpinions.length > 0) {
190
+ _this.personalOpinions = res.data.personalOpinions;
191
+ }
192
+ })
193
+ .catch(function(err) {
194
+ console.log(err);
195
+ });
196
+ },
197
+ //流程意见选择事件
198
+ handleOpnionSelect(opinion) {
199
+ if (
200
+ this.procOpinion.content == null ||
201
+ this.procOpinion.content.length == 0
202
+ ) {
203
+ this.procOpinion.content = opinion;
204
+ return;
205
+ }
206
+ if (this.procOpinion.content.length < 255) {
207
+ this.procOpinion.content += ';' + opinion;
208
+ return;
209
+ }
210
+ },
211
+ //关闭人员选择对话框
212
+ handleClose() {
213
+ this.procOpinion.content = undefined;
214
+ this.$emit('dialog-close', this.dialogVisible);
215
+ },
216
+ handleSave() {
217
+ let _this = this;
218
+ if (_this.procOpinion.content.length > 255) {
219
+ return this.$message.error(
220
+ _this.$t('bpm.opinion.opinion_content_beyond')
221
+ );
222
+ }
223
+ _this.$refs.procOpinion.validate(valid => {
224
+ if (valid) {
225
+ let procDefId = _this.ruleEngine.runtime.procDefId;
226
+ let procInstId = _this.ruleEngine.runtime.procInstId;
227
+ let taskId = _this.ruleEngine.runtime.taskId;
228
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
229
+ axios['bpm-engine']
230
+ .post('/api/engine/procopinion/addOrUpdate', {
231
+ procDefId: procDefId,
232
+ procInstId: procInstId,
233
+ taskId: taskId,
234
+ taskDefKey: taskDefKey,
235
+ content: _this.procOpinion.content,
236
+ type: 'save'
237
+ })
238
+ .then(function(res) {
239
+ _this.$emit('dialog-save', _this.ruleEngine);
240
+ _this.$emit('dialog-close');
241
+ })
242
+ .catch(function(err) {
243
+ console.log(err);
244
+ });
245
+ }
246
+ });
247
+ },
248
+ handlePublish() {
249
+ let _this = this;
250
+ if (_this.procOpinion.content.length > 255) {
251
+ return this.$message.error(
252
+ _this.$t('bpm.opinion.opinion_content_beyond')
253
+ );
254
+ }
255
+ _this.$refs.procOpinion.validate(valid => {
256
+ if (valid) {
257
+ let procDefId = _this.ruleEngine.runtime.procDefId;
258
+ let procInstId = _this.ruleEngine.runtime.procInstId;
259
+ let taskId = _this.ruleEngine.runtime.taskId;
260
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
261
+ axios['bpm-engine']
262
+ .post('/api/engine/procopinion/addOrUpdate', {
263
+ procDefId: procDefId,
264
+ procInstId: procInstId,
265
+ taskId: taskId,
266
+ taskDefKey: taskDefKey,
267
+ content: _this.procOpinion.content,
268
+ type: 'publish'
269
+ })
270
+ .then(function(res) {
271
+ _this.$emit('dialog-save', _this.ruleEngine);
272
+ _this.$emit('dialog-close');
273
+ })
274
+ .catch(function(err) {
275
+ console.log(err);
276
+ });
277
+ }
278
+ });
279
+ }
280
+ }
281
+ };
282
+ </script>
283
+
284
+ <style>
285
+ .el-input-number.is-controls-right .el-input__inner {
286
+ text-align: left;
287
+ }
288
+ .cloud-opinion-area .el-tabs__content {
289
+ width: 100%;
290
+ }
291
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmOpinion from './bpm-opinion';
2
+
3
+ /* istanbul ignore next */
4
+ bpmOpinion.install = function(Vue) {
5
+ Vue.component(bpmOpinion.name, bpmOpinion);
6
+ };
7
+ export default bpmOpinion;
@@ -0,0 +1,102 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog :title="opt.title" :visible.sync="dialogVisible" width="850px" top="8vh" @open="openDialog" :before-close="handleClose">
4
+ <el-container style="background:#fff">
5
+ 流程跟踪对话框
6
+ </el-container>
7
+ <span slot="footer" class="dialog-footer">
8
+ <el-button @click="handleClose">{{ $t('base.button.cancel') }}</el-button>
9
+ <el-button type="primary" @click="handleSave">{{ $t('base.button.ok') }}</el-button>
10
+ </span>
11
+ </el-dialog>
12
+ </div>
13
+ </template>
14
+ <script>
15
+ import { Dialog, Aside, Main, Container, Button } from 'element-ui';
16
+ import axios from 'cloud-module-base/packages/httpConfig/http';
17
+ export default {
18
+ name: 'bpm-proctrack',
19
+ components: {
20
+ 'el-dialog': Dialog,
21
+ 'el-aside': Aside,
22
+ 'el-main': Main,
23
+ 'el-container': Container,
24
+ 'el-button': Button
25
+ },
26
+ //父组件传过来的数据属性
27
+ props: {
28
+ dialogVisible: {
29
+ type: Boolean,
30
+ required: true
31
+ },
32
+ ruleEngine: {
33
+ type: Object,
34
+ required: true
35
+ }
36
+ },
37
+ data() {
38
+ return {
39
+ maxHeight: '',
40
+ //默认参数
41
+ opt: {
42
+ title: '流程跟踪对话框'
43
+ }
44
+ };
45
+ },
46
+ computed: {},
47
+ created() {
48
+ this.maxHeight = window.outerHeight > 900 ? '483px' : '361px';
49
+ Object.assign(this.opt, this.ruleEngine);
50
+ },
51
+ //加载时调用方法 函数
52
+ mounted() {
53
+ let _this = this;
54
+ this.EventBus.$on('update-selected-user', selectedUser => {
55
+ _this.selectedUser = selectedUser;
56
+ });
57
+ },
58
+ methods: {
59
+ openDialog() {
60
+ let _this = this;
61
+ },
62
+ //关闭人员选择对话框
63
+ handleClose() {
64
+ this.$emit('dialog-close', this.dialogVisible);
65
+ },
66
+ handleSave() {
67
+ this.$emit('dialog-save', this.selectedUser);
68
+ this.$emit('dialog-close', this.dialogVisible);
69
+ }
70
+ }
71
+ };
72
+ </script>
73
+ <style scoped>
74
+ .el-dialog__title {
75
+ float: left;
76
+ }
77
+ .el-table__empty-block {
78
+ width: 100%;
79
+ }
80
+ .el-editRole-dialog {
81
+ min-width: 600px;
82
+ }
83
+ @media screen and (max-width: 1440px) {
84
+ /* 更新弹出框 */
85
+ .el-editRole-dialog {
86
+ margin: auto;
87
+ margin-top: 4vh !important;
88
+ }
89
+ }
90
+ .el-row {
91
+ margin-bottom: 20px;
92
+ }
93
+ .el-col {
94
+ border-radius: 4px;
95
+ }
96
+ .el-table th {
97
+ background-color: #fff;
98
+ }
99
+ .dialog-footer {
100
+ padding-top: 0px;
101
+ }
102
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmProctrack from './bpm-proctrack';
2
+
3
+ /* istanbul ignore next */
4
+ bpmProctrack.install = function(Vue) {
5
+ Vue.component(bpmProctrack.name, bpmProctrack);
6
+ };
7
+ export default bpmProctrack;
@@ -0,0 +1,99 @@
1
+ <template>
2
+ <div>
3
+ <el-row style="float:left;padding:11px 7px 3px 9px;">{{
4
+ $t('base.selected_list')
5
+ }}</el-row>
6
+ <el-table
7
+ :data="tableData"
8
+ stripe
9
+ :height="tableHeight"
10
+ style="width: 100%;"
11
+ @row-click="handleRowClick"
12
+ :element-loading-text="$t('base.table.loading')"
13
+ element-loading-spinner="el-icon-loading"
14
+ >
15
+ <el-table-column prop="name" :label="$t('base.user.name')" fit="true">
16
+ <template slot-scope="scope">
17
+ <div :title="scope.row.name" class="cell-hidden">
18
+ {{ scope.row.name }}
19
+ </div>
20
+ </template>
21
+ </el-table-column>
22
+ <el-table-column
23
+ prop="code"
24
+ :label="$t('base.user.user_name')"
25
+ fit="true"
26
+ >
27
+ <template slot-scope="scope">
28
+ <div :title="scope.row.code" class="cell-hidden">
29
+ {{ scope.row.code }}
30
+ </div>
31
+ </template>
32
+ </el-table-column>
33
+ <el-table-column prop="deptName" :label="$t('base.dept.name')" fit="true">
34
+ <template slot-scope="scope">
35
+ <div :title="scope.row.deptName" class="cell-hidden">
36
+ {{ scope.row.deptName }}
37
+ </div>
38
+ </template>
39
+ </el-table-column>
40
+ </el-table>
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import { Row, Table, TableColumn, Pagination } from 'element-ui';
46
+ export default {
47
+ props: {
48
+ opt: {
49
+ type: Array,
50
+ required: true
51
+ }
52
+ },
53
+ components: {
54
+ 'el-row': Row,
55
+ 'el-table': Table,
56
+ 'el-table-column': TableColumn,
57
+ 'el-pagination': Pagination
58
+ },
59
+ data() {
60
+ return {
61
+ tableHeight: 426,
62
+ tableData: [],
63
+ currentPage: 1,
64
+ pagesize: 10,
65
+ total: 0
66
+ };
67
+ },
68
+ created() {
69
+ let _this = this;
70
+ // this.tableHeight = window.outerHeight > 900 ? 430 : 310;
71
+ _this.tableData = [];
72
+ this.EventBus.$on('refresh-selected-grid', selectData => {
73
+ _this.tableData = selectData;
74
+ });
75
+ },
76
+ watch: {
77
+ opt(old, newVal) {
78
+ this.tableData = [];
79
+ }
80
+ },
81
+ methods: {
82
+ //行单击事件只有单人审批是选人才生效,其他审批方式,通过checkbox生效
83
+ handleRowClick(row, event, column) {
84
+ this.EventBus.$emit('cancel-seleced-user', row);
85
+ }
86
+ }
87
+ };
88
+ </script>
89
+ <style scoped>
90
+ .el-table--scrollable-x .el-table__body-wrapper {
91
+ overflow-x: hidden;
92
+ }
93
+ .el-table__empty-block {
94
+ width: 100%;
95
+ }
96
+ .el-table th {
97
+ background-color: #fff;
98
+ }
99
+ </style>