From ca7a2e954f0ca6deb1f44ae9baab6b887b173be4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Fri, 31 Oct 2025 16:32:04 +0800 Subject: [PATCH] Implement power statistics API and enhance Power Management component. Add new Statistics interface and update UI to display formatted usage data. Adjust styles for better readability. --- .../pages/mobile/mine/recharge/index/api.ts | 12 ++++++ .../mine/recharge/index/index.module.scss | 2 +- .../mobile/mine/recharge/index/index.tsx | 38 ++++++++++++++----- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Cunkebao/src/pages/mobile/mine/recharge/index/api.ts b/Cunkebao/src/pages/mobile/mine/recharge/index/api.ts index a7515f22..6a870667 100644 --- a/Cunkebao/src/pages/mobile/mine/recharge/index/api.ts +++ b/Cunkebao/src/pages/mobile/mine/recharge/index/api.ts @@ -1,5 +1,17 @@ import request from "@/api/request"; +export interface Statistics { + totalTokens: number; // 总算力 + todayUsed: number; // 今日使用 + monthUsed: number; // 本月使用 + remainingTokens: number; // 剩余算力 + totalConsumed: number; // 总消耗 +} +// 算力统计接口 +export function getStatistics(): Promise { + return request("/v1/tokens/statistics", undefined, "GET"); +} + // 算力包套餐类型 export interface PowerPackage { id: number; diff --git a/Cunkebao/src/pages/mobile/mine/recharge/index/index.module.scss b/Cunkebao/src/pages/mobile/mine/recharge/index/index.module.scss index e703d149..be4e8f82 100644 --- a/Cunkebao/src/pages/mobile/mine/recharge/index/index.module.scss +++ b/Cunkebao/src/pages/mobile/mine/recharge/index/index.module.scss @@ -138,7 +138,7 @@ } .usageValue { - font-size: 32px; + font-size: 20px; font-weight: 600; margin-bottom: 8px; } diff --git a/Cunkebao/src/pages/mobile/mine/recharge/index/index.tsx b/Cunkebao/src/pages/mobile/mine/recharge/index/index.tsx index ad8424ca..d713b2f3 100644 --- a/Cunkebao/src/pages/mobile/mine/recharge/index/index.tsx +++ b/Cunkebao/src/pages/mobile/mine/recharge/index/index.tsx @@ -11,8 +11,8 @@ import { } from "@ant-design/icons"; import NavCommon from "@/components/NavCommon"; import Layout from "@/components/Layout/Layout"; -import { getPowerStats, getOrderList } from "./api"; -import type { PowerStats } from "./api"; +import { getStatistics, getOrderList } from "./api"; +import type { Statistics } from "./api"; import { Pagination } from "antd"; type OrderRecordView = { @@ -29,7 +29,7 @@ const PowerManagement: React.FC = () => { const navigate = useNavigate(); const [activeTab, setActiveTab] = useState("overview"); const [loading, setLoading] = useState(false); - const [stats, setStats] = useState(null); + const [stats, setStats] = useState(null); const [records, setRecords] = useState([]); const [filterType, setFilterType] = useState("all"); const [filterStatus, setFilterStatus] = useState("all"); @@ -69,7 +69,7 @@ const PowerManagement: React.FC = () => { const fetchStats = async () => { try { - const res = await getPowerStats(); + const res = await getStatistics(); setStats(res); } catch (error) { console.error("获取统计失败:", error); @@ -143,6 +143,22 @@ const PowerManagement: React.FC = () => { ); }; + // 格式化数值:超过1000用k,超过10000用w,保留1位小数 + const formatNumber = (value: number | undefined): string => { + if (value === undefined || value === null) return "0"; + const num = Number(value); + if (isNaN(num)) return "0"; + + if (num >= 10000) { + const w = num / 10000; + return w % 1 === 0 ? `${w}w` : `${w.toFixed(1)}w`; + } else if (num >= 1000) { + const k = num / 1000; + return k % 1 === 0 ? `${k}k` : `${k.toFixed(1)}k`; + } + return String(num); + }; + // 渲染概览Tab const renderOverview = () => (
@@ -155,7 +171,9 @@ const PowerManagement: React.FC = () => {
总算力
-
{stats?.totalPower || 0}
+
+ {formatNumber(stats?.totalTokens)} +
@@ -167,19 +185,19 @@ const PowerManagement: React.FC = () => {
- {stats?.todayUsed || 0} + {formatNumber(stats?.todayUsed)}
今日使用
- {stats?.monthUsed || 0} + {formatNumber(stats?.monthUsed)}
本月使用
- {stats?.remainingPower || 0} + {formatNumber(stats?.remainingTokens)}
剩余算力
@@ -278,7 +296,9 @@ const PowerManagement: React.FC = () => {
-¥{record.amount.toFixed(1)}
-
{record.power} 算力
+
+ {formatNumber(record.power)} 算力 +
{record.description}