
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
.container{
width: 1200px;
height: 800px;
background: #000414;
margin: 60px auto;
padding: 20px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.left{
width: 600px;
height: 100%;
border: 1px solid #F00;
border-radius: 20px;
padding: 10px;
}
.right{
width: 600px;
height: 100%;
margin-left: 30px;
border: 1px solid #F00;
border-radius: 20px;
padding: 10px;
}
.row{
width: 100%;
height: 80px;
margin-bottom: 15px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.row-left{
width: 100%;
height: 80px;
border:1px solid #F00;
margin-bottom: 15px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 10px 5px;
}
.type-one{
width: 100%;
height: 100%;
background: #0a2a71;
border-radius: 20px;
color: white;
text-align: center;
line-height: 80px;
font-size: 18px;
}
.type-two{
width: 65%;
height: 100%;
background: #0a2a71;
border-radius: 20px;
color: white;
text-align: center;
line-height: 80px;
font-size: 18px;
}
.type-three{
width: 30%;
height: 100%;
background: #0a2a71;
border-radius: 20px;
color: white;
text-align: center;
line-height: 80px;
font-size: 18px;
}
.border{
border:1px solid #FFFFFF;
background: transparent;
}
</style>
</head>
<body>
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
<script>
var dangqianDom;
var endDom;
var removeArr=[]
var leftData=[
{arr:[
{type:3,name:''},
{type:3,name:''},
{type:3,name:''},
]},
{arr:[
{type:3,name:''},
{type:3,name:''},
{name: '',type: 3},
]}
]
var rightData=[
{type:1,name:'1'},
{type:2,name:'2'},
{type:2,name:'7'},
{type:3,name:'3'},
{type:3,name:'4'},
{type:3,name:'5'},
{type:3,name:'6'},
]
initLeft()
function initLeft(){
var html = ''
for(let i=0;i<leftData.length;i++){
html+=' <div class="row-left" >'
for(let m=0;m<leftData[i].arr.length;m++){
const index = i+'-'+m
let strClass =''
if(leftData[i].arr[m].type == 1){
strClass='type-one'
}else if(leftData[i].arr[m].type == 2){
strClass='type-two'
}else if(leftData[i].arr[m].type == 3){
strClass='type-three'
}
html+='<div class="'+strClass+' border" ondrop="drop(event)" type="'+leftData[i].arr[m].type+'" index="'+index+'" ondragover="allowDrop(event)">'+leftData[i].arr[m].name+'</div>'
}
html+='</div>'
}
$('.left').append(html)
}
initRight()
function initRight(){
var html = ''
for(let i=0;i<rightData.length;i++){
html+=' <div class="row" >'
if(rightData[i].type == 1){
html+='<div class="type-one" draggable="true" ondragstart="drag(event)" type="1" ondragend="mm(event)" index="'+i+'">'+rightData[i].name+'</div>'
}else if(rightData[i].type == 2){
html+='<div class="type-two" draggable="true" ondragstart="drag(event)" type="2" ondragend="mm(event)" index="'+i+'">'+rightData[i].name+'</div>'
}else if(rightData[i].type == 3){
html+='<div class="type-three" draggable="true" ondragstart="drag(event)" type="3" ondragend="mm(event)" index="'+i+'">'+rightData[i].name+'</div>'
}
html+='</div>'
}
$('.right').append(html)
}
function drag(e) {
dangqianDom = e.toElement
console.log('aaa',e)
if (e.type === 'dragstart') {
e = event ? event : e
}else {
if (event.touches) {
e = event.touches[0] ? event.touches[0]:event;
}
}
}
function drop(e) {
if (e.type === 'drop'){
e = event ? event : e
e.preventDefault()
} else {
if (event.touches) {
e = event.touches[0] ? event.touches[0]:event;
}
}
dance.style.left = e.clientX - dragOffset.X1 + 'px'
dance.style.top = e.clientY - dragOffset.Y1 + 'px'
}
function allowDrop(e) {
console.log('cc',e)
e = event ? event : e
$('.type-three').css('background','transparent')
e.currentTarget.style.background = 'red'
const dangqianClass = $(dangqianDom)[0].className
endDom = e.currentTarget
}
function mm(e){
debugger
console.log('ii',endDom)
const dangIndex = $(dangqianDom).attr('index')
const dangType = $(dangqianDom).attr('type')
const index = $(endDom).attr('index')
const endType = $(endDom).attr('type')
const indexList = index.split('-')
if(dangType == 1){
for(let i=0;i<leftData[indexList[0]].arr.length;i++){
removeArrFun(leftData[indexList[0]].arr[i])
}
leftData[indexList[0]].arr = [rightData[dangIndex]]
}else if(dangType == 2){
if(endType == 1){
for(let i=0;i<leftData[indexList[0]].arr.length;i++){
removeArrFun(leftData[indexList[0]].arr[i])
}
const arr = [ rightData[dangIndex],{type:3,name:''}]
leftData[indexList[0]].arr = arr
}else if(endType == 2){
removeArrFun(leftData[indexList[0]].arr[indexList[1]])
leftData[indexList[0]].arr[indexList[1]] = rightData[dangIndex]
}else if(endType == 3){
if(indexList[1] == 0){
for(let i=0;i<leftData[indexList[0]].arr.length;i++){
removeArrFun(leftData[indexList[0]].arr[i])
}
leftData[indexList[0]].arr = [rightData[dangIndex]]
leftData[indexList[0]].arr.push({type:3,name:''},)
}else if(indexList[1] == 2){
removeArrFun(leftData[indexList[0]].arr[indexList[1] -1])
removeArrFun(leftData[indexList[0]].arr[indexList[1]])
leftData[indexList[0]].arr.splice(indexList[1] -1,2,rightData[dangIndex])
}else if(indexList[1] == 1) {
for(let i=0;i<leftData[indexList[0]].arr.length;i++){
removeArrFun(leftData[indexList[0]].arr[i])
}
leftData[indexList[0]].arr = [{type:3,name:''},rightData[dangIndex]]
}
}
}else if(dangType == 3){
if(endType == 1){
for(let i=0;i<leftData[indexList[0]].arr.length;i++){
removeArrFun(leftData[indexList[0]].arr[i])
}
const arr =[{type:3,name:''}, {type:3,name:''}, {type:3,name:''}]
arr[indexList[1]] = rightData[dangIndex]
leftData[indexList[0]].arr = arr
}else if(endType == 2){
removeArrFun(leftData[indexList[0]].arr[indexList[1]])
leftData[indexList[0]].arr.splice(indexList[1],1,rightData[dangIndex])
leftData[indexList[0]].arr.push({type:3,name:''})
}else if(endType == 3){
removeArrFun(leftData[indexList[0]].arr[indexList[1]])
leftData[indexList[0]].arr[indexList[1]] = rightData[dangIndex]
}
}
$('.left').empty()
initLeft()
console.log(leftData)
rightData.splice(dangIndex, 1)
$('.right').empty()
initRight()
function removeArrFun(data){
if(data.name != ''){
rightData.push(data)
}
}
}
</script>
</body>
</html>