ui-process-h5 0.1.36 → 1.0.1

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 (92) hide show
  1. package/build/configure/README.md +212 -0
  2. package/build/configure/package.json +28 -0
  3. package/build/scripts/postinstall.mjs +14 -0
  4. package/build/scripts/switch-cli.mjs +4 -0
  5. package/build/scripts/utils.mjs +60 -0
  6. package/index.html +12 -0
  7. package/package.json +51 -20
  8. package/src/App.vue +222 -0
  9. package/src/assets/font-icon/iconfont.scss +57 -0
  10. package/src/assets/font-icon/iconfont.ttf +0 -0
  11. package/src/assets/img/arrow-right.png +0 -0
  12. package/src/assets/img/arrow.png +0 -0
  13. package/src/assets/img/check.png +0 -0
  14. package/src/assets/js/auth.js +65 -0
  15. package/src/assets/js/errorCode.js +6 -0
  16. package/src/assets/js/message.js +352 -0
  17. package/src/assets/js/request.js +99 -0
  18. package/src/assets/js/toast.js +239 -0
  19. package/src/assets/js/top.js +229 -0
  20. package/src/assets/js/utils.js +83 -0
  21. package/src/assets/js/vuePopper.js +123 -0
  22. package/src/assets/query.png +0 -0
  23. package/src/assets/status/check.png +0 -0
  24. package/src/assets/status/del.png +0 -0
  25. package/src/main.js +17 -0
  26. package/src/packages/attchUpload/index.js +374 -0
  27. package/src/packages/attchUpload/index.scss +143 -0
  28. package/src/packages/attchUpload/index.vue +173 -0
  29. package/src/packages/downSelect/index.js +99 -0
  30. package/src/packages/downSelect/index.scss +86 -0
  31. package/src/packages/downSelect/index.vue +57 -0
  32. package/src/packages/index.js +6 -0
  33. package/src/packages/popup/index.js +73 -0
  34. package/src/packages/popup/index.scss +173 -0
  35. package/src/packages/popup/index.vue +80 -0
  36. package/src/packages/preview/index.js +36 -0
  37. package/src/packages/preview/index.vue +15 -0
  38. package/src/packages/previewImage/index.js +281 -0
  39. package/src/packages/previewImage/index.scss +76 -0
  40. package/src/packages/previewImage/index.vue +53 -0
  41. package/src/packages/process/index.js +923 -0
  42. package/src/packages/process/index.scss +175 -0
  43. package/src/packages/process/index.vue +263 -0
  44. package/src/packages/process/operation/backNode.vue +485 -0
  45. package/src/packages/process/operation/cancel.vue +518 -0
  46. package/src/packages/process/operation/ccTask.vue +473 -0
  47. package/src/packages/process/operation/complete.vue +1126 -0
  48. package/src/packages/process/operation/counterSign.vue +590 -0
  49. package/src/packages/process/operation/delegateTask.vue +587 -0
  50. package/src/packages/process/operation/msgList.vue +174 -0
  51. package/src/packages/process/operation/restart.vue +316 -0
  52. package/src/packages/submitPopup/index.js +644 -0
  53. package/src/packages/submitPopup/index.scss +88 -0
  54. package/src/packages/submitPopup/index.vue +154 -0
  55. package/src/packages/tab/index.js +236 -0
  56. package/src/packages/tab/index.scss +177 -0
  57. package/src/packages/tab/index.vue +155 -0
  58. package/src/packages/tip/index.js +80 -0
  59. package/src/packages/tip/index.scss +121 -0
  60. package/src/packages/tip/index.vue +57 -0
  61. package/src/packages/viewAttchList/index.js +134 -0
  62. package/src/packages/viewAttchList/index.scss +76 -0
  63. package/src/packages/viewAttchList/index.vue +112 -0
  64. package/src/style.css +80 -0
  65. package/vite.config.ts +107 -0
  66. package/packages/components/approval/index.js +0 -0
  67. package/packages/components/process/index.js +0 -8
  68. package/packages/components/process/src/attchlist-upload.vue +0 -585
  69. package/packages/components/process/src/operation/backNode.vue +0 -141
  70. package/packages/components/process/src/operation/cancel.vue +0 -170
  71. package/packages/components/process/src/operation/ccTask.vue +0 -170
  72. package/packages/components/process/src/operation/complete.vue +0 -224
  73. package/packages/components/process/src/operation/counterSign.vue +0 -178
  74. package/packages/components/process/src/operation/delegateTask.vue +0 -168
  75. package/packages/components/process/src/operation/restart.vue +0 -172
  76. package/packages/components/process/src/popup.vue +0 -230
  77. package/packages/components/process/src/process.vue +0 -900
  78. package/packages/components/process/src/tab.vue +0 -459
  79. package/packages/components/process/src/tip.vue +0 -207
  80. package/packages/index.js +0 -4
  81. /package/{packages/components/process/theme → src/assets}/img/add-file.png +0 -0
  82. /package/{packages/components/process/theme → src/assets}/img/del.png +0 -0
  83. /package/{packages/components/process/theme → src/assets}/img/doc.png +0 -0
  84. /package/{packages/components/process/theme → src/assets}/img/file.png +0 -0
  85. /package/{packages/components/process/theme → src/assets}/img/image.png +0 -0
  86. /package/{packages/components/process/theme → src/assets}/img/pdf.png +0 -0
  87. /package/{packages/components/process/theme → src/assets}/img/xls.png +0 -0
  88. /package/{packages/components/process/theme → src/assets}/img/zip.png +0 -0
  89. /package/{packages/components/process/theme → src/assets}/status/error.png +0 -0
  90. /package/{packages/components/process/theme → src/assets}/status/loading.png +0 -0
  91. /package/{packages/components/process/theme → src/assets}/status/success.png +0 -0
  92. /package/{packages/components/process/src → src/packages/process}/operation/index.js +0 -0
