import { CheckCircle, Clock, Gift, Tag, Ticket, XCircle } from "lucide-react" import { useMemo } from "react" import { fetchMyCoupons } from "@/api/coupon" import Page from "@/components/page" import { Badge } from "@/components/ui/badge" import { Card, CardContent } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { useList } from "@/lib/hooks/useList" import type { MyCouponItem } from "@/lib/models/coupon" import { formatDate } from "@/lib/utils" const COUPON_TYPE_DISCOUNT = 1 function CouponCard({ item }: { item: MyCouponItem }) { const isDiscount = item.Coupon.CouponType === COUPON_TYPE_DISCOUNT const isUsed = item.IsUsed return ( {isDiscount ? ( <> {item.Coupon.CouponValue} 折 > ) : ( <> ¥ {item.Coupon.CouponValue} > )} {item.Coupon.Name} {isUsed ? ( 已使用 ) : item.IsExpired ? ( 已过期 ) : ( 可使用 )} {item.Coupon.AllowMinAmount > 0 ? `满${item.Coupon.AllowMinAmount}元可用` : "无限制"} {formatDate(item.Orgin.StartTime)} -{" "} {formatDate(item.Orgin.EndTime)} {item.Orgin.Remark} {isUsed && ( )} ) } export default function CouponPage() { const { data: coupons, status } = useList(fetchMyCoupons) const availableCoupons = useMemo( () => coupons.filter(item => !item.IsUsed && !item.IsExpired), [coupons], ) const usedCoupons = useMemo( () => coupons.filter(item => item.IsUsed), [coupons], ) return ( 我的优惠券 共 {coupons.length} 张 可使用 ({availableCoupons.length}) 已使用 ({usedCoupons.length}) {status === "load" ? ( 加载中... ) : status === "fail" ? ( 加载失败,请刷新重试 ) : availableCoupons.length === 0 ? ( 暂无可用优惠券 快去参与活动领取吧 ) : ( {availableCoupons.map(item => ( ))} )} {usedCoupons.length === 0 ? ( 暂无已使用的优惠券 ) : ( {usedCoupons.map(item => ( ))} )} ) }
加载中...
加载失败,请刷新重试
暂无可用优惠券
快去参与活动领取吧
暂无已使用的优惠券