Vue2-tree(树形结构)

前言:前段时间产品提出一个需求,下拉选择一个值分别对应树形结构的层级,不对应的层级禁止选择、树形数据为父子不关联。

简单梳理一下:

  • 项目级别与区域层级对应:
    • 学校项目:区域层级到学校
    • 区县项目:区域层级到区县
    • 市级项目:区域层级到市
    • 省级项目:区域层级到省

首先,我们看下效果视频,更直观理解:

好,废话不多说 直接上代码

ui组件库:Element

树形选择器组件:Treeselect

template:

<el-form-item label="项目级别:" prop="projectLevel">
            <el-select v-model="projectInfo.projectLevel" placeholder="请选择" style="width:100%;"
                       @change="handleChange">
              <el-option
                v-for="item in projectLevelList"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              ></el-option>
            </el-select>
          </el-form-item>

<el-form-item label="所属区域:" prop="areaId">
            <div @click="handleOpen">
              <treeselect
                v-model="projectInfo.areaId"
                :flat="true"
                :normalizer="normalizer"
                :options="areaTreeData"
                placeholder="请选择"
                @input="handleInput"
              />
            </div>
          </el-form-item>

项目级别方法:

handleChange (el) {
      this.projectInfo.areaId = null //因为是一一对应,所以值发生变化需要赋值null
      switch (el) {
        case '省级项目':
          this.num = 0  //声明num变量为层级意思 来对应树形结构的层级
          break
        case '地市项目':
          this.num = 1
          break
        case '区县项目':
          this.num = 2
          break
        case '学校项目':
          this.num = 3
          break
      }
      this.getAreaTree() //这里必须要调用树形数据接口
    }

所属区域方法:

normalizer (node) {
      // 去掉children=[]的children属性
      if (node.children && !node.children.length) {
        delete node.children
      }
      return {
        id: node.id,
        label: node.name,
        children: node.children,
        isDisabled: (node.userAreaSign ? false : true) || (node.level == this.num ? false : true)
      }

    },

创作不易 多多支持!!!

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值