From bf1339bb40f30bf30179243e8ad95f533d67a358 Mon Sep 17 00:00:00 2001 From: wangdage12 <124357765+wangdage12@users.noreply.github.com> Date: Mon, 16 Mar 2026 19:07:19 +0800 Subject: [PATCH] fix: show loading state when confirming deletion of multiple folders and reduce unnecessary basedir requests Co-authored-by: fanbook-wangdage <124357765+fanbook-wangdage@users.noreply.github.com> --- .../host/file-management/delete/index.vue | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/frontend/src/views/host/file-management/delete/index.vue b/frontend/src/views/host/file-management/delete/index.vue index 0c5910cf2..fe6a6d90b 100644 --- a/frontend/src/views/host/file-management/delete/index.vue +++ b/frontend/src/views/host/file-management/delete/index.vue @@ -46,7 +46,7 @@ {{ $t('commons.button.cancel') }} - + {{ $t('commons.button.confirm') }} @@ -101,37 +101,43 @@ const getStatus = async () => { }; const onConfirm = async () => { - const pros = []; - for (const s of files.value) { - if (s['isDir']) { - if (s['path'].indexOf('.1panel_clash') > -1) { - MsgWarning(i18n.global.t('file.clashDeleteAlert')); - return; - } - const pathRes = await loadBaseDir(); - if (s['path'] === pathRes.data) { - MsgWarning(i18n.global.t('file.panelInstallDir')); - return; - } - } - if (reqNode.value != '') { - pros.push( - deleteFileByNode({ path: s['path'], isDir: s['isDir'], forceDelete: forceDelete.value }, reqNode.value), - ); - } else { - pros.push(deleteFile({ path: s['path'], isDir: s['isDir'], forceDelete: forceDelete.value })); - } - } loading.value = true; - Promise.all(pros) - .then(() => { - MsgSuccess(i18n.global.t('commons.msg.deleteSuccess')); - open.value = false; - em('close'); - }) - .finally(() => { - loading.value = false; - }); + try { + const pros = []; + let baseDir = ''; + if (files.value.some((item) => item['isDir'])) { + const pathRes = await loadBaseDir(); + baseDir = pathRes.data; + } + for (const s of files.value) { + if (s['isDir']) { + if (s['path'].indexOf('.1panel_clash') > -1) { + MsgWarning(i18n.global.t('file.clashDeleteAlert')); + return; + } + if (s['path'] === baseDir) { + MsgWarning(i18n.global.t('file.panelInstallDir')); + return; + } + } + if (reqNode.value != '') { + pros.push( + deleteFileByNode( + { path: s['path'], isDir: s['isDir'], forceDelete: forceDelete.value }, + reqNode.value, + ), + ); + } else { + pros.push(deleteFile({ path: s['path'], isDir: s['isDir'], forceDelete: forceDelete.value })); + } + } + await Promise.all(pros); + MsgSuccess(i18n.global.t('commons.msg.deleteSuccess')); + open.value = false; + em('close'); + } finally { + loading.value = false; + } }; const getIconName = (extension: string) => {