From d3f237168caa9cc6cf0bf7b21d7b17a76ffd2b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=81?= Date: Sun, 26 Jul 2026 17:16:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E9=A1=B5=E4=BA=A4=E6=98=93=E7=9B=88=E4=BA=8F=E6=9B=B2=E7=BA=BF?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=AF=B9=E9=BD=90=20Polymarket=20=E5=8F=8C?= =?UTF-8?q?=E5=8D=A1=E5=B8=83=E5=B1=80=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/api/pnlCurve.ts | 42 ++++ src/components/PnlCurveCard.vue | 296 ++++++++++++++++++++++++ src/components/WalletDepositModule.vue | 21 +- src/locales/en.json | 21 ++ src/locales/ja.json | 21 ++ src/locales/ko.json | 21 ++ src/locales/zh-CN.json | 21 ++ src/locales/zh-TW.json | 21 ++ src/views/Profile.vue | 4 - src/views/Wallet.vue | 300 +++++++++++-------------- 10 files changed, 579 insertions(+), 189 deletions(-) create mode 100644 src/api/pnlCurve.ts create mode 100644 src/components/PnlCurveCard.vue diff --git a/src/api/pnlCurve.ts b/src/api/pnlCurve.ts new file mode 100644 index 0000000..6188004 --- /dev/null +++ b/src/api/pnlCurve.ts @@ -0,0 +1,42 @@ +import { get } from './request' +import type { ApiResponse } from './types' + +export type PnlCurveRange = '1D' | '1W' | '1M' | '1Y' | 'YTD' | 'ALL' + +export interface PnlCurvePoint { + ts: number + pnl: number +} + +export interface PnlCurveData { + range: PnlCurveRange + startTs: number + endTs: number + currentPnl: number + changeAmount: number + changePercent: number + noHistory: boolean + points: PnlCurvePoint[] +} + +export interface PnlCurveResponse extends ApiResponse { + data: PnlCurveData +} + +/** + * GET /uas/getPnlCurveClient + * 获取用户交易盈亏曲线(卖出 − 买入 USDC) + */ +export async function getPnlCurve( + range: PnlCurveRange, + config?: { headers?: Record }, +): Promise { + return get('/uas/getPnlCurveClient', { range }, config) +} + +export const PNL_CURVE_RANGES: PnlCurveRange[] = ['1D', '1W', '1M', '1Y', 'YTD', 'ALL'] + +export function formatPnlAmount(amount: number): string { + const sign = amount > 0 ? '+' : amount < 0 ? '-' : '' + return `${sign}$${Math.abs(amount).toFixed(2)}` +} diff --git a/src/components/PnlCurveCard.vue b/src/components/PnlCurveCard.vue new file mode 100644 index 0000000..588ea50 --- /dev/null +++ b/src/components/PnlCurveCard.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/src/components/WalletDepositModule.vue b/src/components/WalletDepositModule.vue index 6e04830..c533831 100644 --- a/src/components/WalletDepositModule.vue +++ b/src/components/WalletDepositModule.vue @@ -1,10 +1,11 @@