|
|
@@ -98,6 +98,7 @@
|
|
|
<span class="node-name">{{ node.nodeName }}</span>
|
|
|
<el-tag v-if="node.isMyTurn" type="danger" size="small" effect="dark">待我处理</el-tag>
|
|
|
</div>
|
|
|
+ <!-- 任务分配信息 -->
|
|
|
<div v-if="node.tasks?.length" class="node-tasks">
|
|
|
<div
|
|
|
v-for="task in node.tasks"
|
|
|
@@ -111,6 +112,21 @@
|
|
|
<span v-if="task.comment" class="task-comment">{{ task.comment }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!-- 该节点的审批记录 -->
|
|
|
+ <div v-if="getNodeRecords(node.nodeId).length" class="node-records">
|
|
|
+ <div
|
|
|
+ v-for="record in getNodeRecords(node.nodeId)"
|
|
|
+ :key="record.id"
|
|
|
+ class="record-item"
|
|
|
+ >
|
|
|
+ <span class="record-operator">{{ record.operatorName || '用户' + record.operatorId }}</span>
|
|
|
+ <el-tag :type="recordActionType(record.actionResult)" size="small">
|
|
|
+ {{ recordActionText(record.actionResult) }}
|
|
|
+ </el-tag>
|
|
|
+ <span v-if="record.comment" class="record-comment">{{ record.comment }}</span>
|
|
|
+ <span class="record-time">{{ record.createTime }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-timeline-item>
|
|
|
</el-timeline>
|
|
|
@@ -171,38 +187,6 @@
|
|
|
<el-empty description="当前没有需要您处理的审批任务" />
|
|
|
</template>
|
|
|
|
|
|
- <el-divider />
|
|
|
-
|
|
|
- <!-- 审批历史 -->
|
|
|
- <h4>审批历史</h4>
|
|
|
- <div v-if="progress?.records?.length" class="record-list">
|
|
|
- <div
|
|
|
- v-for="record in progress.records"
|
|
|
- :key="record.id"
|
|
|
- class="record-item"
|
|
|
- >
|
|
|
- <div class="record-header">
|
|
|
- <span class="record-operator">{{ record.operatorName || '用户' + record.operatorId }}</span>
|
|
|
- <el-tag :type="recordActionType(record.actionResult)" size="small">
|
|
|
- {{ recordActionText(record.actionResult) }}
|
|
|
- </el-tag>
|
|
|
- <span class="record-time">{{ record.createTime }}</span>
|
|
|
- </div>
|
|
|
- <div v-if="record.comment" class="record-comment">{{ record.comment }}</div>
|
|
|
- <div v-if="record.attachmentUrls" class="record-attachments">
|
|
|
- <el-link
|
|
|
- v-for="(url, idx) in parseAttachments(record.attachmentUrls)"
|
|
|
- :key="idx"
|
|
|
- type="primary"
|
|
|
- @click="fileUpload.openPreview(url)"
|
|
|
- size="small"
|
|
|
- >
|
|
|
- 附件{{ idx + 1 }}: {{ getFileName(url) }}
|
|
|
- </el-link>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-empty v-else description="暂无审批记录" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -351,6 +335,11 @@ function timelineIcon(status: string) {
|
|
|
return undefined
|
|
|
}
|
|
|
|
|
|
+function getNodeRecords(nodeId: string) {
|
|
|
+ if (!progress.value?.records) return []
|
|
|
+ return progress.value.records.filter(r => r.nodeId === nodeId)
|
|
|
+}
|
|
|
+
|
|
|
function timelineColor(status: string) {
|
|
|
if (status === 'completed') return '#67C23A'
|
|
|
if (status === 'current') return '#E6A23C'
|
|
|
@@ -625,9 +614,13 @@ watch(() => props.modelValue, async (val) => {
|
|
|
max-height: 300px;
|
|
|
overflow-y: auto;
|
|
|
}
|
|
|
+.node-records {
|
|
|
+ margin-top: 8px;
|
|
|
+ padding-left: 12px;
|
|
|
+ border-left: 2px solid #e4e7ed;
|
|
|
+}
|
|
|
.record-item {
|
|
|
- padding: 10px 0;
|
|
|
- border-bottom: 1px solid #ebeef5;
|
|
|
+ padding: 6px 0;
|
|
|
}
|
|
|
.record-item:last-child {
|
|
|
border-bottom: none;
|