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.
Files changed (30) hide show
  1. package/dist/cloud-module-bpm.common.js +3965 -1347
  2. package/dist/cloud-module-bpm.common.js.map +1 -1
  3. package/dist/cloud-module-bpm.css +1 -1
  4. package/dist/cloud-module-bpm.umd.js +3965 -1347
  5. package/dist/cloud-module-bpm.umd.js.map +1 -1
  6. package/dist/cloud-module-bpm.umd.min.js +6 -6
  7. package/dist/cloud-module-bpm.umd.min.js.map +1 -1
  8. package/package.json +5 -2
  9. package/packages/bpm-back-anylink-dialog/Tree.vue +222 -0
  10. package/packages/bpm-back-anylink-dialog/bpm-back-anylink-dialog.vue +466 -213
  11. package/packages/bpm-form-tools/bpm-form-tools.vue +33 -10
  12. package/packages/bpm-jump-dialog/Tree.vue +222 -0
  13. package/packages/bpm-jump-dialog/bpm-jump-dialog.vue +425 -161
  14. package/packages/bpm-jump-latest-dialog/Tree.vue +180 -41
  15. package/packages/bpm-jump-latest-dialog/bpm-jump-latest-dialog.vue +200 -30
  16. package/packages/bpm-opinion-dialog/bpm-opinion.vue +105 -44
  17. package/packages/bpm-send-read-dialog/SelectedGrid.vue +1 -1
  18. package/packages/bpm-send-read-dialog/SourceGrid.vue +90 -102
  19. package/packages/bpm-send-read-dialog/Tree.vue +145 -24
  20. package/packages/bpm-send-read-dialog/bpm-next-node.vue +3 -3
  21. package/packages/bpm-send-read-opinion-dialog/bpm-send-read-opinion.vue +35 -34
  22. package/packages/bpm-sign-dialog/SelectedGrid.vue +2 -2
  23. package/packages/bpm-sign-dialog/SourceGrid.vue +96 -113
  24. package/packages/bpm-sign-dialog/Tree.vue +125 -87
  25. package/packages/bpm-sign-dialog/bpm-next-node.vue +11 -8
  26. package/packages/bpm-user-select-dialog/SourceGrid.vue +127 -51
  27. package/packages/bpm-user-select-dialog/Tree.vue +151 -61
  28. package/packages/bpm-user-select-dialog/bpm-next-node.vue +17 -5
  29. package/packages/i18n/langs/zh_CN.js +6 -6
  30. 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
- if(window.opener){
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
- refreshCurrentPageOpionList() {
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>