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扫 长按保存相册进行扫码绑定 } onClick={() => onOpenBindUrl(false)}> 打开绑定链接 ) : ( } message="系统正在准备绑定资源,请稍后自动刷新。" /> )} {!snapshot.isUidMatched && snapshot.roleId ? ( ) : null} } loading={refreshingRole} onClick={onRefreshRole} > 刷新角色信息 } loading={rebindingRole} disabled={confirmingRole || redeeming} onClick={onRebindRole} > 换绑角色 {snapshot.isUidMatched ? ( } loading={redeeming} disabled={rebindingRole} onClick={onConfirmRedeem} > UID 已匹配,确认兑换 ) : ( } loading={confirmingRole} disabled={Boolean(snapshot.confirmRoleDisabledReason)} onClick={onConfirmRole} > 刷新后重试匹配 )} 最近刷新:{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 和商品信息,确认无误后再继续兑换。 } loading={rebindingRole} disabled={redeeming} onClick={onRebindRole} > 换绑角色 } loading={redeeming} disabled={rebindingRole} onClick={onConfirmRedeem} > 确认兑换 ) } export function ClaimResultStep({ snapshot }: { snapshot: ClaimSnapshot }) { const flow = snapshot.flow return ( {snapshot.resultVariant === 'warning' ? ( ) : ( )} {snapshot.resultTitle} {snapshot.resultDescription} ) }
请使用与 UID {snapshot.expectedUid || '-'} 对应的角色扫码绑定。
长按保存相册进行扫码绑定
请再次确认 UID 和商品信息,确认无误后再继续兑换。
{snapshot.resultDescription}