sync: soul-admin 页面 | 原因: 前端页面修改

This commit is contained in:
卡若
2026-03-08 10:26:52 +08:00
parent 701e861f15
commit 13541c902a

View File

@@ -121,6 +121,63 @@ export function MatchPoolTab() {
</Button>
</div>
{/* 匹配池选择 */}
<Card className="bg-[#0f2137] border-gray-700/50">
<CardHeader>
<CardTitle className="text-white flex items-center gap-2"><Filter className="w-5 h-5 text-blue-400" /> </CardTitle>
<CardDescription className="text-gray-400"></CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="space-y-3">
<Label className="text-gray-300"></Label>
<div className="grid grid-cols-1 md:grid-cols-3 gap-3">
{([
{ value: 'vip' as const, label: '超级个体VIP会员', desc: '仅匹配付费 ¥1980 的VIP会员', icon: '👑' },
{ value: 'complete' as const, label: '完善资料用户', desc: '已完善联系方式+业务信息的用户', icon: '✅' },
{ value: 'all' as const, label: '全部流量池', desc: '所有已注册用户(含未完善资料)', icon: '👥' },
]).map(opt => {
const ps = config.poolSettings ?? DEFAULT_POOL
const selected = ps.poolSource === opt.value
return (
<button key={opt.value} type="button"
onClick={() => setConfig({ ...config, poolSettings: { ...(config.poolSettings ?? DEFAULT_POOL), poolSource: opt.value } })}
className={`p-4 rounded-lg border text-left transition-all ${selected ? 'border-[#38bdac] bg-[#38bdac]/10' : 'border-gray-700 bg-[#0a1628] hover:border-gray-600'}`}>
<div className="flex items-center gap-2">
<span className="text-xl">{opt.icon}</span>
<span className={`text-sm font-medium ${selected ? 'text-[#38bdac]' : 'text-gray-300'}`}>{opt.label}</span>
</div>
<p className="text-gray-500 text-xs mt-1">{opt.desc}</p>
</button>
)
})}
</div>
</div>
<div className="space-y-3 pt-4 border-t border-gray-700/50">
<Label className="text-gray-300"></Label>
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
{([
{ key: 'requirePhone' as const, label: '有手机号', icon: '📱' },
{ key: 'requireNickname' as const, label: '有昵称', icon: '👤' },
{ key: 'requireAvatar' as const, label: '有头像', icon: '🖼️' },
{ key: 'requireBusiness' as const, label: '有业务需求', icon: '💼' },
]).map(item => {
const ps = config.poolSettings ?? DEFAULT_POOL
const checked = ps[item.key]
return (
<div key={item.key} className="flex items-center gap-3 bg-[#0a1628] rounded-lg p-3">
<Switch checked={checked} onCheckedChange={v => setConfig({ ...config, poolSettings: { ...(config.poolSettings ?? DEFAULT_POOL), [item.key]: v } })} />
<div className="flex items-center gap-1.5">
<span>{item.icon}</span>
<Label className="text-gray-300 text-sm">{item.label}</Label>
</div>
</div>
)
})}
</div>
</div>
</CardContent>
</Card>
<Card className="bg-[#0f2137] border-gray-700/50">
<CardHeader>
<CardTitle className="text-white flex items-center gap-2"><Zap className="w-5 h-5 text-yellow-400" /> </CardTitle>