fix: 注册 order_entry_model.js 静态路由,embed 内联联动逻辑

中控 iframe 下 JS 404 导致小分歧/杠杆不更新;boot 脚本内联兜底。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-06 00:34:26 +08:00
parent e81343ae91
commit e526d6af76
7 changed files with 54 additions and 11 deletions
+1
View File
@@ -68,6 +68,7 @@ def install_instance_theme_static(app) -> None:
"strategy_roll.js": "application/javascript; charset=utf-8",
"instance_page.css": "text/css; charset=utf-8",
"instance_embed.js": "application/javascript; charset=utf-8",
"order_entry_model.js": "application/javascript; charset=utf-8",
"focus_chart_page.js": "application/javascript; charset=utf-8",
"focus_chart_page.css": "text/css; charset=utf-8",
"trade_stats_calendar.js": "application/javascript; charset=utf-8",
+48 -6
View File
@@ -3,6 +3,52 @@ const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
const JOURNAL_ENTRY_REASON_OTHER = {{ entry_reason_other_value | tojson }};
function tradeStyleForEntryModelSelect(sel){
if(!sel || !sel.value) return "trend";
var opt = sel.options[sel.selectedIndex];
if(opt){
var ds = opt.getAttribute("data-trade-style");
if(ds === "swing" || ds === "trend") return ds;
}
return (ORDER_ENTRY_MODEL_TRADE_STYLE && ORDER_ENTRY_MODEL_TRADE_STYLE[sel.value]) || "trend";
}
function syncOrderEntryModelTradeStyle(){
var sel = document.getElementById("order-entry-model");
var hidden = document.getElementById("order-trade-style-hidden");
var hint = document.getElementById("order-trade-style-hint");
if(!sel || !hidden) return;
var labels = { trend: "趋势单", swing: "波段单" };
var ts = tradeStyleForEntryModelSelect(sel);
hidden.value = ts;
if(hint) hint.textContent = labels[ts] || ts;
}
function paintOrderLeverageHint(leverage){
var hidden = document.getElementById("order-leverage");
var hint = document.getElementById("order-leverage-hint");
if(!hidden && !hint) return;
var lev = parseInt(leverage, 10);
if(!Number.isFinite(lev) || lev <= 0){
if(hint) hint.textContent = "杠杆 —";
if(hidden) hidden.value = "";
return;
}
if(hidden) hidden.value = String(lev);
if(hint) hint.textContent = "杠杆 " + lev + "x";
}
function initOrderEntryModelSelect(root){
var scope = (root && root.querySelector) ? root : document;
var sel = scope.querySelector ? scope.querySelector("#order-entry-model") : document.getElementById("order-entry-model");
if(!sel) return;
if(sel.dataset.entryModelWired !== "1"){
sel.dataset.entryModelWired = "1";
sel.addEventListener("change", syncOrderEntryModelTradeStyle);
}
syncOrderEntryModelTradeStyle();
}
window.syncOrderEntryModelTradeStyle = syncOrderEntryModelTradeStyle;
window.paintOrderLeverageHint = paintOrderLeverageHint;
window.initOrderEntryModelSelect = initOrderEntryModelSelect;
function reloadInstancePage(){
if(document.body && document.body.getAttribute("data-embed-shell") === "1" && window.InstanceEmbed){
window.InstanceEmbed.reloadCurrentTab();
@@ -1026,12 +1072,7 @@ function refreshOrderDefaults(){
.then(data=>{
if(!data.ok){ return; }
if(data.leverage){
if(typeof paintOrderLeverageHint === "function"){
paintOrderLeverageHint(data.leverage);
} else {
const levEl = document.getElementById("order-leverage");
if(levEl) levEl.value = data.leverage;
}
paintOrderLeverageHint(data.leverage);
}
if(typeof data.available_trading_usdt !== "undefined" && data.available_trading_usdt !== null){
latestAvailableUsdt = Number(data.available_trading_usdt);
@@ -1242,6 +1283,7 @@ if(addOrderForm){
}
refreshOrderDefaults();
if(typeof initOrderEntryModelSelect === "function") initOrderEntryModelSelect();
refreshPriceSnapshotConditional();
setInterval(refreshAccountSnapshot, Number(document.body.dataset.balanceRefreshMs || 30000));
function refreshPriceSnapshotConditional(){
+1 -1
View File
@@ -121,7 +121,7 @@
<script src="/static/time_close_ui.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/order_entry_model.js?v=2"></script>
<script src="/static/order_entry_model.js?v=3"></script>
<script src="/static/manual_order_rr_preview.js?v=5"></script>
<script src="/static/symbol_live_price.js?v=2"></script>
<script src="/static/strategy_roll.js?v=6"></script>
@@ -1,7 +1,7 @@
{# 趋势户:开仓类型 → 自动 trade_style;日内户:仍选手动 trend/swing #}
{% macro order_entry_type_fields() -%}
{% if order_entry_profile == 'trend_div' %}
<select name="entry_model" id="order-entry-model" required title="大分歧A/B为趋势单,小分歧为波段单">
<select name="entry_model" id="order-entry-model" required title="大分歧A/B为趋势单,小分歧为波段单" onchange="syncOrderEntryModelTradeStyle()">
<option value="">开仓类型</option>
{% for opt in entry_model_options %}
<option value="{{ opt.code }}" data-trade-style="{{ opt.trade_style }}" title="{{ opt.help }}">{{ opt.label }}</option>