流程图 LogicFlow

流程图 LogicFlow

官方文档:https://site.logic-flow.cn/tutorial/get-started

html 复制代码
<script setup>
import { onMounted, ref } from 'vue'
import { forEach, map, has } from 'lodash-es'
import LogicFlow, { ElementState, LogicFlowUtil } from '@logicflow/core'
import { register, getTeleport } from '@logicflow/vue-node-registry'
import '@logicflow/core/es/index.css'

// 声明一个 ref 来存放该元素的引用
// 必须和模板里的 ref 同名
const activeNodeId = ref('1')
const container = ref(null)
let lf
const chartData = ref({
  // 所有的节点
  nodes: [
    {
      id: '1',
      type: 'rect',
      x: 500, // 节点中心 x 轴坐标
      y: 40,
      text: '开始',
      properties: {
        width: 150,
        height: 60,
        radius: 38, // 矩形节点特有,节点的圆角
        style: {
          stroke: '#FF8000',
          fill: activeNodeId.value === '1' ? '#FFA500' : '#ff0000',
        },
      }
    },
    {
      id: '2',
      type: 'rect', // 矩形
      x: 500,
      y: 150,
      text: '执行1',
      properties: {
        width: 150,
        height: 60,
      }
    },
    {
      id: '3',
      type: 'diamond', // 菱形
      x: 500,
      y: 270,
      text: '判断1',
      properties: {
        rx: 60,
        ry: 40,
      }
    },
    {
      id: '3-1',
      type: 'text',
      x: 480,
      y: 330,
      text: '是',
    },
    {
      id: '3-2',
      type: 'text',
      x: 630,
      y: 250,
      text: '否',
    },
    {
      id: '4',
      type: 'rect', // 矩形
      x: 500,
      y: 390,
      text: '执行2',
      properties: {
        width: 150,
        height: 60,
      }
    },
    {
      id: '5',
      type: 'rect', // 矩形
      x: 760,
      y: 390,
      text: '执行3',
      properties: {
        width: 150,
        height: 60,
      }
    },
    {
      id: '6',
      type: 'rect',
      x: 500, // 节点中心 x 轴坐标
      y: 500,
      text: '结束',
      properties: {
        width: 150,
        height: 60,
        radius: 38, // 矩形节点特有,节点的圆角
      }
    },
  ],
  // 所有的边,通过起始 sourceNodeId 和 targetNodeId 将两个节点相连。
  edges: [
    {
      type: 'polyline',
      sourceNodeId: '1',
      targetNodeId: '2',
    },
    {
      type: 'polyline',
      sourceNodeId: '2',
      targetNodeId: '3',
    },
    {
      type: 'polyline',
      sourceNodeId: '3',
      targetNodeId: '4',
    },
    {
      type: 'polyline',
      sourceNodeId: '3',
      targetNodeId: '5',
      endPoint: {
        x: 760,
        y: 360,
      },
    },
    {
      type: 'polyline',
      sourceNodeId: '4',
      targetNodeId: '6',
    },
    {
      type: 'polyline',
      sourceNodeId: '5',
      targetNodeId: '6',
      startPoint: {
        x: 760,
        y: 420,
      },
    },
  ],
})
onMounted(() => {
  lf = new LogicFlow({
    domId: 'flow',
    container: container.value,
    grid: false,
    plugins: [],
    stopZoomGraph: true, // 禁止缩放
    stopScrollGraph: true, // 禁止鼠标滚动移动画布
    stopMoveGraph: true,  // 禁止鼠标拖拽画布
    nodeTextEdit: false,
    edgeTextEdit: false,
    nodeSelectedOutline: false,
    isSilentMode: true, // 开启静默模式:画布的静默模式可以简单理解为"只读"模式,这种模式下,画布中的节点和边不可移动,不可进行文案修改,没有锚点。
    style: {
      rect: {
        stroke: '#6c8ebf',
        fill: '#dae8fc',
        strokeWidth: 2,
      },
      diamond: {
        stroke: '#6c8ebf',
        fill: '#dae8fc',
        strokeWidth: 2,
      },
      // text节点
      text: {
        color: "#000000",
        fontSize: 12,
        background: {
          fill: "transparent",
        },
      },
      // 节点文本
      nodeText: {
        color: "#000000",
        overflowMode: "default",
        lineHeight: 1.2,
        fontSize: 12,
      },
    }
  })
  lf.render(chartData.value)

  lf.on('node:click', (data) => {
    console.log(data, 'node clicked')
    activeNodeId.value = data.data.id
    console.log(activeNodeId.value)
    console.log(chartData.value)
  })
})
</script>

<template>
  <main>
    <div id="container" ref="container"></div>
  </main>
</template>

<style lang="scss" scoped>
main,
#container {
  width: 100%;
  height: 100%;
}
</style>
相关推荐
秋91 天前
AI快速生成可编辑的流程图的方法
流程图
宁静致远20212 天前
Mermaid VSCode插件制作流程图保存方法
ide·vscode·流程图
min1811234563 天前
小型网站开发简易流程步骤 在线画图工具快速生成开发流程图方法
论文阅读·信息可视化·毕业设计·流程图·论文笔记
DYuW5gBmH4 天前
Kafka 成功消费消息的完整流程图
分布式·kafka·流程图
数说星榆1817 天前
无人员伤亡车辆事故处理流程图 快速结案流程
架构·电脑·流程图·职场发展·课程设计
dajun1811234567 天前
信息系统运维管理全流程详解 在线画图工具绘制运维流程图表技巧
运维·数据库·信息可视化·流程图·旅游·论文笔记
数说星榆1817 天前
罕见病例报告流程图学术论文用
论文阅读·人工智能·流程图
fish-man7 天前
测试流程图显示
流程图
橙色日落8 天前
Vue2 + LogicFlow 实现可视化流程图编辑功能+常用属性大全
前端·vue·流程图·logicflow
数说星榆1819 天前
油气勘探数据可视化流程图制作
论文阅读·信息可视化·毕业设计·流程图·论文笔记·毕设