内容概述

本系列 “vue项目中使用bpmn-xxxx” 分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中。主要包括vue项目中bpmn使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。如果转载或通过爬虫直接爬的,格式特别丑,请来原创看:我是作者原文

前情提要

上文已经实现了节点操作的前进、后退、导入。导出等操作,今日来实现“流程图预览”,以及视图的放大缩小,效果如下:

前提:项目安装过bpmn,安装可见上篇文章

实现要点

bpmn提供了两个神器:Modeler 和 Viewer,Modeler带有左侧节点栏和右侧属性栏,点击节点可进行相应操作,Viewer是“查看”,不能更改节点,两者相互独立,可按实际需求按需引入

绘制流程图:import BpmnModeler from 'bpmn-js/lib/Modeler';

预览流程图:import BpmnViewer from 'bpmn-js/lib/Viewer';

直接上代码:

<template>
<div class="container">
<el-button type="primary" @click="previewTemp">预览</el-button>
<el-button type="success" @click="handleZoom(1)">放大</el-button>
<el-button type="warning" @click="handleZoom(-1)">缩小</el-button>
<div class="chart-preview">
<div style="clear: both;"></div>
<div class="view-canvas">
<div id="container"
v-bind:style="{width: 100 * scale + '%',height: 100 * scale + '%'}"
></div>
</div>
</div>
</div>
</template>
<script>
import jquery from 'jquery';
import BpmnViewer from 'bpmn-js/lib/Viewer'; export default {
data() {
return {
containerEl: null,
bpmnModeler: null,
scale: 1,
// 此变量为预览的xml文件数据,由于行数过多,附在了附件中,使用时,将附件整个复值到currentCanvasXml即可
currentCanvasXml: ''
};
},
methods: {
handleZoom(flag) {
if (flag < 0 && this.scale <= 1) {
return;
}
this.scale += flag;
this.$nextTick(() => {
this.bpmnModeler.get('canvas').zoom('fit-viewport');
});
},
previewTemp() {
this.containerEl = document.getElementById('container');
// 避免缓存,每次清一下
this.bpmnModeler && this.bpmnModeler.destroy();
this.scale = 1;
this.bpmnModeler = new BpmnViewer({container: this.containerEl});
const viewer = this.bpmnModeler;
this.bpmnModeler.importXML(this.currentCanvasXml, (err) => {
if (err) {
console.error(err);
} else {
// 只实现预览,核心代码以下两句足够
const canvas = viewer.get('canvas');
canvas.zoom('fit-viewport');
// 以下代码为:为节点注册鼠标悬浮事件
const eventBus = this.bpmnModeler.get('eventBus');
const overlays = this.bpmnModeler.get('overlays');
eventBus.on('element.hover', (e) => {
const $overlayHtml = jquery(` <div class="tipBox">
你好,我是悬浮框里的内容
</div>`);
overlays.add(e.element.id, {
position: {top: e.element.height, left: 0},
html: $overlayHtml
});
});
eventBus.on('element.out', () => {
overlays.clear();
});
// 注册悬浮事件结束
}
});
}
}
};
</script>
<style lang="scss">
.container {
.tipBox {
width: 200px;
background: #fff;
border-radius: 4px;
border: 1px solid #ebeef5;
padding: 12px;
}
}
</style>

后续

currentCanvasXml 为预览的xml文件数据,由于行数过多,附在了附件中(点我!点我!),使用时,将整个赋值到currentCanvasXml,代码才可以运行,否则报错!!

想获取完整源码或有问题,欢迎大家关注我的公粽号,扫下面二维码或微信搜“Lemoncool”,即可获取~

可爱的你可能还需要

