item.checked);
}
- getFileList(rows).then(async (res) => {
+ if (rows.length == 0) {
+ return createMessage.warn('请选择一个或者多个文件/文件夹进行删除');
+ }
+ zipFileName.value = '压缩文件' + dayjs().format('YYYY-MM-DD HH:mm:ss');
+ if (floders.value.length > 1) {
+ zipFileName.value = floders.value[floders.value.length - 1].name;
+ }
+ if (rows.length == 1 && !rows[0].objectKey) {
+ zipFileName.value = rows[0].name;
+ }
+ downloadRows = rows;
+ downloadOpen.value = true;
+ }
+ // 批量下载-下载
+ async function downloadFile() {
+ downloadOpen.value = false;
+ downloadLoading.value = true;
+ getFileList(downloadRows).then(async (res) => {
let filelist: any = res;
- console.log(res);
-
const token = localStorage.getItem('X-Token');
const zip = new JSZip();
// 添加文件到ZIP
+ let index = 0;
for (const file of filelist) {
try {
const response = await fetch(file.url + '?t=' + Date.now(), {
@@ -783,55 +861,51 @@
zip.file(`${file.path}/${file.name}`, blob, { binary: true });
} catch (error) {
console.error('请求失败:', error);
+ } finally {
+ index++;
+ downPercent.value = parseFloat(((index / filelist.length) * 100).toFixed(2));
}
}
// 生成ZIP文件并触发下载
- let zipFileName = '压缩文件';
try {
const blob = await zip.generateAsync({ type: 'blob' });
- saveAs(blob, zipFileName + '.zip'); // 下载的ZIP文件名
+ saveAs(blob, zipFileName.value + '.zip'); // 下载的ZIP文件名
} catch (error) {
console.error('生成ZIP文件时出错:', error);
+ } finally {
+ downloadLoading.value = false;
}
});
}
-
+ // 批量下载-数据
async function getFileList(rows) {
- let fileList: any = [];
- let num = 0;
- rows.forEach(async (item) => {
+ const filelist: any = [];
+ // 使用 for...of 配合 await
+ for (const item of rows) {
if (item.objectKey) {
- fileList.push({
+ // 直接文件
+ filelist.push({
name: item.name,
url: VITE_GLOB_MEDIALIBRARY_IMAGE_URL + item.objectKey,
path: '',
});
- num++;
- if (rows.length == num) {
- console.log(fileList);
- return fileList;
- }
} else {
- await GetMediaFile({
+ // 文件夹:获取子文件
+ const res = await GetMediaFile({
parentKey: item.id,
page: 1,
limit: 1000,
- }).then((res) => {
- res.items.forEach(async (r) => {
- fileList.push({
- name: r.name,
- url: VITE_GLOB_MEDIALIBRARY_IMAGE_URL + r.objectKey,
- path: item.name,
- });
+ });
+ res.items.forEach((r) => {
+ filelist.push({
+ name: r.name,
+ url: VITE_GLOB_MEDIALIBRARY_IMAGE_URL + r.objectKey,
+ path: item.name, // 以文件夹名为路径
});
- num++;
- if (rows.length == num) {
- console.log(fileList);
- return fileList;
- }
});
}
- });
+ }
+ return filelist;
}
// 查看弹窗----------------------------------------------------------------------------
diff --git a/src/views/demo/system/mediaLibrary/path/pathImageInfo.vue b/src/views/demo/system/mediaLibrary/path/pathImageInfo.vue
index 1de6edb..52227f8 100644
--- a/src/views/demo/system/mediaLibrary/path/pathImageInfo.vue
+++ b/src/views/demo/system/mediaLibrary/path/pathImageInfo.vue
@@ -24,34 +24,40 @@
+
- {{
- ' ' +
- dayjs(props.nowShowImageData.createTime).format('YYYY-MM-DD HH:mm:ss (UTCZ)') +
- ' '
- }}
+ {{ dayjs(props.nowShowImageData.createTime).format('YYYY-MM-DD HH:mm:ss (UTCZ)') }}
+
{{
- props.nowShowImageData.siz
- ? (props.nowShowImageData.size / 1024 / 1024).toFixed(2) + 'M' + ' '
- : imageSize + ' '
+ props.nowShowImageData.size
+ ? props.nowShowImageData.size > 1024 * 1024
+ ? parseFloat((props.nowShowImageData.size / (1024 * 1024)).toFixed(2)) + 'MB'
+ : props.nowShowImageData.size > 1024
+ ? parseFloat((props.nowShowImageData.size / 1024).toFixed(2)) + 'KB'
+ : parseFloat(props.nowShowImageData.size) + 'B'
+ : imageSize
}}
+
{{ props.nowShowImageData.width + ' x ' + props.nowShowImageData.height }}
- {{ props.nowShowImageData.lat + '° E' + ' ' }}
+ {{ props.nowShowImageData.lat + '° E' }}
+
- {{ props.nowShowImageData.lng + '° N' + ' ' }}
+ {{ props.nowShowImageData.lng + '° N' }}
+
- {{ '拍摄高度' + props.nowShowImageData.relativeAltitude + 'm ' }}
+ {{ '拍摄高度' + props.nowShowImageData.relativeAltitude + 'm' }}
+
@@ -865,8 +871,15 @@
const contentLength = response.headers.get('Content-Length');
if (contentLength) {
const sizeInBytes = parseInt(contentLength, 10);
- const sizeInMB = (sizeInBytes / (1024 * 1024)).toFixed(2);
- imageSize.value = parseFloat(sizeInMB) + 'M';
+ if (sizeInBytes > 1024 * 1024) {
+ imageSize.value = (sizeInBytes / (1024 * 1024)).toFixed(2) + 'MB';
+ } else if (sizeInBytes > 1024) {
+ imageSize.value = (sizeInBytes / 1024).toFixed(2) + 'KB';
+ } else if (sizeInBytes > 0) {
+ imageSize.value = sizeInBytes + 'B';
+ } else {
+ imageSize.value = '--';
+ }
} else {
imageSize.value = '--';
}
diff --git a/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue b/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue
index 4942bdd..3f7b728 100644
--- a/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue
+++ b/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue
@@ -50,7 +50,11 @@
{{
props.nowPreviewRecord.size
- ? (props.nowPreviewRecord.size / 1024 / 1024).toFixed(2) + 'M'
+ ? props.nowPreviewRecord.size > 1024 * 1024
+ ? parseFloat((props.nowPreviewRecord.size / (1024 * 1024)).toFixed(2)) + 'MB'
+ : props.nowPreviewRecord.size > 1024
+ ? parseFloat((props.nowPreviewRecord.size / 1024).toFixed(2)) + 'KB'
+ : parseFloat(props.nowPreviewRecord.size) + 'B'
: imageSize
}}
@@ -402,8 +406,15 @@
const contentLength = response.headers.get('Content-Length');
if (contentLength) {
const sizeInBytes = parseInt(contentLength, 10);
- const sizeInMB = (sizeInBytes / (1024 * 1024)).toFixed(2);
- imageSize.value = parseFloat(sizeInMB) + 'M';
+ if (sizeInBytes > 1024 * 1024) {
+ imageSize.value = (sizeInBytes / (1024 * 1024)).toFixed(2) + 'MB';
+ } else if (sizeInBytes > 1024) {
+ imageSize.value = (sizeInBytes / 1024).toFixed(2) + 'KB';
+ } else if (sizeInBytes > 0) {
+ imageSize.value = sizeInBytes + 'B';
+ } else {
+ imageSize.value = '--';
+ }
} else {
imageSize.value = '--';
}
From 218c6ae04d299a27d31c6dce8c4e304c0c88965e Mon Sep 17 00:00:00 2001
From: zhufu <17863654727@163.com>
Date: Mon, 18 Aug 2025 16:09:50 +0800
Subject: [PATCH 3/4] =?UTF-8?q?AI=E7=AE=97=E6=B3=95=E5=AE=9E=E4=BE=8B?=
=?UTF-8?q?=E7=94=BB=E9=9D=A2=20=E9=BB=98=E8=AE=A4=E6=98=BE=E7=A4=BA?=
=?UTF-8?q?=E5=9B=BE=E7=89=87=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../demo/resourcemanagement/aiinstance/ShowInfoDrawer.vue | 4 +++-
src/views/demo/resourcemanagement/aiinstance/index.vue | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/views/demo/resourcemanagement/aiinstance/ShowInfoDrawer.vue b/src/views/demo/resourcemanagement/aiinstance/ShowInfoDrawer.vue
index 36715c9..927ecb9 100644
--- a/src/views/demo/resourcemanagement/aiinstance/ShowInfoDrawer.vue
+++ b/src/views/demo/resourcemanagement/aiinstance/ShowInfoDrawer.vue
@@ -11,7 +11,7 @@
-

+
实例名称
公路-隔离栏破损识别
@@ -60,6 +60,8 @@