From 67936f382d6c06c4957a8261cdc3d05ef95c579c Mon Sep 17 00:00:00 2001 From: hxt Date: Thu, 29 May 2025 22:45:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor(src):=20=E4=BC=98=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=A0=8F=E5=92=8C=E9=A1=B5=E9=9D=A2=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新导航栏显示内容,增加对战信息页面 - 调整首页路由,改为角色列表页面 - 更新 CharacterDetail 页面,增加职业和星级信息展示 - 修改 Characters 页面,使用中文标签替换英文 --- src/App.tsx | 6 ++--- src/components/Navbar.tsx | 5 ++-- src/pages/CharacterDetail.tsx | 50 ++++++++++++++++++++++++++--------- src/pages/Characters.tsx | 14 +++++----- 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index f333084..430e7d8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -124,14 +124,14 @@ const App: React.FC = () => {
- } /> + } /> } /> } /> } + element={} /> - } /> + } /> } /> } /> } /> diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 9a9532d..5369e8a 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -11,9 +11,10 @@ interface NavItem { } const navItems: NavItem[] = [ - { path: "/", label: "对战阵容" }, + { path: "/", label: "角色列表" }, + { path: "/gvg", label: "对战信息" }, // { path: "/home", label: "主页" }, - { path: "/characters", label: "角色列表" }, + // { path: "/characters", label: "角色列表" }, // { path: "/builds", label: "配装攻略" }, // { path: "/battles", label: "对战信息" }, // { path: "/news", label: "资讯中心" }, diff --git a/src/pages/CharacterDetail.tsx b/src/pages/CharacterDetail.tsx index 822c94a..56e1366 100644 --- a/src/pages/CharacterDetail.tsx +++ b/src/pages/CharacterDetail.tsx @@ -457,7 +457,8 @@ const CharacterDetail: React.FC = () => {

角色配装推荐

{/* 平均属性 */} -
+

平均属性

{Object.entries(heroSetAvgVO).map(([key, value]) => { @@ -466,7 +467,8 @@ const CharacterDetail: React.FC = () => { return (
- {displayKey} + {displayKey} {ATTR_LABEL_MAP[displayKey]}
@@ -478,12 +480,14 @@ const CharacterDetail: React.FC = () => {
{/* 主流套装占比 */} -
+

主流套装占比

{heroSetPercentVOS.map((set, idx) => (
-
套装 {idx + 1} ({formatPercent(set.percent)}% 使用比例)
@@ -501,7 +505,8 @@ const CharacterDetail: React.FC = () => { {name} ) : ( - ? + ? )} {name} @@ -513,17 +518,34 @@ const CharacterDetail: React.FC = () => {
{/* 神器使用占比 */} -
+

神器使用占比

{heroDetail.heroArtifactPercentVOS?.map((artifact: ArtifactPercent, idx: number) => (
-
- + {artifact.artifactName} + {/* 左上角职业信息 */} + {artifact.role && ( +
+ {/*{artifact.role}*/}*/} +
+ )} + {/* 右上角星级信息 */} +
+ {Array(parseInt(artifact.rarity)).fill(0).map((_, i) => ( + star + ))} +
{artifact.artifactName} @@ -554,7 +576,8 @@ const CharacterDetail: React.FC = () => { return (
- {displayKey} + {displayKey} {ATTR_LABEL_MAP[displayKey]}
@@ -583,13 +606,14 @@ const CharacterDetail: React.FC = () => { {/* 神器图片 */}
{build.arfPic ? ( - {build.arfName ) : ( -
?
+
?
)}
{/* 神器名称 */} diff --git a/src/pages/Characters.tsx b/src/pages/Characters.tsx index ddc6247..ae1f85e 100644 --- a/src/pages/Characters.tsx +++ b/src/pages/Characters.tsx @@ -22,10 +22,10 @@ const ROLES = [ { key: 'manauser', label: 'Soul Weaver', img: '/pic/role/manauser.png' }, ]; const STAR_OPTIONS = [ - { label: "All Stars", value: 0 }, - { label: "3 Stars", value: 3 }, - { label: "4 Stars", value: 4 }, - { label: "5 Stars", value: 5 }, + { label: "全部", value: 0 }, + { label: "3 星", value: 3 }, + { label: "4 星", value: 4 }, + { label: "5 星", value: 5 }, ]; const ROLE_LABELS: Record = { @@ -135,7 +135,7 @@ const Characters: React.FC = () => {

- All Epic Seven Heroes + 全部角色信息

@@ -202,7 +202,7 @@ const Characters: React.FC = () => { className={`px-4 py-2 rounded-md flex items-center gap-2 cursor-pointer whitespace-nowrap !rounded-button border ${selectedElement === el.key ? "bg-gradient-to-r from-[#C17F59] to-[#A66D4F] text-[#1A1412] border-[#C17F59]" : "bg-[#1A1412] hover:bg-[#2A211E] text-[#E6B17E] border-[#C17F59]/30"}`} onClick={() => setSelectedElement(el.key)} > - {el.img ? {el.key} : 'All'} + {el.img ? {el.key} : '全部'} ))}
@@ -216,7 +216,7 @@ const Characters: React.FC = () => { className={`px-4 py-2 rounded-md flex items-center gap-2 cursor-pointer whitespace-nowrap !rounded-button border ${selectedRole === role.key ? "bg-gradient-to-r from-[#C17F59] to-[#A66D4F] text-[#1A1412] border-[#C17F59]" : "bg-[#1A1412] hover:bg-[#2A211E] text-[#E6B17E] border-[#C17F59]/30"}`} onClick={() => setSelectedRole(role.key)} > - {role.img ? {role.key} : 'All'} + {role.img ? {role.key} : '全部'} ))}