位置: IT常识 - 正文

基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站)

编辑:rootadmin
基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7

推荐整理分享基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:乐吾是什么意思,乐吾学校,乐吾乐科技,武汉乐吾乐科技有限责任公司,乐吾实验学校网站,乐吾乐topology,乐吾是什么意思,乐吾乐topology,内容如对您有帮助,希望把文章链接给更多的朋友!

首先我们先了解一下乐吾乐,【乐吾乐 2D 可视化组态软件】是乐吾乐科技完全自主研发、集动态数据显示和事件交互于一体的可视化工具,把复杂、变化、多样、有价值的大数据变成直观易懂、实时显示的可视化交互显示,具有跨平台、实时监控、动态交互、高效、可扩展、支持自动算法等特点,最大程度减少研发和运维的成本,并致力于普通业务人员 0 代码开发实现 web 组态、SCADA 等场景。是拥有为电力能源、水利、物联网、工业互联网、智慧城市、智慧医疗、智慧农业、IT 运维等提供解决方案的可视化平台。

乐吾乐公司开源的是他提供的核心库,但是GitHub上下载的组态编辑器并不是开源的,网上找了一圈也没见有比较好的组态编辑器,加上最近项目有需要有组态编辑器,所以就基于乐吾乐核心库开发了一套组态编辑器,功能都是基础功能,希望能给大家带来参考和便利。后面会贴上GitHub项目地址。

我们先看下效果图,

组态编辑器效果图:

里面有基础的系统组件,有自定义的组件,自定义组件可以自己上传:

可以自定义事件动画:

 

 可以绑定通信,从第三方平台拉取数据绑定 

基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站)

 下面我们看下,基础编辑器的核心代码:

<template> <div class="hello"> <div id="topology"></div> </div></template>

dom部分有一个id为topology的dom元素用来挂载乐吾乐的核心编辑器

引入乐吾乐的核心库:

import {topology as Topology} from "./topoligy";import { deepClone } from "@topology/core";import { registerHighcharts } from "@topology/chart-diagram";import { flowPens } from "@topology/flow-diagram";import { activityDiagram, activityDiagramByCtx,} from "@topology/activity-diagram";import { sequencePens, sequencePensbyCtx } from "@topology/sequence-diagram";import { classPens } from "@topology/class-diagram";import { register as registerEcharts } from "@topology/chart-diagram";

我这里核心库重写了了一些自定义动画,所以是 import  {topology as Topology}  from "./topoligy";

但是我用不到了,这里只是留下一个方式用来重写或者添加核心库的扩展方法,代码如下:

生命周期里面:注册乐吾乐核心的方法,还有图表库

