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 bpmBackAnylink from './bpm-back-anylink-dialog.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmBackAnylink.install = function(Vue) {
5
+ Vue.component(bpmBackAnylink.name, bpmBackAnylink);
6
+ };
7
+ export default bpmBackAnylink;
@@ -0,0 +1 @@
1
+ ### 特送对话框
@@ -0,0 +1,216 @@
1
+ <template>
2
+ <el-col style="text-align:left">
3
+ <el-button
4
+ style="margin-top:5px;"
5
+ v-for="bpmBtn in MeritBPM.bpmBtns"
6
+ :key="bpmBtn.id"
7
+ :type="bpmBtn.type"
8
+ :class="bpmBtn.id"
9
+ @click="BPMEventBus('doSend', bpmBtn)"
10
+ >{{ bpmBtn.name }}</el-button
11
+ >
12
+ <bpm-user-select
13
+ :dialogVisible="MeritBPM.userSelectDialogVisible"
14
+ :ruleEngine="ruleEngine"
15
+ @dialog-close="BPMEventBus('bpmUserSelectClose', ruleEngine)"
16
+ @dialog-save="BPMEventBus('bpmUserSelectSave', ruleEngine)"
17
+ />
18
+ <bpm-opinion
19
+ :dialogVisible="MeritBPM.opinionDialogVisible"
20
+ :ruleEngine="ruleEngine"
21
+ @dialog-close="BPMEventBus('bpmOpinionClose', ruleEngine)"
22
+ @dialog-save="BPMEventBus('bpmOpinionSave', ruleEngine)"
23
+ />
24
+ <!-- 特送对话框 -->
25
+ <bpm-jump
26
+ :dialogVisible="MeritBPM.bpmJumpDialogVisible"
27
+ :ruleEngine="ruleEngine"
28
+ @dialog-close="BPMEventBus('bpmJumpClose', ruleEngine)"
29
+ @dialog-save="BPMEventBus('bpmJumpSave', ruleEngine)"
30
+ >
31
+ </bpm-jump>
32
+
33
+ <!-- 特送管理对话框 -->
34
+ <bpm-jump-latest
35
+ :dialogVisible="MeritBPM.bpmJumpManagementDialogVisible"
36
+ :ruleEngine="ruleEngine"
37
+ @dialog-close="BPMEventBus('bpmJumpManagementClose', ruleEngine)"
38
+ @dialog-save="BPMEventBus('bpmJumpManagementSave', ruleEngine)"
39
+ >
40
+ </bpm-jump-latest>
41
+
42
+ <!-- 返回任意环节对话框 -->
43
+ <bpm-back-anylink
44
+ :dialogVisible="MeritBPM.bpmAnyLink"
45
+ :ruleEngine="ruleEngine"
46
+ @dialog-close="BPMEventBus('bpmRetRandomNodeStatusClose', ruleEngine)"
47
+ @dialog-save="BPMEventBus('bpmRetRandomNodeStatusSave', ruleEngine)"
48
+ >
49
+ </bpm-back-anylink>
50
+ <!--送阅知-->
51
+ <bpm-send-read
52
+ :dialogVisible="MeritBPM.sendReadDialogVisible"
53
+ :ruleEngine="ruleEngine"
54
+ @dialog-close="BPMEventBus('bpmSendReadClose', ruleEngine)"
55
+ @dialog-save="BPMEventBus('bpmSendReadSave', ruleEngine)"
56
+ >
57
+ </bpm-send-read>
58
+ <!--阅知意见-->
59
+ <bpm-send-read-opinion
60
+ :dialogVisible="MeritBPM.sednReadOpinionDialogVisible"
61
+ :ruleEngine="ruleEngine"
62
+ @dialog-close="BPMEventBus('bpmSendReadOpinionClose', ruleEngine)"
63
+ @dialog-save="BPMEventBus('bpmSendReadOpinionSave', ruleEngine)"
64
+ ></bpm-send-read-opinion>
65
+ <!--转发意见-->
66
+ <bpm-sign-opinion
67
+ :dialogVisible="MeritBPM.signOpinionDialogVisible"
68
+ :ruleEngine="ruleEngine"
69
+ @dialog-close="BPMEventBus('bpmSignOpinionClose', ruleEngine)"
70
+ @dialog-save="BPMEventBus('bpmSignOpinionSave', ruleEngine)"
71
+ ></bpm-sign-opinion>
72
+ <!--转发-->
73
+ <bpm-sign-select
74
+ :dialogVisible="MeritBPM.signDialogVisible"
75
+ :ruleEngine="ruleEngine"
76
+ @dialog-close="BPMEventBus('bpmSignClose', ruleEngine)"
77
+ @dialog-save="BPMEventBus('bpmSignSave', ruleEngine)"
78
+ ></bpm-sign-select>
79
+ </el-col>
80
+ </template>
81
+ <script>
82
+ import { MeritBPM, BPMEventBus } from '../utils/merit-bpm.js';
83
+ import axios from 'cloud-module-base/packages/httpConfig/http';
84
+ export default {
85
+ name: 'bpm-form-tools',
86
+ data() {
87
+ return {
88
+ MeritBPM,
89
+ bpmBtn: {},
90
+ ruleEngine: {
91
+ businessId: '', //流程业务数据id
92
+ procInstId: undefined,//流程实例id
93
+ undoId:''//待办业务id
94
+ }
95
+ };
96
+ },
97
+ props: {
98
+ //流程定义id
99
+ procDefKey: {
100
+ type: String,
101
+ required: true
102
+ }
103
+ },
104
+ created() {
105
+ Object.assign(this.ruleEngine, { procDefKey: this.procDefKey });
106
+ let id = MeritBPM.getUrlParameter('id') || '';
107
+ let undoId = MeritBPM.getUrlParameter('undoId') || '';//截取表单url中undoId, add by zhangyan,
108
+ //打开表单之前,触发外层的init事件。业务模块获取业务数据对象
109
+ this.$emit('init', {
110
+ id: id.replace('businessId', ''),
111
+ undoId: undoId.replace('undoId', ''), //add by zhangyan
112
+ callback: this.bpmInit
113
+ });
114
+ },
115
+ methods: {
116
+ BPMEventBus,
117
+ //初始化表单,返回值为业务数据对象
118
+ bpmInit(businessData) {
119
+ Object.assign(this.ruleEngine, businessData);
120
+ if (businessData.id == null || businessData.id == '') {
121
+ this.MeritBPM.initRuleEngine(this);
122
+ } else {
123
+ this.ruleEngine.businessId = businessData.id;
124
+ this.ruleEngine.undoId = businessData.undoId; //add by zhangyan
125
+ this.MeritBPM.runRuleEngine(this, {}, {});
126
+ }
127
+ },
128
+ getEventSendRead() {},
129
+
130
+ getBpmVar() {
131
+ return this.ruleEngine;
132
+ },
133
+ opinionCallback() {
134
+ this.$emit('opinion-Callback');
135
+ },
136
+ bpmAddOrUpdate(bpmBtn) {
137
+ var _this = this;
138
+ // 初始化
139
+ if (_this.ruleEngine.procInstId != null) {
140
+ //保存之前判断版本号是否一致
141
+ var bpmVersion = _this.ruleEngine.runtime.mainForm.bpmVersion;
142
+ var businessId = _this.ruleEngine.businessId;
143
+ axios['bpm-engine']
144
+ .post('/api/engine/bpm/process/version/' + businessId + '/' + bpmVersion)
145
+ .then(function(res) {
146
+ if (res.data.isDifferent == 'NoBusinessData') {
147
+ _this.$alert('业务数据不存在!', '警告', {
148
+ confirmButtonText: '确定',
149
+ type: 'warning',
150
+ callback: action => {}
151
+ });
152
+ } else if (res.data.isDifferent) {
153
+ _this.$alert('数据已被' + res.data.lockUserName + '修改!', '警告', {
154
+ confirmButtonText: '确定',
155
+ type: 'warning',
156
+ callback: action => {}
157
+ });
158
+ } else {
159
+ //业务应用保存数据的方法,保存后回调方法
160
+ _this.$emit('save', _this.bpmSaveAfter);
161
+ }
162
+ })
163
+ .catch(function(err) {
164
+ console.log(err);
165
+ });
166
+ } else {
167
+ //业务应用保存数据的方法,保存后回调方法
168
+ _this.$emit('save', _this.bpmSaveAfter);
169
+ }
170
+ },
171
+
172
+ bpmSaveAfter(data, Func) {
173
+ let _this = this;
174
+ this.customFun = Func;
175
+ Object.assign(this.ruleEngine, data);
176
+ this.ruleEngine.businessId = data.id;
177
+ //如果没有流程实例id 创建流程
178
+ if (this.bpmBtn.id == 'bpmSaveOrUpdateBtn') {
179
+ this.$message.success(_this.$t('base.operation.save_success'));
180
+ }
181
+ if (this.ruleEngine.procInstId == undefined || this.ruleEngine.procInstId == '') {
182
+ this.MeritBPM.startProcess(this, this.bpmBtn, function(params) {
183
+ _this.bpmBtn.isSave = '1';
184
+ _this.MeritBPM.doSend(_this, _this.bpmBtn);
185
+ });
186
+ } else {
187
+ if (this.bpmBtn.id == 'bpmSaveOrUpdateBtn') {
188
+ // 点击保存按钮
189
+ this.MeritBPM.runRuleEngine(this, _this.bpmBtn, {});
190
+ } else {
191
+ //点击填写意见、发送按钮,更新流程操作按钮
192
+ this.bpmBtn.isSave = '1';
193
+ this.MeritBPM.doSend(this, this.bpmBtn);
194
+ }
195
+ }
196
+ },
197
+
198
+ // 判断是否存在回调函数,如果存在,回调
199
+ bpmCustomFunction() {
200
+ if (this.customFun != undefined && typeof this.customFun == 'function') {
201
+ this.customFun.apply();
202
+ }
203
+ },
204
+ //关闭按钮事件
205
+ bpmClose() {
206
+ //关闭按钮事件,如果有父窗口,则调用父窗口的监听事件
207
+ if (window.opener && window.opener.refreshBpmGrid) {
208
+ window.opener.refreshBpmGrid();
209
+ window.close();
210
+ } else {
211
+ window.close();
212
+ }
213
+ }
214
+ }
215
+ };
216
+ </script>
@@ -0,0 +1,7 @@
1
+ import bpmFormTools from './bpm-form-tools.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmFormTools.install = function(Vue) {
5
+ Vue.component(bpmFormTools.name, bpmFormTools);
6
+ };
7
+ export default bpmFormTools;
@@ -0,0 +1,5 @@
1
+ 流程表单工具组件
2
+
3
+ 封装表单流程按钮组件
4
+
5
+ 封装意见填写对话框、选人对话框、控制对话框显示
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <el-col :span="7" class="cloud-bpm-grid-buttons">
3
+ <el-button
4
+ v-if="MeritBPM.procCreatePermit"
5
+ class="cloud-bpm-grid-button"
6
+ type="primary"
7
+ icon="el-icon-plus"
8
+ @click="createBpm"
9
+ >{{ $t('base.button.create') }}</el-button
10
+ >
11
+ <el-dropdown
12
+ @command="queryBpm"
13
+ class="cloud-bpm-grid-button"
14
+ v-show="isShowButton"
15
+ >
16
+ <el-button :type="getMyType">
17
+ {{ $t(bpmStatusLabel(true)) }}
18
+ <i class="el-icon-arrow-down el-icon--right"></i>
19
+ </el-button>
20
+ <el-dropdown-menu slot="dropdown">
21
+ <el-dropdown-item command="my">{{
22
+ $t('bpm.button.my')
23
+ }}</el-dropdown-item>
24
+ <el-dropdown-item command="mydraft">{{
25
+ $t('bpm.button.mydraft')
26
+ }}</el-dropdown-item>
27
+ <el-dropdown-item command="mytrack">{{
28
+ $t('bpm.button.mytrack')
29
+ }}</el-dropdown-item>
30
+ <el-dropdown-item command="myover">{{
31
+ $t('bpm.button.myover')
32
+ }}</el-dropdown-item>
33
+ </el-dropdown-menu>
34
+ </el-dropdown>
35
+ <el-dropdown
36
+ @command="queryBpm"
37
+ class="cloud-bpm-grid-button"
38
+ v-show="isShowButton"
39
+ >
40
+ <el-button :type="getAllType">
41
+ {{ $t(bpmStatusLabel(false)) }}
42
+ <i class="el-icon-arrow-down el-icon--right"></i>
43
+ </el-button>
44
+ <el-dropdown-menu slot="dropdown">
45
+ <el-dropdown-item command="all">{{
46
+ $t('bpm.button.all')
47
+ }}</el-dropdown-item>
48
+ <el-dropdown-item command="alltrack">{{
49
+ $t('bpm.button.alltrack')
50
+ }}</el-dropdown-item>
51
+ <el-dropdown-item command="allover">{{
52
+ $t('bpm.button.allover')
53
+ }}</el-dropdown-item>
54
+ </el-dropdown-menu>
55
+ </el-dropdown>
56
+ <el-button
57
+ v-show="showDeleteButton"
58
+ class="cloud-bpm-grid-button"
59
+ @click="deleteBpm"
60
+ id="deleteButton"
61
+ >{{ $t('base.button.delete') }}</el-button
62
+ >
63
+ </el-col>
64
+ </template>
65
+ <script>
66
+ import { MeritBPM } from '../utils/merit-bpm.js';
67
+ export default {
68
+ name: 'bpm-grid-buttons',
69
+ data() {
70
+ return {
71
+ MeritBPM,
72
+ myBpmStutus: 'my',
73
+ allBpmStaus: 'all',
74
+ bpmStatus: 'my',
75
+ myBpmStutusList: ['my', 'mydraft', 'mytrack', 'myundo', 'myover'],
76
+ allBpmStausList: ['all', 'alltrack', 'allover']
77
+ };
78
+ },
79
+ props: {
80
+ //流程id
81
+ procDefKey: {
82
+ type: String,
83
+ required: true
84
+ },
85
+ isShowButton: {
86
+ type: Boolean,
87
+ default: true
88
+ }
89
+ },
90
+ computed: {
91
+ showDeleteButton() {
92
+ return this.bpmStatus == 'mydraft' || this.MeritBPM.procManagePermit;
93
+ },
94
+ getMyType() {
95
+ if (this.myBpmStutusList.indexOf(this.bpmStatus) > -1) {
96
+ return 'primary';
97
+ }
98
+ },
99
+ getAllType() {
100
+ if (this.allBpmStausList.indexOf(this.bpmStatus) > -1) {
101
+ return 'primary';
102
+ }
103
+ }
104
+ },
105
+ created() {
106
+ //打开页面时,判断用户是否有新增流程删除流程的权限
107
+ let _this = this;
108
+ var flag = true;
109
+ this.MeritBPM.validatePermit(this, this.procDefKey, null);
110
+ //将流程的查询方法,添加到window窗口,用于在流程表单关闭 后刷新页面数据
111
+ window['refreshBpmGrid'] = () => {
112
+ _this.queryBpm(_this.bpmStatus, flag);
113
+ };
114
+ },
115
+ methods: {
116
+ //流程状态改变方法
117
+ queryBpm(type, flag) {
118
+ if (type.indexOf('all') != -1) {
119
+ this.allBpmStaus = type;
120
+ } else {
121
+ this.myBpmStutus = type;
122
+ }
123
+ this.bpmStatus = type;
124
+ //传入流程状态给外部方法查询数据
125
+ this.$emit('bpm-query', this.bpmStatus, flag);
126
+ },
127
+ //流程新建方法
128
+ createBpm() {
129
+ MeritBPM.create(this, this.procDefKey, {});
130
+ },
131
+ //删除流程方法
132
+ deleteBpm() {
133
+ this.$emit('bpm-delete');
134
+ },
135
+ bpmStatusLabel(mystauts) {
136
+ return 'bpm.button.' + (mystauts ? this.myBpmStutus : this.allBpmStaus);
137
+ }
138
+ }
139
+ };
140
+ </script>
@@ -0,0 +1,7 @@
1
+ import bpmGridButtons from './bpm-grid-buttons.vue';
2
+
3
+ /* istanbul ignore next */
4
+ bpmGridButtons.install = function(Vue) {
5
+ Vue.component(bpmGridButtons.name, bpmGridButtons);
6
+ };
7
+ export default bpmGridButtons;
@@ -0,0 +1,5 @@
1
+ 流程应用列表按钮组件
2
+
3
+ 根据流程权限渲染新建和删除按钮
4
+
5
+ 根据人员的权限属性 渲染流程不同类型的查询条件
@@ -0,0 +1,189 @@
1
+ <template>
2
+ <el-col :span="7" class="cloud-bpm-grid-buttons">
3
+ <el-button
4
+ v-if="MeritBPM.procCreatePermit"
5
+ class="cloud-bpm-grid-button"
6
+ type="primary"
7
+ icon="el-icon-plus"
8
+ @click="createBpm"
9
+ >{{ $t('base.button.create') }}</el-button
10
+ >
11
+ <el-dropdown
12
+ @command="queryBpm"
13
+ class="cloud-bpm-grid-button"
14
+ v-show="isShowButton"
15
+ >
16
+ <el-button :type="getMyType">
17
+ {{ $t(bpmStatusLabel(1)) }}
18
+ <i class="el-icon-arrow-down el-icon--right"></i>
19
+ </el-button>
20
+ <el-dropdown-menu slot="dropdown">
21
+ <el-dropdown-item command="my">{{
22
+ $t('bpm.button.my')
23
+ }}</el-dropdown-item>
24
+ <el-dropdown-item command="mydraft">{{
25
+ $t('bpm.button.mydraft')
26
+ }}</el-dropdown-item>
27
+ <el-dropdown-item command="mytrack">{{
28
+ $t('bpm.button.mytrack')
29
+ }}</el-dropdown-item>
30
+ <el-dropdown-item command="myover">{{
31
+ $t('bpm.button.myover')
32
+ }}</el-dropdown-item>
33
+ </el-dropdown-menu>
34
+ </el-dropdown>
35
+ <el-dropdown
36
+ @command="queryBpm"
37
+ class="cloud-bpm-grid-button"
38
+ v-show="isShowButton"
39
+ >
40
+ <el-button :type="getMyApproveType">
41
+ {{ $t(bpmStatusLabel(2)) }}
42
+ <i class="el-icon-arrow-down el-icon--right"></i>
43
+ </el-button>
44
+ <el-dropdown-menu slot="dropdown">
45
+ <el-dropdown-item command="approve">{{
46
+ $t('bpm.button.approve')
47
+ }}</el-dropdown-item>
48
+ <el-dropdown-item command="approving">{{
49
+ $t('bpm.button.approving')
50
+ }}</el-dropdown-item>
51
+ <el-dropdown-item command="approved">{{
52
+ $t('bpm.button.approved')
53
+ }}</el-dropdown-item>
54
+ <el-dropdown-item command="reject">{{
55
+ $t('bpm.button.reject')
56
+ }}</el-dropdown-item>
57
+ </el-dropdown-menu>
58
+ </el-dropdown>
59
+ <el-dropdown
60
+ @command="queryBpm"
61
+ class="cloud-bpm-grid-button"
62
+ v-show="isShowButton"
63
+ >
64
+ <el-button :type="getAllType">
65
+ {{ $t(bpmStatusLabel(3)) }}
66
+ <i class="el-icon-arrow-down el-icon--right"></i>
67
+ </el-button>
68
+ <el-dropdown-menu slot="dropdown">
69
+ <el-dropdown-item command="all">{{
70
+ $t('bpm.button.all')
71
+ }}</el-dropdown-item>
72
+ <el-dropdown-item command="alltrack">{{
73
+ $t('bpm.button.alltrack')
74
+ }}</el-dropdown-item>
75
+ <el-dropdown-item command="allover">{{
76
+ $t('bpm.button.allover')
77
+ }}</el-dropdown-item>
78
+ </el-dropdown-menu>
79
+ </el-dropdown>
80
+ <el-button
81
+ v-show="showDeleteButton"
82
+ class="cloud-bpm-grid-button"
83
+ @click="deleteBpm"
84
+ id="deleteButton"
85
+ >{{ $t('base.button.delete') }}</el-button
86
+ >
87
+ </el-col>
88
+ </template>
89
+ <script>
90
+ import { MeritBPM } from '../utils/merit-bpm.js';
91
+ export default {
92
+ name: 'bpm-grid-buttons-new',
93
+ data() {
94
+ return {
95
+ MeritBPM,
96
+ myBpmStutus: 'my',
97
+ allBpmStaus: 'all',
98
+ approveStatus: 'approve',
99
+ bpmStatus: 'my',
100
+ myBpmStutusList: ['my', 'mydraft', 'mytrack', 'myover'],
101
+ allBpmStausList: ['all', 'alltrack', 'allover'],
102
+ approveStatusList: ['approve', 'approving', 'approved', 'reject']
103
+ };
104
+ },
105
+ props: {
106
+ //流程id
107
+ procDefKey: {
108
+ type: String,
109
+ required: true
110
+ },
111
+ isShowButton: {
112
+ type: Boolean,
113
+ default: true
114
+ }
115
+ },
116
+ computed: {
117
+ showDeleteButton() {
118
+ return this.bpmStatus == 'mydraft' || this.MeritBPM.procManagePermit;
119
+ },
120
+ getMyType() {
121
+ if (this.myBpmStutusList.indexOf(this.bpmStatus) > -1) {
122
+ return 'primary';
123
+ }
124
+ },
125
+ getAllType() {
126
+ if (this.allBpmStausList.indexOf(this.bpmStatus) > -1) {
127
+ return 'primary';
128
+ }
129
+ },
130
+ getMyApproveType() {
131
+ if (this.approveStatusList.indexOf(this.bpmStatus) > -1) {
132
+ return 'primary';
133
+ }
134
+ }
135
+ },
136
+ created() {
137
+ //打开页面时,判断用户是否有新增流程删除流程的权限
138
+ let _this = this;
139
+ var flag = true;
140
+ this.MeritBPM.validatePermit(this, this.procDefKey, null);
141
+ //将流程的查询方法,添加到window窗口,用于在流程表单关闭 后刷新页面数据
142
+ window['refreshBpmGrid'] = () => {
143
+ _this.queryBpm(_this.bpmStatus, flag);
144
+ };
145
+ },
146
+ methods: {
147
+ //流程状态改变方法
148
+ queryBpm(type, flag) {
149
+ if (type.indexOf('all') != -1) {
150
+ this.allBpmStaus = type;
151
+ } else if (type.indexOf('appro') != -1 || type.indexOf('reject') != -1) {
152
+ this.approveStatus = type;
153
+ } else {
154
+ this.myBpmStutus = type;
155
+ }
156
+ this.bpmStatus = type;
157
+ //传入流程状态给外部方法查询数据
158
+ this.$emit('bpm-query', this.bpmStatus, flag);
159
+ },
160
+ //流程新建方法
161
+ createBpm() {
162
+ MeritBPM.create(this, this.procDefKey, {});
163
+ },
164
+ //删除流程方法
165
+ deleteBpm() {
166
+ this.$emit('bpm-delete');
167
+ },
168
+ bpmStatusLabel(mystauts) {
169
+ let str = 'bpm.button.';
170
+ switch (mystauts) {
171
+ case 1:
172
+ str = str + this.myBpmStutus;
173
+ break;
174
+ case 2:
175
+ str = str + this.approveStatus;
176
+ break;
177
+ case 3:
178
+ str = str + this.allBpmStaus;
179
+ break;
180
+ default:
181
+ str = str + this.myBpmStutus;
182
+ break;
183
+ }
184
+ // return 'bpm.button.' + (mystauts ? this.myBpmStutus : this.allBpmStaus);
185
+ return str;
186
+ }
187
+ }
188
+ };
189
+ </script>