优化: 切换视图时自动刷新数据,解决切换存储方式后需要手动刷新的问题

问题描述:
- 用户在设置页面切换存储方式(本地 ↔ SFTP)
- 点击导航栏回到"我的文件"页面
- 文件列表不会自动刷新,显示的还是旧存储方式的文件
- 需要手动刷新浏览器才能看到新存储方式的文件

解决方案:
1. 新增 switchView(view) 方法统一管理视图切换
   - 切换到 files 视图:自动加载文件列表
   - 切换到 shares 视图:自动加载分享列表
   - 切换到 admin 视图:自动加载用户列表和存储统计
   - 切换到 settings 视图:无需加载数据
   - 防止重复切换:如果已在当前视图则跳过

2. 修改导航栏点击事件
   - 从 @click="currentView = 'xxx'"
   - 改为 @click="switchView('xxx')"
   - 应用到所有4个导航按钮

改进效果:
 用户切换存储方式后,点击"我的文件"立即看到新数据
 所有视图切换都会自动刷新对应数据
 提升用户体验,无需手动刷新页面

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
WanWanYun
2025-11-12 15:43:03 +08:00
parent 0dc2ac9188
commit 1e19b41f48
2 changed files with 36 additions and 4 deletions

View File

@@ -612,16 +612,16 @@
<i class="fas fa-cloud"></i> 玩玩云 <i class="fas fa-cloud"></i> 玩玩云
</div> </div>
<div class="navbar-menu"> <div class="navbar-menu">
<div v-if="user && !user.is_admin" class="nav-item" :class="{active: currentView === 'files'}" @click="currentView = 'files'"> <div v-if="user && !user.is_admin" class="nav-item" :class="{active: currentView === 'files'}" @click="switchView('files')">
<i class="fas fa-folder"></i> 我的文件 <i class="fas fa-folder"></i> 我的文件
</div> </div>
<div v-if="user && !user.is_admin" class="nav-item" :class="{active: currentView === 'shares'}" @click="currentView = 'shares'"> <div v-if="user && !user.is_admin" class="nav-item" :class="{active: currentView === 'shares'}" @click="switchView('shares')">
<i class="fas fa-share-alt"></i> 我的分享 <i class="fas fa-share-alt"></i> 我的分享
</div> </div>
<div v-if="user && user.is_admin" class="nav-item" :class="{active: currentView === 'admin'}" @click="currentView = 'admin'"> <div v-if="user && user.is_admin" class="nav-item" :class="{active: currentView === 'admin'}" @click="switchView('admin')">
<i class="fas fa-user-shield"></i> 管理员 <i class="fas fa-user-shield"></i> 管理员
</div> </div>
<div class="nav-item" :class="{active: currentView === 'settings'}" @click="currentView = 'settings'"> <div class="nav-item" :class="{active: currentView === 'settings'}" @click="switchView('settings')">
<i class="fas fa-cog"></i> 设置 <i class="fas fa-cog"></i> 设置
</div> </div>

View File

@@ -1573,6 +1573,38 @@ handleDragLeave(e) {
} }
}, },
// 切换视图并自动刷新数据
switchView(view) {
// 如果已经在当前视图,不重复刷新
if (this.currentView === view) {
return;
}
this.currentView = view;
// 根据视图类型自动加载对应数据
switch (view) {
case 'files':
// 切换到文件视图时,重新加载文件列表
this.loadFiles(this.currentPath);
break;
case 'shares':
// 切换到分享视图时,重新加载分享列表
this.loadShares();
break;
case 'admin':
// 切换到管理后台时,重新加载用户列表
if (this.user && this.user.is_admin) {
this.loadUsers();
this.loadServerStorageStats();
}
break;
case 'settings':
// 设置页面不需要额外加载数据
break;
}
},
// 管理员:打开编辑用户存储权限模态框 // 管理员:打开编辑用户存储权限模态框
openEditStorageModal(user) { openEditStorageModal(user) {
this.editStorageForm.userId = user.id; this.editStorageForm.userId = user.id;