+
开仓检查清单
打印
-
开仓检查清单
@@ -1160,7 +1154,7 @@
-
+
diff --git a/manual_trading_hub/static/strategy.js b/manual_trading_hub/static/strategy.js
index d657afd..c714291 100644
--- a/manual_trading_hub/static/strategy.js
+++ b/manual_trading_hub/static/strategy.js
@@ -12,12 +12,8 @@
const docCard = page.querySelector(".strategy-doc-card");
const checklistCard = page.querySelector(".strategy-checklist-card");
const checklistTitle = document.getElementById("strategy-checklist-title");
- const checklistTitlePrint = document.getElementById("strategy-checklist-title-print");
const checklistBody = document.getElementById("strategy-checklist-body");
const footnotesEl = document.getElementById("strategy-checklist-footnotes");
- const printTitle = document.getElementById("strategy-print-title");
- const printMeta = document.getElementById("strategy-print-meta");
- const printHeader = document.getElementById("strategy-print-header");
const btnPrintDoc = document.getElementById("strategy-btn-print-doc");
const btnPrintChecklist = document.getElementById("strategy-btn-print-checklist");
const btnDownload = document.getElementById("strategy-btn-download");
@@ -87,7 +83,6 @@
const cl = checklist || {};
const title = cl.title || "开仓检查清单";
if (checklistTitle) checklistTitle.textContent = title;
- if (checklistTitlePrint) checklistTitlePrint.textContent = title;
if (!checklistBody) return;
const groups = cl.groups || [];
if (!groups.length) {
@@ -117,12 +112,6 @@
docSource.textContent = `文档:${data.md_source || ""}${ver}`;
}
renderChecklist(data.checklist);
- if (printTitle) printTitle.textContent = data.title || data.label || "";
- if (printMeta) {
- const ver = data.version ? ` · ${data.version}` : "";
- printMeta.textContent = `${data.label || activeKey}${ver}`;
- }
- if (printHeader) printHeader.classList.remove("hidden");
scheduleHeightSync();
}
@@ -154,22 +143,12 @@
}
function printSection(mode) {
- document.body.classList.remove("hub-strategy-print-doc", "hub-strategy-print-checklist");
- document.body.classList.add("hub-strategy-printing");
- if (mode === "doc") document.body.classList.add("hub-strategy-print-doc");
- if (mode === "checklist") document.body.classList.add("hub-strategy-print-checklist");
- window.print();
- window.addEventListener(
- "afterprint",
- () => {
- document.body.classList.remove(
- "hub-strategy-printing",
- "hub-strategy-print-doc",
- "hub-strategy-print-checklist"
- );
- },
- { once: true }
- );
+ const part = mode === "checklist" ? "checklist" : "doc";
+ const url = `/api/strategy/${encodeURIComponent(activeKey)}/print?part=${encodeURIComponent(part)}`;
+ const w = window.open(url, "_blank", "noopener,noreferrer");
+ if (!w) {
+ if (statusEl) statusEl.textContent = "请允许弹出窗口以打开打印预览";
+ }
}
function bindActions() {
diff --git a/tests/test_hub_strategy_lib.py b/tests/test_hub_strategy_lib.py
index 8475fca..3f3ab79 100644
--- a/tests/test_hub_strategy_lib.py
+++ b/tests/test_hub_strategy_lib.py
@@ -7,6 +7,7 @@ from lib.hub.hub_strategy_lib import (
load_strategy_payload,
strategy_meta_payload,
build_export_html,
+ build_print_html,
)
@@ -34,6 +35,15 @@ class TestHubStrategyLib(unittest.TestCase):
self.assertIn("Gate", html)
self.assertIn("☐", html)
+ def test_print_html_doc_and_checklist(self):
+ doc = build_print_html("binance", "doc")
+ cl = build_print_html("binance", "checklist")
+ self.assertIn("window.print", doc)
+ self.assertIn("window.print", cl)
+ self.assertIn("币安", doc)
+ self.assertIn("开仓检查清单", cl)
+ self.assertIn("☐", cl)
+
if __name__ == "__main__":
unittest.main()