vue+element Table穿梭 (未封装)

<div>
   <el-row>
     <el-col :span="13">
       <el-table
         ref="multipleTable"
         :data="operaDataList"
         border
         height="56vh"
         highlight-current-row
         :header-row-style="{ background: '#F2F7FF' }"
         :header-cell-style="{ background: 'transparent' }"
         style="width: 100%"
         key="table2"
         @selection-change="operaAdd"
       >
        <el-table-column type="selection" width="55"> </el-table-column>
              <el-table-column
       prop="date"
       label="日期"
       width="180">
	      </el-table-column>
	      <el-table-column
	        prop="name"
	        label="姓名"
	        width="180">
	      </el-table-column>
	      <el-table-column
	        prop="address"
	        label="地址">
	      </el-table-column>
       </el-table>
     </el-col>
     <el-col class="col_center" :span="2">
       <div>
         <el-button size="mini" @click="addOperaData">
           <i class="el-icon-arrow-right"></i>
           <i class="el-icon-arrow-right"></i>
           <i class="el-icon-arrow-right"></i>
         </el-button>
       </div>
       <div>
         <el-button size="mini" @click="delOperaData">
           <i class="el-icon-arrow-left"></i>
           <i class="el-icon-arrow-left"></i>
           <i class="el-icon-arrow-left"></i
         ></el-button>
       </div>
     </el-col>
     <el-col :span="9">
       <el-table
         :data="operaData"
         border
         height="56vh"
         highlight-current-row
         :header-row-style="{ background: '#F2F7FF' }"
         :header-cell-style="{ background: 'transparent' }"
         style="width: 100%"
         key="table5"
         @selection-change="operDel"
       >
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column
	       prop="date"
	       label="日期"
	       width="180">
	     </el-table-column>
	      <el-table-column
	        prop="name"
	        label="姓名"
	        width="180">
	      </el-table-column>
	      <el-table-column
	        prop="address"
	        label="地址">
	      </el-table-column>
       </el-table>
     </el-col>
   </el-row>
</div>

export default {
  data() {
    return {
	    operaDataList:[{
	    	id:1,
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
          	id:2,
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
          	id:3
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
          	id:4,
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
          }],
	    operaData:[],
	    operaStorage:[],
	    operaDelStorage :[],
	    oldOpera:[]
	    }
    };
     methods: {
   	   operaAdd(items) {
	      this.operaStorage = [...items].concat(this.oldOpera);
	      console.log(this.operaStorage)
	    },
        // 手术穿梭添加按钮>>>
	    addOperaData() {
	      if (this.operaStorage.length == 0)
	        return this.$message.warning("请先选择手术再添加");
	      else if (this.operaData.length == 0) {
	        this.operaData = [...this.operaStorage];
	      } else {
	        let dataList = this.operaData.concat(this.operaStorage);
	        let obj = {};
	        let list = [];
	        for (var i = 0; i < dataList.length; i++) {
	          if (!obj[dataList[i].id]) {
	            list.push(dataList[i]);
	            obj[dataList[i].id] = true;
	          } else {
	            if (document.getElementsByClassName("el-message").length === 0) {
	              this.$message.warning("含有重复的手术,已过滤添加");
	            }
	          }
	        }
	        this.operaData = [...list];
	      }
	      this.oldOpera = []
	      this.$refs.multipleTable.clearSelection();
	    },
	        operDel(items) {
      this.operaDelStorage = [...items];
    },
    // 手术穿梭删除已添加按钮<<<
	    delOperaData() {
	      if (this.operaDelStorage.length == 0)
	        return this.$message.warning("请先选择已添加的手术进行移除");
	      for (let i = 0; i < this.operaData.length; i++) {
	        for (let j = 0; j < this.operaDelStorage.length; j++) {
	          if (this.operaData[i].id== this.operaDelStorage[j].id) {
	            this.operaData.splice(i, 1);
	            i--;
	            break;
	          }
	        }
	      }
	    },
	}
  },

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值