el-table实现穿梭功能

 第一种

<template><el-row :gutter="20"><el-col :span="10"><!-- 搜索 --><div class="search-bg"><YcSearchInput title="手机号" v-model="search.phone" /><div class="search-submit"><el-button type="primary" @click="getTableList(1)" class="m-r-10">查询</el-button><el-button @click="clearSearch()">重置</el-button></div></div><!-- 穿梭框左边 --><el-table ref="multipleTable" :data="tableData1" height="300" tooltip-effect="dark" style="width: 100%" @select="checkLeft" @select-all="checkAll" class="el-table-dialog" row-key="id"><el-table-column type="selection" width="55" align="center" /><el-table-column type="index" label="序号" min-width="160" /><el-table-column prop="phone" label="手机号" min-width="160" /><el-table-column prop="nickName" label="姓名" min-width="160" /><el-table-column prop="id" label="样本ID" min-width="160" /></el-table><!-- 翻页 --><el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="search.page.current" :page-sizes="$store.state.pageSizes" :page-size="search.page.size" :layout="$store.state.layout" :total="tableTotal" /></el-col><!-- 按钮 --><el-col :span="4" class="el-btn-dialog"><el-button @click="right" type="primary" :disabled="nowSelectData.length ? false : true" icon="el-icon-arrow-right">加入右侧</el-button><el-button @click="left" type="primary" :disabled="nowSelectRightData.length ? false : true" icon="el-icon-arrow-left" style="margin-left: 0;margin-top: 10px;">加入左侧</el-button></el-col><el-col :span="10"><!-- 搜索 --><div class="search-bg"><YcSearchInput title="手机号" v-model="phoneRight" /><div class="search-submit"><el-button type="primary" @click="searchBtn()" class="m-r-10">查询</el-button><el-button @click="resetBtn()">重置</el-button></div></div><!-- 穿梭框右边 --><el-table ref="multipleTable" :data="tableData2" height="300" tooltip-effect="dark" style="width: 100%" @select="checkRight" @select-all="checkRightAll" row-key="id" class="el-table-dialog"><el-table-column type="selection" width="55" align="center"></el-table-column><el-table-column type="index" label="序号" min-width="160" /><el-table-column prop="phone" label="手机号" min-width="160" /><el-table-column prop="nickName" label="姓名" min-width="160" /><el-table-column prop="id" label="样本ID" min-width="160" /></el-table></el-col></el-row>
</template><script>
export default {data () {return {search: {phone: '',page: {current: 1,size: 10}},tableTotal: 0,tableData1: [],tableData2: [],nowSelectData: [], // 左边选中列表数据nowSelectRightData: [], // 右边选中列表数据phoneRight: ''}},mounted () {this.getTableList()},methods: {// 获取左侧数据getTableList () {this.tableData1 = [{ phone: "111", nickName: "张三", id: "1" },{ phone: "222", nickName: "李四", id: "2" },{ phone: "333", nickName: "王五", id: "3" },{ phone: "444", nickName: "翠花", id: "4" },{ phone: "555", nickName: "小花", id: "5" },{ phone: "666", nickName: "佚名", id: "6" }]},// 右边查询searchBtn () {const tableData2 = JSON.parse(localStorage.getItem('tableData2'))if (this.phoneRight === '' || !this.phoneRight) {this.tableData2 = tableData2} else {this.tableData2 = tableData2.filter(item => item.id.indexOf(this.phoneRight) > -1)}},// 右边重置resetBtn () {this.phoneRight = ''this.tableData2 = JSON.parse(localStorage.getItem('tableData2'))},// 重置clearSearch () {this.search = {phone:'',page: {current: 1,size: 10}}this.getTableList()},/*** 分页*/handleSizeChange (val) {this.search.page.current = 1this.search.page.size = valthis.getTableList()},handleCurrentChange (val) {this.search.page.current = valthis.getTableList()},// 左边全选事件checkAll (row) {this.nowSelectData = row;},// 右边全选事件checkRightAll (row) {this.nowSelectRightData = row;},// 左边选中事件checkLeft (row) {this.nowSelectData = row;},// 右边选中事件checkRight (row) {this.nowSelectRightData = row;},// 点击去右边right () {this.tableData2 = this.tableData2.concat(this.nowSelectData);this.handleRemoveTabList(this.nowSelectData, this.tableData1);// 按钮禁用this.nowSelectData = [];localStorage.setItem('tableData2', JSON.stringify(this.tableData2))},// 点击去左边left () {this.tableData1 = this.tableData1.concat(this.nowSelectRightData);this.handleRemoveTabList(this.nowSelectRightData, this.tableData2);// 按钮禁用this.nowSelectRightData = [];},// 方法handleRemoveTabList (isNeedArr, originalArr) {if (isNeedArr.length && originalArr.length) {for (let i = 0; i < isNeedArr.length; i++) {for (let k = 0; k < originalArr.length; k++) {// 注意,nickName为唯一值,如果不为唯一值那么会出错if (isNeedArr[i]["nickName"] === originalArr[k]["nickName"]) {console.log("-----------1111");originalArr.splice(k, 1);}}}}}}
}
</script><style lang="less" scoped>
::v-deep .el-table-dialog {border: 1px solid #e8e6e6;thead {// color: black;th {background-color: #f4f4f4;.cell {font-weight: bold;}}th:last-child {text-align: center;}}
}
.search-bg {margin: 0 !important;
}
</style>

第二种,只是纯表单穿梭,没有其他功能

<template><el-row :gutter="20"><el-col :span="10"><!-- 穿梭框左边 --><el-table ref="multipleTable" :data="tableData1" height="300" tooltip-effect="dark" style="width: 100%" @select="checkLeft" @select-all="checkAll" class="el-table-dialog" row-key="id"><el-table-column type="selection" width="55" align="center"></el-table-column><el-table-column type="index" label="序号" align="center"></el-table-column><el-table-column label="编号" align="center"><template slot-scope="{ row }"><span>{{ row.nickName }}</span></template></el-table-column><el-table-column label="类型" align="center"><template slot-scope="{ row }"><span>{{ row.nickName }}</span></template></el-table-column></el-table></el-col><el-col :span="4" class="el-btn-dialog"><el-button @click="right" type="primary" :disabled="nowSelectData.length ? false : true" icon="el-icon-arrow-right">加入右侧</el-button><el-button @click="left" type="primary" :disabled="nowSelectRightData.length ? false : true" icon="el-icon-arrow-left" style="margin-left: 0;margin-top: 10px;">加入左侧</el-button></el-col><el-col :span="10"><!-- 穿梭框右边 --><el-table ref="multipleTable" :data="tableData2" max-height="300" tooltip-effect="dark" style="width: 100%" @select="checkRight" @select-all="checkRightAll" row-key="id" class="el-table-dialog"><el-table-column type="selection" width="55" align="center"></el-table-column><el-table-column type="index" label="序号" align="center"></el-table-column><el-table-column label="编号" align="center"><template slot-scope="{ row }"><span>{{ row.nickName }}</span></template></el-table-column><el-table-column label="类型" align="center"><template slot-scope="{ row }"><span>{{ row.nickName }}</span></template></el-table-column></el-table></el-col></el-row>
</template><script>
export default {data () {return {tableData1: [{ phone: "132344", nickName: "张三", id: "1" },{ phone: "132344", nickName: "李四", id: "2" },{ phone: "132344", nickName: "王五", id: "3" },{ phone: "132344", nickName: "翠花", id: "4" },{ phone: "132344", nickName: "小花", id: "5" },{ phone: "132346", nickName: "佚名", id: "6" }],tableData2: [],nowSelectData: [], // 左边选中列表数据nowSelectRightData: [], // 右边选中列表数据}},methods: {// 左边全选事件checkAll (row) {this.nowSelectData = row;},// 右边全选事件checkRightAll (row) {this.nowSelectRightData = row;},// 左边选中事件checkLeft (row) {this.nowSelectData = row;},// 右边选中事件checkRight (row) {this.nowSelectRightData = row;},// 点击去右边right () {this.tableData2 = this.tableData2.concat(this.nowSelectData);this.handleRemoveTabList(this.nowSelectData, this.tableData1);// 按钮禁用this.nowSelectData = [];},// 点击去左边left () {this.tableData1 = this.tableData1.concat(this.nowSelectRightData);this.handleRemoveTabList(this.nowSelectRightData, this.tableData2);// 按钮禁用this.nowSelectRightData = [];},// 方法handleRemoveTabList (isNeedArr, originalArr) {if (isNeedArr.length && originalArr.length) {for (let i = 0; i < isNeedArr.length; i++) {for (let k = 0; k < originalArr.length; k++) {// 注意,nickName为唯一值,如果不为唯一值那么会出错if (isNeedArr[i]["nickName"] === originalArr[k]["nickName"]) {console.log("-----------1111");originalArr.splice(k, 1);}}}}}}
}
</script><style lang="less" scoped>
::v-deep .el-table-dialog {border: 1px solid #e8e6e6;thead {// color: black;th {background-color: #f4f4f4;.cell {font-weight: bold;}}th:last-child {text-align: center;}}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EasyX趣味化编程note2,绘制基本图形

创意化编程&#xff0c;让编程更有趣 今天介绍的仍为比较简单的效果&#xff0c;由浅入深来进行学习 介绍每个函数都会附上代码和运行结果&#xff0c;感兴趣的大家可以复制粘贴运行一下看看效果&#xff0c;也可以自己进行改动&#xff0c;非常好玩且加深印象。 上节课的知识…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

机器学习笔记:Huber Loss smooth L1 loss

1 Huber loss 1.1 介绍 Huber Loss是回归问题中的一种损失函数&#xff0c;它结合了均方误差MSE和绝对误差MAE的特点。 Huber Loss在误差较小的时候是平方损失&#xff0c;而在误差较大的时候是线性损失。因此&#xff0c;它在处理有噪声的数据时&#xff0c;尤其是存在离群点…

手机搜狗输入法,输入拼音时如何分割拼音,调出“分词“功能,如何微信或QQ使用发送按钮而不是换行?

背景 有时候打字&#xff0c;输入 “xian” 的时候我们的意图是 “xi’an” &#xff08;西安&#xff09;&#xff0c;或者输入 “yue” 的时候希望是 “yu’e”&#xff08;余额&#xff09; 如何输入这个分隔符 ’ 呢&#xff1f; 设置方法 默认页面如图 希望设置成 点…

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司&#xff0c;以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商&#xff0c;Miele的经营范围覆盖了厨房、洗衣和清洁领域&#xff0c;致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中&#xff0c;聚合函数是一组强大的工具&#xff0c;用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户&#xff0c;了解聚合函数都是非常重要…

CSS详细基础(四)显示模式

本帖开始介绍CSS中更复杂的内容 目录 一.显示模式 1.行内元素 2.块级元素 3.行内块元素 二.背景样式 一.显示模式 顾名思义&#xff0c;在CSS中&#xff0c;元素主要有3种显示模式&#xff1a;行内元素、块级元素、行内块元素~ 所谓块级元素&#xff0c;指的是该元素在…

ChatGPT AIGC 非常实用的AI工具集合大全

实战AI 工具箱 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu

GD32工程创建

1.创建空工程 在任意路径下创建空的test文件夹。打开keil5空工程创建空工程 选择对应的芯片型号&#xff1a; 然后把空工程保存到test文件夹下。会自动生成如下文件。 2. 添加组 下载GD32F10X的固件库&#xff1a;在百度里搜索GD32进入官网。 下载下来对应的文件如下&#xff…

MYSQL常用命令

一.数据类型 MySQL中有多种数据类型&#xff0c;每种类型用于存储不同类型的数据。以下是MySQL中常见的数据类型&#xff1a; 数值类型&#xff1a; INT&#xff1a;整数类型&#xff0c;存储范围为-2,147,483,648到2,147,483,647。BIGINT&#xff1a;大整数类型&#xff0c;存…

【蓝桥杯选拔赛真题63】Scratch云朵降雨 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch云朵降雨 一、题目要求 编程实现 二、案例分析 1、角色分析

AHH HackerHouse @Move大理站完美谢幕

Antalpha HackerHouse Move 大理站于2023年9月23日在面包树举办了Final DemoDay&#xff0c;这也代表着为期21天的 HackerHouse 活动完美谢幕。 自从9月3日开始&#xff0c;整整21天的共居时间里&#xff0c;我们从个体逐渐融汇成小团队&#xff0c;最终成为了一个紧密团结的大…

UI自动化测试 | Jenkins配置优化

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

软件测试之单元测试自动化入门基础

单元测试自动化 所谓的单元测试(Unit Test)是根据特定的输入数据&#xff0c;针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构&#xff1a;函数&#xff0c;类&#xff0c;模块等。在Python中比较知名…

OpenHarmony自定义组件介绍

一、创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑…

安装ipfs-swarm-key-gen

安装ipfs-swarm-key-gen Linux安装go解释器安装ipfs-swarm-key-gen Linux安装go解释器 https://blog.csdn.net/omaidb/article/details/133180749 安装ipfs-swarm-key-gen # 编译ipfs-swarm-key-gen二进制文件 go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm…

Redis代码实践总结(二)

使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而&#xff0c;为了使使用 Redis 进行黑客攻击变得更简单&#xff0c;Redis 提供了一个命令行实用程序&#xff0c;可用于向 Redis 发送命令…

odoo16 取消“系统各功能状态日报”的邮件

odoo16默认情况下每周都会发送一个“系统各功能状态日报”的邮件&#xff0c;而且是所有人都发&#xff0c; 这个功能在哪配置呢&#xff1f; 今天研究了一下&#xff0c; 线索是“系统各功能状态日报”&#xff0c;先全文检索吧 #. module: digest #: model:digest.digest,na…

KUKA机器人通过3点法设置工作台基坐标系的具体方法

KUKA机器人通过3点法设置工作台基坐标系的具体方法 具体方法和步骤可参考以下内容: 进入主菜单界面,依次选择“投入运行”—“测量”—基坐标,选择“3点法”, 在系统弹出的基坐标编辑界面,给基座标编号为3,命名为table1,然后单击“继续”按钮,进行下一步操作, 在弹出的…

批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能

目录 1、批量删除wordpress文章修订版本/自动草稿残留数据&#xff08;3种方法&#xff09; 方法一&#xff1a;SQL命令批量删除 命令&#xff1a; 方法二&#xff1a;利用PHP代码来删除 方法三&#xff1a;利用数据库清理优化插件 WP Clean Up 或 WP Cleaner 批量删除 2…