From f9fd9afcdd489c0ff936f91d405a63390d53eed0 Mon Sep 17 00:00:00 2001 From: alger Date: Sat, 22 Mar 2025 10:31:05 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=E4=BC=98=E5=8C=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=92=8C=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/views/user/index.vue | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/renderer/views/user/index.vue b/src/renderer/views/user/index.vue index 586f1e1..10a2403 100644 --- a/src/renderer/views/user/index.vue +++ b/src/renderer/views/user/index.vue @@ -167,29 +167,36 @@ const loadData = async () => { try { infoLoading.value = true; - if (!user.value) return; + if (!user.value) { + console.warn('用户数据不存在,尝试重新获取'); + // 可以尝试重新获取用户数据 + return; + } - const { data: userData } = await getUserDetail(user.value.userId); - if (!mounted.value) return; - userDetail.value = userData; + // 使用 Promise.all 并行请求提高效率 + const [userDetailRes, playlistRes, recordRes] = await Promise.all([ + getUserDetail(user.value.userId), + getUserPlaylist(user.value.userId), + getUserRecord(user.value.userId) + ]); - const { data: playlistData } = await getUserPlaylist(user.value.userId); if (!mounted.value) return; - playList.value = playlistData.playlist; - const { data: recordData } = await getUserRecord(user.value.userId); - if (!mounted.value) return; - recordList.value = recordData.allData.map((item: any) => ({ + userDetail.value = userDetailRes.data; + playList.value = playlistRes.data.playlist; + recordList.value = recordRes.data.allData.map((item: any) => ({ ...item, ...item.song, picUrl: item.song.al.picUrl })); } catch (error: any) { console.error('加载用户页面失败:', error); - // 如果获取用户数据失败,可能是token过期 if (error.response?.status === 401) { userStore.handleLogout(); router.push('/login'); + } else { + // 添加更多错误处理和重试逻辑 + message.error(t('user.message.loadFailed')); } } finally { if (mounted.value) { @@ -223,7 +230,7 @@ watch( // 页面挂载时检查登录状态 onMounted(() => { - checkLoginStatus(); + checkLoginStatus() && loadData(); }); // 展示歌单