ui-process-h5 0.1.32 → 0.1.36

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 (36) hide show
  1. package/package.json +6 -49
  2. package/packages/components/approval/index.js +0 -0
  3. package/packages/components/process/{index.ts → index.js} +2 -3
  4. package/packages/components/process/src/attchlist-upload.vue +585 -0
  5. package/packages/components/process/src/operation/backNode.vue +141 -0
  6. package/packages/components/process/src/operation/cancel.vue +170 -0
  7. package/packages/components/process/src/operation/ccTask.vue +170 -0
  8. package/packages/components/process/src/operation/complete.vue +224 -0
  9. package/packages/components/process/src/operation/counterSign.vue +178 -0
  10. package/packages/components/process/src/operation/delegateTask.vue +168 -0
  11. package/packages/components/process/src/operation/index.js +9 -0
  12. package/packages/components/process/src/operation/restart.vue +172 -0
  13. package/packages/components/process/src/popup.vue +176 -74
  14. package/packages/components/process/src/process.vue +900 -0
  15. package/packages/components/process/src/tab.vue +189 -197
  16. package/packages/components/process/src/tip.vue +207 -0
  17. package/packages/components/process/theme/img/add-file.png +0 -0
  18. package/packages/components/process/theme/img/del.png +0 -0
  19. package/packages/components/process/theme/img/doc.png +0 -0
  20. package/packages/components/process/theme/img/file.png +0 -0
  21. package/packages/components/process/theme/img/image.png +0 -0
  22. package/packages/components/process/theme/img/pdf.png +0 -0
  23. package/packages/components/process/theme/img/xls.png +0 -0
  24. package/packages/components/process/theme/img/zip.png +0 -0
  25. package/packages/components/process/theme/status/error.png +0 -0
  26. package/packages/components/process/theme/status/loading.png +0 -0
  27. package/packages/components/process/theme/status/success.png +0 -0
  28. package/packages/index.js +4 -0
  29. package/packages/component.ts +0 -4
  30. package/packages/components/process/src/button.vue +0 -55
  31. package/packages/components/process/src/index.vue +0 -447
  32. package/packages/components/utils/request/api.ts +0 -11
  33. package/packages/components/utils/request/cache.d.ts +0 -52
  34. package/packages/components/utils/request/cache.js +0 -99
  35. package/packages/components/utils/request/request.ts +0 -62
  36. package/packages/index.ts +0 -4
@@ -0,0 +1,900 @@
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>