市场页改版:三栏展示(行业+趋势信号+小果扫描),取代旧洞察/潜力股

This commit is contained in:
知微
2026-06-21 02:47:04 +08:00
parent 70514bf542
commit 4eb409b51a
+41 -25
View File
@@ -362,38 +362,54 @@ let marketRefreshInterval = null;
function refreshMarketData() { function refreshMarketData() {
const el = document.getElementById('tab-market'); const el = document.getElementById('tab-market');
if (!el || el.classList.contains('hidden')) return; if (!el || el.classList.contains('hidden')) return;
fetchJSON('/api/market').then(d => { Promise.all([
const sectors = d.sectors || []; fetchJSON('/api/market'),
const insights = d.insights || []; fetchJSON('/api/signals'),
const potentials = d.potential_stocks || []; ]).then(([mkt, signals]) => {
const sectors = mkt.sectors || [];
const sigs = signals || [];
const xiaoguo = sigs.filter(s => s.source === 'xiaoguo');
const trend = sigs.filter(s => s.source !== 'xiaoguo');
el.innerHTML = ` el.innerHTML = `
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4"> <div class="grid grid-cols-1 lg:grid-cols-3 gap-4 mb-4">
<div class="card p-4"> <div class="card p-4">
<h3 class="text-sm font-semibold mb-3">🏭 行业热点</h3> <h3 class="text-sm font-semibold mb-2">🏭 行业热点</h3>
${sectors.length ? sectors.map(s => ` ${sectors.length ? sectors.slice(0,8).map(s => `
<div class="flex justify-between items-center p-2 bg-slate-800/30 rounded-lg mb-1"> <div class="flex justify-between items-center p-1.5 ${s.change>=0?'':'bg-slate-800/20'} rounded mb-0.5">
<span class="text-sm">${s.name}</span> <span class="text-xs">${s.name}</span>
<span class="text-xs font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}"> <span class="text-xs font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}">${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(1)}%</span>
${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(2)}%
</span>
</div> </div>
`).join('') : '<div class="text-xs text-slate-500">暂无行业数据</div>'} `).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div> </div>
<div class="card p-4"> <div class="card p-4">
<h3 class="text-sm font-semibold mb-3">💡 知微洞察</h3> <h3 class="text-sm font-semibold mb-2">📡 趋势信号 (${trend.length})</h3>
${insights.length ? insights.map(i => ${trend.length ? trend.slice(0,6).map(s => `
`<div class="p-2 bg-slate-800/30 rounded-lg mb-1 text-xs">${i}</div>` <div class="p-1.5 bg-slate-800/30 rounded mb-0.5 text-xs">
).join('') : '<div class="text-xs text-slate-500">暂无洞察</div>'} <span class="font-semibold ${s.overall_sentiment==='利好'?'text-green-400':s.overall_sentiment==='利空'?'text-red-400':'text-slate-400'}">${s.overall_sentiment||'中性'}</span>
${s.sector} ${(s.summary||'').slice(0,60)}
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div>
<div class="card p-4">
<h3 class="text-sm font-semibold mb-2">🔍 小果扫描 (${xiaoguo.length})</h3>
${xiaoguo.length ? xiaoguo.slice(0,6).map(s => `
<div class="p-1.5 bg-slate-800/30 rounded mb-0.5 text-xs">
<span class="font-semibold ${s.overall_sentiment==='利好'?'text-green-400':s.overall_sentiment==='利空'?'text-red-400':'text-slate-400'}">${s.overall_sentiment||'中性'}</span>
${s.sector} ${(s.summary||'').slice(0,60)}
</div>
`).join('') : '<div class="text-xs text-slate-500">暂无</div>'}
</div> </div>
</div> </div>
<div class="card p-4 mt-4"> <div class="card p-4">
<h3 class="text-sm font-semibold mb-3">🔍 潜力股挖掘</h3> <h3 class="text-sm font-semibold mb-2">📋 全部板块排行(${sectors.length}</h3>
${potentials.length ? potentials.map(p => ` <div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 max-h-48 overflow-y-auto">
<div class="flex justify-between items-center p-2 bg-slate-800/30 rounded-lg mb-1"> ${sectors.map(s => `
<span class="text-sm">${p.name||p.code}</span> <div class="flex justify-between p-1 bg-slate-800/20 rounded text-xs">
<span class="text-xs text-slate-400">${p.reason||''}</span> <span>${s.name}</span>
</div> <span class="font-mono ${(s.change||0)>=0?'badge-up':'badge-down'}">${(s.change||0)>=0?'+':''}${(s.change||0).toFixed(1)}%</span>
`).join('') : '<div class="text-xs text-slate-500">暂无挖掘</div>'} </div>
`).join('')}
</div>
</div> </div>
`; `;
}); });