fix: 滚仓斐波/突破价输入框可在切换模式后编辑

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-26 23:07:08 +08:00
parent 7d03e8e93e
commit 5a887de6f4
8 changed files with 42 additions and 38 deletions
+1 -1
View File
@@ -834,7 +834,7 @@
<script src="/static/ai_review_render.js?v=2"></script> <script src="/static/ai_review_render.js?v=2"></script>
<script src="/static/form_submit_guard.js?v=2"></script> <script src="/static/form_submit_guard.js?v=2"></script>
<script src="/static/manual_order_rr_preview.js?v=4"></script> <script src="/static/manual_order_rr_preview.js?v=4"></script>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>
<script> <script>
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }}; const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }}; const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }};
+1 -1
View File
@@ -801,7 +801,7 @@
<script src="/static/ai_review_render.js?v=2"></script> <script src="/static/ai_review_render.js?v=2"></script>
<script src="/static/form_submit_guard.js?v=2"></script> <script src="/static/form_submit_guard.js?v=2"></script>
<script src="/static/manual_order_rr_preview.js?v=4"></script> <script src="/static/manual_order_rr_preview.js?v=4"></script>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>
<script> <script>
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }}; const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }}; const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }};
+1 -1
View File
@@ -801,7 +801,7 @@
<script src="/static/ai_review_render.js?v=2"></script> <script src="/static/ai_review_render.js?v=2"></script>
<script src="/static/form_submit_guard.js?v=2"></script> <script src="/static/form_submit_guard.js?v=2"></script>
<script src="/static/manual_order_rr_preview.js?v=4"></script> <script src="/static/manual_order_rr_preview.js?v=4"></script>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>
<script> <script>
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }}; const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }}; const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }};
+1 -1
View File
@@ -830,7 +830,7 @@
<script src="/static/ai_review_render.js?v=2"></script> <script src="/static/ai_review_render.js?v=2"></script>
<script src="/static/form_submit_guard.js?v=2"></script> <script src="/static/form_submit_guard.js?v=2"></script>
<script src="/static/manual_order_rr_preview.js?v=4"></script> <script src="/static/manual_order_rr_preview.js?v=4"></script>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>
<script> <script>
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }}; const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }}; const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }};
+1 -1
View File
@@ -114,7 +114,7 @@
<script src="/static/ai_review_render.js?v=2"></script> <script src="/static/ai_review_render.js?v=2"></script>
<script src="/static/form_submit_guard.js?v=2"></script> <script src="/static/form_submit_guard.js?v=2"></script>
<script src="/static/manual_order_rr_preview.js?v=4"></script> <script src="/static/manual_order_rr_preview.js?v=4"></script>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>
<script src="/static/key_monitor_form.js?v=1"></script> <script src="/static/key_monitor_form.js?v=1"></script>
{% include 'embed_boot_scripts.html' %} {% include 'embed_boot_scripts.html' %}
<script src="/static/instance_embed.js?v=4"></script> <script src="/static/instance_embed.js?v=4"></script>
-4
View File
@@ -1305,10 +1305,6 @@ html[data-theme="light"] .detail-actions {
align-items: center; align-items: center;
} }
.roll-field[hidden] {
display: none !important;
}
#strategy-roll-panel .roll-risk-banner { #strategy-roll-panel .roll-risk-banner {
margin-bottom: 8px; margin-bottom: 8px;
color: #8fc8ff; color: #8fc8ff;
+30 -22
View File
@@ -1,6 +1,35 @@
(function () { (function () {
"use strict"; "use strict";
function syncRollFormMode(form, mode) {
if (!form) return;
const m = mode || "market";
form.setAttribute("data-add-mode", m);
const showFib = m === "fib_618" || m === "fib_786";
const showBreakout = m === "breakout";
const fibWrap = form.querySelector(".roll-field-fib");
const breakoutWrap = form.querySelector(".roll-field-breakout");
const fibUpper = form.querySelector("#roll-fib-upper");
const fibLower = form.querySelector("#roll-fib-lower");
const breakoutInput = form.querySelector("#roll-breakout");
function tuneInput(inp, active, required) {
if (!inp) return;
inp.disabled = !active;
inp.required = !!required && active;
inp.tabIndex = active ? 0 : -1;
if (!active) inp.value = "";
}
if (fibWrap) fibWrap.setAttribute("aria-hidden", showFib ? "false" : "true");
if (breakoutWrap) breakoutWrap.setAttribute("aria-hidden", showBreakout ? "false" : "true");
tuneInput(fibUpper, showFib, showFib);
tuneInput(fibLower, showFib, showFib);
tuneInput(breakoutInput, showBreakout, showBreakout);
}
window.syncRollFormMode = syncRollFormMode;
const form = document.getElementById("roll-form"); const form = document.getElementById("roll-form");
if (!form) return; if (!form) return;
@@ -13,11 +42,6 @@
const previewBox = document.getElementById("roll-preview-box"); const previewBox = document.getElementById("roll-preview-box");
const previewText = document.getElementById("roll-preview-text"); const previewText = document.getElementById("roll-preview-text");
const countdownEl = document.getElementById("roll-countdown"); const countdownEl = document.getElementById("roll-countdown");
const fibWrap = form.querySelector(".roll-field-fib");
const breakoutWrap = form.querySelector(".roll-field-breakout");
const fibUpper = document.getElementById("roll-fib-upper");
const fibLower = document.getElementById("roll-fib-lower");
const breakoutInput = document.getElementById("roll-breakout");
let countdownTimer = null; let countdownTimer = null;
let previewOk = false; let previewOk = false;
@@ -40,24 +64,8 @@
"当前风险:" + rp + "%(来自监控单 #" + (opt.getAttribute("data-monitor-id") || "?") + ""; "当前风险:" + rp + "%(来自监控单 #" + (opt.getAttribute("data-monitor-id") || "?") + "";
} }
function setFieldGroup(wrap, inputs, visible, required) {
if (!wrap) return;
wrap.hidden = !visible;
inputs.forEach(function (inp) {
if (!inp) return;
inp.disabled = !visible;
inp.required = !!required && visible;
if (!visible) inp.value = "";
});
}
function syncFieldVisibility() { function syncFieldVisibility() {
const mode = modeSel.value || "market"; syncRollFormMode(form, modeSel.value || "market");
form.setAttribute("data-add-mode", mode);
const showFib = mode === "fib_618" || mode === "fib_786";
const showBreakout = mode === "breakout";
setFieldGroup(fibWrap, [fibUpper, fibLower], showFib, showFib);
setFieldGroup(breakoutWrap, [breakoutInput], showBreakout, showBreakout);
resetPreview(); resetPreview();
} }
+7 -7
View File
@@ -30,18 +30,18 @@
{% endfor %} {% endfor %}
</select> </select>
<input type="hidden" name="direction" id="roll-direction" value="long"> <input type="hidden" name="direction" id="roll-direction" value="long">
<select name="add_mode" id="roll-add-mode" onchange="var f=document.getElementById('roll-form');if(f){f.setAttribute('data-add-mode',this.value);}"> <select name="add_mode" id="roll-add-mode" onchange="var f=document.getElementById('roll-form');if(f){f.setAttribute('data-add-mode',this.value);if(window.syncRollFormMode)syncRollFormMode(f,this.value);}">
<option value="market">市价加仓</option> <option value="market">市价加仓</option>
<option value="fib_618">斐波 0.618</option> <option value="fib_618">斐波 0.618</option>
<option value="fib_786">斐波 0.786</option> <option value="fib_786">斐波 0.786</option>
<option value="breakout">突破加仓</option> <option value="breakout">突破加仓</option>
</select> </select>
<span class="roll-field roll-field-fib" hidden> <span class="roll-field roll-field-fib">
<input name="fib_upper" id="roll-fib-upper" step="any" placeholder="上沿 H" disabled> <input name="fib_upper" id="roll-fib-upper" step="any" placeholder="上沿 H">
<input name="fib_lower" id="roll-fib-lower" step="any" placeholder="下沿 L" disabled> <input name="fib_lower" id="roll-fib-lower" step="any" placeholder="下沿 L">
</span> </span>
<span class="roll-field roll-field-breakout" hidden> <span class="roll-field roll-field-breakout">
<input name="breakthrough_price" id="roll-breakout" step="any" placeholder="突破价" disabled> <input name="breakthrough_price" id="roll-breakout" step="any" placeholder="突破价">
</span> </span>
<input name="new_stop_loss" id="roll-stop-loss" type="number" min="0" step="any" placeholder="新止损价" required> <input name="new_stop_loss" id="roll-stop-loss" type="number" min="0" step="any" placeholder="新止损价" required>
<button type="button" id="roll-preview-btn" {% if roll_trend_active %}disabled{% endif %}>预览</button> <button type="button" id="roll-preview-btn" {% if roll_trend_active %}disabled{% endif %}>预览</button>
@@ -101,4 +101,4 @@
</table> </table>
</div> </div>
</div> </div>
<script src="/static/strategy_roll.js?v=2"></script> <script src="/static/strategy_roll.js?v=3"></script>