vue项目中使用bpmn-流程图预览篇的更多相关文章

  1. 在Vue项目中 选择图片并预览

    最近开始使用vue做项目 在这个过程中,碰到了大多数做前端肯定经历的一个问题,就是文件上传预览 花了点时间解决,因此分享一下预览功能的解决方案 页面: <div class="sele ...

  2. vue项目中编写一个图片预览的公用组件

    今天产品提出了一个查看影像的功能需求. 在查看单据的列表中,有一列是影像字段,一开始根据单据号调用接口查看是否有图片附件,如果有则弹出一个全屏的弹出层,如果没有给出提示.而且,从列表进入详情之后,附件 ...

  3. vue项目中图片预览旋转功能

    最近项目中需要在图片预览时,可以旋转图片预览,在网上找了下,发现有一款功能强大的图片组件:viewerjs. git-hup: https://github.com/fengyuanchen/view ...

  4. vue项目中使用bpmn-番外篇(留言问题总结)

    前情提要 “vue项目中使用bpmn-xxxx”系列的七篇文章在上周已经更新完成,发表后,有小伙伴在使用时提出了一些文章中没有讲到的问题,此篇作为番外篇,将大家提出的共性问题解答一下,欢迎大家支持原创 ...

  5. vue项目中使用bpmn-节点篇

    前情提要 根据之前的操作,我们可以创建.导入.导出流程图,并对其进预览.通过此篇可以学到: 为节点添加点击.鼠标悬浮等事件 获取流程图内所有指定类型的节点 通过外部更新节点名字 获取节点实例的两种方法 ...

  6. vue项目中使用bpmn-为节点添加颜色

    内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...

  7. vue项目中使用bpmn-基础篇

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...

  8. vue项目中使用bpmn-流程图xml文件中节点属性转json结构

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...

  9. vue项目中使用bpmn-自定义platter

    前情提要 经过前四篇的学习,我们能够实现bpmn基本绘图.预览.为节点加事件加颜色等效果,这一篇我们来说,如何自定义左侧工具栏(platter),首先看一下自定义前后效果图对比: 我们本次要实现的目标 ...

随机推荐

  1. ubuntu 远程 window

    记录一下ubuntu 远程 window ubuntu先执行安装rdesktop sudo apt-get install rdesktop 终端执行: rdesktop -f  172.16.238 ...

  2. Mysql数据库设置权限

    这里使用cmd窗口进行权限设置. 以管理员账号连接数据库 创建数据库 create database 数据库名字 default charset=utf8; 查看用户 select user,host ...

  3. demo26-路径

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Verbal Arithmetic Puzzle

    2020-01-02 12:09:09 问题描述: 问题求解: 这个问题不就是小学奥数题么?都知道要暴力枚举,但是如何巧妙的枚举才是问题的关键.在打比赛的时候,我用了全排列算法,TLE了. 借鉴了别人 ...

  5. 网维大师无盘刷新B盘方法

  6. linux-manjaro下添加Yahei Hybrid Consola字体

    1.下载地址 http://www.win10zhijia.net/soft/20160921/3217.html 2.解压 unzip xxx 3.安装 sudo mkdir /usr/share/ ...

  7. linux入门系列20--Web服务之LNMP架构实战

    作为本入门系列最后一篇文章,将演示如何在CentOS7环境下搭建LNMP环境来构建个人博客网站. 常见搭建网站的方式有LAMP.LNMP.IIS.Nginx.Tomcat等等,本文演示比较流行的基于L ...

  8. ReentrantLock源码解析——虽众但写

    在看这篇文章时,笔者默认你已经看过AQS或者已经初步的了解AQS的内部过程.   先简单介绍一下ReentantLock,跟synchronized相同,是可重入的重量级锁.但是其用法则相当不同,首先 ...

  9. 磐创AI GPU租用平台上线,1小时不到1块钱

    >> 小白也能看懂的PyTorch从入门到精通系列 << 今天磐创AI GPU租赁平台上线了!!!为大家解决用GPU难的问题!一块10G显存的GPU,1小时租用费用不到1块钱, ...

  10. Android的安装

    基于VMware的Android虚拟机搭建 目录 基于VMware的Android虚拟机搭建 下载 安装 配置 使用 下载 进入VMware中国下载VMware Workstation Pro 进入f ...