vue中elementUI的tree組件的使用(加線條加自定義圖標(biāo))

后臺(tái)管理系統(tǒng)是從layui過(guò)來(lái)的,所以總是覺(jué)得elementUI的tree組件線條沒(méi)了不好看匙头,

第一中效果有線條

image.png

html
要在tree組件的直系父集上面加class名字tree-container低匙,在自己加tree的class

  <div class="tree-container">
        <el-tree
          ref="tree"
          class="tree filter-tree"
          :data="data"
          :props="defaultProps"
          :filter-node-method="filterNode"
          default-expand-all
        >
          <span slot-scope="{ node, data }" class="custom-tree-node">
            <span :dataType="data.type">
              {{ node.label }}
            </span>
          </span>
        </el-tree>
      </div>

css樣式

  /* 樹形結(jié)構(gòu)節(jié)點(diǎn)添加連線 */
  .tree .el-tree-node {
    position: relative;
    // padding-left: 16px;
  }

  .tree .el-tree-node__children {
    padding-left: 16px;
  }

  .tree .el-tree-node :last-child:before {
    height: 38px;
  }

  .tree .el-tree > .el-tree-node:before {
    border-left: none;
  }
  .tree-container .el-tree > .el-tree-node:after {
    border-top: none;
  }

  .tree .el-tree-node__children .el-tree-node:before {
    content: '';
    left: -4px;
    position: absolute;
    right: auto;
    border-width: 1px;
  }

  .tree .el-tree-node:after {
    content: '';
    left: -4px;
    position: absolute;
    right: auto;
    border-width: 1px;
  }
  .tree .el-tree-node__expand-icon.is-leaf {
    display: none;
  }

  .tree .el-tree-node:before {
    border-left: 1px dashed #dddddd;
    bottom: 0px;
    height: 100%;
    top: -26px;
    width: 1px;
  }

  .tree .el-tree-node:after {
    border-top: 1px dashed #dddddd;
    height: 20px;
    top: 12px;
    width: 24px;
  }
  .tree .custom-tree-node {
    padding-left: 10px;
  }

第二種效果二級(jí)加圖標(biāo)硼端,且不一樣的圖標(biāo)

image.png
<template>
  <!-- 超級(jí)終端 添加終端 選擇所屬用戶 -->
  <el-dialog
    v-el-drag-dialog
    title="選擇用戶"
    :visible.sync="dialogGroupVisible"
    append-to-body
  >
    <el-tree
      ref="tree"
      :data="data"
      show-checkbox
      node-key="id"
      :props="defaultProps"
      :default-checked-keys="checks"
      @node-expand="handleNodeClick"
      @node-collapse="handleNodeClose"
      @check-change="handleCheckChange"
    >
      <span slot-scope="{ node, data }" class="custom-tree-node">
        <span :dataType="data.type">
          <i class="iconfont" :class="[data.icon, 'tree-icon']" />
          {{ node.label }}
        </span>
      </span>
    </el-tree>
    <div slot="footer" class="dialog-footer">
      <el-button
        type="primary"
        @click="dialogGroupVisibleClose()"
      >確 定</el-button>
      <el-button @click="dialogGroupVisible = false">關(guān) 閉</el-button>
    </div>
  </el-dialog>
</template>

