feat(frontend): 手动下单功能增强与金额模式支持

- 后端返回 amountMode 和 amountValue 字段,支持前端获取策略配置
- 手动下单确认弹窗显示用户可用余额(绿色高亮)
- 价格输入框右侧添加"获取最新价"按钮,支持实时更新价格
- 数量输入框右侧添加"最大"按钮,根据余额自动计算最大购买数量
- 修正数量计算逻辑:FIXED 和 RATIO 模式均按实际金额计算数量,保留2位小数
  - FIXED 模式:使用配置的固定金额
  - RATIO 模式:按比例计算可用余额
- 数量计算使用保留小数方式(而非向上取整),确保精确匹配投入金额
  - 示例:固定1U,价格0.4,自动填充2.5张
  - 示例:比例30%,余额20U,价格0.4,自动填充15张

Made-with: Cursor
This commit is contained in:
WrBug
2026-02-26 21:19:06 +08:00
parent 9b4d8fc001
commit 79b154515d
6 changed files with 175 additions and 31 deletions
+10 -1
View File
@@ -1676,7 +1676,16 @@
"failed": "Manual order failed: {{reason}}",
"errorSigning": "Signing failed: {reason}",
"errorNetwork": "Network error, please try again later",
"priceNotLoaded": "Price data not loaded"
"priceNotLoaded": "Price data not loaded",
"insufficientBalance": "Insufficient balance, available amount less than 1 USDC",
"fetchBalanceFailed": "Failed to fetch account balance",
"availableBalance": "Available Balance",
"fetchLatestPrice": "Latest Price",
"priceUpdated": "Price updated",
"maxSize": "Max",
"invalidPriceOrBalance": "Invalid price or balance",
"insufficientBalanceForMax": "Insufficient balance for max size",
"maxSizeUpdated": "Updated to max size"
}
}
}
+10 -1
View File
@@ -1676,7 +1676,16 @@
"failed": "手动下单失败:{{reason}}",
"errorSigning": "签名失败:{{reason}}",
"errorNetwork": "网络错误,请稍后重试",
"priceNotLoaded": "价格数据未加载"
"priceNotLoaded": "价格数据未加载",
"insufficientBalance": "余额不足,可用金额少于 1 USDC",
"fetchBalanceFailed": "获取账户余额失败",
"availableBalance": "可用余额",
"fetchLatestPrice": "获取最新价",
"priceUpdated": "价格已更新",
"maxSize": "最大",
"invalidPriceOrBalance": "价格或余额无效",
"insufficientBalanceForMax": "余额不足以购买最大数量",
"maxSizeUpdated": "已更新为最大数量"
}
}
}
+10 -1
View File
@@ -1676,7 +1676,16 @@
"failed": "手動下單失敗:{{reason}}",
"errorSigning": "簽名失敗:{reason}",
"errorNetwork": "網絡錯誤,請稍後重試",
"priceNotLoaded": "價格數據未加載"
"priceNotLoaded": "價格數據未加載",
"insufficientBalance": "餘額不足,可用金額少於 1 USDC",
"fetchBalanceFailed": "獲取賬戶餘額失敗",
"availableBalance": "可用餘額",
"fetchLatestPrice": "獲取最新價",
"priceUpdated": "價格已更新",
"maxSize": "最大",
"invalidPriceOrBalance": "價格或餘額無效",
"insufficientBalanceForMax": "餘額不足以購買最大數量",
"maxSizeUpdated": "已更新為最大數量"
}
}
}