This commit is contained in:
2025-12-16 09:32:55 +08:00
parent 5420cb599a
commit c20f085384
36 changed files with 2720 additions and 751 deletions

View File

@@ -23,8 +23,14 @@
<!-- 动态渲染每个玩家的结算结果 -->
<view class="table-row" v-for="player in players" :key="player.id">
<view class="player-info">
<image class="player-avatar" :src="player.avatar" mode="aspectFit"></image>
<!-- 修改头像容器添加统一的大头像样式 -->
<view class="avatar-container">
<image class="player-avatar" :src="player.avatar" mode="aspectFill"></image>
<!-- 如果是玩家自己添加标识 -->
<view v-if="player.isSelf" class="self-indicator"></view>
</view>
<text class="player-name">{{ player.name }}</text>
<view v-if="player.isSelf" class="self-tag">自己</view>
</view>
<view class="win-lose">
<view class="win-tag" v-if="player.totalScore > 0">胜利!</view>
@@ -68,6 +74,9 @@ onMounted(() => {
// 获取倍率
rate.value = parseFloat(options.rate) || 1
// 获取当前用户信息
const currentUserInfo = uni.getStorageSync('userInfo')
// 从本地存储获取玩家数据和对局记录
const savedPlayers = uni.getStorageSync('players')
const savedRounds = uni.getStorageSync('gameRounds')
@@ -75,6 +84,12 @@ onMounted(() => {
if (savedPlayers && savedRounds) {
// 计算每个玩家的总分和倍率分
players.value = savedPlayers.map(player => {
// 检查是否是玩家自己
const isSelf = currentUserInfo &&
currentUserInfo.userId &&
player.userId &&
player.userId.toString() === currentUserInfo.userId.toString()
// 计算总分
let totalScore = 0
savedRounds.forEach(round => {
@@ -90,7 +105,8 @@ onMounted(() => {
return {
...player,
totalScore,
rateScore
rateScore,
isSelf: isSelf || false // 添加isSelf字段
}
})
} else {
@@ -101,7 +117,8 @@ onMounted(() => {
name: '玩家80061',
avatar: 'https://ts1.tc.mm.bing.net/th/id/OIP-C.QQG4bvcAR3CJ0WeQULA9UQAAAA?w=275&h=211&c=8&rs=1&qlt=90&o=6&cb=ucfimgc1&dpr=1.5&pid=3.1&rm=2',
totalScore: 0,
rateScore: 0
rateScore: 0,
isSelf: true
}
]
}
@@ -181,13 +198,21 @@ const shareResult = () => {
text-align: center;
font-size: 28rpx;
font-weight: 500;
&:first-child {
text-align: left;
flex: 1.5; /* 调整玩家信息列宽度 */
padding-left: 30rpx;
}
}
}
.table-row {
display: flex;
padding: 20rpx;
align-items: center;
padding: 25rpx 30rpx;
border-bottom: 1rpx solid #ddd;
background-color: #fff;
&:last-child {
border-bottom: none;
@@ -196,18 +221,65 @@ const shareResult = () => {
.player-info {
display: flex;
align-items: center;
flex: 1;
flex: 1.5; /* 与表头对齐 */
min-width: 200rpx;
.player-avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
margin-right: 10rpx;
.avatar-container {
position: relative;
width: 110rpx; /* 容器比头像稍大 */
height: 110rpx;
margin-right: 20rpx;
display: flex;
align-items: center;
justify-content: center;
.player-avatar {
width: 100rpx; /* 增大头像尺寸 */
height: 100rpx;
border-radius: 50%;
border: 5rpx solid #fff; /* 添加白色边框 */
box-shadow: 0 6rpx 20rpx rgba(65, 71, 155, 0.3); /* 添加阴影效果 */
background: linear-gradient(135deg, #41479b 0%, #8b91e2 100%); /* 添加渐变背景 */
transition: all 0.3s ease;
/* 为虚拟玩家头像添加特殊样式 */
&:not([src*="OIP-C"]) {
/* 处理默认头像的特殊样式 */
border: 5rpx solid #f0f0f0;
}
}
/* 玩家自己头像的特殊标识 */
.self-indicator {
position: absolute;
bottom: 0;
right: 0;
width: 24rpx;
height: 24rpx;
background-color: #4CAF50;
border: 3rpx solid #fff;
border-radius: 50%;
z-index: 2;
}
}
.player-name {
font-size: 28rpx;
color: #000;
.player-name {
font-size: 26rpx;
color: #000;
margin-right: 10rpx;
font-weight: 500;
/* 允许换行 */
word-break: break-all;
white-space: normal;
}
.self-tag {
background-color: #007aff;
color: #fff;
font-size: 20rpx;
padding: 2rpx 8rpx;
border-radius: 10rpx;
margin-left: 5rpx;
}
}
@@ -221,24 +293,27 @@ const shareResult = () => {
background-color: #07c160;
color: #fff;
font-size: 24rpx;
padding: 5rpx 15rpx;
padding: 6rpx 20rpx;
border-radius: 8rpx;
text-align: center;
}
.lose-tag {
background-color: #fa5151;
color: #fff;
font-size: 24rpx;
padding: 5rpx 15rpx;
padding: 6rpx 20rpx;
border-radius: 8rpx;
text-align: center;
}
.draw-tag {
background-color: #10aeff;
color: #fff;
font-size: 24rpx;
padding: 5rpx 15rpx;
padding: 6rpx 20rpx;
border-radius: 8rpx;
text-align: center;
}
}
@@ -246,20 +321,28 @@ const shareResult = () => {
flex: 1;
text-align: center;
font-size: 28rpx;
color: #666;
color: #333;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
}
}
/* 优化虚拟玩家头像的默认样式 */
.player-avatar[src*="OIP-C"] {
/* 虚拟玩家的默认头像样式 */
border: 5rpx solid #e6e6ff !important;
box-shadow: 0 6rpx 20rpx rgba(139, 145, 226, 0.3) !important;
}
.detail-link {
text-align: center;
margin: 20rpx 0;
padding: 20rpx;
text {
font-size: 26rpx;
font-size: 28rpx;
color: #41479b;
text-decoration: underline;
}
@@ -279,5 +362,12 @@ const shareResult = () => {
font-size: 32rpx;
font-weight: 500;
border-radius: 40rpx;
box-shadow: 0 4rpx 12rpx rgba(255, 193, 7, 0.3);
transition: all 0.2s ease;
&:active {
background-color: #e6ac00;
transform: translateY(2rpx);
}
}
</style>