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;
	          }
	        }
	      }
	    },
	}
  },

效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueElement可以一起使用来封装一个选人弹窗。首先,我们需要使用Vue框架来构建弹窗组件,然后使用Element UI库来实现弹窗的样式和组件。 在Vue中,我们可以使用组件的方式来封装选人弹窗。首先,我们需要创建一个组件文件,命名为"selectUserModal.vue"。然后,在该组件中,我们可以使用Element UI的Modal组件作为弹窗容器,使用Form组件和Table组件等来展示选择人员的界面。 在"selectUserModal.vue"中,我们可以定义一个data属性来存储选择的人员信息,以及一个visible属性来控制弹窗的显示和隐藏。我们还可以定义一些方法来处理用户的选择操作,如确定选择和取消选择等。 在弹窗的界面中,我们可以使用Form组件来展示与人员选择相关的输入框,如搜索框和筛选条件等。然后,在表格中展示人员列表,可以使用Table组件,并绑定数据源和列定义。 为了实现人员选择操作,我们可以提供一个确认按钮,当用户点击确认按钮时,我们可以触发一个自定义事件,并将选择的人员信息作为参数进行传递。其他的操作,如点击表格行即选中人员,我们也可以在相应的方法中进行处理。 当组件完成后,我们可以在其他Vue页面中引用该组件,并传递参数来控制弹窗的显示。通过监听自定义事件,我们可以在父组件中获取到选择的人员信息,并进行相应的操作。 总结起来,通过VueElement的配合,我们可以封装一个选人弹窗组件,使其能在Vue项目中方便地使用,并具有良好的交互和样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值