sync: soul-admin 组件 | 原因: 前端组件修改
This commit is contained in:
@@ -543,89 +543,6 @@ export function UserDetailModal({
|
||||
</div>
|
||||
</TabsContent>
|
||||
|
||||
{/* ===== RFM 估值 ===== */}
|
||||
<TabsContent value="rfm" className="flex-1 overflow-auto space-y-4">
|
||||
{rfmData ? (
|
||||
<>
|
||||
<div className="p-4 bg-[#0a1628] rounded-lg border border-gray-700/30">
|
||||
<div className="flex items-center justify-between mb-4">
|
||||
<div className="flex items-center gap-2">
|
||||
<TrendingUp className="w-5 h-5 text-[#38bdac]" />
|
||||
<span className="text-white font-medium text-lg">用户 RFM 估值</span>
|
||||
</div>
|
||||
<div className="text-right">
|
||||
<div className="text-3xl font-bold text-white">{rfmData.rfmScore}</div>
|
||||
<Badge className={`border-0 ${getRFMLevelColor(rfmData.rfmLevel)}`}>
|
||||
{rfmData.rfmLevel} 级用户
|
||||
</Badge>
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-3 gap-4">
|
||||
<div className="p-3 bg-[#162840] rounded-lg text-center">
|
||||
<div className="w-8 h-8 rounded bg-red-500/20 flex items-center justify-center text-sm font-bold text-red-400 mx-auto mb-2">R</div>
|
||||
<div className="text-2xl font-bold text-red-400">{rfmData.recency}</div>
|
||||
<div className="text-gray-500 text-xs mt-1">最近购买天数</div>
|
||||
<div className="text-gray-600 text-xs">越低越好</div>
|
||||
</div>
|
||||
<div className="p-3 bg-[#162840] rounded-lg text-center">
|
||||
<div className="w-8 h-8 rounded bg-blue-500/20 flex items-center justify-center text-sm font-bold text-blue-400 mx-auto mb-2">F</div>
|
||||
<div className="text-2xl font-bold text-blue-400">{rfmData.frequency}</div>
|
||||
<div className="text-gray-500 text-xs mt-1">购买频次</div>
|
||||
<div className="text-gray-600 text-xs">越高越好</div>
|
||||
</div>
|
||||
<div className="p-3 bg-[#162840] rounded-lg text-center">
|
||||
<div className="w-8 h-8 rounded bg-green-500/20 flex items-center justify-center text-sm font-bold text-green-400 mx-auto mb-2">M</div>
|
||||
<div className="text-2xl font-bold text-green-400">¥{rfmData.monetary.toFixed(0)}</div>
|
||||
<div className="text-gray-500 text-xs mt-1">消费金额</div>
|
||||
<div className="text-gray-600 text-xs">越高越好</div>
|
||||
</div>
|
||||
</div>
|
||||
{rfmData.lastOrderAt && (
|
||||
<div className="mt-3 text-sm text-gray-500">
|
||||
最近订单:{new Date(rfmData.lastOrderAt).toLocaleString()}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="p-4 bg-[#0a1628] rounded-lg">
|
||||
<p className="text-gray-400 text-sm mb-3 font-medium">等级说明</p>
|
||||
<div className="space-y-2 text-sm">
|
||||
{[
|
||||
{ level: 'S', label: '超级VIP', desc: '高频高额近期活跃,顶级价值用户', color: 'text-amber-400' },
|
||||
{ level: 'A', label: '高价值', desc: '消费能力强,复购率高', color: 'text-green-400' },
|
||||
{ level: 'B', label: '潜力用户', desc: '有一定消费,需重点维护', color: 'text-blue-400' },
|
||||
{ level: 'C', label: '普通用户', desc: '偶发购买,待激活', color: 'text-gray-400' },
|
||||
{ level: 'D', label: '低活跃', desc: '长期未购买或无消费记录', color: 'text-red-400' },
|
||||
].map((item) => (
|
||||
<div key={item.level} className={`flex items-center gap-3 ${rfmData.rfmLevel === item.level ? 'opacity-100' : 'opacity-50'}`}>
|
||||
<Badge className={`border-0 w-6 h-6 flex items-center justify-center p-0 ${getRFMLevelColor(item.level)}`}>
|
||||
{item.level}
|
||||
</Badge>
|
||||
<span className={`font-medium w-16 ${item.color}`}>{item.label}</span>
|
||||
<span className="text-gray-500">{item.desc}</span>
|
||||
{rfmData.rfmLevel === item.level && (
|
||||
<CheckCircle2 className="w-4 h-4 text-[#38bdac] ml-auto" />
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
<div className="text-center py-12">
|
||||
<TrendingUp className="w-12 h-12 text-[#38bdac]/30 mx-auto mb-4" />
|
||||
<p className="text-gray-400">暂无 RFM 数据</p>
|
||||
<p className="text-gray-600 text-sm mt-1">用户需有至少一次购买记录才会生成 RFM 估值</p>
|
||||
<Button
|
||||
className="mt-4 bg-[#38bdac] hover:bg-[#2da396] text-white"
|
||||
onClick={loadUserDetail}
|
||||
>
|
||||
<RefreshCw className="w-4 h-4 mr-2" />
|
||||
重新加载
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
</TabsContent>
|
||||
|
||||
{/* ===== 标签体系 ===== */}
|
||||
<TabsContent value="tags" className="flex-1 overflow-auto space-y-4">
|
||||
<div className="p-4 bg-[#0a1628] rounded-lg">
|
||||
|
||||
Reference in New Issue
Block a user