最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組織架構(gòu)樹圖組件vue-org-tree的使用解析

 更新時間:2022年08月01日 14:11:45   作者:蕓靈fly  
這篇文章主要介紹了Vue組織架構(gòu)樹圖組件vue-org-tree的使用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Vue組織架構(gòu)樹圖組件vue-org-tree

說明

最近需要作出一個組織架構(gòu)圖來可視化展示一下,最后找到vue-org-tree這個組件,覺得效果還不錯~,可選節(jié)點(diǎn)顏色、橫向/縱向展開、打開/收起,在這記錄一下使用方法,效果圖如下:

快速開始

安裝

npm install --save-dev less less-loader
npm install --save-dev vue2-org-tree

(可能還需要安裝其他組件,報錯的話根據(jù)提示再install就行)

然后在main.js引入

import Vue2OrgTree from 'vue2-org-tree';
Vue.use(Vue2OrgTree)

使用

<template>
  <div>
    <div class="container">
      <div class="col-md-10 col-md-offset-1">
        <div class="page-header">
          <h3>基于Vue的組織架構(gòu)樹組件</h3>
        </div>
        <div class="row">
          <div class="col-md-8 col-md-offset-2">
            <form class="form-horizontal row">
              <div class="col-md-4">
                <div class="checkbox">
                  <label>
                    <input
                      type="checkbox"
                      v-model="horizontal"
                    > Horizontal
                  </label>
                </div>
              </div>
              <div class="col-md-4">
                <div class="checkbox">
                  <label>
                    <input
                      type="checkbox"
                      v-model="collapsable"
                    > Collapsable
                  </label>
                </div>
              </div>
              <div class="col-md-4">
                <div class="checkbox">
                  <label>
                    <input
                      type="checkbox"
                      v-model="expandAll"
                      @change="expandChange"
                    > Expand All
                  </label>
                </div>
              </div>
              <p><br></p>
              <p><br></p>
              <div class="col-md-6">
                <div class="form-group">
                  <label class="control-label col-md-5">labelClassName:</label>
                  <div class="col-md-7">
                    <select
                      class="form-control"
                      v-model="labelClassName"
                    >
                      <option value="bg-white">bg-white</option>
                      <option value="bg-orange">bg-orange</option>
                      <option value="bg-gold">bg-gold</option>
                      <option value="bg-gray">bg-gray</option>
                      <option value="bg-lightpink">bg-lightpink</option>
                      <option value="bg-chocolate">bg-chocolate</option>
                      <option value="bg-tomato">bg-tomato</option>
                    </select>
                  </div>
                </div>
              </div>
            </form>
          </div>
        </div>
        <p><br></p>
        <div class="text-center">
          <vue2-org-tree name="test"
            :data="data"
            :horizontal="horizontal"
            :collapsable="collapsable"
            :label-class-name="labelClassName"
            :render-content="renderContent"
            @on-expand="onExpand"
            @on-node-click="onNodeClick"
          />
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      data: {
        id: 0,
        label: "XXX科技有限公司",
        children: [
          {
            id: 2,
            label: "產(chǎn)品研發(fā)部",
            children: [
              {
                id: 5,
                label: "研發(fā)-前端"
              },
              {
                id: 6,
                label: "研發(fā)-后端"
              },
              {
                id: 9,
                label: "UI設(shè)計"
              },
              {
                id: 10,
                label: "產(chǎn)品經(jīng)理"
              }
            ]
          },
          {
            id: 3,
            label: "銷售部",
            children: [
              {
                id: 7,
                label: "銷售一部"
              },
              {
                id: 8,
                label: "銷售二部"
              }
            ]
          },
          {
            id: 4,
            label: "財務(wù)部"
          },
          {
            id: 9,
            label: "HR人事"
          }
        ]
      },
      horizontal: false,
      collapsable: true,
      expandAll: false,
      labelClassName: "bg-white"
    };
  },
  methods: {
    renderContent(h, data) {
      return data.label;
    },
    onExpand(data) {
      if ("expand" in data) {
        data.expand = !data.expand;
        if (!data.expand && data.children) {
          this.collapse(data.children);
        }
      } else {
        this.$set(data, "expand", true);
      }
    },
    onNodeClick(e, data) {
      alert(data.label);
    },
    collapse(list) {
      var _this = this;
      list.forEach(function(child) {
        if (child.expand) {
          child.expand = false;
        }
        child.children && _this.collapse(child.children);
      });
    },
    expandChange() {
      this.toggleExpand(this.data, this.expandAll);
    },
    toggleExpand(data, val) {
      var _this = this;
      if (Array.isArray(data)) {
        data.forEach(function(item) {
          _this.$set(item, "expand", val);
          if (item.children) {
            _this.toggleExpand(item.children, val);
          }
        });
      } else {
        this.$set(data, "expand", val);
        if (data.children) {
          _this.toggleExpand(data.children, val);
        }
      }
    }
  }
};
</script>
<style type="text/css">
.org-tree-node-label {
  white-space: nowrap;
}
.bg-white {
  background-color: white;
}
.bg-orange {
  background-color: orange;
}
.bg-gold {
  background-color: gold;
}
.bg-gray {
  background-color: gray;
}
.bg-lightpink {
  background-color: lightpink;
}
.bg-chocolate {
  background-color: chocolate;
}
.bg-tomato {
  background-color: tomato;
}
</style>

API

  • props
propdescriptontypedefault
data Object 
propsconfigure propsObject{label: 'label', children: 'children', expand: 'expand'}
labelWidthnode label widthString | Number.auto
collapsablechildren node is collapsableBooleantrue
renderContenthow to render node labelFunction-
labelClassNamenode label classFunction | String-

