当前位置: 首页 > news >正文

国内免费推广网站财务公司代理记账业务

国内免费推广网站,财务公司代理记账业务,wordpress内容构建器,重庆安全员c证在哪里查询背景 bpmn-js是个流程图绘制的工具,但是现在我希望实现的是,绘制的不是节点而是一个vue组件。 保留线的拖拽和连接。 方案 那就说明不是依赖于节点的样式,找到了他有个属性,就是类似覆盖节点的操作。 思路就是用vue组件做遮罩&…

背景

bpmn-js是个流程图绘制的工具,但是现在我希望实现的是,绘制的不是节点而是一个vue组件。
保留线的拖拽和连接。

方案

那就说明不是依赖于节点的样式,找到了他有个属性,就是类似覆盖节点的操作。
思路就是用vue组件做遮罩,盖住原本的节点样式。

/*** 批量操作节点*/handleAddOverlay() {const bpmnModeling = this.bpmnModeler.get('modeling')const contextPad = this.bpmnModeler.get('contextPad')this.bpmnModeler.on('import.done', () => {// 加载完成后每个元素遍历const elementRegistry = this.bpmnModeler.get('elementRegistry')elementRegistry.forEach(element => {if (['bpmn:Task'].includes(element.type)) {const parent = elementRegistry.getGraphics(element)bpmnModeling.resizeShape(element, {width: element.width || this.config.width || 60,height: element.height || this.config.height || 60,x: getDi(element).bounds.x,y: getDi(element).bounds.y})// 遍历任务节点,为每个节点添加 overlaysif (this.isShowComponent) {bpmnModeling.setColor(element, { stroke: this.config.borderColor || '#eee' }) // 修改边框颜色bpmnModeling.setColor(element, { fill: this.config.fillColor || '#fff' }) // 修改边框颜色this.addOverlay(element, parent)}} })})},

接下来是挂载覆盖物的重点,如何让覆盖物跟随节点的移动而移动

/**** @param {*} element* 增加覆盖物节点操作*/addOverlay(element, parent) {const __this = thisconst overlays = this.bpmnModeler.get('overlays')const bpmnModeling = this.bpmnModeler.get('modeling')const elementRegistry = this.bpmnModeler.get('elementRegistry')const index = this.data.nodeLists.findIndex(item => item.config.id === element.id)// 添加覆盖物 ------------------------------------- beginoverlays.add(element, 'my-overlay', {position: __this.overlayPosition,show: {minZoom: 0.1},html: '<div id="my-component"></div>'})const Profile = Vue.extend(this.config.components)overlays.get({ element: element, type: 'my-overlay' })[0].htmlContainer.id = element.idnew Profile({router,propsData: {element: element,node: index > -1 ? this.data.nodeLists[index] : {},func: this.func,...this.props},mounted() {const component = this// 绑定鼠标按下事件component.$el.addEventListener('mousedown', event => {__this.isDrag = falseevent.preventDefault()if (!__this.disable) {dragMouseDown(event)}})// 自定义组件点击事件component.$el.addEventListener('click', () => {if (!__this.isDrag) {__this.showContextPad(element)const bpmnElement = elementRegistry.get(element.id)__this.currentElement = bpmnElement__this.$emit('click', bpmnElement) // 点击事件}})}}).$mount('#my-component')// 添加覆盖物 -------------------------------------end// 必须作为公共变量进行值更改let pos1 = 0let pos2 = 0let pos3 = 0let pos4 = 0/**** @param {*} e* @param {*} overlayPosition* 鼠标按下开始*/function dragMouseDown(e) {e = e || window.evente.preventDefault()pos3 = e.clientXpos4 = e.clientYdocument.onmousemove = event => {__this.isDrag = trueelementDrag(event, __this.overlayPosition)}document.onmouseup = () => {__this.currentElement = nulldocument.onmouseup = nulldocument.onmousemove = null}}/**** @param {*} e* @param {*} overlayPosition*  节点的拖拽*/function elementDrag(e, overlayPosition) {e = e || window.evente.preventDefault()// 计算新的元素位置pos1 = pos3 - e.clientXpos2 = pos4 - e.clientYpos3 = e.clientXpos4 = e.clientYconst bpmnElement = elementRegistry.get(element.id)const deltaX = overlayPosition.x + pos1const deltaY = overlayPosition.y + pos2// 移动父节点及其连接线moveParentNode(bpmnElement, deltaX, deltaY)}/**** @param {*} element* @param {*} dx* @param {*} dy* 更改父节点操作*/function moveParentNode(element, dx, dy) {const parent = element.parentif (!parent) {return}// // 更新父节点的位置信息bpmnModeling.moveElements([element], { x: -dx, y: -dy }, null)// 更新覆盖物的位置const overlay = overlays.get({ element: parent, type: 'my-overlay' })overlay.position = {top: overlay.top - dy,left: overlay.left - dx}}},

在这里插入图片描述

http://www.yayakq.cn/news/609641/

相关文章:

  • 建设企业网站哪家好营销软文范例大全100
  • 织梦制作html 网站地图请将已备案网站接入访问
  • 云南做网站价格合肥网站制作推广
  • 网站建设公司墨子网络做网站流行的
  • 单页网站制作视频教程apache建立多个网站
  • 备案时的网站建设方案书康巴什网站建设
  • 凡科网站建设怎么样微做网站
  • 做网站主机要求网站没备案可以访问吗
  • 模版网站做支付功能表格制作教程
  • 买什么就开什么网站吗wordpress多个标签
  • 做网站需要那些编程语言官方网站怎么找
  • 网站换ip 有多大影响搜索引擎优化的技巧
  • 东营网站建设关键字排名问题泰州 做网站
  • 如何用vs做网站新媒体运营方案
  • 重庆模板网站建设长沙做手机网站建设
  • 网站网络推广优化校园网站建设先进
  • 建立化妆品网站功能信息发布网站建设
  • 网站地图设计网站建设商城模板
  • 柳州网站制作服务商网站备案 写共享可以吗
  • 爱站网影视排行榜企业网站建设招标评分表
  • 织梦的网站收录不好网页设计与制作介绍
  • 网站 乱码有些网站突然无法访问
  • 做h5网站设计移动商城官网
  • 响应式网站素材网站开发用户分析
  • 商丘做网站的公司有哪些网站首页布局修改
  • 深圳买门的网站建设wordpress只显示纯文字
  • 一个主机域名可以做多少个网站wordpress 修改目录id
  • 医院 网站建设 新闻wordpress电子书
  • 网站如何做移动适配个人网站有哪些类型
  • 数据显示网站模板购买设备有什么网站做参考