From 164f32c3e4675f4380a4e9ca059a17d4d5bba18c Mon Sep 17 00:00:00 2001 From: jmal Date: Fri, 8 May 2020 15:26:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8B=96=E6=8B=BDbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ShowFile/ShowFile.vue | 49 ++++++++++--------- .../SimpleUploader/globalUploader.vue | 23 ++++++++- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/components/ShowFile/ShowFile.vue b/src/components/ShowFile/ShowFile.vue index 3180efd..ef59dc1 100644 --- a/src/components/ShowFile/ShowFile.vue +++ b/src/components/ShowFile/ShowFile.vue @@ -1005,30 +1005,32 @@ } child.ondragstart = function(e){ - let count = _this.selectRowData.length - if(_this.selectRowData.length >= 99){ - count = 99 + if(_this.fileListScrollTop === 0){ + let count = _this.selectRowData.length + if(_this.selectRowData.length >= 99){ + count = 99 + } + let dragImage = document.getElementById('dragImage'); + dragImage.src = require(`@/assets/img/move-file/move-file${count}.png`) + + e.dataTransfer.setDragImage(dragImage, 10, 10); + + Bus.$emit('onDragStart', true) + // 避免和画矩形选区冲突 + _this.drawFlag = false + let rectangle = document.getElementById('rectangle1') + if(rectangle){ + document.getElementById('v-draw-rectangle').removeChild(rectangle) + } + + dragged = e.path[0] + draggedIndex = e.path[0].rowIndex + // 只有选中的才能拖拽 + _this.cellMouseIndex = -1 + // dragged.style.cursor = 'grabbing' + dragged.style.borderRadius = '10px' + dragBackCorlor = dragged.style.backgroundColor } - let dragImage = document.getElementById('dragImage'); - dragImage.src = require(`@/assets/img/move-file/move-file${count}.png`) - - e.dataTransfer.setDragImage(dragImage, 10, 10); - - Bus.$emit('onDragStart', true) - // 避免和画矩形选区冲突 - _this.drawFlag = false - let rectangle = document.getElementById('rectangle1') - if(rectangle){ - document.getElementById('v-draw-rectangle').removeChild(rectangle) - } - - dragged = e.path[0] - draggedIndex = e.path[0].rowIndex - // 只有选中的才能拖拽 - _this.cellMouseIndex = -1 - dragged.style.cursor = 'grabbing' - dragged.style.borderRadius = '10px' - dragBackCorlor = dragged.style.backgroundColor } child.ondragend = function(){ Bus.$emit('onDragStart', false) @@ -1502,6 +1504,7 @@ }, tableBodyScroll(table, e) { this.fileListScrollTop = e.target.scrollTop + Bus.$emit("fileListScrollTop",this.fileListScrollTop) let scrollBottom = e.target.scrollHeight-e.target.clientHeight-e.target.scrollTop; if(scrollBottom < 200){ if(!this.finished){ diff --git a/src/components/SimpleUploader/globalUploader.vue b/src/components/SimpleUploader/globalUploader.vue index 3030245..44788b0 100755 --- a/src/components/SimpleUploader/globalUploader.vue +++ b/src/components/SimpleUploader/globalUploader.vue @@ -154,6 +154,8 @@ pc: true, dragover: false, isDragStart: false, + fileListScrollTop: 0, + dragoverLoop: null, } }, computed: { @@ -169,26 +171,42 @@ let dropbox = document.body document.body.ondragstart = function(e){ - return e.target.slot === 'jmal'; + return e.target.slot === 'jmal' && that.fileListScrollTop === 0; } dropbox.addEventListener("dragenter", function(e){ e.stopPropagation(); e.preventDefault(); }, false); + dropbox.addEventListener("dragover", function(e){ e.stopPropagation(); e.preventDefault(); + clearInterval(that.dragoverLoop) if(!that.isDragStart){ that.dragover = true } + that.dragoverLoop = setTimeout(function () { + that.dragover = false + },100) }, false); + + dropbox.addEventListener("ondragleave", function(e){ + e.stopPropagation(); + e.preventDefault(); + that.dragover = false + }, false); + dropbox.addEventListener("drop", function(e){ e.stopPropagation(); e.preventDefault(); that.dragover = false }, false); + Bus.$on('fileListScrollTop', fileListScrollTop => { + this.fileListScrollTop = fileListScrollTop + }) + Bus.$on('onDragStart', isDragStart => { this.isDragStart = isDragStart }) @@ -233,6 +251,9 @@ } }, onFilesAdded(files) { + if(files.length === 0){ + return + } this.fileListLength = this.uploader.fileList.length const filePaths = this.uploader.filePaths const paths = Object.keys(filePaths)