diff --git a/api/deepExploration/deepExploration.js b/api/deepExploration/deepExploration.js index ba4db57..be5cd8b 100644 --- a/api/deepExploration/deepExploration.js +++ b/api/deepExploration/deepExploration.js @@ -74,7 +74,7 @@ export const getModel4Second = (data) => { }) } -// +//不搜索时走这个 export const getModeldefault = (data) => { return http({ method: 'POST', @@ -84,7 +84,14 @@ export const getModeldefault = (data) => { } - +//k线数据 +export const getData = (data) => { + return http({ + method: 'POST', + url: '/api/coze/WorkFlowData', + data + }) +} //历史记录列表 export const RecordListApi = (data) => { diff --git a/pages/deepExploration/MainForceActions.vue b/pages/deepExploration/MainForceActions.vue index b13fc2c..5ce2647 100644 --- a/pages/deepExploration/MainForceActions.vue +++ b/pages/deepExploration/MainForceActions.vue @@ -81,7 +81,8 @@ getModel3Second, getModel4First, getModel4Second, - getModeldefault + getModeldefault, + getData } from '/api/deepExploration/deepExploration.js' import marked from 'marked'; // 引入 marked 库 import hljs from 'highlight.js'; @@ -111,18 +112,11 @@ //搜索股票 const searchStock = () => { + htmlContent.value = '' console.log('搜索参数:', stockName.value); - if (currentIndex.value == 0) { - handleModel(0) - } else if (currentIndex.value == 1) { - console.log(index); - handleModel(1) - } else if (currentIndex.value == 2) { - console.log(index); - handleModel(2) - } else if (currentIndex.value == 3) { - console.log(index); - handleModel(3) + if (currentIndex.value ) { + handleModels() + getServerData() } else { uni.showToast({ title: '请选择模块', @@ -133,21 +127,10 @@ } //点击四大模块 - const handleModel = (index) => { + const handleModel = async(index) => { + htmlContent.value = '' currentIndex.value = index - if (currentIndex.value == 0) { - console.log(index); - handleTrack() - } else if (currentIndex.value == 1) { - console.log(index); - handleRadar() - } else if (currentIndex.value == 2) { - console.log(index); - handleDecode() - } else if (currentIndex.value == 3) { - console.log(index); - handleCapitalFlow() - } + await handleModels() } const stockName = ref('') @@ -157,6 +140,7 @@ const recordId = ref('') const parentId = ref('') const stockId = ref('') + const market = ref('') const loading = ref(true); const error = ref(''); @@ -164,67 +148,77 @@ const markdownContent = ref(''); -const renderer = new marked.Renderer(); -renderer.heading = function(text, level) { - return `

${text}

`; -}; + const renderer = new marked.Renderer(); + renderer.heading = function(text, level) { + return `

${text}

