From 59cb12ab8eb1e80cf845b50e4ff35a40d6cc50ef Mon Sep 17 00:00:00 2001 From: hongxilin <17663930442@163.com> Date: Thu, 30 Oct 2025 16:32:01 +0800 Subject: [PATCH 1/8] =?UTF-8?q?Condition=E9=A1=B5=E9=9D=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 2 +- api/tcpConnection.js | 2 +- pages/marketSituation/marketCondition.vue | 228 +++++++++++++----------------- 3 files changed, 104 insertions(+), 128 deletions(-) diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json index 7ef9f55..728c4a6 100644 --- a/.hbuilderx/launch.json +++ b/.hbuilderx/launch.json @@ -2,7 +2,7 @@ "version" : "1.0", "configurations" : [ { - "customPlaygroundType" : "device", + "customPlaygroundType" : "local", "packageName" : "io.dcloud.HBuilder", "playground" : "custom", "type" : "uni-app:app-android" diff --git a/api/tcpConnection.js b/api/tcpConnection.js index 1f55776..f01f915 100644 --- a/api/tcpConnection.js +++ b/api/tcpConnection.js @@ -6,7 +6,7 @@ */ // 引用TCP插件 -// const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin'); +const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin'); // const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin"); // TCP连接配置 diff --git a/pages/marketSituation/marketCondition.vue b/pages/marketSituation/marketCondition.vue index 3d398d9..66f66e6 100644 --- a/pages/marketSituation/marketCondition.vue +++ b/pages/marketSituation/marketCondition.vue @@ -204,16 +204,16 @@ - - - - - - - - - - + + + + + + + + + + K线图开发中... @@ -249,146 +249,120 @@ import { HCharts } from "@/common/canvasMethod.js"; import tcpConnection, { TCPConnection, TCP_CONFIG } from "../../api/tcpConnection"; import { useMarketSituationStore } from "../../stores/modules/marketSituation.js"; const marketSituationStore = useMarketSituationStore(); -import HQChartControl from '@/uni_modules/jones-hqchart2/js_sdk/HQChartControl.vue' +import HQChartControl from "@/uni_modules/jones-hqchart2/js_sdk/HQChartControl.vue"; //测试数据 -import HQData from "@/uni_modules/jones-hqchart2/js_sdk/umychart.NetworkFilterTest.vue.js" -import { dailyDataPackets } from '@/common/dailyData.js' - +import HQData from "@/uni_modules/jones-hqchart2/js_sdk/umychart.NetworkFilterTest.vue.js"; +import { dailyDataPackets } from "@/common/dailyData.js"; // 响应式数据 -const Symbol = ref('GBPAUD.FXCM') -const ChartWidth = ref(350) -const ChartHeight = ref(500) -const HQChartCtrl = ref(null) +const Symbol = ref("GBPAUD.FXCM"); +const HQChartCtrl = ref(null); // 方法定义 const CreateHQChart = () => { - const chartHeight = ChartHeight.value - const hqchartCtrl = HQChartCtrl.value + const width = canvasWidth.value; + const height = canvasHeight.value; + const hqchartCtrl = HQChartCtrl.value; - if (!hqchartCtrl) return + if (!hqchartCtrl) return; - //修改option - //hqchartCtrl.KLine.Option. - hqchartCtrl.NetworkFilter = NetworkFilter - hqchartCtrl.SetSize(ChartWidth.value, chartHeight) - hqchartCtrl.OnSize() + //修改option + //hqchartCtrl.KLine.Option. + hqchartCtrl.NetworkFilter = NetworkFilter; + hqchartCtrl.SetSize(width, height); + hqchartCtrl.OnSize(); - hqchartCtrl.KLine.Option.IsAutoUpdate = false - hqchartCtrl.KLine.Option.KLine.Period = 4 + hqchartCtrl.KLine.Option.IsAutoUpdate = false; + hqchartCtrl.KLine.Option.KLine.Period = 4; - nextTick(() => { - hqchartCtrl.CreateHQChart() - }) -} + nextTick(() => { + hqchartCtrl.CreateHQChart(); + }); +}; const transformDailyDataToHQChart = (dailyDataPackets) => { - const symbol = dailyDataPackets.stock_code || Symbol.value - const rows = Array.isArray(dailyDataPackets.data) ? dailyDataPackets.data : [] - // HQChart日线数据格式: [Date, Open, High, Low, Close, Volume] - const data = rows.map((r, idx) => ([ - parseInt(r.trade_date, 10), // Date: YYYYMMDD - Number(idx > 0 ? rows[idx - 1].bid_close : r.bid_close), // YClose: 昨收 - Number(r.bid_open), // Open - Number(r.bid_high), // High - Number(r.bid_low), // Low - Number(r.bid_close), // Close - Number(r.tick_qty || 0), // Volume - Number(r.amount || 0) // Amount(如无则填0) - ])) - return { name: symbol, symbol, ver: 2.0, data } -} + const symbol = dailyDataPackets.stock_code || Symbol.value; + const rows = Array.isArray(dailyDataPackets.data) ? dailyDataPackets.data : []; + // HQChart日线数据格式: [Date, Open, High, Low, Close, Volume] + const data = rows.map((r, idx) => [ + parseInt(r.trade_date, 10), // Date: YYYYMMDD + Number(idx > 0 ? rows[idx - 1].bid_close : r.bid_close), // YClose: 昨收 + Number(r.bid_open), // Open + Number(r.bid_high), // High + Number(r.bid_low), // Low + Number(r.bid_close), // Close + Number(r.tick_qty || 0), // Volume + Number(r.amount || 0), // Amount(如无则填0) + ]); + return { name: symbol, symbol, ver: 2.0, data }; +}; const ClearHQChart = () => { - const hqchartCtrl = HQChartCtrl.value - if (hqchartCtrl) hqchartCtrl.ClearChart() -} + const hqchartCtrl = HQChartCtrl.value; + if (hqchartCtrl) hqchartCtrl.ClearChart(); +}; const ChangeMinutePeriod = (days) => { - const hqchartCtrl = HQChartCtrl.value - if (hqchartCtrl) hqchartCtrl.ChangeMinutePeriod(days) -} + const hqchartCtrl = HQChartCtrl.value; + if (hqchartCtrl) hqchartCtrl.ChangeMinutePeriod(days); +}; const ChangeKLinePeriod = (period) => { - const hqchartCtrl = HQChartCtrl.value - if (hqchartCtrl) hqchartCtrl.ChangeKLinePeriod(period) -} + const hqchartCtrl = HQChartCtrl.value; + if (hqchartCtrl) hqchartCtrl.ChangeKLinePeriod(period); +}; const NetworkFilter = (data, callback) => { - console.log(`[App:NetworkFilter] Name=${data.Name} Explain=${data.Explain}`) - // 阻止默认行为(默认会走HQData的CDN) - data.PreventDefault = true - - const reqSymbol = (data?.Request?.Data?.symbol) || Symbol.value || 'GBPAUD.FXCM' - - switch (data.Name) { - // 日K历史数据 - case 'KLineChartContainer::RequestHistoryData': { - const packet = dailyDataPackets[reqSymbol] - if (packet) { - const mock = transformDailyDataToHQChart(packet) - callback({ data: mock }) - } else { - // 没有该代码的本地包时,返回空结构 - callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }) - } - break - } - // 日K实时数据(我们已关闭自动更新;如触发则回空) - case 'KLineChartContainer::RequestRealtimeData': { - callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }) - break - } - // 分时/分钟数据(如暂不支持,统一回空;后续可加分钟数据转换) - case 'KLineChartContainer::ReqeustHistoryMinuteData': - case 'KLineChartContainer::RequestMinuteRealtimeData': - case 'MinuteChartContainer::RequestMinuteData': - case 'MinuteChartContainer::RequestHistoryMinuteData': { - callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }) - break - } - default: { - // 未覆盖的请求返回空,保持引擎稳定 - callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }) - break - } + console.log(`[App:NetworkFilter] Name=${data.Name} Explain=${data.Explain}`); + // 阻止默认行为(默认会走HQData的CDN) + data.PreventDefault = true; + + const reqSymbol = data?.Request?.Data?.symbol || Symbol.value || "GBPAUD.FXCM"; + + switch (data.Name) { + // 日K历史数据 + case "KLineChartContainer::RequestHistoryData": { + const packet = dailyDataPackets[reqSymbol]; + if (packet) { + const mock = transformDailyDataToHQChart(packet); + callback({ data: mock }); + } else { + // 没有该代码的本地包时,返回空结构 + callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }); + } + break; } -} - -// 页面显示时的处理 -const handleShow = () => { - uni.getSystemInfo({ - success: (res) => { - const width = res.windowWidth - const height = res.windowHeight - ChartWidth.value = width - ChartHeight.value = height - 65 - nextTick(() => { - CreateHQChart() - }) - } - }) -} + // 日K实时数据(我们已关闭自动更新;如触发则回空) + case "KLineChartContainer::RequestRealtimeData": { + callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }); + break; + } + // 分时/分钟数据(如暂不支持,统一回空;后续可加分钟数据转换) + case "KLineChartContainer::ReqeustHistoryMinuteData": + case "KLineChartContainer::RequestMinuteRealtimeData": + case "MinuteChartContainer::RequestMinuteData": + case "MinuteChartContainer::RequestHistoryMinuteData": { + callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }); + break; + } + default: { + // 未覆盖的请求返回空,保持引擎稳定 + callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } }); + break; + } + } +}; // 页面隐藏时的处理 const handleHide = () => { - ClearHQChart() -} + ClearHQChart(); +}; // 页面卸载时的处理 const handleUnload = () => { - ClearHQChart() -} - -// 生命周期钩子 -onMounted(() => { - handleShow() -}) - -onUnmounted(() => { - handleUnload() -}) + ClearHQChart(); +}; // TCP相关响应式变量 const tcpConnected = ref(false); @@ -750,8 +724,8 @@ const toRightPage = () => { const updateStockInformation = (stock) => { klineTab.value = 1; - stockInformation.value.stockName = stock.stockName||stock.name; - stockInformation.value.stockCode = stock.stockCode||stock.code; + stockInformation.value.stockName = stock.stockName || stock.name; + stockInformation.value.stockCode = stock.stockCode || stock.code; sendTcpMessage("stop_real_time"); sendTcpMessage("init_real_time"); }; @@ -2393,8 +2367,8 @@ onLoad((options) => { // 更新stockInformation if (stockData) { - stockInformation.value.stockName = stockData.stockName||stockData.name; - stockInformation.value.stockCode = stockData.stockCode||stockData.code; + stockInformation.value.stockName = stockData.stockName || stockData.name; + stockInformation.value.stockCode = stockData.stockCode || stockData.code; } } catch (error) { console.error("解析股票数据失败:", error); @@ -2425,6 +2399,7 @@ onLoad((options) => { // 保存定时器,用于页面卸载时清理 onUnmounted(() => { + handleUnload(); removeTcpListeners(); disconnectTcp(); if (timer) { @@ -2468,6 +2443,7 @@ onMounted(async () => { await nextTick(); setTimeout(() => { initCanvas(); + CreateHQChart(); }, 100); console.log("所有初始化步骤完成"); } catch (error) { From cc39200908ca5586f0d5d863fe24a919340024f7 Mon Sep 17 00:00:00 2001 From: dongqian <3475123872@qq.com> Date: Thu, 30 Oct 2025 16:37:56 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/deepMate/deepMate.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/deepMate/deepMate.vue b/pages/deepMate/deepMate.vue index 5640183..273b96a 100644 --- a/pages/deepMate/deepMate.vue +++ b/pages/deepMate/deepMate.vue @@ -639,7 +639,7 @@ const simulateBotResponse = async (userMessage) => { // 更新机器人的消息内容 const errorMessage = res.message || "请求失败,请稍后重试"; - let responseText = `我已经收到您的消息: "${userMessage}"。错误信息: "${errorMessage}"`; + let responseText = `我已经收到您的消息: "${userMessage}"。"${errorMessage}"`; // 开始打字机效果显示错误信息 let index = 0; From 2ac3f788a511a3f5c17f551d0282237ddba8bd4d Mon Sep 17 00:00:00 2001 From: dongqian <3475123872@qq.com> Date: Thu, 30 Oct 2025 17:13:52 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A9=BA=E7=99=BD?= =?UTF-8?q?=E9=A1=B5=E8=BF=94=E5=9B=9E=E9=A1=B5=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/blank/institutionalTrendsBriefing.vue | 4 +--- pages/blank/notice.vue | 5 ++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/pages/blank/institutionalTrendsBriefing.vue b/pages/blank/institutionalTrendsBriefing.vue index ca1133c..13cae23 100644 --- a/pages/blank/institutionalTrendsBriefing.vue +++ b/pages/blank/institutionalTrendsBriefing.vue @@ -24,9 +24,7 @@ diff --git a/pages/blank/notice.vue b/pages/blank/notice.vue index f64f90d..b273154 100644 --- a/pages/blank/notice.vue +++ b/pages/blank/notice.vue @@ -24,9 +24,8 @@ From 9d9fb407ede0c3bc8c7564aeaf6d301a2afe6a0c Mon Sep 17 00:00:00 2001 From: lihui Date: Thu, 30 Oct 2025 17:14:11 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix=EF=BC=9A=E6=9C=AA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E7=82=B9=E5=87=BB=E5=88=86=E4=BA=AB=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=B2=A1token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/home/member.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pages/home/member.vue b/pages/home/member.vue index f1ffd25..988b972 100644 --- a/pages/home/member.vue +++ b/pages/home/member.vue @@ -1,5 +1,5 @@