日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

最近業務開發遇到了組織結構的展示,多級不固定,改了三板第一版用了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 關系圖譜組件

 

總結: 就這么多了如果你們有更好了也可以推薦給我學習學習下,最近有點忙也好長時間沒寫了,其實不是說真的沒一點時間只是心情有點不好,天氣變冷了,各位朋友們要加衣服了,也要加強鍛煉了,聽說冬天鍛煉效果最好哦!

分享到:
標簽:vue
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定