'use client' import { formatNumberToKMB } from '@/lib/utils' import Image from 'next/image' import { AiChatRankOutput, AiHeartbeatRankOutput, AiGiftRankOutput } from '@/services/home/types' import { RankType } from '@/types/global' import Link from 'next/link' interface SmallRankCardProps { item: AiChatRankOutput | AiHeartbeatRankOutput | AiGiftRankOutput rankType: RankType rank?: number // 用于显示排名,如果不传则使用item.rankNo } export default function SmallRankCard({ item, rankType, rank }: SmallRankCardProps) { // 根据排行榜类型获取对应的数值显示 const getDisplayValue = () => { switch (rankType) { case RankType.CHAT: return formatNumberToKMB((item as AiChatRankOutput).chatNum || 0) case RankType.CRUSH: return `${(item as AiHeartbeatRankOutput).heartbeatValTotal || 0}℃` case RankType.GIFTS: return formatNumberToKMB(Math.floor(((item as AiGiftRankOutput).giftCoinNum || 0) / 100)) default: return '0' } } // 根据排行榜类型获取对应的图标 const getIcon = () => { switch (rankType) { case RankType.CHAT: return case RankType.CRUSH: return case RankType.GIFTS: return default: return } } if (!item) { return
} const imageUrl = item.homeImageUrl || '' const rankNo = rank || item.rankNo || 1 return (
{getIcon()}
{getDisplayValue()}
{rankNo === 2 ? '2nd' : '3rd'}
) }