Files
vf_react/public/htmls/黄金.html
2025-12-05 13:29:18 +08:00

447 lines
31 KiB
HTML
Raw 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" data-theme="night">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>黄金概念深度投研报告</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdn.jsdelivr.net/npm/daisyui@4.10.1/dist/full.min.css" rel="stylesheet" type="text/css" />
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', 'Noto Sans SC', sans-serif;
background-color: #0a0a0f;
color: #e0e0e0;
overflow-x: hidden;
}
.glass-card {
background: rgba(20, 20, 30, 0.4);
backdrop-filter: blur(24px) saturate(150%);
-webkit-backdrop-filter: blur(24px) saturate(150%);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 1.5rem; /* 24px */
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
}
.bento-grid {
display: grid;
gap: 1rem;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.glow-text {
text-shadow: 0 0 8px rgba(255, 215, 0, 0.6), 0 0 16px rgba(255, 215, 0, 0.4);
}
.section-title {
font-size: 2.25rem;
font-weight: 700;
letter-spacing: -0.02em;
background: linear-gradient(90deg, #fefce8, #fcd34d, #eab308);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.diffuse-light-1 {
position: absolute;
top: -20%;
left: -20%;
width: 800px;
height: 800px;
background: radial-gradient(circle, rgba(253, 224, 71, 0.1) 0%, rgba(253, 224, 71, 0) 70%);
z-index: -1;
pointer-events: none;
}
.diffuse-light-2 {
position: absolute;
bottom: -30%;
right: -15%;
width: 1000px;
height: 1000px;
background: radial-gradient(circle, rgba(96, 165, 250, 0.08) 0%, rgba(96, 165, 250, 0) 70%);
z-index: -1;
pointer-events: none;
}
.table-header-sticky th {
position: sticky;
top: 0;
z-index: 10;
background-color: rgba(20, 20, 30, 0.8);
backdrop-filter: blur(10px);
}
</style>
</head>
<body class="relative min-h-screen">
<div class="diffuse-light-1"></div>
<div class="diffuse-light-2"></div>
<div class="container mx-auto p-4 md:p-8 space-y-12">
<!-- Header -->
<header class="text-center py-12">
<h1 class="text-5xl md:text-7xl font-bold tracking-tighter bg-clip-text text-transparent bg-gradient-to-br from-yellow-100 via-yellow-400 to-amber-600 glow-text mb-4">
黄金 (Gold)
</h1>
<p class="text-xl md:text-2xl text-slate-300">概念深度投研报告</p>
</header>
<!-- Insight Section -->
<section x-data="{ open: true }" class="space-y-8">
<div @click="open = !open" class="flex justify-between items-center cursor-pointer p-4">
<h2 class="section-title">核心投研 Insight</h2>
<svg :class="{'rotate-180': open}" class="w-6 h-6 text-yellow-400 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>
</div>
<div x-show="open" x-transition class="space-y-8">
<!-- Core Viewpoint Summary -->
<div class="glass-card p-6">
<h3 class="text-xl font-semibold text-yellow-300 mb-4">核心观点摘要</h3>
<p class="text-slate-300 leading-relaxed">黄金正处于一场由<strong class="text-yellow-200">结构性“去美元化”</strong><strong class="text-yellow-200">周期性“降息预期”</strong>共同驱动的宏观牛市之中。其核心驱动力已从传统的实际利率框架,扩展至全球货币体系重构的宏大叙事。当前,黄金价格已率先反应,但黄金矿业股的估值修复仍相对滞后,存在显著的预期差,构成了从“博弈金价”到“投资价值”的核心转换潜力,有望迎来盈利与估值的“戴维斯双击”。</p>
</div>
<!-- Bento Grid for Key Drivers -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<div class="glass-card p-6 lg:col-span-2">
<h4 class="font-bold text-lg text-amber-200 mb-2">结构性驱动:美元信用削弱与货币体系重构</h4>
<p class="text-sm text-slate-400">全球央行连续三年购金超1000吨美元在全球外储占比降至60%以下。美国国债规模激增、美联储独立性受威胁等事件,长期化了“美元信用削弱”的叙事,迫使非美央行加速增持黄金作为价值储备,定价权向主权国家战略配置盘转移。</p>
</div>
<div class="glass-card p-6">
<h4 class="font-bold text-lg text-amber-200 mb-2">周期性驱动:降息与实际利率下行</h4>
<p class="text-sm text-slate-400">市场普遍预期美国经济将走向“硬着陆”或“类滞胀”,迫使美联储开启降息周期。实际利率下行将降低持有黄金的机会成本,而流动性外溢则会推升大宗商品价格。</p>
</div>
<div class="glass-card p-6">
<h4 class="font-bold text-lg text-amber-200 mb-2">避险驱动:地缘政治常态化</h4>
<p class="text-sm text-slate-400">地缘政治风险频发,叠加贸易保护主义抬头,显著提升了黄金作为终极避险资产的配置价值。</p>
</div>
<div class="glass-card p-6 lg:col-span-2">
<h4 class="font-bold text-lg text-red-300 mb-2">核心预期差:价格与估值的鸿沟</h4>
<p class="text-sm text-slate-400">市场最大的预期差在于黄金价格与黄金矿业股估值之间的巨大鸿沟。黄金(商品)定价已计入货币属性和避险溢价;但黄金股(公司)定价仍沿用“周期股”框架,对金价中枢系统性抬升带来的盈利确定性和成长性<strong class="text-red-200">定价不足</strong>。龙头矿企的内生成长性被忽略估值体系应从PE转向PEG这是“戴维斯双击”的逻辑起点。</p>
</div>
</div>
<!-- Price Chart -->
<div class="glass-card p-6">
<h3 class="text-xl font-semibold text-yellow-300 mb-4">黄金价格走势2024-2025</h3>
<div id="priceChart" style="width: 100%; height: 400px;"></div>
</div>
<!-- Future Path -->
<div class="glass-card p-6">
<h3 class="text-xl font-semibold text-yellow-300 mb-4">未来发展路径</h3>
<ul class="steps steps-vertical lg:steps-horizontal w-full">
<li class="step step-warning">
<div class="text-left p-2">
<h4 class="font-bold">第一阶段 (已发生)</h4>
<p class="text-xs">价格发现期:宏观叙事驱动,金价脱离传统锚,不断创历史新高。</p>
</div>
</li>
<li class="step step-warning">
<div class="text-left p-2">
<h4 class="font-bold">第二阶段 (正在进行)</h4>
<p class="text-xs">价值传导期:高金价利润传导至矿企业绩,黄金股开启估值修复与盈利驱动的“戴维斯双击”行情。</p>
</div>
</li>
<li class="step">
<div class="text-left p-2">
<h4 class="font-bold">第三阶段 (未来展望)</h4>
<p class="text-xs">产业重塑期:上游资源并购整合,下游珠宝从渠道驱动转向品牌、设计驱动。</p>
</div>
</li>
</ul>
</div>
<!-- Risks -->
<div class="glass-card p-6 border-l-4 border-red-500">
<h3 class="text-xl font-semibold text-red-300 mb-4">潜在风险与挑战</h3>
<ul class="list-disc list-inside space-y-2 text-slate-300">
<li><strong class="text-red-200">宏观政策风险:</strong> 美联储政策超预期鹰派,降息延后或重启加息,将动摇周期性上涨逻辑。</li>
<li><strong class="text-red-200">商业化风险:</strong> 下游消费端因高价导致需求萎缩,“买黄金变卖黄金”现象影响珠宝零售商业绩。</li>
<li><strong class="text-red-200">运营风险:</strong> 矿山生产具有不确定性,安全事故、项目投产不及预期、成本超预期等均可能导致业绩无法兑现。</li>
<li><strong class="text-red-200">预期兑现风险:</strong> 远期产量规划如山东黄金80吨是支撑成长性估值的关键实现过程充满不确定性需持续跟踪验证。</li>
</ul>
</div>
</div>
</section>
<!-- Supporting Data Tabs -->
<section x-data="{ tab: 'news' }" class="space-y-4">
<h2 class="section-title text-center">多维数据支撑</h2>
<div role="tablist" class="tabs tabs-boxed glass-card max-w-lg mx-auto">
<a role="tab" class="tab" :class="{'tab-active': tab === 'news'}" @click.prevent="tab = 'news'">新闻数据</a>
<a role="tab" class="tab" :class="{'tab-active': tab === 'roadshow'}" @click.prevent="tab = 'roadshow'">路演纪要</a>
<a role="tab" class="tab" :class="{'tab-active': tab === 'research'}" @click.prevent="tab = 'research'">研报精粹</a>
</div>
<div class="glass-card p-6 min-h-[300px]">
<!-- News Content -->
<div x-show="tab === 'news'" x-transition.opacity>
<h3 class="font-bold text-lg text-amber-200 mb-4">新闻数据摘要</h3>
<ul class="list-disc list-inside space-y-2 text-sm text-slate-300">
<li><strong>长期驱动力:</strong> 核心预判美国“硬着陆”,驱动力包括美元趋势贬值、美债危机风险、实际利率下行、流动性外溢。</li>
<li><strong>美元信用:</strong> 特朗普意图改革美联储威胁其独立性,“美元信用削弱叙事长期化”,加速非美央行增配黄金。</li>
<li><strong>价格预测:</strong> 东方有色看好金价突破5000美元/盎司瑞银集团上调目标价至3200美元/盎司。</li>
<li><strong>市场动态:</strong> 2024-2025年金价屡创新高现货黄金从2577美元/盎司一路飙升至突破4190美元/盎司。A股黄金股如四川黄金、西部黄金多次涨停。</li>
<li><strong>需求强劲:</strong> 世界黄金协会数据显示2024年黄金总需求达创纪录的4974吨央行连续第三年购金超1000吨。</li>
<li><strong>实体消费:</strong> 金价高企抑制消费“黄金赢了K线输了柜台”。但珠宝产业正从渠道驱动转向产品&品牌驱动。</li>
</ul>
</div>
<!-- Roadshow Content -->
<div x-show="tab === 'roadshow'" x-transition.opacity style="display: none;">
<h3 class="font-bold text-lg text-amber-200 mb-4">路演纪要摘要</h3>
<ul class="list-disc list-inside space-y-2 text-sm text-slate-300">
<li><strong>宏观逻辑:</strong> 市场对美联储降息预期升温是核心逻辑,叠加去美元化、地缘政治共同推动金价。</li>
<li><strong>价格目标:</strong> 主流机构目标价集中在3500-4000美元/盎司。</li>
<li><strong>市场结构:</strong> 央行购金成为主导力量金价抗跌性增强。COMEX与伦敦金价差扩大出现流动性紧张。</li>
<li><strong>股价与估值:</strong> 2024年曾现“黄金股与金价的极端分化”黄金股估值跌至十年熊市极限PE≤15倍</li>
<li><strong>投资窗口:</strong> 2025年上半年被视为黄金股“估值修复+周期行情”的叠加窗口,有望迎来系统性重估。</li>
<li><strong>重点公司:</strong> 多次提及山东黄金(成长性)、赤峰黄金(高弹性)、山金国际(低成本)、灵宝黄金(高性价比)。</li>
</ul>
</div>
<!-- Research Content -->
<div x-show="tab === 'research'" x-transition.opacity style="display: none;">
<h3 class="font-bold text-lg text-amber-200 mb-4">研报精粹摘要</h3>
<ul class="list-disc list-inside space-y-2 text-sm text-slate-300">
<li><strong>货币属性强化:</strong> 美联储降息预期、美元信用边际走弱、美国债务规模屡创新高,共同提升黄金作为信用货币替代品的内在价值。</li>
<li><strong>央行购金:</strong> 2023年央行购金达1037吨中国央行持续增持但占比仍低5.5%),新兴市场央行增持潜力巨大。黄金已超越欧元成为全球第二大储备资产。</li>
<li><strong>供给端约束:</strong> 全球金矿勘探预算减少,高品位矿床发现困难,品位下降和提取成本增加为金价提供长期支持。</li>
<li><strong>公司分析 - 山东黄金(600547):</strong> 资源储备丰富集团2489吨西岭金矿592吨等项目提供明确产量增长未来目标年产80-100吨。</li>
<li><strong>公司分析 - 中金黄金(600489):</strong> 黄金保有资源储量894.55吨,纱岭金矿项目将成为增储强力优势。</li>
<li><strong>公司分析 - 紫金黄金国际(2259.HK):</strong> 全球领先黄金开采公司2022-2024年产量复合年增长率达21.4%,增速远超同行。</li>
</ul>
</div>
</div>
</section>
<!-- Core Companies Section -->
<section class="space-y-8">
<h2 class="section-title text-center">核心标的池</h2>
<!-- Upstream Companies Chart & Table -->
<div class="glass-card p-6">
<h3 class="text-xl font-semibold text-yellow-300 mb-4">上游 · 黄金矿采资源储量对比 (吨)</h3>
<div id="reserveChart" style="width: 100%; height: 450px;"></div>
<div class="overflow-x-auto mt-6 max-h-[600px]">
<table class="table table-sm">
<thead class="table-header-sticky">
<tr>
<th>公司名称</th>
<th>代码</th>
<th>黄金资源量(吨)</th>
<th>核心逻辑/看点</th>
<th>数据来源时间</th>
</tr>
</thead>
<tbody>
<!-- Data injected by JS -->
</tbody>
</table>
</div>
</div>
<!-- Downstream Companies Chart & Table -->
<div class="glass-card p-6">
<h3 class="text-xl font-semibold text-yellow-300 mb-4">下游 · 黄金珠宝门店数量对比 (家)</h3>
<div id="storeChart" style="width: 100%; height: 450px;"></div>
<div class="overflow-x-auto mt-6 max-h-[600px]">
<table class="table table-sm">
<thead class="table-header-sticky">
<tr>
<th>公司名称</th>
<th>代码</th>
<th>门店数量(家)</th>
<th>核心逻辑/看点</th>
<th>IP/特色产品</th>
</tr>
</thead>
<tbody>
<!-- Data injected by JS -->
</tbody>
</table>
</div>
</div>
</section>
<!-- Footer -->
<footer class="text-center py-8">
<p class="text-sm text-slate-500">北京价值前沿科技有限公司 AI投研agent“价小前投研” 进行投研呈现</p>
<p class="text-xs text-slate-600 mt-1">本报告为AI合成数据所有信息仅供参考不构成任何投资建议投资需谨慎。</p>
</footer>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
// ECharts - Price Chart
var priceChartDom = document.getElementById('priceChart');
var priceChart = echarts.init(priceChartDom, 'dark');
var priceOption = {
backgroundColor: 'transparent',
tooltip: {
trigger: 'axis',
axisPointer: { type: 'cross' }
},
legend: {
data: ['现货黄金 (美元/盎司)'],
textStyle: { color: '#ccc' }
},
grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
xAxis: {
type: 'time',
boundaryGap: false,
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }
},
yAxis: {
type: 'value',
axisLabel: { formatter: '${value}' },
axisPointer: { snap: true },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } },
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }
},
visualMap: {
show: false,
dimension: 0,
pieces: [{
lte: new Date('2025-01-01').getTime(),
color: '#facc15'
}, {
gt: new Date('2025-01-01').getTime(),
lte: new Date('2025-06-01').getTime(),
color: '#fbbf24'
}, {
gt: new Date('2025-06-01').getTime(),
color: '#f59e0b'
}]
},
series: [{
name: '现货黄金 (美元/盎司)',
type: 'line',
smooth: true,
symbol: 'none',
lineStyle: {
width: 3
},
data: [
['2024-09-14', 2577.7],
['2024-09-21', 2621.88],
['2024-10-18', 2692.75],
['2025-03-28', 3072.94],
['2025-03-31', 3090],
['2025-04-10', 3095],
['2025-04-21', 3400],
['2025-09-09', 3640],
['2025-10-13', 4070],
['2025-10-15', 4190]
]
}]
};
priceChart.setOption(priceOption);
const stockData = { "黄金(250527)": { "028889AB-C0B9-46AD-9F5B-75992232E309.png": [ { "stock": "老凤祥", "reason": "门店合计5541家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "圣斗士星矢IP", "古法黄金": "“古法藏宝金”系列", "数据截至时间": "2025Q1" }, "stock_code": "600612" }, { "stock": "周大生", "reason": "门店合计4831家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "国家宝藏IP", "古法黄金": "融合古法黄金工艺", "数据截至时间": "2025Q1" }, "stock_code": "002867" }, { "stock": "豫园股份", "reason": "门店合计4634家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "《封神第二部》IP", "古法黄金": "有特色古法产品", "数据截至时间": "2024年底" }, "stock_code": "600655" }, { "stock": "中国黄金", "reason": "门店合计4149家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "国宝金等国家级IP", "古法黄金": "古法金龙鱼的异形金条", "数据截至时间": "2025Q1" }, "stock_code": "600916" }, { "stock": "潮宏基", "reason": "门店合计1505家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "哆啦A梦等", "古法黄金": "梵华等古法金产品", "数据截至时间": "2025Q1" }, "stock_code": "002345" }, { "stock": "明牌珠宝", "reason": "门店合计约1000家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "小马宝莉等", "古法黄金": "古法纹彩金系列", "数据截至时间": "2024年底", "备注": "制图节点涨幅大于10%" }, "stock_code": "002574" }, { "stock": "萃华珠宝", "reason": "门店合计476家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "故宫IP", "古法黄金": "“欢锁如意”古法工艺产品", "数据截至时间": "2024年底" }, "stock_code": "002731" }, { "stock": "莱绅通灵", "reason": "门店合计353家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "“王室IP”品牌", "古法黄金": "欧式古法黄金", "数据截至时间": "2025Q1", "备注": "制图节点涨幅大于10%" }, "stock_code": "603900" }, { "stock": "迪阿股份", "reason": "门店合计373家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "计划引入稀缺性IP", "古法黄金": "探索古法黄金", "数据截至时间": "2024年底" }, "stock_code": "301177" }, { "stock": "曼卡龙", "reason": "门店合计235家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "潮玩盲盒多联名IP", "古法黄金": "有古法黄金产品", "数据截至时间": "2024年底" }, "stock_code": "300945" }, { "stock": "菜百股份", "reason": "门店合计100家", "其他标签": { "类别": "黄金珠宝连锁品牌", "IP": "加强IP联名设计", "古法黄金": "古法黄金“菜百传世”", "数据截至时间": "2024年底" }, "stock_code": "605599" }, { "stock": "特力A", "reason": "门店合计4家", "其他标签": { "类别": "黄金珠宝连锁品牌", "数据截至时间": "2024年底", "备注": "制图节点涨幅大于10%" } }, { "stock": "深中华A", "reason": "无实体店", "其他标签": { "类别": "黄金珠宝连锁品牌", "数据截至时间": "2024年底" }, "stock_code": "000017" }, { "stock": "紫金矿业", "reason": "黄金资源量3972.53吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "601899" }, { "stock": "山东黄金", "reason": "黄金资源量2058.46吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "600547" }, { "stock": "中金黄金", "reason": "黄金资源量894.55吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "600489" }, { "stock": "白银有色", "reason": "黄金资源量812.31吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "601212" }, { "stock": "赤峰黄金", "reason": "黄金资源量424.36吨", "其他标签": { "类别": "金矿", "数据截至时间": "未核实", "备注": "制图节点涨幅大于10%" }, "stock_code": "600988" }, { "stock": "鹏欣资源", "reason": "黄金资源量450.8吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "600490" }, { "stock": "山金国际", "reason": "黄金资源量404.93吨", "其他标签": { "类别": "金矿", "数据截至时间": "2025Q1", "备注": "制图节点涨幅大于10%" }, "stock_code": "000975" }, { "stock": "恒邦股份", "reason": "黄金资源量150.38吨", "其他标签": { "类别": "金矿", "数据截至时间": "未核实" }, "stock_code": "002237" }, { "stock": "湖南黄金", "reason": "黄金资源量141.75吨", "其他标签": { "类别": "金矿", "数据截至时间": "未核实" }, "stock_code": "002155" }, { "stock": "*ST中润", "reason": "黄金资源量116.95吨", "其他标签": { "类别": "金矿", "数据截至时间": "2023年" } }, { "stock": "西部黄金", "reason": "黄金资源量110.48吨", "其他标签": { "类别": "金矿", "数据截至时间": "2025年5月" }, "stock_code": "601069" }, { "stock": "晓程科技", "reason": "黄金资源量50吨", "其他标签": { "类别": "金矿", "数据截至时间": "未核实" }, "stock_code": "300139" }, { "stock": "四川黄金", "reason": "黄金资源量29吨", "其他标签": { "类别": "金矿", "数据截至时间": "2023年10月" }, "stock_code": "001337" }, { "stock": "盛达资源", "reason": "黄金资源量17吨", "其他标签": { "类别": "金矿", "数据截至时间": "2024年底" }, "stock_code": "000603" } ] } };
const allStocks = stockData['黄金(250527)']['028889AB-C0B9-46AD-9F5B-75992232E309.png'];
const upstreamStocks = allStocks.filter(s => s['其他标签']['类别'] === '金矿').sort((a, b) => parseFloat(b.reason) - parseFloat(a.reason));
const downstreamStocks = allStocks.filter(s => s['其他标签']['类别'] === '黄金珠宝连锁品牌').sort((a, b) => parseFloat(b.reason) - parseFloat(a.reason));
const upstreamTbody = document.querySelector('#reserveChart + .overflow-x-auto table tbody');
upstreamStocks.forEach(stock => {
const row = document.createElement('tr');
row.className = 'hover:bg-gray-800/50 transition-colors';
row.innerHTML = `
<td class="font-semibold text-slate-200">${stock.stock}</td>
<td>${stock.stock_code ? `<a href="https://valuefrontier.cn/company?scode=${stock.stock_code}" target="_blank" class="text-blue-400 hover:text-blue-300">${stock.stock_code}</a>` : 'N/A'}</td>
<td class="font-mono text-amber-300">${parseFloat(stock.reason).toFixed(2)}</td>
<td class="text-xs text-slate-400">${stock.reason}</td>
<td class="text-xs text-slate-500">${stock['其他标签']['数据截至时间']}</td>
`;
upstreamTbody.appendChild(row);
});
const downstreamTbody = document.querySelector('#storeChart + .overflow-x-auto table tbody');
downstreamStocks.forEach(stock => {
const row = document.createElement('tr');
row.className = 'hover:bg-gray-800/50 transition-colors';
row.innerHTML = `
<td class="font-semibold text-slate-200">${stock.stock}</td>
<td>${stock.stock_code ? `<a href="https://valuefrontier.cn/company?scode=${stock.stock_code}" target="_blank" class="text-blue-400 hover:text-blue-300">${stock.stock_code}</a>` : 'N/A'}</td>
<td class="font-mono text-amber-300">${parseInt(stock.reason) || 'N/A'}</td>
<td class="text-xs text-slate-400">${stock.reason}</td>
<td class="text-xs text-slate-400">${stock['其他标签']['IP'] || ''} <br> ${stock['其他标签']['古法黄金'] || ''}</td>
`;
downstreamTbody.appendChild(row);
});
// ECharts - Reserve Chart
var reserveChartDom = document.getElementById('reserveChart');
var reserveChart = echarts.init(reserveChartDom, 'dark');
var reserveOption = {
backgroundColor: 'transparent',
tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } },
grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
xAxis: {
type: 'value',
boundaryGap: [0, 0.01],
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } }
},
yAxis: {
type: 'category',
data: upstreamStocks.map(s => s.stock).reverse(),
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }
},
series: [{
name: '黄金资源量(吨)',
type: 'bar',
data: upstreamStocks.map(s => parseFloat(s.reason)).reverse(),
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
{ offset: 0, color: '#ca8a04' },
{ offset: 1, color: '#fef08a' }
])
},
label: { show: true, position: 'right', color: '#fff' }
}]
};
reserveChart.setOption(reserveOption);
// ECharts - Store Chart
var storeChartDom = document.getElementById('storeChart');
var storeChart = echarts.init(storeChartDom, 'dark');
var storeOption = {
backgroundColor: 'transparent',
tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } },
grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
xAxis: {
type: 'category',
data: downstreamStocks.filter(s => parseInt(s.reason) > 0).map(s => s.stock),
axisLabel: { interval: 0, rotate: 30 },
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }
},
yAxis: {
type: 'value',
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } }
},
series: [{
name: '门店数量(家)',
type: 'bar',
data: downstreamStocks.filter(s => parseInt(s.reason) > 0).map(s => parseInt(s.reason)),
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#fcd34d' },
{ offset: 1, color: '#b45309' }
])
}
}]
};
storeChart.setOption(storeOption);
// Resize charts on window resize
window.addEventListener('resize', function () {
priceChart.resize();
reserveChart.resize();
storeChart.resize();
});
});
</script>
</body>
</html>