流程图 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>
相关推荐
檐下翻书1732 天前
公司组织架构调整工具 在线可视化编辑平台
论文阅读·人工智能·信息可视化·架构·去中心化·流程图
程序员JerrySUN2 天前
别再把 HTTPS 和 OTA 看成两回事:一篇讲透 HTTPS 协议、安全通信机制与 Mender 升级加密链路的完整文章
android·java·开发语言·深度学习·流程图
GOWIN革文品牌咨询3 天前
工业软件越专业越难卖?用“表达可读化”把架构图、流程图、数据图讲清
流程图
min1811234563 天前
PC流程图模板大全 中文定制化满足不同行业需求
架构·pdf·流程图
min1811234563 天前
组织结构图导出PDF 高清无水印在线生成
网络·人工智能·架构·pdf·流程图·copilot
檐下翻书1734 天前
企业组织架构图导出Word 在线编辑免费工具
人工智能·信息可视化·去中心化·word·流程图·ai编程
檐下翻书1734 天前
PC流程图模板大全 中文定制化满足不同行业需求
论文阅读·信息可视化·数据挖掘·数据分析·流程图
xiami_world4 天前
深度评测:5款AI流程图生成工具——图像识别、Mermaid支持与文档解析能力对比
人工智能·ai·信息可视化·ai作画·流程图
a1117764 天前
堆叠式流程图编辑器(html 开源)
开发语言·前端·javascript·开源·编辑器·html·流程图
min1811234564 天前
在线绘制跨职能流程图电脑端简单操作优化部门协作效率
人工智能·系统架构·pdf·流程图