fix(admin-web): add null checks to prevent crash in system account report tabs

面对面结算和过期收益Tab在数据为空时会崩溃,添加空值检查修复此问题。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-05 00:15:14 -08:00
parent 66ace25935
commit 191b37a5de
1 changed files with 29 additions and 11 deletions

View File

@ -299,9 +299,18 @@ function RegionAccountsSection({ data, type }: { data: RegionAccountsSummary; ty
/**
*
* [2026-01-05] USDT改为绿积分
* [2026-01-05] USDT改为绿积分
*/
function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse['offlineSettlement'] }) {
function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse['offlineSettlement'] | null | undefined }) {
if (!data) {
return (
<div className={styles.section}>
<h3 className={styles.sectionTitle}></h3>
<div className={styles.emptyTable}></div>
</div>
);
}
return (
<div className={styles.section}>
<h3 className={styles.sectionTitle}></h3>
@ -310,7 +319,7 @@ function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse[
<div className={styles.summaryCards}>
<div className={styles.summaryCard}>
<span className={styles.summaryLabel}></span>
<span className={styles.summaryValue}>{data.totalCount}</span>
<span className={styles.summaryValue}>{data.totalCount ?? 0}</span>
</div>
<div className={styles.summaryCard}>
<span className={styles.summaryLabel}></span>
@ -319,7 +328,7 @@ function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse[
</div>
{/* 按月统计 */}
{data.byMonth.length > 0 && (
{data.byMonth && data.byMonth.length > 0 && (
<>
<h4 className={styles.subTitle}></h4>
<div className={styles.tableWrapper}>
@ -345,7 +354,7 @@ function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse[
</>
)}
{data.byMonth.length === 0 && (
{(!data.byMonth || data.byMonth.length === 0) && (
<div className={styles.emptyTable}></div>
)}
</div>
@ -354,9 +363,18 @@ function OfflineSettlementSection({ data }: { data: SystemAccountReportResponse[
/**
*
* [2026-01-05] USDT改为绿积分
* [2026-01-05] USDT改为绿积分
*/
function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['expiredRewards'] }) {
function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['expiredRewards'] | null | undefined }) {
if (!data) {
return (
<div className={styles.section}>
<h3 className={styles.sectionTitle}></h3>
<div className={styles.emptyTable}></div>
</div>
);
}
return (
<div className={styles.section}>
<h3 className={styles.sectionTitle}></h3>
@ -365,7 +383,7 @@ function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['ex
<div className={styles.summaryCards}>
<div className={styles.summaryCard}>
<span className={styles.summaryLabel}></span>
<span className={styles.summaryValue}>{data.totalCount}</span>
<span className={styles.summaryValue}>{data.totalCount ?? 0}</span>
</div>
<div className={styles.summaryCard}>
<span className={styles.summaryLabel}></span>
@ -374,7 +392,7 @@ function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['ex
</div>
{/* 按权益类型统计 */}
{data.byRightType.length > 0 && (
{data.byRightType && data.byRightType.length > 0 && (
<>
<h4 className={styles.subTitle}></h4>
<div className={styles.tableWrapper}>
@ -401,7 +419,7 @@ function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['ex
)}
{/* 按月统计 */}
{data.byMonth.length > 0 && (
{data.byMonth && data.byMonth.length > 0 && (
<>
<h4 className={styles.subTitle}></h4>
<div className={styles.tableWrapper}>
@ -427,7 +445,7 @@ function ExpiredRewardsSection({ data }: { data: SystemAccountReportResponse['ex
</>
)}
{data.byRightType.length === 0 && data.byMonth.length === 0 && (
{(!data.byRightType || data.byRightType.length === 0) && (!data.byMonth || data.byMonth.length === 0) && (
<div className={styles.emptyTable}></div>
)}
</div>