当前位置: 首页 > article >正文

使用Vue-Flow创建一个流程图可视化节点坐标查询器

在开发中遇到这样一个需求,需要后端返回数据前端网页生成流程图,由于流程图使用了Vue-Flow,所以需要坐标来辅助后端生成数据。

首先引入方法并定义添加节点数据

const { updateEdge, addEdges, addNodes} = useVueFlow()
const add_nodes = () => {
    const id = nodes.length + 1
    const newNode = {
        id: `${id}`,
        label: `Node ${id}`,
        position: { x: 100, y: 100 },
        sourcePosition: Position.Right,
        targetPosition: Position.Left,
    }
    addNodes([newNode])
    nodes.push(newNode)
}

nodes的数据结构请看这篇文章:基于Vue-Flow实现可变流程图

第二步将节点改为可连接节点

function onEdgeUpdateStart(edge) {
    console.log('start update', edge)
}

function onEdgeUpdateEnd(edge) {
    console.log('end update', edge)
}

function onEdgeUpdate({ edge, connection }) {
    updateEdge(edge, connection)
}

function onConnect(params) {
    addEdges([params])
}
<VueFlow 
    :nodes="nodes" 
    :edges="edges" 
    class="test" 
    ref="vue_flow" 
    @edge-update="onEdgeUpdate"
    @connect="onConnect"
    @edge-update-start="onEdgeUpdateStart" 
    @edge-update-end="onEdgeUpdateEnd">
</VueFlow>

接下来定义查询坐标方法

let position_data = reactive([])
let edge_position_data = reactive([])
const get_position = () => {
    position_data.splice(0, position_data.length)
    edge_position_data.splice(0, edge_position_data.length)
    for (let i = 0; i < vue_flow.value.nodes.length; i++) {
        let obj = {
            id: vue_flow.value.nodes[i].id,
            label: vue_flow.value.nodes[i].data.label,
            type: vue_flow.value.nodes[i].type,
            position: vue_flow.value.nodes[i].position
        }
        let edge_obg={
            id: vue_flow.value.edges[i].id,
            source: vue_flow.value.edges[i].source,
            target: vue_flow.value.edges[i].target,
            type: vue_flow.value.edges[i].type,
        }
        position_data.push(obj)
        edge_position_data.push(edge_obg)
    }
}

使用pre标签展示数据

<div id="show_node_msg_box">
    <pre><span>nodes:</span>{{position_data }}</pre>
    <pre><span>edges:</span>{{edge_position_data }}</pre>
</div>


http://www.kler.cn/a/560366.html

相关文章:

  • 【算法】位运算
  • 4. Spring Cloud Gateway 入门与使用
  • 牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
  • JavaWeb基础专项复习4——会话对象Session and Cookie
  • 【深度学习】Java DL4J 基于MLP构建农业数据分析模型
  • 软件需求管理办法,软件开发管理指南(Word原件)
  • 纯电动轻型载货车能量流测试优化研究
  • 鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)
  • 网络安全漏洞管理要求 网络安全产品漏洞
  • Day54(补)【AI思考】-SOA,Web服务以及无状态分步解析与示例说明
  • pyecharts介绍
  • 使用Windbg调试目标进程排查C++软件异常的一般步骤与要点分享
  • DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)
  • 自然语言处理中的检索增强生成研究综述
  • NVIDIA H 系列 GPU与deepseek开源FlashMLA
  • 【CSS】HTML元素布局基础总结
  • c#丰田PLC ToyoPuc TCP协议快速读写 to c# Toyota PLC ToyoPuc读写
  • 分布式简单理解
  • STM32 利用SysTick实现高精度计时
  • Linux版本控制器Git【Ubuntu系统】