diff --git a/frontend/src/pages/News.jsx b/frontend/src/pages/News.jsx index 2c16d42..4beeeef 100644 --- a/frontend/src/pages/News.jsx +++ b/frontend/src/pages/News.jsx @@ -109,11 +109,17 @@ export default function News() { let sortedData = data || [] if (activeTab === 'deal') { const categoryOrder = ['带4号', '带7号', '永恒号', '天马号', '天马王', '金山号', '金山王', '钻石号', '朦胧号', '朦胧王', '金马号', '金马王', '倒置号', '圆圆号'] + // 标准化分类名称(通货->带4号,无4->带7号) + const normalizeCat = (c) => { + if (c === '通货') return '带4号' + if (c === '无4') return '带7号' + return c + } sortedData = [...(data || [])].sort((a, b) => { const contentA = a.content || '' const contentB = b.content || '' - const catA = contentA.match(/分类:\s*(.+?)(?:\n|$)/)?.[1]?.trim() || a.category || '' - const catB = contentB.match(/分类:\s*(.+?)(?:\n|$)/)?.[1]?.trim() || b.category || '' + const catA = normalizeCat(contentA.match(/分类:\s*(.+?)(?:\n|$)/)?.[1]?.trim() || a.category || '') + const catB = normalizeCat(contentB.match(/分类:\s*(.+?)(?:\n|$)/)?.[1]?.trim() || b.category || '') const idxA = categoryOrder.indexOf(catA) const idxB = categoryOrder.indexOf(catB) return (idxA === -1 ? 999 : idxA) - (idxB === -1 ? 999 : idxB) @@ -590,9 +596,11 @@ export default function News() { const avg = prices.length > 0 ? Math.round(prices.reduce((a,b) => a+b, 0) / prices.length) : 0 return { cat, avg } }).filter(c => c.avg > 0) - // 按平均价格从低到高排序 + // 分类名称标准化并按固定顺序排序 catAvg.sort((a, b) => a.avg - b.avg) - const sortedCats = catAvg.map(c => c.cat) + const categoryOrder = ['带4号', '带7号', '永恒号', '天马号', '天马王', '金山号', '金山王', '钻石号', '朦胧号', '朦胧王', '金马号', '金马王', '倒置号', '圆圆号'] + const sortedCats = categoryOrder.filter(cat => catAvg.some(c => c.cat === cat)) + .concat(catAvg.filter(c => !categoryOrder.includes(c.cat)).map(c => c.cat)) return sortedCats.map(cat => { const rowData = packagings.map(pkg => calcAvg(pkg, cat))