Desktop calculator: top tabs with input/result dual cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-20 12:54:13 +08:00
parent 7a01535802
commit 29c080f8e0
2 changed files with 223 additions and 129 deletions
+90 -12
View File
@@ -4638,7 +4638,16 @@ body.login-page {
display: none;
}
/* 行情全屏:竖屏提示转横;横屏吃满 */
body.hub-phone #page-calculator .calc-result-title,
body.hub-phone #page-calculator .calc-result-placeholder {
display: none !important;
}
body.hub-phone #page-calculator .calc-result {
margin-top: 14px;
padding-top: 12px;
border-top: 1px solid var(--border-soft);
}
@media (orientation: portrait) {
body.hub-phone.market-chart-fs-open .market-chart-wrap.is-fullscreen::before {
content: "全屏看图请横持手机";
@@ -9569,32 +9578,56 @@ body.funds-fullscreen-open {
}
}
/* 电脑端计算器改为单页 Tab;手机继续使用原有紧凑 Tab 样式 */
/* 电脑端计算器:上方 Tab + 左输入 / 右结果双卡;手机端保持原布局 */
.calc-tab-label-desktop {
display: none;
}
.calc-pane-split {
display: block;
}
.calc-result-title {
display: none;
margin: 0 0 10px;
font-size: 1rem;
color: var(--text);
}
.calc-result-placeholder {
display: none;
margin: 0;
color: var(--muted);
font-size: 0.82rem;
line-height: 1.5;
}
.calc-result-panel:has(.calc-result.hidden) .calc-result-placeholder {
display: block;
}
body:not(.hub-phone) #page-calculator .calc-workspace {
display: grid;
grid-template-columns: 180px minmax(0, 1fr);
display: flex;
flex-direction: column;
gap: 14px;
align-items: start;
align-items: stretch;
}
body:not(.hub-phone) #page-calculator .calc-mobile-tabs {
display: grid;
grid-template-columns: minmax(0, 1fr);
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 8px;
max-width: none;
margin: 0;
padding: 5px;
padding: 6px;
border: 1px solid var(--border-soft);
border-radius: 12px;
background: var(--nav-bg);
}
body:not(.hub-phone) #page-calculator .calc-m-tab {
min-height: 42px;
min-height: 40px;
border: 1px solid transparent;
border-radius: 9px;
background: transparent;
@@ -9603,8 +9636,8 @@ body:not(.hub-phone) #page-calculator .calc-m-tab {
font-size: 13px;
font-weight: 600;
cursor: pointer;
text-align: left;
padding: 9px 12px;
text-align: center;
padding: 8px 16px;
}
body:not(.hub-phone) #page-calculator .calc-m-tab:hover {
@@ -9637,9 +9670,54 @@ body:not(.hub-phone) #page-calculator .calc-layout[data-calc-tab="roll"] [data-c
display: none;
}
body:not(.hub-phone) #page-calculator .calc-card {
padding: 0;
background: transparent;
border: 0;
box-shadow: none;
height: auto;
}
body:not(.hub-phone) #page-calculator .calc-pane-split {
display: grid;
grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
gap: 14px;
align-items: start;
}
body:not(.hub-phone) #page-calculator .calc-input-panel,
body:not(.hub-phone) #page-calculator .calc-result-panel {
padding: 16px 18px;
border-radius: 12px;
background: var(--panel, var(--dash-card-bg, #121820));
border: 1px solid var(--border-soft, var(--border));
box-shadow: var(--card-glow, none);
min-height: 280px;
}
body:not(.hub-phone) #page-calculator .calc-result-title {
display: block;
}
body:not(.hub-phone) #page-calculator .calc-result {
margin-top: 0;
padding-top: 0;
border-top: 0;
}
body:not(.hub-phone) #page-calculator .calc-result.hidden {
display: none !important;
}
@media (min-width: 1200px) {
body:not(.hub-phone) #page-calculator .calc-form-grid {
grid-template-columns: repeat(5, minmax(0, 1fr));
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@media (max-width: 1100px) {
body:not(.hub-phone) #page-calculator .calc-pane-split {
grid-template-columns: minmax(0, 1fr);
}
}
+133 -117
View File
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'" />
<noscript><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" /></noscript>
<link rel="stylesheet" href="/assets/app.css?v=20260718-strategy-pad" />
<link rel="stylesheet" href="/assets/app.css?v=20260720-calc-desktop-split" />
<link rel="stylesheet" href="/assets/trade_stats_calendar.css?v=4" />
<link rel="stylesheet" href="/assets/account_risk_badge.css?v=4" />
<script src="/assets/account_risk_badge.js?v=4"></script>
@@ -812,127 +812,143 @@
</div>
<div class="calc-layout" data-calc-tab="trend">
<section class="calc-card card" data-calc-pane="trend">
<h2>趋势回调计算器</h2>
<p class="calc-hint">逻辑与实例策略页一致:首仓 50% + 补仓网格;止损金额 = 资金 × 风险%.</p>
<form id="calc-trend-form" class="calc-form">
<div class="calc-form-grid">
<label class="calc-field">
<span>交易所</span>
<select id="calc-trend-exchange" required></select>
</label>
<label class="calc-field">
<span>币种</span>
<input id="calc-trend-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
</label>
<div class="calc-field calc-field-span2">
<div id="calc-trend-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
</div>
<label class="calc-field">
<span>交易资金 (U)</span>
<input id="calc-trend-capital" type="number" min="0.01" step="any" value="1000" required />
</label>
<label class="calc-field">
<span>风险 %</span>
<input id="calc-trend-risk" type="number" min="0.1" step="0.1" value="5" required />
</label>
<label class="calc-field">
<span>杠杆</span>
<input id="calc-trend-leverage" type="number" min="1" step="1" value="5" required />
</label>
<label class="calc-field">
<span>方向</span>
<select id="calc-trend-direction">
<option value="long">做多</option>
<option value="short">做空</option>
</select>
</label>
<label class="calc-field">
<span>首仓入场价</span>
<input id="calc-trend-entry" type="number" min="0" step="any" placeholder="手动输入" required />
</label>
<label class="calc-field">
<span>止损价</span>
<input id="calc-trend-sl" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span id="calc-trend-add-label">补仓上沿价</span>
<input id="calc-trend-add-upper" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>止盈价</span>
<input id="calc-trend-tp" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>补仓档数</span>
<input id="calc-trend-dca-legs" type="number" min="1" max="20" step="1" value="5" />
</label>
<div class="calc-pane-split">
<div class="calc-input-panel">
<h2>趋势回调计算器</h2>
<p class="calc-hint">逻辑与实例策略页一致:首仓 50% + 补仓网格;止损金额 = 资金 × 风险%.</p>
<form id="calc-trend-form" class="calc-form">
<div class="calc-form-grid">
<label class="calc-field">
<span>交易所</span>
<select id="calc-trend-exchange" required></select>
</label>
<label class="calc-field">
<span>币种</span>
<input id="calc-trend-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
</label>
<div class="calc-field calc-field-span2">
<div id="calc-trend-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
</div>
<label class="calc-field">
<span>交易资金 (U)</span>
<input id="calc-trend-capital" type="number" min="0.01" step="any" value="1000" required />
</label>
<label class="calc-field">
<span>风险 %</span>
<input id="calc-trend-risk" type="number" min="0.1" step="0.1" value="5" required />
</label>
<label class="calc-field">
<span>杠杆</span>
<input id="calc-trend-leverage" type="number" min="1" step="1" value="5" required />
</label>
<label class="calc-field">
<span>方向</span>
<select id="calc-trend-direction">
<option value="long">做多</option>
<option value="short">做空</option>
</select>
</label>
<label class="calc-field">
<span>首仓入场价</span>
<input id="calc-trend-entry" type="number" min="0" step="any" placeholder="手动输入" required />
</label>
<label class="calc-field">
<span>止损价</span>
<input id="calc-trend-sl" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span id="calc-trend-add-label">补仓上沿价</span>
<input id="calc-trend-add-upper" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>止盈价</span>
<input id="calc-trend-tp" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>补仓档数</span>
<input id="calc-trend-dca-legs" type="number" min="1" max="20" step="1" value="5" />
</label>
</div>
<div class="calc-actions">
<button type="submit" class="primary">计算</button>
</div>
</form>
</div>
<div class="calc-actions">
<button type="submit" class="primary"></button>
</div>
</form>
<div id="calc-trend-result" class="calc-result hidden"></div>
<aside class="calc-result-panel" aria-label="趋势回调结果推算">
<h3 class="calc-result-title">结果推</h3>
<p class="calc-result-placeholder">填写左侧参数后点击「计算」</p>
<div id="calc-trend-result" class="calc-result hidden"></div>
</aside>
</div>
</section>
<section class="calc-card card" data-calc-pane="roll">
<h2>滚仓计算器</h2>
<p class="calc-hint">首仓按「单次风险」以损定仓;每次滚仓后合并持仓打到新止损 ≈ 单次风险;止盈锁定首仓价不变.最多 3 次滚仓.</p>
<form id="calc-roll-form" class="calc-form">
<div class="calc-form-grid">
<label class="calc-field">
<span>交易所</span>
<select id="calc-roll-exchange" required></select>
</label>
<label class="calc-field">
<span>币种</span>
<input id="calc-roll-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
</label>
<div class="calc-field calc-field-span2">
<div id="calc-roll-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
</div>
<label class="calc-field">
<span>交易资金 (U)</span>
<input id="calc-roll-capital" type="number" min="0.01" step="any" value="1000" required />
</label>
<label class="calc-field">
<span>单次风险 %</span>
<input id="calc-roll-risk" type="number" min="0.1" step="0.1" value="5" required />
</label>
<label class="calc-field">
<span>方向</span>
<select id="calc-roll-direction">
<option value="long">做多</option>
<option value="short">做空</option>
</select>
</label>
<label class="calc-field">
<span>首仓入场价</span>
<input id="calc-roll-entry" type="number" min="0" step="any" placeholder="手动输入" required />
</label>
<label class="calc-field">
<span>首仓止损价</span>
<input id="calc-roll-sl" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>止盈价(锁定)</span>
<input id="calc-roll-tp" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>已完成滚仓次数</span>
<input id="calc-roll-legs-done" type="number" min="0" max="3" step="1" value="0" />
</label>
<div class="calc-pane-split">
<div class="calc-input-panel">
<h2>滚仓计算器</h2>
<p class="calc-hint">首仓按「单次风险」以损定仓;每次滚仓后合并持仓打到新止损 ≈ 单次风险;止盈锁定首仓价不变.最多 3 次滚仓.</p>
<form id="calc-roll-form" class="calc-form">
<div class="calc-form-grid">
<label class="calc-field">
<span>交易所</span>
<select id="calc-roll-exchange" required></select>
</label>
<label class="calc-field">
<span>币种</span>
<input id="calc-roll-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
</label>
<div class="calc-field calc-field-span2">
<div id="calc-roll-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
</div>
<label class="calc-field">
<span>交易资金 (U)</span>
<input id="calc-roll-capital" type="number" min="0.01" step="any" value="1000" required />
</label>
<label class="calc-field">
<span>单次风险 %</span>
<input id="calc-roll-risk" type="number" min="0.1" step="0.1" value="5" required />
</label>
<label class="calc-field">
<span>方向</span>
<select id="calc-roll-direction">
<option value="long">做多</option>
<option value="short">做空</option>
</select>
</label>
<label class="calc-field">
<span>首仓入场价</span>
<input id="calc-roll-entry" type="number" min="0" step="any" placeholder="手动输入" required />
</label>
<label class="calc-field">
<span>首仓止损价</span>
<input id="calc-roll-sl" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>止盈价(锁定)</span>
<input id="calc-roll-tp" type="number" min="0" step="any" required />
</label>
<label class="calc-field">
<span>已完成滚仓次数</span>
<input id="calc-roll-legs-done" type="number" min="0" max="3" step="1" value="0" />
</label>
</div>
<div class="calc-roll-legs-head">
<strong>滚仓加仓(最多 3 次)</strong>
<button type="button" id="calc-roll-add-leg" class="ghost">+ 添加滚仓</button>
</div>
<div id="calc-roll-legs-list" class="calc-roll-legs-list"></div>
<div class="calc-actions">
<button type="submit" class="primary">计算</button>
</div>
</form>
</div>
<div class="calc-roll-legs-head">
<strong>滚仓加仓(最多 3 次)</strong>
<button type="button" id="calc-roll-add-leg" class="ghost">+ 添加滚仓</button>
</div>
<div id="calc-roll-legs-list" class="calc-roll-legs-list"></div>
<div class="calc-actions">
<button type="submit" class="primary">计算</button>
</div>
</form>
<div id="calc-roll-result" class="calc-result hidden"></div>
</section>
<aside class="calc-result-panel" aria-label="滚仓结果推算">
<h3 class="calc-result-title">结果推算</h3>
<p class="calc-result-placeholder">填写左侧参数后点击「计算」</p>
<div id="calc-roll-result" class="calc-result hidden"></div>
</aside>
</div>
</section>
</div>
</div>
</div>