`; + }; // 初始化 marked 配置(支持代码高亮) -marked.setOptions({ - renderer: new marked.Renderer(), - highlight: null, // 如果需要代码高亮,可以设置适当的函数 - langPrefix: "language-", - pedantic: false, - gfm: true, - breaks: false, - sanitize: false, - smartLists: true, - smartypants: false, - xhtml: false, -}); - - //点击主力追踪 - const handleTrack = async () => { + marked.setOptions({ + highlight: (code, lang) => { + if (lang && hljs.getLanguage(lang)) { + return hljs.highlight(code, { + language: lang + }).value; + } + return hljs.highlightAuto(code).value; + }, + renderer, + breaks: true, // 换行转
+ gfm: true, // 支持GitHub flavored Markdown + sanitize: false, // 保留HTML标签(如) + }); + + //获取模型数据 + const handleModels = async () => { try { - markdownContent.value = '\n## 📊 主力追踪分析:\n\n### 🕵️ 主力行为\n\t1. 📊 该股庄家中长期筹码成本价格为 360.249,短期资金成本价格为 412.577。该股筹码分散,当日筹码成本价格为 444.330。\n\t2. 🔍 近日没有出现主力集中吸筹。\n\t3. 📈 近期主力持仓比例大于散户持仓比例。 当日主力持仓增加。 当日散户持仓减少。\n\n### 📊 空间维度:\n\t- 📉 预测低一值: 443.092 \n - 📈 预测高一值: 466.458\n\t- 📉 预测低二值: 447.354\n\t- 📈 预测高二值: 462.514\n\tAI智能均线空头排列,当前卖盘小于买盘\n\n### 综合作战\n\t\t\t当前股票处于安全区,牵牛绳为红色,出现蓝色推进K线。\n\t\t\t该股整体趋势相对较强,个股正处于推进上涨的关键阶段。若当前持有该股票,建议继续持有,进行持续跟踪。若当前无该股票,建议持续跟踪,等待适当时机再进行介入。\n\n---\n*该内容由AI生成,仅供参考,投资有风险,请注意甄别。*\n ' - htmlContent.value = marked.parse(markdownContent.value); + // markdownContent.value = '\n## 📊 主力追踪分析:\n\n### 🕵️ 主力行为\n\t1. 📊 该股庄家中长期筹码成本价格为 360.249,短期资金成本价格为 412.577。该股筹码分散,当日筹码成本价格为 444.330。\n\t2. 🔍 近日没有出现主力集中吸筹。\n\t3. 📈 近期主力持仓比例大于散户持仓比例。 当日主力持仓增加。 当日散户持仓减少。\n\n### 📊 空间维度:\n\t- 📉 预测低一值: 443.092 \n - 📈 预测高一值: 466.458\n\t- 📉 预测低二值: 447.354\n\t- 📈 预测高二值: 462.514\n\tAI智能均线空头排列,当前卖盘小于买盘\n\n### 综合作战\n\t\t\t当前股票处于安全区,牵牛绳为红色,出现蓝色推进K线。\n\t\t\t该股整体趋势相对较强,个股正处于推进上涨的关键阶段。若当前持有该股票,建议继续持有,进行持续跟踪。若当前无该股票,建议持续跟踪,等待适当时机再进行介入。\n\n---\n*该内容由AI生成,仅供参考,投资有风险,请注意甄别。*\n ' + // htmlContent.value = marked.parse(markdownContent.value); loading.value = true; - // if(searchName.value){ - - // } - // const result = await getModel1First({ - // content: searchName.value, - // language: "cn", - // marketList: "hk,cn,usa,my,sg,vi,in,gb", - // model: 1 - // }) - // console.log('result', result); - // if (result.code == 200) { - // stockCode.value = result.data.code - // stockName.value = result.data.name - // recordId.value = result.data.recordId - // parentId.value = result.data.parentId - // stockId.value = result.data.stockId - // language.value = result.data.language - // }else{ - // return - // } + if (searchName.value == '') { + console.log('没有搜索',searchName.value); + const rresult = await handleDefault() + // markdownContent.value = res.data.markdown + htmlContent.value = marked.parse(markdownContent.value); + }else{ + console.log('搜索',searchName.value); + const result = await getModel1First({ + content: searchName.value, + language: "cn", + marketList: "hk,cn,usa,my,sg,vi,in,gb", + model: currentIndex.value+1 + }) + console.log('result', result); + if (result.code == 200) { + stockCode.value = result.data.code + stockName.value = result.data.name + recordId.value = result.data.recordId + parentId.value = result.data.parentId + stockId.value = result.data.stockId + language.value = result.data.language + market.value = result.data.market + } else { + return + } + + + const res = await getModel1Second({ + language: language.value, + recordId: recordId.value, + parentId: parentId.value, + stockId: stockId.value, + token: 'pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q' + }) + if (res.code == 200) { + const rawMarkdown = res.data.markdown; + const adaptedMarkdown = rawMarkdown.replace(/^### /gm, ''); // 全局替换行首的### + markdownContent.value = adaptedMarkdown; + // markdownContent.value = res.data.markdown + htmlContent.value = marked.parse(markdownContent.value); + } + console.log('res', res); + } - // const res = await getModel1Second({ - // language: language.value, - // recordId: recordId.value, - // parentId: parentId.value, - // stockId: stockId.value, - // token: 'pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q' - // }) - // if (res.code == 200) { - // const rawMarkdown = res.data.markdown; - // const adaptedMarkdown = rawMarkdown.replace(/^### /gm, ''); // 全局替换行首的### - // markdownContent.value = adaptedMarkdown; - // // markdownContent.value = res.data.markdown - // htmlContent.value = marked.parse(markdownContent.value); - // } - // console.log('res', res); } catch { error.value = e.message || '加载失败,请重试'; @@ -233,23 +227,29 @@ marked.setOptions({ } } - //点击主力雷达 - const handleRadar = () => { - - } - - //点击主力解码 - const handleDecode = () => { - - } - - //点击主力资金流 - const handleCapitalFlow = () => { - + const handleDefault = async () => { + const result = await getModeldefault({ + token: "pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q", + model: currentIndex.value+1 + }) + + const rawMarkdown = result.data.markdown; + const adaptedMarkdown = rawMarkdown.replace(/^### /gm, ''); // 全局替换行首的### + markdownContent.value = adaptedMarkdown; + htmlContent.value = marked.parse(markdownContent.value); } -const handleDefault = async()=>{ -} + const getServerData = async() =>{ + const result = await getData({ + market: market.value || '', + code: searchName || '', + language: "cn", + brainPrivilegeState: 1, + marketList: "usa.sg.my.hk.cn.can.vi.th.in.gb" + }) + + console.log('k线数据',result); + } // 1. K线图配置 const opts = ref({ @@ -319,302 +319,302 @@ const handleDefault = async()=>{ const chartData = ref({}) // 获取K线数据函数(直接定义,无需methods) - const getServerData = () => { - // 模拟服务器请求延时 - setTimeout(() => { - const res = { - "categories": [ - "2025/08/25", - "2025/08/26", - "2025/08/27", - "2025/08/28", - "2025/08/29", - "2025/09/01", - "2025/09/02", - "2025/09/03", - "2025/09/04", - "2025/09/05", - "2025/09/08", - "2025/09/09", - "2025/09/10", - "2025/09/11", - "2025/09/12", - "2025/09/15", - "2025/09/16", - "2025/09/17", - "2025/09/18", - "2025/09/19", - "2025/09/22", - "2025/09/23", - "2025/09/24", - "2025/09/25", - "2025/09/26", - "2025/09/29", - "2025/09/30", - "2025/10/09", - "2025/10/10", - "2025/10/13", - "2025/10/14", - "2025/10/15", - "2025/10/16", - "2025/10/17", - "2025/10/20", - "2025/10/21", - "2025/10/22", - "2025/10/23", - "2025/10/24", - "2025/10/27" - ], - series: [{ - "name": "贵州茅台", - "data": [ - [ - 1470.01, - 1496.0, - 1466.0, - 1499.33 - ], - [ - 1490.32, - 1474.23, - 1480.01, - 1481.61 - ], - [ - 1481.88, - 1484.93, - 1448.0, - 1448.0 - ], - [ - 1447.97, - 1456.1, - 1438.77, - 1446.1 - ], - [ - 1453.0, - 1482.58, - 1452.0, - 1480.0 - ], - [ - 1482.2, - 1488.0, - 1465.7, - 1476.1 - ], - [ - 1478.66, - 1509.0, - 1478.0, - 1491.3 - ], - [ - 1491.0, - 1503.5, - 1466.0, - 1480.55 - ], - [ - 1472.0, - 1479.3, - 1460.47, - 1480.66 - ], - [ - 1471.0, - 1486.97, - 1464.0, - 1483.0 - ], - [ - 1483.0, - 1506.44, - 1477.5, - 1501.23 - ], - [ - 1505.0, - 1509.95, - 1493.42, - 1505.0 - ], - [ - 1506.66, - 1529.95, - 1496.0, - 1522.01 - ], - [ - 1522.01, - 1526.02, - 1508.5, - 1523.5 - ], - [ - 1526.0, - 1538.02, - 1510.53, - 1516.0 - ], - [ - 1515.87, - 1517.48, - 1501.5, - 1515.1 - ], - [ - 1515.1, - 1520.99, - 1496.21, - 1499.98 - ], - [ - 1499.99, - 1510.28, - 1490.01, - 1493.0 - ], - [ - 1492.0, - 1497.8, - 1463.5, - 1467.96 - ], - [ - 1467.99, - 1475.5, - 1457.01, - 1467.97 - ], - [ - 1465.09, - 1467.97, - 1450.01, - 1453.35 - ], - [ - 1450.5, - 1457.5, - 1440.0, - 1447.42 - ], - [ - 1434.07, - 1456.78, - 1434.07, - 1442.0 - ], - [ - 1442.83, - 1445.21, - 1436.0, - 1439.0 - ], - [ - 1441.18, - 1447.11, - 1428.01, - 1435.0 - ], - [ - 1439.38, - 1469.99, - 1435.0, - 1460.86 - ], - [ - 1460.0, - 1460.76, - 1440.0, - 1443.99 - ], - [ - 1436.0, - 1439.38, - 1420.0, - 1436.78 - ], - [ - 1437.6, - 1439.94, - 1427.5, - 1430.0 - ], - [ - 1415.7, - 1422.85, - 1415.12, - 1419.2 - ], - [ - 1429.99, - 1464.0, - 1429.99, - 1451.02 - ], - [ - 1450.98, - 1463.0, - 1445.08, - 1462.0 - ], - [ - 1461.92, - 1484.95, - 1458.88, - 1484.91 - ], - [ - 1483.1, - 1488.0, - 1454.03, - 1455.0 - ], - [ - 1455.0, - 1469.5, - 1454.88, - 1457.93 - ], - [ - 1459.0, - 1469.94, - 1455.5, - 1462.26 - ], - [ - 1462.08, - 1465.73, - 1456.0, - 1458.7 - ], - [ - 1455.0, - 1468.8, - 1447.2, - 1467.98 - ], - [ - 1467.95, - 1478.88, - 1449.34, - 1450.0 - ], - [ - 1440.0, - 1452.49, - 1435.99, - 1440.41 - ] - ], - }] - } - // 给响应式变量赋值(需修改.value) - chartData.value = JSON.parse(JSON.stringify(res)) - }, 500) - } + // const getServerData = () => { + // // 模拟服务器请求延时 + // setTimeout(() => { + // const res = { + // "categories": [ + // "2025/08/25", + // "2025/08/26", + // "2025/08/27", + // "2025/08/28", + // "2025/08/29", + // "2025/09/01", + // "2025/09/02", + // "2025/09/03", + // "2025/09/04", + // "2025/09/05", + // "2025/09/08", + // "2025/09/09", + // "2025/09/10", + // "2025/09/11", + // "2025/09/12", + // "2025/09/15", + // "2025/09/16", + // "2025/09/17", + // "2025/09/18", + // "2025/09/19", + // "2025/09/22", + // "2025/09/23", + // "2025/09/24", + // "2025/09/25", + // "2025/09/26", + // "2025/09/29", + // "2025/09/30", + // "2025/10/09", + // "2025/10/10", + // "2025/10/13", + // "2025/10/14", + // "2025/10/15", + // "2025/10/16", + // "2025/10/17", + // "2025/10/20", + // "2025/10/21", + // "2025/10/22", + // "2025/10/23", + // "2025/10/24", + // "2025/10/27" + // ], + // series: [{ + // "name": "贵州茅台", + // "data": [ + // [ + // 1470.01, + // 1496.0, + // 1466.0, + // 1499.33 + // ], + // [ + // 1490.32, + // 1474.23, + // 1480.01, + // 1481.61 + // ], + // [ + // 1481.88, + // 1484.93, + // 1448.0, + // 1448.0 + // ], + // [ + // 1447.97, + // 1456.1, + // 1438.77, + // 1446.1 + // ], + // [ + // 1453.0, + // 1482.58, + // 1452.0, + // 1480.0 + // ], + // [ + // 1482.2, + // 1488.0, + // 1465.7, + // 1476.1 + // ], + // [ + // 1478.66, + // 1509.0, + // 1478.0, + // 1491.3 + // ], + // [ + // 1491.0, + // 1503.5, + // 1466.0, + // 1480.55 + // ], + // [ + // 1472.0, + // 1479.3, + // 1460.47, + // 1480.66 + // ], + // [ + // 1471.0, + // 1486.97, + // 1464.0, + // 1483.0 + // ], + // [ + // 1483.0, + // 1506.44, + // 1477.5, + // 1501.23 + // ], + // [ + // 1505.0, + // 1509.95, + // 1493.42, + // 1505.0 + // ], + // [ + // 1506.66, + // 1529.95, + // 1496.0, + // 1522.01 + // ], + // [ + // 1522.01, + // 1526.02, + // 1508.5, + // 1523.5 + // ], + // [ + // 1526.0, + // 1538.02, + // 1510.53, + // 1516.0 + // ], + // [ + // 1515.87, + // 1517.48, + // 1501.5, + // 1515.1 + // ], + // [ + // 1515.1, + // 1520.99, + // 1496.21, + // 1499.98 + // ], + // [ + // 1499.99, + // 1510.28, + // 1490.01, + // 1493.0 + // ], + // [ + // 1492.0, + // 1497.8, + // 1463.5, + // 1467.96 + // ], + // [ + // 1467.99, + // 1475.5, + // 1457.01, + // 1467.97 + // ], + // [ + // 1465.09, + // 1467.97, + // 1450.01, + // 1453.35 + // ], + // [ + // 1450.5, + // 1457.5, + // 1440.0, + // 1447.42 + // ], + // [ + // 1434.07, + // 1456.78, + // 1434.07, + // 1442.0 + // ], + // [ + // 1442.83, + // 1445.21, + // 1436.0, + // 1439.0 + // ], + // [ + // 1441.18, + // 1447.11, + // 1428.01, + // 1435.0 + // ], + // [ + // 1439.38, + // 1469.99, + // 1435.0, + // 1460.86 + // ], + // [ + // 1460.0, + // 1460.76, + // 1440.0, + // 1443.99 + // ], + // [ + // 1436.0, + // 1439.38, + // 1420.0, + // 1436.78 + // ], + // [ + // 1437.6, + // 1439.94, + // 1427.5, + // 1430.0 + // ], + // [ + // 1415.7, + // 1422.85, + // 1415.12, + // 1419.2 + // ], + // [ + // 1429.99, + // 1464.0, + // 1429.99, + // 1451.02 + // ], + // [ + // 1450.98, + // 1463.0, + // 1445.08, + // 1462.0 + // ], + // [ + // 1461.92, + // 1484.95, + // 1458.88, + // 1484.91 + // ], + // [ + // 1483.1, + // 1488.0, + // 1454.03, + // 1455.0 + // ], + // [ + // 1455.0, + // 1469.5, + // 1454.88, + // 1457.93 + // ], + // [ + // 1459.0, + // 1469.94, + // 1455.5, + // 1462.26 + // ], + // [ + // 1462.08, + // 1465.73, + // 1456.0, + // 1458.7 + // ], + // [ + // 1455.0, + // 1468.8, + // 1447.2, + // 1467.98 + // ], + // [ + // 1467.95, + // 1478.88, + // 1449.34, + // 1450.0 + // ], + // [ + // 1440.0, + // 1452.49, + // 1435.99, + // 1440.41 + // ] + // ], + // }] + // } + // // 给响应式变量赋值(需修改.value) + // chartData.value = JSON.parse(JSON.stringify(res)) + // }, 500) + // } // 生命周期钩子:组件挂载后执行(替代onReady) onMounted(() => { 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; } }