antv-x6 vue流程图编辑器demo

antv-x6 vue流程图编辑器demo

效果如下:

antv-x6 vue流程图编辑器demo

<template>

    <div class="content">
        <div class="app-stencil" ref="stencilContainer">
        </div>
        <div class="app-content" id="flowContainer" ref="container">
        </div>
    </div>

</template>

<script>
    import {
   Graph, Shape, Addon, FunctionExt} from '@antv/x6';

    const {
   Stencil} = Addon
    const {
   Rect, Polygon} = Shape

    export default {
   
        name: "index",
        mounted() {
   
            this.init();
        },
        methods: {
   
            init() {
   
                const graph = new Graph({
   
                    container: this.$refs.container,
                    width: '100%',
                    height: '100%',
                    grid: {
   
                        size: 10,
                        visible: true,
                        type: 'doubleMesh',
                        args: [
                            {
   
                                color: '#f5f5f5',
                                thickness: 1
                            },
                            {
   
                                color: '#f8f8f8',
                                thickness: 1,
                                factor: 4
                            }
                        ]
                    },
                    snapline: {
   
                        enabled: true,
                        sharp: true,
                    },
                    mousewheel: {
   
                        enabled: true,
                        modifiers: ['ctrl', 'meta'],
                        minScale: 0.5,
                        maxScale: 2
                    },
                    // 画布调整
                    selecting: {
   
                        enabled: true,
                        multiple: true,
                        rubberband: true,
                        movable: true,
                        showNodeSelectionBox: true
                    },
                    connecting: {
   
                        anchor: 'center',
                        connectionPoint: 'anchor',
                        allowBlank: false,
                        highlight: true,
                        snap: true,
                        createEdge() {
   
                            return new Shape.Edge({
   
                                attrs: {
   
                                    line: {
   
                                        stroke: '#5F95FF',
                                        strokeWidth: 2,
                                        targetMarker: {
   
                                            name: 'classic',
                                            size: 8
                                        }
                                    }
                                },
                                router: {
   
                                    name: 'manhattan'
                                },
                                zIndex: 0
                            })
                        },
                        validateConnection({
   
                                               sourceView,
                                               targetView,
                                               sourceMagnet,
                                               targetMagnet
                                           }) {
   
                            if (sourceView === targetView) {
   
                                return false
                            }
                            if (!sourceMagnet) {
   
                                return false
                            }
                            if (!targetMagnet) {
   
                                return false
                            }
                            return true
                        }
                    },
                    highlighting: {
   
                        magnetAvailable: {
   
                            name: 'stroke',
                            args: {
   
                                padding: 4,
                                attrs: {
   
                                    strokeWidth: 4,
                                    stroke: 'rgba(223,234,255)'
                                }
                            }
                        }
                    },
                    snapline: true,
                    history: true,
                    clipboard: {
   
                        enabled: true
                    },
                    keyboard: {
   
                        enabled: true
                    },
                    embedding: {
   
                        enabled: true,
                        findParent({
   node}) {
   
                            const bbox = node.
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值