修复止盈确认弹窗缺少参数导致的报错,已平仓页面按品种分组展示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -65,14 +65,14 @@
|
||||
onclick="showMaxLocksModal({{ round.id }}, {{ round.max_locks }})">修改锁仓数</button>
|
||||
<form method="post" action="/positions/{{ round.id }}/close" style="display:inline;">
|
||||
<input type="hidden" name="result" value="profit_taken">
|
||||
<button class="btn" style="background:var(--success);color:#fff;font-size:0.78rem;padding:4px 14px;" onclick="confirmDelete(event, '确认 {{ round.contract_code }} 止盈清仓?', this.closest('form').action)">止盈</button>
|
||||
<button class="btn" style="background:var(--success);color:#fff;font-size:0.78rem;padding:4px 14px;" onclick="confirmDelete(event, '确认 {{ round.contract_code }} 止盈清仓?', this.closest('form'))">止盈</button>
|
||||
</form>
|
||||
<form method="post" action="/positions/{{ round.id }}/close" style="display:inline;">
|
||||
<input type="hidden" name="result" value="meltdown">
|
||||
<button class="btn" style="background:var(--danger);color:#fff;font-size:0.78rem;padding:4px 14px;" onclick="confirmDelete(event, '确认 {{ round.contract_code }} 熔断清仓?', this.closest('form').action)">熔断</button>
|
||||
<button class="btn" style="background:var(--danger);color:#fff;font-size:0.78rem;padding:4px 14px;" onclick="confirmDelete(event, '确认 {{ round.contract_code }} 熔断清仓?', this.closest('form'))">熔断</button>
|
||||
</form>
|
||||
<form method="post" action="/positions/{{ round.id }}/delete" style="display:inline;">
|
||||
<button style="background:transparent;color:#dc2626;border:1px solid #ef4444;padding:3px 10px;border-radius:4px;cursor:pointer;font-size:0.78rem;" onclick="confirmDelete(event, '确定删除 {{ round.contract_code }} 整轮数据?', this.closest('form').action)">删除</button>
|
||||
<button style="background:transparent;color:#dc2626;border:1px solid #ef4444;padding:3px 10px;border-radius:4px;cursor:pointer;font-size:0.78rem;" onclick="confirmDelete(event, '确定删除 {{ round.contract_code }} 整轮数据?', this.closest('form'))">删除</button>
|
||||
</form>
|
||||
</span>
|
||||
</div>
|
||||
@@ -254,13 +254,22 @@ function filterContracts() {
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function confirmDelete(e, msg, url) {
|
||||
function confirmDelete(e, msg, formEl) {
|
||||
e.preventDefault();
|
||||
document.getElementById('confirmMsg').textContent = msg;
|
||||
document.getElementById('confirmBtn').onclick = function() {
|
||||
var f = document.createElement('form');
|
||||
f.method = 'POST';
|
||||
f.action = url;
|
||||
f.action = formEl.action;
|
||||
// copy hidden inputs from the original form
|
||||
var inputs = formEl.querySelectorAll('input[type="hidden"]');
|
||||
for (var i = 0; i < inputs.length; i++) {
|
||||
var clone = document.createElement('input');
|
||||
clone.type = 'hidden';
|
||||
clone.name = inputs[i].name;
|
||||
clone.value = inputs[i].value;
|
||||
f.appendChild(clone);
|
||||
}
|
||||
document.body.appendChild(f);
|
||||
f.submit();
|
||||
};
|
||||
|
||||
@@ -171,14 +171,35 @@
|
||||
<div class="tab-panel active">
|
||||
{# ═══════════════ 已平仓 ═══════════════ #}
|
||||
|
||||
{% set closed_tab = request.query_params.get('tab', '全部') %}
|
||||
{% set grouped_closed = {} %}
|
||||
{% for t in closed_trades %}
|
||||
{% set _ = grouped_closed.setdefault(t.product_code, []).append(t) %}
|
||||
{% endfor %}
|
||||
|
||||
{% if closed_trades %}
|
||||
<div class="section-title">已平仓 · {{ closed_trades|length }} 笔</div>
|
||||
<div class="table-wrap">
|
||||
|
||||
<div class="sub-tabs">
|
||||
<a href="/trades/?view=closed&tab=全部" class="sub-tab-btn{% if closed_tab == '全部' %} active{% endif %}">全部</a>
|
||||
{% for pc in product_codes %}
|
||||
{% set count = grouped_closed.get(pc, [])|length %}
|
||||
<a href="/trades/?view=closed&tab={{ pc }}" class="sub-tab-btn{% if closed_tab == pc %} active{% endif %}">{{ pc }}{% if count %} · {{ count }}{% endif %}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% for pc in product_codes %}
|
||||
{% if closed_tab == '全部' or closed_tab == pc %}
|
||||
{% set trades = grouped_closed.get(pc, []) %}
|
||||
{% if trades %}
|
||||
<div class="table-wrap" style="margin-bottom:24px;">
|
||||
{% if closed_tab == '全部' %}
|
||||
<div class="section-title" style="font-size:0.88rem;margin-bottom:0;padding:6px 12px;">{{ pc }} · {{ trades|length }} 笔</div>
|
||||
{% endif %}
|
||||
<table>
|
||||
<tr><th>品种</th><th>合约</th><th>方向</th><th>开仓</th><th>平仓</th><th>持仓</th><th>开仓价</th><th>平仓价</th><th>开仓费</th><th>平仓费</th><th>盈亏</th><th>操作</th></tr>
|
||||
{% for t in closed_trades %}
|
||||
<tr><th>合约</th><th>方向</th><th>开仓</th><th>平仓</th><th>持仓</th><th>开仓价</th><th>平仓价</th><th>开仓费</th><th>平仓费</th><th>盈亏</th><th>操作</th></tr>
|
||||
{% for t in trades %}
|
||||
<tr>
|
||||
<td>{{ t.product_code }}</td>
|
||||
<td><strong>{{ t.contract_code.replace(t.product_code, '', 1) }}</strong></td>
|
||||
<td>
|
||||
{% if t.direction == 'short' %}
|
||||
@@ -205,7 +226,7 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<button style="background:var(--success-bg);color:var(--success-fg);border:1px solid var(--success);padding:3px 10px;border-radius:4px;cursor:pointer;font-size:0.78rem;margin-left:8px;"
|
||||
<button style="background:var(--success-bg);color:var(--success-fg);border:1px solid var(--success);padding:3px 10px;border-radius:4px;cursor:pointer;font-size:0.78rem;"
|
||||
onclick="showEditForm('trade', {{ t.id }}, '{{ t.product_code }}', '{{ t.contract_code }}', '{{ t.direction }}', {{ t.open_price }}, {{ t.open_fee or 0 }}, '{{ t.open_date }}', {{ t.close_price }}, {{ t.close_fee or 0 }}, '{{ t.close_date }}', '{{ t.status }}')">编辑</button>
|
||||
<form method="post" action="/trades/{{ t.id }}/delete" style="display:inline;margin-left:8px;">
|
||||
<button style="background:transparent;color:#dc2626;border:1px solid #ef4444;padding:3px 10px;border-radius:4px;cursor:pointer;font-size:0.78rem;" onclick="confirmDelete(event, '确定删除此记录?', this.closest('form').action)">删除</button>
|
||||
@@ -215,6 +236,9 @@
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set ns = namespace(total_pnl=0, total_open_fee=0, total_close_fee=0) %}
|
||||
{% for t in closed_trades %}
|
||||
|
||||
Reference in New Issue
Block a user