|
@@ -11,11 +11,10 @@
|
|
|
class="for-max-box"
|
|
class="for-max-box"
|
|
|
v-for="(item, index) in dataList"
|
|
v-for="(item, index) in dataList"
|
|
|
:key="index"
|
|
:key="index"
|
|
|
- draggable="true"
|
|
|
|
|
@dragstart="onBigDragStart($event, index)"
|
|
@dragstart="onBigDragStart($event, index)"
|
|
|
@dragover.prevent="onBigDragOver($event, index)"
|
|
@dragover.prevent="onBigDragOver($event, index)"
|
|
|
@drop="onBigDrop($event, index)"
|
|
@drop="onBigDrop($event, index)"
|
|
|
- @dragend="onDragEnd"
|
|
|
|
|
|
|
+ @dragend="onDragEndBig"
|
|
|
>
|
|
>
|
|
|
<div class="max-big-name-box">
|
|
<div class="max-big-name-box">
|
|
|
<p @click="showButton(index)" :class="item.showType?'el-icon-arrow-up':'el-icon-arrow-down'"></p>
|
|
<p @click="showButton(index)" :class="item.showType?'el-icon-arrow-up':'el-icon-arrow-down'"></p>
|
|
@@ -23,7 +22,7 @@
|
|
|
<p>共 {{item.data2}} 个课件,要求时长 {{item.data3}} 分钟,可得 {{item.data4}} 学时</p>
|
|
<p>共 {{item.data2}} 个课件,要求时长 {{item.data3}} 分钟,可得 {{item.data4}} 学时</p>
|
|
|
<p class="el-icon-delete-solid" v-show="!showType" @click="delBigItem(index)"></p>
|
|
<p class="el-icon-delete-solid" v-show="!showType" @click="delBigItem(index)"></p>
|
|
|
<!-- 大项拖拽手柄 -->
|
|
<!-- 大项拖拽手柄 -->
|
|
|
- <p class="el-icon-rank drag-handle" v-show="!showType" title="拖动排序"></p>
|
|
|
|
|
|
|
+ <p class="el-icon-rank drag-handle" draggable="true" v-show="!showType" title="拖动排序"></p>
|
|
|
<p class="el-icon-circle-plus" v-show="!showType" @click="addMinItem(item,index)"></p>
|
|
<p class="el-icon-circle-plus" v-show="!showType" @click="addMinItem(item,index)"></p>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -37,7 +36,6 @@
|
|
|
class="for-text-box"
|
|
class="for-text-box"
|
|
|
v-for="(minItem, minIndex) in item.minList"
|
|
v-for="(minItem, minIndex) in item.minList"
|
|
|
:key="minIndex"
|
|
:key="minIndex"
|
|
|
- draggable="true"
|
|
|
|
|
@dragstart="onSmallDragStart($event, index, minIndex)"
|
|
@dragstart="onSmallDragStart($event, index, minIndex)"
|
|
|
@dragover.prevent="onSmallDragOver($event, minIndex)"
|
|
@dragover.prevent="onSmallDragOver($event, minIndex)"
|
|
|
@drop="onSmallDrop($event, index, minIndex)"
|
|
@drop="onSmallDrop($event, index, minIndex)"
|
|
@@ -50,7 +48,7 @@
|
|
|
<p>{{minItem.minData5}}</p>
|
|
<p>{{minItem.minData5}}</p>
|
|
|
<p class="el-icon-delete-solid" v-show="!showType" @click="delItem(index, minIndex)"></p>
|
|
<p class="el-icon-delete-solid" v-show="!showType" @click="delItem(index, minIndex)"></p>
|
|
|
<!-- 小项拖拽手柄 -->
|
|
<!-- 小项拖拽手柄 -->
|
|
|
- <p class="el-icon-rank drag-handle" v-show="!showType" title="拖动排序"></p>
|
|
|
|
|
|
|
+ <p class="el-icon-rank drag-handle" draggable="true" v-show="!showType" title="拖动排序"></p>
|
|
|
<p class="el-icon-view" v-show="!showType" @click="lookItem(minItem)"></p>
|
|
<p class="el-icon-view" v-show="!showType" @click="lookItem(minItem)"></p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -395,8 +393,14 @@
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
this.dragInfo = { type: 'big', bigIndex: index, smallIndex: null };
|
|
this.dragInfo = { type: 'big', bigIndex: index, smallIndex: null };
|
|
|
|
|
+ //拖拽优化相关
|
|
|
|
|
+ const rowEl = e.target.closest('.for-max-box');
|
|
|
|
|
+ if (rowEl) {
|
|
|
|
|
+ rowEl.classList.add('dragging');
|
|
|
|
|
+ e.dataTransfer.setDragImage(rowEl, 1148, 18);
|
|
|
|
|
+ }
|
|
|
// 给拖拽中的元素加个样式
|
|
// 给拖拽中的元素加个样式
|
|
|
- e.target.classList.add('dragging');
|
|
|
|
|
|
|
+ // e.target.classList.add('dragging');
|
|
|
},
|
|
},
|
|
|
onBigDragOver(e, index) {
|
|
onBigDragOver(e, index) {
|
|
|
if(this.showType){
|
|
if(this.showType){
|
|
@@ -426,7 +430,13 @@
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
this.dragInfo = { type: 'small', bigIndex: bigIndex, smallIndex: smallIndex };
|
|
this.dragInfo = { type: 'small', bigIndex: bigIndex, smallIndex: smallIndex };
|
|
|
- e.target.classList.add('dragging');
|
|
|
|
|
|
|
+ //拖拽优化相关
|
|
|
|
|
+ const rowEl = e.target.closest('.for-text-box');
|
|
|
|
|
+ if (rowEl) {
|
|
|
|
|
+ rowEl.classList.add('dragging');
|
|
|
|
|
+ e.dataTransfer.setDragImage(rowEl, 1148, 18);
|
|
|
|
|
+ }
|
|
|
|
|
+ // e.target.classList.add('dragging');
|
|
|
// 阻止事件冒泡,防止触发大项的拖拽
|
|
// 阻止事件冒泡,防止触发大项的拖拽
|
|
|
e.stopPropagation();
|
|
e.stopPropagation();
|
|
|
},
|
|
},
|
|
@@ -456,8 +466,24 @@
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 拖拽结束,清理样式
|
|
// 拖拽结束,清理样式
|
|
|
|
|
+ onDragEndBig(e) {
|
|
|
|
|
+ //拖拽优化相关
|
|
|
|
|
+ const rowEl = e.target.closest('.for-max-box');
|
|
|
|
|
+ if (rowEl) {
|
|
|
|
|
+ rowEl.classList.remove('dragging');
|
|
|
|
|
+ }
|
|
|
|
|
+ // e.target.classList.remove('dragging');
|
|
|
|
|
+ document.querySelectorAll('.drag-over').forEach(el => el.classList.remove('drag-over'));
|
|
|
|
|
+ this.dragInfo = { type: null, bigIndex: null, smallIndex: null };
|
|
|
|
|
+ },
|
|
|
|
|
+ // 拖拽结束,清理样式
|
|
|
onDragEnd(e) {
|
|
onDragEnd(e) {
|
|
|
- e.target.classList.remove('dragging');
|
|
|
|
|
|
|
+ //拖拽优化相关
|
|
|
|
|
+ const rowEl = e.target.closest('.for-text-box');
|
|
|
|
|
+ if (rowEl) {
|
|
|
|
|
+ rowEl.classList.remove('dragging');
|
|
|
|
|
+ }
|
|
|
|
|
+ // e.target.classList.remove('dragging');
|
|
|
document.querySelectorAll('.drag-over').forEach(el => el.classList.remove('drag-over'));
|
|
document.querySelectorAll('.drag-over').forEach(el => el.classList.remove('drag-over'));
|
|
|
this.dragInfo = { type: null, bigIndex: null, smallIndex: null };
|
|
this.dragInfo = { type: null, bigIndex: null, smallIndex: null };
|
|
|
},
|
|
},
|
|
@@ -698,7 +724,7 @@
|
|
|
background-color: #f5f7fa;
|
|
background-color: #f5f7fa;
|
|
|
}
|
|
}
|
|
|
.drag-over {
|
|
.drag-over {
|
|
|
- border-top: 2px solid #409EFF !important; /* 放置位置的指示线 */
|
|
|
|
|
|
|
+ /*border-top: 2px solid #409EFF !important; !* 放置位置的指示线 *!*/
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|