VUE Elemen-ui之穿梭框使用方法详解


Posted in Javascript onJanuary 19, 2021

本文实例为大家分享了VUE Elemen-ui之穿梭框使用方法,供大家参考,具体内容如下

背景:

现在需要使用穿梭框实现,角色的操作功能

需要使用 Element Transfer 穿梭框

HTML代码:

<template>
 <el-card class="box-card" shadow="never" style="height: 700px;"> 
 <div slot="header" class="clearfix" style="height:25px">
 <div style="float:left">
 <span class="titel_font">角色操作</span>
 </div>
 <div style="float:right">
 <el-button type="primary" size="mini" style="font-size:11px" @click="back()">返回首页</el-button>
 </div>
 </div>
 <div style="margin-left:20%;margin-top:20px;" >
 <el-transfer 
 v-model="handleSelectedValue"
 :data="rolePool"
 :titles="['待选角色', '已有角色']"
 :button-texts="['移除', '添加']"
 ></el-transfer>
 
 <el-button type="success" style="margin-left:20%;margin-top:40px;" @click="save()">保存</el-button>
 <el-button type="warning" style="margin-left:200px;margin-top:40px;" @click="reset()">重置</el-button>
 </div>
 </el-card>
</template>

Style代码:

<style>
 /* 设置穿梭框的 宽高 */
 .el-transfer-panel{
 width : 350px;
 height: 400px;
 }
 .el-transfer-panel__list {
 margin: 0;
 padding: 6px 0;
 list-style: none;
 height: 390px;
 overflow: auto;
 -webkit-box-sizing: border-box;
 box-sizing: border-box;
 }
 .el-transfer__buttons {
 display: inline-block;
 vertical-align: middle;
 padding: 0 30px;
 }
</style>

Script代码:

export default {
 data(){
 return{
 rolePool : [], //角色池
 initSelectedValue : [], //初始化选中的值
 handleSelectedValue : [], //操作后选中的值
 finalAddResult: [], //最终添加结果 
 finalRemoveResult: [], //最终删除结果 
 }
 },
 methods: {
 
 //保存到后端
 save(){
 //逻辑代码
 },
 
 //重置
 reset(){
 this.rolePool = []; //清空角色池
 this.handleSelectedValue = []; //清空已有角色
 this.getRoleData();
 },
 //整合封装结果 
 integrationEncapsulationResult(){
 let retain = []; //保留的角色
 for(let i=0; i<this.handleSelectedValue.length; i++){
 for(let f=0; f<this.initSelectedValue.length; f++){
 if(this.handleSelectedValue[i] == this.initSelectedValue[f]){
 retain.push(this.handleSelectedValue[i]);
 }
 }
 }
 
 /************ 有保留角色操作 ************/
 if(retain.length > 0){
 let result = 0; //保留项是否 与 初始化选中的数据相同的 个数
 for(let i=0; i<this.initSelectedValue.length; i++){ 
 for(let f=0; f<retain.length; f++){ 
 if(this.initSelectedValue[i]== retain[f]){
 ++result;
 }
 }
 }
 
 this.addRole(retain); //增加角色 
 this.deletRole(retain,result); //删除角色
 
 }else{
 for(let i=0; i<this.handleSelectedValue.length; i++){
 this.encapsulationResult(i,this.handleSelectedValue,this.finalAddResult);
 }
 for(let i=0; i<this.initSelectedValue.length; i++){
 this.encapsulationResult(i,this.initSelectedValue,this.finalRemoveResult);
 }
 }
 },
 
 /**
 * 封装结果
 * index 循环下标
 * arr 数组
 * returnResult 返回结果
 */
 encapsulationResult(index,arr,returnResult){
 for(let j=0; j<this.rolePool.length; j++){
 if(arr[index] == this.rolePool[j].key){
 let a ={roleId:this.rolePool[j].key,roleName:this.rolePool[j].label}
 returnResult.push(a);
 }
 }
 },
 
 //增加角色
 addRole(retain){
 //逻辑代码
 },
 
 //删除角色
 deletRole(retain,result){
 //true有删除项 false 无删除项 对比保留项是否 与 初始化选中的数据不一致
 if(result!=this.initSelectedValue.length){ 
 //逻辑代码
 }
 },
 
 //获取角色
 getRoleData(){
 let url = `${lz}/wfHandleRole/showWfHandleRole`;
 let data = {};
 this.$post(url,data).then(retData => {
 console.log('获取角色 ',retData);
 if(retData.returnCode == 1){
 let arr = retData.returnData;
 //逻辑代码
 }
 });
 },
 
 
 
 },
 created(){
 this.getRoleData();
 
 },
 
 }

最终显示结果:

VUE Elemen-ui之穿梭框使用方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
onpropertypchange
Jul 01 Javascript
JavaScript 获取事件对象的注意点
Jul 29 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
jquery 实现窗口的最大化不论什么情况
Sep 03 Javascript
node.js中的fs.link方法使用说明
Dec 15 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
详解webpack import()动态加载模块踩坑
Jul 17 Javascript
nuxt引入组件和公共样式的操作
Nov 05 Javascript
JavaScript 异步时序问题
Nov 20 Javascript
Ajax实现异步加载数据
Nov 17 Javascript
Vue实现穿梭框效果
Sep 30 #Javascript
原生js实现表格翻页和跳转
Sep 29 #Javascript
vue实现井字棋游戏
Sep 29 #Javascript
js实现移动端图片滑块验证功能
Sep 29 #Javascript
js+cavans实现图片滑块验证
Sep 29 #Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 #Javascript
原生JavaScript实现刮刮乐
Sep 29 #Javascript
You might like
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
Javascript 布尔型分析
2008/12/22 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
python字典get()方法用法分析
2015/04/17 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
python实现统计代码行数的小工具
2019/09/19 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
构建高效课堂实施方案
2014/03/13 职场文书
实验室的标语
2014/06/20 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
解析Java中的static关键字
2021/06/14 Java/Android
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL