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/2] =?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 54d2c377e91e3f15e58f39e00fe714815ebe0b9b Mon Sep 17 00:00:00 2001
From: hongxilin <17663930442@163.com>
Date: Thu, 30 Oct 2025 17:35:52 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=9B=E5=BB=BAonHide,onShow=E7=94=9F?=
=?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=EF=BC=8C=E5=AE=8C=E5=96=84tcp?=
=?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=96=AD=E5=BC=80=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.hbuilderx/launch.json | 2 +-
pages/marketSituation/globalIndex.vue | 148 +++++--------------------------
pages/marketSituation/marketOverview.vue | 31 ++++---
3 files changed, 45 insertions(+), 136 deletions(-)
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
index 1c75694..728c4a6 100644
--- a/.hbuilderx/launch.json
+++ b/.hbuilderx/launch.json
@@ -4,7 +4,7 @@
{
"customPlaygroundType" : "local",
"packageName" : "io.dcloud.HBuilder",
- "playground" : "standard",
+ "playground" : "custom",
"type" : "uni-app:app-android"
}
]
diff --git a/pages/marketSituation/globalIndex.vue b/pages/marketSituation/globalIndex.vue
index e80ce2d..43e573e 100644
--- a/pages/marketSituation/globalIndex.vue
+++ b/pages/marketSituation/globalIndex.vue
@@ -30,7 +30,7 @@
-
+