实现一个左右二级穿梭框

本文详细介绍了如何在Vue.js项目中结合ElementUI库,成功创建一个功能完善的左右二级穿梭框组件,解决了一个长期困扰作者的问题。
摘要由CSDN通过智能技术生成

这个问题困扰了好久,终于把它搞出来了

1.新建一个组件

//TreeTransfer.vue
<template lang="html">
  <div class="tree-transfer">
    <div class="transfer-panel unselect">
     <!-- <div class="transfer-panel__header">
        <el-checkbox v-model="leftCheckAll" @change="clickLeftCheckAll">待选</el-checkbox>
     </div> -->
     <div class="transfer-panel__content">
       <!-- <el-input
        size="mini"
        placeholder="输入关键字进行过滤"
        v-model="leftFilterText">
       </el-input> -->
       <!-- <el-row :gutter="15" style="margin: 10px 1px;">
        <el-col :lg="12" :md="15">
          <el-select v-model="query" placeholder="请选择控制区域" clearable @change="changeArea"
          :popper-append-to-body="false">
            <el-option v-for="item in areaData" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </el-select>
        </el-col>
        <el-col :lg="12" :md="15">
           筛选回路类型 -->
          <!-- <el-select v-model="queryType" placeholder="请选择控制类型"  clearable @change="changeType"
          :popper-append-to-body="false">
            <el-option v-for="item in typeData" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </el-select>
        </el-col>
      </el-row> -->
       <el-tree
        filter
        ref= "tree"
        :data="leftNodeData"
        show-checkbox
        node-key="id"
        :default-expand-all="false"
        :filter-node-method="filterNode"
        @check = "nodeClick"
        :props="defaultProps">
      </el-tree>
     </div>
    </div>
    <div class="button">
      <div :class="[ 'btn', {'disabled': !toLeft} ]" @click = "removeToLeft">
        向左
      </div>
      <div :class="[ 'btn', {'disabled': !toRight} ]" @click = "removeToRight">
        向右
      </div>
    </div>
    <div class="transfer-panel selected">
      <!-- <div class="transfer-panel__header">
        <el-checkbox v-model="rightCheckAll" @change="clickRightCheckAll">已选</el-checkbox>
      </div> -->
      <div class="transfer-panel__content">
        <!-- <el-input
         size="mini"
         placeholder="输入关键字进行过滤"
         v-model="rightFilterText">
         </el-input> -->
        <el-tree
         ref= "selectedTree"
         :data="rightNodeData"
         show-checkbox
         :default-expand-all="false"
         node-key="id"
         :filter-node-method="filterNode"
         @check = "selectedClick"
         :props="defaultProps">
       </el-tree>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    defaultProps: {
      type: Object,
      default: () => {
        return {
          children: 'findList',
          label: 'name'
        }
      }
    },
    treeData: {
      type: Array,
      default: () => {
        return []
      }
    },
    defaultKeys: {
      type: Array,
      default: () => {
        return []
      }
    },
    areaInfo:{
      type: Array,
      default: () => {
        return []
      }
    },
    typeInfo:{
      type: Array,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值