<template>
|
|
<view class="tipping-page">
|
|
<!-- 顶部导航栏 -->
|
|
<navbar title="读者亲密值榜单" bgColor="#ac4b2c" color="#fff" leftClick @leftClick="$utils.navigateBack" />
|
|
|
|
<!-- 榜单前三名 -->
|
|
<view class="top-three">
|
|
<view class="top-item second" v-if="topList[1]">
|
|
<view class="avatar-frame">
|
|
<image class="frame-img" src="/pages_order/static/top/top1.png" mode="aspectFit"></image>
|
|
<image class="avatar" :src="topList[1].avatar" mode="aspectFill"></image>
|
|
</view>
|
|
<view class="badge">
|
|
<image class="badge-img" src="/pages_order/static/book/dj.png" mode="aspectFit"></image>
|
|
</view>
|
|
<view class="name">{{ topList[1].name }}</view>
|
|
<view class="score">{{ topList[1].num }} 亲密值</view>
|
|
<view class="level">护书使者 四级</view>
|
|
</view>
|
|
|
|
<view class="top-item first" v-if="topList[0]">
|
|
<view class="avatar-frame">
|
|
<image class="frame-img" src="/pages_order/static/top/top1.png" mode="aspectFit"></image>
|
|
<image class="avatar" :src="topList[0].avatar" mode="aspectFill"></image>
|
|
</view>
|
|
<view class="badge">
|
|
<image class="badge-img" :src="topList[0].icon" mode="aspectFit"></image>
|
|
</view>
|
|
<view class="name">{{ topList[0].name }}</view>
|
|
<view class="score">{{ topList[0].num }} 亲密值</view>
|
|
<view class="level">护书使者 五级</view>
|
|
</view>
|
|
|
|
<view class="top-item third" v-if="topList[2]">
|
|
<view class="avatar-frame">
|
|
<image class="frame-img" src="/pages_order/static/top/top1.png" mode="aspectFit"></image>
|
|
<image class="avatar" :src="topList[2].avatar" mode="aspectFill"></image>
|
|
</view>
|
|
<view class="badge">
|
|
<image class="badge-img" src="/pages_order/static/book/dj.png" mode="aspectFit"></image>
|
|
</view>
|
|
<view class="name">{{ topList[2].name }}</view>
|
|
<view class="score">{{ topList[2].num }} 亲密值</view>
|
|
<view class="level">护书使者 三级</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 榜单列表 -->
|
|
<view class="rank-list"
|
|
v-if="topList.length > 3">
|
|
<RankListItem v-for="(item, idx) in topList"
|
|
v-if="idx > 2"
|
|
:key="item.id" />
|
|
</view>
|
|
|
|
<!-- 底部按钮 -->
|
|
<view class="bottom-btn-area">
|
|
<button class="tipping-btn"
|
|
@click="$utils.navigateTo('pages_order/novel/Giftbox?id=' + bookId)"
|
|
>互动打赏</button>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import RankListItem from '../components/novel/RankListItem.vue'
|
|
export default {
|
|
components: {
|
|
RankListItem
|
|
},
|
|
data() {
|
|
return {
|
|
topList: [],
|
|
rankList: [],
|
|
bookId: 0,
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.bookId = options.id;
|
|
},
|
|
onShow() {
|
|
this.getTopList();
|
|
},
|
|
methods: {
|
|
getTopList() {
|
|
this.$fetch('getIntimacyRankList', {
|
|
bookId: this.bookId,
|
|
pageNo: 1,
|
|
pageSize: 10
|
|
}).then(res => {
|
|
this.topList = res.records;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.tipping-page {
|
|
min-height: 100vh;
|
|
// background: linear-gradient(180deg, #b86e3b 0%, #e6b07c 100%);
|
|
background-color: #ac4b2c;
|
|
padding-bottom: 40rpx;
|
|
}
|
|
|
|
.top-three {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: flex-end;
|
|
margin: 80rpx 0 200rpx 0;
|
|
padding: 0 30rpx;
|
|
gap: 20rpx;
|
|
|
|
.top-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
position: relative;
|
|
border-top-left-radius: 110rpx;
|
|
border-top-right-radius: 110rpx;
|
|
gap: 10rpx;
|
|
padding-bottom: 20rpx;
|
|
|
|
&.first {
|
|
z-index: 3;
|
|
margin-top: -50rpx;
|
|
background: linear-gradient(to bottom, #F8DA87, #F8DA8700);
|
|
border: 1px solid #fff;
|
|
}
|
|
|
|
&.second {
|
|
z-index: 2;
|
|
background: linear-gradient(to bottom, #C2C9CD, #C2C9CD00);
|
|
border: 1px solid #fff;
|
|
top: 80rpx;
|
|
}
|
|
|
|
&.third {
|
|
z-index: 2;
|
|
background: linear-gradient(to bottom, #834941, #83494100);
|
|
border: 1px solid #fff;
|
|
top: 80rpx;
|
|
}
|
|
|
|
.avatar-frame {
|
|
position: relative;
|
|
width: 220rpx;
|
|
height: 220rpx;
|
|
margin-top: -50rpx;
|
|
|
|
.frame-img {
|
|
position: absolute;
|
|
width: 120%;
|
|
height: 120%;
|
|
z-index: 2;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.avatar {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
width: 80%;
|
|
height: 80%;
|
|
border-radius: 50%;
|
|
z-index: 1;
|
|
}
|
|
}
|
|
|
|
.badge {
|
|
width: 100rpx;
|
|
height: 100rpx;
|
|
z-index: 3;
|
|
|
|
.badge-img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.name {
|
|
margin-top: 10rpx;
|
|
font-size: 36rpx;
|
|
color: #FFFFFF;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.score {
|
|
font-size: 28rpx;
|
|
color: #FFFFFF;
|
|
margin-top: 6rpx;
|
|
}
|
|
|
|
.level {
|
|
position: absolute;
|
|
bottom: -40rpx;
|
|
width: 102%;
|
|
text-align: center;
|
|
padding: 6rpx 20rpx;
|
|
background-color: #FFCC33;
|
|
border-radius: 6rpx;
|
|
font-size: 26rpx;
|
|
color: #8B4513;
|
|
font-weight: bold;
|
|
box-sizing: border-box;
|
|
}
|
|
}
|
|
}
|
|
|
|
.rank-list {
|
|
background: #FAE5BE;
|
|
margin: 0 24rpx;
|
|
padding: 20rpx;
|
|
border-radius: 20rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20rpx;
|
|
}
|
|
|
|
.bottom-btn-area {
|
|
margin: 40rpx 24rpx 90rpx 24rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24rpx;
|
|
|
|
.tipping-btn {
|
|
width: 100%;
|
|
height: 80rpx;
|
|
background: #fffbe6;
|
|
color: #b86e3b;
|
|
font-size: 32rpx;
|
|
border-radius: 40rpx;
|
|
font-weight: bold;
|
|
letter-spacing: 2rpx;
|
|
box-shadow: 0 4rpx 16rpx 0 rgba(184, 110, 59, 0.12);
|
|
border: none;
|
|
}
|
|
}
|
|
</style>
|