feat: 优化账户管理和订单功能

- 重置密码后自动跳转到登录页,登录页添加重置密码入口
- 移除默认账户相关逻辑和UI
- 移除前端API Key自动获取提示文案(后端保留自动获取逻辑)
- 修复SELL订单takerAmount计算精度问题,使用精确计算避免精度丢失
- 修复导入账户页面白屏问题(缺少Alert组件导入)
- 持仓出售支持百分比模式,使用原始精度数据计算,支持小数百分比
- 优化订单金额计算逻辑,确保与SDK一致
This commit is contained in:
WrBug
2025-12-03 21:39:48 +08:00
parent 99f2d7a850
commit 2ad558da36
13 changed files with 289 additions and 259 deletions
+14 -1
View File
@@ -30,6 +30,7 @@ const PositionList: React.FC = () => {
const [orderType, setOrderType] = useState<'MARKET' | 'LIMIT'>('LIMIT')
const [sellQuantity, setSellQuantity] = useState<string>('')
const [limitPrice, setLimitPrice] = useState<string>('')
const [selectedPercent, setSelectedPercent] = useState<string | null>(null) // 记录选择的百分比(字符串格式)
const [form] = Form.useForm()
const [submitting, setSubmitting] = useState(false)
const [wsConnected, setWsConnected] = useState(false)
@@ -361,6 +362,7 @@ const PositionList: React.FC = () => {
setOrderType('LIMIT')
setSellQuantity('')
setLimitPrice('')
setSelectedPercent(null) // 重置百分比选择
form.resetFields()
// 加载市场价格
@@ -382,6 +384,9 @@ const PositionList: React.FC = () => {
// 处理数量快捷按钮
const handleQuantityQuickSelect = (percent: number) => {
if (!selectedPosition) return
// 记录选择的百分比(转为字符串,避免精度问题)
setSelectedPercent(percent.toString())
// 计算显示用的数量(用于预览,使用显示数量即可)
const quantity = parseFloat(selectedPosition.quantity)
const sellQty = (quantity * percent / 100).toFixed(4)
setSellQuantity(sellQty)
@@ -440,7 +445,12 @@ const PositionList: React.FC = () => {
side: selectedPosition.side,
outcomeIndex: selectedPosition.outcomeIndex, // 传递 outcomeIndex
orderType: orderType,
quantity: sellQuantity,
// 如果选择了百分比,只传递百分比,不传 quantity
// 如果手动输入,只传递 quantity,不传 percent
...(selectedPercent != null
? { percent: selectedPercent }
: { quantity: sellQuantity }
),
price: orderType === 'LIMIT' ? limitPrice : undefined
}
@@ -452,6 +462,7 @@ const PositionList: React.FC = () => {
// 重置表单
setSellQuantity('')
setLimitPrice('')
setSelectedPercent(null) // 重置百分比选择
form.resetFields()
// 仓位列表会通过WebSocket自动更新
} else {
@@ -1371,6 +1382,8 @@ const PositionList: React.FC = () => {
onChange={(e) => {
const newQuantity = e.target.value
setSellQuantity(newQuantity)
// 用户手动输入时,清除百分比选择
setSelectedPercent(null)
if (newQuantity) {
const price = getCurrentSellPrice()
calculatePnl(newQuantity, price)