本文实例为大家分享了VUE Elemen-ui之穿梭框使用方法,供大家参考,具体内容如下
背景:
现在需要使用穿梭框实现,角色的操作功能
需要使用 Element Transfer 穿梭框
HTML代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
< 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代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<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代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
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();
},
}
|
最终显示结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_42715494/article/details/89000698