From 14b7296200c5e9cc84d1dd3bdf826599d1ecfc4d Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Fri, 17 Jan 2025 11:13:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20oss=E4=B8=8B=E8=BD=BD=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?(=E5=B7=B2=E4=B8=8B=E8=BD=BD=E7=9A=84KB=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BD=9C=E4=B8=BA=E8=BF=9B=E5=BA=A6=E6=98=BE=E7=A4=BA=20total?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=B8=BAnull)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + apps/web-antd/src/api/system/oss/index.ts | 9 ++++++++- .../src/views/system/oss/file-upload-modal.vue | 1 + apps/web-antd/src/views/system/oss/index.vue | 12 ++++++++++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66c3cd18..fc743fd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - 字典新增对Number类型的支持 -> `getDictOptions('', true);`即可获取number类型的value - 文件上传 增加上传进度条 下方上传提示 - 图片上传 增加上传进度条 下方上传提示 +- oss下载进度(已下载的KB 无法作为进度显示 total返回为null) **BUG FIXES** diff --git a/apps/web-antd/src/api/system/oss/index.ts b/apps/web-antd/src/api/system/oss/index.ts index 04fc58a5..f1772aeb 100644 --- a/apps/web-antd/src/api/system/oss/index.ts +++ b/apps/web-antd/src/api/system/oss/index.ts @@ -1,3 +1,5 @@ +import type { AxiosRequestConfig } from '@vben/request'; + import type { OssFile } from './model'; import type { ID, IDS, PageQuery, PageResult } from '#/api/common'; @@ -48,13 +50,18 @@ export function ossUpload(file: Blob | File) { /** * 下载文件 返回为二进制 * @param ossId ossId + * @param onDownloadProgress 下载进度(可选) * @returns blob */ -export function ossDownload(ossId: ID) { +export function ossDownload( + ossId: ID, + onDownloadProgress?: AxiosRequestConfig['onDownloadProgress'], +) { return requestClient.get(`${Api.ossDownload}/${ossId}`, { responseType: 'blob', timeout: 30 * 1000, isTransformResponse: false, + onDownloadProgress, }); } diff --git a/apps/web-antd/src/views/system/oss/file-upload-modal.vue b/apps/web-antd/src/views/system/oss/file-upload-modal.vue index 242ce173..91a95498 100644 --- a/apps/web-antd/src/views/system/oss/file-upload-modal.vue +++ b/apps/web-antd/src/views/system/oss/file-upload-modal.vue @@ -45,6 +45,7 @@ const message = computed(() => { v-model:value="fileList" :accept="accept" :max-number="maxNumber" + :max-size="5" /> diff --git a/apps/web-antd/src/views/system/oss/index.vue b/apps/web-antd/src/views/system/oss/index.vue index 91d98060..f58e283c 100644 --- a/apps/web-antd/src/views/system/oss/index.vue +++ b/apps/web-antd/src/views/system/oss/index.vue @@ -105,10 +105,18 @@ const [BasicTable, tableApi] = useVbenVxeGrid({ }); async function handleDownload(row: OssFile) { - const hideLoading = message.loading($t('pages.common.downloadLoading'), 0); + const downloadSize = ref($t('pages.common.downloadLoading')); + const hideLoading = message.loading({ + content: () => downloadSize.value, + duration: 0, + }); try { - const data = await ossDownload(row.ossId); + const data = await ossDownload(row.ossId, (e) => { + // e.total这里为空 只能显示已经下载的 + downloadSize.value = `已下载: ${Math.floor(e.loaded / 1024)}KB`; + }); downloadByData(data, row.originalName); + message.success('下载完成'); } finally { hideLoading(); }