Files
vf_react/public/htmls/煤炭.html
2025-10-11 16:16:02 +08:00

423 lines
18 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>煤炭行业分析报告</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700;900&display=swap" rel="stylesheet" />
<!-- Font Awesome Icons -->
<script src="https://kit.fontawesome.com/1d2b6c4f81.js" crossorigin="anonymous"></script>
<!-- Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/daisyui@5" rel="stylesheet" type="text/css" />
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<!-- tsParticles -->
<script src="https://cdn.jsdelivr.net/npm/tsparticles@3/tsparticles.bundle.min.js"></script>
<style>
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #0f172a;
color: #e2e8f0;
}
.card-bg {
background: rgba(30, 41, 59, 0.7);
backdrop-filter: blur(10px);
border: 1px solid rgba(100, 116, 139, 0.3);
}
.table-row:hover {
background-color: rgba(51, 65, 85, 0.5);
}
#tsparticles {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: -1;
}
.highlight-text {
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
font-weight: 700;
}
.capacity-bar {
height: 8px;
border-radius: 4px;
background-color: rgba(100, 116, 139, 0.3);
overflow: hidden;
}
.capacity-fill {
height: 100%;
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
border-radius: 4px;
}
</style>
</head>
<body class="min-h-screen relative">
<div id="tsparticles"></div>
<div class="container mx-auto px-4 py-8 relative z-10">
<!-- 标题部分 -->
<div class="text-center mb-12">
<h1 class="text-4xl md:text-5xl font-bold mb-4 highlight-text">煤炭行业产能分析报告</h1>
<p class="text-lg text-slate-300 max-w-3xl mx-auto">
深度剖析中国煤炭行业产能布局,揭示核心企业生产现状与未来发展趋势
</p>
</div>
<!-- 行业洞察部分 -->
<div class="card-bg rounded-2xl p-6 mb-8 shadow-xl">
<div class="flex items-center mb-4">
<div class="w-1 h-6 bg-blue-500 mr-3"></div>
<h2 class="text-2xl font-bold text-white">行业洞察</h2>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">
<div class="bg-slate-800/50 rounded-xl p-5 border border-slate-700/50">
<div class="flex items-center mb-3">
<div class="p-2 bg-blue-500/20 rounded-lg mr-3">
<i class="fas fa-industry text-blue-400"></i>
</div>
<h3 class="text-lg font-semibold text-white">产能集中度</h3>
</div>
<p class="text-slate-300 text-sm">
头部五家企业中国神华、陕西煤业、兖矿能源、中煤能源、潞安环能占据行业主导地位合计产能超过8亿吨/年,占全国总产能的显著比例。
</p>
</div>
<div class="bg-slate-800/50 rounded-xl p-5 border border-slate-700/50">
<div class="flex items-center mb-3">
<div class="p-2 bg-purple-500/20 rounded-lg mr-3">
<i class="fas fa-chart-line text-purple-400"></i>
</div>
<h3 class="text-lg font-semibold text-white">区域分布</h3>
</div>
<p class="text-slate-300 text-sm">
山西、陕西、内蒙古、山东、安徽五大产区集中了全国主要煤炭产能,其中山西企业数量最多,陕西煤业单省产能领先。
</p>
</div>
<div class="bg-slate-800/50 rounded-xl p-5 border border-slate-700/50">
<div class="flex items-center mb-3">
<div class="p-2 bg-green-500/20 rounded-lg mr-3">
<i class="fas fa-hammer text-green-400"></i>
</div>
<h3 class="text-lg font-semibold text-white">扩张趋势</h3>
</div>
<p class="text-slate-300 text-sm">
头部企业积极扩张产能中国神华、陕西煤业、兖矿能源等均有在建产能预计未来2-3年内将逐步释放进一步提升市场集中度。
</p>
</div>
</div>
<div class="bg-gradient-to-r from-blue-900/30 to-purple-900/30 rounded-xl p-5 border border-slate-700/50">
<h3 class="text-lg font-semibold text-white mb-3">核心观点</h3>
<p class="text-slate-300">
煤炭行业正处于结构性优化阶段,产能向头部企业集中趋势明显。在能源保供政策背景下,大型煤炭企业凭借规模优势、资源禀赋和先进技术,将持续巩固市场地位。同时,行业正积极向绿色低碳转型,探索清洁高效利用路径,为长期可持续发展奠定基础。
</p>
</div>
</div>
<!-- 股票数据表格部分 -->
<div class="card-bg rounded-2xl p-6 shadow-xl">
<div class="flex items-center justify-between mb-6">
<div class="flex items-center">
<div class="w-1 h-6 bg-blue-500 mr-3"></div>
<h2 class="text-2xl font-bold text-white">企业产能数据</h2>
</div>
<div class="text-sm text-slate-400">
数据来源:煤炭行业表格
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="border-b border-slate-700">
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">企业名称</th>
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">地区</th>
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">2024年产量(万吨)</th>
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">核定产能(万吨)</th>
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">在建产能(万吨)</th>
<th class="py-3 px-4 text-left text-sm font-semibold text-slate-300">产能利用率</th>
</tr>
</thead>
<tbody id="stockTableBody">
<!-- 表格内容将通过JavaScript动态生成 -->
</tbody>
</table>
</div>
</div>
<!-- 数据可视化部分 -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-8 mt-8">
<div class="card-bg rounded-2xl p-6 shadow-xl">
<h3 class="text-xl font-bold text-white mb-4">区域产能分布</h3>
<canvas id="regionChart" height="300"></canvas>
</div>
<div class="card-bg rounded-2xl p-6 shadow-xl">
<h3 class="text-xl font-bold text-white mb-4">头部企业产量对比</h3>
<canvas id="topCompaniesChart" height="300"></canvas>
</div>
</div>
</div>
<script>
// 初始化粒子背景
tsParticles.load("tsparticles", {
particles: {
number: {
value: 80,
density: {
enable: true,
value_area: 800
}
},
color: {
value: "#3b82f6"
},
shape: {
type: "circle"
},
opacity: {
value: 0.5,
random: false
},
size: {
value: 3,
random: true
},
move: {
enable: true,
speed: 1,
direction: "none",
random: true,
straight: false,
out_mode: "out"
}
},
interactivity: {
events: {
onhover: {
enable: true,
mode: "repulse"
}
}
}
});
// 股票数据
const stockData = [
{'stock': '中国神华', 'region': '产量前五', '2024年产量(万吨)': '32710', '核定产能(万吨)': '35130', '在建产能(万吨)': '1600'},
{'stock': '陕西煤业', 'region': '产量前五/陕西', '2024年产量(万吨)': '17049', '核定产能(万吨)': '16200', '在建产能(万吨)': '2000'},
{'stock': '兖矿能源', 'region': '产量前五/山东', '2024年产量(万吨)': '14165', '核定产能(万吨)': '23329(含境外)', '在建产能(万吨)': '1180'},
{'stock': '中煤能源', 'region': '产量前五/安徽', '2024年产量(万吨)': '13757', '核定产能(万吨)': '17000', '在建产能(万吨)': '640'},
{'stock': '潞安环能', 'region': '产量前五/山西', '2024年产量(万吨)': '5728', '核定产能(万吨)': '5000', '在建产能(万吨)': '—'},
{'stock': '山西焦煤', 'region': '山西', '2024年产量(万吨)': '4480', '核定产能(万吨)': '4480', '在建产能(万吨)': '—'},
{'stock': '山煤国际', 'region': '山西', '2024年产量(万吨)': '3300', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '晋控煤业', 'region': '山西', '2024年产量(万吨)': '3450', '核定产能(万吨)': '3510', '在建产能(万吨)': '—'},
{'stock': '华阳股份', 'region': '山西', '2024年产量(万吨)': '3290', '核定产能(万吨)': '—', '在建产能(万吨)': '1000'},
{'stock': '兰花科创', 'region': '山西', '2024年产量(万吨)': '1390', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '新集能源', 'region': '安徽', '2024年产量(万吨)': '2152', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '淮北矿业', 'region': '安徽', '2024年产量(万吨)': '2055', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '恒源煤电', 'region': '安徽', '2024年产量(万吨)': '926', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '平煤股份', 'region': '河南', '2024年产量(万吨)': '2800', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '大有能源', 'region': '河南', '2024年产量(万吨)': '968', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '郑州煤电', 'region': '河南', '2024年产量(万吨)': '684', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '电投能源', 'region': '内蒙', '2024年产量(万吨)': '4600', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '冀中能源', 'region': '河北', '2024年产量(万吨)': '2700', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '昊华能源', 'region': '北京', '2024年产量(万吨)': '1900', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '上海能源', 'region': '上海', '2024年产量(万吨)': '1800', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '盘江股份', 'region': '贵州', '2024年产量(万吨)': '1300', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '辽宁能源', 'region': '辽宁', '2024年产量(万吨)': '600', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '安源煤业', 'region': '江西', '2024年产量(万吨)': '161', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '宝丰能源', 'region': '焦炭', '2024年产量(万吨)': '704', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '陕西黑猫', 'region': '焦炭', '2024年产量(万吨)': '621-699', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '美锦能源', 'region': '焦炭', '2024年产量(万吨)': '58423年', '核定产能(万吨)': '715', '在建产能(万吨)': '—'},
{'stock': '开滦股份', 'region': '焦炭', '2024年产量(万吨)': '53623年', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '山西焦化', 'region': '焦炭', '2024年产量(万吨)': '38523年', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '安泰集团', 'region': '焦炭', '2024年产量(万吨)': '282', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '云煤能源', 'region': '焦炭', '2024年产量(万吨)': '240', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '金能科技', 'region': '焦炭', '2024年产量(万吨)': '205', '核定产能(万吨)': '—', '在建产能(万吨)': '—'},
{'stock': '宝泰隆', 'region': '焦炭', '2024年产量(万吨)': '150', '核定产能(万吨)': '—', '在建产能(万吨)': '—'}
];
// 生成表格内容
function generateTable() {
const tableBody = document.getElementById('stockTableBody');
tableBody.innerHTML = '';
stockData.forEach((stock, index) => {
const row = document.createElement('tr');
row.className = 'border-b border-slate-800 table-row';
// 计算产能利用率
let capacityUtilization = '—';
let capacityPercentage = 0;
if (stock['核定产能(万吨)'] && stock['核定产能(万吨)'] !== '—' && stock['2024年产量(万吨)'] && stock['2024年产量(万吨)'] !== '—') {
const capacity = parseFloat(stock['核定产能(万吨)'].toString().replace(/[^0-9.-]+/g,""));
const production = parseFloat(stock['2024年产量(万吨)'].toString().replace(/[^0-9.-]+/g,""));
if (!isNaN(capacity) && !isNaN(production) && capacity > 0) {
capacityPercentage = Math.min(100, Math.round((production / capacity) * 100));
capacityUtilization = capacityPercentage + '%';
}
}
row.innerHTML = `
<td class="py-4 px-4">
<div class="flex items-center">
<div class="w-8 h-8 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center mr-3">
<span class="text-white text-xs font-bold">${stock.stock.charAt(0)}</span>
</div>
<span class="font-medium text-white">${stock.stock}</span>
</div>
</td>
<td class="py-4 px-4 text-slate-300">${stock.region}</td>
<td class="py-4 px-4 text-slate-300">${stock['2024年产量(万吨)']}</td>
<td class="py-4 px-4 text-slate-300">${stock['核定产能(万吨)'] || '—'}</td>
<td class="py-4 px-4 text-slate-300">${stock['在建产能(万吨)'] || '—'}</td>
<td class="py-4 px-4">
<div class="flex items-center">
<div class="w-24 mr-3">
<div class="capacity-bar">
<div class="capacity-fill" style="width: ${capacityPercentage}%"></div>
</div>
</div>
<span class="text-slate-300 text-sm">${capacityUtilization}</span>
</div>
</td>
`;
tableBody.appendChild(row);
});
}
// 生成区域分布图表
function generateRegionChart() {
const ctx = document.getElementById('regionChart').getContext('2d');
// 统计各区域企业数量
const regionCount = {};
stockData.forEach(stock => {
const region = stock.region.split('/')[0];
regionCount[region] = (regionCount[region] || 0) + 1;
});
new Chart(ctx, {
type: 'doughnut',
data: {
labels: Object.keys(regionCount),
datasets: [{
data: Object.values(regionCount),
backgroundColor: [
'#3b82f6',
'#8b5cf6',
'#ec4899',
'#10b981',
'#f59e0b',
'#ef4444',
'#06b6d4',
'#8b5cf6'
],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'right',
labels: {
color: '#e2e8f0',
font: {
size: 12
}
}
}
}
}
});
}
// 生成头部企业产量对比图表
function generateTopCompaniesChart() {
const ctx = document.getElementById('topCompaniesChart').getContext('2d');
// 获取前5大企业
const topCompanies = stockData
.filter(stock => stock['2024年产量(万吨)'] && stock['2024年产量(万吨)'] !== '—')
.sort((a, b) => {
const aVal = parseFloat(a['2024年产量(万吨)'].toString().replace(/[^0-9.-]+/g,""));
const bVal = parseFloat(b['2024年产量(万吨)'].toString().replace(/[^0-9.-]+/g,""));
return bVal - aVal;
})
.slice(0, 5);
new Chart(ctx, {
type: 'bar',
data: {
labels: topCompanies.map(company => company.stock),
datasets: [{
label: '2024年产量(万吨)',
data: topCompanies.map(company => {
return parseFloat(company['2024年产量(万吨)'].toString().replace(/[^0-9.-]+/g,""));
}),
backgroundColor: [
'rgba(59, 130, 246, 0.8)',
'rgba(139, 92, 246, 0.8)',
'rgba(236, 72, 153, 0.8)',
'rgba(16, 185, 129, 0.8)',
'rgba(245, 158, 11, 0.8)'
],
borderWidth: 0,
borderRadius: 6
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
grid: {
color: 'rgba(100, 116, 139, 0.2)'
},
ticks: {
color: '#94a3b8'
}
},
x: {
grid: {
display: false
},
ticks: {
color: '#94a3b8'
}
}
},
plugins: {
legend: {
display: false
}
}
}
});
}
// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
generateTable();
generateRegionChart();
generateTopCompaniesChart();
});
</script>
</body>
</html>
```