Compare commits
2 Commits
b724494f7e
...
22f5cdaf96
| Author | SHA1 | Date |
|---|---|---|
|
|
22f5cdaf96 | |
|
|
5c773a9bd4 |
|
|
@ -471,11 +471,11 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="submenu">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/品牌市场订单管理.html', this);" style="padding-left: 70px;">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/订单管理/品牌市场订单管理.html', this);" style="padding-left: 70px;">
|
||||
<span class="submenu-icon"></span>
|
||||
品牌市场订单管理
|
||||
</a>
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/品牌店铺订单管理.html', this);" style="padding-left: 70px;">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/订单管理/品牌店铺订单管理.html', this);" style="padding-left: 70px;">
|
||||
<span class="submenu-icon"></span>
|
||||
品牌店铺订单管理
|
||||
</a>
|
||||
|
|
@ -494,11 +494,11 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="submenu">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销商管理.html', this);" style="padding-left: 70px;">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销管理/分销商管理.html', this);" style="padding-left: 70px;">
|
||||
<span class="submenu-icon"></span>
|
||||
分销商管理
|
||||
</a>
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销订单与佣金管理.html', this);" style="padding-left: 70px;">
|
||||
<a href="#" class="submenu-link" onclick="loadContent('./品牌管理/分销管理/分销订单与佣金管理.html', this);" style="padding-left: 70px;">
|
||||
<span class="submenu-icon"></span>
|
||||
分销订单与佣金管理
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,892 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>品牌分销全景分析 - 品牌数据中心</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
|
||||
'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
background: #f5f5f5;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
background: white;
|
||||
padding: 16px 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #262626;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-subtitle {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
color: #262626;
|
||||
font-size: 20px;
|
||||
margin: 20px 0 16px 0;
|
||||
padding-left: 12px;
|
||||
border-left: 4px solid #1890ff;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.stats-section {
|
||||
background: white;
|
||||
padding: 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.stats-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border: 1px solid #f0f0f0;
|
||||
border-radius: 8px;
|
||||
background: #fafafa;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.stat-item:hover {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.stat-item .icon {
|
||||
font-size: 24px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.stat-item h3 {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
margin-bottom: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.stat-item .value {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.stat-item .sub-value {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.stat-card .trend {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: 12px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.trend.up {
|
||||
background: #d4edda;
|
||||
color: #155724;
|
||||
}
|
||||
|
||||
.trend.down {
|
||||
background: #f8d7da;
|
||||
color: #721c24;
|
||||
}
|
||||
|
||||
.chart-section {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
.chart-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-card {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
padding: 24px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.chart-card.full-width {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.chart-card h2 {
|
||||
font-size: 20px;
|
||||
color: #262626;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.chart-card h2 .icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.chart-container {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.chart-container.small {
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.distributor-list {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.distributor-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 16px;
|
||||
margin-bottom: 12px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 6px;
|
||||
transition: all 0.3s ease;
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.distributor-item:hover {
|
||||
background: #f8f9fa;
|
||||
transform: translateX(2px);
|
||||
border-color: #1890ff;
|
||||
}
|
||||
|
||||
.distributor-rank {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.distributor-rank.top1 {
|
||||
background: linear-gradient(135deg, #FFD700, #FFA500);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.distributor-rank.top2 {
|
||||
background: linear-gradient(135deg, #C0C0C0, #808080);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.distributor-rank.top3 {
|
||||
background: linear-gradient(135deg, #CD7F32, #8B4513);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.distributor-rank.other {
|
||||
background: #dee2e6;
|
||||
color: #495057;
|
||||
}
|
||||
|
||||
.distributor-info {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.distributor-name {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.distributor-level {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 12px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.level-elite {
|
||||
background: linear-gradient(135deg, #FFD700, #FFA500);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.level-senior {
|
||||
background: linear-gradient(135deg, #C0C0C0, #808080);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.level-normal {
|
||||
background: #e9ecef;
|
||||
color: #495057;
|
||||
}
|
||||
|
||||
.distributor-meta {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.distributor-stats {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.distributor-value {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.distributor-label {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.roi-card {
|
||||
background: linear-gradient(135deg, #1890ff 0%, #40a9ff 100%);
|
||||
color: white;
|
||||
padding: 24px;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.roi-card h3 {
|
||||
font-size: 18px;
|
||||
margin-bottom: 20px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.roi-value {
|
||||
font-size: 64px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.roi-label {
|
||||
font-size: 14px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.roi-formula {
|
||||
margin-top: 20px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid rgba(255,255,255,0.3);
|
||||
font-size: 13px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">🎯 品牌分销全景分析</h1>
|
||||
<p class="page-subtitle">全方位监控分销推广效果与分销商效能 · 数据更新时间:2024-01-15 10:30</p>
|
||||
</div>
|
||||
|
||||
<h2 class="section-title">📊 分销商团队数据</h2>
|
||||
<div class="stats-section">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-item">
|
||||
<div class="icon">👥</div>
|
||||
<h3>品牌分销商总数</h3>
|
||||
<div class="value">1,247</div>
|
||||
<div class="sub-value">
|
||||
本月新增 <span class="trend up">+158</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">⭐</div>
|
||||
<h3>精英分销商</h3>
|
||||
<div class="value">89</div>
|
||||
<div class="sub-value">占比 7.1%</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">🏅</div>
|
||||
<h3>高级分销商</h3>
|
||||
<div class="value">312</div>
|
||||
<div class="sub-value">占比 25.0%</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">🎖️</div>
|
||||
<h3>普通分销商</h3>
|
||||
<div class="value">846</div>
|
||||
<div class="sub-value">占比 67.9%</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">🔥</div>
|
||||
<h3>活跃分销商</h3>
|
||||
<div class="value">892</div>
|
||||
<div class="sub-value">活跃率 71.5% <span class="trend up">+5.2%</span></div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">📈</div>
|
||||
<h3>本月流失分销商</h3>
|
||||
<div class="value">23</div>
|
||||
<div class="sub-value">流失率 1.8% <span class="trend down">-0.3%</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-section">
|
||||
<div class="chart-card">
|
||||
<h2><span class="icon">📊</span>分销商等级分布</h2>
|
||||
<div class="chart-container small" id="levelChart"></div>
|
||||
</div>
|
||||
<div class="chart-card">
|
||||
<h2><span class="icon">📈</span>分销商招募趋势(近6个月)</h2>
|
||||
<div class="chart-container small" id="recruitChart"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 class="section-title">💰 分销业绩数据</h2>
|
||||
<div class="stats-section">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-item">
|
||||
<div class="icon">📦</div>
|
||||
<h3>分销订单总量</h3>
|
||||
<div class="value">5,682</div>
|
||||
<div class="sub-value">
|
||||
占总订单 44.2% <span class="trend up">+3.8%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">💎</div>
|
||||
<h3>分销GMV贡献</h3>
|
||||
<div class="value">¥378万</div>
|
||||
<div class="sub-value">
|
||||
占总GMV 44.1% <span class="trend up">+4.2%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">👤</div>
|
||||
<h3>人均分销订单</h3>
|
||||
<div class="value">6.4</div>
|
||||
<div class="sub-value">单/分销商 <span class="trend up">+0.8</span></div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">💵</div>
|
||||
<h3>人均分销金额</h3>
|
||||
<div class="value">¥4,269</div>
|
||||
<div class="sub-value">元/分销商 <span class="trend up">+512</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-section">
|
||||
<div class="chart-card">
|
||||
<h2><span class="icon">🔄</span>分销订单 vs 自然订单占比</h2>
|
||||
<div class="chart-container small" id="orderTypeChart"></div>
|
||||
</div>
|
||||
<div class="chart-card roi-card">
|
||||
<h3>🎯 分销ROI分析</h3>
|
||||
<div class="roi-value">285%</div>
|
||||
<div class="roi-label">投资回报率</div>
|
||||
<div class="roi-formula">
|
||||
分销收益:¥378万 / 佣金成本:¥132.6万 = 2.85
|
||||
</div>
|
||||
<div style="margin-top: 15px; font-size: 13px;">
|
||||
<div>✓ 分销带来收益:¥378万</div>
|
||||
<div>✓ 分销佣金支出:¥132.6万</div>
|
||||
<div>✓ 净收益:¥245.4万</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 class="section-title">🏆 分销商效能分析</h2>
|
||||
|
||||
<div class="chart-section">
|
||||
<div class="chart-card">
|
||||
<h2><span class="icon">👑</span>业绩TOP10分销商排行榜</h2>
|
||||
<ul class="distributor-list">
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank top1">1</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
张晓明
|
||||
<span class="distributor-level level-elite">精英分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:128人 · 本月订单:356单 · 加入:2023-03
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥45.8万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank top2">2</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
李芳
|
||||
<span class="distributor-level level-elite">精英分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:96人 · 本月订单:289单 · 加入:2023-05
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥38.2万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank top3">3</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
王建国
|
||||
<span class="distributor-level level-elite">精英分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:82人 · 本月订单:245单 · 加入:2023-06
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥32.6万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">4</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
刘静
|
||||
<span class="distributor-level level-senior">高级分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:65人 · 本月订单:198单 · 加入:2023-07
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥28.4万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">5</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
陈伟
|
||||
<span class="distributor-level level-senior">高级分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:58人 · 本月订单:176单 · 加入:2023-08
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥24.7万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">6</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
赵敏
|
||||
<span class="distributor-level level-senior">高级分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:48人 · 本月订单:152单 · 加入:2023-09
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥21.3万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">7</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
周杰
|
||||
<span class="distributor-level level-senior">高级分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:42人 · 本月订单:134单 · 加入:2023-10
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥18.9万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">8</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
孙丽
|
||||
<span class="distributor-level level-normal">普通分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:35人 · 本月订单:118单 · 加入:2023-11
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥16.2万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">9</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
郑强
|
||||
<span class="distributor-level level-normal">普通分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:28人 · 本月订单:95单 · 加入:2023-12
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥13.8万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="distributor-item">
|
||||
<div class="distributor-rank other">10</div>
|
||||
<div class="distributor-info">
|
||||
<div class="distributor-name">
|
||||
吴悠
|
||||
<span class="distributor-level level-normal">普通分销商</span>
|
||||
</div>
|
||||
<div class="distributor-meta">
|
||||
团队规模:22人 · 本月订单:82单 · 加入:2024-01
|
||||
</div>
|
||||
</div>
|
||||
<div class="distributor-stats">
|
||||
<div class="distributor-value">¥11.6万</div>
|
||||
<div class="distributor-label">本月业绩</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<h2><span class="icon">📊</span>分销商层级业绩对比</h2>
|
||||
<div class="chart-container" id="levelPerformanceChart"></div>
|
||||
|
||||
<h2 style="margin-top: 30px;"><span class="icon">🌳</span>团队裂变效果分析</h2>
|
||||
<div class="chart-container" id="teamGrowthChart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 分销商等级分布饼图
|
||||
const levelChart = echarts.init(document.getElementById('levelChart'));
|
||||
const levelOption = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c}人 ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
right: '10%',
|
||||
top: 'center'
|
||||
},
|
||||
series: [{
|
||||
name: '分销商等级',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
center: ['35%', '50%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
formatter: '{b}\n{c}人'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{ value: 89, name: '精英分销商', itemStyle: { color: '#FFD700' } },
|
||||
{ value: 312, name: '高级分销商', itemStyle: { color: '#C0C0C0' } },
|
||||
{ value: 846, name: '普通分销商', itemStyle: { color: '#CD7F32' } }
|
||||
]
|
||||
}]
|
||||
};
|
||||
levelChart.setOption(levelOption);
|
||||
|
||||
// 分销商招募趋势折线图
|
||||
const recruitChart = echarts.init(document.getElementById('recruitChart'));
|
||||
const recruitOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['新增分销商', '流失分销商'],
|
||||
top: 10
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['8月', '9月', '10月', '11月', '12月', '1月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: '人数'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '新增分销商',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
data: [98, 112, 135, 142, 156, 158],
|
||||
itemStyle: { color: '#5cb85c' },
|
||||
areaStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: 'rgba(92, 184, 92, 0.3)' },
|
||||
{ offset: 1, color: 'rgba(92, 184, 92, 0.05)' }
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '流失分销商',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
data: [15, 18, 22, 19, 25, 23],
|
||||
itemStyle: { color: '#d9534f' },
|
||||
areaStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: 'rgba(217, 83, 79, 0.3)' },
|
||||
{ offset: 1, color: 'rgba(217, 83, 79, 0.05)' }
|
||||
])
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
recruitChart.setOption(recruitOption);
|
||||
|
||||
// 订单类型占比饼图
|
||||
const orderTypeChart = echarts.init(document.getElementById('orderTypeChart'));
|
||||
const orderTypeOption = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c}单 ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
right: '10%',
|
||||
top: 'center'
|
||||
},
|
||||
series: [{
|
||||
name: '订单类型',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
center: ['35%', '50%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
formatter: '{b}\n{c}单\n({d}%)'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: 5682,
|
||||
name: '分销订单',
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#f093fb' },
|
||||
{ offset: 1, color: '#f5576c' }
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
value: 7165,
|
||||
name: '自然订单',
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#4facfe' },
|
||||
{ offset: 1, color: '#00f2fe' }
|
||||
])
|
||||
}
|
||||
}
|
||||
]
|
||||
}]
|
||||
};
|
||||
orderTypeChart.setOption(orderTypeOption);
|
||||
|
||||
// 分销商层级业绩对比柱状图
|
||||
const levelPerformanceChart = echarts.init(document.getElementById('levelPerformanceChart'));
|
||||
const levelPerformanceOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
legend: {
|
||||
data: ['人均订单', '人均GMV(千元)'],
|
||||
top: 10
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['普通分销商', '高级分销商', '精英分销商']
|
||||
},
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
name: '订单数(单)',
|
||||
position: 'left'
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name: 'GMV(千元)',
|
||||
position: 'right'
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '人均订单',
|
||||
type: 'bar',
|
||||
data: [4.2, 8.5, 15.3],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#f093fb' },
|
||||
{ offset: 1, color: '#f5576c' }
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '人均GMV(千元)',
|
||||
type: 'bar',
|
||||
yAxisIndex: 1,
|
||||
data: [2.8, 6.2, 12.5],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#4facfe' },
|
||||
{ offset: 1, color: '#00f2fe' }
|
||||
])
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
levelPerformanceChart.setOption(levelPerformanceOption);
|
||||
|
||||
// 团队裂变效果分析
|
||||
const teamGrowthChart = echarts.init(document.getElementById('teamGrowthChart'));
|
||||
const teamGrowthOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
legend: {
|
||||
data: ['直接下级', '间接下级'],
|
||||
top: 10
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['TOP1', 'TOP2', 'TOP3', 'TOP4', 'TOP5', 'TOP6', 'TOP7', 'TOP8', 'TOP9', 'TOP10']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: '团队人数'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '直接下级',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
data: [35, 28, 24, 19, 17, 14, 12, 10, 8, 6],
|
||||
itemStyle: { color: '#5cb85c' }
|
||||
},
|
||||
{
|
||||
name: '间接下级',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
data: [93, 68, 58, 46, 41, 34, 30, 25, 20, 16],
|
||||
itemStyle: { color: '#5bc0de' }
|
||||
}
|
||||
]
|
||||
};
|
||||
teamGrowthChart.setOption(teamGrowthOption);
|
||||
|
||||
// 响应式
|
||||
window.addEventListener('resize', function() {
|
||||
levelChart.resize();
|
||||
recruitChart.resize();
|
||||
orderTypeChart.resize();
|
||||
levelPerformanceChart.resize();
|
||||
teamGrowthChart.resize();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,777 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>品牌爆款商品榜 - 品牌数据中心</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
|
||||
'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
background: #f5f5f5;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
background: white;
|
||||
padding: 16px 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #262626;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-subtitle {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.stats-section {
|
||||
background: white;
|
||||
padding: 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.stats-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border: 1px solid #f0f0f0;
|
||||
border-radius: 8px;
|
||||
background: #fafafa;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.stat-item:hover {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.stat-item .icon {
|
||||
font-size: 24px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.stat-item h3 {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
margin-bottom: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.stat-item .value {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.stat-item .sub-value {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.chart-section {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.chart-card {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
padding: 24px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.chart-card h2 {
|
||||
font-size: 20px;
|
||||
color: #262626;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.chart-card h2 .icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.product-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.product-card {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.product-card:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||
border-color: #1890ff;
|
||||
}
|
||||
|
||||
.product-rank {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
z-index: 10;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.product-rank.top1 {
|
||||
background: linear-gradient(135deg, #FFD700, #FFA500);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.product-rank.top2 {
|
||||
background: linear-gradient(135deg, #C0C0C0, #808080);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.product-rank.top3 {
|
||||
background: linear-gradient(135deg, #CD7F32, #8B4513);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.product-rank.other {
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #495057;
|
||||
border: 2px solid #dee2e6;
|
||||
}
|
||||
|
||||
.product-image {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
object-fit: cover;
|
||||
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
||||
}
|
||||
|
||||
.product-info {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.product-name {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 8px;
|
||||
height: 40px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.product-stats {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.product-price {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #e74c3c;
|
||||
}
|
||||
|
||||
.product-sales {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.product-meta {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-top: 8px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.product-rating {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 12px;
|
||||
color: #f39c12;
|
||||
}
|
||||
|
||||
.product-rating .stars {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.product-store {
|
||||
font-size: 11px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: 12px;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.badge.hot {
|
||||
background: linear-gradient(135deg, #ff6b6b, #ee5a6f);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.badge.new {
|
||||
background: linear-gradient(135deg, #4facfe, #00f2fe);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.section-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.filter-tags {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.filter-tag {
|
||||
padding: 6px 16px;
|
||||
border-radius: 20px;
|
||||
font-size: 13px;
|
||||
background: #f8f9fa;
|
||||
color: #666;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
.filter-tag:hover {
|
||||
background: #e9ecef;
|
||||
}
|
||||
|
||||
.filter-tag.active {
|
||||
background: #1890ff;
|
||||
color: white;
|
||||
border-color: #1890ff;
|
||||
}
|
||||
|
||||
.chart-container {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">🔥 品牌爆款商品榜</h1>
|
||||
<p class="page-subtitle">跨所有连锁单位的商品表现排行 · 数据更新时间:2024-01-15 10:30</p>
|
||||
</div>
|
||||
|
||||
<div class="stats-section">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-item">
|
||||
<div class="icon">📦</div>
|
||||
<h3>品牌在售商品总数</h3>
|
||||
<div class="value">2,847</div>
|
||||
<div class="sub-value">覆盖28家连锁单位</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">🔥</div>
|
||||
<h3>本月爆款商品数</h3>
|
||||
<div class="value">156</div>
|
||||
<div class="sub-value">销量≥100件的商品</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">⭐</div>
|
||||
<h3>高评分商品数</h3>
|
||||
<div class="value">1,243</div>
|
||||
<div class="sub-value">评分≥4.5分的商品</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="icon">💎</div>
|
||||
<h3>TOP10商品贡献率</h3>
|
||||
<div class="value">32.5%</div>
|
||||
<div class="sub-value">占品牌总销售额</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<div class="section-header">
|
||||
<h2><span class="icon">🏆</span>销量TOP10商品</h2>
|
||||
<div class="filter-tags">
|
||||
<div class="filter-tag active">本月</div>
|
||||
<div class="filter-tag">近3月</div>
|
||||
<div class="filter-tag">全部</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-grid">
|
||||
<div class="product-card">
|
||||
<div class="product-rank top1">1</div>
|
||||
<img src="https://via.placeholder.com/200x200/81C784/FFFFFF?text=%E6%96%B0%E9%B2%9C%E8%94%AC%E8%8F%9C" alt="新鲜蔬菜" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
有机生菜 新鲜采摘
|
||||
<span class="badge hot">热销</span>
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥8.9</div>
|
||||
<div class="product-sales">月销 3,256件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.9</span>
|
||||
</div>
|
||||
<div class="product-store">12家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank top2">2</div>
|
||||
<img src="https://via.placeholder.com/200x200/E57373/FFFFFF?text=%E7%8C%AA%E8%82%89" alt="猪肉" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
精选五花肉 500g
|
||||
<span class="badge hot">热销</span>
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥22.8</div>
|
||||
<div class="product-sales">月销 2,847件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.8</span>
|
||||
</div>
|
||||
<div class="product-store">15家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank top3">3</div>
|
||||
<img src="https://via.placeholder.com/200x200/64B5F6/FFFFFF?text=%E6%B5%B7%E9%B2%9C" alt="海鲜" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
新鲜活虾 大号 300g
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥35.9</div>
|
||||
<div class="product-sales">月销 2,134件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.9</span>
|
||||
</div>
|
||||
<div class="product-store">8家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">4</div>
|
||||
<img src="https://via.placeholder.com/200x200/FFD54F/FFFFFF?text=%E6%B0%B4%E6%9E%9C" alt="水果" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
进口苹果 烟台红富士
|
||||
<span class="badge new">新品</span>
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥12.9</div>
|
||||
<div class="product-sales">月销 1,956件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.7</span>
|
||||
</div>
|
||||
<div class="product-store">18家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">5</div>
|
||||
<img src="https://via.placeholder.com/200x200/BA68C8/FFFFFF?text=%E7%A6%BD%E8%9B%8B" alt="禽蛋" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
土鸡蛋 农家散养 10枚
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥18.8</div>
|
||||
<div class="product-sales">月销 1,782件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.8</span>
|
||||
</div>
|
||||
<div class="product-store">14家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">6</div>
|
||||
<img src="https://via.placeholder.com/200x200/4DB6AC/FFFFFF?text=%E8%B1%86%E5%88%B6%E5%93%81" alt="豆制品" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
手工豆腐 新鲜现做
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥6.9</div>
|
||||
<div class="product-sales">月销 1,623件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐</span>
|
||||
<span>4.6</span>
|
||||
</div>
|
||||
<div class="product-store">10家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">7</div>
|
||||
<img src="https://via.placeholder.com/200x200/FFB74D/FFFFFF?text=%E7%B2%AE%E6%B2%B9" alt="粮油" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
东北大米 5kg 2023新米
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥39.9</div>
|
||||
<div class="product-sales">月销 1,456件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.9</span>
|
||||
</div>
|
||||
<div class="product-store">16家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">8</div>
|
||||
<img src="https://via.placeholder.com/200x200/A1887F/FFFFFF?text=%E8%B0%83%E5%91%B3%E5%93%81" alt="调味品" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
品牌酱油 500ml 特级
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥15.9</div>
|
||||
<div class="product-sales">月销 1,287件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐</span>
|
||||
<span>4.5</span>
|
||||
</div>
|
||||
<div class="product-store">20家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">9</div>
|
||||
<img src="https://via.placeholder.com/200x200/90A4AE/FFFFFF?text=%E9%B1%BC%E7%B1%BB" alt="鱼类" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
活鲈鱼 新鲜现杀 500g
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥28.8</div>
|
||||
<div class="product-sales">月销 1,123件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.7</span>
|
||||
</div>
|
||||
<div class="product-store">9家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-card">
|
||||
<div class="product-rank other">10</div>
|
||||
<img src="https://via.placeholder.com/200x200/EF5350/FFFFFF?text=%E7%89%9B%E8%82%89" alt="牛肉" class="product-image">
|
||||
<div class="product-info">
|
||||
<div class="product-name">
|
||||
澳洲牛腩 精选切块 500g
|
||||
</div>
|
||||
<div class="product-stats">
|
||||
<div class="product-price">¥48.9</div>
|
||||
<div class="product-sales">月销 1,056件</div>
|
||||
</div>
|
||||
<div class="product-meta">
|
||||
<div class="product-rating">
|
||||
<span class="stars">⭐⭐⭐⭐⭐</span>
|
||||
<span>4.8</span>
|
||||
</div>
|
||||
<div class="product-store">11家在售</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-container" id="salesChart"></div>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<div class="section-header">
|
||||
<h2><span class="icon">💰</span>销售额TOP10商品</h2>
|
||||
</div>
|
||||
<div class="chart-container" id="revenueChart"></div>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<div class="section-header">
|
||||
<h2><span class="icon">⭐</span>好评率TOP10商品</h2>
|
||||
</div>
|
||||
<div class="chart-container" id="ratingChart"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 销量TOP10柱状图
|
||||
const salesChart = echarts.init(document.getElementById('salesChart'));
|
||||
const salesOption = {
|
||||
title: {
|
||||
text: '本月销量TOP10趋势图',
|
||||
left: 'center'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['有机生菜', '五花肉', '活虾', '苹果', '土鸡蛋', '豆腐', '大米', '酱油', '鲈鱼', '牛腩'],
|
||||
axisLabel: {
|
||||
rotate: 30,
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: '销量(件)'
|
||||
},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [3256, 2847, 2134, 1956, 1782, 1623, 1456, 1287, 1123, 1056],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#4facfe' },
|
||||
{ offset: 1, color: '#00f2fe' }
|
||||
]),
|
||||
borderRadius: [8, 8, 0, 0]
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
formatter: '{c}件'
|
||||
}
|
||||
}]
|
||||
};
|
||||
salesChart.setOption(salesOption);
|
||||
|
||||
// 销售额TOP10柱状图
|
||||
const revenueChart = echarts.init(document.getElementById('revenueChart'));
|
||||
const revenueOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '销售额(万元)'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['有机生菜', '活虾', '澳洲牛腩', '五花肉', '大米', '鲈鱼', '苹果', '土鸡蛋', '酱油', '豆腐'].reverse(),
|
||||
axisLabel: {
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '销售额',
|
||||
type: 'bar',
|
||||
data: [2.9, 7.7, 5.2, 6.5, 5.8, 3.2, 2.5, 3.3, 2.0, 1.1].reverse(),
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
|
||||
{ offset: 0, color: '#fa709a' },
|
||||
{ offset: 1, color: '#fee140' }
|
||||
]),
|
||||
borderRadius: [0, 8, 8, 0]
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '¥{c}万'
|
||||
}
|
||||
}]
|
||||
};
|
||||
revenueChart.setOption(revenueOption);
|
||||
|
||||
// 好评率TOP10雷达图
|
||||
const ratingChart = echarts.init(document.getElementById('ratingChart'));
|
||||
const ratingOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['评分', '评价数'],
|
||||
top: 10
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['有机生菜', '活虾', '大米', '牛腩', '土鸡蛋', '鲈鱼', '五花肉', '苹果', '豆腐', '酱油'],
|
||||
axisLabel: {
|
||||
rotate: 30,
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
name: '评分',
|
||||
min: 0,
|
||||
max: 5,
|
||||
interval: 1
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name: '评价数',
|
||||
min: 0,
|
||||
max: 3000
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '评分',
|
||||
type: 'line',
|
||||
data: [4.9, 4.9, 4.9, 4.8, 4.8, 4.7, 4.8, 4.7, 4.6, 4.5],
|
||||
itemStyle: { color: '#FFD700' },
|
||||
lineStyle: { width: 3 },
|
||||
smooth: true,
|
||||
areaStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: 'rgba(255, 215, 0, 0.3)' },
|
||||
{ offset: 1, color: 'rgba(255, 215, 0, 0.05)' }
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '评价数',
|
||||
type: 'bar',
|
||||
yAxisIndex: 1,
|
||||
data: [2856, 1987, 1765, 1523, 1456, 1289, 2134, 1678, 1234, 1098],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{ offset: 0, color: '#4facfe' },
|
||||
{ offset: 1, color: '#00f2fe' }
|
||||
])
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
ratingChart.setOption(ratingOption);
|
||||
|
||||
// 响应式
|
||||
window.addEventListener('resize', function() {
|
||||
salesChart.resize();
|
||||
revenueChart.resize();
|
||||
ratingChart.resize();
|
||||
});
|
||||
|
||||
// 筛选标签交互
|
||||
document.querySelectorAll('.filter-tag').forEach(tag => {
|
||||
tag.addEventListener('click', function() {
|
||||
document.querySelectorAll('.filter-tag').forEach(t => t.classList.remove('active'));
|
||||
this.classList.add('active');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,550 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>连锁单位业绩排行榜 - 品牌数据中心</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
|
||||
'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
background: #f5f5f5;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
background: white;
|
||||
padding: 16px 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #262626;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-subtitle {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.stats-section {
|
||||
background: white;
|
||||
padding: 24px;
|
||||
margin-bottom: 16px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.stats-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border: 1px solid #f0f0f0;
|
||||
border-radius: 8px;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.stat-item:hover {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
transform: translateY(-2px);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.stat-item h3 {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
margin-bottom: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.stat-item .value {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.stat-item .label {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.chart-section {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
.chart-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-card {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
padding: 24px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.chart-card h2 {
|
||||
font-size: 20px;
|
||||
color: #262626;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.chart-container {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ranking-list {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.ranking-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 16px;
|
||||
margin-bottom: 12px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 6px;
|
||||
transition: all 0.3s ease;
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.ranking-item:hover {
|
||||
background: #f8f9fa;
|
||||
transform: translateX(2px);
|
||||
border-color: #1890ff;
|
||||
}
|
||||
|
||||
.ranking-number {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.ranking-number.top1 {
|
||||
background: linear-gradient(135deg, #FFD700, #FFA500);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.ranking-number.top2 {
|
||||
background: linear-gradient(135deg, #C0C0C0, #808080);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.ranking-number.top3 {
|
||||
background: linear-gradient(135deg, #CD7F32, #8B4513);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.ranking-number.other {
|
||||
background: #dee2e6;
|
||||
color: #495057;
|
||||
}
|
||||
|
||||
.ranking-info {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.ranking-name {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.ranking-location {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.ranking-value {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.ranking-unit {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.trend-badge {
|
||||
display: inline-block;
|
||||
padding: 4px 12px;
|
||||
border-radius: 20px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.trend-up {
|
||||
background: #d4edda;
|
||||
color: #155724;
|
||||
}
|
||||
|
||||
.trend-down {
|
||||
background: #f8d7da;
|
||||
color: #721c24;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
<h1 class="page-title">📊 连锁单位业绩排行榜</h1>
|
||||
<p class="page-subtitle">多维度对比连锁市场/店铺经营表现 · 数据更新时间:2024-01-15 10:30</p>
|
||||
</div>
|
||||
|
||||
<div class="stats-section">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-item">
|
||||
<h3>连锁单位总数</h3>
|
||||
<div class="value">28</div>
|
||||
<div class="label">家连锁市场/店铺</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<h3>本月总销售额</h3>
|
||||
<div class="value">¥856万</div>
|
||||
<div class="label">环比上月 +23.5%</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<h3>本月总订单量</h3>
|
||||
<div class="value">12,847</div>
|
||||
<div class="label">环比上月 +18.2%</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<h3>本月总客户数</h3>
|
||||
<div class="value">8,563</div>
|
||||
<div class="label">环比上月 +15.8%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-section">
|
||||
<div class="chart-card">
|
||||
<h2>🏆 销售额TOP10排行榜</h2>
|
||||
<ul class="ranking-list">
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number top1">1</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">朝阳菜市场(望京店)</div>
|
||||
<div class="ranking-location">📍 北京市朝阳区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥128.5万</span>
|
||||
<span class="trend-badge trend-up">↑ 32%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number top2">2</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">海淀菜市场(中关村店)</div>
|
||||
<div class="ranking-location">📍 北京市海淀区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥115.2万</span>
|
||||
<span class="trend-badge trend-up">↑ 28%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number top3">3</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">西城菜市场(金融街店)</div>
|
||||
<div class="ranking-location">📍 北京市西城区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥98.7万</span>
|
||||
<span class="trend-badge trend-up">↑ 15%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">4</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">东城菜市场(国贸店)</div>
|
||||
<div class="ranking-location">📍 北京市东城区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥87.3万</span>
|
||||
<span class="trend-badge trend-up">↑ 22%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">5</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">丰台菜市场(科技园店)</div>
|
||||
<div class="ranking-location">📍 北京市丰台区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥76.8万</span>
|
||||
<span class="trend-badge trend-up">↑ 18%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">6</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">石景山菜市场(万达店)</div>
|
||||
<div class="ranking-location">📍 北京市石景山区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥65.4万</span>
|
||||
<span class="trend-badge trend-up">↑ 12%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">7</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">通州菜市场(副中心店)</div>
|
||||
<div class="ranking-location">📍 北京市通州区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥58.9万</span>
|
||||
<span class="trend-badge trend-up">↑ 25%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">8</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">昌平菜市场(回龙观店)</div>
|
||||
<div class="ranking-location">📍 北京市昌平区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥52.3万</span>
|
||||
<span class="trend-badge trend-down">↓ 5%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">9</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">大兴菜市场(亦庄店)</div>
|
||||
<div class="ranking-location">📍 北京市大兴区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥48.6万</span>
|
||||
<span class="trend-badge trend-up">↑ 8%</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ranking-item">
|
||||
<div class="ranking-number other">10</div>
|
||||
<div class="ranking-info">
|
||||
<div class="ranking-name">顺义菜市场(空港店)</div>
|
||||
<div class="ranking-location">📍 北京市顺义区</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="ranking-value">¥42.1万</span>
|
||||
<span class="trend-badge trend-up">↑ 10%</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<h2>📦 订单量TOP10排行榜</h2>
|
||||
<div class="chart-container" id="orderChart"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chart-section">
|
||||
<div class="chart-card">
|
||||
<h2>👥 客户量TOP10排行榜</h2>
|
||||
<div class="chart-container" id="customerChart"></div>
|
||||
</div>
|
||||
|
||||
<div class="chart-card">
|
||||
<h2>📈 增长率TOP10排行榜</h2>
|
||||
<div class="chart-container" id="growthChart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 订单量排行榜
|
||||
const orderChart = echarts.init(document.getElementById('orderChart'));
|
||||
const orderOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '订单量'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['顺义(空港)', '大兴(亦庄)', '昌平(回龙观)', '通州(副中心)', '石景山(万达)',
|
||||
'丰台(科技园)', '东城(国贸)', '西城(金融街)', '海淀(中关村)', '朝阳(望京)'],
|
||||
axisLabel: {
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '订单量',
|
||||
type: 'bar',
|
||||
data: [582, 635, 698, 758, 823, 945, 1067, 1235, 1456, 1689],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
|
||||
{ offset: 0, color: '#667eea' },
|
||||
{ offset: 1, color: '#764ba2' }
|
||||
])
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '{c}单'
|
||||
}
|
||||
}]
|
||||
};
|
||||
orderChart.setOption(orderOption);
|
||||
|
||||
// 客户量排行榜
|
||||
const customerChart = echarts.init(document.getElementById('customerChart'));
|
||||
const customerOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '客户数'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['顺义(空港)', '大兴(亦庄)', '昌平(回龙观)', '通州(副中心)', '石景山(万达)',
|
||||
'丰台(科技园)', '东城(国贸)', '西城(金融街)', '海淀(中关村)', '朝阳(望京)'],
|
||||
axisLabel: {
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '客户数',
|
||||
type: 'bar',
|
||||
data: [456, 512, 578, 623, 689, 756, 834, 923, 1089, 1267],
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
|
||||
{ offset: 0, color: '#f093fb' },
|
||||
{ offset: 1, color: '#f5576c' }
|
||||
])
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '{c}人'
|
||||
}
|
||||
}]
|
||||
};
|
||||
customerChart.setOption(customerOption);
|
||||
|
||||
// 增长率排行榜
|
||||
const growthChart = echarts.init(document.getElementById('growthChart'));
|
||||
const growthOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' }
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '环比增长率',
|
||||
axisLabel: {
|
||||
formatter: '{value}%'
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['石景山(万达)', '西城(金融街)', '大兴(亦庄)', '顺义(空港)', '丰台(科技园)',
|
||||
'东城(国贸)', '通州(副中心)', '海淀(中关村)', '朝阳(望京)', '昌平(天通苑)'],
|
||||
axisLabel: {
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '增长率',
|
||||
type: 'bar',
|
||||
data: [12, 15, 18, 22, 25, 28, 32, 35, 38, 45],
|
||||
itemStyle: {
|
||||
color: function(params) {
|
||||
const colors = [
|
||||
new echarts.graphic.LinearGradient(0, 0, 1, 0, [
|
||||
{ offset: 0, color: '#4facfe' },
|
||||
{ offset: 1, color: '#00f2fe' }
|
||||
])
|
||||
];
|
||||
return colors[0];
|
||||
}
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '{c}%'
|
||||
}
|
||||
}]
|
||||
};
|
||||
growthChart.setOption(growthOption);
|
||||
|
||||
// 响应式
|
||||
window.addEventListener('resize', function() {
|
||||
orderChart.resize();
|
||||
customerChart.resize();
|
||||
growthChart.resize();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue