diff --git a/vueJs/src/icons/components/index.ts b/vueJs/src/icons/components/index.ts index 6b9c09c91..e67017044 100644 --- a/vueJs/src/icons/components/index.ts +++ b/vueJs/src/icons/components/index.ts @@ -52,6 +52,7 @@ import './money' import './nested' import './organization-unit' import './password' +import './pause' import './pdf' import './people' import './peoples' diff --git a/vueJs/src/icons/components/pause.ts b/vueJs/src/icons/components/pause.ts new file mode 100644 index 000000000..79315794e --- /dev/null +++ b/vueJs/src/icons/components/pause.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-ignore +import icon from 'vue-svgicon' +icon.register({ + 'pause': { + width: 64, + height: 64, + viewBox: '0 0 1024 1024', + data: '' + } +}) diff --git a/vueJs/src/icons/svg/pause.svg b/vueJs/src/icons/svg/pause.svg new file mode 100644 index 000000000..8a65aad04 --- /dev/null +++ b/vueJs/src/icons/svg/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vueJs/src/views/file-management/components/FileDownloadForm.vue b/vueJs/src/views/file-management/components/FileDownloadForm.vue index 8666de9e5..e613afdb2 100644 --- a/vueJs/src/views/file-management/components/FileDownloadForm.vue +++ b/vueJs/src/views/file-management/components/FileDownloadForm.vue @@ -45,18 +45,22 @@ type="success" icon="el-icon-caret-right" :disabled="row.downloading" - @click="handleDownloadFile(row)" + @click="handleDownload(row)" + /> + - {{ $t('fileSystem.begin') }} + - {{ $t('fileSystem.remove') }} - + @click="handleRemove(row)" + /> @@ -72,7 +76,7 @@ export class FileInfo { path!: string size!: number progress!: number - pause!: boolean + pause = true blobs = new Array() type!: string downloading!: boolean @@ -106,49 +110,51 @@ export default class FileDownloadForm extends Vue { } } - private handleRemoveFile(fileInfo: FileInfo) { + private handlePause(fileInfo: FileInfo) { + fileInfo.pause = true + fileInfo.downloading = false + this.$emit('onFilePaused', fileInfo) + } + + private handleRemove(fileInfo: FileInfo) { fileInfo.pause = true fileInfo.downloading = false fileInfo.blobs.length = 0 this.$emit('onFileRemoved', fileInfo) } - private handleDownloadFile(fileInfo: FileInfo) { - fileInfo.pause = false - fileInfo.downloading = true - if (fileInfo.progress >= 100) { - this.downloadBlob(fileInfo) - } else { - this.downlodFile(fileInfo, (downloadSize: number) => { - if (downloadSize >= fileInfo.size) { - this.$emit('onFileDownloaded', fileInfo) - } - }) + private handleDownload(fileInfo: FileInfo) { + if (!fileInfo.downloading) { + fileInfo.pause = false + fileInfo.downloading = true + if (this.downloadProgress(fileInfo) >= 100) { + this.downloadBlob(fileInfo) + } else { + this.downlodFile(fileInfo) + } } } - private downlodFile(fileInfo: FileInfo, callback: Function) { + private downlodFile(fileInfo: FileInfo) { if (fileInfo.pause) { return } - FileSystemService.downlodFle(fileInfo.name, fileInfo.path, fileInfo.progress).then((res: any) => { - fileInfo.type = res.headers['content-type'] - // 获取当前下载字节大小 - const downloadByte = res.data.size - // 当前下载分块入栈 - fileInfo.blobs.push(res.data) - fileInfo.progress += downloadByte - if (fileInfo.size > fileInfo.progress) { - this.downlodFile(fileInfo, callback) - } else { - // 合并下载文件 - this.downloadBlob(fileInfo) - // 下载完成后的回调 - callback(fileInfo.size) - } - }).catch(() => { - callback(fileInfo.size) - }) + FileSystemService + .downlodFle(fileInfo.name, fileInfo.path, fileInfo.progress) + .then((res: any) => { + fileInfo.type = res.headers['content-type'] + // 获取当前下载字节大小 + const downloadByte = res.data.size + // 当前下载分块入栈 + fileInfo.blobs.push(res.data) + fileInfo.progress += downloadByte + if (fileInfo.size > fileInfo.progress) { + this.downlodFile(fileInfo) + } else { + // 合并下载文件 + this.downloadBlob(fileInfo) + } + }) } private downloadBlob(fileInfo: FileInfo) { @@ -160,6 +166,10 @@ export default class FileDownloadForm extends Vue { document.body.appendChild(link) link.click() URL.revokeObjectURL(url) + + fileInfo.pause = true + fileInfo.downloading = false + this.$emit('onFileDownloaded', fileInfo) } private onFormClosed() {