<script>
import { getAllUser, getGroupInfo } from '@/services/API'
export default {
  name: 'UserGroupDigUser',
  data() {
    return {
      dialogGroupVisible: false,
      //   data: [],
      defaultProps: {
        children: 'children',
        label: 'label'
      },
      // 獲取選中的數(shù)據(jù)
      newArr: [],
      newArrName: [],
      data: [
        // {
        //   id: 1,
        //   label: "一級(jí) 1",
        //   icon: "iconwenjianjiaguanbi",
        //   children: [
        //     {
        //       id: 4,
        //       label: "二級(jí) 1-1",
        //       icon: "iconwenjian",
        //     },
        //   ],
        // },
      ],
      checks: []
    }
  },
  created() {
    this.getGoupListData()
  },
  methods: {
    handleNodeClick(data) {
      data.icon = 'iconwenjianjia-dakai'
    },
    handleNodeClose(data) {
      data.icon = 'iconwenjianjiaguanbi'
    },
    changeDialog(data) {
      this.checks = data
      this.dialogGroupVisible = true
    },
    getGoupListData() {
      getGroupInfo()
        .then(res => {
          //  console.log(JSON.stringify(res))
          if (res.data.code === 0) {
            //  this.data=res.data.data;
            for (var i = 0; i < res.data.data.length; i++) {
              this.data.push({
                id: res.data.data[i].id,
                label: res.data.data[i].name,
                icon: 'iconwenjianjiaguanbi',
                children: []
              })
            }
            this.getAllUserData()
          }
        })
        .catch(() => {
          this.$message.error('數(shù)據(jù)獲取失敗')
        })
    },
    getAllUserData() {
      getAllUser()
        .then(res => {
          if (res.data.code === 0) {
            for (var i = 0; i < res.data.data.length; i++) {
              for (var j = 0; j < res.data.data[i].groups.length; j++) {
                this.data.forEach((item, index) => {
                  // eslint-disable-next-line eqeqeq
                  if (res.data.data[i].groups[j] == item.id) {
                    item.children.push({
                      id: res.data.data[i].id,
                      label: res.data.data[i].cnname,
                      icon: 'iconwenjian'
                    })
                  }
                })
              }
            }
          }
        })
        .catch(() => {
          this.$message.error('數(shù)據(jù)獲取失敗')
        })
    },
    handleCheckChange(data, node, datas) {
      // console.log(JSON.stringify(data))
      // console.log(node)
    },
    // 數(shù)組去重
    unique(arr) {
      const newArr = []
      const len = arr.length
      for (let i = 0; i < len; i++) {
        // eslint-disable-next-line eqeqeq
        if (newArr.indexOf(arr[i]) == -1) {
          newArr.push(arr[i])
        }
      }
      return newArr
    },
    dialogGroupVisibleClose() {
      // 獲取了所有選中的數(shù)據(jù)節(jié)點(diǎn)
      const res = this.$refs.tree.getCheckedNodes()
      var arr = []
      res.forEach(item => {
        if (item.children) {
          item.children.forEach(items => {
            arr.push(items)
          })
        }
      })
      this.dialogGroupVisible = false
      var belong_userName = ''
      var belong_user = []
      arr.forEach(item => {
        belong_userName += item.label + '\t\n'
        belong_user.push(item.id)
      })
      var data = {
        belong_userName: belong_userName,
        belong_user: belong_user
      }
      // if (belong_user.length !== 0) {
      // }
      this.$emit('to-parent', data)
    }
  }
}
</script>

<style lang="scss">
.iconfont.iconwenjian {
  color: #b58e17;
}
.iconfont.iconwenjianjia-dakai {
  color: #a0b015;
}
.iconfont.iconwenjianjiaguanbi {
  color: #a0b015;
}
.el-dialog__header {
  border-bottom: 1px solid #e2e2e2;
  background-color: #f8f8f8;
}
</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末州丹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刁憋,更是在濱河造成了極大的恐慌滥嘴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件至耻,死亡現(xiàn)場(chǎng)離奇詭異若皱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)尘颓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門走触,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人疤苹,你說(shuō)我怎么就攤上這事互广。” “怎么了痰催?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵兜辞,是天一觀的道長(zhǎng)迎瞧。 經(jīng)常有香客問(wèn)我夸溶,道長(zhǎng)逸吵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任缝裁,我火速辦了婚禮扫皱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捷绑。我一直安慰自己韩脑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布粹污。 她就那樣靜靜地躺著段多,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壮吩。 梳的紋絲不亂的頭發(fā)上进苍,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音鸭叙,去河邊找鬼觉啊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沈贝,可吹牛的內(nèi)容都是我干的杠人。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼宋下,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嗡善!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起学歧,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滤奈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后撩满,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜒程,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年伺帘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昭躺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪嫁,死狀恐怖领炫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情张咳,我是刑警寧澤帝洪,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布似舵,位于F島的核電站,受9級(jí)特大地震影響葱峡,放射性物質(zhì)發(fā)生泄漏砚哗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一砰奕、第九天 我趴在偏房一處隱蔽的房頂上張望蛛芥。 院中可真熱鬧,春花似錦军援、人聲如沸仅淑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涯竟。三九已至,卻和暖如春空厌,著一層夾襖步出監(jiān)牢的瞬間庐船,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工蝇庭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醉鳖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓哮内,卻偏偏與公主長(zhǎng)得像盗棵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子北发,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容