vue项目中使用bpmn-流程图预览篇
内容概述
本系列 “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-流程图预览篇的更多相关文章
- 在Vue项目中 选择图片并预览
最近开始使用vue做项目 在这个过程中,碰到了大多数做前端肯定经历的一个问题,就是文件上传预览 花了点时间解决,因此分享一下预览功能的解决方案 页面: <div class="sele ...
- vue项目中编写一个图片预览的公用组件
今天产品提出了一个查看影像的功能需求. 在查看单据的列表中,有一列是影像字段,一开始根据单据号调用接口查看是否有图片附件,如果有则弹出一个全屏的弹出层,如果没有给出提示.而且,从列表进入详情之后,附件 ...
- vue项目中图片预览旋转功能
最近项目中需要在图片预览时,可以旋转图片预览,在网上找了下,发现有一款功能强大的图片组件:viewerjs. git-hup: https://github.com/fengyuanchen/view ...
- vue项目中使用bpmn-番外篇(留言问题总结)
前情提要 “vue项目中使用bpmn-xxxx”系列的七篇文章在上周已经更新完成,发表后,有小伙伴在使用时提出了一些文章中没有讲到的问题,此篇作为番外篇,将大家提出的共性问题解答一下,欢迎大家支持原创 ...
- vue项目中使用bpmn-节点篇
前情提要 根据之前的操作,我们可以创建.导入.导出流程图,并对其进预览.通过此篇可以学到: 为节点添加点击.鼠标悬浮等事件 获取流程图内所有指定类型的节点 通过外部更新节点名字 获取节点实例的两种方法 ...
- vue项目中使用bpmn-为节点添加颜色
内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...
- vue项目中使用bpmn-基础篇
内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...
- vue项目中使用bpmn-流程图xml文件中节点属性转json结构
内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...
- vue项目中使用bpmn-自定义platter
前情提要 经过前四篇的学习,我们能够实现bpmn基本绘图.预览.为节点加事件加颜色等效果,这一篇我们来说,如何自定义左侧工具栏(platter),首先看一下自定义前后效果图对比: 我们本次要实现的目标 ...
随机推荐
- iview Checkbox 多选框 v-model 赋值方法 this.innerValueArr = [this.previousValue]
iview Checkbox 多选框 v-model 赋值方法 this.innerValueArr = [this.previousValue]
- 为什么 String 是 immutable 类
二哥,你能给我说说为什么 String 是 immutable 类(不可变对象)吗?我想研究它,想知道为什么它就不可变了,这种强烈的愿望就像想研究浩瀚的星空一样.但无奈自身功力有限,始终觉得雾里看花终 ...
- Mysql优化大分页查询
如题,年前做了一个需求,涉及到Mysql大分页查询,整理一下,希望对需要的小伙伴有帮助. 背景分页查询的性能瓶颈B+树简述B+比起二叉查找树,有什么优势?分页查询过程测试集解决方法1 延迟关联法:2 ...
- 全文搜索技术--Solr7.1之配置中文分析器
前言:中国文化博大精深,但是solr只能一个一个的识别,而是更加符合中国人的习惯,所以加了中文分析器. 1.安装中文分词器 第一步:把中文分词器(ik-analyzer-solr7-7.x.jar)/ ...
- 使用 Vue.js 改写 React 的官方教程井字棋
React 的官方教程井字棋很好的引导初学者一步步走进 React 的世界,我想类似的教程对 Vue.js 的初学者应该也会有启发,于是使用 Vue.js 进行了改写 可以先查看最终的结果,尝试点击体 ...
- 基于 HTML5 WebGL 的 智慧楼宇能源监控系统
前言 21世纪,在能源危机和全球气候变暖的压力下,太阳能等可再生能源越来越受到关注,其中光伏建筑一体化逐渐成为绿色发展方式和生活方式,加强节能降耗,支持低碳产业和新能源.可再生能源发展,也已经成为国家 ...
- iphone ios app互相调用
正好要做这个,记录一下 1.ios应用程序间互相启动 2.网页如何调用自己的app http://www.dotblogs.com.tw/yang5664/archive/2012/11/24/850 ...
- 知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联).当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能. 而随着社交.电商.金融.零售.物联网等行 ...
- HFSS——平面正弦加载阿基米德螺旋线模型设计
这学期开始进入HFSS的学习,这是软件应该是电磁相关专业必须掌握的软件之一.前几天图老师发布第一个模型设计任务,是关于平面正弦加载阿基米德螺旋线,拿到具体要求后,就去网上找资料,发现有关HFSS的资料 ...
- 【纯净镜像】原版Windows7集成USB3.0+NVME补丁+UEFI引导旗舰版下载
系统简述: 1. 基于MSDN原版Windows7 Ultimate With SP1系统制作,无任何插件和垃圾软件. 2. 系统集成IE11浏览器,装完系统后默认浏览器就是IE11. 3.系统注入了 ...