Files
stock-advisor/static/js/recommend.js
T

49 lines
1.9 KiB
JavaScript
Raw Normal View History

/* 荐股中心 */
let curRating = 'all';
async function load() {
try {
const d = await api('/api/recommend?rating=' + curRating + '&limit=80');
render(d.items);
} catch (e) {
$('#tb').innerHTML = '<tr><td colspan="10" class="empty">加载失败:' + escapeHtml(e.message) + '</td></tr>';
}
}
function render(items) {
if (!items.length) { $('#tb').innerHTML = '<tr><td colspan="10" class="empty">该评级暂无股票</td></tr>'; return; }
$('#tb').innerHTML = items.map((it, i) => {
const sc = it.score;
return `<tr class="row-link" onclick="location.href='/stock/${it.code}'">
<td class="num">${i + 1}</td>
<td><b>${it.name}</b><div style="color:var(--muted);font-size:12px">${it.code} · ${escapeHtml(it.industry)}</div></td>
<td class="num">${it.close}</td>
<td class="num ${pctClass(it.change_pct)}">${fmtPct(it.change_pct)}</td>
<td class="num ${pctClass(it.chg_5d)}">${fmtPct(it.chg_5d)}</td>
<td><div class="score-wrap"><div class="score-ring" data-score="${sc.total}"></div></div></td>
<td><span class="tag tag-${sc.rating}">${sc.rating}</span></td>
<td style="white-space:normal">
<div style="width:130px">${scoreBars(sc.score_parts)}</div>
</td>
<td style="max-width:280px;white-space:normal;color:var(--text2)">${escapeHtml((it.reasons || []).join(''))}</td>
<td><button class="btn btn-primary" onclick="event.stopPropagation();analyze('${it.code}','${it.name}')">🤖 AI深度分析</button></td>
</tr>`;
}).join('');
$$('.score-ring', $('#tb')).forEach(el => scoreRing(el, el.dataset.score));
}
/* AI 深度分析:跳详情页并自动触发 */
function analyze(code, name) {
location.href = `/stock/${code}?analyze=1`;
}
$$('#ratingPills .pill').forEach(p => {
p.onclick = () => {
$$('#ratingPills .pill').forEach(x => x.classList.remove('active'));
p.classList.add('active');
curRating = p.dataset.r;
load();
};
});
load();