@lambo-design-mobile/workflow-approve 1.0.0-beta.24 → 1.0.0-beta.26

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/CHANGELOG.md CHANGED
@@ -1,4 +1,19 @@
1
1
  # Changelog
2
+ ## [1.0.0-beta.26](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.25...@lambo-design-mobile/workflow-approve@1.0.0-beta.26) (2026-03-30)
3
+
4
+
5
+ ### ✨ Features | 新功能
6
+
7
+ * **审批组件:** 连续减签同一人失败问题修复 ([3815640](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/3815640a78b55b92aa9eb352d8e92f5d963f53b3))
8
+
9
+ ## [1.0.0-beta.25](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.24...@lambo-design-mobile/workflow-approve@1.0.0-beta.25) (2026-03-18)
10
+
11
+
12
+ ### ✨ Features | 新功能
13
+
14
+ * **审批组件:** 选人框查询问题修复 ([7712bab](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/7712babcead1d9838ef17672370fe2a1a37f828d))
15
+ * **审批组件:** 增加驳回判断优化 ([90c270b](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/90c270b13f13a44d83502c0081d885a8083be75e))
16
+
2
17
  ## [1.0.0-beta.24](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.23...@lambo-design-mobile/workflow-approve@1.0.0-beta.24) (2026-03-03)
3
18
 
4
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design-mobile/workflow-approve",
3
- "version": "1.0.0-beta.24",
3
+ "version": "1.0.0-beta.26",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -15,8 +15,8 @@
15
15
  "devDependencies": {
16
16
  "standard-version": "^9.5.0",
17
17
  "@lambo-design-mobile/lambo-scan-code": "^1.0.0-beta.1",
18
- "@lambo-design-mobile/upload-file": "^1.0.0-beta.16",
19
- "@lambo-design-mobile/shared": "^1.0.0-beta.21"
18
+ "@lambo-design-mobile/shared": "^1.0.0-beta.21",
19
+ "@lambo-design-mobile/upload-file": "^1.0.0-beta.16"
20
20
  },
