Skip to content

DingFlowViewer 钉钉流程查看器

钉钉风格的流程查看器组件。支持从 API 自动加载或直接传入 BPMN XML,渲染只读流程图,支持节点点击弹出详情气泡。

基本用法

vue
<template>
  <!-- 从 API 加载(推荐) -->
  <DingFlowViewer
    :process-instance-id="instanceId"
    @ready="handleReady"
    @error="handleError"
  />

  <!-- 直接传入 BPMN XML -->
  <DingFlowViewer
    :bpmn-xml="xmlString"
    :node-instance-list="nodeList"
  />
</template>

<script setup>
import { DingFlowViewer } from '@/components/flow-designer/viewer/DingFlowViewer.vue'
import { ref } from 'vue'

const instanceId = ref(123)

const handleReady = (diagramInfo) => {
  console.log('流程图加载完成:', diagramInfo)
}
const handleError = (err) => {
  console.error('加载失败:', err)
}
</script>

Props

属性类型默认值说明
processInstanceIdString | Numbernull流程实例 ID,传此值时自动调 API 加载 BPMN XML
compactBooleanfalse紧凑模式(隐藏顶部信息条)
bpmnXmlString''直接传入 BPMN XML,跳过 API 加载
nodeInstanceListArraynull直接传入节点实例信息列表
nodesArraynull兼容后端的 ProcessDiagramInfo.nodes
nodeStatusesArray | Objectnull兼容旧版 nodeStatuses 映射

Events

事件名参数说明
readydiagramInfoAPI 数据加载完成,传递格式化后的图表信息
errorErrorAPI 加载失败

Expose 方法

方法/属性类型说明
designerobjectuseFlowDesigner() 返回值
diagramInforef当前图表信息响应式对象
loadingref加载状态
renderErrorref渲染错误信息
nodeStatusMapcomputed节点状态映射
applyXml(xml)function手动切换 BPMN XML
loadFromApi()function手动触发 API 加载
fitViewerToScreen()function自适应视图缩放

依赖

  • flowApi — 自动调 API 获取 BPMN XML
  • FlowCanvas / EdgeLayer / NodeRenderer — 自研画布渲染
  • useFlowDesigner — 状态管理
  • convertBpmnToJson — BPMN 转 JSON
  • NodeDetailPopover — 节点详情气泡

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架