完成排行榜页面

This commit is contained in:
kron
2025-05-02 00:39:37 +08:00
parent 396599e379
commit 29c332f171
5 changed files with 271 additions and 10 deletions

View File

@@ -1,28 +1,289 @@
<script setup>
import AppBackground from "@/components/AppBackground.vue";
import Header from "@/components/Header.vue";
import { ref } from 'vue';
const selectedIndex = ref(0);
const handleSelect = (index) => {
selectedIndex.value = index;
};
</script>
<template>
<view>
<AppBackground />
<Header title="排行赛" />
<view class="ranking-my-data">
<view>
<view class="user-info">
<view class="avatar" @click="toUserPage">
<image src="../static/avatar-frame.png" mode="widthFix" />
<image src="../static/avatar.png" mode="widthFix" />
</view>
<text>打酱油·路过</text>
</view>
<view class="ranking-season">
<text>第14赛季</text>
<image src="../static/triangle.png" mode="widthFix" />
</view>
</view>
<view class="my-data">
<view>
<text>段位</text>
<text :style="{ color: '#83CDFF' }">砖石 III</text>
</view>
<view>
<text>赛季平均环数</text>
<text :style="{ color: '#FFD947' }">9.7</text>
</view>
<view>
<text>赛季胜率</text>
<text :style="{ color: '#FF507E' }">52%</text>
</view>
</view>
<view class="rank-type">
<image src="../static/battle1v1.png" mode="widthFix" />
<image src="../static/battle5.png" mode="widthFix" />
<image src="../static/battle10.png" mode="widthFix" />
</view>
<view class="data-progress">
<text>1 V 1 163 胜率 51%</text>
<view>
<view :style="{ width: '50%', backgroundColor: '#FF507E' }" />
</view>
</view>
<view class="data-progress">
<text>5人大乱斗 12 得分率 56%</text>
<view>
<view :style="{ width: '60%', backgroundColor: '#FFD947' }" />
</view>
</view>
<view class="data-progress">
<text>10 人大乱斗 12 得分率 5</text>
<view>
<view :style="{ width: '45%', backgroundColor: '#FFD947' }" />
</view>
</view>
<view>查看我的比赛记录</view>
</view>
<view class="ranking-data">
<view>
<view
v-for="(rankType, index) in ['积分表', 'MVP榜', '十环榜', '最牛省份']"
:key="index"
:style="{
color: index === selectedIndex ? '#000' : '#fff',
backgroundColor: index === selectedIndex ? '#FFD947' : 'transparent',
}"
@tap="handleSelect(index)"
>
{{ rankType }}
</view>
</view>
<view
v-for="(rankType, index) in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
:key="index"
:style="{
backgroundColor: index % 2 === 0 ? '#ffffff1f' : 'transparent',
}"
class="rank-item"
>
<image v-if="index === 0" src="../static/champ1.png" />
<image v-if="index === 1" src="../static/champ2.png" />
<image v-if="index === 2" src="../static/champ3.png" />
<view v-if="index > 2">{{ rankType }}</view>
<image src="../static/avatar.png" mode="widthFix" />
<view>
<text>打酱油大声路过</text>
<text>钻石三级20</text>
</view>
<text>8850<text></text></text>
</view>
</view>
</view>
</template>
<style scoped>
.back-btn {
position: fixed;
top: 2rem;
left: 2rem;
padding: 0.5rem 1rem;
background-color: #007aff;
.ranking-my-data,
.ranking-data {
display: flex;
flex-direction: column;
align-items: flex-start;
background-color: #54431d33;
border: 1px solid #54431d;
border-radius: 10px;
margin: 0 15px;
margin-bottom: 15px;
}
.ranking-my-data {
padding: 15px;
}
.ranking-my-data > view:first-of-type {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
border-bottom: 1px solid #48494e;
padding-bottom: 15px;
}
.user-info {
display: flex;
justify-content: center;
align-items: center;
color: #fff;
border-radius: 5px;
font-size: 14px;
}
.back-hover {
opacity: 0.8;
.avatar {
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin-right: 15px;
}
.avatar > image:first-child {
position: absolute;
width: 40px;
height: 40px;
}
.avatar > image {
width: 30px;
height: 30px;
border-radius: 50%;
}
.ranking-season {
display: flex;
justify-content: center;
align-items: center;
}
.ranking-season > image {
width: 12px;
}
.ranking-season > text {
color: #ffd947;
font-size: 14px;
margin-right: 5px;
}
.my-data {
display: flex;
align-items: center;
justify-content: space-around;
color: #b3b3b3;
width: 100%;
margin-top: 15px;
}
.my-data > view {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
height: 60px;
}
.my-data > view:nth-child(2) {
border-left: 1px solid #48494e;
border-right: 1px solid #48494e;
padding: 0 20px;
}
.my-data > view > text:first-child {
font-size: 14px;
}
.my-data > view > text:last-child {
font-size: 18px;
}
.rank-type {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-top: 15px;
}
.rank-type > image {
width: 32%;
}
.data-progress {
width: 100%;
color: #b3b3b3;
display: flex;
flex-direction: column;
align-items: flex-start;
margin-top: 15px;
}
.data-progress > view {
width: 100%;
height: 5px;
border-radius: 10px;
background-color: #696969;
margin-top: 10px;
}
.data-progress > view > view {
height: 5px;
border-radius: 10px;
}
.ranking-my-data > view:last-child {
color: #39a8ff;
font-size: 14px;
text-align: center;
width: 100%;
padding-top: 15px;
}
.ranking-data > view:first-of-type {
width: calc(100% - 30px);
display: flex;
justify-content: space-around;
font-size: 15px;
padding: 15px;
}
.ranking-data > view:first-of-type > view {
width: 25%;
padding: 7px 10px;
text-align: center;
border-radius: 20px;
}
.rank-item {
width: calc(100% - 30px);
height: 55px;
padding: 0 15px;
display: flex;
justify-content: space-between;
align-items: center;
}
.rank-item > view:first-child {
width: 24px;
height: 24px;
border-radius: 12px;
background-color: #767676;
color: #fff;
text-align: center;
line-height: 24px;
font-size: 14px;
}
.rank-item > image:first-child {
width: 24px;
height: 24px;
}
.rank-item > image:nth-child(2) {
width: 35px;
height: 35px;
}
.rank-item > view:nth-child(3) {
display: flex;
flex-direction: column;
width: 55%;
}
.rank-item > view:nth-child(3) > text:first-child {
color: #fff9;
font-size: 14px;
}
.rank-item > view:nth-child(3) > text:last-child {
color: #fff4;
font-size: 13px;
}
.rank-item > text:last-child {
color: #fff;
}
.rank-item > text:last-child text {
color: #fff4;
font-size: 13px;
margin-left: 3px;
}
</style>

BIN
src/static/battle10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/static/battle1v1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
src/static/battle5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/static/triangle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B