From cb87906aa270607ac1175d5fa8ecb7cd90394d47 Mon Sep 17 00:00:00 2001 From: hzm <934585316@qq.com> Date: Sun, 15 Mar 2026 21:11:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E4=BC=B0?= =?UTF-8?q?=E5=80=BC=E6=B6=A8=E5=B9=85=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.jsx | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/app/page.jsx b/app/page.jsx index bf3745e..29362a1 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -622,8 +622,34 @@ export default function HomePage() { return filtered.sort((a, b) => { if (sortBy === 'yield') { - const valA = isNumber(a.estGszzl) ? a.estGszzl : (a.gszzl ?? a.zzl ?? 0); - const valB = isNumber(b.estGszzl) ? b.estGszzl : (b.gszzl ?? a.zzl ?? 0); + const getYieldValue = (fund) => { + // 与 estimateChangePercent 展示逻辑对齐: + // - noValuation 为 true 一律视为无“估值涨幅” + // - 有估值覆盖时用 estGszzl + // - 否则仅在 gszzl 为数字时使用 gszzl + if (fund.noValuation) { + return { value: 0, hasValue: false }; + } + if (fund.estPricedCoverage > 0.05) { + if (isNumber(fund.estGszzl)) { + return { value: fund.estGszzl, hasValue: true }; + } + return { value: 0, hasValue: false }; + } + if (isNumber(fund.gszzl)) { + return { value: Number(fund.gszzl), hasValue: true }; + } + return { value: 0, hasValue: false }; + }; + + const { value: valA, hasValue: hasA } = getYieldValue(a); + const { value: valB, hasValue: hasB } = getYieldValue(b); + + // 无“估值涨幅”展示值(界面为 `—`)的基金统一排在最后 + if (!hasA && !hasB) return 0; + if (!hasA) return 1; + if (!hasB) return -1; + return sortOrder === 'asc' ? valA - valB : valB - valA; } if (sortBy === 'holding') {