Pārlūkot izejas kodu

refactor: 审批纪录和流程进度合并

wuwenyi 1 nedēļu atpakaļ
vecāks
revīzija
5aff198ed3
1 mainītis faili ar 27 papildinājumiem un 34 dzēšanām
  1. 27 34
      src/views/flow/execute/InstanceDetail.vue

+ 27 - 34
src/views/flow/execute/InstanceDetail.vue

@@ -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;