1
+ <!-- 审批详情的右侧:审批流 -->
1
2
<template >
2
3
<el-timeline class =" pt-20px" >
4
+ <!-- 遍历每个审批节点 -->
3
5
<el-timeline-item
4
6
v-for =" (activity, index) in approveNodes"
5
7
:key =" index"
10
12
<div class =" flex flex-col items-start" >
11
13
<div class =" font-bold" > {{ activity.name }}</div >
12
14
<div class =" flex items-center mt-1" >
15
+ <!-- 情况一:遍历每个审批节点下的【进行中】task 任务 -->
13
16
<div v-for =" (task, idx) in activity.tasks" :key =" idx" class =" flex items-center" >
14
17
<div class =" flex items-center flex-col pr-2" >
15
18
<div class =" position-relative" v-if =" task.assigneeUser || task.ownerUser" >
19
+ <!-- 信息:头像 -->
16
20
<el-avatar
17
21
:size =" 36"
18
22
v-if =" task.assigneeUser && task.assigneeUser.avatar"
19
23
:src =" task.assigneeUser.avatar"
20
24
/>
21
25
<el-avatar v-else-if =" task.assigneeUser && task.assigneeUser.nickname" >
22
- {{ task.assigneeUser.nickname.substring(0, 1) }}</ el-avatar
23
- >
26
+ {{ task.assigneeUser.nickname.substring(0, 1) }}
27
+ </ el-avatar >
24
28
<el-avatar
25
29
v-else-if =" task.ownerUser && task.ownerUser.avatar"
26
30
:src =" task.ownerUser.avatar"
27
31
/>
28
32
<el-avatar v-else-if =" task.ownerUser && task.ownerUser.nickname" >
29
- {{ task.ownerUser.nickname.substring(0, 1) }}</el-avatar
30
- >
31
- <div
33
+ {{ task.ownerUser.nickname.substring(0, 1) }}
34
+ </el-avatar >
35
+ <!-- 信息:任务 ICON -->
36
+ <div
32
37
class =" position-absolute top-26px left-26px bg-#fff rounded-full flex items-center p-2px"
33
38
>
34
39
<Icon
39
44
</div >
40
45
</div >
41
46
<div class =" flex flex-col mt-1" >
47
+ <!-- 信息:昵称 -->
42
48
<div
43
49
v-if =" task.assigneeUser && task.assigneeUser.nickname"
44
50
class =" text-10px text-align-center"
45
- >{{ task.assigneeUser.nickname }}</div
46
51
>
52
+ {{ task.assigneeUser.nickname }}
53
+ </div >
47
54
<div
48
55
v-else-if =" task.ownerUser && task.ownerUser.nickname"
49
56
class =" text-10px text-align-center"
50
57
>
51
- {{ task.ownerUser.nickname }}</div
52
- >
58
+ {{ task.ownerUser.nickname }}
59
+ </div >
60
+ <!-- TODO @jason:审批意见,要展示哈。 -->
53
61
<!-- <div v-if="task.reason" :title="task.reason" class="text-13px text-truncate w-150px mt-1"> 审批意见: {{ task.reason }}</div> -->
54
62
</div >
55
63
</div >
56
64
</div >
65
+ <!-- 情况二:遍历每个审批节点下的【候选的】task 任务。例如说,1)依次审批,2)未来的审批任务等 -->
57
66
<div
58
67
v-for =" (user, idx1) in activity.candidateUserList"
59
68
:key =" idx1"
60
69
class =" flex items-center"
61
70
>
62
71
<div class =" flex items-center flex-col pr-2" >
63
72
<div class =" position-relative" >
73
+ <!-- 信息:头像 -->
64
74
<el-avatar :size =" 36" v-if =" user.avatar" :src =" user.avatar" />
65
75
<el-avatar v-else-if =" user.nickname && user.nickname" >
66
- {{ user.nickname.substring(0, 1) }}</el-avatar
67
- >
76
+ {{ user.nickname.substring(0, 1) }}
77
+ </el-avatar >
78
+ <!-- 信息:任务 ICON -->
68
79
<div
69
80
class =" position-absolute top-26px left-26px bg-#fff rounded-full flex items-center p-2px"
70
81
>
76
87
</div >
77
88
</div >
78
89
<div class =" flex flex-col mt-1" >
79
- <div v-if =" user.nickname" class =" text-10px text-align-center" >{{
80
- user.nickname
81
- }}</div >
90
+ <!-- 信息:昵称 -->
91
+ <div v-if =" user.nickname" class =" text-10px text-align-center" >
92
+ {{ user.nickname }}
93
+ </div >
82
94
<!-- <div v-if="task.reason" :title="task.reason" class="text-13px text-truncate w-150px mt-1"> 审批意见: {{ task.reason }}</div> -->
83
95
</div >
84
96
</div >
85
97
</div >
86
98
</div >
87
- <div v-if =" activity.status !== TaskStatusEnum.NOT_START" class =" text-#a5a5a5 text-13px mt-1" >
99
+ <!-- 信息:时间 -->
100
+ <div
101
+ v-if =" activity.status !== TaskStatusEnum.NOT_START"
102
+ class =" text-#a5a5a5 text-13px mt-1"
103
+ >
88
104
{{ getApprovalNodeTime(activity) }}
89
105
</div >
90
-
106
+
107
+ <!-- TODO @jason:审批意见,要展示哈。 -->
91
108
<!-- <div class="color-#a1a6ae text-12px mb-10px"> {{ activity.assigneeUser.nickname }}</div>
92
109
<div v-if="activity.opinion" class="text-#a5a5a5 text-12px w-100%">
93
110
<div class="mb-5px">审批意见:</div>
@@ -136,7 +153,7 @@ const statusIconMap2 = {
136
153
// 待审批
137
154
' 0' : { color: ' #e5e7ec' , icon: ' ep:loading' },
138
155
// 审批中
139
- ' 1' : { color: ' #448ef7' , icon: ' ep:loading' },
156
+ ' 1' : { color: ' #448ef7' , icon: ' ep:loading' },
140
157
// 审批通过
141
158
' 2' : { color: ' #00b32a' , icon: ' ep:circle-check-filled' },
142
159
// 审批不通过
@@ -148,8 +165,7 @@ const statusIconMap2 = {
148
165
// 委派中
149
166
' 6' : { color: ' #448ef7' , icon: ' ep:loading' },
150
167
// 审批通过中
151
- ' 7' : { color: ' #00b32a' , icon: ' ep:circle-check-filled' },
152
-
168
+ ' 7' : { color: ' #00b32a' , icon: ' ep:circle-check-filled' }
153
169
}
154
170
155
171
const statusIconMap = {
@@ -165,11 +181,11 @@ const statusIconMap = {
165
181
// 已取消
166
182
' 4' : { color: ' #cccccc' , icon: Delete },
167
183
// 回退
168
- ' 5' : { color: ' #f46b6c' , icon: Minus },
184
+ ' 5' : { color: ' #f46b6c' , icon: Minus },
169
185
// 委派中
170
186
' 6' : { color: ' #448ef7' , icon: Loading },
171
187
// 审批通过中
172
- ' 7' : { color: ' #00b32a' , icon: Check },
188
+ ' 7' : { color: ' #00b32a' , icon: Check }
173
189
}
174
190
175
191
/** 获得审批详情 */
@@ -181,42 +197,37 @@ const getApprovalDetail = async () => {
181
197
approveNodes .value = data .approveNodes
182
198
}
183
199
184
- const getApprovalNodeIcon = (taskStatus : number , nodeType : NodeType ) => {
185
-
186
- if (taskStatus == TaskStatusEnum .NOT_START ) {
200
+ const getApprovalNodeIcon = (taskStatus : number , nodeType : NodeType ) => {
201
+ if (taskStatus == TaskStatusEnum .NOT_START ) {
187
202
return statusIconMap [taskStatus ]?.icon
188
203
}
189
204
190
205
if (nodeType === NodeType .START_USER_NODE || nodeType === NodeType .USER_TASK_NODE ) {
191
206
return statusIconMap [taskStatus ]?.icon
192
207
}
193
-
194
208
}
195
209
196
210
const getApprovalNodeColor = (taskStatus : number ) => {
197
211
return statusIconMap [taskStatus ]?.color
198
212
}
199
213
200
214
const getApprovalNodeTime = (node : ProcessInstanceApi .ApprovalNodeInfo ) => {
201
-
202
- if (node .endTime ) {
215
+ if (node .endTime ) {
203
216
return ` 结束时间:${formatDate (node .endTime )} `
204
217
}
205
- if (node .startTime ) {
218
+ if (node .startTime ) {
206
219
return ` 创建时间:${formatDate (node .startTime )} `
207
220
}
208
221
}
209
222
210
- /**
211
- * 重新刷新审批详情
212
- */
213
- const refresh = () => {
223
+ /** 重新刷新审批详情 */
224
+ const refresh = () => {
214
225
getApprovalDetail ()
215
226
}
216
227
217
228
defineExpose ({ refresh })
218
229
219
230
onMounted (async () => {
220
- getApprovalDetail ()
231
+ await getApprovalDetail ()
221
232
})
222
233
</script >
0 commit comments