From 00c9dc300fca42cb135b199918eb45adcd5d8ee9 Mon Sep 17 00:00:00 2001 From: liaoxinyu Date: Fri, 21 Nov 2025 15:53:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B8=81=E5=B8=81k=E7=BA=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8D=E4=BC=9A=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/KLine.vue | 67 +++++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/src/components/KLine.vue b/src/components/KLine.vue index b9792de..acf0b2e 100644 --- a/src/components/KLine.vue +++ b/src/components/KLine.vue @@ -24,7 +24,8 @@ export default { data() { return { model: null, // 数据模型 - interval: "1D" // [字符串格式]和TV的resolution同步 + interval: "1D" ,// [字符串格式]和TV的resolution同步 + intertime: '' }; }, @@ -97,7 +98,39 @@ export default { } return period; }, - + translateInterval2Period1() { + let period1; + switch (this.intertime) { + case "1": + period1 = "1min"; + break; + case "5": + period1 = "5min"; + break; + case "15": + period1 = "15min"; + break; + case "30": + period1 = "30min"; + break; + case "60": + period1 = "60min"; + break; + case "D": + case "1D": + period1 = "1day"; + break; + case "W": + case "1W": + period1 = "1week"; + break; + case "M": + case "1M": + period1 = "1mon"; + break; + } + return period1; + }, // 创建分时按钮 createBtns() { const model = this.model; @@ -274,10 +307,27 @@ export default { // 获取历史记录数据 getHistoryCallback(onLoadCallback) { // 取图表回传的solution + this.intertime = this.interval; this.interval = this.model.interval; - + + let period1 = this.translateInterval2Period1(); // 转化接口所需的period let period = this.translateInterval2Period(); + if(this.intertime!==this.model.interval){ + this.model.subscribe([ + { + cmd: "unsub", + msg: `Kline_${this.symbol}_${period1}` + }, + { + cmd: "sub", + msg: `Kline_${this.symbol}_${period}` + } + ]); + + // 已有图表库 通过修改symbol触发图标库更新 重新执行getSymbol和getBar + this.model.setSymbol(this.symbol); + } Option.getKline({ symbol: this.symbol, @@ -308,10 +358,11 @@ export default { // 初始化图表 initTV() { // 先订阅数据 再创建图表库 + let period = this.translateInterval2Period(); this.model.subscribe([ { cmd: "sub", - msg: `Kline_${this.symbol}_1day` + msg: `Kline_${this.symbol}_${period}` } ]); // console.log(this.lang) @@ -348,15 +399,16 @@ export default { // 初始化订阅数据并渲染图表库 this.initTV(); } else { + let period = this.translateInterval2Period(); // 切换交易对 取消旧数据 订阅新数据 this.model.subscribe([ { cmd: "unsub", - msg: `Kline_${oldVal}_${this.interval}min` + msg: `Kline_${oldVal}_${period}` }, { cmd: "sub", - msg: `Kline_${newVal}_${this.interval}min` + msg: `Kline_${newVal}_${period}` } ]); @@ -371,10 +423,11 @@ export default { // console.info(msg) // this.model = new Model(msg, this); this.model.conglian(msg) + let period = this.translateInterval2Period(); this.model.subscribe([ { cmd: "sub", - msg: `Kline_${this.symbol}_${this.interval}min` + msg: `Kline_${this.symbol}_${period}` } ]);