@@ -1,900 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="process-warp">
4
- <div class="process-main" v-if="processStatus.status">
5
- <div class="process-ml-item border">
6
- <div class="process-mli-name">流程状态</div>
7
- <div class="process-mli-name" @click="handleTest">测试</div>
8
- <div class="process-mli-value">
9
- <div
10
- class="process-mliv-dd"
11
- :style="{
12
- background: getColor(processStatus.status),
13
- }"
14
- v-if="
15
- processStatus.status ||
16
- processStatus.bizStatusName
17
- "
18
- >
19
- {{
20
- processStatus.bizStatusName
21
- ? processStatus.bizStatusName
22
- : processStatus.status
23
- }}
24
- </div>
25
- </div>
26
- </div>
27
- <div class="process-ml-item border">
28
- <div class="process-mli-name">流程发起时间</div>
29
- <div class="process-mli-value">
30
- <span>{{ processStatus.createTime }}</span>
31
- </div>
32
- </div>
33
-
34
- <div
35
- class="process-ml-item"
36
- v-if="
37
- processStatus.allUserNames &&
38
- processStatus.allUserNames.length
39
- "
40
- >
41
- <div class="process-mli-name">审批节点</div>
42
- <div class="process-mli-value">
43
- <span class="process-mliv-jd">{{
44
- `${
45
- processStatus.taskState == 4
46
- ? processStatus.currUserName
47
- : processStatus.allUserNames.toString()
48
- }审批中`
49
- }}</span>
50
- </div>
51
- </div>
52
- </div>
53
- <div class="process-card" :style="{ height: processCardHeight }">
54
- <TopTab
55
- :tapList="tapList"
56
- :selfTapList="selfTapList"
57
- :processIntId="processIntId"
58
- :track="trackUrl"
59
- :taskComment="taskCommentList"
60
- >
61
- <template #default><slot></slot></template>
62
- </TopTab>
63
- </div>
64
- <div class="process-foot" v-if="isAdditional">
65
- <div class="footBtnRow">
66
- <slot name="btn"></slot>
67
- </div>
68
- </div>
69
- <div class="process-btn">
70
- <template v-if="processStatus.status != '已完成'">
71
- <div
72
- v-if="
73
- processStatus.status === '已撤销' ||
74
- processStatus.status === '已驳回'
75
- "
76
- class="top-button"
77
- :style="getBtnStyle('default')"
78
- @click="handleRestart"
79
- >
80
- 重新提交
81
- </div>
82
- <template v-else v-for="(item, index) in operBtn">
83
- <div
84
- class="top-button"
85
- :style="getBtnStyle(item.btnProps.type.toString())"
86
- :key="item.name"
87
- v-if="index < 3"
88
- @click="item.click(item.name)"
89
- >
90
- {{ item.name }}
91
- </div>
92
- </template>
93
- </template>
94
- <div
95
- class="elips"
96
- v-if="operBtn.length > 3 && actionBtn && actionBtn.length"
97
- @click="handleActionOpen"
98
- >
99
- <div class="circle"></div>
100
- <div class="circle"></div>
101
- <div class="circle"></div>
102
- </div>
103
- </div>
104
- </div>
105
- <TopPopup
106
- ref="TopPopup1"
107
- :cancel="handleCancel"
108
- :comfig="handleComfig"
109
- :titleText="titleText"
110
- >
111
- <!-- @success="operationSuccess"
112
- @fail="operationFail" -->
113
- <component
114
- :is="operationCom"
115
- ref="operationRef"
116
- :param="operationParam"
117
- @handleClosePopup1="handleClosePopup1"
118
- ></component>
119
- </TopPopup>
120
- <TopPopup
121
- ref="TopPopup2"
122
- :titleText="titleText"
123
- :isTips="true"
124
- :context="popupContext"
125
- :cancel="handleTipsCancel"
126
- :comfig="handleTipsComfig"
127
- >
128
- </TopPopup>
129
- <TopTips
130
- ref="topTips"
131
- :text="textTips"
132
- :statusTips="statusTips"
133
- :type="typeTips"
134
- />
135
- <div
136
- class="top-elips"
137
- v-if="
138
- (actionBtn && actionBtn.length) ||
139
- (taskNodeList && taskNodeList.length)
140
- "
141
- :style="
142
- actionShow
143
- ? 'transform: translateY(0)'
144
- : 'transform: translateY(100%)'
145
- "
146
- >
147
- <template v-if="taskNodeShow">
148
- <div
149
- class="top-elips-items"
150
- v-for="v in taskNodeList"
151
- @click="handleGet(v)"
152
- :key="v.taskId"
153
- >
154
- {{ v.name }}
155
- </div>
156
- </template>
157
- <template v-else>
158
- <div
159
- class="top-elips-items"
160
- v-for="v in actionBtn"
161
- @click="v.click(v.name)"
162
- :key="v.name"
163
- >
164
- {{ v.name }}
165
- </div>
166
- </template>
167
- <div
168
- class="top-elips-items top-elips-items--cancel"
169
- @click="handleActionClose"
170
- >
171
- 取消
172
- </div>
173
- </div>
174
- <div
175
- class="top-elips-mask"
176
- @click="handleActionClose"
177
- :style="
178
- actionShow
179
- ? 'visibility: visible; opacity: .7;'
180
- : 'visibility: hidden; opacity: 0;'
181
- "
182
- ></div>
183
- </div>
184
- </template>
185
-
186
- <script>
187
- import TopTab from "./tab.vue";
188
- import TopPopup from "./popup.vue";
189
- import TopTips from "./tip.vue";
190
- import * as operation from "./operation";
191
-
192
- export default {
193
- name: "TopProcess",
194
- components: {
195
- TopTab,
196
- TopPopup,
197
- TopTips,
198
- },
199
- props: {
200
- // tab控制
201
- tapList: { require: false, default: () => [], type: Array },
202
- // 自定义tab
203
- selfTapList: { require: false, default: () => [], type: Array },
204
- // 流程id
205
- processDefId: { require: true, default: "", type: String },
206
- isAdditional: { require: false, default: false, type: Boolean },
207
- isView: { default: false, type: Boolean },
208
- // 当前账号 id
209
- userId: { require: true, default: "", type: String },
210
- // 表单信息
211
- formData: { default: {}, type: Object },
212
- /**
213
- * 接口对象
214
- * getTrackUrl 获取流程图
215
- * getTaskCommentList 流程信息
216
- * getProcessInstanceById ID
217
- * queryTaskNodeList 审批记录
218
- * getProcessStatus 流程状态
219
- * getUserTaskModel 按钮信息
220
- */
221
-
222
- api: { defalut: {}, type: Object },
223
-
224
- // 弹窗开启前执行方法
225
- getVarsStatus: { default: true, type: Boolean },
226
- getVars: { default: null, type: Function },
227
- },
228
- data() {
229
- return {
230
- processStatus: {},
231
- // 底部按钮
232
- taskNode: [],
233
- taskNodeList: [],
234
- taskNodeIds: [],
235
- taskState: NaN,
236
- taskCurrent: 0,
237
- taskObj: {},
238
- taskId: "",
239
- taskNodeShow: false,
240
- //额外按钮
241
- actionShow: false,
242
- // 弹窗标题
243
- titleText: "",
244
- btnStyle: "",
245
- processIntId: "",
246
- // 流程图
247
- trackUrl: "",
248
- // 审批记录
249
- taskCommentList: [],
250
- // 节点dom
251
- operationCom: null,
252
- // 流程实例对象
253
- ProcessInsObj: {},
254
-
255
- // 确认弹窗文本
256
- popupContext: "",
257
- // 弹窗数据
258
- operationParam: {},
259
-
260
- nextTaskNode: {},
261
-
262
- //附件信息
263
- annexlabel: "",
264
-
265
- // 小弹窗处理逻辑类型
266
- handleTipsType: "",
267
-
268
- /* tips 相关属性 */
269
- // 文本
270
- textTips: "",
271
- // 是否为状态弹窗
272
- statusTips: false,
273
- // 状态类型
274
- typeTips: "",
275
- };
276
- },
277
- watch: {
278
- processDefId: {
279
- // 初始化获取流程相关信息
280
- async handler(val, preVal) {
281
- this.processIntId = this.processDefId;
282
- if (val) {
283
- // 流程图
284
- this.api.process
285
- .getTrackUrl({
286
- processInstId: this.processDefId,
287
- type: "mobile",
288
- })
289
- .then((res) => {
290
- if (res.code == 200) {
291
- this.trackUrl = res.data;
292
- }
293
- });
294
-
295
- // 流程信息
296
- this.api.process
297
- .getTaskCommentList({
298
- processInstId: this.processDefId,
299
- processBusinessKey: this.formData.businessKey,
300
- })
301
- .then((res) => {
302
- if (res.code == 200) {
303
- this.taskCommentList = res.data;
304
- }
305
- });
306
-
307
- // id
308
- this.api.process
309
- .getProcessInstanceById({
310
- processInstId: this.processDefId,
311
- })
312
- .then((res) => {
313
- if (res.code == 200) {
314
- this.ProcessInsObj = res.data;
315
- }
316
- });
317
-
318
- // task信息 任务节点
319
- await this.api.process
320
- .queryTaskNodeList({
321
- processInstId: this.processDefId,
322
- })
323
- .then((res) => {
324
- if (res.code == 200) {
325
- this.taskNode = res.data;
326
- this.taskNodeList = res.data;
327
- if (this.taskNodeList.length == 1) {
328
- if (this.taskNodeList[0].taskState == 4) {
329
- this.taskState = 4;
330
- return false;
331
- }
332
- if (this.taskNodeList[0].taskState == 11) {
333
- this.taskState = 11;
334
- }
335
- let tid = this.taskNodeList[0].taskId;
336
-
337
- this.handleGetProcessStatus();
338
- this.handleGetUserTaskModel();
339
- } else if (this.taskNodeList.length > 1) {
340
- this.taskNodeList.forEach((item) => {
341
- item.name = item.nodeName;
342
- });
343
- this.taskNodeShow = true;
344
- this.actionShow = true;
345
- } else {
346
- this.handleGetProcessStatus();
347
- this.handleGetUserTaskModel();
348
- }
349
- }
350
- });
351
- }
352
- },
353
- immediate: true,
354
- deep: true,
355
- },
356
- },
357
- computed: {
358
- //筛选
359
- actionBtn() {
360
- if (this.operBtn.length > 3) {
361
- return this.operBtn.slice(3);
362
- }
363
- return [];
364
- },
365
- // 按钮对象
366
- operBtn() {
367
- let btnList = [];
368
- let flag =
369
- this.taskNode &&
370
- this.taskNode[0] &&
371
- this.taskNode[0].taskState != 4;
372
-
373
- //处理
374
- if (flag && !this.isView && this.taskObj.completeButtonLabel) {
375
- let obj = {};
376
- obj.name = this.taskObj.completeButtonLabel;
377
- obj.btnProps = { type: "primary" };
378
- btnList.push(obj);
379
- obj.click = (name) => {
380
- this.$refs.TopPopup1.handleOpen();
381
- this.handleActionClose();
382
- this.showOperation(
383
- operation.complete,
384
- name,
385
- this.api.operation,
386
- this.taskObj.completeButtonAnnex
387
- );
388
- };
389
- }
390
-
391
- // 拒绝
392
- if (flag && !this.isView && this.processStatus.currUserName) {
393
- let obj = {};
394
- obj.name = "拒绝";
395
- obj.btnProps = { type: "danger" };
396
- btnList.push(obj);
397
- obj.click = (name) => {
398
- this.$refs.TopPopup1.handleOpen();
399
- this.handleActionClose();
400
- this.showOperation(
401
- operation.cancel,
402
- name,
403
- this.api.operation,
404
- this.taskObj.otherButtonAnnexList
405
- );
406
- };
407
- }
408
-
409
- // 退回
410
- if (
411
- flag &&
412
- !this.isView &&
413
- this.taskObj.buttons &&
414
- this.taskObj.buttons.length
415
- ) {
416
- this.taskObj.buttons.forEach((s) => {
417
- if (s.label === "退回") {
418
- let obj = {};
419
- obj.name = s.label;
420
- obj.btnProps = { type: "danger" };
421
- btnList.push(obj);
422
- obj.click = (name) => {
423
- this.$refs.TopPopup1.handleOpen();
424
- this.handleActionClose();
425
- this.showOperation(
426
- operation.backNode,
427
- name,
428
- this.api.operation,
429
- this.taskObj.otherButtonAnnexList
430
- );
431
- };
432
- }
433
- });
434
- }
435
-
436
- // 抄送
437
- if (flag && !this.isView && this.taskObj.ccTaskButtonLabel) {
438
- let obj = {};
439
- obj.name = this.taskObj.ccTaskButtonLabel;
440
- obj.btnProps = { type: "default" };
441
- obj.click = (name) => {
442
- this.$refs.TopPopup1.handleOpen();
443
- this.handleActionClose();
444
- this.showOperation(
445
- operation.ccTask,
446
- name,
447
- this.api.operation,
448
- this.taskObj.ccTaskButtonAnnex
449
- );
450
- };
451
- btnList.push(obj);
452
- }
453
-
454
- // 转审
455
- if (flag && !this.isView && this.taskObj.delegateTaskButtonLabel) {
456
- let obj = {};
457
- obj.name = this.taskObj.delegateTaskButtonLabel;
458
- obj.btnProps = { type: "default" };
459
- obj.click = (name) => {
460
- this.$refs.TopPopup1.handleOpen();
461
- this.handleActionClose();
462
- this.showOperation(
463
- operation.delegateTask,
464
- name,
465
- this.api.operation,
466
- this.taskObj.delegateTaskButtonAnnex
467
- );
468
- };
469
- btnList.push(obj);
470
- }
471
-
472
- // 加签
473
- if (flag && !this.isView && this.taskObj.counterSignLabel) {
474
- let obj = {};
475
- obj.name = this.taskObj.counterSignLabel;
476
- obj.btnProps = { type: "primary" };
477
- obj.click = (name) => {
478
- this.$refs.TopPopup1.handleOpen();
479
- this.handleActionClose();
480
- this.showOperation(
481
- operation.counterSign,
482
- name,
483
- this.api.operation,
484
- this.taskObj.counterSignButtonAnnex
485
- );
486
- };
487
- btnList.push(obj);
488
- }
489
-
490
- // 催办
491
- if (
492
- this.processIntId &&
493
- this.processStatus.createTopUserId == this.userId &&
494
- this.taskNode[0]?.taskState != 2 &&
495
- this.processStatus.status !== "已驳回" &&
496
- this.processStatus.status !== "已撤销"
497
- ) {
498
- let obj = {};
499
- obj.name = "催办";
500
- obj.btnProps = { type: "default" };
501
- obj.click = (name) => {
502
- this.$refs.TopPopup2.handleOpen();
503
- this.handleActionClose();
504
- this.titleText = name;
505
- this.popupContext = `确定${name}吗?`;
506
- this.handleTipsType = "催办";
507
- };
508
- btnList.push(obj);
509
- }
510
-
511
- // 撤销
512
- if (
513
- this.processIntId &&
514
- this.processStatus.createTopUserId == this.userId &&
515
- this.taskNode[0]?.taskState != 2 &&
516
- this.processStatus.status !== "已驳回" &&
517
- this.processStatus.status !== "已撤销"
518
- ) {
519
- let obj = {};
520
- obj.name = "撤销";
521
- obj.btnProps = { type: "default" };
522
- obj.click = (name) => {
523
- this.$refs.TopPopup2.handleOpen();
524
- this.handleActionClose();
525
- this.titleText = name;
526
- this.popupContext = `确定${name}吗?`;
527
- this.handleTipsType = "撤销";
528
- };
529
- btnList.push(obj);
530
- }
531
- return btnList;
532
- },
533
- // 底部高度
534
- processCardHeight() {
535
- let num = 210;
536
- // || !this.operBtn || this.operBtn?.length == 0
537
- /* if (this.ProcessInsObj.end) {
538
- num -= 80;
539
- } */
540
- if (!this.processStatus.status) num -= 140;
541
- else if (!this.processStatus.currUserName) num -= 40;
542
- return `calc(100vh - ${num}px)`;
543
- },
544
- },
545
- methods: {
546
- // 测试
547
- handleTest() {
548
- console.log("window.location", window.location);
549
- },
550
- // 集合
551
- handleGet(task) {
552
- this.taskNode = [].concat(task);
553
- this.taskNodeShow = false;
554
- this.actionShow = false;
555
- this.handleGetProcessStatus();
556
- this.handleGetUserTaskModel();
557
- },
558
- // 流程状态
559
- handleGetProcessStatus() {
560
- this.api.process
561
- .getProcessStatus({
562
- processInstId: this.processDefId,
563
- taskId: this.taskNode.length ? this.taskNode[0].taskId : "",
564
- })
565
- .then((res) => {
566
- if (res.code == 200) {
567
- this.processStatus = res.data;
568
- }
569
- });
570
- },
571
- // 按钮操作信息
572
- handleGetUserTaskModel() {
573
- this.api.process
574
- .getUserTaskModel({
575
- taskId: this.taskNode.length ? this.taskNode[0].taskId : "",
576
- })
577
- .then((res) => {
578
- if (res.code == 200) {
579
- this.taskObj = res.data;
580
- }
581
- });
582
- },
583
-
584
- // 弹窗内部渲染
585
- async showOperation(com, label, api, annex) {
586
- if (
587
- this.processStatus.allUserNames &&
588
- this.processStatus.allUserNames.length == 1
589
- ) {
590
- if (this.taskNode[0] && this.taskNode[0].nodeId) {
591
- let vars;
592
- if (this.getVarsStatus) {
593
- if (this.getVars) {
594
- vars = this.getVars();
595
- if (vars === false) {
596
- return false;
597
- }
598
- }
599
- } else {
600
- if (label === "办理") {
601
- if (this.getVars) {
602
- vars = this.getVars();
603
- if (vars === false) {
604
- return false;
605
- }
606
- }
607
- }
608
- }
609
- }
610
- }
611
- if (api) {
612
- this.operationParam.api = api;
613
- }
614
-
615
- this.annexlabel = annex;
616
- this.titleText = label;
617
- this.operationCom = com;
618
-
619
- this.operationParam.annex = annex;
620
- this.operationParam.subjectId = this.formData.subjectId;
621
- this.operationParam.processInstId = this.processIntId;
622
- this.operationParam.taskInstId = this.taskNode[0].taskId;
623
- this.operationParam.actionName = label;
624
- this.operationParam.formData = this.formData;
625
- },
626
- // 弹窗取消
627
- handleCancel() {
628
- console.log("handleCancel");
629
- },
630
- // 弹窗确认
631
- async handleComfig() {
632
- this.$refs.operationRef.confirm();
633
- },
634
- // 关闭弹窗TopPopup1
635
- handleClosePopup1() {
636
- this.$refs.TopPopup1.handleClose();
637
- },
638
- // 确认弹窗
639
- handleTipsComfig() {
640
- this.$refs.TopPopup2.handleCancel();
641
- if (this.handleTipsType == "催办") {
642
- this.handleTips("", true, "loading");
643
- this.api.operation
644
- .reminders({ processInstId: this.processIntId })
645
- .then((res) => {
646
- if (res.code == 200) {
647
- this.handleTips("催办成功", true, "success");
648
- } else {
649
- this.handleTips(res.msg, true, "error");
650
- }
651
- });
652
- }
653
- if (this.handleTipsType == "撤销") {
654
- this.handleTips("", true, "loading");
655
- this.api.operation
656
- .revoke({
657
- processInstId: this.ProcessInsObj.id,
658
- processBusinessKey: this.ProcessInsObj
659
- .processBusinessKey,
660
- })
661
- .then((res) => {
662
- if (res.code == 200) {
663
- this.handleTips("撤销成功", true, "success");
664
- } else {
665
- this.textTips = res.msg;
666
- this.typeTips = "error";
667
- this.handleTips(res.msg, true, "error");
668
- }
669
- });
670
- }
671
- },
672
- handleTipsCancel() {
673
- console.log("handleTipsCancel");
674
- },
675
-
676
- // 当前流程进度状态回显
677
- getColor(status) {
678
- if (status == "审核中") return "#FFA52D";
679
- if (status == "已驳回") return "#F14B4C";
680
- if (status == "已撤销") return "#CECECE";
681
- if (status == "已完成") return "#6DC743";
682
-
683
- return "#1389FF";
684
- },
685
- // 额外按钮tips
686
- handleActionOpen() {
687
- this.actionShow = true;
688
- },
689
- // 关闭额外按钮弹窗
690
- handleActionClose() {
691
- this.actionShow = false;
692
- },
693
- // 按钮执行方法
694
- actionClick(name) {
695
- this.$refs.TopPopup1.handleOpen();
696
- this.titleText = name;
697
- this.actionShow = false;
698
- },
699
- // 按钮状态回显
700
- getBtnStyle(type) {
701
- switch (type) {
702
- case "primary":
703
- return `background-color:#3c9cff;color:#fff`;
704
-
705
- case "danger":
706
- return `background-color:rgb(255, 230, 230);color:rgb(255, 96, 96)`;
707
-
708
- case "default":
709
- return `background-color:rgb(241, 241, 241);color:rgb(51, 51, 51)`;
710
- default:
711
- return `background-color:rgb(241, 241, 241);color:rgb(51, 51, 51)`;
712
- }
713
- },
714
- // 复活流程
715
- handleRestart() {
716
- this.$refs.TopPopup1.handleOpen();
717
- this.handleActionClose();
718
- this.showOperation(
719
- operation.restart,
720
- "重新提交",
721
- this.api.operation
722
- );
723
- },
724
- // tips公用方法(tips)
725
- handleTips(text, status, type) {
726
- this.textTips = text;
727
- this.statusTips = status;
728
- this.typeTips = type;
729
- this.$refs.topTips.handleOpen();
730
- },
731
- },
732
- };
733
- </script>
734
-
735
- <style scoped>
736
- .process-warp {
737
- overflow: hidden;
738
- height: 100vh;
739
- width: 100%;
740
- position: relative;
741
- background-color: #f3f3f7;
742
- }
743
- .process-main {
744
- display: flex;
745
- justify-content: space-between;
746
- flex-direction: column;
747
- align-items: center;
748
- padding: 0 17px;
749
- background: #fff;
750
- margin: 0 0 10px 0;
751
- }
752
-
753
- .process-main .border {
754
- border-bottom: #e8e8e8 1px solid;
755
- }
756
-
757
- .process-main .process-ml-item {
758
- display: flex;
759
- align-items: center;
760
- font-size: 15px;
761
- font-weight: 400;
762
- width: 100%;
763
- justify-content: space-between;
764
- height: 44px;
765
- }
766
-
767
- .process-main .process-ml-item .process-mli-name {
768
- color: #333333;
769
- }
770
-
771
- .process-main .process-ml-item .process-mli-value {
772
- color: #888888;
773
- }
774
-
775
- .process-main .process-ml-item .process-mli-value .process-mliv-dd {
776
- height: 26px;
777
- min-width: 30px;
778
- padding: 0 12px;
779
- border-radius: 20px;
780
- background: #1389ff;
781
- color: #fff;
782
- display: flex;
783
- align-items: center;
784
- justify-content: center;
785
- font-size: 12px;
786
- }
787
-
788
- .process-main .process-ml-item .process-mli-value .process-mliv-jd {
789
- color: #1389ff;
790
- }
791
-
792
- .process-btn {
793
- display: flex;
794
- min-height: 60px;
795
- padding-top: 5px;
796
- background: #fff;
797
- border-top: 1px solid #dddddf9e;
798
- /* box-sizing: border-box; */
799
- justify-content: center;
800
- align-items: center;
801
- flex-direction: row-reverse;
802
- }
803
-
804
- .process-btn .top-button,
805
- .process-btn .elips {
806
- margin: 0 5px;
807
- }
808
- /* .process-btn .top-button:first-child{
809
- margin-left: 0;
810
- } */
811
-
812
- .elips {
813
- min-width: 60px;
814
- height: 100%;
815
- background-color: white;
816
- display: flex;
817
- justify-content: center;
818
- align-items: center;
819
- }
820
- .elips .circle {
821
- width: 6px;
822
- height: 6px;
823
- margin: 0 2px;
824
- background-color: #333333;
825
- border-radius: 50%;
826
- }
827
- .top-elips {
828
- width: 100%;
829
- height: auto;
830
- position: fixed;
831
- left: 0;
832
- background-color: #f7f8fa;
833
- z-index: 197;
834
- border-radius: 20px 20px 0 0;
835
- box-sizing: border-box;
836
- transition: all 0.3s ease;
837
- bottom: 0;
838
- }
839
- .top-elips-mask {
840
- position: fixed;
841
- width: 100vw;
842
- height: 100vh;
843
- background-color: #000;
844
- opacity: 0.7;
845
- top: 0;
846
- left: 0;
847
- transition: all 0.5s ease;
848
- z-index: 99;
849
- display: block;
850
- }
851
- .top-elips-items {
852
- padding: 14px 36px;
853
- background-color: #fff;
854
- width: 100%;
855
- cursor: pointer;
856
- text-align: center;
857
- display: flex;
858
- justify-content: center;
859
- align-items: center;
860
- box-sizing: border-box;
861
- font-size: 16px;
862
- color: #323233;
863
- position: relative;
864
- }
865
-
866
- .top-elips-items::after {
867
- content: "";
868
- width: 100%;
869
- height: 1px;
870
- position: absolute;
871
- left: 0;
872
- top: 0;
873
- background-color: #f2f2f2;
874
- }
875
-
876
- .top-elips-items:first-child {
877
- border-radius: 20px 20px 0 0;
878
- }
879
-
880
- .top-elips-items:first-child::after,
881
- .top-elips-items:last-child::after {
882
- display: none;
883
- }
884
-
885
- .top-elips-items:nth-last-child(2) {
886
- margin-bottom: 8px;
887
- }
888
-
889
- .top-button {
890
- width: 100%;
891
- border-radius: 20px;
892
- height: 36px;
893
- background-color: #3c9cff;
894
- color: #fff;
895
- font-size: 14px;
896
- justify-content: center;
897
- display: flex;
898
- align-items: center;
899
- }
900
- </style>