From 291a8bf394cbc28695991febd1ac9cec36d4dccc Mon Sep 17 00:00:00 2001 From: zyc <1439655764@qq.com> Date: Tue, 30 Jun 2026 11:02:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=B4=E5=83=8F=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=90=8E=E5=89=8D=E7=AB=AF=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9C=9F?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=20(row29=20=E7=BB=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 真因:上传成功且 setUser 写入了 avatar_url,但前端任何头像位置都没渲染 avatar_url, 只显示姓氏首字占位 → 看着像「没更新」。根因:User 类型里压根没暴露 avatar_url 字段。 修:User 类型补 avatar_url;侧栏 .user、账户菜单 .shell-account-head、设置页 av-big 三处头像改为「有 avatar_url 显 ,空则回退首字」;.av/.av-big 加 overflow:hidden + img 铺满规则。 后端上传 200 + 直链公读已实测正常,此为纯前端显示修复。 Co-Authored-By: Claude Opus 4.8 --- core/frontend/src/components/app-shell.tsx | 4 ++-- core/frontend/src/design-restraint.css | 4 ++++ core/frontend/src/routes/settings.tsx | 2 +- core/frontend/src/types.ts | 2 ++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/frontend/src/components/app-shell.tsx b/core/frontend/src/components/app-shell.tsx index ff03231..6e5a8a1 100644 --- a/core/frontend/src/components/app-shell.tsx +++ b/core/frontend/src/components/app-shell.tsx @@ -167,7 +167,7 @@ function AccountMenu({ anchorRect, onClose, navigate, logout, user, team, canMan style={{ left: pos.left, top: pos.top }} >
- {avatar} + {user.avatar_url ? 头像 : avatar} {team?.name || user.username} {user.username} @@ -374,7 +374,7 @@ export function Sidebar({ page, navigate, user, team, canManageBilling = true, p onClick={toggleAccountMenu} onKeyDown={(event) => { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); toggleAccountMenu(event as unknown as ReactMouseEvent); } }} > -
{avatar}
+
{user.avatar_url ? 头像 : avatar}
{team?.name || user.username}
diff --git a/core/frontend/src/design-restraint.css b/core/frontend/src/design-restraint.css index 3f0866d..fceb338 100644 --- a/core/frontend/src/design-restraint.css +++ b/core/frontend/src/design-restraint.css @@ -375,7 +375,9 @@ nav a.disabled:hover { background: transparent; color: var(--black-alpha-32); } color: var(--accent-white); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 12px; + overflow: hidden; } +.user .av img { width: 100%; height: 100%; object-fit: cover; display: block; } .user .em { font-size: 13px; color: var(--accent-black); } body.sidebar-collapsed aside.sidebar { padding: 22px 12px; } @@ -1948,7 +1950,9 @@ table.t tbody tr:hover { background: var(--black-alpha-4); } color: var(--accent-white); font-size: 12px; font-weight: 600; + overflow: hidden; } +.shell-account-head .av img { width: 100%; height: 100%; object-fit: cover; display: block; } .shell-account-head .nm { display: block; font-size: 13px; diff --git a/core/frontend/src/routes/settings.tsx b/core/frontend/src/routes/settings.tsx index 6660c0e..e86e89f 100644 --- a/core/frontend/src/routes/settings.tsx +++ b/core/frontend/src/routes/settings.tsx @@ -434,7 +434,7 @@ export function SettingsPage({
头像
-
{avatarChar}
+
{user.avatar_url ? 头像 : avatarChar}
diff --git a/core/frontend/src/types.ts b/core/frontend/src/types.ts index a15c71e..c0f5f99 100644 --- a/core/frontend/src/types.ts +++ b/core/frontend/src/types.ts @@ -4,6 +4,8 @@ export type User = { email: string; status: string; is_platform_admin?: boolean; + // 头像直链(后端 UserSerializer.avatar_url):空则前端回退姓氏首字占位 + avatar_url?: string; }; export type Team = {