21
21
  "scripts": {
22
22
  "release": "pnpm release-beta && git push --follow-tags && pnpm re-publish",
@@ -692,9 +692,7 @@ export default {
692
692
  methods: {
693
693
  getAuditStatus,
694
694
  initData() {
695
- if (!this.handleButtons){
696
- this.getHandleButtons();
697
- }
695
+ this.getHandleButtons();
698
696
  if (!this.isDetail) this.getTaskStatus();
699
697
  this.getProcessHistory();
700
698
  this.getNextNodes();
@@ -760,8 +758,8 @@ export default {
760
758
  getNodeData(this.procId, this.taskNode).then(resp => {
761
759
  if (resp.data.code === '200') {
762
760
  const data = resp.data.data[0]
763
- this.handleButtons = data.handleButtons ? data.handleButtons : ["processTrace", "auditHistory", "auditOpinion", "attachmentFile", "auditTo30", "auditTo70", "auditTo40", "auditTo90", "auditTo80", "auditTo82", "auditTo50"];
764
- this.coSignVotingTask = data.handleButtons && data.handleButtons.includes('coSignVoting')
761
+ this.handleButtons = this.handleButtons ? this.handleButtons : data.handleButtons ? data.handleButtons : ["processTrace", "auditHistory", "auditOpinion", "attachmentFile", "auditTo30", "auditTo70", "auditTo40", "auditTo90", "auditTo80", "auditTo82", "auditTo50"];
762
+ this.coSignVotingTask = this.handleButtons && this.handleButtons.includes('coSignVoting')
765
763
  this.nextAssigneeSelectionType = data.nextAssigneeSelectionType;
766
764
  this.passName = data.handleName;
767
765
  this.rejectName = data.rejectName;
@@ -1131,7 +1129,7 @@ export default {
1131
1129
  } else if (updateType === '83') {
1132
1130
  getUnapprovedListOfMultiNode(self.taskId).then(res => {
1133
1131
  if (res.data.code === '200') {
1134
- self.unapprovedAssigneeList = res.data.data.map(item => ({...item, userId: item.auditId, organName: item.auditUserOrgan ? item.auditUserOrgan.split(':')[1] : '未知部门'}))
1132
+ self.unapprovedAssigneeList = res.data.data.map(item => ({...item, userName: item.auditName, userId: item.auditId, organName: item.auditUserOrgan ? item.auditUserOrgan.split(':')[1] : '未知部门'}))
1135
1133
  self.selectReductionUserPopupShow = true
1136
1134
  } else {
1137
1135
  Toast.fail(resp.data.message)
@@ -1265,7 +1263,7 @@ export default {
1265
1263
  } else {
1266
1264
  // 前序节点只有一个会签节点才可选择驳回人员
1267
1265
  self.showRejectToSelected = result.data.length === 1 && result.data[0].handleButtons?.includes('rejectToSelected')
1268
- self.nodeList = result.data
1266
+ self.nodeList = Array.isArray(result.data) ? result.data : []
1269
1267
  self.radio = 0
1270
1268
  if (self.showRejectToSelected && !self.handleButtons?.includes('rejectProcessControl')) {
1271
1269
  self.rejectAttributesBoxShow = true
@@ -1308,7 +1306,7 @@ export default {
1308
1306
  getProcessAttributes(self.procId, self.taskNode).then(resp => {
1309
1307
  if (resp.data.code === '200') {
1310
1308
  if ((self.auditParams.auditResult == '70' && !resp.data.data.jumpFirstNode) || (self.auditParams.auditResult == '40' && (resp.data.data.multiNode || resp.data.data.preNodeGateway))) {
1311
- if (self.showRejectToSelected) {
1309
+ if (self.showRejectToSelected && self.nodeList.length > 0) {
1312
1310
  self.rejectAttributesBoxShow = true
1313
1311
  return
1314
1312
  }
@@ -1659,6 +1657,11 @@ export default {
1659
1657
  self.getProcessAttributes(val)
1660
1658
  }
1661
1659
  },
1660
+ selectReductionUserPopupShow(newVal) {
1661
+ if (newVal) {
1662
+ this.reductionUsers = [];
1663
+ }
1664
+ }
1662
1665
  }
1663
1666
 
1664
1667
  };
@@ -144,11 +144,15 @@ export default {
144
144
  this.personList.rows = this.userRangeList
145
145
  this.personList.total = this.userRangeList.length
146
146
  return
147
- }
148
- this.useUserTransferRange = false
149
- if (this.orgList && this.orgList.length > 0){
150
- this.organizeIdList = this.orgList.map(item => item.orgId)
151
- this.orgTreeType = this.organTreeType;
147
+ }
148
+ this.useUserTransferRange = false
149
+ this.personList.total = 0;
150
+ this.personList.rows = [];
151
+ this.finished = false;
152
+ this.loading = false;
153
+ if (this.orgList && this.orgList.length > 0){
154
+ this.organizeIdList = this.orgList.map(item => item.orgId)
155
+ this.orgTreeType = this.organTreeType;
152
156
  this.searchForm = {
153
157
  ...this.searchForm,
154
158
  orgTreeType: this.organTreeType,
@@ -180,33 +184,43 @@ export default {
180
184
  })
181
185
  }
182
186
  },
183
- handleLoad() {
184
- console.log("触发加载")
185
- this.loading = true;
186
- if (this.useUserTransferRange){
187
- this.personList.rows = this.searchForm.userName ? this.userRangeList.map(item => item.userName === this.searchForm.userName) : this.userRangeList
188
- this.personList.total = this.personList.rows.length;
189
- this.loading = false;
190
- return
191
- }
187
+ handleLoad() {
188
+ if (this.loading || this.finished) {
189
+ return
190
+ }
191
+ console.log("触发加载")
192
+ this.loading = true;
193
+ if (this.useUserTransferRange){
194
+ this.personList.rows = this.searchForm.userName ? this.userRangeList.map(item => item.userName === this.searchForm.userName) : this.userRangeList
195
+ this.personList.total = this.personList.rows.length;
196
+ this.finished = true;
197
+ this.loading = false;
198
+ return
199
+ }
192
200
  const offset = this.personList.rows.length;
193
201
  const limit = 10;
194
202
 
195
- getUserList(offset, limit, this.searchForm).then(res => {
196
- const result = res.data;
197
- if (result.code === "1") {
198
- //返回的数据添加到 personList 中
199
- this.personList.rows = this.personList.rows.concat(result.data.rows);
200
- this.personList.total = result.data.total;
201
- }
202
-
203
- this.loading = false;
204
- this.finished = this.personList.rows.length >= this.personList.total;
205
-
206
- }).catch(error => {
207
- console.error('Error fetching data:', error);
208
- this.loading = false;
209
- });
203
+ getUserList(offset, limit, this.searchForm).then(res => {
204
+ const result = res.data;
205
+ if (result.code === "1") {
206
+ //返回的数据添加到 personList 中
207
+ const newRows = Array.isArray(result.data.rows) ? result.data.rows : [];
208
+ this.personList.rows = this.personList.rows.concat(newRows);
209
+ const total = Number(result.data.total);
210
+ if (!Number.isNaN(total)) {
211
+ this.personList.total = total;
212
+ }
213
+ const noMoreByPage = newRows.length < limit;
214
+ const noMoreByTotal = this.personList.total > 0 && this.personList.rows.length >= this.personList.total;
215
+ this.finished = noMoreByPage || noMoreByTotal;
216
+ }
217
+
218
+ this.loading = false;
219
+
220
+ }).catch(error => {
221
+ console.error('Error fetching data:', error);
222
+ this.loading = false;
223
+ });
210
224
  },
211
225
 
212
226
  extractUsers(permScope) {
@@ -240,11 +254,13 @@ export default {
240
254
  resetSearch() {
241
255
  this.initSearch()
242
256
  },
243
- resetAndLoadPersonList() {
244
- this.personList.total = 0;
245
- this.personList.rows = [];
246
- this.handleLoad();
247
- },
257
+ resetAndLoadPersonList() {
258
+ this.personList.total = 0;
259
+ this.personList.rows = [];
260
+ this.finished = false;
261
+ this.loading = false;
262
+ this.handleLoad();
263
+ },
248
264
  handleSelect(handle) {
249
265
  if (handle === 'select') {
250
266
  // 触发自定义事件 'selectHandle',并传递 this.checkResult
@@ -85,7 +85,7 @@
85
85
  <script>
86
86
  import Viewer from "bpmn-js/lib/Viewer";
87
87
  import { Toast } from "vant";
88
- import {getHisAudit, getPrintData, printData, renderFutureNode} from "../api";
88
+ import {getHisAudit, getPrintData, printData, renderFutureNode, getNodeData} from "../api";
89
89
  import ApprovalNodeCell from "./ApprovalNodeCell.vue";
90
90
  import { getAuditStatus } from './js/global';
91
91
  import FlowNodeCell from "./FlowNodeCell.vue"; // 根据路径修改
@@ -116,10 +116,18 @@ export default {
116
116
  },
117
117
  predictButtonEnabled: {
118
118
  type: Boolean,
119
- default: false,
119
+ required: false,
120
120
  },
121
121
  },
122
122
  mounted() {
123
+ if (this.predictButtonEnabled == null && this.taskNode){
124
+ getNodeData(this.procId, this.taskNode).then(resp => {
125
+ if (resp.data.code === '200') {
126
+ const data = resp.data.data[0]
127
+ this.predictButtonEnabled = data.handleButtons && data.handleButtons.includes("predictiveRoute")
128
+ }
129
+ })
130
+ }
123
131
  this.getPrintData()
124
132
  // this.getHisAudit()
125
133
  this.onTrack()
@@ -630,7 +638,7 @@ export default {
630
638
 
631
639
  if (matchedRecords.length > 0) {
632
640
  const getTime = (record) => {
633
- const timeStr = record.auditDate || record.createTime;
641
+ const timeStr = record.auditDate || record.startDate || record.createTime;
634
642
  return new Date(timeStr).getTime();
635
643
  };
636
644