From 9c0f4a80e355c5683d2a2cd04c89cbdcf010c11a Mon Sep 17 00:00:00 2001 From: jmal Date: Fri, 18 Jul 2025 14:36:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=B9=E5=A4=A7=E5=B0=8F=E9=87=8D=E6=96=B0=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6=E5=B8=A6=E6=9C=89?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=8C=87=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/setting-api.js | 7 +++++++ src/locales/en_US.js | 3 +++ src/locales/zh_CN.js | 3 +++ src/sse/SSEClient.js | 1 + src/views/setting/cloudManager.vue | 27 +++++++++++++++++++++++++++ 5 files changed, 41 insertions(+) diff --git a/src/api/setting-api.js b/src/api/setting-api.js index c665724..3174f90 100644 --- a/src/api/setting-api.js +++ b/src/api/setting-api.js @@ -84,6 +84,13 @@ export default { params }) }, + recalculateFolderSize(params) { + return request({ + url: '/cloud/setting/recalculateFolderSize', + method: 'get', + params + }) + }, isSync(params) { return request({ url: '/user/setting/isSync', diff --git a/src/locales/en_US.js b/src/locales/en_US.js index cc6e431..e4252b3 100644 --- a/src/locales/en_US.js +++ b/src/locales/en_US.js @@ -62,6 +62,9 @@ export default { rebuildIndexDesc: 'Rebuilding the index is divided into two steps: 1. Synchronize basic file information, 2. Create an index for the file content', rebuildIndexStep1: 'Synchronizing basic file information', rebuildIndexStep2: 'Creating an index for the file content', + confirmRecalculateFolderSize: 'Confirm to recalculate folder size?', + recalculateFolderSize: 'Recalculate folder size', + recalculateFolderSizeDesc: 'This operation only needs to be performed once, and then it will be automatically updated in real time.', resetMenuAndRole: 'Reset Menu and Role', resetMenuAndRoleDesc: 'Generally used to initialize role and menu data', currentVersion: 'Current Version', diff --git a/src/locales/zh_CN.js b/src/locales/zh_CN.js index 2b71ebe..db00ab2 100644 --- a/src/locales/zh_CN.js +++ b/src/locales/zh_CN.js @@ -62,6 +62,9 @@ export default { rebuildIndexDesc: '重建索引分为两步: 1.同步文件基本信息, 2.为文件内容创建索引', rebuildIndexStep1: '正在同步文件基本信息', rebuildIndexStep2: '正在为文件内容创建索引', + confirmRecalculateFolderSize: '确认重新计算文件夹大小?', + recalculateFolderSize: '重新计算文件夹大小', + recalculateFolderSizeDesc: '该操作只需要执行一次, 之后会自动实时更新', resetMenuAndRole: '重置角色、菜单', resetMenuAndRoleDesc: '一般用于初始化角色、菜单数据', currentVersion: '当前版本', diff --git a/src/sse/SSEClient.js b/src/sse/SSEClient.js index eb2cf08..ac6c5b5 100644 --- a/src/sse/SSEClient.js +++ b/src/sse/SSEClient.js @@ -139,6 +139,7 @@ function onMessage(msg) { const { url, body } = msg; const eventMapping = { synced: 'msg/synced', + calculateFolderSizeProcessed: 'msg/calculateFolderSizeProcessed', taskProgress: 'msg/taskProgress', transcodeStatus: 'msg/transcodeStatus', uploaderChunkSize: 'uploaderChunkSize', diff --git a/src/views/setting/cloudManager.vue b/src/views/setting/cloudManager.vue index 6d1ce18..6d48656 100644 --- a/src/views/setting/cloudManager.vue +++ b/src/views/setting/cloudManager.vue @@ -48,6 +48,13 @@ {{ $t('app.rebuildIndexStep2') }}: {{ indexingPercent }}% {{ $t('app.rebuildIndexDesc') }} + +
{{ $t('app.recalculateFolderSize') }}: + + {{ calculateFolderSizeProcessedPercent }}% +
+ {{ $t('app.recalculateFolderSizeDesc') }} +
{{ $t('app.resetMenuAndRole') }}: @@ -134,6 +141,8 @@ export default { clickSync: false, indexingPercent: 100, syncPercent: 100, + calculateFolderSizeProcessedPercent: 100, + calculateFolderSizeLoading: false, resetLoading: false, webpEnabled: false, logoFileName: this.$store.state.user.netdiskLogo || '', @@ -163,6 +172,9 @@ export default { if (msg.event === 'msg/synced') { this.updateSyncStatus(msg.data.body) } + if (msg.event === 'msg/calculateFolderSizeProcessed') { + this.calculateFolderSizeProcessedStatus(msg.data.body) + } } }, methods: { @@ -267,6 +279,11 @@ export default { } this.syncLoading = !((this.syncPercent === 100 && this.indexingPercent === 100) || (this.syncPercent === 0 && this.indexingPercent === 0)); }, + calculateFolderSizeProcessedStatus(calculateFolderSizeProcessedPercent) { + console.log('calculateFolderSizeProcessedPercent', calculateFolderSizeProcessedPercent) + this.calculateFolderSizeProcessedPercent = calculateFolderSizeProcessedPercent + this.calculateFolderSizeLoading = !(this.calculateFolderSizeProcessedPercent === 100 || this.calculateFolderSizeProcessedPercent === 0); + }, sync() { this.$confirm(`${this.$t('app.startSync')}`, `${this.$t('common.tips')}`, { confirmButtonText: `${this.$t('common.confirm')}`, @@ -283,6 +300,16 @@ export default { }) }) }, + recalculateFolderSize() { + this.$confirm(`${this.$t('app.confirmRecalculateFolderSize')}`, `${this.$t('common.tips')}`, { + confirmButtonText: `${this.$t('common.confirm')}`, + cancelButtonText: `${this.$t('common.cancel')}`, + type: 'warning' + }).then(() => { + settingApi.recalculateFolderSize(); + }).catch(() => { + }) + }, // 重置角色菜单 resetMenuAndRole() { this.$confirm(`${this.$t('app.confirmDeleteMenuAndRole')}`, `${this.$t('common.tips')}`, { From d00ddf1c1915485f3b8b975335078aecb05a08c0 Mon Sep 17 00:00:00 2001 From: jmal Date: Fri, 18 Jul 2025 14:42:30 +0800 Subject: [PATCH 2/2] fix(cloudManager): improve folder size recalculation error handling and update event logic --- src/views/setting/cloudManager.vue | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/views/setting/cloudManager.vue b/src/views/setting/cloudManager.vue index 6d48656..8957ffb 100644 --- a/src/views/setting/cloudManager.vue +++ b/src/views/setting/cloudManager.vue @@ -171,8 +171,7 @@ export default { message(msg) { if (msg.event === 'msg/synced') { this.updateSyncStatus(msg.data.body) - } - if (msg.event === 'msg/calculateFolderSizeProcessed') { + } else if (msg.event === 'msg/calculateFolderSizeProcessed') { this.calculateFolderSizeProcessedStatus(msg.data.body) } } @@ -280,7 +279,6 @@ export default { this.syncLoading = !((this.syncPercent === 100 && this.indexingPercent === 100) || (this.syncPercent === 0 && this.indexingPercent === 0)); }, calculateFolderSizeProcessedStatus(calculateFolderSizeProcessedPercent) { - console.log('calculateFolderSizeProcessedPercent', calculateFolderSizeProcessedPercent) this.calculateFolderSizeProcessedPercent = calculateFolderSizeProcessedPercent this.calculateFolderSizeLoading = !(this.calculateFolderSizeProcessedPercent === 100 || this.calculateFolderSizeProcessedPercent === 0); }, @@ -306,9 +304,13 @@ export default { cancelButtonText: `${this.$t('common.cancel')}`, type: 'warning' }).then(() => { - settingApi.recalculateFolderSize(); - }).catch(() => { - }) + this.calculateFolderSizeLoading = true; + settingApi.recalculateFolderSize() + .catch(() => { + this.$message.error('Failed to initiate folder size recalculation.'); + this.calculateFolderSizeLoading = false; + }); + }).catch(() => {}); }, // 重置角色菜单 resetMenuAndRole() {