Browse Source

Condition页面结构优化

lihuilin/feature-20251024095243-我的
hongxilin 3 weeks ago
parent
commit
59cb12ab8e
  1. 2
      .hbuilderx/launch.json
  2. 2
      api/tcpConnection.js
  3. 154
      pages/marketSituation/marketCondition.vue

2
.hbuilderx/launch.json

@ -2,7 +2,7 @@
"version" : "1.0", "version" : "1.0",
"configurations" : [ "configurations" : [
{ {
"customPlaygroundType" : "device",
"customPlaygroundType" : "local",
"packageName" : "io.dcloud.HBuilder", "packageName" : "io.dcloud.HBuilder",
"playground" : "custom", "playground" : "custom",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"

2
api/tcpConnection.js

@ -6,7 +6,7 @@
*/ */
// 引用TCP插件 // 引用TCP插件
// const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin');
const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin');
// const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin"); // const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin");
// TCP连接配置 // TCP连接配置

154
pages/marketSituation/marketCondition.vue

@ -211,7 +211,7 @@
<button class="mini-btn" type="default" size="mini" @click="ChangeKLinePeriod(4)">1M</button> <button class="mini-btn" type="default" size="mini" @click="ChangeKLinePeriod(4)">1M</button>
<button class="mini-btn" type="default" size="mini" @click="ChangeKLinePeriod(5)">15M</button> <button class="mini-btn" type="default" size="mini" @click="ChangeKLinePeriod(5)">15M</button>
</view> </view>
<view style='background-color:#ffffff;'>
<view style="background-color: #ffffff">
<HQChartControl ref="HQChartCtrl" DefaultChart="{Type:'KLine'}" :DefaultSymbol="Symbol"> </HQChartControl> <HQChartControl ref="HQChartCtrl" DefaultChart="{Type:'KLine'}" :DefaultSymbol="Symbol"> </HQChartControl>
</view> </view>
</view> </view>
@ -249,45 +249,43 @@ import { HCharts } from "@/common/canvasMethod.js";
import tcpConnection, { TCPConnection, TCP_CONFIG } from "../../api/tcpConnection"; import tcpConnection, { TCPConnection, TCP_CONFIG } from "../../api/tcpConnection";
import { useMarketSituationStore } from "../../stores/modules/marketSituation.js"; import { useMarketSituationStore } from "../../stores/modules/marketSituation.js";
const marketSituationStore = useMarketSituationStore(); 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 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 //option
//hqchartCtrl.KLine.Option. //hqchartCtrl.KLine.Option.
hqchartCtrl.NetworkFilter = NetworkFilter
hqchartCtrl.SetSize(ChartWidth.value, chartHeight)
hqchartCtrl.OnSize()
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(() => { nextTick(() => {
hqchartCtrl.CreateHQChart()
})
}
hqchartCtrl.CreateHQChart();
});
};
const transformDailyDataToHQChart = (dailyDataPackets) => { const transformDailyDataToHQChart = (dailyDataPackets) => {
const symbol = dailyDataPackets.stock_code || Symbol.value
const rows = Array.isArray(dailyDataPackets.data) ? dailyDataPackets.data : []
const symbol = dailyDataPackets.stock_code || Symbol.value;
const rows = Array.isArray(dailyDataPackets.data) ? dailyDataPackets.data : [];
// HQChart线: [Date, Open, High, Low, Close, Volume] // HQChart线: [Date, Open, High, Low, Close, Volume]
const data = rows.map((r, idx) => ([
const data = rows.map((r, idx) => [
parseInt(r.trade_date, 10), // Date: YYYYMMDD parseInt(r.trade_date, 10), // Date: YYYYMMDD
Number(idx > 0 ? rows[idx - 1].bid_close : r.bid_close), // YClose: Number(idx > 0 ? rows[idx - 1].bid_close : r.bid_close), // YClose:
Number(r.bid_open), // Open Number(r.bid_open), // Open
@ -295,100 +293,76 @@ const transformDailyDataToHQChart = (dailyDataPackets) => {
Number(r.bid_low), // Low Number(r.bid_low), // Low
Number(r.bid_close), // Close Number(r.bid_close), // Close
Number(r.tick_qty || 0), // Volume Number(r.tick_qty || 0), // Volume
Number(r.amount || 0) // Amount0
]))
return { name: symbol, symbol, ver: 2.0, data }
}
Number(r.amount || 0), // Amount0
]);
return { name: symbol, symbol, ver: 2.0, data };
};
const ClearHQChart = () => { const ClearHQChart = () => {
const hqchartCtrl = HQChartCtrl.value
if (hqchartCtrl) hqchartCtrl.ClearChart()
}
const hqchartCtrl = HQChartCtrl.value;
if (hqchartCtrl) hqchartCtrl.ClearChart();
};
const ChangeMinutePeriod = (days) => { 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 ChangeKLinePeriod = (period) => {
const hqchartCtrl = HQChartCtrl.value
if (hqchartCtrl) hqchartCtrl.ChangeKLinePeriod(period)
}
const hqchartCtrl = HQChartCtrl.value;
if (hqchartCtrl) hqchartCtrl.ChangeKLinePeriod(period);
};
const NetworkFilter = (data, callback) => { const NetworkFilter = (data, callback) => {
console.log(`[App:NetworkFilter] Name=${data.Name} Explain=${data.Explain}`)
console.log(`[App:NetworkFilter] Name=${data.Name} Explain=${data.Explain}`);
// HQDataCDN // HQDataCDN
data.PreventDefault = true
data.PreventDefault = true;
const reqSymbol = (data?.Request?.Data?.symbol) || Symbol.value || 'GBPAUD.FXCM'
const reqSymbol = data?.Request?.Data?.symbol || Symbol.value || "GBPAUD.FXCM";
switch (data.Name) { switch (data.Name) {
// K // K
case 'KLineChartContainer::RequestHistoryData': {
const packet = dailyDataPackets[reqSymbol]
case "KLineChartContainer::RequestHistoryData": {
const packet = dailyDataPackets[reqSymbol];
if (packet) { if (packet) {
const mock = transformDailyDataToHQChart(packet)
callback({ data: mock })
const mock = transformDailyDataToHQChart(packet);
callback({ data: mock });
} else { } else {
// //
callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } })
callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } });
} }
break
break;
} }
// K // K
case 'KLineChartContainer::RequestRealtimeData': {
callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } })
break
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
case "KLineChartContainer::ReqeustHistoryMinuteData":
case "KLineChartContainer::RequestMinuteRealtimeData":
case "MinuteChartContainer::RequestMinuteData":
case "MinuteChartContainer::RequestHistoryMinuteData": {
callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } });
break;
} }
default: { default: {
// //
callback({ data: { name: reqSymbol, symbol: reqSymbol, ver: 2.0, data: [] } })
break
}
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()
})
} }
})
}
};
// //
const handleHide = () => { const handleHide = () => {
ClearHQChart()
}
ClearHQChart();
};
// //
const handleUnload = () => { const handleUnload = () => {
ClearHQChart()
}
//
onMounted(() => {
handleShow()
})
onUnmounted(() => {
handleUnload()
})
ClearHQChart();
};
// TCP // TCP
const tcpConnected = ref(false); const tcpConnected = ref(false);
@ -750,8 +724,8 @@ const toRightPage = () => {
const updateStockInformation = (stock) => { const updateStockInformation = (stock) => {
klineTab.value = 1; 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("stop_real_time");
sendTcpMessage("init_real_time"); sendTcpMessage("init_real_time");
}; };
@ -2393,8 +2367,8 @@ onLoad((options) => {
// stockInformation // stockInformation
if (stockData) { 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) { } catch (error) {
console.error("解析股票数据失败:", error); console.error("解析股票数据失败:", error);
@ -2425,6 +2399,7 @@ onLoad((options) => {
// //
onUnmounted(() => { onUnmounted(() => {
handleUnload();
removeTcpListeners(); removeTcpListeners();
disconnectTcp(); disconnectTcp();
if (timer) { if (timer) {
@ -2468,6 +2443,7 @@ onMounted(async () => {
await nextTick(); await nextTick();
setTimeout(() => { setTimeout(() => {
initCanvas(); initCanvas();
CreateHQChart();
}, 100); }, 100);
console.log("所有初始化步骤完成"); console.log("所有初始化步骤完成");
} catch (error) { } catch (error) {

Loading…
Cancel
Save