*添加拖拽上传
This commit is contained in:
parent
30c7034d63
commit
d368f437a0
@ -1,6 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="global-uploader" v-wechat-title="process === -10 || process===100 || this.fileListLength === 0 ? $route.meta.title : process+'%'+' | '+$route.meta.title" >
|
<div id="global-uploader" v-wechat-title="process === -10 || process===100 || this.fileListLength === 0 ? $route.meta.title : process+'%'+' | '+$route.meta.title" >
|
||||||
|
|
||||||
<!-- 上传 -->
|
<!-- 上传 -->
|
||||||
<uploader
|
<uploader
|
||||||
ref="uploader"
|
ref="uploader"
|
||||||
@ -12,10 +11,15 @@
|
|||||||
@file-success="onFileSuccess"
|
@file-success="onFileSuccess"
|
||||||
@file-progress="onFileProgress"
|
@file-progress="onFileProgress"
|
||||||
@file-error="onFileError"
|
@file-error="onFileError"
|
||||||
|
@dragenter="onDragenter"
|
||||||
@file-removed="onFileRemoved"
|
@file-removed="onFileRemoved"
|
||||||
>
|
>
|
||||||
<uploader-unsupport></uploader-unsupport>
|
<uploader-unsupport></uploader-unsupport>
|
||||||
|
|
||||||
|
<uploader-drop v-if="dragover" class="uploader-drop">
|
||||||
|
<span>上传文件到当前目录下</span>
|
||||||
|
</uploader-drop>
|
||||||
|
|
||||||
<uploader-btn id="global-uploader-btn" ref="uploadBtn" :attrs="attrs">选择文件</uploader-btn>
|
<uploader-btn id="global-uploader-btn" ref="uploadBtn" :attrs="attrs">选择文件</uploader-btn>
|
||||||
|
|
||||||
<uploader-btn id="folder-uploader-btn" ref="folderBtn" :directory="true">选择文件夹</uploader-btn>
|
<uploader-btn id="folder-uploader-btn" ref="folderBtn" :directory="true">选择文件夹</uploader-btn>
|
||||||
@ -147,7 +151,8 @@ export default {
|
|||||||
isUploading: false,
|
isUploading: false,
|
||||||
filePanel: {},
|
filePanel: {},
|
||||||
processAreaClass: {},
|
processAreaClass: {},
|
||||||
pc: true
|
pc: true,
|
||||||
|
dragover: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -158,6 +163,24 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {},
|
watch: {},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
||||||
|
let that = this
|
||||||
|
let dropbox = document.body
|
||||||
|
dropbox.addEventListener("dragenter", function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
}, false);
|
||||||
|
dropbox.addEventListener("dragover", function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
that.dragover = true
|
||||||
|
}, false);
|
||||||
|
dropbox.addEventListener("drop", function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
that.dragover = false
|
||||||
|
}, false);
|
||||||
|
|
||||||
Bus.$on('openUploader', query => {
|
Bus.$on('openUploader', query => {
|
||||||
this.params = query || {}
|
this.params = query || {}
|
||||||
if (this.$refs.uploadBtn) {
|
if (this.$refs.uploadBtn) {
|
||||||
@ -189,6 +212,14 @@ export default {
|
|||||||
Bus.$off('uploadFileListBack')
|
Bus.$off('uploadFileListBack')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
onDragenter(e) {
|
||||||
|
console.log('onDragenter')
|
||||||
|
this.params = {
|
||||||
|
currentDirectory: this.$route.query.path || '/',
|
||||||
|
username: this.$store.state.user.name,
|
||||||
|
userId: this.$store.state.user.userId
|
||||||
|
}
|
||||||
|
},
|
||||||
// onFileAdded(file) {
|
// onFileAdded(file) {
|
||||||
// console.log('file', file)
|
// console.log('file', file)
|
||||||
// console.log(this.uploader.filePaths)
|
// console.log(this.uploader.filePaths)
|
||||||
@ -197,6 +228,7 @@ export default {
|
|||||||
// Bus.$emit('fileAdded')
|
// Bus.$emit('fileAdded')
|
||||||
// },
|
// },
|
||||||
onFilesAdded(files) {
|
onFilesAdded(files) {
|
||||||
|
console.log(files)
|
||||||
this.fileListLength = this.uploader.fileList.length
|
this.fileListLength = this.uploader.fileList.length
|
||||||
const filePaths = this.uploader.filePaths
|
const filePaths = this.uploader.filePaths
|
||||||
const paths = Object.keys(filePaths)
|
const paths = Object.keys(filePaths)
|
||||||
@ -226,21 +258,6 @@ export default {
|
|||||||
}
|
}
|
||||||
files.forEach(file => {
|
files.forEach(file => {
|
||||||
// 上传文件
|
// 上传文件
|
||||||
console.log('上传->', file)
|
|
||||||
console.log(pathsLength)
|
|
||||||
// this.computeMD5(file)
|
|
||||||
// if (pathsLength < 1) {
|
|
||||||
// // this.computeMD5(file)
|
|
||||||
// } else {
|
|
||||||
// console.log(pathsLength)
|
|
||||||
// Object.assign(this.uploader.opts, {
|
|
||||||
// query: {
|
|
||||||
// isFolder: false,
|
|
||||||
// ...this.params
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// this.uploader.resume()
|
|
||||||
// }
|
|
||||||
Object.assign(this.uploader.opts, {
|
Object.assign(this.uploader.opts, {
|
||||||
query: {
|
query: {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
@ -255,7 +272,6 @@ export default {
|
|||||||
// fileList.forEach(file => {
|
// fileList.forEach(file => {
|
||||||
// file.currentSpeed
|
// file.currentSpeed
|
||||||
// })
|
// })
|
||||||
console.log('window.uploader',window.uploader)
|
|
||||||
this.netSpeed = formatNetSpeed(file.currentSpeed)
|
this.netSpeed = formatNetSpeed(file.currentSpeed)
|
||||||
this.process = Math.trunc(window.uploader.progress() * 100)
|
this.process = Math.trunc(window.uploader.progress() * 100)
|
||||||
if(this.process > 0 && this.process < 100 && window.uploader.fileList.length > 0){
|
if(this.process > 0 && this.process < 100 && window.uploader.fileList.length > 0){
|
||||||
@ -266,7 +282,7 @@ export default {
|
|||||||
window.onbeforeunload = null
|
window.onbeforeunload = null
|
||||||
}
|
}
|
||||||
this.isUploading = window.uploader.isUploading()
|
this.isUploading = window.uploader.isUploading()
|
||||||
console.log(`上传中 ${file.name},chunk:${chunk.startByte / 1024 / 1024} ~ ${chunk.endByte / 1024 / 1024}`)
|
// console.log(`上传中 ${file.name},chunk:${chunk.startByte / 1024 / 1024} ~ ${chunk.endByte / 1024 / 1024}`)
|
||||||
},
|
},
|
||||||
onFileSuccess(rootFile, file, response) {
|
onFileSuccess(rootFile, file, response) {
|
||||||
const res = JSON.parse(response)
|
const res = JSON.parse(response)
|
||||||
@ -278,7 +294,7 @@ export default {
|
|||||||
this.statusSet(file.id, 'failed')
|
this.statusSet(file.id, 'failed')
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
console.log(`上传成功 ${file.name}`)
|
// console.log(`上传成功 ${file.name}`)
|
||||||
this.statusSet(file.id, 'success')
|
this.statusSet(file.id, 'success')
|
||||||
}
|
}
|
||||||
// 如果服务端返回需要合并
|
// 如果服务端返回需要合并
|
||||||
@ -538,10 +554,27 @@ export default {
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
#global-uploader {
|
#global-uploader {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 20;
|
z-index: 1002;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
bottom: 15px;
|
bottom: 15px;
|
||||||
|
|
||||||
|
.uploader-drop {
|
||||||
|
text-align: center;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #ffffff99;
|
||||||
|
span {
|
||||||
|
font-size: 34px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #616161;
|
||||||
|
position: relative;
|
||||||
|
top: 48%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.uploader-app {
|
.uploader-app {
|
||||||
width: 720px;
|
width: 720px;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user