diff --git a/pages/marketSituation/marketCondition.vue b/pages/marketSituation/marketCondition.vue index 412e141..b244d26 100644 --- a/pages/marketSituation/marketCondition.vue +++ b/pages/marketSituation/marketCondition.vue @@ -1497,8 +1497,8 @@ const sendTcpMessage = (command) => { messageData = { command: "daily_data", stock_code: "GBPAUD.FXCM", - start_date: "20251001", - end_date: "20251023", + start_date: "20250801", + end_date: "20251029", }; break; // 周线数据 @@ -1515,7 +1515,7 @@ const sendTcpMessage = (command) => { messageData = { command: "monthly_data", stock_code: "000001.SZ", - start_date: "2024912", + start_date: "20201130", end_date: "20251029", }; break; @@ -1850,6 +1850,45 @@ const parseStockData = (message) => { } } } + } else if ((typeof message === "string" && message.includes("monthly_data_start")) || isMorePacket.monthly_data) { + if (typeof message === "string" && message.includes("monthly_data_start")) { + console.log("开始接受分包数据"); + receivedMessage = ""; + } else { + console.log("接收分包数据过程中"); + } + isMorePacket.monthly_data = true; + receivedMessage += message; + // 如果当前消息包含},说明收到JSON字符串结尾,结束接收,开始解析 + if (receivedMessage.includes("monthly_data_complete")) { + console.log("接受分包数据结束"); + isMorePacket.monthly_data = false; + + console.log("展示数据", receivedMessage); + + const result = findJsonPacket(receivedMessage, "monthly_data_complete"); + if (result.error) { + throw new Error("解析JSON字符串失败"); + } else { + parsedMessage = result.json; + console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); + if (parsedMessage.type === "monthly_data") { + klineData.value = parsedMessage.data.map((item) => ({ + open: item.bid_open, + close: item.bid_close, + high: item.bid_high, + low: item.bid_low, + volume: item.vol, + amount: item.amount, + date: item.trade_date ? `${item.trade_date.slice(0, 4)}-${item.trade_date.slice(4, 6)}-${item.trade_date.slice(6, 8)}` : item.trade_date, + })); + stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; + touchState.offset = canvasWidth.value / klineData.value.length / 2; + console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); + drawChart(); + } + } + } } else if ((typeof message === "string" && message.includes("daily_one_minutes_data_start")) || isMorePacket.daily_one_minutes_data) { if (typeof message === "string" && message.includes("daily_one_minutes_data_start")) { console.log("开始接受分包数据"); @@ -1873,15 +1912,171 @@ const parseStockData = (message) => { parsedMessage = result.json; console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); if (parsedMessage.type === "daily_one_minutes_data") { - // klineData.value = parsedMessage.data.map((item) => ({ - // open: item.open, - // close: item.close, - // high: item.high, - // low: item.low, - // volume: item.volume, - // amount: item.amount, - // date: item.time, - // })); + klineData.value = parsedMessage.data.map((item) => ({ + open: item.open, + close: item.close, + high: Math.max(item.low, item.high), + low: Math.min(item.low, item.high), + volume: item.volume, + amount: item.amount, + date: item.timestamp, + })); + stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; + touchState.offset = canvasWidth.value / klineData.value.length / 2; + console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); + drawChart(); + } + } + } + } else if ((typeof message === "string" && message.includes("daily_five_minutes_data_start")) || isMorePacket.daily_five_minutes_data) { + if (typeof message === "string" && message.includes("daily_five_minutes_data_start")) { + console.log("开始接受分包数据"); + receivedMessage = ""; + } else { + console.log("接收分包数据过程中"); + } + isMorePacket.daily_five_minutes_data = true; + receivedMessage += message; + // 如果当前消息包含},说明收到JSON字符串结尾,结束接收,开始解析 + if (receivedMessage.includes("daily_five_minutes_data_complete")) { + console.log("接受分包数据结束"); + isMorePacket.daily_five_minutes_data = false; + + console.log("展示数据", receivedMessage); + + const result = findJsonPacket(receivedMessage, "daily_five_minutes_data_complete"); + if (result.error) { + throw new Error("解析JSON字符串失败"); + } else { + parsedMessage = result.json; + console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); + if (parsedMessage.type === "daily_five_minutes_data") { + klineData.value = parsedMessage.data.map((item) => ({ + open: item.open, + close: item.close, + high: Math.max(item.low, item.high), + low: Math.min(item.low, item.high), + volume: item.volume, + amount: item.amount, + date: item.timestamp, + })); + stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; + touchState.offset = canvasWidth.value / klineData.value.length / 2; + console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); + drawChart(); + } + } + } + } else if ((typeof message === "string" && message.includes("daily_fifteen_minutes_data_start")) || isMorePacket.daily_fifteen_minutes_data) { + if (typeof message === "string" && message.includes("daily_fifteen_minutes_data_start")) { + console.log("开始接受分包数据"); + receivedMessage = ""; + } else { + console.log("接收分包数据过程中"); + } + isMorePacket.daily_fifteen_minutes_data = true; + receivedMessage += message; + // 如果当前消息包含},说明收到JSON字符串结尾,结束接收,开始解析 + if (receivedMessage.includes("daily_fifteen_minutes_data_complete")) { + console.log("接受分包数据结束"); + isMorePacket.daily_fifteen_minutes_data = false; + + console.log("展示数据", receivedMessage); + + const result = findJsonPacket(receivedMessage, "daily_fifteen_minutes_data_complete"); + if (result.error) { + throw new Error("解析JSON字符串失败"); + } else { + parsedMessage = result.json; + console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); + if (parsedMessage.type === "daily_fifteen_minutes_data") { + klineData.value = parsedMessage.data.map((item) => ({ + open: item.open, + close: item.close, + high: Math.max(item.low, item.high), + low: Math.min(item.low, item.high), + volume: item.volume, + amount: item.amount, + date: item.timestamp, + })); + stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; + touchState.offset = canvasWidth.value / klineData.value.length / 2; + console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); + drawChart(); + } + } + } + } else if ((typeof message === "string" && message.includes("daily_thirty_minutes_data_start")) || isMorePacket.daily_thirty_minutes_data) { + if (typeof message === "string" && message.includes("daily_thirty_minutes_data_start")) { + console.log("开始接受分包数据"); + receivedMessage = ""; + } else { + console.log("接收分包数据过程中"); + } + isMorePacket.daily_thirty_minutes_data = true; + receivedMessage += message; + // 如果当前消息包含},说明收到JSON字符串结尾,结束接收,开始解析 + if (receivedMessage.includes("daily_thirty_minutes_data_complete")) { + console.log("接受分包数据结束"); + isMorePacket.daily_thirty_minutes_data = false; + + console.log("展示数据", receivedMessage); + + const result = findJsonPacket(receivedMessage, "daily_thirty_minutes_data_complete"); + if (result.error) { + throw new Error("解析JSON字符串失败"); + } else { + parsedMessage = result.json; + console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); + if (parsedMessage.type === "daily_thirty_minutes_data") { + klineData.value = parsedMessage.data.map((item) => ({ + open: item.open, + close: item.close, + high: Math.max(item.low, item.high), + low: Math.min(item.low, item.high), + volume: item.volume, + amount: item.amount, + date: item.timestamp, + })); + stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; + touchState.offset = canvasWidth.value / klineData.value.length / 2; + console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); + drawChart(); + } + } + } + } else if ((typeof message === "string" && message.includes("daily_sixty_minutes_data_start")) || isMorePacket.daily_sixty_minutes_data) { + if (typeof message === "string" && message.includes("daily_sixty_minutes_data_start")) { + console.log("开始接受分包数据"); + receivedMessage = ""; + } else { + console.log("接收分包数据过程中"); + } + isMorePacket.daily_sixty_minutes_data = true; + receivedMessage += message; + // 如果当前消息包含},说明收到JSON字符串结尾,结束接收,开始解析 + if (receivedMessage.includes("daily_sixty_minutes_data_complete")) { + console.log("接受分包数据结束"); + isMorePacket.daily_sixty_minutes_data = false; + + console.log("展示数据", receivedMessage); + + const result = findJsonPacket(receivedMessage, "daily_sixty_minutes_data_complete"); + if (result.error) { + throw new Error("解析JSON字符串失败"); + } else { + parsedMessage = result.json; + console.log("JSON解析成功,解析后类型:", typeof parsedMessage, parsedMessage); + if (parsedMessage.type === "daily_sixty_minutes_data") { + klineData.value = parsedMessage.data.map((item) => ({ + open: item.open, + close: item.close, + high: Math.max(item.low, item.high), + low: Math.min(item.low, item.high), + volume: item.volume, + amount: item.amount, + date: item.timestamp, + })); stockInformation.value.lastDayStockClosePrice = klineData.value[klineData.value.length - 2].close; touchState.offset = canvasWidth.value / klineData.value.length / 2; console.log("lastDayStockClosePrice", stockInformation.value.lastDayStockClosePrice); diff --git a/pages/marketSituation/marketOverview.vue b/pages/marketSituation/marketOverview.vue index 66fb8ba..b9da06d 100644 --- a/pages/marketSituation/marketOverview.vue +++ b/pages/marketSituation/marketOverview.vue @@ -642,8 +642,7 @@ watch(headerHeight, (newHeight) => { margin: 0; box-sizing: border-box; width: 100%; - padding: 30rpx 20rpx; - gap: 20rpx; + padding: 30rpx 0; } .card_item { @@ -657,7 +656,7 @@ watch(headerHeight, (newHeight) => { @media (max-width: 600rpx) { .cards_grid { grid-template-columns: repeat(2, 1fr); - padding: 30rpx 20rpx; + padding: 30rpx 0; } } @@ -665,7 +664,7 @@ watch(headerHeight, (newHeight) => { @media (max-width: 400rpx) { .cards_grid { grid-template-columns: 1fr; - padding: 30rpx 20rpx; + padding: 30rpx 0; } }