import { CheckCircleOutlined, ExclamationCircleOutlined, LinkOutlined, LoadingOutlined, ReloadOutlined, SwapOutlined, } from '@ant-design/icons' import { Alert, Button, Card, Space, Tooltip, Typography } from 'antd' import type { ClaimProductInfo } from '@/types/claim' import { formatAdminDateTime } from '@/utils/admin-time' import type { ClaimSnapshot } from './claim-snapshot' import { ClaimProductItems, InfoRow, InfoTile, UidEditRow } from './claim-shared' export function KuaishouCloudClaimSteps({ snapshot, qrCodeDataUrl, refreshingRole, confirmingRole, rebindingRole, redeeming, onOpenBindUrl, onRefreshRole, onRebindRole, onConfirmRole, onConfirmRedeem, uidInput, submittingUid, onUidChange, onResubmitUid, }: { snapshot: ClaimSnapshot qrCodeDataUrl: string refreshingRole: boolean confirmingRole: boolean rebindingRole: boolean redeeming: boolean onOpenBindUrl: (useCurrentPage?: boolean) => void onRefreshRole: () => void onRebindRole: () => void onConfirmRole: () => void onConfirmRedeem: () => void uidInput: string submittingUid: boolean onUidChange: (value: string) => void onResubmitUid: () => void }) { if (!snapshot.flow) { return null } if (snapshot.currentStep === 3) { return ( ) } return ( ) } function ClaimBindingStep({ snapshot, qrCodeDataUrl, refreshingRole, confirmingRole, rebindingRole, redeeming, onOpenBindUrl, onRefreshRole, onRebindRole, onConfirmRole, onConfirmRedeem, uidInput, submittingUid, onUidChange, onResubmitUid, }: { snapshot: ClaimSnapshot qrCodeDataUrl: string refreshingRole: boolean confirmingRole: boolean rebindingRole: boolean redeeming: boolean onOpenBindUrl: (useCurrentPage?: boolean) => void onRefreshRole: () => void onRebindRole: () => void onConfirmRole: () => void onConfirmRedeem: () => void uidInput: string submittingUid: boolean onUidChange: (value: string) => void onResubmitUid: () => void }) { const flow = snapshot.flow if (!flow) { return null } return ( 第 2 步:绑定角色

请使用与 UID {snapshot.expectedUid || '-'} 对应的角色扫码绑定。

{snapshot.isBindingPrepared && qrCodeDataUrl ? (
Q区用Q扫
绑定二维码
V区用V扫

长按保存相册进行扫码绑定

) : ( } message="系统正在准备绑定资源,请稍后自动刷新。" /> )}
{!snapshot.isUidMatched && snapshot.roleId ? ( ) : null} {snapshot.isUidMatched ? ( ) : ( )}
最近刷新:{formatAdminDateTime(flow.role.refreshedAt)} 链接有效期:{formatAdminDateTime(flow.binding.bindExpiresAt)}
) } function ClaimConfirmStep({ roleName, roleId, expectedUid, product, redeeming, rebindingRole, onConfirmRedeem, onRebindRole, }: { roleName: string roleId: string expectedUid: string product: ClaimProductInfo | null redeeming: boolean rebindingRole: boolean onConfirmRedeem: () => void onRebindRole: () => void }) { return ( 第 3 步:确认兑换信息

请再次确认 UID 和商品信息,确认无误后再继续兑换。

) } export function ClaimResultStep({ snapshot }: { snapshot: ClaimSnapshot }) { const flow = snapshot.flow return (
{snapshot.resultVariant === 'warning' ? ( ) : ( )}
{snapshot.resultTitle}

{snapshot.resultDescription}

) }