GOJS + VUE 流程图实现

前言及展示在项目中需要根据传过来的数据画出流程图,采用了GOJS插件,功能很全面,可以根据自己的需要调整,不过建议简单的流程图还是自己手写一个组件,更加便于维护和变换。有一点需要注意的是,GOJS是需要收费的,有水印,虽然可以手动去掉,但是公司用的话还是需要买。GOJS的官网上有关于在VUE中应用GOJS的小例子:Minimal GoJS Sample in Vue.js。推荐看一下,可以解决...
摘要由CSDN通过智能技术生成
前言及展示

在项目中需要根据传过来的数据画出流程图,采用了GOJS插件,功能很全面,可以根据自己的需要调整,不过建议简单的流程图还是自己手写一个组件,更加便于维护和变换。有一点需要注意的是,GOJS是需要收费的,有水印,虽然可以手动去掉,但是公司用的话还是需要买。GOJS的官网上有关于在VUE中应用GOJS的小例子:Minimal GoJS Sample in Vue.js。推荐看一下,可以解决大部分简单需求,这个例子可以满足你并行步骤数比较固定的二叉树画法的流程图。
这里写图片描述
这是官网的例子,其中模块,线,箭头等画布元素都可以交互。
由于我的并行步骤数不固定,于是在图中加入了Group(组)。先展示一下成品:
完成图
其中批次中可以包含多个项目,表示并行的步骤。

具体实现

分为两个文件:
diagram.vue && stepMap.vue
diagram.vue声明组件,stepMap引用
diagram.vue
基本声明:

<script>
    import go from 'gojs';
    let $ = go.GraphObject.make;  // 后面很多用到该变量来初始化diagram
    export default{
    
      name: 'diagram',
      props: ['modelData'],  // accept model data as a parameter
      data() {
    
         return {
    
           diagram: null,
          }; 
        },  // provide access to the GoJS Diagram

初始化diagram:

      mounted: function() {
    
        let self = this;
        let myDiagram =
          $(go.Diagram, this.$el,
            {
    
              'initialContentAlignment': go.Spot.Center,
               'isEnabled': false,  // 是否可拖拽,默认为是
              // 'toolManager.mouseWheelBehavior': go.ToolManager.WheelNone,
              'allowLink': false,   
              'allowMove': false,
              'allowRelink': false,  // 由于项目只想展示数据,我禁用了大部分图像交互操作,具体可参看官网API
              'layout': $(go.TreeLayout, {
    angle: 0, arrangement: go.TreeLayout.ArrangementHorizontal}),      // angle可控制图像展示方向
              'undoManager.isEnabled': true,
              // Model ChangedEvents get passed up to component users
              'ChangedSelection': function(e) {
    
                 self.$emit('changed-selection', e); 
                },
            });
            
        myDiagram.nodeTemplate =  //  节点的初始化设置
          $(go.Node, 'Auto',
          $(go.Shape,  // 节点形状设置
            {
    
  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
GoJS是一个用于创建交互式流程图、图表和数据可视化的JavaScript库。而Vue是一种用于构建用户界面的渐进式框架。 结合GoJS和Vue可以轻松地创建一个交互式的流程图应用。首先,我们需要在Vue项目中引入GoJS库。可以通过npm安装GoJS并引入它,或者直接在HTML文件中引入GoJS的脚本文件。 接下来,我们可以使用Vue的组件系统来构建流程图的各个组件,例如节点、连线和画布等。可以将这些组件定义为Vue的单文件组件,这样可以更好地组织和管理代码。 在Vue组件中,我们可以使用GoJS的API来创建和配置流程图。可以设置节点的属性、样式和事件处理程序等。还可以定义连线的样式和事件,以便用户可以在画布上拖拽节点和连线。 当用户对流程图进行更改时,我们可以通过Vue的数据响应机制来更新数据模型。这样,我们可以随时获取到流程图的最新状态,并将其保存或发送到服务器进行进一步处理。 另外,GoJS还提供了许多有用的功能,例如自动布局、图形导出和交互式编辑等。我们可以根据需要使用这些功能来增强我们的流程图应用。 总而言之,使用GoJS和Vue可以轻松地创建交互式的流程图应用。通过结合Vue的组件系统和GoJS的API,我们可以方便地构建和管理流程图的各个组件,并使用Vue的数据响应机制来实现流程图的动态更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值