cloud-module-bpm 6.13.2 → 6.13.3
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.
- package/dist/cloud-module-bpm.common.js +3965 -1347
- package/dist/cloud-module-bpm.common.js.map +1 -1
- package/dist/cloud-module-bpm.css +1 -1
- package/dist/cloud-module-bpm.umd.js +3965 -1347
- package/dist/cloud-module-bpm.umd.js.map +1 -1
- package/dist/cloud-module-bpm.umd.min.js +6 -6
- package/dist/cloud-module-bpm.umd.min.js.map +1 -1
- package/package.json +5 -2
- package/packages/bpm-back-anylink-dialog/Tree.vue +222 -0
- package/packages/bpm-back-anylink-dialog/bpm-back-anylink-dialog.vue +466 -213
- package/packages/bpm-form-tools/bpm-form-tools.vue +33 -10
- package/packages/bpm-jump-dialog/Tree.vue +222 -0
- package/packages/bpm-jump-dialog/bpm-jump-dialog.vue +425 -161
- package/packages/bpm-jump-latest-dialog/Tree.vue +180 -41
- package/packages/bpm-jump-latest-dialog/bpm-jump-latest-dialog.vue +200 -30
- package/packages/bpm-opinion-dialog/bpm-opinion.vue +105 -44
- package/packages/bpm-send-read-dialog/SelectedGrid.vue +1 -1
- package/packages/bpm-send-read-dialog/SourceGrid.vue +90 -102
- package/packages/bpm-send-read-dialog/Tree.vue +145 -24
- package/packages/bpm-send-read-dialog/bpm-next-node.vue +3 -3
- package/packages/bpm-send-read-opinion-dialog/bpm-send-read-opinion.vue +35 -34
- package/packages/bpm-sign-dialog/SelectedGrid.vue +2 -2
- package/packages/bpm-sign-dialog/SourceGrid.vue +96 -113
- package/packages/bpm-sign-dialog/Tree.vue +125 -87
- package/packages/bpm-sign-dialog/bpm-next-node.vue +11 -8
- package/packages/bpm-user-select-dialog/SourceGrid.vue +127 -51
- package/packages/bpm-user-select-dialog/Tree.vue +151 -61
- package/packages/bpm-user-select-dialog/bpm-next-node.vue +17 -5
- package/packages/i18n/langs/zh_CN.js +6 -6
- package/packages/utils/merit-bpm.js +121 -8
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
:key="bpmBtn.id"
|
|
7
7
|
:type="bpmBtn.type"
|
|
8
8
|
v-prevent-re-click
|
|
9
|
-
:class="bpmBtn.id"
|
|
9
|
+
:class="[bpmBtn.id, {'btn-disabled': MeritBPM.btnDisable}]"
|
|
10
10
|
@click="BPMEventBus('doSend', bpmBtn)"
|
|
11
|
+
:disabled="MeritBPM.btnDisable"
|
|
11
12
|
>{{ bpmBtn.name }}</el-button>
|
|
12
13
|
<bpm-user-select
|
|
13
14
|
:dialogVisible="MeritBPM.userSelectDialogVisible"
|
|
@@ -93,7 +94,8 @@ export default {
|
|
|
93
94
|
businessId: '', //流程业务数据id
|
|
94
95
|
procInstId: undefined, //流程实例id
|
|
95
96
|
undoId: '' //待办业务id
|
|
96
|
-
}
|
|
97
|
+
},
|
|
98
|
+
flag: false,
|
|
97
99
|
};
|
|
98
100
|
},
|
|
99
101
|
props: {
|
|
@@ -149,6 +151,7 @@ export default {
|
|
|
149
151
|
'/api/engine/bpm/process/version/' + businessId + '/' + bpmVersion
|
|
150
152
|
)
|
|
151
153
|
.then(function (res) {
|
|
154
|
+
// MeritBPM.btnDisable = false
|
|
152
155
|
if (res.data.isDifferent == 'NoBusinessData') {
|
|
153
156
|
_this.$alert('业务数据不存在!', '警告', {
|
|
154
157
|
confirmButtonText: '确定',
|
|
@@ -166,16 +169,18 @@ export default {
|
|
|
166
169
|
}
|
|
167
170
|
);
|
|
168
171
|
} else {
|
|
172
|
+
// MeritBPM.btnDisable = false
|
|
169
173
|
//业务应用保存数据的方法,保存后回调方法
|
|
170
|
-
_this.$emit('save', _this.bpmSaveAfter,bpmBtn);
|
|
174
|
+
_this.$emit('save', _this.bpmSaveAfter, bpmBtn);
|
|
171
175
|
}
|
|
172
176
|
})
|
|
173
177
|
.catch(function (err) {
|
|
174
178
|
console.log(err);
|
|
175
179
|
});
|
|
176
180
|
} else {
|
|
181
|
+
// MeritBPM.btnDisable = false
|
|
177
182
|
//业务应用保存数据的方法,保存后回调方法
|
|
178
|
-
_this.$emit('save', _this.bpmSaveAfter,bpmBtn);
|
|
183
|
+
_this.$emit('save', _this.bpmSaveAfter, bpmBtn);
|
|
179
184
|
}
|
|
180
185
|
},
|
|
181
186
|
|
|
@@ -198,17 +203,21 @@ export default {
|
|
|
198
203
|
this.MeritBPM.startProcess(this, this.bpmBtn, function (params) {
|
|
199
204
|
_this.bpmBtn.isSave = '1';
|
|
200
205
|
_this.MeritBPM.doSend(_this, _this.bpmBtn);
|
|
206
|
+
MeritBPM.btnDisable = false;
|
|
201
207
|
});
|
|
208
|
+
// MeritBPM.btnDisable = false
|
|
202
209
|
// this.bpmClose()
|
|
203
210
|
// this.repetFlag = false;
|
|
204
211
|
} else {
|
|
205
212
|
if (this.bpmBtn.id == 'bpmSaveOrUpdateBtn') {
|
|
206
213
|
// 点击保存按钮
|
|
207
214
|
this.MeritBPM.runRuleEngine(this, _this.bpmBtn, {});
|
|
215
|
+
MeritBPM.btnDisable = false
|
|
208
216
|
} else {
|
|
209
217
|
//点击填写意见、发送按钮,更新流程操作按钮
|
|
210
218
|
this.bpmBtn.isSave = '1';
|
|
211
219
|
this.MeritBPM.doSend(this, this.bpmBtn);
|
|
220
|
+
// MeritBPM.btnDisable = false
|
|
212
221
|
}
|
|
213
222
|
}
|
|
214
223
|
},
|
|
@@ -221,13 +230,14 @@ export default {
|
|
|
221
230
|
},
|
|
222
231
|
//关闭按钮事件
|
|
223
232
|
bpmClose () {
|
|
224
|
-
|
|
233
|
+
MeritBPM.btnDisable = false;
|
|
234
|
+
if (window.opener) {
|
|
225
235
|
let eles = window.opener.document.getElementsByClassName('a-GBLC')
|
|
226
|
-
if(eles && eles.length>0){
|
|
236
|
+
if (eles && eles.length > 0) {
|
|
227
237
|
this.refreshCurrentPageOpionList();
|
|
228
238
|
window.close();
|
|
229
|
-
} else{
|
|
230
|
-
|
|
239
|
+
} else {
|
|
240
|
+
//关闭按钮事件,如果有父窗口,则调用父窗口的监听事件
|
|
231
241
|
if (window.opener.refreshBpmGrid) {
|
|
232
242
|
window.opener.refreshBpmGrid();
|
|
233
243
|
window.close();
|
|
@@ -235,9 +245,9 @@ export default {
|
|
|
235
245
|
window.close();
|
|
236
246
|
}
|
|
237
247
|
}
|
|
238
|
-
}
|
|
248
|
+
}
|
|
239
249
|
},
|
|
240
|
-
|
|
250
|
+
refreshCurrentPageOpionList () {
|
|
241
251
|
// 刷新当前页面的grid列表,给AMIS定制刷新页面的方法
|
|
242
252
|
let sxBtn = window.opener.document.getElementsByClassName('a-GBLC');
|
|
243
253
|
if (sxBtn && sxBtn[0]) {
|
|
@@ -247,3 +257,16 @@ export default {
|
|
|
247
257
|
}
|
|
248
258
|
};
|
|
249
259
|
</script>
|
|
260
|
+
<style lang="less" scoped>
|
|
261
|
+
.btn-disabled {
|
|
262
|
+
// pointer-events: none;
|
|
263
|
+
cursor: not-allowed !important;
|
|
264
|
+
}
|
|
265
|
+
/deep/ .el-button.btn-disabled,
|
|
266
|
+
.el-button.btn-disabled:active,
|
|
267
|
+
.el-button.btn-disabled:focus,
|
|
268
|
+
.el-button.btn-disabled:hover {
|
|
269
|
+
cursor: not-allowed !important;
|
|
270
|
+
}
|
|
271
|
+
</style>
|
|
272
|
+
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div style="height:100%;width:100%">
|
|
3
|
+
<el-row>
|
|
4
|
+
<el-col
|
|
5
|
+
:span="24"
|
|
6
|
+
style="padding: 4px;"
|
|
7
|
+
>
|
|
8
|
+
<el-input
|
|
9
|
+
placeholder="请输入名称或编码"
|
|
10
|
+
v-model="searchName"
|
|
11
|
+
clearable
|
|
12
|
+
@clear="restart"
|
|
13
|
+
@change="searchTree"
|
|
14
|
+
@keyup.enter.native="searchTree"
|
|
15
|
+
suffix-icon="el-icon-search"
|
|
16
|
+
></el-input>
|
|
17
|
+
</el-col>
|
|
18
|
+
</el-row>
|
|
19
|
+
<el-row style="overflow-y: auto;height:91%">
|
|
20
|
+
<div>
|
|
21
|
+
<el-tree
|
|
22
|
+
class="flow-tree"
|
|
23
|
+
:data="treeNode"
|
|
24
|
+
v-show="isShow"
|
|
25
|
+
node-key="id"
|
|
26
|
+
highlight-current
|
|
27
|
+
ref="tree"
|
|
28
|
+
:props="treeProps"
|
|
29
|
+
@node-click="handelrNodeClick"
|
|
30
|
+
:default-expanded-keys="defaultExpandedKeys"
|
|
31
|
+
>
|
|
32
|
+
<span
|
|
33
|
+
class="custom-tree-node cell-hidden"
|
|
34
|
+
slot-scope="{ node, data }"
|
|
35
|
+
>
|
|
36
|
+
<!-- 通过部门层级选择标签 -->
|
|
37
|
+
<div
|
|
38
|
+
:title="node.label"
|
|
39
|
+
class="cell-hidden"
|
|
40
|
+
>
|
|
41
|
+
<span
|
|
42
|
+
v-if="data.dLevel == 0"
|
|
43
|
+
class="iconfont icon-jigou "
|
|
44
|
+
></span>
|
|
45
|
+
<span
|
|
46
|
+
v-else
|
|
47
|
+
class="iconfont icon-bumenkaoqin"
|
|
48
|
+
></span>
|
|
49
|
+
<span :title="node.label">{{ node.label }}</span>
|
|
50
|
+
</div>
|
|
51
|
+
</span>
|
|
52
|
+
</el-tree>
|
|
53
|
+
<el-tree
|
|
54
|
+
v-show="!isShow"
|
|
55
|
+
:data="treeNodeSearch"
|
|
56
|
+
ref="treeSearch"
|
|
57
|
+
node-key="id"
|
|
58
|
+
:props="treeProps"
|
|
59
|
+
@node-click="handelrNodeClick"
|
|
60
|
+
highlight-current
|
|
61
|
+
:default-expanded-keys="defaultExpandedKeys"
|
|
62
|
+
>
|
|
63
|
+
<span
|
|
64
|
+
class="custom-tree-node span-ellipsis"
|
|
65
|
+
slot-scope="{ node, data }"
|
|
66
|
+
>
|
|
67
|
+
<span
|
|
68
|
+
v-if="data.dLevel == 0"
|
|
69
|
+
class="iconfont icon-jigou"
|
|
70
|
+
></span>
|
|
71
|
+
<span
|
|
72
|
+
v-else
|
|
73
|
+
class="iconfont icon-bumenkaoqin"
|
|
74
|
+
></span>
|
|
75
|
+
<span :title="node.label">{{ node.label }}</span>
|
|
76
|
+
</span>
|
|
77
|
+
</el-tree>
|
|
78
|
+
</div>
|
|
79
|
+
</el-row>
|
|
80
|
+
</div>
|
|
81
|
+
</template>
|
|
82
|
+
<script>
|
|
83
|
+
import { Tree, Container } from 'element-ui';
|
|
84
|
+
import axios from "cloud-module-base/packages/httpConfig/http";
|
|
85
|
+
export default {
|
|
86
|
+
//初始化数据
|
|
87
|
+
data () {
|
|
88
|
+
return {
|
|
89
|
+
treeNode: [],
|
|
90
|
+
treeData: [],
|
|
91
|
+
treeNodeSearch: [],
|
|
92
|
+
defaultExpandedKeys: [],
|
|
93
|
+
searchName: '',
|
|
94
|
+
orgListUrl: "/api/identity/bpm-dept/tree-by-search", //组织机构列表筛选接口
|
|
95
|
+
orgUrl: '/api/identity/bpm-dept/tree-by-deptcodes', //组织机构树接口
|
|
96
|
+
treeProps: {
|
|
97
|
+
children: "children", //指定子树为节点对象的某个属性值
|
|
98
|
+
label: "name", //指定节点标签为节点对象的某个属性值
|
|
99
|
+
id: "id"
|
|
100
|
+
},
|
|
101
|
+
isShow: true,
|
|
102
|
+
id: "-1"
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
components: {
|
|
106
|
+
'el-tree': Tree,
|
|
107
|
+
'el-container': Container
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
props: {
|
|
111
|
+
opt: {
|
|
112
|
+
type: Object,
|
|
113
|
+
required: false
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
watch: {
|
|
117
|
+
opt: {
|
|
118
|
+
deep: true,
|
|
119
|
+
handler (opt) {
|
|
120
|
+
let _this = this;
|
|
121
|
+
let deptCodes = [];
|
|
122
|
+
_this.treeNode = [];
|
|
123
|
+
opt.bpmUsers.forEach(bpmUser => {
|
|
124
|
+
if (bpmUser.deptCode && !deptCodes.includes(bpmUser.deptCode)) {
|
|
125
|
+
deptCodes.push(bpmUser.deptCode);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
axios['bpm-engine']
|
|
129
|
+
.post(this.orgUrl, { deptCodes: deptCodes.join(',') })
|
|
130
|
+
.then(function (res) {
|
|
131
|
+
_this.treeNode = res.data;
|
|
132
|
+
_this.defaultExpandedKeys.push(res.data[0].id);
|
|
133
|
+
_this.$emit('refreshGrid', res.data[0]);
|
|
134
|
+
})
|
|
135
|
+
.catch(function (err) {
|
|
136
|
+
console.log(err);
|
|
137
|
+
});
|
|
138
|
+
},
|
|
139
|
+
immediate: true
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
//方法
|
|
143
|
+
methods: {
|
|
144
|
+
restart () {
|
|
145
|
+
let _this = this;
|
|
146
|
+
let param = {
|
|
147
|
+
page: this.currentPage,
|
|
148
|
+
rows: this.pageSize,
|
|
149
|
+
};
|
|
150
|
+
this.isShow = true;
|
|
151
|
+
_this.EventBus.$emit('refresh-source-grid', param);
|
|
152
|
+
},
|
|
153
|
+
//请求方法
|
|
154
|
+
loadNode (node, resolve) {
|
|
155
|
+
let _this = this;
|
|
156
|
+
axios['system-manager']
|
|
157
|
+
.post("/api/ou/org/tree", {
|
|
158
|
+
id: node.data.id
|
|
159
|
+
})
|
|
160
|
+
.then(function (res) {
|
|
161
|
+
resolve(res.data);
|
|
162
|
+
if (node.data.length == 0 && res.data.length > 0) {
|
|
163
|
+
_this.defaultExpandedKeys.push(res.data[0].id);
|
|
164
|
+
// _this.$nextTick(() => {
|
|
165
|
+
// _this.$refs.tree.setCurrentKey(res.data[0].id);
|
|
166
|
+
// _this.EventBus.$emit("refreshGrid", res.data[0]); //EventBus事件总线,通过emit方法与父组件沟通。$emit触发当前实例上的所有事件
|
|
167
|
+
// });
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
.catch(function (err) {
|
|
171
|
+
console.log(err);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
//节点点击事件
|
|
178
|
+
handelrNodeClick (treeNode) {
|
|
179
|
+
this.$emit('refreshGrid', treeNode);
|
|
180
|
+
},
|
|
181
|
+
searchTree () {
|
|
182
|
+
let _this = this;
|
|
183
|
+
if (_this.searchName == null || _this.searchName == '') {
|
|
184
|
+
_this.treeNodeSearch = [];
|
|
185
|
+
_this.isShow = true;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let deptCodes = [];
|
|
189
|
+
this.opt.bpmUsers.forEach(bpmUser => {
|
|
190
|
+
if (bpmUser.deptCode && !deptCodes.includes(bpmUser.deptCode)) {
|
|
191
|
+
deptCodes.push(bpmUser.deptCode);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
_this.isShow = false;
|
|
195
|
+
axios['bpm-engine']
|
|
196
|
+
.post(this.orgListUrl, {
|
|
197
|
+
search: this.searchName,
|
|
198
|
+
deptCodes: deptCodes.join(',')
|
|
199
|
+
})
|
|
200
|
+
.then(function (res) {
|
|
201
|
+
_this.treeNodeSearch = res.data;
|
|
202
|
+
_this.$nextTick(() => {
|
|
203
|
+
_this.$refs.treeSearch.setCurrentKey(res.data[0].id);
|
|
204
|
+
});
|
|
205
|
+
_this.handelrNodeClick(res.data[0]);
|
|
206
|
+
|
|
207
|
+
})
|
|
208
|
+
.catch(function (err) {
|
|
209
|
+
console.log(err);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
//页面渲染之前调用方法 函数
|
|
214
|
+
created () { },
|
|
215
|
+
//页面渲染完成调用方法 函数
|
|
216
|
+
mounted () {
|
|
217
|
+
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
</script>
|
|
221
|
+
<style scoped>
|
|
222
|
+
</style>
|