551 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			551 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!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> |