@lambo-design-mobile/workflow-approve 1.0.0-beta.15 → 1.0.0-beta.17

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,13 @@
1
1
  # Changelog
2
+ ## [1.0.0-beta.17](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.16...@lambo-design-mobile/workflow-approve@1.0.0-beta.17) (2025-04-17)
3
+
4
+ ## [1.0.0-beta.16](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.15...@lambo-design-mobile/workflow-approve@1.0.0-beta.16) (2025-04-11)
5
+
6
+
7
+ ### ✨ Features | 新功能
8
+
9
+ * **workflow-approve:** 优化批量审批功能 ([95989fc](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/commit/95989fc8652a210321251f7191786e59fbbba966))
10
+
2
11
  ## [1.0.0-beta.15](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.14...@lambo-design-mobile/workflow-approve@1.0.0-beta.15) (2025-03-19)
3
12
 
4
13
  ## [1.0.0-beta.14](http://git.inspur.com/ecbh/lambo-design/lambo-design/-/compare/@lambo-design-mobile/workflow-approve@1.0.0-beta.13...@lambo-design-mobile/workflow-approve@1.0.0-beta.14) (2025-03-18)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design-mobile/workflow-approve",
3
- "version": "1.0.0-beta.15",
3
+ "version": "1.0.0-beta.17",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "devDependencies": {
16
16
  "@lambo-design-mobile/lambo-scan-code": "^1.0.0-beta.1",
17
- "@lambo-design-mobile/upload-file": "^1.0.0-beta.10",
17
+ "@lambo-design-mobile/upload-file": "^1.0.0-beta.13",
18
18
  "@lambo-design-mobile/shared": "^1.0.0-beta.18"
19
19
  },
20
20
  "scripts": {
@@ -58,10 +58,10 @@
58
58
  icon-size="18px">全选
59
59
  </van-checkbox>
60
60
  </div>
61
- <div class="bar-item" @click="batchApproval(1)">批量驳回</div>
62
- <div class="bar-item approve" @click="batchApproval(0)">批量通过</div>
61
+ <div v-if="showBatchReject" class="bar-item" @click="batchApproval(1)">批量驳回</div>
62
+ <div class="bar-item approve" :style="approveButtonStyle" @click="batchApproval(0)">批量通过</div>
63
63
  </div>
64
- <van-dialog v-model="batchApprovalDialog" :before-close="handleBeforeClose" @confirm="batchApprovalSubmit"
64
+ <van-dialog v-model="batchApprovalDialog" :before-close="handleBeforeClose"
65
65
  :title="this.batchApprovalForm.approvalStatus===0 ?'批量通过':'批量驳回'"
66
66
  show-cancel-button>
67
67
  <van-field ref="auditOpinionField" v-model="batchApprovalForm.auditOpinion"
@@ -70,8 +70,9 @@
70
70
  label="审批意见"
71
71
  type="textarea"
72
72
  maxlength="50"
73
- placeholder="请输入审批意见"
73
+ :placeholder="this.batchApprovalForm.approvalStatus===0 ? '请输入审批意见(选填)' : '请输入审批意见(必填)'"
74
74
  show-word-limit
75
+ :class="{'required-field': this.batchApprovalForm.approvalStatus===1}"
75
76
  />
76
77
  </van-dialog>
77
78
  <van-popup v-model="searchFilterShow" ref="searchPopup" position="top"
@@ -145,6 +146,11 @@ export default {
145
146
  type: String,
146
147
  default: ''
147
148
  },
149
+ // 控制批量驳回按钮是否显示
150
+ showBatchReject: {
151
+ type: Boolean,
152
+ default: false
153
+ },
148
154
  // 新增 4 个路由 name 参数
149
155
  businessDetailsRouterName: {
150
156
  type: String,
@@ -202,6 +208,16 @@ export default {
202
208
  return {
203
209
  backgroundImage: this.headerBackground ? `url(${this.headerBackground})` : `url(${this.todoBackImage})`
204
210
  }
211
+ },
212
+ // 根据是否显示批量驳回按钮动态调整批量通过按钮样式
213
+ approveButtonStyle() {
214
+ if (!this.showBatchReject) {
215
+ return {
216
+ 'flex': '2',
217
+ 'margin': '0 20px 0 60px'
218
+ }
219
+ }
220
+ return {}
205
221
  }
206
222
  },
207
223
  methods: {
@@ -282,6 +298,11 @@ export default {
282
298
  Toast.fail(msg);
283
299
  },
284
300
  batchApproval(status) {
301
+ // 如果是驳回操作,但驳回按钮被禁用,则不执行操作
302
+ if (status === 1 && !this.showBatchReject) {
303
+ return;
304
+ }
305
+
285
306
  if (this.checkResult.length > 10) {
286
307
  Toast.fail("最多同时审批十条记录");
287
308
  return;
@@ -300,6 +321,22 @@ export default {
300
321
  this.batchApprovalForm.approvalStatus = status;
301
322
  this.batchApprovalDialog = true;
302
323
  },
324
+ handleBeforeClose(action, done) {
325
+ if (action === 'confirm') {
326
+ // 驳回(status=1)时审批意见必填,通过(status=0)时审批意见可选
327
+ if (this.batchApprovalForm.approvalStatus === 1 && !this.batchApprovalForm.auditOpinion) {
328
+ Toast("驳回操作必须填写审批意见");
329
+ return done(false);
330
+ }
331
+ // 校验通过,关闭对话框,然后提交审批
332
+ done();
333
+ this.batchApprovalSubmit();
334
+ } else {
335
+ // 取消操作,直接关闭对话框
336
+ done();
337
+ this.batchApprovalForm.auditOpinion = '';
338
+ }
339
+ },
303
340
  async batchApprovalSubmit() {
304
341
  const flowIds = this.checkResult.join(",");
305
342
  const status = this.batchApprovalForm.approvalStatus;
@@ -311,23 +348,16 @@ export default {
311
348
  this.checkResult = [];
312
349
  this.onSearch();
313
350
  Toast.success("审批成功");
351
+ // 成功后清空审批意见
352
+ this.batchApprovalForm.auditOpinion = '';
353
+ } else {
354
+ Toast.fail(res.data.message || "审批失败");
314
355
  }
315
356
  } catch (error) {
316
357
  console.error('Error submitting batch approval:', error);
317
358
  Toast.fail("审批失败");
318
359
  }
319
360
  },
320
- handleBeforeClose(action, done) {
321
- if (action === 'confirm' && !this.batchApprovalForm.auditOpinion) {
322
- Toast("审批信息不能为空");
323
- return done(false);
324
- }
325
- if (action === 'confirm') {
326
- this.batchApprovalSubmit();
327
- }
328
- done();
329
- this.batchApprovalForm.auditOpinion = '';
330
- },
331
361
  batchSelect(checked) {
332
362
  if (checked) {
333
363
  this.$refs.todoListCard.checkAll();
@@ -518,4 +548,17 @@ export default {
518
548
  background: linear-gradient(90deg, rgba(0, 150, 255, 0.8), rgba(22, 119, 255, 0.79));
519
549
  }
520
550
 
521
- </style>
551
+ .required-field {
552
+ border-color: red;
553
+ }
554
+
555
+ .required-field ::v-deep .van-field__label {
556
+ color: #f44;
557
+ }
558
+
559
+ .required-field ::v-deep .van-field__label::before {
560
+ content: '* ';
561
+ color: #f44;
562
+ }
563
+
564
+ </style>