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,312 @@
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
23
+ v-model="activeOpinionArea"
24
+ class="cloud-opinion-area"
25
+ >
26
+ <el-tab-pane :label="$t('bpm.opinion.common_opinion')">
27
+ <el-row class="cloud-opinion-area-tab-pane">
28
+ <el-row
29
+ v-for="commonOpinion in commonOpinions"
30
+ :key="commonOpinion"
31
+ >
32
+ <el-col>
33
+ <div
34
+ class="cloud-opinion-area-item"
35
+ @click="handleOpnionSelect(commonOpinion)"
36
+ >{{ commonOpinion }}</div>
37
+ </el-col>
38
+ </el-row>
39
+ </el-row>
40
+ </el-tab-pane>
41
+ <el-tab-pane :label="$t('bpm.opinion.personal_opinion')">
42
+ <el-row class="cloud-opinion-area-tab-pane">
43
+ <el-row
44
+ v-for="personalOpinion in personalOpinions"
45
+ :key="personalOpinion"
46
+ >
47
+ <el-col>
48
+ <div
49
+ class="cloud-opinion-area-item"
50
+ @click="handleOpnionSelect(personalOpinion)"
51
+ >{{ personalOpinion }}</div>
52
+ </el-col>
53
+ </el-row>
54
+ </el-row>
55
+ </el-tab-pane>
56
+ </el-tabs>
57
+ </el-form-item>
58
+ </el-row>
59
+ <el-row class="cloud-opinion-area-tab-pane">
60
+ <div class="cloud-opinion-area-item">
61
+ <el-form-item
62
+ :label="$t('bpm.opinion.opinion_content')"
63
+ prop="content"
64
+ >
65
+ <el-input
66
+ v-model.trim="procOpinion.content"
67
+ type="textarea"
68
+ :maxlength="200"
69
+ show-word-limit
70
+ :autosize="{ minRows: 4, maxRows: 4 }"
71
+ style=" width: 100%;"
72
+ ></el-input>
73
+ </el-form-item>
74
+ </div>
75
+ </el-row>
76
+ </el-form>
77
+
78
+ <span
79
+ slot="footer"
80
+ class="dialog-footer"
81
+ >
82
+ <el-button @click="handleClose">
83
+ {{
84
+ $t('base.button.cancel')
85
+ }}
86
+ </el-button>
87
+ <!-- <el-button type="primary" @click="handleSave">暂存</el-button> -->
88
+ <el-button
89
+ type="primary"
90
+ @click="handlePublish"
91
+ >发布</el-button>
92
+ </span>
93
+ </el-dialog>
94
+ </div>
95
+ </template>
96
+ <script>
97
+ import {
98
+ Dialog,
99
+ Aside,
100
+ Main,
101
+ Container,
102
+ Button,
103
+ Form,
104
+ FormItem,
105
+ Col,
106
+ Row,
107
+ Input,
108
+ Tabs,
109
+ TabPane
110
+ } from "element-ui";
111
+ import axios from "cloud-module-base/packages/httpConfig/http";
112
+ export default {
113
+ name: "bpm-opinion",
114
+ components: {
115
+ "el-dialog": Dialog,
116
+ "el-aside": Aside,
117
+ "el-main": Main,
118
+ "el-container": Container,
119
+ "el-button": Button,
120
+ "el-form": Form,
121
+ "el-form-item": FormItem,
122
+ "el-col": Col,
123
+ "el-row": Row,
124
+ "el-input": Input,
125
+ "el-tabs": Tabs,
126
+ "el-tab-pane": TabPane
127
+ },
128
+ //父组件传过来的数据属性
129
+ props: {
130
+ dialogVisible: {
131
+ type: Boolean,
132
+ required: true
133
+ },
134
+ ruleEngine: {
135
+ type: Object,
136
+ required: true
137
+ }
138
+ },
139
+ data () {
140
+ return {
141
+ maxHeight: "",
142
+ rules: {
143
+ content: [
144
+ {
145
+ required: true,
146
+ message: this.$t("base.rule.required"),
147
+ trigger: "blur"
148
+ }
149
+ ]
150
+ },
151
+ //默认参数
152
+ opt: {
153
+ title: this.$t("bpm.opinion.dialog_title")
154
+ },
155
+ activeOpinionArea: "",
156
+ procOpinion: {
157
+ content: ""
158
+ },
159
+ commonOpinions: [],
160
+ personalOpinions: []
161
+ };
162
+ },
163
+ created () {
164
+ this.maxHeight = window.outerHeight > 900 ? "483px" : "361px";
165
+ },
166
+ methods: {
167
+ openDialog () {
168
+ let _this = this;
169
+ let procDefId = _this.ruleEngine.runtime.procDefId;
170
+ let procInstId = _this.ruleEngine.runtime.procInstId;
171
+ let taskId = _this.ruleEngine.runtime.taskId;
172
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
173
+
174
+ axios["bpm-engine"]
175
+ .post("/api/engine/procopinion/getContent/nopublish", {
176
+ procDefId: procDefId,
177
+ procInstId: procInstId,
178
+ taskId: taskId,
179
+ taskDefKey: taskDefKey
180
+ })
181
+ .then(function (res) {
182
+ _this.procOpinion.content = res.data;
183
+ })
184
+ .catch(function (err) {
185
+ console.log(err);
186
+ });
187
+ //在此处查询公共意见和个人意见
188
+ axios["bpm-engine"]
189
+ .post("/bpm/api/opinion/getAllOpionContent", {})
190
+ .then(function (res) {
191
+ //公共意见
192
+ if (res.data.commonOpinions.length > 0) {
193
+ _this.commonOpinions = res.data.commonOpinions;
194
+ }
195
+ //个人意见
196
+ if (res.data.personalOpinions.length > 0) {
197
+ _this.personalOpinions = res.data.personalOpinions;
198
+ }
199
+ })
200
+ .catch(function (err) {
201
+ console.log(err);
202
+ });
203
+ },
204
+ //流程意见选择事件
205
+ handleOpnionSelect (opinion) {
206
+ if (
207
+ this.procOpinion.content == null ||
208
+ this.procOpinion.content.length == 0
209
+ ) {
210
+ this.procOpinion.content = opinion;
211
+ return;
212
+ }
213
+ if (this.procOpinion.content.length + opinion.length < 200) {
214
+ this.procOpinion.content += ";" + opinion;
215
+ return;
216
+ }
217
+ },
218
+ //关闭人员选择对话框
219
+ handleClose () {
220
+ this.procOpinion.content = undefined;
221
+ this.$refs.procOpinion.resetFields();
222
+ this.$emit("dialog-close", this.dialogVisible);
223
+ },
224
+ handleSave () {
225
+ let _this = this;
226
+
227
+ if (
228
+ _this.procOpinion.content == null ||
229
+ _this.procOpinion.content == ""
230
+ ) {
231
+ return this.$message.error("意见内容不能为空");
232
+ }
233
+ if (_this.procOpinion.content.length > 200) {
234
+ return this.$message.error(
235
+ _this.$t("bpm.opinion.opinion_content_beyond")
236
+ );
237
+ }
238
+ _this.$refs.procOpinion.validate(valid => {
239
+ if (valid) {
240
+ let procDefId = _this.ruleEngine.runtime.procDefId;
241
+ let procInstId = _this.ruleEngine.runtime.procInstId;
242
+ let taskId = _this.ruleEngine.runtime.taskId;
243
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
244
+ axios["bpm-engine"]
245
+ .post("/api/engine/procopinion/addOrUpdate", {
246
+ procDefId: procDefId,
247
+ procInstId: procInstId,
248
+ taskId: taskId,
249
+ taskDefKey: taskDefKey,
250
+ content: _this.procOpinion.content,
251
+ type: "save"
252
+ })
253
+ .then(function (res) {
254
+ _this.$emit("dialog-save", _this.ruleEngine);
255
+ _this.$emit("dialog-close");
256
+ })
257
+ .catch(function (err) {
258
+ console.log(err);
259
+ });
260
+ }
261
+ });
262
+ },
263
+ handlePublish () {
264
+ let _this = this;
265
+ if (
266
+ _this.procOpinion.content == null ||
267
+ _this.procOpinion.content == ""
268
+ ) {
269
+ return this.$message.error("意见内容不能为空");
270
+ }
271
+ if (_this.procOpinion.content.length > 255) {
272
+ return this.$message.error(
273
+ _this.$t("bpm.opinion.opinion_content_beyond")
274
+ );
275
+ }
276
+ _this.$refs.procOpinion.validate(valid => {
277
+ if (valid) {
278
+ let procDefId = _this.ruleEngine.runtime.procDefId;
279
+ let procInstId = _this.ruleEngine.runtime.procInstId;
280
+ let taskId = _this.ruleEngine.runtime.taskId;
281
+ let taskDefKey = _this.ruleEngine.runtime.taskDefKey;
282
+ axios["bpm-engine"]
283
+ .post("/api/engine/procopinion/addOrUpdate", {
284
+ procDefId: procDefId,
285
+ procInstId: procInstId,
286
+ taskId: taskId,
287
+ taskDefKey: taskDefKey,
288
+ content: _this.procOpinion.content,
289
+ type: "publish"
290
+ })
291
+ .then(function (res) {
292
+ _this.$emit("dialog-save", _this.ruleEngine);
293
+ _this.$emit("dialog-close");
294
+ })
295
+ .catch(function (err) {
296
+ console.log(err);
297
+ });
298
+ }
299
+ });
300
+ }
301
+ }
302
+ };
303
+ </script>
304
+
305
+ <style>
306
+ .el-input-number.is-controls-right .el-input__inner {
307
+ text-align: left;
308
+ }
309
+ .cloud-opinion-area .el-tabs__content {
310
+ width: 100%;
311
+ }
312
+ </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: 400,
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>