Right-align open-capacity row; split semi exit rule into two lines.

Logic check: K+/-N option target and unit*k perp net lock remain correct.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-08 15:17:22 +08:00
parent 723c5fc1fc
commit 50783e18d0
2 changed files with 43 additions and 20 deletions
+27 -20
View File
@@ -590,27 +590,34 @@ export default function PlanPage() {
Number(plan?.risk_last_k ?? plan?.risk_sizing_preview?.k ?? 1) Number(plan?.risk_last_k ?? plan?.risk_sizing_preview?.k ?? 1)
: semiExitU), : semiExitU),
); );
const exitRuleLabel = semiOn const exitRuleLabel = semiOn ? (
? semiOptTarget != null <span className="plan-exit-semi">
? `期权目标 K${Math.round(semiExitStrike!)}${fmtExPx("index", semiOptTarget)} · 永续净利锁定≥${fmt(semiNetLock, 2)}U` <span>
: `期权目标 行权价${semiExitView === "short" ? "" : "+"}${fmt(semiExitMove, 0)} · 永续净利锁定≥${fmt(semiNetLock, 2)}U` {semiOptTarget != null
: isOo ? `期权目标 K${Math.round(semiExitStrike!)}${fmtExPx("index", semiOptTarget)}`
: `期权目标 行权价${semiExitView === "short" ? "" : "+"}${fmt(semiExitMove, 0)}`}
</span>
<span>{`永续目标 净利锁定≥${fmt(semiNetLock, 2)}U`}</span>
</span>
) : isOo ? (
exitTarget != null
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U${
ooBudget != null ? `${fmt(ooBudget)}×` : "预算×"
}${fmt(ooRatio, 1)}`
: `净盈≥预算×${fmt(ooRatio, 1)}(达标只平盈利腿)`
) : exitMode === "premium_multiple" ? (
riskBased
? exitTarget != null ? exitTarget != null
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U${ ? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}`
ooBudget != null ? `${fmt(ooBudget)}×` : "预算×" : `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}(开仓后锁定)`
}${fmt(ooRatio, 1)}` : `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}`
: `净盈≥预算×${fmt(ooRatio, 1)}(达标只平盈利腿)` ) : riskBased ? (
: exitMode === "premium_multiple" exitTarget != null
? riskBased ? `${riskLocked ? "锁定 " : "固定 "}${fmt(exitTarget)} U(基数${fmt(plan?.risk_exit_unit ?? 15)}`
? exitTarget != null : `待估算(基数${fmt(plan?.risk_exit_unit ?? 15)}`
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U(权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}` ) : (
: `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}(开仓后锁定)` `固定 ${fmt(plan?.net_profit_target ?? 15)} U`
: `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}` );
: riskBased
? exitTarget != null
? `${riskLocked ? "锁定 " : "固定 "}${fmt(exitTarget)} U(基数${fmt(plan?.risk_exit_unit ?? 15)}`
: `待估算(基数${fmt(plan?.risk_exit_unit ?? 15)}`
: `固定 ${fmt(plan?.net_profit_target ?? 15)} U`;
const riskRatioLabel = isOo const riskRatioLabel = isOo
? "预算平分 Call/Put" ? "预算平分 Call/Put"
: `比例${Number(plan?.risk_perp_unit ?? 1)}:${Number(plan?.risk_option_unit ?? 2)}`; : `比例${Number(plan?.risk_perp_unit ?? 1)}:${Number(plan?.risk_option_unit ?? 2)}`;
+16
View File
@@ -353,9 +353,16 @@ input {
display: inline-flex; display: inline-flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
justify-content: flex-end;
gap: 6px; gap: 6px;
font-weight: 700; font-weight: 700;
font-size: 14px; font-size: 14px;
width: 100%;
text-align: right;
}
.kv > span.open-cap-row {
justify-content: flex-end;
} }
.open-cap-sep { .open-cap-sep {
@@ -1406,6 +1413,15 @@ input {
flex: 0 0 auto; flex: 0 0 auto;
} }
.plan-exit-semi {
display: inline-flex;
flex-direction: column;
align-items: flex-end;
gap: 2px;
text-align: right;
width: 100%;
}
.plan-positions { .plan-positions {
display: flex; display: flex;
flex-direction: column; flex-direction: column;