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,51 @@
1
+ <template>
2
+ <el-container>
3
+ <el-aside style="height:456px;width:65%;margin-right: 0px;margin-left: 0px;">
4
+ <el-container>
5
+ <el-aside style="height:456px;width: 40%;max-width: 400px;padding-top:5px;margin:0px;border-radius: 0px;">
6
+ <v-tree :opt="nextNode" />
7
+ </el-aside>
8
+ <el-main style="height:456px;width:45%;padding: 0px;margin-left:2px">
9
+ <v-source-grid :opt="nextNode" />
10
+ </el-main>
11
+ </el-container>
12
+ </el-aside>
13
+ <el-main style="height:456px;padding:0px;padding-bottom: 0px;width:35%;margin-left:10px">
14
+ <v-select-grid :opt="nextNode" />
15
+ </el-main>
16
+ </el-container>
17
+ </template>
18
+ <script>
19
+ import { Aside, Main, Container } from 'element-ui';
20
+ import selectedGrid from './SelectedGrid';
21
+ import sourceGrid from './SourceGrid';
22
+ import tree from './Tree';
23
+ import axios from 'cloud-module-base/packages/httpConfig/http';
24
+ export default {
25
+ //父组件传过来的数据属性
26
+ props: {
27
+ nextNode: {
28
+ type: Array,
29
+ required: true
30
+ }
31
+ },
32
+ components: {
33
+ 'v-select-grid': selectedGrid,
34
+ 'v-tree': tree,
35
+ 'v-source-grid': sourceGrid,
36
+ 'el-aside': Aside,
37
+ 'el-main': Main,
38
+ 'el-container': Container
39
+ },
40
+ data() {
41
+ return {
42
+ opt: {
43
+ maxHeight: '483px'
44
+ }
45
+ };
46
+ },
47
+ created() {
48
+ this.maxHeight = window.outerHeight > 900 ? '483px' : '361px';
49
+ }
50
+ };
51
+ </script>
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :title="opt.title"
5
+ :visible.sync="dialogVisible"
6
+ width="900px"
7
+ top="2vh"
8
+ :before-close="handleClose"
9
+ class="jumpDialog"
10
+ @open="openDialog"
11
+ :close-on-click-modal="false"
12
+ append-to-body
13
+ >
14
+ <v-bpm-next-node v-if="ok" :nextNode="nextNodes"></v-bpm-next-node>
15
+ <span slot="footer" class="dialog-footer">
16
+ <el-button @click="handleClose">{{ $t('base.button.cancel') }}</el-button>
17
+ <el-button type="primary" @click="handleSave">{{ $t('base.button.ok') }}</el-button>
18
+ </span>
19
+ </el-dialog>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ import { Dialog, Aside, Main, Container, Button, Tabs, TabPane } from 'element-ui';
24
+ import bpmNextNode from './bpm-next-node';
25
+ import axios from 'cloud-module-base/packages/httpConfig/http';
26
+
27
+ export default {
28
+ name: 'bpm-send-read',
29
+ components: {
30
+ 'el-dialog': Dialog,
31
+ 'el-button': Button,
32
+ 'el-tabs': Tabs,
33
+ 'el-tab-pane': TabPane,
34
+ 'v-bpm-next-node': bpmNextNode
35
+ },
36
+ //父组件传过来的数据属性
37
+ props: {
38
+ dialogVisible: {
39
+ type: Boolean,
40
+ required: true
41
+ },
42
+ ruleEngine: {
43
+ type: Object,
44
+ required: true
45
+ }
46
+ },
47
+ data() {
48
+ return {
49
+ //默认参数
50
+ opt: {
51
+ title: this.$t('bpm.send_read.sendReadTitle')
52
+ },
53
+ sendReadUsersUrl: '/api/engine/bpm/process/getSendReadUsers',
54
+ nextNodes: [],
55
+ ok:false,
56
+ };
57
+ },
58
+ created() {
59
+ let _this = this;
60
+ this.EventBus.$on('update-selected-user', params => {
61
+ _this.ruleEngine['sendReadUserCodes'] = params.dealUserCodes;
62
+ });
63
+ },
64
+ methods: {
65
+ openDialog() {
66
+ var _this = this;
67
+ var taskId = _this.ruleEngine.runtime.taskId;
68
+ axios['bpm-engine']
69
+ .post(_this.sendReadUsersUrl + '/' + taskId, _this.ruleEngine)
70
+ .then(function(res) {
71
+ _this.nextNodes = res.data.sendReadUsers;
72
+ _this.ok = true;
73
+ })
74
+ .catch(function(err) {
75
+ console.log(err);
76
+ });
77
+ },
78
+ handleClose() {
79
+ this.$emit('dialog-close', this.dialogVisible);
80
+ },
81
+ handleSave() {
82
+ var _this = this;
83
+ _this.EventBus.$on('update-selected-user', params => {
84
+ _this.ruleEngine.sendReadUserCodes = params.dealUserCodes;
85
+ });
86
+ if (JSON.stringify(_this.ruleEngine.sendReadUserCodes) == '{}' || _this.ruleEngine.sendReadUserCodes == '' || _this.ruleEngine.sendReadUserCodes == undefined) {
87
+ _this.$message({
88
+ message: _this.$t('bpm.send_read.please_personnel'),
89
+ type: 'warning',
90
+ });
91
+ return;
92
+ }
93
+ this.EventBus.$emit('save-button-click');
94
+ this.$emit('dialog-save', this.ruleEngine);
95
+ }
96
+ }
97
+ };
98
+ </script>
99
+ <style>
100
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmSendRead from './bpm-send-read';
2
+
3
+ /* istanbul ignore next */
4
+ bpmSendRead.install = function(Vue) {
5
+ Vue.component(bpmSendRead.name, bpmSendRead);
6
+ };
7
+ export default bpmSendRead;
@@ -0,0 +1,261 @@
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.send_read_opinion.opinion_area')">
22
+ <el-tabs v-model="activeOpinionArea" class="cloud-opinion-area">
23
+ <el-tab-pane :label="$t('bpm.send_read_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
41
+ :label="$t('bpm.send_read_opinion.personal_opinion')"
42
+ >
43
+ <el-row class="cloud-opinion-area-tab-pane">
44
+ <el-row
45
+ v-for="personalOpinion in personalOpinions"
46
+ :key="personalOpinion"
47
+ >
48
+ <el-col>
49
+ <div
50
+ class="cloud-opinion-area-item"
51
+ @click="handleOpnionSelect(personalOpinion)"
52
+ >
53
+ {{ personalOpinion }}
54
+ </div>
55
+ </el-col>
56
+ </el-row>
57
+ </el-row>
58
+ </el-tab-pane>
59
+ </el-tabs>
60
+ </el-form-item>
61
+ </el-row>
62
+ <el-row class="cloud-opinion-area-tab-pane">
63
+ <div class="cloud-opinion-area-item">
64
+ <el-form-item
65
+ :label="$t('bpm.send_read_opinion.opinion_content')"
66
+ prop="content"
67
+ >
68
+ <el-input
69
+ v-model="procOpinion.content"
70
+ type="textarea"
71
+ :maxlength="255"
72
+ show-word-limit
73
+ :autosize="{ minRows: 4, maxRows: 4 }"
74
+ style=" width: 100%;"
75
+ ></el-input>
76
+ </el-form-item>
77
+ </div>
78
+ </el-row>
79
+ </el-form>
80
+
81
+ <span slot="footer" class="dialog-footer">
82
+ <el-button @click="handleClose">{{
83
+ $t('base.button.cancel')
84
+ }}</el-button>
85
+ <el-button type="primary" @click="handleSave">{{
86
+ $t('base.button.ok')
87
+ }}</el-button>
88
+ </span>
89
+ </el-dialog>
90
+ </div>
91
+ </template>
92
+ <script>
93
+ import {
94
+ Dialog,
95
+ Aside,
96
+ Main,
97
+ Container,
98
+ Button,
99
+ Form,
100
+ FormItem,
101
+ Col,
102
+ Row,
103
+ Input,
104
+ Tabs,
105
+ TabPane
106
+ } from 'element-ui';
107
+ import axios from 'cloud-module-base/packages/httpConfig/http';
108
+ export default {
109
+ name: 'bpm-send-read-opinion',
110
+ components: {
111
+ 'el-dialog': Dialog,
112
+ 'el-aside': Aside,
113
+ 'el-main': Main,
114
+ 'el-container': Container,
115
+ 'el-button': Button,
116
+ 'el-form': Form,
117
+ 'el-form-item': FormItem,
118
+ 'el-col': Col,
119
+ 'el-row': Row,
120
+ 'el-input': Input,
121
+ 'el-tabs': Tabs,
122
+ 'el-tab-pane': TabPane
123
+ },
124
+ //父组件传过来的数据属性
125
+ props: {
126
+ dialogVisible: {
127
+ type: Boolean,
128
+ required: true
129
+ },
130
+ ruleEngine: {
131
+ type: Object,
132
+ required: true
133
+ }
134
+ },
135
+ data() {
136
+ return {
137
+ maxHeight: '',
138
+ rules: {
139
+ content: [
140
+ {
141
+ required: true,
142
+ message: this.$t('base.rule.required'),
143
+ trigger: 'blur'
144
+ }
145
+ ]
146
+ },
147
+ //默认参数
148
+ opt: {
149
+ title: this.$t('bpm.send_read_opinion.dialog_title')
150
+ },
151
+ activeOpinionArea: '',
152
+ procOpinion: {
153
+ content: undefined
154
+ },
155
+ commonOpinions: [],
156
+ personalOpinions: []
157
+ };
158
+ },
159
+ created() {
160
+ this.maxHeight = window.outerHeight > 900 ? '483px' : '361px';
161
+ },
162
+ methods: {
163
+ openDialog() {
164
+ let _this = this;
165
+ let procDefId = _this.ruleEngine.runtime.procDefId;
166
+ let procInstId = _this.ruleEngine.runtime.procInstId;
167
+ let taskId = _this.ruleEngine.runtime.taskId;
168
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
169
+
170
+ axios['bpm-engine']
171
+ .post('/api/engine/procopinion/getContent/nopublish', {
172
+ procDefId: procDefId,
173
+ procInstId: procInstId,
174
+ taskId: taskId,
175
+ taskDefKey: taskDefKey
176
+ })
177
+ .then(function(res) {
178
+ _this.procOpinion.content = res.data;
179
+ })
180
+ .catch(function(err) {
181
+ console.log(err);
182
+ });
183
+ //在此处查询公共意见和个人意见
184
+ axios['bpm-engine']
185
+ .post('/bpm/api/opinion/getAllOpionContent', {})
186
+ .then(function(res) {
187
+ //公共意见
188
+ if (res.data.commonOpinions.length > 0) {
189
+ _this.commonOpinions = res.data.commonOpinions;
190
+ }
191
+ //个人意见
192
+ if (res.data.personalOpinions.length > 0) {
193
+ _this.personalOpinions = res.data.personalOpinions;
194
+ }
195
+ })
196
+ .catch(function(err) {
197
+ console.log(err);
198
+ });
199
+ },
200
+ //流程意见选择事件
201
+ handleOpnionSelect(opinion) {
202
+ if (
203
+ this.procOpinion.content == null ||
204
+ this.procOpinion.content.length == 0
205
+ ) {
206
+ this.procOpinion.content = opinion;
207
+ return;
208
+ }
209
+ if (this.procOpinion.content.length < 255) {
210
+ this.procOpinion.content += ';' + opinion;
211
+ return;
212
+ }
213
+ },
214
+ //关闭对话框
215
+ handleClose() {
216
+ this.procOpinion.content = undefined;
217
+ this.$emit('dialog-close', this.dialogVisible);
218
+ },
219
+ handleSave() {
220
+ let _this = this;
221
+ if (_this.procOpinion.content.length > 255) {
222
+ return this.$message.error(
223
+ _this.$t('bpm.send_read_opinion.opinion_content_beyond')
224
+ );
225
+ }
226
+ _this.$refs.procOpinion.validate(valid => {
227
+ if (valid) {
228
+ let procDefId = _this.ruleEngine.runtime.procDefId;
229
+ let procInstId = _this.ruleEngine.runtime.procInstId;
230
+ let taskId = _this.ruleEngine.runtime.taskId;
231
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
232
+ axios['bpm-engine']
233
+ .post('/api/engine/procopinion/addOrUpdate', {
234
+ procDefId: procDefId,
235
+ procInstId: procInstId,
236
+ taskId: taskId,
237
+ taskDefKey: taskDefKey,
238
+ content: _this.procOpinion.content,
239
+ type: 'save'
240
+ })
241
+ .then(function(res) {
242
+ _this.$emit('dialog-save', _this.ruleEngine);
243
+ })
244
+ .catch(function(err) {
245
+ console.log(err);
246
+ });
247
+ }
248
+ });
249
+ }
250
+ }
251
+ };
252
+ </script>
253
+
254
+ <style>
255
+ .el-input-number.is-controls-right .el-input__inner {
256
+ text-align: left;
257
+ }
258
+ .cloud-opinion-area .el-tabs__content {
259
+ width: 100%;
260
+ }
261
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmSendReadOpinion from './bpm-send-read-opinion';
2
+
3
+ /* istanbul ignore next */
4
+ bpmSendReadOpinion.install = function(Vue) {
5
+ Vue.component(bpmSendReadOpinion.name, bpmSendReadOpinion);
6
+ };
7
+ export default bpmSendReadOpinion;
@@ -0,0 +1,102 @@
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: Object,
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.nextNodes'(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
+ refre(){
87
+ this.tableData = [];
88
+ }
89
+ }
90
+ };
91
+ </script>
92
+ <style lang="less" scoped>
93
+ .el-table--scrollable-x .el-table__body-wrapper {
94
+ overflow-x: hidden;
95
+ }
96
+ .el-table__empty-block {
97
+ width: 100%;
98
+ }
99
+ .el-table th {
100
+ background-color: #fff;
101
+ }
102
+ </style>