优化: 切换视图时自动刷新数据,解决切换存储方式后需要手动刷新的问题
问题描述:
- 用户在设置页面切换存储方式(本地 ↔ 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:
@@ -612,16 +612,16 @@
|
||||
<i class="fas fa-cloud"></i> 玩玩云
|
||||
</div>
|
||||
<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> 我的文件
|
||||
</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> 我的分享
|
||||
</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> 管理员
|
||||
</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> 设置
|
||||
</div>
|
||||
|
||||
@@ -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) {
|
||||
this.editStorageForm.userId = user.id;
|
||||
|
||||
Reference in New Issue
Block a user