50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
/* 荐股中心 */
|
||
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();
|