From f10cf167372f2d8c4c0e14f42f361d7ab96d8347 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 03 七月 2026 13:59:00 +0800
Subject: [PATCH] Merge branch 'dev_pro2.0' of http://114.132.189.42:9002/r/mom-pro2-before into dev_pro2.0

---
 src/views/mes/pd/project/modules/workflow-timeline.vue |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/pd/project/modules/workflow-timeline.vue b/src/views/mes/pd/project/modules/workflow-timeline.vue
new file mode 100644
index 0000000..58a6d8a
--- /dev/null
+++ b/src/views/mes/pd/project/modules/workflow-timeline.vue
@@ -0,0 +1,53 @@
+<script lang="ts" setup>
+import type { MesPdWorkflowApi } from '#/api/mes/pd/workflow';
+
+import { onMounted, ref, watch } from 'vue';
+
+import { Steps } from 'ant-design-vue';
+
+import { getPdWorkflowList } from '#/api/mes/pd/workflow';
+
+const props = defineProps<{
+  projectId: number;
+}>();
+
+const loading = ref(false);
+const nodes = ref<MesPdWorkflowApi.WorkflowNode[]>([]);
+const current = ref(0);
+
+async function loadData() {
+  loading.value = true;
+  try {
+    nodes.value = await getPdWorkflowList(props.projectId);
+    const activeIndex = nodes.value.findIndex((item) => item.status !== 1);
+    current.value = activeIndex === -1 ? nodes.value.length : activeIndex;
+  } finally {
+    loading.value = false;
+  }
+}
+
+watch(
+  () => props.projectId,
+  () => loadData(),
+  { immediate: true },
+);
+
+onMounted(loadData);
+</script>
+
+<template>
+  <Steps :current="current" direction="vertical" size="small">
+    <Steps.Step
+      v-for="node in nodes"
+      :key="node.id"
+      :description="node.remark"
+      :sub-title="node.operatorName"
+      :title="node.nodeName"
+    />
+    <Steps.Step
+      v-if="!loading && nodes.length === 0"
+      description="鏆傛棤娴佺▼璁板綍锛屼繚瀛橀」鐩悗灏嗚嚜鍔ㄧ敓鎴�"
+      title="寰呭惎鍔�"
+    />
+  </Steps>
+</template>

--
Gitblit v1.9.3