优化:UI优化
This commit is contained in:
parent
9ec66ff163
commit
2b84e5f01e
@ -118,7 +118,6 @@
|
||||
<p class="crypto-info-text">{{ t('deposit.collectInlineHint') }}</p>
|
||||
</div>
|
||||
<div class="crypto-qr-block">
|
||||
<p class="crypto-qr-caption">{{ t('deposit.qrCaption') }}</p>
|
||||
<div class="crypto-qr-frame">
|
||||
<img
|
||||
:key="`${String(modelValue)}-${depositAddress}-qr-${cryptoQrRetryNonce}`"
|
||||
@ -213,7 +212,7 @@
|
||||
</template>
|
||||
</template>
|
||||
</v-card-text>
|
||||
<!-- 加密货币:底部单一检查/归集;钱包入金:从钱包转入 + 归集并排 -->
|
||||
<!-- 加密货币:底部检测与「同步余额」;钱包入金:从钱包转入 + 同步余额并排 -->
|
||||
<v-card-actions v-if="step === 'crypto' || step === 'exchange'" class="deposit-footer-actions">
|
||||
<div class="deposit-footer-inner">
|
||||
<template v-if="step === 'crypto'">
|
||||
@ -1192,17 +1191,6 @@ onUnmounted(() => {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.crypto-qr-caption {
|
||||
margin: 0;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 500;
|
||||
color: #9ca3af;
|
||||
text-align: center;
|
||||
line-height: 1.35;
|
||||
letter-spacing: normal;
|
||||
width: 100%;
|
||||
}
|
||||
.crypto-qr-frame {
|
||||
position: relative;
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
"title": "Deposit",
|
||||
"polymarketBalance": "Balance:",
|
||||
"transferCrypto": "Transfer Crypto",
|
||||
"transferCryptoSub": "No limits • Fast • Sync to balance after deposit",
|
||||
"transferCryptoSub": "No limits • Fast • Tap below to sync balance once it arrives",
|
||||
"connectExchange": "Transfer with current wallet",
|
||||
"noLimit": "No limit",
|
||||
"instant": "Instant",
|
||||
@ -363,11 +363,10 @@
|
||||
"connectingWallet": "Connecting wallet…",
|
||||
"connectWalletHint": "Approve MetaMask to load your deposit address and send USDC.",
|
||||
"linkMetaMask": "Connect MetaMask",
|
||||
"collectInlineHint": "After sending USDC on-chain to this address, use “Collect” at the bottom to collect and sync USDC to your balance.",
|
||||
"collectInlineHintExchange": "After sending USDC on-chain to this address, use “Collect” at the bottom to collect and sync USDC to your balance.",
|
||||
"qrCaption": "Scan to fill the address (optional)",
|
||||
"collectInlineHint": "After your USDC transfer to this address has arrived, tap \"Sync balance\" at the bottom to credit it to your trading account.",
|
||||
"collectInlineHintExchange": "After your USDC transfer to this address has arrived, tap \"Sync balance\" at the bottom to credit it to your trading account.",
|
||||
"qrLoadFailed": "Could not load QR code",
|
||||
"checkStatus": "Collect",
|
||||
"checkStatus": "Sync balance",
|
||||
"checking": "Checking...",
|
||||
"checkingStatus": "Checking deposit status...",
|
||||
"nextCheckIn": "Next check in: {seconds}s",
|
||||
@ -384,7 +383,7 @@
|
||||
"amountUsdcHint": "Send USDC from this wallet to the deposit address. Keep native gas on this network.",
|
||||
"sendViaMetaMask": "Send with MetaMask",
|
||||
"depositFromWallet": "Deposit from wallet",
|
||||
"collect": "Collect",
|
||||
"collect": "Sync balance",
|
||||
"sendSuccess": "Transfer confirmed on-chain",
|
||||
"sendFailed": "Transfer failed",
|
||||
"invalidAmount": "Enter a valid amount greater than zero",
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
"title": "入金",
|
||||
"polymarketBalance": "残高:",
|
||||
"transferCrypto": "暗号資産を送金",
|
||||
"transferCryptoSub": "制限なし • 即時 • 着金後に下部でコレクト",
|
||||
"transferCryptoSub": "制限なし • 即時 • 着金後、下のボタンで残高に反映",
|
||||
"connectExchange": "現在のウォレットで送金",
|
||||
"noLimit": "制限なし",
|
||||
"instant": "即時",
|
||||
@ -363,11 +363,10 @@
|
||||
"connectingWallet": "ウォレットに接続しています…",
|
||||
"connectWalletHint": "入金アドレスの表示と送金のために MetaMask の承認が必要です。",
|
||||
"linkMetaMask": "MetaMask を接続",
|
||||
"collectInlineHint": "このアドレスへオンチェーンで USDC を送金したら、画面下の「回収」でコレクトし、残高に反映してください。",
|
||||
"collectInlineHintExchange": "このアドレスへオンチェーンで USDC を送金したら、画面下の「回収」でコレクトし、残高に反映してください。",
|
||||
"qrCaption": "アドレス入力用 QR(任意)",
|
||||
"collectInlineHint": "このアドレスへの USDC 送金が完了したら、画面下の「残高を反映」で取引用の残高に計上してください。",
|
||||
"collectInlineHintExchange": "このアドレスへの USDC 送金が完了したら、画面下の「残高を反映」で取引用の残高に計上してください。",
|
||||
"qrLoadFailed": "QR の読み込みに失敗しました",
|
||||
"checkStatus": "回収",
|
||||
"checkStatus": "残高を反映",
|
||||
"checking": "確認中...",
|
||||
"checkingStatus": "入金状況を確認しています...",
|
||||
"nextCheckIn": "次の確認: {seconds}秒",
|
||||
@ -384,7 +383,7 @@
|
||||
"amountUsdcHint": "このウォレットから入金先へ USDC を送ります。ガス用にネイティブトークンを残してください。",
|
||||
"sendViaMetaMask": "MetaMask で送金",
|
||||
"depositFromWallet": "ウォレットから入金",
|
||||
"collect": "回収",
|
||||
"collect": "残高を反映",
|
||||
"sendSuccess": "チェーン上で送金が確定しました",
|
||||
"sendFailed": "送金に失敗しました",
|
||||
"invalidAmount": "0 より大きい有効な金額を入力してください",
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
"title": "입금",
|
||||
"polymarketBalance": "잔액:",
|
||||
"transferCrypto": "암호화폐 전송",
|
||||
"transferCryptoSub": "제한 없음 • 즉시 • 입금 후 하단에서 수집",
|
||||
"transferCryptoSub": "제한 없음 • 즉시 • 입금 확인 후 하단에서 잔액 동기화",
|
||||
"connectExchange": "현재 지갑으로 송금",
|
||||
"noLimit": "제한 없음",
|
||||
"instant": "즉시",
|
||||
@ -363,11 +363,10 @@
|
||||
"connectingWallet": "지갑 연결 중…",
|
||||
"connectWalletHint": "입금 주소를 불러오고 전송하려면 MetaMask 승인이 필요합니다.",
|
||||
"linkMetaMask": "MetaMask 연결",
|
||||
"collectInlineHint": "이 주소로 온체인 USDC 전송을 마친 뒤, 화면 맨 아래「수집」으로 수집해 잔액에 반영하세요.",
|
||||
"collectInlineHintExchange": "이 주소로 온체인 USDC 전송을 마친 뒤, 화면 맨 아래「수집」으로 수집해 잔액에 반영하세요.",
|
||||
"qrCaption": "주소 입력용 QR (선택)",
|
||||
"collectInlineHint": "이 주소로 USDC 이체가 입금 확인되면, 화면 아래「잔액 동기화」를 눌러 거래 잔액에 반영하세요.",
|
||||
"collectInlineHintExchange": "이 주소로 USDC 이체가 입금 확인되면, 화면 아래「잔액 동기화」를 눌러 거래 잔액에 반영하세요.",
|
||||
"qrLoadFailed": "QR 코드를 불러오지 못했습니다",
|
||||
"checkStatus": "수집",
|
||||
"checkStatus": "잔액 동기화",
|
||||
"checking": "확인 중...",
|
||||
"checkingStatus": "입금 상태 확인 중...",
|
||||
"nextCheckIn": "다음 확인: {seconds}초",
|
||||
@ -384,7 +383,7 @@
|
||||
"amountUsdcHint": "현재 지갑에서 입금 주소로 USDC를 보냅니다. 가스비용 네이티브 토큰을 남겨 두세요.",
|
||||
"sendViaMetaMask": "MetaMask로 전송",
|
||||
"depositFromWallet": "지갑에서 입금",
|
||||
"collect": "수집",
|
||||
"collect": "잔액 동기화",
|
||||
"sendSuccess": "전송이 온체인에서 확인되었습니다",
|
||||
"sendFailed": "전송 실패",
|
||||
"invalidAmount": "0보다 큰 유효한 금액을 입력하세요",
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
"title": "入金",
|
||||
"polymarketBalance": "余额:",
|
||||
"transferCrypto": "转账加密货币",
|
||||
"transferCryptoSub": "无限制 • 即时 • 到账后可在底部一键归集",
|
||||
"transferCryptoSub": "无限制 • 即时 • 到账后可在底部一键同步余额",
|
||||
"connectExchange": "使用当前钱包转账",
|
||||
"noLimit": "无限制",
|
||||
"instant": "即时到账",
|
||||
@ -363,11 +363,10 @@
|
||||
"connectingWallet": "正在连接钱包…",
|
||||
"connectWalletHint": "需要授权 MetaMask 后才能显示充值地址并转账。",
|
||||
"linkMetaMask": "连接 MetaMask",
|
||||
"collectInlineHint": "向该地址完成链上转账后,请点击底部「归集」,将 USDC 同步到账户余额。",
|
||||
"collectInlineHintExchange": "向该地址完成链上转账后,请点击底部「归集」,将 USDC 同步到账户余额。",
|
||||
"qrCaption": "扫码填入收款地址(可选)",
|
||||
"collectInlineHint": "向该地址转完 USDC 并到账后,请点击底部「同步余额」,把资金记入您的交易账户。",
|
||||
"collectInlineHintExchange": "向该地址转完 USDC 并到账后,请点击底部「同步余额」,把资金记入您的交易账户。",
|
||||
"qrLoadFailed": "二维码加载失败",
|
||||
"checkStatus": "归集",
|
||||
"checkStatus": "同步余额",
|
||||
"checking": "正在检测...",
|
||||
"checkingStatus": "正在检测充值状态...",
|
||||
"nextCheckIn": "下次检测: {seconds}秒",
|
||||
@ -384,7 +383,7 @@
|
||||
"amountUsdcHint": "从当前钱包将 USDC 转到入账地址,请预留主网币作为 Gas",
|
||||
"sendViaMetaMask": "在 MetaMask 中转账",
|
||||
"depositFromWallet": "从钱包转入",
|
||||
"collect": "归集",
|
||||
"collect": "同步余额",
|
||||
"sendSuccess": "转账已成功上链",
|
||||
"sendFailed": "转账失败",
|
||||
"invalidAmount": "请输入大于 0 的有效金额",
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
"title": "入金",
|
||||
"polymarketBalance": "餘額:",
|
||||
"transferCrypto": "轉帳加密貨幣",
|
||||
"transferCryptoSub": "無限制 • 即時 • 到帳後可在底部一鍵歸集",
|
||||
"transferCryptoSub": "無限制 • 即時 • 到帳後可在底部一鍵同步餘額",
|
||||
"connectExchange": "使用當前錢包轉帳",
|
||||
"noLimit": "無限制",
|
||||
"instant": "即時到帳",
|
||||
@ -363,11 +363,10 @@
|
||||
"connectingWallet": "正在連接錢包…",
|
||||
"connectWalletHint": "請先授權 MetaMask,才能顯示充值地址並轉帳。",
|
||||
"linkMetaMask": "連接 MetaMask",
|
||||
"collectInlineHint": "向該地址完成鏈上轉帳後,請點擊底部「歸集」,將 USDC 同步至帳戶餘額。",
|
||||
"collectInlineHintExchange": "向該地址完成鏈上轉帳後,請點擊底部「歸集」,將 USDC 同步至帳戶餘額。",
|
||||
"qrCaption": "掃碼填入收款地址(可選)",
|
||||
"collectInlineHint": "向該地址轉完 USDC 並到帳後,請點擊底部「同步餘額」,把資金記入您的交易帳戶。",
|
||||
"collectInlineHintExchange": "向該地址轉完 USDC 並到帳後,請點擊底部「同步餘額」,把資金記入您的交易帳戶。",
|
||||
"qrLoadFailed": "二維碼載入失敗",
|
||||
"checkStatus": "歸集",
|
||||
"checkStatus": "同步餘額",
|
||||
"checking": "正在檢測...",
|
||||
"checkingStatus": "正在檢測充值狀態...",
|
||||
"nextCheckIn": "下次檢測: {seconds}秒",
|
||||
@ -384,7 +383,7 @@
|
||||
"amountUsdcHint": "從目前錢包將 USDC 轉到入帳地址,請預留主網幣作為 Gas",
|
||||
"sendViaMetaMask": "在 MetaMask 中轉帳",
|
||||
"depositFromWallet": "從錢包轉入",
|
||||
"collect": "歸集",
|
||||
"collect": "同步餘額",
|
||||
"sendSuccess": "轉帳已成功上鏈",
|
||||
"sendFailed": "轉帳失敗",
|
||||
"invalidAmount": "請輸入大於 0 的有效金額",
|
||||
|
||||
@ -116,9 +116,21 @@
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
||||
<v-dialog v-model="editNameDialogOpen" max-width="420">
|
||||
<v-card class="name-dialog-card" rounded="xl" elevation="0">
|
||||
<div class="name-dialog-title">{{ t('profile.editNameTitle') }}</div>
|
||||
<v-dialog v-model="editNameDialogOpen" max-width="480" content-class="name-dialog">
|
||||
<v-card class="name-dialog-card" elevation="0">
|
||||
<div class="name-dialog-header">
|
||||
<h2 class="name-dialog-title">{{ t('profile.editNameTitle') }}</h2>
|
||||
<v-btn
|
||||
icon
|
||||
variant="text"
|
||||
class="name-dialog-close-btn"
|
||||
:aria-label="t('deposit.close')"
|
||||
@click="closeEditNameDialog"
|
||||
>
|
||||
<v-icon size="18">mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</div>
|
||||
<v-card-text class="name-dialog-body">
|
||||
<v-text-field
|
||||
v-model="editingName"
|
||||
:label="t('profile.newUserName')"
|
||||
@ -128,6 +140,7 @@
|
||||
:error-messages="nameError ? [nameError] : []"
|
||||
:hint="t('profile.nameFormatHint')"
|
||||
persistent-hint
|
||||
class="name-dialog-field"
|
||||
/>
|
||||
<div class="name-dialog-actions">
|
||||
<button
|
||||
@ -149,6 +162,7 @@
|
||||
<span v-else>{{ t('profile.save') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</div>
|
||||
@ -851,26 +865,55 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
.name-dialog-card {
|
||||
border: 1px solid #e5e7eb;
|
||||
background: #ffffff;
|
||||
padding: 14px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
overflow: hidden;
|
||||
border-radius: 12px !important;
|
||||
border: 1px solid #f3f4f6;
|
||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.name-dialog-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
padding: 16px 24px 10px;
|
||||
}
|
||||
|
||||
.name-dialog-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: #111827;
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
padding: 2px 2px 0;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
line-height: 1.2;
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.name-dialog-close-btn {
|
||||
flex-shrink: 0;
|
||||
align-self: center;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.name-dialog-body {
|
||||
flex: 1 1 auto;
|
||||
min-height: 0;
|
||||
padding: 16px 24px 24px;
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.name-dialog-field :deep(.v-field) {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.name-dialog-actions {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
justify-content: flex-end;
|
||||
padding-top: 2px;
|
||||
padding-top: 16px;
|
||||
}
|
||||
|
||||
.name-dialog-cancel-btn {
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<v-col cols="12" class="chart-col">
|
||||
<!-- 分时图卡片(Polymarket 样式) -->
|
||||
<v-card class="chart-card polymarket-chart" elevation="0" rounded="lg">
|
||||
<!-- 顶部:标题、当前概率、Past / 日期 -->
|
||||
<!-- 顶部:标题、当前概率、日期与图表模式 -->
|
||||
<div class="chart-header">
|
||||
<h1 class="chart-title">
|
||||
{{ detailLoading && !eventDetail ? t('common.loading') : marketTitle }}
|
||||
|
||||
@ -85,12 +85,16 @@
|
||||
<div class="design-pos-top">
|
||||
<div class="design-pos-left">
|
||||
<div class="position-icon" :class="pos.iconClass">
|
||||
<template v-if="pos.imageUrl">
|
||||
<img
|
||||
v-if="pos.imageUrl"
|
||||
v-if="isWalletRemoteIconOk(`p-${pos.id}`)"
|
||||
:src="pos.imageUrl"
|
||||
alt=""
|
||||
class="position-icon-img"
|
||||
@error="markWalletRemoteIconFailed(`p-${pos.id}`)"
|
||||
/>
|
||||
<v-icon v-else size="20" class="position-icon-svg">mdi-currency-usd</v-icon>
|
||||
</template>
|
||||
<v-icon v-else-if="pos.icon" size="20" class="position-icon-svg">{{
|
||||
pos.icon
|
||||
}}</v-icon>
|
||||
@ -164,7 +168,16 @@
|
||||
>
|
||||
<div class="design-order-top">
|
||||
<div class="order-mobile-icon" :class="ord.iconClass">
|
||||
<img v-if="ord.imageUrl" :src="ord.imageUrl" alt="" class="position-icon-img" />
|
||||
<template v-if="ord.imageUrl">
|
||||
<img
|
||||
v-if="isWalletRemoteIconOk(`o-${ord.id}`)"
|
||||
:src="ord.imageUrl"
|
||||
alt=""
|
||||
class="position-icon-img"
|
||||
@error="markWalletRemoteIconFailed(`o-${ord.id}`)"
|
||||
/>
|
||||
<v-icon v-else size="20" class="position-icon-svg">mdi-currency-usd</v-icon>
|
||||
</template>
|
||||
<span v-else class="position-icon-char">{{ ord.iconChar || '•' }}</span>
|
||||
</div>
|
||||
<div class="order-mobile-main design-order-title-col">
|
||||
@ -243,7 +256,16 @@
|
||||
<div class="design-history-top">
|
||||
<div class="design-history-left">
|
||||
<div class="history-mobile-icon" :class="h.iconClass">
|
||||
<img v-if="h.imageUrl" :src="h.imageUrl" alt="" class="position-icon-img" />
|
||||
<template v-if="h.imageUrl">
|
||||
<img
|
||||
v-if="isWalletRemoteIconOk(`h-${h.id}`)"
|
||||
:src="h.imageUrl"
|
||||
alt=""
|
||||
class="position-icon-img"
|
||||
@error="markWalletRemoteIconFailed(`h-${h.id}`)"
|
||||
/>
|
||||
<v-icon v-else size="20" class="position-icon-svg">mdi-currency-usd</v-icon>
|
||||
</template>
|
||||
<span v-else class="position-icon-char">{{ h.iconChar || '•' }}</span>
|
||||
</div>
|
||||
<div class="history-mobile-main">
|
||||
@ -271,9 +293,10 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="design-funding-left">
|
||||
<div class="history-mobile-icon" :class="getFundingIconClass(h)">
|
||||
<img v-if="h.imageUrl" :src="h.imageUrl" alt="" class="position-icon-img" />
|
||||
<span v-else class="position-icon-char">{{ getFundingIconText(h) }}</span>
|
||||
<div class="history-mobile-icon funding-icon-shell">
|
||||
<div class="funding-icon-disc">
|
||||
<v-icon size="20" class="funding-icon-usd">mdi-currency-usd</v-icon>
|
||||
</div>
|
||||
</div>
|
||||
<div class="history-mobile-main">
|
||||
<MarqueeTitle
|
||||
@ -428,12 +451,16 @@
|
||||
<v-card-text class="sell-dialog-body">
|
||||
<div class="sell-dialog-icon-wrap">
|
||||
<div class="position-icon" :class="sellPositionItem.iconClass">
|
||||
<template v-if="sellPositionItem.imageUrl">
|
||||
<img
|
||||
v-if="sellPositionItem.imageUrl"
|
||||
v-if="isWalletRemoteIconOk(`s-${sellPositionItem.id}`)"
|
||||
:src="sellPositionItem.imageUrl"
|
||||
alt=""
|
||||
class="position-icon-img"
|
||||
@error="markWalletRemoteIconFailed(`s-${sellPositionItem.id}`)"
|
||||
/>
|
||||
<v-icon v-else size="20" class="position-icon-svg">mdi-currency-usd</v-icon>
|
||||
</template>
|
||||
<v-icon v-else-if="sellPositionItem.icon" size="20" class="position-icon-svg">{{
|
||||
sellPositionItem.icon
|
||||
}}</v-icon>
|
||||
@ -513,6 +540,20 @@ import { USE_MOCK_WALLET } from '../config/mock'
|
||||
import { CrossChainUSDTAuth } from '../../sdk/approve'
|
||||
import { useToastStore } from '../stores/toast'
|
||||
|
||||
/** 远程 iconUrl 加载失败时改显示 MDI 矢量图标,与全局 Vuetify 图标体系一致 */
|
||||
const walletRemoteIconFailed = ref<Set<string>>(new Set())
|
||||
|
||||
function isWalletRemoteIconOk(key: string): boolean {
|
||||
return !walletRemoteIconFailed.value.has(key)
|
||||
}
|
||||
|
||||
function markWalletRemoteIconFailed(key: string) {
|
||||
if (walletRemoteIconFailed.value.has(key)) return
|
||||
const next = new Set(walletRemoteIconFailed.value)
|
||||
next.add(key)
|
||||
walletRemoteIconFailed.value = next
|
||||
}
|
||||
|
||||
const router = useRouter()
|
||||
const { mobile } = useDisplay()
|
||||
const userStore = useUserStore()
|
||||
@ -800,14 +841,6 @@ function getFundingTitle(h: HistoryItem): string {
|
||||
: t('wallet.usdtDepositHistoryLabel')
|
||||
}
|
||||
|
||||
function getFundingIconText(h: HistoryItem): string {
|
||||
return isWithdrawalHistory(h) ? t('wallet.withdrawIconText') : t('wallet.depositIconText')
|
||||
}
|
||||
|
||||
function getFundingIconClass(h: HistoryItem): string {
|
||||
return isWithdrawalHistory(h) ? 'funding-icon-withdraw' : 'funding-icon-deposit'
|
||||
}
|
||||
|
||||
function getHistoryTagLabel(h: HistoryItem): string {
|
||||
if (!h.recordType) {
|
||||
return h.profitLossNegative ? t('wallet.historySideBuy') : t('wallet.historySideSell')
|
||||
@ -1375,8 +1408,7 @@ function initPlChart() {
|
||||
handleScale: false,
|
||||
crosshair: { vertLine: { labelVisible: false }, horzLine: { labelVisible: true } },
|
||||
})
|
||||
const lastVal = last != null ? last[1] : 0
|
||||
const color = lastVal >= 0 ? '#059669' : '#dc2626'
|
||||
const color = '#4b5563'
|
||||
plChartSeries = plChartInstance.addSeries(AreaSeries, {
|
||||
topColor: color + '40',
|
||||
bottomColor: color + '08',
|
||||
@ -1545,8 +1577,8 @@ async function submitAuthorize() {
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
font-size: 12px;
|
||||
color: #059669;
|
||||
background-color: #d1fae5;
|
||||
color: #374151;
|
||||
background-color: #f3f4f6;
|
||||
padding: 4px 8px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
@ -1864,12 +1896,9 @@ async function submitAuthorize() {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.order-value-primary {
|
||||
color: #5b5bd6;
|
||||
}
|
||||
|
||||
.order-value-primary,
|
||||
.order-value-secondary {
|
||||
color: #6b7280;
|
||||
color: #111827;
|
||||
}
|
||||
|
||||
.design-pos-stats,
|
||||
@ -1935,26 +1964,17 @@ async function submitAuthorize() {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.side-buy {
|
||||
color: #2563eb;
|
||||
border: 1.5px solid #2563eb;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.side-buy,
|
||||
.side-sell {
|
||||
color: #dc2626;
|
||||
border: 1.5px solid #dc2626;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.outcome-yes {
|
||||
color: #16a34a;
|
||||
background: #dcfce7;
|
||||
color: #374151;
|
||||
border: 1.5px solid #e5e7eb;
|
||||
background: #f9fafb;
|
||||
}
|
||||
|
||||
.outcome-yes,
|
||||
.outcome-no {
|
||||
color: #dc2626;
|
||||
background: #fee2e2;
|
||||
color: #374151;
|
||||
background: #f3f4f6;
|
||||
}
|
||||
|
||||
.design-history-bottom {
|
||||
@ -2008,32 +2028,38 @@ async function submitAuthorize() {
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.history-tag-sell {
|
||||
color: #2563eb;
|
||||
border: 1.5px solid #2563eb;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.history-tag-buy {
|
||||
color: #dc2626;
|
||||
border: 1.5px solid #dc2626;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.history-tag-sell,
|
||||
.history-tag-buy,
|
||||
.history-tag-type {
|
||||
color: #6d28d9;
|
||||
border: 1.5px solid #7c3aed;
|
||||
background: rgba(124, 58, 237, 0.06);
|
||||
color: #374151;
|
||||
border: 1.5px solid #e5e7eb;
|
||||
background: #f9fafb;
|
||||
}
|
||||
|
||||
.funding-icon-deposit {
|
||||
background: #dcfce7;
|
||||
color: #16a34a;
|
||||
/* 资金流水:淡蓝底 + 蓝色圆 + 白色 $(与产品参考一致) */
|
||||
.history-mobile-card.design-funding-card .history-mobile-icon.funding-icon-shell {
|
||||
background: #edf2ff;
|
||||
padding: 8px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.funding-icon-withdraw {
|
||||
background: #fee2e2;
|
||||
color: #dc2626;
|
||||
.funding-icon-disc {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 50%;
|
||||
background: #2b66ff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.funding-icon-usd {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.design-history-meta {
|
||||
@ -2169,14 +2195,10 @@ async function submitAuthorize() {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.pill-down {
|
||||
background-color: #fee2e2;
|
||||
color: #dc2626;
|
||||
}
|
||||
|
||||
.pill-down,
|
||||
.pill-yes {
|
||||
background-color: #dcfce7;
|
||||
color: #059669;
|
||||
background-color: #f3f4f6;
|
||||
color: #374151;
|
||||
}
|
||||
|
||||
.position-shares {
|
||||
@ -2202,12 +2224,9 @@ async function submitAuthorize() {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.value-loss {
|
||||
color: #dc2626;
|
||||
}
|
||||
|
||||
.value-loss,
|
||||
.value-gain {
|
||||
color: #059669;
|
||||
color: #6b7280;
|
||||
}
|
||||
|
||||
.cell-actions {
|
||||
@ -2452,7 +2471,7 @@ async function submitAuthorize() {
|
||||
}
|
||||
|
||||
.filter-btn-cancel {
|
||||
color: #dc2626;
|
||||
color: #6b7280;
|
||||
}
|
||||
|
||||
.filter-btn-cancel .v-icon {
|
||||
@ -2540,12 +2559,9 @@ async function submitAuthorize() {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.pl-gain {
|
||||
color: #059669;
|
||||
}
|
||||
|
||||
.pl-gain,
|
||||
.pl-loss {
|
||||
color: #dc2626;
|
||||
color: #111827;
|
||||
}
|
||||
|
||||
.history-mobile-time {
|
||||
@ -2593,13 +2609,9 @@ async function submitAuthorize() {
|
||||
color: #6b7280;
|
||||
}
|
||||
|
||||
.side-yes {
|
||||
color: #059669;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.side-yes,
|
||||
.side-no {
|
||||
color: #dc2626;
|
||||
color: #374151;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
@ -2650,7 +2662,7 @@ async function submitAuthorize() {
|
||||
}
|
||||
.withdrawal-mobile-reason {
|
||||
font-size: 12px;
|
||||
color: #dc2626;
|
||||
color: #6b7280;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.withdrawal-status-pill {
|
||||
@ -2660,21 +2672,12 @@ async function submitAuthorize() {
|
||||
border-radius: 999px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.withdrawal-status-pill.status-pending {
|
||||
background: #fef3c7;
|
||||
color: #b45309;
|
||||
}
|
||||
.withdrawal-status-pill.status-success {
|
||||
background: #dcfce7;
|
||||
color: #166534;
|
||||
}
|
||||
.withdrawal-status-pill.status-rejected {
|
||||
background: #fee2e2;
|
||||
color: #991b1b;
|
||||
}
|
||||
.withdrawal-status-pill.status-pending,
|
||||
.withdrawal-status-pill.status-success,
|
||||
.withdrawal-status-pill.status-rejected,
|
||||
.withdrawal-status-pill.status-failed {
|
||||
background: #fee2e2;
|
||||
color: #991b1b;
|
||||
background: #f3f4f6;
|
||||
color: #374151;
|
||||
}
|
||||
.withdrawal-reason {
|
||||
font-size: 12px;
|
||||
@ -2849,7 +2852,7 @@ async function submitAuthorize() {
|
||||
}
|
||||
|
||||
.sell-receive-box {
|
||||
background-color: #dcfce7;
|
||||
background-color: #f3f4f6;
|
||||
border-radius: 12px;
|
||||
padding: 16px;
|
||||
text-align: left;
|
||||
@ -2865,13 +2868,13 @@ async function submitAuthorize() {
|
||||
gap: 8px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #166534;
|
||||
color: #374151;
|
||||
}
|
||||
|
||||
.sell-receive-value {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
color: #166534;
|
||||
color: #111827;
|
||||
}
|
||||
|
||||
.sell-dialog-actions {
|
||||
@ -2887,7 +2890,7 @@ async function submitAuthorize() {
|
||||
|
||||
.sell-edit-link {
|
||||
font-size: 14px;
|
||||
color: #2563eb;
|
||||
color: #374151;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user