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:
+27
-20
@@ -590,27 +590,34 @@ export default function PlanPage() {
|
||||
Number(plan?.risk_last_k ?? plan?.risk_sizing_preview?.k ?? 1)
|
||||
: semiExitU),
|
||||
);
|
||||
const exitRuleLabel = semiOn
|
||||
? semiOptTarget != null
|
||||
? `期权目标 K${Math.round(semiExitStrike!)}→${fmtExPx("index", semiOptTarget)} · 永续净利锁定≥${fmt(semiNetLock, 2)}U`
|
||||
: `期权目标 行权价${semiExitView === "short" ? "−" : "+"}${fmt(semiExitMove, 0)} · 永续净利锁定≥${fmt(semiNetLock, 2)}U`
|
||||
: isOo
|
||||
const exitRuleLabel = semiOn ? (
|
||||
<span className="plan-exit-semi">
|
||||
<span>
|
||||
{semiOptTarget != null
|
||||
? `期权目标 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
|
||||
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U(${
|
||||
ooBudget != null ? `${fmt(ooBudget)}×` : "预算×"
|
||||
}${fmt(ooRatio, 1)})`
|
||||
: `净盈≥预算×${fmt(ooRatio, 1)}(达标只平盈利腿)`
|
||||
: exitMode === "premium_multiple"
|
||||
? riskBased
|
||||
? exitTarget != null
|
||||
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U(权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)})`
|
||||
: `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}(开仓后锁定)`
|
||||
: `权利金×${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`;
|
||||
? `${riskLocked ? "锁定 " : ""}净盈≥${fmt(exitTarget)} U(权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)})`
|
||||
: `权利金×${fmt(plan?.premium_exit_multiple ?? 1, 2)}(开仓后锁定)`
|
||||
: `权利金×${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
|
||||
? "预算平分 Call/Put"
|
||||
: `比例${Number(plan?.risk_perp_unit ?? 1)}:${Number(plan?.risk_option_unit ?? 2)}`;
|
||||
|
||||
@@ -353,9 +353,16 @@ input {
|
||||
display: inline-flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 6px;
|
||||
font-weight: 700;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.kv > span.open-cap-row {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.open-cap-sep {
|
||||
@@ -1406,6 +1413,15 @@ input {
|
||||
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 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
Reference in New Issue
Block a user