events

  • on-expand
  • well be called when the collapse-btn clicked
  • on-node-click
  • well be called when the node-label clicked

參考html例子:https://github.com/hukaibaihu/vue-org-tree/blob/gh-pages/index.html

組件github:https://github.com/hukaibaihu/vue-org-tree

Vue組織架構(gòu)圖組件

vue-tree-chart

:deciduous_tree: Vue2樹形圖組件

logo

安裝:

npm i vue-tree-chart --save

使用:

  • in template:
<TreeChart :json="treeData" />
  • in script:
import TreeChart from "vue-tree-chart";
export default {
	components: {
    	TreeChart
	},
	data() {
		return {
			treeData: {
				...
			}
		}
	}
	...

屬性:

  • json

組件數(shù)據(jù),支持字段:

  • - name[String] 節(jié)點(diǎn)名稱
  • - image_url[String] 節(jié)點(diǎn)圖片
  • - children[Array] 節(jié)點(diǎn)后代
  • - mate[Object] 節(jié)點(diǎn)配偶

示例:

{
    name: 'root',
    image_url: "https://static.refined-x.com/avat.jpg",
    children: [
      {
        name: 'children1',
        image_url: "https://static.refined-x.com/avat1.jpg"
      },
      {
        name: 'children2',
        image_url: "https://static.refined-x.com/avat2.jpg",
        mate: {
          name: 'mate',
          image_url: "https://static.refined-x.com/avat3.jpg"
        },
        children: [
          {
            name: 'grandchild',
            image_url: "https://static.refined-x.com/avat.jpg"
          },
          {
            name: 'grandchild2',
            image_url: "https://static.refined-x.com/avat1.jpg"
          },
          {
            name: 'grandchild3',
            image_url: "https://static.refined-x.com/avat2.jpg"
          }
        ]
      },
      {
        name: 'children3',
        image_url: "https://static.refined-x.com/avat.jpg"
      }
    ]
  }

事件:

  • click-node

點(diǎn)擊節(jié)點(diǎn)觸發(fā),接收當(dāng)前節(jié)點(diǎn)數(shù)據(jù)為參數(shù)

演示:

npm run serve

構(gòu)建:

npm run build-bundle

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用vue實現(xiàn)猜謎卡片游戲

    使用vue實現(xiàn)猜謎卡片游戲

    這篇文章主要為大家詳細(xì)介紹了如何使用vue實現(xiàn)簡單的猜謎卡片游戲,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以參考一下
    2023-09-09
  • Vue3中解決組件間css層級問題的最佳實踐

    Vue3中解決組件間css層級問題的最佳實踐

    <Teleport> 是 Vue 3 中引入的一個內(nèi)置組件,用于將組件的內(nèi)容渲染到 DOM 中的指定位置,而不受組件層級結(jié)構(gòu)的限制,本文給大家介紹了Vue3使用Teleport解決組件間css層級問題的最佳實踐,需要的朋友可以參考下
    2025-02-02
  • vue3+element Plus如何實現(xiàn)彈框的拖拽、可點(diǎn)擊底層頁面功能

    vue3+element Plus如何實現(xiàn)彈框的拖拽、可點(diǎn)擊底層頁面功能

    這篇文章主要介紹了vue3+element Plus如何實現(xiàn)彈框的拖拽、可點(diǎn)擊底層頁面功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • 詳解vue-cli快速構(gòu)建項目以及引入bootstrap、jq

    詳解vue-cli快速構(gòu)建項目以及引入bootstrap、jq

    本篇文章主要介紹了vue-cli快速構(gòu)建項目以及引入bootstrap、jq,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果

    uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果

    這篇文章主要介紹了uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果,實現(xiàn)步驟和思路都很簡單,今天通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • vue-Split實現(xiàn)面板分割

    vue-Split實現(xiàn)面板分割

    這篇文章主要為大家詳細(xì)介紹了vue-Split實現(xiàn)面板分割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue 頁面加載進(jìn)度條組件實例

    vue 頁面加載進(jìn)度條組件實例

    下面小編就為大家分享一篇vue 頁面加載進(jìn)度條組件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • antd 表格列寬自適應(yīng)方法以及錯誤處理操作

    antd 表格列寬自適應(yīng)方法以及錯誤處理操作

    這篇文章主要介紹了antd 表格列寬自適應(yīng)方法以及錯誤處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊權(quán)限的操作方法

    uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊權(quán)限的操作方法

    這篇文章主要介紹了uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊的權(quán)限,在uniapp中,我們通常會使用uni-file-picker這個組件,但是這個組件中,有點(diǎn)缺陷,就是沒有對這個功能的傳值設(shè)置,這里就要給組件進(jìn)行修改了,需要的朋友可以參考下
    2022-11-11
  • Vue-cli框架實現(xiàn)計時器應(yīng)用

    Vue-cli框架實現(xiàn)計時器應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Vue-cli框架實現(xiàn)計時器應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

万安县| 齐河县| 腾冲县| 剑河县| 呼和浩特市| 东城区| 明光市| 永康市| 常州市| 宜川县| 永寿县| 武定县| 钟山县| 新宁县| 潍坊市| 航空| 潞西市| 梧州市| 海城市| 彭阳县| 金堂县| 安吉县| 峨边| 邵东县| 昌乐县| 罗平县| 江西省| 响水县| 六枝特区| 红原县| 河间市| 桂平市| 龙井市| 黄平县| 同德县| 延寿县| 阆中市| 油尖旺区| 正蓝旗| 夹江县| 清水县|