您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

vue 关系图谱组件

时间:2020-11-23 11:28:09  来源:  作者:

最近业务开发遇到了组织结构的展示,多级不固定,改了三板第一版用了echarts,第二版自己用递归组件写了发现很局限不灵活,内容确定的还好点不固定的就很乱了,期间也看了几个相关的组件比如:vue-org-tree、vue-okr-tree,其实都挺不错的但就是不太符合我们产品需要实现的效果,最后采用了relation-graph 这个。

先说说需求,需要实现怎样的,大体就是下面这个图这样的,一般来说实现类似这样多级树结构的时候在vue中需要递归组件去实现了,但对于不同的节点需要不同的展现方式就需要很灵活了目前我没能实现有实现了的朋友可以踢下我,我学习学习

vue 关系图谱组件

类似效果图

期间我发现highcharts的这个也不错,但不能商用,这个网站也挺不错,是一个用纯 JAVAScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。

vue 关系图谱组件

highcharts

下面说下采用的relation-graph 这个,这是一个Vue关系图谱组件,可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱,可提供多种图谱布局,包括树状布局、中心布局、力学布局自动布局等

vue 关系图谱组件

relation-graph.com

使用上也简单,分两步,设置配置项,加载数据

// 定义区域
<div style="height:calc(100vh - 200px);">
      <SeeksRelationGraph ref="seeksRelationGraph"
                          :options="graphOptions"
                          :on-node-click="onNodeClick"
                          :on-line-click="onLineClick" /></div>
// 导入组件
import SeeksRelationGraph from 'relation-graph'

data() {
    return {
      graphOptions: {
       ... 
        // 具体的配置项数据可从网站上可视化配置后获取
      }
    }
  },
  mounted() {
    this.showSeeksGraph()
  },
  methods:{
  	 showSeeksGraph() {
       const obj = {
        	rootId:0,// 根节点
         nodes:[],// 节点数据
         links: [],// 连接线数据
       }
       // 调用接口获取数据
       this.$refs.seeksRelationGraph.setJsonData(obj, (seeksRGGraph) => {
          // Called when the relation-graph is completed 
        })
     }
  }

具体的数据处理看实际的了,我说下我的数据处理,我接口得到的数据是多级的树结构数据,类似如下这样:

vue 关系图谱组件

数据结构

所以需要先将数据进行扁平化处理下,利用reduce进行递归处理

export function flatTreeToArrayTable({
  data = [],
  keyChildren = "children",
  key = 'id',
  includeChildren = false
} = {}) {
  data.some(item => {
    item.parid = item.parid ? item.parid : 0
  })
  function maker(result, item) {
    result.push(includeChildren ? item : omit(item, [keyChildren]));
    if (hasChildren(item, keyChildren)) {
      item[keyChildren].some(ichi => {
        ichi.parid = item[key]
      })
      result = result.concat(item[keyChildren].reduce(maker, []));
    }
    return result;
  }
  return data.reduce(maker, []);
}

再说说节点处理,需要的格式是from->to 树节点中转化也就是parid -> id.

vue 关系图谱组件

 

至此我的功能实现了具体效果就不放了(在公司项目中),在实现这个功能的过程中也考虑过几种方案比如d3,等一方面自己不会,再加上项目赶得及也没时间去深入学习使用,先实现效果具体深入优化只能放第二期了,下面我也放上实现此功能看到的相关的几个开源项目,挺不错的想学习的也可以去看看。

vue-okr-tree

开源地址: https://github.com/qq449245884/vue-okr-tree

文档地址:http://www.longstudy.club/vue-okr-tree-doc/index.html

开源协议:MIT

这个也是我一直关注的一个博客(@前端小智)写的,文档写的很全面,支持事件处理及节点过滤,也可以自定义节点,如果用过element-ui 的人就很容易上手,文档清晰。

vue 关系图谱组件

 

vue-org-tree

开源地址: https://github.com/hukaibaihu/vue-org-tree

开源协议:MIT

vue 关系图谱组件

vue-org-tree

Echarts

实例地址: https://echarts.Apache.org/examples/zh/editor.html?c=tree-legend

vue 关系图谱组件

 

highcharts

实例地址: https://www.highcharts.com.cn/demo/highcharts/organization-chart

vue 关系图谱组件

 

总结: 就这么多了如果你们有更好了也可以推荐给我学习学习下,最近有点忙也好长时间没写了,其实不是说真的没一点时间只是心情有点不好,天气变冷了,各位朋友们要加衣服了,也要加强锻炼了,听说冬天锻炼效果最好哦!



Tags:vue   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  Tags: vue  点击:(1)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Tags: vue  点击:(14)  评论:(0)  加入收藏
开头最近要研究有什么新奇的产品和项目,发现一个网站很有意思,可以纯前端一键随机生成头像,刚好他们的代码是开源,并且基于vue3,我想开源拿出来给大家分享。效果: 开始项目本身基...【详细内容】
2021-12-03  Tags: vue  点击:(15)  评论:(0)  加入收藏
问题后端已经配置好了跨域,前端本地搭建vue-cli测试环境的时候如何解决跨域?(前提进行了基本的axios封装)分析这个时候后端API是一个明确的外网环境(使用外网IP或固定域名访问),...【详细内容】
2021-11-03  Tags: vue  点击:(55)  评论:(0)  加入收藏
一、Vue框架的开发流程介绍 当我们从github上下载一个前端模板框架到本地后,框架中经常会自带有一些跳转显示类的功能,我们可以通过查看这些功能是如何实现的,进而一步步改造为...【详细内容】
2021-11-03  Tags: vue  点击:(34)  评论:(0)  加入收藏
一、Vue介绍1、什么是Vue 可以独立完成前后端分离式web项目的JavaScript框架2、学习Vue的原因三大主流框架之一:Angular React Vue先进的前端设计模式:MVVM可以完全脱离服务器...【详细内容】
2021-10-22  Tags: vue  点击:(51)  评论:(0)  加入收藏
什么是vuevue是尤雨溪在2014年发布的一个渐进式的js框架,它有着双向绑定的特性,同时它的虚拟dom技术让性能得到大大提升。最重要的就是它是渐进式的应用,你可以在你的项目中逐...【详细内容】
2021-09-22  Tags: vue  点击:(77)  评论:(0)  加入收藏
前端框架:vue.js效果图: 图书管理显示,查询,删除 页面css样式:<style>* {margin: 0;padding: 0;}#app {width: 900px;padding: 20px;margin: 50px auto;box-shadow: 0 0 10px #82...【详细内容】
2021-09-17  Tags: vue  点击:(91)  评论:(0)  加入收藏
本文分享自华为云社区《【云驻共创】vue3相比 vue2 的十项优点》,作者: 海拥 。Vue3新版本的理念成型于 2018 年末,当时的 Vue 2 已经有两岁半了。比起通用软件的生命周期来这...【详细内容】
2021-09-16  Tags: vue  点击:(72)  评论:(0)  加入收藏
1.vue create demo2.vue ui3.搜索 vue-cli-plugin-electron-builder,勾选,安装4.npm run electron:serve5.npm run electron:build6.build complete!构建完成!构建完成后,看一...【详细内容】
2021-09-09  Tags: vue  点击:(63)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条