<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].hanHaiMember
					&& topList[1].hanHaiMember.headImage" 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].hanHaiMember
					&& topList[1].hanHaiMember.nickName
				}}</view>
                <view class="score">{{ topList[1].num }} 亲密值</view>
                <view class="level">{{ 
					topList[1].commonBookAchievement
					&& (topList[1].commonBookAchievement.oldName || topList[1].commonBookAchievement.title)
				}}</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].hanHaiMember
					&& topList[0].hanHaiMember.headImage" mode="aspectFill"></image>
                </view>
                <view class="badge">
                    <image class="badge-img" :src="topList[0].icon" mode="aspectFit"></image>
                </view>
                <view class="name">{{ 
					topList[0].hanHaiMember
					&& topList[0].hanHaiMember.nickName || '用户'
				}}</view>
                <view class="score">{{ topList[0].num }} 亲密值</view>
                <view class="level">{{ 
					topList[0].commonBookAchievement
					&& (topList[0].commonBookAchievement.oldName || topList[0].commonBookAchievement.title)
				}}</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].hanHaiMember
					&& topList[2].hanHaiMember.headImage" mode="aspectFill"></image>
                </view>
                <view class="badge">
                    <image class="badge-img" :src="topList[2].icon" mode="aspectFit"></image>
                </view>
                <view class="name">{{ topList[2].name }}</view>
                <view class="score">{{ topList[2].num }} 亲密值</view>
                <view class="level">{{ 
					topList[2].commonBookAchievement
					&& (topList[2].commonBookAchievement.oldName || topList[2].commonBookAchievement.title)
				}}</view>
            </view>
        </view>

        <!-- 榜单列表 -->
        <view class="rank-list"
        v-if="topList.length > 3">
            <RankListItem v-for="(item, idx) in topList" 
            v-if="idx > 2"
			:index="idx + 1"
			:item="item"
            :key="item.id" />
        </view>

        <!-- 底部按钮 -->
        <view class="bottom-btn-area">
            <button class="tipping-btn"
            @click="$refs.interactiveGiftPopup.open"
            >互动打赏</button>
        </view>
		
		<interactiveGiftPopup ref="interactiveGiftPopup" :bookId="bookId" @giftSent="handleGiftSent"/>
    </view>
</template>

<script>
import RankListItem from '../components/novel/RankListItem.vue'
import interactiveGiftPopup from '../components/novel/interactiveGiftPopup.vue'
export default {
    components: {
        RankListItem,
		interactiveGiftPopup,
    },
    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;
            });
        },
		handleGiftSent(giftData) {
			// 处理礼物发送后的逻辑
			console.log('礼物发送成功:', giftData);
			uni.showToast({
				title: `成功赠送${giftData.gift.title} x${giftData.count}`,
				icon: 'success'
			});
			
			// 重新获取小说详情，更新打赏相关数据
			this.getTopList();
		},
    }
}
</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 {
			width: 200rpx;
			overflow:hidden; //超出的文本隐藏
			text-overflow:ellipsis; //溢出用省略号显示
			white-space:nowrap; //溢出不换行
            margin-top: 10rpx;
            font-size: 30rpx;
            color: #FFFFFF;
            font-weight: bold;
			text-align: center;
        }

        .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>