import React, { useState } from 'react'; /** * D3. 用户管理 * * 用户列表(搜索/KYC筛选)、用户详情、KYC审核 */ interface User { id: string; phone: string; email: string; kycLevel: number; couponCount: number; totalTraded: string; riskTags: string[]; createdAt: string; } const mockUsers: User[] = [ { id: 'U-001', phone: '138****1234', email: 'john@mail.com', kycLevel: 2, couponCount: 15, totalTraded: '$2,340', riskTags: [], createdAt: '2026-01-10' }, { id: 'U-002', phone: '139****5678', email: 'jane@mail.com', kycLevel: 1, couponCount: 8, totalTraded: '$890', riskTags: ['高频交易'], createdAt: '2026-01-15' }, { id: 'U-003', phone: '137****9012', email: 'bob@mail.com', kycLevel: 3, couponCount: 42, totalTraded: '$12,450', riskTags: [], createdAt: '2025-12-01' }, { id: 'U-004', phone: '136****3456', email: 'alice@mail.com', kycLevel: 0, couponCount: 0, totalTraded: '-', riskTags: [], createdAt: '2026-02-09' }, ]; export const UserManagementPage: React.FC = () => { const [search, setSearch] = useState(''); const [kycFilter, setKycFilter] = useState(null); const filtered = mockUsers.filter(u => { if (search && !u.phone.includes(search) && !u.email.includes(search) && !u.id.includes(search)) return false; if (kycFilter !== null && u.kycLevel !== kycFilter) return false; return true; }); const kycBadge = (level: number) => { const colors = ['var(--color-gray-400)', 'var(--color-info)', 'var(--color-primary)', 'var(--color-success)']; return ( L{level} ); }; return (

用户管理

{/* Search + Filters */}
setSearch(e.target.value)} style={{ flex: 1, maxWidth: 360, height: 40, border: '1px solid var(--color-border)', borderRadius: 'var(--radius-sm)', padding: '0 16px', font: 'var(--text-body)', }} /> {[null, 0, 1, 2, 3].map(level => ( ))}
{/* Users Table */}
{['用户ID', '手机号', '邮箱', 'KYC等级', '持券数', '交易额', '风险标签', '注册时间', '操作'].map(h => ( ))} {filtered.map(user => ( ))}
{h}
{user.id} {user.phone} {user.email} {kycBadge(user.kycLevel)} {user.couponCount} {user.totalTraded} {user.riskTags.length > 0 ? user.riskTags.map(tag => ( {tag} )) : - } {user.createdAt}
); };