锁仓上限改为可配置,默认3次不变,止盈按钮左侧增加修改入口

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
fish
2026-07-27 12:57:34 +08:00
parent 1a70a60dba
commit 434acb0470
6 changed files with 70 additions and 6 deletions
+37 -3
View File
@@ -58,11 +58,13 @@
<span class="badge badge-up">{{ round.daily_hands }} 手/天</span>
<span style="font-size:0.82rem;color:var(--sub);">已开 {{ round.positions|length }} 天</span>
<span style="font-size:0.82rem;color:var(--sub);">开始 {{ round.started_at }}</span>
<span style="font-size:0.82rem;font-weight:600;{% if locks >= 3 %}color:var(--danger-fg);{% endif %}">
锁仓 {{ locks }}/3
{% if locks >= 3 %} ⚠ 熔断{% endif %}
<span style="font-size:0.82rem;font-weight:600;{% if locks >= round.max_locks %}color:var(--danger-fg);{% endif %}">
锁仓 {{ locks }}/{{ round.max_locks }}
{% if locks >= round.max_locks %} ⚠ 熔断{% endif %}
</span>
<span style="margin-left:auto;display:flex;gap:8px;">
<button style="background:var(--surface);color:var(--fg);border:1px solid var(--border);padding:3px 12px;border-radius:4px;cursor:pointer;font-size:0.78rem;"
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>
@@ -180,6 +182,24 @@ function filterContracts() {
});
}
}
function showMaxLocksModal(rid, currentMax) {
document.getElementById('maxLocksRid').value = rid;
document.getElementById('maxLocksInput').value = currentMax;
document.getElementById('maxLocksModal').style.display = 'block';
document.getElementById('maxLocksModalOverlay').style.display = 'block';
document.getElementById('maxLocksInput').focus();
}
function hideMaxLocksModal() {
document.getElementById('maxLocksModal').style.display = 'none';
document.getElementById('maxLocksModalOverlay').style.display = 'none';
}
function doUpdateMaxLocks() {
var rid = document.getElementById('maxLocksRid').value;
var fd = new FormData();
fd.append('max_locks', document.getElementById('maxLocksInput').value);
fetch('/positions/' + rid + '/max-locks', {method:'POST', body:fd})
.then(function() { location.reload(); });
}
function showLockConfirm(pid, lockPrice) {
document.getElementById('lockPid').value = pid;
document.getElementById('lockPriceInput').value = lockPrice;
@@ -200,6 +220,20 @@ function filterContracts() {
}
</script>
<div id="maxLocksModalOverlay" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:159;" onclick="hideMaxLocksModal()"></div>
<div id="maxLocksModal" style="display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px;z-index:160;width:300px;max-width:90vw;">
<h3 style="margin-bottom:16px;">修改锁仓上限</h3>
<input type="hidden" id="maxLocksRid">
<div class="form-group">
<label>锁仓次数上限(熔断阈值)</label>
<input type="number" id="maxLocksInput" min="1" max="10" required style="font-size:1rem;text-align:center;font-weight:600;">
</div>
<div style="display:flex;gap:10px;justify-content:flex-end;margin-top:8px;">
<button class="btn" style="background:var(--th-bg);color:var(--fg);" onclick="hideMaxLocksModal()">取消</button>
<button class="btn" style="background:var(--accent);color:#fff;" onclick="doUpdateMaxLocks()">确认修改</button>
</div>
</div>
<div id="lockModalOverlay" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:149;" onclick="hideLockModal()"></div>
<div id="lockModal" style="display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px;z-index:150;width:300px;max-width:90vw;">
<h3 style="margin-bottom:16px;">确认锁仓</h3>