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,116 @@
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 :nextNode="resultData" ref="tabledate"></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-sign-select',
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.sign.sign_title')
52
+ },
53
+ signUsersUrl: '/api/engine/bpm/process/getSignUsers',
54
+ currentPage: 1,
55
+ pageSize: 10,
56
+ pagerCount: 5,
57
+ resultData:{
58
+ nextNodes: [],
59
+ approveType:'',
60
+ alldeptcodes: [],
61
+ temRuleEngine: Object, //定义引擎
62
+ },
63
+ };
64
+ },
65
+ created() {
66
+ let _this = this;
67
+ this.EventBus.$on('update-selected-user', params => {
68
+ _this.ruleEngine['signUserCodes'] = params.dealUserCodes;
69
+ });
70
+ },
71
+ methods: {
72
+ openDialog() {
73
+ var _this = this;
74
+ let param = {
75
+ page: this.currentPage,
76
+ rows: this.pageSize,
77
+ };
78
+ axios['bpm-engine']
79
+ .post(_this.signUsersUrl + '/' + _this.ruleEngine.procInstId, _this.ruleEngine)
80
+ .then(function(res) {
81
+ _this.resultData.nextNodes = res.data.rows;
82
+ _this.resultData.alldeptcodes = res.data.deptcodes;
83
+ _this.resultData.temRuleEngine = _this.ruleEngine;
84
+ _this.resultData.nextNodes.length = res.data.total;
85
+ _this.resultData.approveType = _this.ruleEngine.approve.type;
86
+ })
87
+ .catch(function(err) {
88
+ console.log(err);
89
+ });
90
+ },
91
+ handleClose() {
92
+ this.EventBus.$emit('save-button-click');
93
+ this.$refs.tabledate.clearSelectData();
94
+ this.$emit('dialog-close', this.dialogVisible);
95
+ },
96
+ handleSave() {
97
+ var _this = this;
98
+ _this.EventBus.$on('update-selected-user', params => {
99
+ _this.ruleEngine.signUserCodes = params.dealUserCodes;
100
+ });
101
+ if (_this.ruleEngine.signUserCodes == '' || _this.ruleEngine.signUserCodes == undefined) {
102
+ _this.$message({
103
+ message: _this.$t('bpm.sign.please_personnel'),
104
+ type: 'warning'
105
+ });
106
+ return;
107
+ }
108
+ this.EventBus.$emit('save-button-click');
109
+ this.$emit('dialog-save', this.ruleEngine);
110
+ this.$emit('dialog-close', this.dialogVisible);
111
+ }
112
+ }
113
+ };
114
+ </script>
115
+ <style>
116
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmSignSelect from './bpm-sign-select';
2
+
3
+ /* istanbul ignore next */
4
+ bpmSignSelect.install = function(Vue) {
5
+ Vue.component(bpmSignSelect.name, bpmSignSelect);
6
+ };
7
+ export default bpmSignSelect;
@@ -0,0 +1,259 @@
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.sign_opinion.opinion_area')">
22
+ <el-tabs v-model="activeOpinionArea" class="cloud-opinion-area">
23
+ <el-tab-pane :label="$t('bpm.sign_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.sign_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.sign_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">{{
84
+ $t('base.button.ok')
85
+ }}</el-button>
86
+ </span>
87
+ </el-dialog>
88
+ </div>
89
+ </template>
90
+ <script>
91
+ import {
92
+ Dialog,
93
+ Aside,
94
+ Main,
95
+ Container,
96
+ Button,
97
+ Form,
98
+ FormItem,
99
+ Col,
100
+ Row,
101
+ Input,
102
+ Tabs,
103
+ TabPane
104
+ } from 'element-ui';
105
+ import axios from 'cloud-module-base/packages/httpConfig/http';
106
+ export default {
107
+ name: 'bpm-sign-opinion',
108
+ components: {
109
+ 'el-dialog': Dialog,
110
+ 'el-aside': Aside,
111
+ 'el-main': Main,
112
+ 'el-container': Container,
113
+ 'el-button': Button,
114
+ 'el-form': Form,
115
+ 'el-form-item': FormItem,
116
+ 'el-col': Col,
117
+ 'el-row': Row,
118
+ 'el-input': Input,
119
+ 'el-tabs': Tabs,
120
+ 'el-tab-pane': TabPane
121
+ },
122
+ //父组件传过来的数据属性
123
+ props: {
124
+ dialogVisible: {
125
+ type: Boolean,
126
+ required: true
127
+ },
128
+ ruleEngine: {
129
+ type: Object,
130
+ required: true
131
+ }
132
+ },
133
+ data() {
134
+ return {
135
+ maxHeight: '',
136
+ rules: {
137
+ content: [
138
+ {
139
+ required: true,
140
+ message: this.$t('base.rule.required'),
141
+ trigger: 'blur'
142
+ }
143
+ ]
144
+ },
145
+ //默认参数
146
+ opt: {
147
+ title: this.$t('bpm.sign_opinion.dialog_title')
148
+ },
149
+ activeOpinionArea: '',
150
+ procOpinion: {
151
+ content: undefined
152
+ },
153
+ commonOpinions: [],
154
+ personalOpinions: []
155
+ };
156
+ },
157
+ created() {
158
+ this.maxHeight = window.outerHeight > 900 ? '483px' : '361px';
159
+ },
160
+ methods: {
161
+ openDialog() {
162
+ let _this = this;
163
+ let procDefId = _this.ruleEngine.runtime.procDefId;
164
+ let procInstId = _this.ruleEngine.runtime.procInstId;
165
+ let taskId = _this.ruleEngine.runtime.taskId;
166
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
167
+
168
+ axios['bpm-engine']
169
+ .post('/api/engine/procopinion/getContent/nopublish', {
170
+ procDefId: procDefId,
171
+ procInstId: procInstId,
172
+ taskId: taskId,
173
+ taskDefKey: taskDefKey
174
+ })
175
+ .then(function(res) {
176
+ _this.procOpinion.content = res.data;
177
+ })
178
+ .catch(function(err) {
179
+ console.log(err);
180
+ });
181
+ //在此处查询公共意见和个人意见
182
+ axios['bpm-engine']
183
+ .post('/bpm/api/opinion/getAllOpionContent', {})
184
+ .then(function(res) {
185
+ //公共意见
186
+ if (res.data.commonOpinions.length > 0) {
187
+ _this.commonOpinions = res.data.commonOpinions;
188
+ }
189
+ //个人意见
190
+ if (res.data.personalOpinions.length > 0) {
191
+ _this.personalOpinions = res.data.personalOpinions;
192
+ }
193
+ })
194
+ .catch(function(err) {
195
+ console.log(err);
196
+ });
197
+ },
198
+ //流程意见选择事件
199
+ handleOpnionSelect(opinion) {
200
+ if (
201
+ this.procOpinion.content == null ||
202
+ this.procOpinion.content.length == 0
203
+ ) {
204
+ this.procOpinion.content = opinion;
205
+ return;
206
+ }
207
+ if (this.procOpinion.content.length < 200) {
208
+ this.procOpinion.content += ';' + opinion;
209
+ return;
210
+ }
211
+ },
212
+ //关闭对话框
213
+ handleClose() {
214
+ this.procOpinion.content = undefined;
215
+ this.$emit('dialog-close', this.dialogVisible);
216
+ },
217
+ handleSave() {
218
+ let _this = this;
219
+ if (_this.procOpinion.content.length > 200) {
220
+ return this.$message.error(
221
+ _this.$t('bpm.sign_opinion.opinion_content_beyond')
222
+ );
223
+ }
224
+ _this.$refs.procOpinion.validate(valid => {
225
+ if (valid) {
226
+ let procDefId = _this.ruleEngine.runtime.procDefId;
227
+ let procInstId = _this.ruleEngine.runtime.procInstId;
228
+ let taskId = _this.ruleEngine.runtime.taskId;
229
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
230
+ axios['bpm-engine']
231
+ .post('/api/engine/procopinion/addOrUpdate', {
232
+ procDefId: procDefId,
233
+ procInstId: procInstId,
234
+ taskId: taskId,
235
+ taskDefKey: taskDefKey,
236
+ content: _this.procOpinion.content,
237
+ type: 'save'
238
+ })
239
+ .then(function(res) {
240
+ _this.$emit('dialog-save', _this.ruleEngine);
241
+ })
242
+ .catch(function(err) {
243
+ console.log(err);
244
+ });
245
+ }
246
+ });
247
+ }
248
+ }
249
+ };
250
+ </script>
251
+
252
+ <style>
253
+ .el-input-number.is-controls-right .el-input__inner {
254
+ text-align: left;
255
+ }
256
+ .cloud-opinion-area .el-tabs__content {
257
+ width: 100%;
258
+ }
259
+ </style>
@@ -0,0 +1,7 @@
1
+ import bpmSignOpinion from './bpm-sign-opinion';
2
+
3
+ /* istanbul ignore next */
4
+ bpmSignOpinion.install = function(Vue) {
5
+ Vue.component(bpmSignOpinion.name, bpmSignOpinion);
6
+ };
7
+ export default bpmSignOpinion;
@@ -0,0 +1,155 @@
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
+ <el-pagination
42
+ class="SelectedGrid"
43
+ @current-change="handleCurrentChange"
44
+ :current-page="currentPage"
45
+ :page-size="pagesize"
46
+ layout="total, prev, pager, next"
47
+ :total="total"
48
+ ></el-pagination>
49
+ </div>
50
+ </template>
51
+
52
+ <script>
53
+ import { Row, Table, TableColumn, Pagination } from 'element-ui';
54
+ export default {
55
+ props: {
56
+ opt: {
57
+ type: Object,
58
+ required: true
59
+ }
60
+ },
61
+ components: {
62
+ 'el-row': Row,
63
+ 'el-table': Table,
64
+ 'el-table-column': TableColumn,
65
+ 'el-pagination': Pagination
66
+ },
67
+ data() {
68
+ return {
69
+ tableHeight: 355,
70
+ tableData: [],
71
+ currentPage: 1,
72
+ pagesize: 10,
73
+ total: 0,
74
+ tempTableData:[]
75
+ };
76
+ },
77
+ created() {
78
+ let _this = this;
79
+ // this.tableHeight = window.outerHeight > 900 ? 430 : 310;
80
+ this.tableData = [];
81
+ this.EventBus.$on(
82
+ 'refresh-selected-grid' + this.opt.taskDeKey,
83
+ selectData => {
84
+ _this.tempTableData = selectData;
85
+ // 每次重发数据默认显示第一页
86
+ _this.currentPage = 1;
87
+ _this.total = _this.tempTableData.length;
88
+ _this.tableData = _this.tempTableData.slice(
89
+ _this.pagesize * (_this.currentPage - 1),
90
+ _this.pagesize * _this.currentPage
91
+ );
92
+ }
93
+ );
94
+ },
95
+ watch: {
96
+ opt(old, newVal) {
97
+ this.tableData = [];
98
+ }
99
+ },
100
+ methods: {
101
+ //行单击事件只有单人审批是选人才生效,其他审批方式,通过checkbox生效
102
+ handleRowClick(row, event, column) {
103
+ let _this = this;
104
+ // 删除掉临时数组中点击的元素
105
+ _this.tempTableData = _this.tempTableData.filter(t => t.code != row.code);
106
+ // 重新修改total值
107
+ _this.total = _this.tempTableData.length;
108
+
109
+ // 重新给currentPage赋值 若当前页数据等于0时,修改为上一页,若只剩一页则是第一页
110
+ if(_this.tempTableData.slice(
111
+ _this.pagesize * (_this.currentPage - 1),
112
+ _this.pagesize * _this.currentPage
113
+ ).length == 0) {
114
+ _this.currentPage = _this.currentPage > 1 ? _this.currentPage-1 : 1;
115
+ }
116
+ _this.tableData = _this.tempTableData.slice(
117
+ _this.pagesize * (_this.currentPage - 1),
118
+ _this.pagesize * _this.currentPage
119
+ );
120
+ this.EventBus.$emit('cancel-seleced-user' + this.opt.taskDeKey, row);
121
+ },
122
+ //页码变化时调用
123
+ handleCurrentChange(val) {
124
+ let _this = this;
125
+ _this.currentPage = val;
126
+ _this.tableData = _this.tempTableData.slice(
127
+ _this.pagesize * (_this.currentPage - 1),
128
+ _this.pagesize * _this.currentPage
129
+ );
130
+ }
131
+ }
132
+ };
133
+ </script>
134
+ <style scoped>
135
+ .el-table--scrollable-x .el-table__body-wrapper {
136
+ overflow-x: hidden;
137
+ }
138
+ .el-table__empty-block {
139
+ width: 100%;
140
+ }
141
+ .el-table th {
142
+ background-color: #fff;
143
+ }
144
+ .el-pagination {
145
+ position: unset !important;
146
+ }
147
+ .el-pagination {
148
+ position: absolute;
149
+ right: 40px;
150
+ margin: 10px auto;
151
+ }
152
+ .SelectedGrid .el-pager li {
153
+ min-width: 20px !important;
154
+ }
155
+ </style>