mounted() { ... //打开json this.$eventBus.$on("openJson", (json) => { console.log(json, "===json==="); this.topology.clear(); this.topology.open(json); this.mqttInt() this.topology.lock(0); this.topology.inactive(); }); registerHighcharts(); registerEcharts(); this.topology.register(flowPens()); this.topology.register(activityDiagram()); // 原生canvas绘画的图库,支持逻辑复杂的需求 this.topology.registerCanvasDraw(activityDiagramByCtx()); this.topology.register(sequencePens()); this.topology.registerCanvasDraw(sequencePensbyCtx()); this.topology.register(classPens()); document.getElementsByTagName("canvas")[1].style.left = 0; this.topology.inactive(); },

其中有一个是用来打开已编辑的好,从后台读取回来数据的方法监听 openJson

我们再来看下后台:

有几个表,动画表,通讯信息表,组件表,画布表,资源表,用户表,

后台是基于node+koa2+mysql5.7写的 

const Koa = require('koa')const app = new Koa()const views = require('koa-views')const json = require('koa-json')//const onerror = require('koa-onerror')const bodyparser = require('koa-bodyparser')const logger = require('koa-logger')const index = require('./routes/index')const users = require('./routes/users')const drawing = require('./routes/drawing')const drawingsee = require('./routes/drawingsee')const component = require('./routes/component')const upload = require('./routes/upload')const proxy = require('./routes/proxy')const cors = require('koa2-cors')// error handler//onerror(app)app.use( cors({ origin: function(ctx) { //设置允许来自指定域名请求 // if (ctx.url.indexOf('/uploads')!=-1) { // return '*'; // 允许来自所有域名请求 // } // return 'http://192.168.1.74:8080'; //只允许http://localhost:8080这个域名的请求 return '*'; // 允许来自所有域名请求 }, maxAge: 5, //指定本次预检请求的有效期,单位为秒。 credentials: true, //是否允许发送Cookie allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法 allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段 exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段 }))// middlewaresapp.use(bodyparser({ enableTypes:['json', 'form', 'text']}))app.use(json())app.use(logger())app.use(require('koa-static')(__dirname + '/public'))app.use(views(__dirname + '/views', { extension: 'pug'}))// loggerapp.use(async (ctx, next) => { const start = new Date() await next() const ms = new Date() - start console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)})// 错误处理const error = require("koa-json-error")app.use(error({ format: err => { return { code: err.status, message: err.message, result: err.stack } }, postFormat: (err, obj) => { const { result, ...rest } = obj return obj //rest。可以判断一下,如果是开发环境,就返回obj;生产环境返回rest }}))app.use(async (ctx, next) => { try { await next() } catch (error) { ctx.throw(error) //此方式可输出状态码。传入error可使错误信息更详细 }})// routesapp.use(index.routes(), index.allowedMethods())app.use(users.routes(), users.allowedMethods())app.use(drawing.routes(), drawing.allowedMethods())app.use(drawingsee.routes(), drawingsee.allowedMethods())app.use(component.routes(), component.allowedMethods())app.use(upload.routes(), upload.allowedMethods())app.use(proxy.routes(), proxy.allowedMethods())// error-handlingapp.on('error', (err, ctx) => { console.error('server error', err, ctx)});module.exports = app

 多说无益,最后贴上GitHub前后端地址,自己下载项目自己跑起来,希望能帮到有需要的人

前端:https://github.com/lingansha/topologyEditor.git

后端:GitHub - lingansha/topologyServes: topology组态工具服务端

本文链接地址:https://www.jiuchutong.com/zhishi/292319.html 转载请保留说明!

上一篇:微前端-qiankun(微前端Qiankun 子应用css后加载问题)

下一篇:格林内尔湖,蒙大拿州冰川国家公园 (© Pung/Shutterstock)(格林湖人)

  • 微信如何建群让别人扫二维码进群(微信如何建群让别人扫二维码进群视频)

    微信如何建群让别人扫二维码进群(微信如何建群让别人扫二维码进群视频)

  • 单方面关联qq另一方知道吗(单方面关联qq号)

    单方面关联qq另一方知道吗(单方面关联qq号)

  • 双11自动确认收货时间(双11自动确认收货吗)

    双11自动确认收货时间(双11自动确认收货吗)

  • vivo手机掉了关机了可以找到吗(vivo手机掉了关机了)

    vivo手机掉了关机了可以找到吗(vivo手机掉了关机了)

  • 微信付款码可以截图发给别人付款吗(微信付款码可以找到本人吗)

    微信付款码可以截图发给别人付款吗(微信付款码可以找到本人吗)

  • 暂时无法接通是关机了吗

    暂时无法接通是关机了吗

  • 企业账号和个人账号的区别(企业账号和个人账号开通抖店缴纳保证金)

    企业账号和个人账号的区别(企业账号和个人账号开通抖店缴纳保证金)

  • 苹果11为什么不能用18w快充(苹果11为什么不能用电信卡)

    苹果11为什么不能用18w快充(苹果11为什么不能用电信卡)

  • 淘宝承诺48小时发货但是没发货怎么办(淘宝承诺48小时内发货没发怎么办)

    淘宝承诺48小时发货但是没发货怎么办(淘宝承诺48小时内发货没发怎么办)

  • 惠普无法更改ahci模式(惠普笔记本为什么修改不了设置)

    惠普无法更改ahci模式(惠普笔记本为什么修改不了设置)

  • 电脑没电关机了文档没保存怎么办(电脑没电关机了要充多久才能开机)

    电脑没电关机了文档没保存怎么办(电脑没电关机了要充多久才能开机)

  • 分辨率怎么调(分辨率怎么调美图秀秀)

    分辨率怎么调(分辨率怎么调美图秀秀)

  • usb耳机麦克风没声音(耳机麦克风插上不能用)

    usb耳机麦克风没声音(耳机麦克风插上不能用)

  • 为什么手机亮度不稳定忽暗忽亮(为什么手机亮度调到最高还是很暗)

    为什么手机亮度不稳定忽暗忽亮(为什么手机亮度调到最高还是很暗)

  • 苹果x美版基带是高通吗(iphonexs美版基带)

    苹果x美版基带是高通吗(iphonexs美版基带)

  • 淘宝几天自动默认好评(淘宝几天后自动付款)

    淘宝几天自动默认好评(淘宝几天后自动付款)

  • 华为gt手表防水几级(华为gt2手表防水吗)

    华为gt手表防水几级(华为gt2手表防水吗)

  • vivox20微信怎么开美颜(vivox20微信怎么分屏)

    vivox20微信怎么开美颜(vivox20微信怎么分屏)

  • 应用宝为什么看不了评论(应用宝为什么看不了视频)

    应用宝为什么看不了评论(应用宝为什么看不了视频)

  • 芒果tv怎样关闭自动续费(芒果TV怎样关闭会员)

    芒果tv怎样关闭自动续费(芒果TV怎样关闭会员)

  • 5g商用牌照是什么(5g商用牌照发放的上市公司)

    5g商用牌照是什么(5g商用牌照发放的上市公司)

  • 使用Chatgpt 如何提问回答方法介绍(chat功能)

    使用Chatgpt 如何提问回答方法介绍(chat功能)

  • 文化事业建设费征收对象
  • 纳税信用等级评定在哪里查询
  • 增值税留抵退税是什么意思
  • 企业银行流水可以同步到T+软件中,自动生成凭证了
  • 金税盘是每天有5次机会吗
  • 物业管理服务增值税2022
  • 公司名称变更在哪个网站
  • 银行代发工资户允许有余额吗
  • 员工集体旅游费会计分录
  • 土地租金及青苗赔偿款怎么做账?
  • 外商投资企业退出条件
  • 无形资产的加计扣除为什么不影响应纳税所得额
  • 商品已发出未开票未收款怎么做账
  • 个人汽车租赁发票网上怎么开
  • 银行转贴现业务违法吗
  • 增值税失控发票什么意思
  • 税控盘抵税申报表如何撤销
  • 异地不动产租赁 深圳税务 所得税
  • 土地转让怎么缴纳增值税
  • 企业非独立法人是什么意思
  • 税金及附加包括所得税费用吗
  • 存出投资款现金流量表选什么
  • 坏坏狼故事绘本
  • windows10版本2004怎么样
  • ftp pwd命令
  • win10设置待机时间长怎么在哪里设置
  • 若依框架前端框架
  • 企业中秋晚会主持词
  • php 生成opcode
  • 企业发生的现金折扣应计入什么费用
  • 固定资产加速折旧方法
  • 公司收到财政补贴款的会计分录
  • 房地产开发企业应该具备哪些条件
  • 实用的开源软件
  • Vue中 Vue-Baidu-Map基本使用
  • Sublime Text 4 (Build 4143) 注册方法STEP BY STEP
  • php7 nginx
  • 已勾选确认的发票忘记填写怎么办
  • 发票明细太多怎么设置见清单
  • dede织梦怎么转成zblog
  • 中小企业暂估成本是多少
  • 预付账款需要做预算凭证吗
  • 增值税进项发票勾选认证流程
  • 公司向公司借款合法吗
  • 销售送客户礼物
  • 存货核算方法有五种
  • 房屋开发企业
  • 合并报表抵消分录的基本原理
  • 一般纳税人改成小规模可以吗
  • 工程预付款发票开什么明细项目
  • 当月的银行日记账漏计怎么办
  • 生产成本制造费用结转
  • 老板买了手机,算入什么费用
  • 未开票收入如何纳税申报
  • 银行收取服务费
  • 残保金怎么办理
  • 研发费用是管理费用的比例多少不正常
  • 工业企业待摊费用标准
  • 苹果mac怎么清理缓存
  • windows提示音神曲
  • 苹果电脑mac系统键盘无法找到
  • windows7怎么画画
  • winxp系统开机启动项
  • ubuntu下软件
  • centos的特点
  • 如果打招呼了不理是什么原因
  • linux文件中添加内容
  • unity3d读取gis数据
  • 用git打更新包的代码
  • jquery mobile ui
  • linux进程切换 宋宝华
  • Unity NGUI添加事件监听(转摘)
  • service segment
  • js脚本如何获取数据库内容?
  • javascript简明教程
  • javascript产生随机数
  • js使用类
  • 印花税核定依据填写什么
  • 单位纳税人什么意思
  • 船舶吨税税收优惠口诀
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设