el-select + el-tree结合下拉框树

|

el-select + el-tree结合下拉框树

话不多说先上代码
使用el的下拉框和树的代码

<el-select v-model="mineStatus" placeholder="请选择" multiple clearable @clear="clearable" collapse-tags @visible-change="selectcar" @remove-tag="remove">
  <el-option :value="mineStatusValue" style="height: auto">
    <el-tree :data="trees" :default-expanded-keys="['总分组']" show-checkbox node-key="name" ref="tree"highlight-current :props="defaultProps" @check="handleCheckChange"></el-tree>
  </el-option>
</el-select>

定义树,下拉框显示的值

 data() {
    return {
      defaultProps: {
        children: "children",
        label: "name",
        id: "id"
      },
      mineStatus: [],
      mineStatusValue: [],
      trees: [],
   }

 methods: {
 //当复选框勾选中时,给下拉框赋值并且给查询条件赋值
handleCheckChange() {
      let res = this.$refs.tree.getCheckedNodes();
      let arrLabel = [];
      let arr = [];
      res.forEach(item => {
        arrLabel.push(item.name);
        arr.push(item);
      });
      this.mineStatusValue = arr;
      this.mineStatus = arrLabel;
      for (let i in arr) {
        this.paginations.groupIds.push(arr[i].id);
      }
    },
    //当多选时候,删除小标签时,将删除的子节点状态改为未勾选,重新查找车辆
    remove(val) {
      this.paginations.groupIds = [];
      this.$refs.tree.setChecked(val, false);
      let arr = this.$refs.tree.getCheckedNodes();
      for (let i in arr) {
        this.paginations.groupIds.push(arr[i].id);
      }
      this.postcar(this.paginations.groupIds);
    },
    //清除所有选项
    clearable() {
      this.paginations.groupIds = [];
      this.cars = [];
      this.$refs.tree.setCheckedKeys([]);
    },
    //下拉框退回时查找车辆
    selectcar(val) {
      if (val === false) {
        this.postcar(this.paginations.groupIds);
      }
    },
    // 根据分组查车辆
    postcar(ids) {
      if (ids.length !== 0) {
        remoteUpgrades._postcar(ids).then(
          res => {
            this.cars = res.data;
          },
          err => {
            console.log(err);
          }
        );
      } else {
        this.cars = [];
      }
    },
  }

最后效果展示

在这里插入图片描述
第一次写博客,有什么不对地方,需要改进的地方欢迎指出

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值