<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<title>自定义列</title>
|
<meta name="renderer" content="webkit">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
<!-- <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> -->
|
<!-- <link rel="stylesheet" href="../../css/layui.min.css"> -->
|
<link rel="stylesheet" href="/layui-v2.7.6/layui/css/layui.css">
|
</head>
|
<body>
|
<div class="layui-fluid">
|
<div class="layui-card">
|
<div class="layui-card-body">
|
<div id="transferTest" class="demo-transfer"></div>
|
<div class="layui-btn-container" style="margin-top: 20px;float: right;margin-right: 20px;">
|
<button type="button" class="layui-btn" lay-demotransferactive="saveCols">确定</button>
|
<button type="button" class="layui-btn" lay-demotransferactive="resetCols">重置列</button>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- <script src="../../layuiadmin/layui/layui.js"></script> -->
|
<!-- <script src="http://cdn.staticfile.org/layui/2.7.6/layui.min.js"></script> -->
|
<script src="/layui-v2.7.6/layui/layui.js"></script>
|
<script src="../../js/jquery-3.5.1.min.js"></script>
|
<script src="../../js/jquery.cookie.js"></script>
|
<script src="../../js/public.js"></script>
|
<script>
|
layui.config({
|
base: '../../layuiadmin/' //静态资源所在路径
|
}).extend({
|
index: 'lib/index' //主入口模块
|
}).use(['transfer', 'layer', 'util'], function() {
|
var transfer = layui.transfer
|
,layer = layui.layer
|
,util = layui.util
|
,index1 = parent.layer.getFrameIndex(window.name);
|
|
var Href = getQueryString("Href");
|
var ColsSysArr = decodeURIComponent(getQueryString("ColsSysArr"));
|
|
var colsSysData
|
var colsUserData
|
var param={
|
Href:Href,
|
ColsSysArr:ColsSysArr
|
};
|
sendData(IP + "/Sys/GetTableColsSys", param, 'post', function(res) {
|
if (res.code == 0) { //成功
|
colsSysData=eval(res.data.colsSys);
|
colsUserData=eval(res.data.colsUser);
|
let selectedTransfers = [];
|
//渲染
|
transferRightSort(colsSysData,'value',colsUserData)
|
transfer.render({
|
elem: '#transferTest' //绑定元素
|
, title: ['可添加的列', '已添加的列(可上下拖动调整顺序)']
|
, data: colsSysData
|
,value:colsUserData
|
,width: 400
|
,height:520
|
, id: 'demo1' //定义索引
|
, onchange: function (data, index) {
|
if (index === 0) {
|
// 加入
|
selectedTransfers.push(data)
|
} else {
|
// 移除
|
selectedTransfers.splice(data)
|
}
|
$("#transferTest div[data-index='1'] ul li").attr("draggable", "true");
|
//console.log(data); //得到当前被穿梭的数据
|
//console.log(index); //如果数据来自左边,index 为 0,否则为 1
|
}
|
});
|
$("#transferTest div[data-index='1'] ul li").attr("draggable", "true");
|
loadDrag()
|
} else { //不成功
|
layer.msg('获取物品信息失败!', {
|
icon: 2,
|
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
}, function() {});
|
}
|
});
|
|
//批量办法定事件
|
util.event('lay-demoTransferActive', {
|
saveCols: function(othis){
|
var getData = transfer.getData('demo1'); //获取右侧数据
|
var param={
|
Href:Href,
|
ColsJson:JSON.stringify(getData),
|
ColsSysArr:ColsSysArr
|
};
|
sendData(IP + "/Sys/SaveClosUser", param, 'post', function(res){
|
if(res.code === 0){
|
parent.location.reload();
|
parent.layer.close(index1);
|
}else { //不成功
|
layer.msg('自定义列失败!', {
|
icon: 2,
|
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
}, function() {});
|
}
|
});
|
},
|
resetCols: function(othis){
|
var param={
|
Href:Href,
|
ColsJson:'',
|
ColsSysArr:''
|
};
|
sendData(IP + "/Sys/SaveClosUser", param, 'post', function(res){
|
if(res.code === 0){
|
parent.location.reload();
|
parent.layer.close(index1);
|
}else { //不成功
|
layer.msg('重置列失败!', {
|
icon: 2,
|
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
}, function() {});
|
}
|
});
|
}
|
|
});
|
|
//layui.transfer 实现穿梭框选择完后,可鼠标拖动调整选中后的列表顺序
|
function loadDrag() {
|
let list = document.querySelector("#transferTest div[data-index='1'] ul")
|
let currentLi
|
list.addEventListener('dragstart', (e) => {
|
e.dataTransfer.effectAllowed = 'move'
|
currentLi = e.target
|
// setTimeout(() => {
|
// currentLi.classList.add('moving')
|
// })
|
})
|
|
list.addEventListener('dragenter', (e) => {
|
e.preventDefault()
|
if (e.target === currentLi || e.target === list) {
|
return
|
}
|
let liArray = Array.from(list.childNodes)
|
let currentIndex = liArray.indexOf(currentLi)
|
let targetIndex = liArray.indexOf(e.target)
|
//禁止拖动和取消
|
if(currentLi.firstChild.disabled || e.target.firstChild.disabled){
|
return;
|
}
|
if (currentIndex < targetIndex) {
|
if (e.target.nodeName === 'LI') {
|
list.insertBefore(currentLi, e.target.nextElementSibling)
|
}
|
} else {
|
if (e.target.nodeName === 'LI') {
|
list.insertBefore(currentLi, e.target)
|
}
|
}
|
})
|
// list.addEventListener('dragover', (e) => {
|
// e.preventDefault()
|
// })
|
// list.addEventListener('dragend', (e) => {
|
// currentLi.classList.remove('moving')
|
// })
|
}
|
|
//layui 解决穿梭框transfer右侧数据赋值排序错误
|
function transferRightSort(arr1, attr, arr2) {
|
var arr = [];
|
for (var i = 0; i < arr2.length; i++) {
|
var index = ArrayIndexOF(arr1,attr,arr2[i]);
|
arr.push(arr1[index]);
|
arr1.splice($.inArray(arr1[index],arr1),1);
|
}
|
arr1.push.apply(arr1,arr);
|
}
|
|
function ArrayIndexOF(arr, attr, value) {
|
//检测value在arr中出现的位置
|
for(var i = 0; i < arr.length; i++) {
|
if(arr[i][attr] === value) {
|
return i;
|
}
|
}
|
return -1;
|
}
|
|
});
|
</script>
|
</body>
|
</html>
|