From d0892a2aa01414283e2781a5970ac2fbb598f349 Mon Sep 17 00:00:00 2001 From: no99 <17663930442@163.com> Date: Mon, 23 Jun 2025 10:27:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E5=9B=BE=E8=A1=A8=EF=BC=88?= =?UTF-8?q?=E5=B7=AE=E6=89=93=E5=AD=97=E6=9C=BA=E9=A1=BA=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E6=92=AD=E6=94=BE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/assets/img/AIchat/PCbackPic.png | Bin 0 -> 220783 bytes src/assets/img/AIchat/new-app-bgc.png | Bin 0 -> 16003 bytes src/store/dataList.js | 374 +-- src/views/AIchat.vue | 5022 ++++++++------------------------- src/views/Announcement.vue | 12 +- src/views/Feedback.vue | 1 - 7 files changed, 1373 insertions(+), 4038 deletions(-) create mode 100644 src/assets/img/AIchat/PCbackPic.png create mode 100644 src/assets/img/AIchat/new-app-bgc.png diff --git a/README.md b/README.md index 9570926..1d221de 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ npm install html-to-text npm install echarts npm install lodash 安装 lodash 组件,解决数据处理问题 npm install vue-device-detect 安装 vue-device-detect 组件,解决移动端适配问题 -npm install moment 安装 moment 组件,解决时间处理问题 \ No newline at end of file +npm install moment 安装 moment 组件,解决时间处理问题 diff --git a/src/assets/img/AIchat/PCbackPic.png b/src/assets/img/AIchat/PCbackPic.png new file mode 100644 index 0000000000000000000000000000000000000000..45d7b4118e4a8a63be34e6d3a7310a5b8d863089 GIT binary patch literal 220783 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 P9$?5zt4Nhe8VCL#$Mx*f literal 0 HcmV?d00001 diff --git a/src/store/dataList.js b/src/store/dataList.js index 739761e..193dd0c 100644 --- a/src/store/dataList.js +++ b/src/store/dataList.js @@ -1,196 +1,218 @@ - -import { defineStore } from 'pinia' -import { ref, watch } from 'vue' -import { useUserStore } from './userPessionCode' -import { useLanguage } from '@/utils/languageService' -import { dataListAPI } from '@/api/AIxiaocaishen' +import { defineStore } from "pinia"; +import { ref, watch } from "vue"; +import { useUserStore } from "./userPessionCode"; +import { useLanguage } from "@/utils/languageService"; +import { dataListAPI } from "@/api/AIxiaocaishen"; // import { useSkeletonStore } from '@/utils/skeletonLoader' -import { useRoute } from 'vue-router' +import { useRoute } from "vue-router"; // const skeletonStore = useSkeletonStore() // const { t } = useLanguage() -export const useDataStore = defineStore('data', () => { - const route = useRoute() - console.log(route, '地址栏携带的参数。。。。。。') - const userStore = useUserStore() - const brainDataList = ref(null) - const swordDataList = ref(null) - const priceDataList = ref(null) - const timeDataList = ref(null) - const showALLData = ref(null) - const HomePage = ref(null) - const AIBull = ref(null) - const AIGoldBull = ref(null) - const AIRadar = ref(null) - const loading = ref(false) - const klineData = ref(null) - const activeTabIndex = ref(null) - const isFeedback = ref(false) // 用于控制是否显示反馈页面的标志 - const setKlineData = (data) => { - klineData.value = data - } +export const useDataStore = defineStore("data", () => { + const route = useRoute(); + console.log(route, "地址栏携带的参数。。。。。。"); + const userStore = useUserStore(); + const brainDataList = ref(null); + const swordDataList = ref(null); + const priceDataList = ref(null); + const timeDataList = ref(null); + const showALLData = ref(null); + const HomePage = ref(null); + const AIBull = ref(null); + const AIGoldBull = ref(null); + const AIRadar = ref(null); + const loading = ref(false); + const klineData = ref(null); + const activeTabIndex = ref(null); + const isFeedback = ref(false); // 用于控制是否显示反馈页面的标志 + const setKlineData = (data) => { + klineData.value = data; + }; - const setActiveTabIndex = (index) => { - activeTabIndex.value = index - } + const setActiveTabIndex = (index) => { + activeTabIndex.value = index; + }; - const getQueryVariable = (variable) => { - const query = window.location.search.substring(1) - // console.log(query,'query') - const vars = query.split('&') - // console.log(vars,'vars') - for (let i = 0; i < vars.length; i++) { - const pair = vars[i].split('=') - if (pair[0] === variable) { - return pair[1] - } - } - return '' + const getQueryVariable = (variable) => { + const query = window.location.search.substring(1); + // console.log(query,'query') + const vars = query.split("&"); + // console.log(vars,'vars') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split("="); + if (pair[0] === variable) { + return pair[1]; + } } + return ""; + }; - // const getAnswer = (result) => { - // const data = result.data; - // const vars = query.split('&') - // for (let i = 0; i < vars.length; i++) { - // const pair = vars[i].split('=') - // if (pair[0] === variable) { - // return pair[1] - // } - // } - // return '' - // } + // const getAnswer = (result) => { + // const data = result.data; + // const vars = query.split('&') + // for (let i = 0; i < vars.length; i++) { + // const pair = vars[i].split('=') + // if (pair[0] === variable) { + // return pair[1] + // } + // } + // return '' + // } - // 使用示例,获取地址栏参数 - // const token = ref(getQueryVariable('token')) - // const market = ref(getQueryVariable('market')) - // const code = ref(getQueryVariable('code')) - // console.log(token.value) // 输出 token 的值,例如 "111" - // const fetchChartData = async () => { - // const getTokenString = String(localStorage.getItem('localToken')) - // const getMarketString = String(localStorage.getItem('localMarket')) - // const getCodeString = String(localStorage.getItem('localCode')) - // // const getMarket = String() - // try { - // const res = await dataListAPI({ - // token: getTokenString || '', - // market: getMarket() || getMarketString || 'gb', - // code: getQueryVariable('code') || getCodeString || 'NDX', - // language: 'cn', //t.value.suoxie, - // brainPrivilegeState: userStore.brainPerssion, - // swordPrivilegeState: userStore.swordPerssion, - // stockForecastPrivilegeState: userStore.pricePerssion, - // spaceForecastPrivilegeState: userStore.timePerssion, - // aibullPrivilegeState: userStore.aibullPerssion, - // aigoldBullPrivilegeState: userStore.aiGnbullPerssion, - // airadarPrivilegeState: userStore.airadarPerssion, - // marketList: userStore.aiGoldMarketList - // }) + // 使用示例,获取地址栏参数 + const token = ref(getQueryVariable("token")); + const market = ref(getQueryVariable("market")); + const code = ref(getQueryVariable("code")); + console.log(token.value); // 输出 token 的值,例如 "111" + const fetchChartData = async (market,code) => { + const getTokenString = String(localStorage.getItem("localToken")); + // const getMarketString = String(localStorage.getItem("localMarket")); + // const getCodeString = String(localStorage.getItem("localCode")); + // const getMarket = String() + try { + const res = await dataListAPI({ + token: getTokenString || "", + market: market || "gb", + code: code || "NDX", + language: "cn", //t.value.suoxie, + brainPrivilegeState: userStore.brainPerssion, + swordPrivilegeState: userStore.swordPerssion, + stockForecastPrivilegeState: userStore.pricePerssion, + spaceForecastPrivilegeState: userStore.timePerssion, + aibullPrivilegeState: userStore.aibullPerssion, + aigoldBullPrivilegeState: userStore.aiGnbullPerssion, + airadarPrivilegeState: userStore.airadarPerssion, + marketList: userStore.aiGoldMarketList, + }); - // brainDataList.value = res.data.Brain - // swordDataList.value = res.data.Sword - // priceDataList.value = res.data.StockForecast - // timeDataList.value = res.data.SpaceForecast - // showALLData.value = res.data.ShowAll - // HomePage.value = res.data.HomePage - // AIBull.value = res.data.AIBull - // AIGoldBull.value = res.data.AIGoldBull - // AIRadar.value = res.data.AIRadar - // } catch (error) { - // console.error('获取图表数据出错:', error) - // } finally { - // loading.value = false - // console.log('数据获取过程结束') - // } - // } + brainDataList.value = res.data.Brain; + swordDataList.value = res.data.Sword; + priceDataList.value = res.data.StockForecast; + timeDataList.value = res.data.SpaceForecast; + showALLData.value = res.data.ShowAll; + HomePage.value = res.data.HomePage; + AIBull.value = res.data.AIBull; + AIGoldBull.value = res.data.AIGoldBull; + AIRadar.value = res.data.AIRadar; + } catch (error) { + console.error("获取图表数据出错:", error); + } finally { + loading.value = false; + console.log("数据获取过程结束"); + } + }; - // 获取路径上market的值 - const getMarket = () => { - let market = '' - const queryMarket = getQueryVariable('market') - if (queryMarket) { - if ( - ['sg', 'my', 'in', 'hk', 'th', 'vi', 'usa', 'can', 'gb', 'cn'].includes(queryMarket) - ) { - return queryMarket - } else { - switch (queryMarket) { - case 'SGX': return 'sg' - case 'BMB': return 'my' - case 'IDX': return 'in' - case 'HKEX': return 'hk' - case 'SET': return 'th' - case 'HN': return 'vi' - case 'HONSE': return 'vi' - case 'AMERA': return 'usa' - case 'NYSE': return 'usa' - case 'NASDAQ': return 'usa' - case 'DLD': return 'can' - case 'DLDCY': return 'can' - case 'GINDEX': return 'gb' - case 'BZ': return 'cn' - case 'SH': return 'cn' - case 'SZ': return 'cn' - default: return '无市场数据' - } - } + // 获取路径上market的值 + const getMarket = () => { + let market = ""; + const queryMarket = getQueryVariable("market"); + if (queryMarket) { + if ( + ["sg", "my", "in", "hk", "th", "vi", "usa", "can", "gb", "cn"].includes( + queryMarket + ) + ) { + return queryMarket; + } else { + switch (queryMarket) { + case "SGX": + return "sg"; + case "BMB": + return "my"; + case "IDX": + return "in"; + case "HKEX": + return "hk"; + case "SET": + return "th"; + case "HN": + return "vi"; + case "HONSE": + return "vi"; + case "AMERA": + return "usa"; + case "NYSE": + return "usa"; + case "NASDAQ": + return "usa"; + case "DLD": + return "can"; + case "DLDCY": + return "can"; + case "GINDEX": + return "gb"; + case "BZ": + return "cn"; + case "SH": + return "cn"; + case "SZ": + return "cn"; + default: + return "无市场数据"; } - return '' + } } + return ""; + }; - const isLoading = ref(true) - const initData = async () => { - isLoading.value = true - try { - // 初始化逻辑 - } catch (error) { - console.error('Error loading data:', error) - } finally { - isLoading.value = false - } + const isLoading = ref(true); + const initData = async () => { + isLoading.value = true; + try { + // 初始化逻辑 + } catch (error) { + console.error("Error loading data:", error); + } finally { + isLoading.value = false; } + }; - // watch( - // () => [userStore.isReady, t.value?.suoxie], - // ([isReady]) => { - // console.log('isReady 或 language 变化:', isReady) - // if (isReady) { - // setTimeout(() => fetchChartData(), 500) - // } - // }, - // { immediate: true, deep: true } - // ) + // watch( + // () => [userStore.isReady, t.value?.suoxie], + // ([isReady]) => { + // console.log('isReady 或 language 变化:', isReady) + // if (isReady) { + // setTimeout(() => fetchChartData(), 500) + // } + // }, + // { immediate: true, deep: true } + // ) - // watch(() => route.query, () => { - // if (route.query.market || route.query.code) { - // fetchChartData() - // } - // }) + watch( + () => window.location.ancestorOrigins, + (newQuery, oldQuery) => { + console.log("newQuery", newQuery); + // if () { + // fetchChartData(); + // } + } + ); - // watch(() => userStore.aibullPerssion, (newValue) => { - // if (newValue === 1) fetchChartData() - // }) + // watch(() => userStore.aibullPerssion, (newValue) => { + // if (newValue === 1) fetchChartData() + // }) - initData() + initData(); - return { - // brainDataList, - // swordDataList, - // priceDataList, - // timeDataList, - // showALLData, - // HomePage, - // AIBull, - // AIGoldBull, - // loading, - // AIRadar, - // fetchChartData, - activeTabIndex, - klineData, - setKlineData, - initData, - getMarket, - getQueryVariable, - setActiveTabIndex, - isFeedback - } -}) + return { + // brainDataList, + // swordDataList, + // priceDataList, + // timeDataList, + // showALLData, + HomePage, + // AIBull, + AIGoldBull, + // loading, + // AIRadar, + fetchChartData, + activeTabIndex, + klineData, + setKlineData, + initData, + getMarket, + getQueryVariable, + setActiveTabIndex, + isFeedback, + }; +}); diff --git a/src/views/AIchat.vue b/src/views/AIchat.vue index 44a9343..5644f3b 100644 --- a/src/views/AIchat.vue +++ b/src/views/AIchat.vue @@ -11,6 +11,7 @@ import { dbqbSecondTwoAPI, dbqbSecondThreeAPI, dbqbSecondFourAPI, + dataListAPI, } from "../api/AIxiaocaishen"; import { useUserStore } from "../store/userPessionCode"; import { useChatStore } from "../store/chat"; @@ -21,6 +22,7 @@ import katex from "katex"; // 引入 KaTeX 库 import { htmlToText } from "html-to-text"; import { Howl, Howler } from "howler"; import * as echarts from "echarts"; +import _ from "lodash"; import moment from "moment"; import AIgif1 from "@/assets/img/AIchat/AIgif1.gif"; @@ -42,6 +44,14 @@ const dataStore = useDataStore(); // 随机GIF const currentGif = ref(""); +const renderer = new marked.Renderer(); +// 重写 del 方法,让删除线不生效 +renderer.del = function (text) { + // 处理各种数据类型 + console.log("text", text); + return "~" + text.tokens[0].raw + "
" + text.tokens[2].raw + "~"; +}; + // 定义自定义事件 const emit = defineEmits(["updateMessage", "sendMessage"]); @@ -174,6 +184,34 @@ const typeWriter = (text, callback) => { }, 50); // 调整速度(毫秒) }; +const fnGetData = (data) => { + const YaLiZhiChengLuoPan = data.YaLiZhiChengLuoPan; + let sz = ref(5.5); // 进行判断 + const yl = YaLiZhiChengLuoPan.Yali; // 压力位 + const zc = YaLiZhiChengLuoPan.ZhiCheng; // 支撑位 + console.log("yl", yl, "zc", zc); + if (yl == "较大" && zc == "较弱") { + sz.value = 0.5; // 极高风险 + } else if (yl == "一般" && zc == "较弱") { + sz.value = 1.5; // 弱撑中压区 + } else if (yl == "较弱" && zc == "较弱") { + sz.value = 2.5; // 弱撑弱压区 + } else if (yl == "较大" && zc == "较大") { + sz.value = 3.5; // 强撑强压区 + } else if (yl == "一般" && zc == "较大") { + sz.value = 4.5; // 强撑中压 + } else if (yl == "较弱" && zc == "较大") { + sz.value = 5.5; // 强撑弱压区 + } else if (yl == "较大" && zc == "一般") { + sz.value = 0.2; + } else if (yl == "一般" && zc == "一般") { + sz.value = 3; + } else if (yl == "较弱" && zc == "一般") { + sz.value = 5.8; + } + return sz.value; +}; + const hasValidData = ref(false); // 创建一个非响应式的对象来存储图表实例 @@ -205,18 +243,13 @@ watch( const userStore = useUserStore(); const params1 = { - workflow_id: "7514939889071718438", - parameters: { - content: newVal[newVal.length - 1].content, - userData: { - language: "cn", - marketList: "hk,cn,usa,my,sg,vi,in,gb", - token: localStorage.getItem("localToken"), - // language: "cn", - // marketList: "hk,cn,usa,my,sg,vi,in,gb" - // token: "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w", - }, - }, + content: newVal[newVal.length - 1].content, + language: "cn", + marketList: "hk,cn,usa,my,sg,vi,in,gb", + token: localStorage.getItem("localToken"), + // language: "cn", + // marketList: "hk,cn,usa,my,sg,vi,in,gb" + // token: "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w", }; // 标志 let flag = true; @@ -272,51 +305,49 @@ watch( if (flag) { const params2 = { content: newVal[newVal.length - 1].content, - userData: { - aibullPrivilegeState: 1, - aigoldBullPrivilegeS: 1, - airadarPrivilegeStat: 1, - brainPrivilegeState: 1, - spaceForecastPrivile: 1, - stockForecastPrivile: 1, - swordPrivilegeState: 1, - language: "cn", - marketList: "hk,cn,usa,my,sg,vi,in,gb", - token: localStorage.getItem("localToken"), - // aibullPrivilegeState: userStore.aibullPrivilegeState, - // aigoldBullPrivilegeState: userStore.aigoldBullPrivilegeState, - // airadarPrivilegeState: userStore.airadarPrivilegeState, - // brainPrivilegeState: userStore.brainPrivilegeState, - // spaceForecastPrivilegeState: userStore.spaceForecastPrivilegeState, - // stockForecastPrivilegeState: userStore.stockForecastPrivilegeState, - // swordPrivilegeState: userStore.swordPrivilegeState, - // language: "cn", - // marketList: "hk,cn,usa,my,sg,vi,in,gb" - // token: "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w", - }, + language: "cn", + marketList: "hk,cn,usa,my,sg,vi,in,gb", + token: localStorage.getItem("localToken"), + // language: "cn", + // marketList: "hk,cn,usa,my,sg,vi,in,gb" + // token: "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w", name: codeData.value.name, code: codeData.value.code, market: codeData.value.market, }; try { - const result21 = await dbqbSecondOneAPI({ - workflow_id: "7514945685688025127", - parameters: params2, - }); - const result22 = await dbqbSecondTwoAPI({ - workflow_id: "7514945728733888575", - parameters: params2, - }); - const result23 = await dbqbSecondThreeAPI({ - workflow_id: "7514945758421811254", - parameters: params2, - }); - const result24 = await dbqbSecondFourAPI({ - workflow_id: "7514945791469223955", - parameters: params2, + const result20 = await dataListAPI({ + token: localStorage.getItem("localToken"), + market: codeData.value.market, + code: codeData.value.code, + language: "cn", //t.value.suoxie, + // brainPrivilegeState: 1, + // swordPrivilegeState: 1, + // stockForecastPrivilegeState: 1, + // spaceForecastPrivilegeState: 1, + // aibullPrivilegeState: 1, + // aigoldBullPrivilegeState: 1, + // airadarPrivilegeState: 1, + // marketList: 1, + brainPrivilegeState: userStore.brainPerssion, + swordPrivilegeState: userStore.swordPerssion, + stockForecastPrivilegeState: userStore.pricePerssion, + spaceForecastPrivilegeState: userStore.timePerssion, + aibullPrivilegeState: userStore.aibullPerssion, + aigoldBullPrivilegeState: userStore.aiGnbullPerssion, + airadarPrivilegeState: userStore.airadarPerssion, + marketList: userStore.aiGoldMarketList, }); + const HomePage = result20.data.HomePage; + const AIGoldBull = result20.data.AIGoldBull; + + const result21 = await dbqbSecondOneAPI(params2); + const result22 = await dbqbSecondTwoAPI(params2); + const result23 = await dbqbSecondThreeAPI(params2); + const result24 = await dbqbSecondFourAPI(params2); + const katexRegex = /\$\$(.*?)\$\$/g; // 删除正在为您生成信息 chatStore.messages.pop(); @@ -335,7 +366,7 @@ watch( "\n" + result21.data.price + "\n" + - result21.data.data + result21.data.date ); const ac1 = pc1.replace(katexRegex, (match, formula) => { try { @@ -346,20 +377,157 @@ watch( } }); - chatStore.messages.push({ + // 先推送初始消息 + const aiMessage1 = reactive({ sender: "ai", class: "content1", type: "content1", - content: ac1, + content: "", + isTyping: true, }); + chatStore.messages.push(aiMessage1); + + let index1 = 0; + const typingInterval1 = setInterval(() => { + if (index1 < ac1.length) { + aiMessage1.content += ac1.charAt(index1); + index1++; + } else { + clearInterval(typingInterval1); + aiMessage1.isTyping = false; + } + }, 50); // 调整速度为50ms/字符 + + // chatStore.messages.push({ + // sender: "ai", + // class: "content1", + // type: "content1", + // content: ac1, + // }); // 添加六色罗盘 + const LiuSeData = JSON.parse(JSON.stringify(toRaw(HomePage))); + const sz = fnGetData(LiuSeData); + if (sz) { + hasValidData.value = true; + console.log("hasValidData设置为:", hasValidData.value); + } + // 先推送K线图消息 + const klineMessageId1 = `kline-${Date.now()}`; + console.log("生成K线消息ID:", klineMessageId1); + + chatStore.messages.push({ + sender: "ai", + class: "content1", + type: "content1", + kline: true, + chartData: sz, + messageId: klineMessageId1, + hasValidData: true, + klineType: 1, + }); + + console.log("六色罗盘消息已添加到聊天列表"); + + // 在渲染完成后初始化图表 + nextTick(() => { + console.log("nextTick开始 - 准备渲染图表"); + console.log("消息列表:", chatStore.messages); + + // 寻找最新添加的K线消息索引 + let klineIndex = -1; + for (let i = 0; i < chatStore.messages.length; i++) { + if (chatStore.messages[i].messageId === klineMessageId1) { + klineIndex = i; + break; + } + } + + console.log("找到的K线消息索引:", klineIndex); + + if (klineIndex !== -1) { + const containerId = `kline-container-${klineIndex}`; + console.log("图表容器ID:", containerId); + + // 确保DOM已经渲染完成 + setTimeout(() => { + console.log("延时执行,确保DOM已渲染"); + KlineCanvsEcharts(containerId); + }, 100); // 短暂延时确保DOM已渲染 + } else { + console.warn("未找到K线消息"); + } + }); + + // 度牛尺K线图 + const AIGoldBullData = JSON.parse(JSON.stringify(toRaw(AIGoldBull))); + const HomePageData = JSON.parse(JSON.stringify(toRaw(HomePage))); + console.log("处理 K 线数据 - 开始"); + console.log("AIGoldBullData", AIGoldBullData); + console.log("HomePageData", HomePageData); + + const Kline20 = { + name: HomePageData.StockInformation.Name, + Kline: AIGoldBullData, + }; + + // 打印K线数据结构 + console.log("K线数据结构:", Kline20); + console.log("K线数据名称:", Kline20.name); + console.log("K线数据:", Kline20.Kline ? Kline20.Kline : null); + + // 设置数据有效标志 + hasValidData.value = true; + console.log("hasValidData设置为:", hasValidData.value); + + // chatStore.messages.pop(); + + // 先推送K线图消息 + const klineMessageId2 = `kline-${Date.now() + 1}`; + console.log("生成K线消息ID:", klineMessageId2); + chatStore.messages.push({ sender: "ai", class: "content2", type: "content2", - content: "K线图", + kline: true, + chartData: Kline20, + messageId: klineMessageId2, + hasValidData: true, // 添加hasValidData标志 + klineType: 2, }); - // 度牛尺K线图 + + console.log("K线消息已添加到聊天列表"); + + // 在渲染完成后初始化图表 + nextTick(() => { + console.log("nextTick开始 - 准备渲染图表"); + console.log("消息列表:", chatStore.messages); + + // 寻找最新添加的K线消息索引 + let klineIndex = -1; + for (let i = 0; i < chatStore.messages.length; i++) { + if (chatStore.messages[i].messageId === klineMessageId2) { + klineIndex = i; + break; + } + } + + console.log("找到的K线消息索引:", klineIndex); + + if (klineIndex !== -1) { + const containerId = `kline-container-${klineIndex}`; + console.log("图表容器ID:", containerId); + + // 确保DOM已经渲染完成 + setTimeout(() => { + console.log("延时执行,确保DOM已渲染"); + KlineCanvsEcharts(containerId); + }, 100); // 短暂延时确保DOM已渲染 + } else { + console.warn("未找到K线消息"); + } + }); + // 添加标题2 chatStore.messages.push({ sender: "ai", @@ -378,12 +546,34 @@ watch( return match; } }); - chatStore.messages.push({ + + // 先推送初始消息 + const aiMessage2 = reactive({ sender: "ai", class: "content3", type: "content3", - content: ac2, + content: "", + isTyping: true, }); + chatStore.messages.push(aiMessage2); + + let index2 = 0; + const typingInterval2 = setInterval(() => { + if (index2 < ac2.length) { + aiMessage2.content += ac2.charAt(index2); + index2++; + } else { + clearInterval(typingInterval2); + aiMessage2.isTyping = false; + } + }, 50); // 调整速度为50ms/字符 + + // chatStore.messages.push({ + // sender: "ai", + // class: "content3", + // type: "content3", + // content: ac2, + // }); // 添加标题3-2 chatStore.messages.push({ sender: "ai", @@ -405,12 +595,51 @@ watch( // } // ); const ac3 = `

【主力行为】

${result23.data.zhuli1}

${result23.data.zhuli2}

${result23.data.zhuli3}

`; - chatStore.messages.push({ + + // 先推送初始消息 + const aiMessage3 = reactive({ sender: "ai", class: "content3", type: "content3", - content: ac3, + content: "", + isTyping: true, }); + chatStore.messages.push(aiMessage3); + + let index3 = 0; + const typingInterval3 = setInterval(() => { + if (index3 < ac3.length) { + aiMessage3.content += ac3.charAt(index3); + index3++; + } else { + clearInterval(typingInterval3); + aiMessage3.isTyping = false; + + // 延迟处理KaTeX确保DOM已更新 + nextTick(() => { + aiMessage3.content = aiMessage3.content.replace( + katexRegex, + (match, formula) => { + try { + return katex.renderToString(formula, { + throwOnError: false, + }); + } catch (error) { + console.error("KaTeX 渲染错误:", error); + return match; + } + } + ); + }); + } + }, 50); // 调整速度为50ms/字符 + + // chatStore.messages.push({ + // sender: "ai", + // class: "content3", + // type: "content3", + // content: ac3, + // }); // 添加标题3-3 chatStore.messages.push({ sender: "ai", @@ -440,12 +669,51 @@ watch( // return match; // } // }); - chatStore.messages.push({ + + // 先推送初始消息 + const aiMessage4 = reactive({ sender: "ai", class: "content3", type: "content3", - content: ac4, + content: "", + isTyping: true, }); + chatStore.messages.push(aiMessage4); + + let index4 = 0; + const typingInterval4 = setInterval(() => { + if (index4 < ac4.length) { + aiMessage4.content += ac4.charAt(index4); + index4++; + } else { + clearInterval(typingInterval4); + aiMessage4.isTyping = false; + + // 延迟处理KaTeX确保DOM已更新 + nextTick(() => { + aiMessage4.content = aiMessage4.content.replace( + katexRegex, + (match, formula) => { + try { + return katex.renderToString(formula, { + throwOnError: false, + }); + } catch (error) { + console.error("KaTeX 渲染错误:", error); + return match; + } + } + ); + }); + } + }, 50); // 调整速度为50ms/字符 + + // chatStore.messages.push({ + // sender: "ai", + // class: "content3", + // type: "content3", + // content: ac4, + // }); // 添加标题3-4 chatStore.messages.push({ sender: "ai", @@ -467,191 +735,184 @@ watch( // return match; // } // }); - chatStore.messages.push({ + + // 先推送初始消息 + const aiMessage5 = reactive({ sender: "ai", class: "content3", type: "content3", - content: ac5, + content: "", + isTyping: true, }); + chatStore.messages.push(aiMessage5); - chatStore.messages.push({ + let index5 = 0; + const typingInterval5 = setInterval(() => { + if (index5 < ac5.length) { + aiMessage5.content += ac5.charAt(index5); + index5++; + } else { + clearInterval(typingInterval5); + aiMessage5.isTyping = false; + + // 延迟处理KaTeX确保DOM已更新 + nextTick(() => { + aiMessage5.content = aiMessage5.content.replace( + katexRegex, + (match, formula) => { + try { + return katex.renderToString(formula, { + throwOnError: false, + }); + } catch (error) { + console.error("KaTeX 渲染错误:", error); + return match; + } + } + ); + }); + } + }, 50); // 调整速度为50ms/字符 + + // chatStore.messages.push({ + // sender: "ai", + // class: "content3", + // type: "content3", + // content: ac5, + // }); + + const ac6 = "内容由AI生成,请注意甄别"; + // 先推送初始消息 + const aiMessage6 = reactive({ sender: "ai", class: "mianze", type: "mianze", - content: "内容由AI生成,请注意甄别", - }); - - // 调用工作流获取回复 - const result = await getReplyAPI(params1); - // 获取结果 - const ans = ref(); - await result.then((res) => { - // 解析 data 字段中的 JSON - ans.value = JSON.parse(res.data); + content: "", + isTyping: true, }); - const AIcontent = ref(""); - // 处理不同的 answer 字段 - - if (ans.value.resp !== "" && ans.value.resp !== null) { - } else { - // 判断是否是股票问题 - if (ans.value.answer !== "") { - AIcontent.value = ans.value.answer; - const type = ans.value.type; - const data = JSON.parse(ans.value.data); - - console.log("处理 K 线数据 - 开始"); - console.log(data, "data"); - - const Kline20 = { - name: data.data.HomePage.StockInformation.Name, - Kline: data.data, - type: type, - }; - - // 打印K线数据结构 - console.log("K线数据结构:", Kline20); - console.log("K线数据名称:", Kline20.name); - console.log("K线数据类型:", Kline20.type); - console.log("K线数据:", Kline20.Kline ? Kline20.Kline : null); - - // 设置数据有效标志 - hasValidData.value = true; - console.log("hasValidData设置为:", hasValidData.value); - - // chatStore.messages.pop(); - - // 先推送K线图消息 - const klineMessageId = `kline-${Date.now()}`; - console.log("生成K线消息ID:", klineMessageId); - - chatStore.messages.push({ - sender: "ai", - type: "kline", - chartData: Kline20, - messageId: klineMessageId, - hasValidData: true, // 添加hasValidData标志 - }); + chatStore.messages.push(aiMessage6); - console.log("K线消息已添加到聊天列表"); + let index6 = 0; + const typingInterval6 = setInterval(() => { + if (index6 < ac6.length) { + aiMessage6.content += ac6.charAt(index6); + index6++; + } else { + clearInterval(typingInterval6); + aiMessage6.isTyping = false; - // 在渲染完成后初始化图表 + // 延迟处理KaTeX确保DOM已更新 nextTick(() => { - console.log("nextTick开始 - 准备渲染图表"); - console.log("消息列表:", chatStore.messages); - - // 寻找最新添加的K线消息索引 - let klineIndex = -1; - for (let i = 0; i < chatStore.messages.length; i++) { - if (chatStore.messages[i].messageId === klineMessageId) { - klineIndex = i; - break; + aiMessage6.content = aiMessage6.content.replace( + katexRegex, + (match, formula) => { + try { + return katex.renderToString(formula, { + throwOnError: false, + }); + } catch (error) { + console.error("KaTeX 渲染错误:", error); + return match; + } } - } - - console.log("找到的K线消息索引:", klineIndex); - - if (klineIndex !== -1) { - const containerId = `kline-container-${klineIndex}`; - console.log("图表容器ID:", containerId); - - // 确保DOM已经渲染完成 - setTimeout(() => { - console.log("延时执行,确保DOM已渲染"); - KlineCanvsEcharts(containerId); - }, 100); // 短暂延时确保DOM已渲染 - } else { - console.warn("未找到K线消息"); - } + ); }); } + }, 50); // 调整速度为50ms/字符 - // 修改后的消息处理逻辑 - const processedContent = marked(AIcontent.value); - const katexRegex = /\$\$(.*?)\$\$/g; - const plainTextContent = htmlToText(processedContent); - - // 获取音频数据 - const TTSResult = ( - await TTSAPI({ - language: "cn", - content: plainTextContent, - }) - ).json(); - - const tts = ref(); - await TTSResult.then((res) => { - tts.value = JSON.parse(res.data); - }); - - const ttsUrl = ref(); - if (tts.value.tts_cn !== null) { - audioStore.ttsUrl = tts.value.tts_cn.url; - ttsUrl.value = tts.value.tts_cn.url; - audioStore.isNewInstance = true; - } else if (tts.value.tts_en !== null) { - audioStore.ttsUrl = tts.value.tts_en.url; - ttsUrl.value = tts.value.tts_en.url; - audioStore.isNewInstance = true; - } + // chatStore.messages.push({ + // sender: "ai", + // class: "mianze", + // type: "mianze", + // content: "内容由AI生成,请注意甄别", + // }); - if (ttsUrl.value) { - nextTick(() => { - if (audioStore.isVoiceEnabled) { - console.log("ttsUrl.value", ttsUrl.value); - // 播放音频 - playAudio(ttsUrl.value); - } - }); - } + // // 修改后的消息处理逻辑 + // const processedContent = marked(AIcontent.value); + // const katexRegex = /\$\$(.*?)\$\$/g; + // const plainTextContent = htmlToText(processedContent); + + // // 获取音频数据 + // const TTSResult = ( + // await TTSAPI({ + // language: "cn", + // content: plainTextContent, + // }) + // ).json(); + + // const tts = ref(); + // await TTSResult.then((res) => { + // tts.value = JSON.parse(res.data); + // }); + + // const ttsUrl = ref(); + // if (tts.value.tts_cn !== null) { + // audioStore.ttsUrl = tts.value.tts_cn.url; + // ttsUrl.value = tts.value.tts_cn.url; + // audioStore.isNewInstance = true; + // } else if (tts.value.tts_en !== null) { + // audioStore.ttsUrl = tts.value.tts_en.url; + // ttsUrl.value = tts.value.tts_en.url; + // audioStore.isNewInstance = true; + // } - // chatStore.messages.pop(); - // 先推送初始消息 - const aiMessage = reactive({ - sender: "ai", - content: "", - isTyping: true, - }); - chatStore.messages.push(aiMessage); - - let index = 0; - const typingInterval = setInterval(() => { - if (index < processedContent.length) { - aiMessage.content += processedContent.charAt(index); - index++; - } else { - clearInterval(typingInterval); - aiMessage.isTyping = false; - - // 延迟处理KaTeX确保DOM已更新 - nextTick(() => { - aiMessage.content = aiMessage.content.replace( - katexRegex, - (match, formula) => { - try { - return katex.renderToString(formula, { - throwOnError: false, - }); - } catch (error) { - console.error("KaTeX 渲染错误:", error); - return match; - } - } - ); - chatStore.setLoading(false); - }); - } - }, 50); // 调整速度为50ms/字符 - // } else { - // chatStore.messages.pop(); - // chatStore.messages.push({ - // sender: "ai", - // content: status.msg - // }); - - // chatStore.setLoading(false); - // } - } + // if (ttsUrl.value) { + // nextTick(() => { + // if (audioStore.isVoiceEnabled) { + // console.log("ttsUrl.value", ttsUrl.value); + // // 播放音频 + // playAudio(ttsUrl.value); + // } + // }); + // } + + // // chatStore.messages.pop(); + // // 先推送初始消息 + // const aiMessage = reactive({ + // sender: "ai", + // content: "", + // isTyping: true, + // }); + // chatStore.messages.push(aiMessage); + + // let index = 0; + // const typingInterval = setInterval(() => { + // if (index < processedContent.length) { + // aiMessage.content += processedContent.charAt(index); + // index++; + // } else { + // clearInterval(typingInterval); + // aiMessage.isTyping = false; + + // // 延迟处理KaTeX确保DOM已更新 + // nextTick(() => { + // aiMessage.content = aiMessage.content.replace( + // katexRegex, + // (match, formula) => { + // try { + // return katex.renderToString(formula, { + // throwOnError: false, + // }); + // } catch (error) { + // console.error("KaTeX 渲染错误:", error); + // return match; + // } + // } + // ); + // chatStore.setLoading(false); + // }); + // } + // }, 50); // 调整速度为50ms/字符 + // // } else { + // // chatStore.messages.pop(); + // // chatStore.messages.push({ + // // sender: "ai", + // // content: status.msg + // // }); + + // // chatStore.setLoading(false); + // // } + // } } catch (e) { console.error("请求失败:", e); hasValidData.value = false; // 请求失败时设置数据无效 @@ -698,59 +959,12 @@ function KlineCanvsEcharts(containerId) { klineMessageIndex = containerId.split("-")[2]; console.log("KLine渲染: 找到K线消息索引:", klineMessageIndex); if ( - messages[klineMessageIndex].type === "kline" && + messages[klineMessageIndex].kline && messages[klineMessageIndex].chartData ) { klineData = messages[klineMessageIndex].chartData; } - if (!klineData || !klineData.Kline) { - console.warn("KLine渲染: 数据无效 - 在chatStore中找不到有效的K线数据"); - return; - } - - // 获取容器元素 - const container = document.getElementById(containerId); - if (!container) { - console.error("KLine渲染: 找不到容器元素:", containerId); - return; - } - - // 创建图表实例 - console.log("KLine渲染: 创建图表实例"); - try { - // 如果已有实例,先销毁 - if (chartInstancesMap[containerId]) { - console.log("KLine渲染: 销毁已有图表实例"); - chartInstancesMap[containerId].dispose(); - delete chartInstancesMap[containerId]; - } - - // 使用普通变量存储实例 - chartInstancesMap[containerId] = echarts.init(container); - console.log("KLine渲染: 图表实例创建成功"); - } catch (error) { - console.error("KLine渲染: 图表实例创建失败:", error); - return; - } - - const data = klineData.Kline.AIGoldBull; - console.log("KLine渲染: Kline数据", data); - - // 切割数据方法 - const splitData = (a) => { - console.log("KLine渲染: 开始数据切割"); - const categoryData = []; - let values = []; - for (let i = 0; i < a.length; i++) { - categoryData.push(a[i][0]); - values.push([a[i][1], a[i][2], a[i][3], a[i][4]]); - } - console.log("KLine渲染: 日期数据点数量", categoryData.length); - console.log("KLine渲染: 值数据点数量", values.length); - return { categoryData, values }; - }; - var KlineOption = {}; // 检测设备类型 @@ -761,18 +975,190 @@ function KlineCanvsEcharts(containerId) { isMobile ? "移动设备" : isTablet ? "平板设备" : "桌面设备" ); - // 给配置项 - console.log("KLine渲染: 开始配置图表选项"); + if (messages[klineMessageIndex].klineType == 1) { + if (!klineData) { + console.warn("六色罗盘渲染: 数据无效 - 在chatStore中找不到有效的K线数据"); + return; + } + + // 获取容器元素 + const container = document.getElementById(containerId); + if (!container) { + console.error("六色罗盘渲染: 找不到容器元素:", containerId); + return; + } + + // 创建图表实例 + console.log("六色罗盘渲染: 创建图表实例"); + + try { + // 如果已有实例,先销毁 + if (chartInstancesMap[containerId]) { + console.log("六色罗盘渲染: 销毁已有图表实例"); + chartInstancesMap[containerId].dispose(); + delete chartInstancesMap[containerId]; + } + + // 使用普通变量存储实例 + chartInstancesMap[containerId] = echarts.init(container); + console.log("六色罗盘渲染: 图表实例创建成功"); + } catch (error) { + console.error("六色罗盘渲染: 图表实例创建失败:", error); + return; + } + + const name = ref("六色罗盘"); + const size = ref(16); + // PC版字体大小 + if (window.innerWidth > 768) { + size.value = 25; + } + + KlineOption = { + tooltip: { + show: !1, + }, + series: [ + { + name: "\u4eea\u8868\u76d8", + type: "gauge", + center: ["50%", "50%"], + radius: "90%", + startAngle: 140, + endAngle: -140, + min: 0, + max: 6, + precision: 0, + splitNumber: 30, // 分成30份 + axisLine: { + show: !0, + lineStyle: { + color: [ + [0.17, "#FC4407"], + [0.33, "#FDC404"], + [0.5, "#2D8FFD"], + [0.67, "#87CCE7"], + [0.83, "#C1F478"], + [1, "#8FEB8D"], + ], + width: 20, + }, + }, + axisTick: { + show: !0, + splitNumber: 9, + length: 8, + lineStyle: { + color: "#eee", + width: 1, + type: "solid", + }, + }, + axisLabel: { + show: true, + formatter: function (v) {}, + textStyle: { + color: "auto", + }, + }, + // 中途切割 + splitLine: { + show: !0, + length: 20, + lineStyle: { + color: "#eee", + width: 2, + type: "solid", + }, + }, + pointer: { + length: "80%", + width: 8, + color: "auto", + }, + title: { + show: !0, + offsetCenter: ["-65%", -10], + textStyle: { + color: "#333", + fontSize: 15, + }, + }, + detail: { + show: !0, + backgroundColor: "rgba(0,0,0,0)", + borderWidth: 0, + borderColor: "#ccc", + width: 100, + height: 40, + offsetCenter: ["-90%", 0], // name位置 + formatter: function () { + return name.value; + }, + textStyle: { + color: "auto", + fontSize: size.value, // 字体尺寸 + }, + }, + data: [{ value: klineData }], + }, + ], + }; + } else if (messages[klineMessageIndex].klineType == 2) { + if (!klineData || !klineData.Kline) { + console.warn("KLine渲染: 数据无效 - 在chatStore中找不到有效的K线数据"); + return; + } + + // 获取容器元素 + const container = document.getElementById(containerId); + if (!container) { + console.error("KLine渲染: 找不到容器元素:", containerId); + return; + } + + // 创建图表实例 + console.log("KLine渲染: 创建图表实例"); + try { + // 如果已有实例,先销毁 + if (chartInstancesMap[containerId]) { + console.log("KLine渲染: 销毁已有图表实例"); + chartInstancesMap[containerId].dispose(); + delete chartInstancesMap[containerId]; + } + + // 使用普通变量存储实例 + chartInstancesMap[containerId] = echarts.init(container); + console.log("KLine渲染: 图表实例创建成功"); + } catch (error) { + console.error("KLine渲染: 图表实例创建失败:", error); + return; + } + + const data = klineData.Kline; + console.log("KLine渲染: Kline数据", data); + + // 切割数据方法 + const splitData = (a) => { + console.log("KLine渲染: 开始数据切割"); + const categoryData = []; + let values = []; + for (let i = 0; i < a.length; i++) { + categoryData.push(a[i][0]); + values.push([a[i][1], a[i][2], a[i][3], a[i][4]]); + } + console.log("KLine渲染: 日期数据点数量", categoryData.length); + console.log("KLine渲染: 值数据点数量", values.length); + return { categoryData, values }; + }; - if (klineData.type === 1) { - console.log("进入第一分类"); + // 给配置项 + console.log("KLine渲染: 开始配置图表选项"); const arr1 = []; const arr2 = []; const arr3 = []; const arr4 = []; - - // 动态K线 const changeColorKline = (QSXH, KLine20) => { if (QSXH) { QSXH.map((item) => { @@ -913,25 +1299,16 @@ function KlineCanvsEcharts(containerId) { }); } }; + console.log(arr1, arr2, arr3, arr4); changeColorKline(data.QSXH, data.KLine20); var dealData = splitData(data.KLine20); var dealData1 = splitData(arr1); var dealData2 = splitData(arr2); var dealData3 = splitData(arr3); var dealData4 = splitData(arr4); - - console.log("dealData", dealData); - console.log("dealData1", dealData1); - console.log("dealData2", dealData2); - console.log("dealData3", dealData3); - console.log("dealData4", dealData4); - - var dealGnBullData = data.JN; //金牛版成交量数据 - // 处理MA数据,创建两段重叠的数据 + var dealGnBullData = data.JN; function processMAData(data) { let processedData = []; - - // 初始化处理后的数据结构 data.forEach((item, idx) => { processedData.push({ date: item[0], @@ -943,7 +1320,6 @@ function KlineCanvsEcharts(containerId) { let singleTypeRed = [{ min: 0, max: 0, color: "#000" }]; let singleTypeYellow = [{ min: 0, max: 0, color: "#000" }]; let singleTypeGreen = [{ min: 0, max: 0, color: "#000" }]; - // 在类型切换点添加过渡点 for (let i = 1; i < processedData.length; i++) { if (processedData[i].type !== processedData[i - 1].type) { if ( @@ -984,7 +1360,6 @@ function KlineCanvsEcharts(containerId) { // processedData[i - 1].isTransition = true } } - // 分离红绿数据,包含过渡点 let greenData = []; let redData = []; let yellowData = []; @@ -998,11 +1373,9 @@ function KlineCanvsEcharts(containerId) { yellowData.push([item.date, "-"]); // if (item.isTransition) { - // // 添加过渡点到红色线 - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] + // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] + // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] // } - if (item.isTransitionGreen) { greenData[greenData.length - 1] = [ processedData[idx].date, @@ -1025,11 +1398,9 @@ function KlineCanvsEcharts(containerId) { yellowData.push([item.date, "-"]); // if (item.isTransition) { - // // 添加过渡点到绿色线 - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] + // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] + // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] // } - if (item.isTransitionGreen) { greenData[greenData.length - 1] = [ processedData[idx].date, @@ -1052,11 +1423,9 @@ function KlineCanvsEcharts(containerId) { yellowData.push(point); // if (item.isTransition) { - // // 添加过渡点到绿色线 - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] + // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] + // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] // } - if (item.isTransitionGreen) { greenData[greenData.length - 1] = [ processedData[idx].date, @@ -1086,84 +1455,77 @@ function KlineCanvsEcharts(containerId) { }; } const maData = processMAData(data.FCX); - console.log("maData", maData); - // 牵牛绳的数据 - - // 如果第一个字段的第一个数据为-1的话,不展示牵牛绳 + const maDuchiData = processMAData(data.DNC); if (data.FCX[0][1] == "-1") { maData.greenData = []; maData.redData = []; maData.yellowData = []; } - // 生成文字标注 const processBarData = (data) => { const barData = []; const markPointData = []; data.forEach((item) => { let color; - // 根据 item[4] 设置不同的颜色 switch (item[4]) { case 1: - color = "#13E113"; // 绿色 + color = "#13E113"; break; case 2: - color = "#FF0E00"; // 红色 + color = "#FF0E00"; break; case 3: - color = "#0000FE"; // 深蓝色(倍量阳) + color = "#0000FE"; break; case 4: - color = "#1397FF"; // 浅蓝色(倍量阴) + color = "#1397FF"; break; } barData.push({ value: item[5], itemStyle: { normal: { - color: color, // 动态设置颜色 + color: color, }, }, }); - // 小牛 + if (item[1] === 1) { markPointData.push({ coord: [item[0], item[5]], symbol: "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb101000d5si3v3hr7w2vg0h43z1u.png", - symbolSize: [30, 30], // 图片大小 + symbolSize: [30, 30], label: { normal: { - color: "rgba(0, 0, 0, 0)", //字体颜色 + color: "rgba(0, 0, 0, 0)", }, }, }); } - // 大牛 - // 中部标记(红色牛) + if (item[2] === 1) { markPointData.push({ coord: [item[0], item[5] / 2], symbol: "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujaz01000d5si016bxdf6vh0377d2h.png", - symbolSize: [30, 30], // 图片大小 + symbolSize: [30, 30], label: { normal: { - color: "rgba(0, 0, 0, 0)", //字体颜色 + color: "rgba(0, 0, 0, 0)", }, }, }); } - // 金牛 - // 底部标记(金牛) + if (item[3] === 1) { markPointData.push({ coord: [item[0], 0], symbol: "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb001000d5shzls0tmd4vs0e5tdrw.png", - symbolSize: [30, 30], // 图片大小 + symbolSize: [30, 30], label: { normal: { - color: "rgba(0, 0, 0, 0)", //字体颜色 + color: "rgba(0, 0, 0, 0)", }, }, }); @@ -1172,23 +1534,19 @@ function KlineCanvsEcharts(containerId) { return { barData, markPointData }; }; const { barData, markPointData } = processBarData(dealGnBullData); - // 配置项 KlineOption = { - // 底部选项 - // animation: false, - // 手放上去显示的内容 legend: [ { - //图例文字的样式 textStyle: { - color: "black", //图例文字颜色 - fontSize: window.innerWidth > 768 ? 15 : vwToPx(2.8), // 响应式字体大小 + color: "black", + fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), }, - width: "100%", // 确保有足够的宽度容纳图例 + width: "100%", + top: window.innerWidth > 768 ? "0%" : "-1%", left: "center", - itemGap: window.innerWidth > 768 ? 20 : 10, // 控制图例项之间的间距 - itemWidth: 10, // 调整颜色块的宽度 - itemHeight: 10, // 调整颜色块的高度 + itemGap: window.innerWidth > 768 ? 20 : 10, + itemWidth: 10, + itemHeight: 10, data: [ { name: "进攻K线", @@ -1217,21 +1575,19 @@ function KlineCanvsEcharts(containerId) { ], }, { - //图例文字的样式 textStyle: { - color: "black", //图例文字颜色 - fontSize: window.innerWidth > 768 ? 15 : vwToPx(2.8), // 响应式字体大小 + color: "black", + fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), }, - orient: "horizontal", // 设置图例水平布局 - top: "5%", - width: "100%", // 确保有足够的宽度容纳图例 + orient: "horizontal", + top: window.innerWidth > 768 ? "3%" : "2%", + width: "100%", left: "center", - itemGap: 15, // 控制图例项之间的间距 + itemGap: 15, data: [ - // 牵牛绳 { - name: "{green|━}{red|━} " + "牵牛绳", // 将牵牛绳样式应用到文本前缀 - icon: "none", // 去掉默认图例图标 + name: "{green|━}{red|━} " + "牵牛绳", + icon: "none", textStyle: { rich: { green: { @@ -1253,20 +1609,46 @@ function KlineCanvsEcharts(containerId) { }, ], }, + { + textStyle: { + color: "black", + fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), + }, + orient: "horizontal", + top: window.innerWidth > 768 ? "72%" : "64%", + width: "100%", + left: "center", + itemGap: 15, + data: [ + { + name: "{green|━}{red|━} " + "度牛尺", + icon: "none", + textStyle: { + rich: { + green: { + color: "green", + fontSize: window.innerWidth > 768 ? 20 : 10, + }, + red: { + color: "red", + fontSize: window.innerWidth > 768 ? 20 : 10, + }, + }, + }, + }, + ], + }, ], tooltip: { - // 调用接口之后方法 formatter: function (a, b, d) { if (a[0].seriesIndex == 0) { - const KlineTag = ref([]); // 判断几根K线 + const KlineTag = ref([]); const AIBullTag = ref([]); - - // 找到第一个满足条件的数据 KlineTag.value = a.find((item) => item.data[1])?.data || []; - - // 找到第一个满足条件的非 '-' 数据 AIBullTag.value = a.slice(4).find((item) => item.data[1] !== "-")?.data || []; + // console.log(AIBullTag.value) + return ( a[0].name + "
" + @@ -1290,8 +1672,8 @@ function KlineCanvsEcharts(containerId) { ":" + AIBullTag.value[1] ); - } else { - // 格式化成交量显示 + } + if (a[0].seriesIndex == 4) { let formattedVolume; if (a[0].data.value >= 10000) { formattedVolume = (a[0].data.value / 10000).toFixed(2) + "w"; @@ -1300,30 +1682,35 @@ function KlineCanvsEcharts(containerId) { } return a[0].name + "
" + "成交量" + ":" + formattedVolume; } + if ([10, 11, 12].includes(a[0].seriesIndex)) { + const duchiData = a.find( + (item) => item.data && item.data[1] !== "-" + ); + return duchiData + ? a[0].axisValue + "
" + "度牛尺" + ":" + duchiData.data[1] + : null; + } }, trigger: "axis", axisPointer: { - //坐标轴指示器配置项 - type: "cross", //‘line’直线指示器,‘cross’十字准星指示器,‘shadow’阴影指示器 + type: "cross", }, - backgroundColor: "rgba(119, 120, 125, 0.6)", // 提示框浮层的边框颜色。 - borderWidth: 1, // 提示框浮层的边框宽。 - borderColor: "#77787D", // 提示框浮层的边框颜色。 - padding: 10, // 提示框浮层内边距, + backgroundColor: "rgba(119, 120, 125, 0.6)", + borderWidth: 1, + borderColor: "#77787D", + padding: 10, textStyle: { - //提示框浮层上的文字样式 color: "#fff", }, }, - // 手放上去时拉的框 axisPointer: { link: [ { - xAxisIndex: "all", // 同时触发所有图形的 x 坐标轴指示器 + xAxisIndex: "all", }, ], label: { - backgroundColor: "#77787D", // 文本标签的背景颜色 + backgroundColor: "#77787D", }, }, toolbox: { @@ -1331,18 +1718,24 @@ function KlineCanvsEcharts(containerId) { }, grid: [ { - left: window.innerWidth > 768 ? "18%" : "15%", + // left: window.innerWidth > 768 ? '8%' : '15%', + // right: window.innerWidth > 768 ? '4%' : '2.5%', + top: window.innerWidth > 768 ? "10%" : "5%", + height: window.innerWidth > 768 ? "36%" : "34%", + containLabel: false, + }, + { + // left: window.innerWidth > 768 ? '8%' : '15%', // right: window.innerWidth > 768 ? '4%' : '2.5%', - height: window.innerWidth > 768 ? "60%" : "57%", - top: window.innerWidth > 768 ? "8%" : "12%", - // height: '33%', + top: window.innerWidth > 768 ? "50%" : "42%", + height: window.innerWidth > 768 ? "20%" : "22%", containLabel: false, }, { - left: window.innerWidth > 768 ? "18%" : "15%", + // left: window.innerWidth > 768 ? '8%' : '15%', // right: window.innerWidth > 768 ? '4%' : '2.5%', - top: window.innerWidth > 768 ? "72%" : "73%", - height: "20%", + top: window.innerWidth > 768 ? "78%" : "70%", + height: window.innerWidth > 768 ? "20%" : "22%", containLabel: false, }, ], @@ -1350,23 +1743,22 @@ function KlineCanvsEcharts(containerId) { { type: "category", data: dealData.categoryData, - boundaryGap: true, // 坐标轴两边是否留空,false表示不留空(通常用于K线图) - axisLine: { onZero: false }, // 设置坐标轴是否通过零点,onZero:false表示不强制穿过零点 - splitLine: { show: false }, // 是否显示分隔线,false表示不显示 - min: "dataMin", // 坐标轴最小值,'dataMin'表示从数据的最小值开始 - max: "dataMax", // 坐标轴最大值,'dataMax'表示从数据的最大值开始 + boundaryGap: true, + axisLine: { onZero: false }, + splitLine: { show: false }, + min: "dataMin", + max: "dataMax", axisPointer: { - z: 100, // 坐标轴指示器的层级,较大的值会让它显示在其他元素上方 + z: 100, }, axisLine: { lineStyle: { - color: "black", // 坐标轴线的颜色 + color: "black", }, }, // - axisLabel: { show: false }, // 隐藏刻度标签 - axisTick: { show: false }, // 隐藏刻度线 + axisLabel: { show: false }, + axisTick: { show: false }, }, - // 下方成交量图的X轴 { type: "category", gridIndex: 1, @@ -1374,14 +1766,22 @@ function KlineCanvsEcharts(containerId) { boundaryGap: true, axisLine: { lineStyle: { color: "black" } }, axisLabel: { + show: false, + interval: "auto", + }, + }, + { + type: "category", + gridIndex: 2, + data: dealData.categoryData, + boundaryGap: true, + axisLine: { lineStyle: { color: "black" } }, + axisLabel: { show: true, - // fontSize: window.innerWidth > 768 ? 10 : 8, interval: "auto", }, - axisTick: { show: false }, // 隐藏刻度线 }, ], - // 控制纵坐标展示数据 yAxis: [ { scale: true, @@ -1402,16 +1802,16 @@ function KlineCanvsEcharts(containerId) { axisTick: { show: false }, splitLine: { show: false }, }, - // 下方成交量图的Y轴 { scale: true, gridIndex: 1, - splitNumber: 4, // 增加分割数以获得更好的间距 - minInterval: 1, // 确保标签之间的最小间隔 + splitNumber: 4, + min: 0, + minInterval: 1, axisLabel: { show: true, fontSize: window.innerWidth > 768 ? 15 : 10, - margin: 8, // 添加边距以获得更好的间距 + margin: 8, formatter: (value) => { if (value >= 1000000000) { return (value / 1000000000).toFixed(1) + "B"; @@ -1425,25 +1825,58 @@ function KlineCanvsEcharts(containerId) { }, axisLine: { show: true, lineStyle: { color: "black" } }, axisTick: { show: false }, - splitLine: { show: true, lineStyle: { type: "dashed" } }, // 添加分割线以提高可读性 - boundaryGap: ["20%", "20%"], // 为坐标轴边界添加内边距 + splitLine: { show: true, lineStyle: { type: "dashed" } }, + boundaryGap: ["20%", "20%"], + }, + { + type: "value", + gridIndex: 2, + min: 0, + max: 100, + axisLabel: { + show: true, + fontSize: window.innerWidth > 768 ? 15 : 10, + formatter: function (value) { + var customValues = [0, 20, 50, 80, 100]; + return customValues.indexOf(value) > -1 ? value : ""; + }, + }, + axisLine: { + show: true, + lineStyle: { + color: "black", + }, + }, + axisTick: { + show: false, + }, + splitNumber: 10, + splitLine: { + show: true, + lineStyle: { + type: "dashed", + color: "#fff", + width: 1, + }, + interval: function (index, value) { + return [20, 50, 80, 100].indexOf(value) > -1; + }, + }, }, ], - // 下拉条 dataZoom: [ { type: "inside", - xAxisIndex: [0, 1], + xAxisIndex: [0, 1, 2], start: 55, end: 100, }, { show: true, - xAxisIndex: [0, 1], + xAxisIndex: [0, 1, 2], type: "slider", - top: window.innerWidth > 768 ? "95%" : "91%", - left: window.innerWidth > 768 ? "18%" : "15%", - // left: window.innerWidth > 768 ? '10%' : '8%', + top: window.innerWidth > 768 ? "95%" : "96%", + left: window.innerWidth > 768 ? "10%" : "8%", start: 98, end: 100, }, @@ -1457,7 +1890,7 @@ function KlineCanvsEcharts(containerId) { color: "green", }, dimension: 0, - seriesIndex: 6, + seriesIndex: 7, }, { type: "piecewise", @@ -1467,7 +1900,7 @@ function KlineCanvsEcharts(containerId) { color: "red", }, dimension: 0, - seriesIndex: 7, + seriesIndex: 8, }, { type: "piecewise", @@ -1477,21 +1910,20 @@ function KlineCanvsEcharts(containerId) { color: "yellow", }, dimension: 0, - seriesIndex: 8, + seriesIndex: 9, }, ], series: [ - // 第一条K线 { name: "进攻K线", type: "candlestick", - barWidth: "50%", // 设置和上方图表一致的柱子宽度 + barWidth: "50%", data: dealData1.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { - color: "rgb(255,0,0)", // 默认颜色 + color: "rgb(255,0,0)", color0: "rgb(255,0,0)", borderColor: "rgb(255,0,0)", borderColor0: "rgb(255,0,0)", @@ -1503,13 +1935,13 @@ function KlineCanvsEcharts(containerId) { { name: "推进K线", type: "candlestick", - barWidth: "50%", // 设置和上方图表一致的柱子宽度 + barWidth: "50%", data: dealData2.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { - color: "rgb(0,0,252)", // 默认颜色 + color: "rgb(0,0,252)", color0: "rgb(0,0,252)", borderColor: "rgb(0,0,252)", borderColor0: "rgb(0,0,252)", @@ -1520,13 +1952,13 @@ function KlineCanvsEcharts(containerId) { { name: "防守K线", type: "candlestick", - barWidth: "50%", // 设置和上方图表一致的柱子宽度 + barWidth: "50%", data: dealData3.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { - color: "orange", // 默认颜色 + color: "orange", color0: "orange", borderColor: "orange", borderColor0: "orange", @@ -1537,13 +1969,13 @@ function KlineCanvsEcharts(containerId) { { name: "撤退K线", type: "candlestick", - barWidth: "50%", // 设置和上方图表一致的柱子宽度 + barWidth: "50%", data: dealData4.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { - color: "rgb(84,252,252)", // 默认颜色 + color: "rgb(84,252,252)", color0: "rgb(84,252,252)", borderColor: "rgb(84,252,252)", borderColor0: "rgb(84,252,252)", @@ -1551,39 +1983,57 @@ function KlineCanvsEcharts(containerId) { }, gridIndex: 0, }, - //成交量柱状图 { name: "成交量", type: "bar", - barWidth: "70%", // 设置和上方图表一致的柱子宽度 + barWidth: "70%", xAxisIndex: 1, yAxisIndex: 1, data: barData, markPoint: { data: markPointData, label: { - show: false, // 确保隐藏标记的值 + show: false, + }, + }, + }, + { + name: "{green|━}{red|━} " + "牵牛绳", + type: "line", + data: [], + smooth: true, + symbol: "none", + xAxisIndex: 0, + yAxisIndex: 0, + showSymbol: false, + lineStyle: { + opacity: 0, + }, + itemStyle: { + normal: { + color: "green", }, }, + gridIndex: 0, }, { - name: "{green|━}{red|━} " + "牵牛绳", // 将牵牛绳样式应用到文本前缀 + name: "{green|━}{red|━} " + "度牛尺", type: "line", - data: [], // 设置为空数组,不显示数据点 + data: [], smooth: true, symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 - showSymbol: false, // 隐藏符号 + xAxisIndex: 0, + yAxisIndex: 0, + showSymbol: false, lineStyle: { - opacity: 0, // 使线条透明 + opacity: 0, }, itemStyle: { normal: { color: "green", }, }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 + gridIndex: 0, }, { name: "虫线", @@ -1591,19 +2041,18 @@ function KlineCanvsEcharts(containerId) { data: maData.greenData, smooth: true, symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { color: "green", lineStyle: { - // color: 'orange', // 线的颜色 - width: 2, // 线宽 - type: "solid", // 线类型 + width: 2, + type: "solid", }, }, }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 + gridIndex: 0, }, { name: "龙线", @@ -1611,19 +2060,18 @@ function KlineCanvsEcharts(containerId) { data: maData.redData, smooth: true, symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 + xAxisIndex: 0, + yAxisIndex: 0, itemStyle: { normal: { color: "red", lineStyle: { - // color: 'orange', // 线的颜色 - width: 2, // 线宽 - type: "solid", // 线类型 + width: 2, + type: "solid", }, }, }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 + gridIndex: 0, }, { name: "黄色", @@ -1644,3453 +2092,281 @@ function KlineCanvsEcharts(containerId) { }, gridIndex: 0, }, - ], - // graphic: { - // markPointData : generateGraphicmarkPointData(data11111) - // } - }; - } else if (klineData.type === 2) { - console.log("进入第二分类"); - - const arr1 = []; - const arr2 = []; - const arr3 = []; - const arr4 = []; - const changeColorKline = (QSXH, KLine20) => { - if (QSXH) { - QSXH.map((item) => { - KLine20.map((kline_item) => { - if (item[1] == 1 && item[0] == kline_item[0]) { - arr1.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 2 && item[0] == kline_item[0]) { - arr2.push(kline_item); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 3 && item[0] == kline_item[0]) { - arr3.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 4 && item[0] == kline_item[0]) { - arr4.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - }); - }); - } - }; - console.log(arr1, arr2, arr3, arr4); - changeColorKline(data.QSXH, data.KLine20); - var dealData = splitData(data.KLine20); - var dealData1 = splitData(arr1); - var dealData2 = splitData(arr2); - var dealData3 = splitData(arr3); - var dealData4 = splitData(arr4); - var dealGnBullData = data.JN; - function processMAData(data) { - let processedData = []; - data.forEach((item, idx) => { - processedData.push({ - date: item[0], - value: item[1], - type: item[2], - }); - }); - // 当某一种type只存在一天,设置另一种type透明 - let singleTypeRed = [{ min: 0, max: 0, color: "#000" }]; - let singleTypeYellow = [{ min: 0, max: 0, color: "#000" }]; - let singleTypeGreen = [{ min: 0, max: 0, color: "#000" }]; - for (let i = 1; i < processedData.length; i++) { - if (processedData[i].type !== processedData[i - 1].type) { - if ( - i == processedData.length - 1 || - (processedData[i].type !== processedData[i + 1].type && - processedData[i - 1].type === processedData[i + 1].type) - ) { - if (processedData[i - 1].type === 0) { - singleTypeGreen.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } else if (processedData[i - 1].type === 1) { - singleTypeRed.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } else if (processedData[i - 1].type === 2) { - singleTypeYellow.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } - } - } - if (processedData[i].type !== processedData[i - 1].type) { - if (processedData[i].type == 0) { - processedData[i - 1].isTransitionGreen = 1; - } else if (processedData[i].type == 1) { - processedData[i - 1].isTransitionRed = 1; - } else if (processedData[i].type == 2) { - processedData[i - 1].isTransitionYellow = 1; - } - // // 创建过渡点,使用前一个点的值 - // processedData[i - 1].isTransition = true - } - } - let greenData = []; - let redData = []; - let yellowData = []; - - processedData.forEach((item, idx) => { - const point = [item.date, item.value]; - - if (item.type === 0) { - greenData.push(point); - redData.push([item.date, "-"]); - yellowData.push([item.date, "-"]); - - // if (item.isTransition) { - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } else if (item.type === 1) { - redData.push(point); - greenData.push([item.date, "-"]); - yellowData.push([item.date, "-"]); - - // if (item.isTransition) { - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } else if (item.type === 2) { - redData.push([item.date, "-"]); - greenData.push([item.date, "-"]); - yellowData.push(point); - - // if (item.isTransition) { - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } - }); - - return { - greenData: greenData, - redData: redData, - yellowData: yellowData, - singleTypeGreen: singleTypeGreen, - singleTypeRed: singleTypeRed, - singleTypeYellow: singleTypeYellow, - }; - } - const maData = processMAData(data.FCX); - const maDuchiData = processMAData(data.DNC); - if (data.FCX[0][1] == "-1") { - maData.greenData = []; - maData.redData = []; - maData.yellowData = []; - } - const processBarData = (data) => { - const barData = []; - const markPointData = []; - data.forEach((item) => { - let color; - switch (item[4]) { - case 1: - color = "#13E113"; - break; - case 2: - color = "#FF0E00"; - break; - case 3: - color = "#0000FE"; - break; - case 4: - color = "#1397FF"; - break; - } - barData.push({ - value: item[5], - itemStyle: { - normal: { - color: color, - }, - }, - }); - - if (item[1] === 1) { - markPointData.push({ - coord: [item[0], item[5]], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb101000d5si3v3hr7w2vg0h43z1u.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - - if (item[2] === 1) { - markPointData.push({ - coord: [item[0], item[5] / 2], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujaz01000d5si016bxdf6vh0377d2h.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - - if (item[3] === 1) { - markPointData.push({ - coord: [item[0], 0], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb001000d5shzls0tmd4vs0e5tdrw.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - }); - return { barData, markPointData }; - }; - const { barData, markPointData } = processBarData(dealGnBullData); - KlineOption = { - legend: [ - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), - }, - width: "100%", - top: window.innerWidth > 768 ? "0%" : "-1%", - left: "center", - itemGap: window.innerWidth > 768 ? 20 : 10, - itemWidth: 10, - itemHeight: 10, - data: [ - { - name: "进攻K线", - itemStyle: { - color: "rgb(255,0,0)", - }, - }, - { - name: "防守K线", - itemStyle: { - color: "red", - }, - }, - { - name: "推进K线", - itemStyle: { - color: "orange", - }, - }, - { - name: "撤退K线", - itemStyle: { - color: "rgb(84,252,252)", - }, - }, - ], - }, - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), - }, - orient: "horizontal", - top: window.innerWidth > 768 ? "3%" : "2%", - width: "100%", - left: "center", - itemGap: 15, - data: [ - { - name: "{green|━}{red|━} " + "牵牛绳", - icon: "none", - textStyle: { - rich: { - green: { - color: "green", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - red: { - color: "red", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - }, - }, - }, - { - name: "龙线", - }, - { - name: "虫线", - }, - ], - }, - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), - }, - orient: "horizontal", - top: window.innerWidth > 768 ? "72%" : "64%", - width: "100%", - left: "center", - itemGap: 15, - data: [ - { - name: "{green|━}{red|━} " + "度牛尺", - icon: "none", - textStyle: { - rich: { - green: { - color: "green", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - red: { - color: "red", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - }, - }, - }, - ], - }, - ], - tooltip: { - formatter: function (a, b, d) { - if (a[0].seriesIndex == 0) { - const KlineTag = ref([]); - const AIBullTag = ref([]); - KlineTag.value = a.find((item) => item.data[1])?.data || []; - AIBullTag.value = - a.slice(4).find((item) => item.data[1] !== "-")?.data || []; - // console.log(AIBullTag.value) - - return ( - a[0].name + - "
" + - "开盘价" + - ":" + - KlineTag.value[1] + - "
" + - "收盘价" + - ":" + - KlineTag.value[2] + - "
" + - "最低价" + - ":" + - KlineTag.value[3] + - "
" + - "最高价" + - ":" + - KlineTag.value[4] + - "
" + - "牵牛绳" + - ":" + - AIBullTag.value[1] - ); - } - if (a[0].seriesIndex == 4) { - let formattedVolume; - if (a[0].data.value >= 10000) { - formattedVolume = (a[0].data.value / 10000).toFixed(2) + "w"; - } else { - formattedVolume = a[0].data.value; - } - return a[0].name + "
" + "成交量" + ":" + formattedVolume; - } - if ([10, 11, 12].includes(a[0].seriesIndex)) { - const duchiData = a.find( - (item) => item.data && item.data[1] !== "-" - ); - return duchiData - ? a[0].axisValue + "
" + "度牛尺" + ":" + duchiData.data[1] - : null; - } - }, - trigger: "axis", - axisPointer: { - type: "cross", - }, - backgroundColor: "rgba(119, 120, 125, 0.6)", - borderWidth: 1, - borderColor: "#77787D", - padding: 10, - textStyle: { - color: "#fff", - }, - }, - axisPointer: { - link: [ - { - xAxisIndex: "all", - }, - ], - label: { - backgroundColor: "#77787D", - }, - }, - toolbox: { - show: false, - }, - grid: [ - { - // left: window.innerWidth > 768 ? '8%' : '15%', - // right: window.innerWidth > 768 ? '4%' : '2.5%', - top: window.innerWidth > 768 ? "10%" : "5%", - height: window.innerWidth > 768 ? "36%" : "34%", - containLabel: false, - }, - { - // left: window.innerWidth > 768 ? '8%' : '15%', - // right: window.innerWidth > 768 ? '4%' : '2.5%', - top: window.innerWidth > 768 ? "50%" : "42%", - height: window.innerWidth > 768 ? "20%" : "22%", - containLabel: false, - }, - { - // left: window.innerWidth > 768 ? '8%' : '15%', - // right: window.innerWidth > 768 ? '4%' : '2.5%', - top: window.innerWidth > 768 ? "78%" : "70%", - height: window.innerWidth > 768 ? "20%" : "22%", - containLabel: false, - }, - ], - xAxis: [ - { - type: "category", - data: dealData.categoryData, - boundaryGap: true, - axisLine: { onZero: false }, - splitLine: { show: false }, - min: "dataMin", - max: "dataMax", - axisPointer: { - z: 100, - }, - axisLine: { - lineStyle: { - color: "black", - }, - }, // - axisLabel: { show: false }, - axisTick: { show: false }, - }, - { - type: "category", - gridIndex: 1, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { lineStyle: { color: "black" } }, - axisLabel: { - show: false, - interval: "auto", - }, - }, - { - type: "category", - gridIndex: 2, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { lineStyle: { color: "black" } }, - axisLabel: { - show: true, - interval: "auto", - }, - }, - ], - yAxis: [ - { - scale: true, - gridIndex: 0, - position: "left", - axisLabel: { - inside: false, - align: "right", - fontSize: window.innerWidth > 768 ? 15 : 10, - }, - axisLine: { - show: true, - lineStyle: { - fontSize: "", - color: "black", - }, - }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - { - scale: true, - gridIndex: 1, - splitNumber: 4, - min: 0, - minInterval: 1, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - margin: 8, - formatter: (value) => { - if (value >= 1000000000) { - return (value / 1000000000).toFixed(1) + "B"; - } else if (value >= 1000000) { - return (value / 1000000).toFixed(1) + "M"; - } else if (value >= 10000) { - return (value / 10000).toFixed(1) + "W"; - } - return value.toFixed(0); - }, - }, - axisLine: { show: true, lineStyle: { color: "black" } }, - axisTick: { show: false }, - splitLine: { show: true, lineStyle: { type: "dashed" } }, - boundaryGap: ["20%", "20%"], - }, - { - type: "value", - gridIndex: 2, - min: 0, - max: 100, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - formatter: function (value) { - var customValues = [0, 20, 50, 80, 100]; - return customValues.indexOf(value) > -1 ? value : ""; - }, - }, - axisLine: { - show: true, - lineStyle: { - color: "black", - }, - }, - axisTick: { - show: false, - }, - splitNumber: 10, - splitLine: { - show: true, - lineStyle: { - type: "dashed", - color: "#fff", - width: 1, - }, - interval: function (index, value) { - return [20, 50, 80, 100].indexOf(value) > -1; - }, - }, - }, - ], - dataZoom: [ - { - type: "inside", - xAxisIndex: [0, 1, 2], - start: 55, - end: 100, - }, - { - show: true, - xAxisIndex: [0, 1, 2], - type: "slider", - top: window.innerWidth > 768 ? "95%" : "96%", - left: window.innerWidth > 768 ? "10%" : "8%", - start: 98, - end: 100, - }, - ], - visualMap: [ - { - type: "piecewise", - show: false, - pieces: maData.singleTypeGreen, - outOfRange: { - color: "green", - }, - dimension: 0, - seriesIndex: 7, - }, - { - type: "piecewise", - show: false, - pieces: maData.singleTypeRed, - outOfRange: { - color: "red", - }, - dimension: 0, - seriesIndex: 8, - }, - { - type: "piecewise", - show: false, - pieces: maData.singleTypeYellow, - outOfRange: { - color: "yellow", - }, - dimension: 0, - seriesIndex: 9, - }, - ], - series: [ - { - name: "进攻K线", - type: "candlestick", - barWidth: "50%", - data: dealData1.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(255,0,0)", - color0: "rgb(255,0,0)", - borderColor: "rgb(255,0,0)", - borderColor0: "rgb(255,0,0)", - }, - }, - gridIndex: 0, - }, - // - { - name: "推进K线", - type: "candlestick", - barWidth: "50%", - data: dealData2.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(0,0,252)", - color0: "rgb(0,0,252)", - borderColor: "rgb(0,0,252)", - borderColor0: "rgb(0,0,252)", - }, - }, - gridIndex: 0, - }, - { - name: "防守K线", - type: "candlestick", - barWidth: "50%", - data: dealData3.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "orange", - color0: "orange", - borderColor: "orange", - borderColor0: "orange", - }, - }, - gridIndex: 0, - }, - { - name: "撤退K线", - type: "candlestick", - barWidth: "50%", - data: dealData4.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(84,252,252)", - color0: "rgb(84,252,252)", - borderColor: "rgb(84,252,252)", - borderColor0: "rgb(84,252,252)", - }, - }, - gridIndex: 0, - }, - { - name: "成交量", - type: "bar", - barWidth: "70%", - xAxisIndex: 1, - yAxisIndex: 1, - data: barData, - markPoint: { - data: markPointData, - label: { - show: false, - }, - }, - }, - { - name: "{green|━}{red|━} " + "牵牛绳", - type: "line", - data: [], - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - showSymbol: false, - lineStyle: { - opacity: 0, - }, - itemStyle: { - normal: { - color: "green", - }, - }, - gridIndex: 0, - }, - { - name: "{green|━}{red|━} " + "度牛尺", - type: "line", - data: [], - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - showSymbol: false, - lineStyle: { - opacity: 0, - }, - itemStyle: { - normal: { - color: "green", - }, - }, - gridIndex: 0, - }, - { - name: "虫线", - type: "line", - data: maData.greenData, - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "green", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 0, - }, - { - name: "龙线", - type: "line", - data: maData.redData, - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "red", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 0, - }, - { - name: "黄色", - type: "line", - data: maData.yellowData, - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "yellow", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 0, - }, - { - name: "背景区域", - type: "line", - data: [], - xAxisIndex: 2, - yAxisIndex: 2, - markArea: { - silent: true, - itemStyle: { - normal: { - opacity: 1, - }, - }, - label: { - normal: { - show: true, - position: "insideRight", - fontSize: window.innerWidth > 768 ? 16 : 12, - fontWeight: "bold", - color: "#13E113", - distance: 10, - }, - }, - data: [ - [ - { - yAxis: 0, - itemStyle: { - normal: { - color: "#CFFFCF", - }, - }, - label: { - normal: { - formatter: "度牛区", - }, - }, - }, - { - yAxis: 20, - }, - ], - [ - { - yAxis: 20, - itemStyle: { - normal: { - color: "#A6FFFF", - }, - }, - }, - { - yAxis: 40, - }, - ], - [ - { - yAxis: 40, - itemStyle: { - normal: { - color: "#FFF686", - }, - }, - }, - { - yAxis: 60, - }, - ], - [ - { - yAxis: 60, - itemStyle: { - normal: { color: "#FFD2B3" }, - }, - }, - { - yAxis: 80, - }, - ], - [ - { - yAxis: 80, - itemStyle: { - normal: { color: "#FFB8B8" }, - }, - label: { - normal: { - formatter: "度牛区", - color: "#FF0000", - position: "insideLeft", - distance: 10, - }, - }, - }, - { - yAxis: 100, - }, - ], - ], - }, - }, - { - name: "度牛尺", - type: "line", - data: maDuchiData.greenData, - symbol: "none", - xAxisIndex: 2, - yAxisIndex: 2, - itemStyle: { - normal: { - color: "green", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 2, - markPoint: { - symbol: "rect", - symbolSize: (value, params) => { - const width = window.innerWidth; - const baseHeight = 36; - if (width <= 375) { - return [2, 16]; - } else if (width <= 768) { - return [2, 24]; - } - return [2, baseHeight]; - }, - itemStyle: { - normal: { - label: { - show: false, - }, - }, - }, - data: [ - ...maDuchiData.greenData - .map((item) => { - if (item[1] === 0) { - return { - coord: [item[0], 20], - symbolOffset: window.innerWidth > 768 ? [0, 20] : [0, 12], - itemStyle: { - color: "#00ff00", - }, - }; - } - }) - .filter(Boolean), - ], - }, - }, - { - type: "line", - data: maDuchiData.redData, - // smooth: true, - symbol: "none", - xAxisIndex: 2, - yAxisIndex: 2, - itemStyle: { - normal: { - color: "red", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 2, - markPoint: { - symbol: "rect", - symbolSize: (value, params) => { - const width = window.innerWidth; - const baseHeight = 36; - if (width <= 375) { - return [2, 16]; - } else if (width <= 768) { - return [2, 24]; - } - return [2, baseHeight]; - }, - itemStyle: { - normal: { - label: { - show: false, - }, - }, - }, - data: [ - ...maDuchiData.redData - .map((item) => { - if (item[1] === 100) { - return { - coord: [item[0], 80], - symbolOffset: - window.innerWidth > 768 ? [0, -20] : [0, -12], - itemStyle: { - color: "#ff0000", - }, - }; - } - }) - .filter(Boolean), - ], - }, - }, - { - name: "辅助线", - type: "line", - data: [], - xAxisIndex: 2, - yAxisIndex: 2, - markLine: { - silent: true, - symbol: "none", - lineStyle: { - color: "#000000", - width: 3, - type: "solid", - }, - data: [{ yAxis: 20 }], - }, - }, - { - name: "辅助线", - type: "line", - data: [], - xAxisIndex: 2, - yAxisIndex: 2, - markLine: { - silent: true, - symbol: "none", - lineStyle: { - color: "#000000", - width: 3, - type: "solid", - }, - data: [{ yAxis: 50 }], - }, - }, - { - name: "辅助线", - type: "line", - data: [], - xAxisIndex: 2, - yAxisIndex: 2, - markLine: { - silent: true, - symbol: "none", - lineStyle: { - color: "#000000", - width: 3, - type: "solid", - }, - data: [{ yAxis: 80 }], - }, - }, - { - name: "辅助线", - type: "line", - data: [], - xAxisIndex: 2, - yAxisIndex: 2, - markLine: { - silent: true, - symbol: "none", - lineStyle: { - color: "#000000", - width: 3, - - type: "solid", - }, - data: [{ yAxis: 100 }], - }, - }, - ], - }; - } else if ( - klineData.type === 3 || - klineData.type === 4 || - klineData.type === 8 || - klineData.type === 9 || - klineData.type === 10 - ) { - console.log("进入3,4,8,9,10分类"); - - const arr1 = []; - const arr2 = []; - const arr3 = []; - const arr4 = []; - // k线的数据 - // 动态K线 - const changeColorKline = (QSXH, KLine20) => { - console.log(QSXH, KLine20); - if (QSXH) { - QSXH.map((item) => { - KLine20.map((kline_item) => { - if (item[1] == 1 && item[0] == kline_item[0]) { - arr1.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 2 && item[0] == kline_item[0]) { - arr2.push(kline_item); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 3 && item[0] == kline_item[0]) { - arr3.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 4 && item[0] == kline_item[0]) { - arr4.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - }); - }); - } - }; - changeColorKline(data.QSXH, data.KLine20); - var dealData = splitData(data.KLine20); - var dealData1 = splitData(arr1); - var dealData2 = splitData(arr2); - var dealData3 = splitData(arr3); - var dealData4 = splitData(arr4); - // 处理MA数据,创建两段重叠的数据 - function processMAData(data) { - let processedData = []; - // 初始化处理后的数据结构 - data.forEach((item, idx) => { - processedData.push({ - date: item[0], - value: item[1], - type: item[2], - }); - }); - // 当某一种type只存在一天,设置另一种type透明 - let singleTypeRed = [{ min: 0, max: 0, color: "#000" }]; - let singleTypeYellow = [{ min: 0, max: 0, color: "#000" }]; - let singleTypeGreen = [{ min: 0, max: 0, color: "#000" }]; - // 在类型切换点添加过渡点 - for (let i = 1; i < processedData.length; i++) { - if (processedData[i].type !== processedData[i - 1].type) { - if ( - i == processedData.length - 1 || - (processedData[i].type !== processedData[i + 1].type && - processedData[i - 1].type === processedData[i + 1].type) - ) { - if (processedData[i - 1].type === 0) { - singleTypeGreen.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } else if (processedData[i - 1].type === 1) { - singleTypeRed.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } else if (processedData[i - 1].type === 2) { - singleTypeYellow.push({ - min: i - 1, - max: i, - color: "rgba(0,0,0,0)", - }); - } - } - } - if (processedData[i].type !== processedData[i - 1].type) { - if (processedData[i].type == 0) { - processedData[i - 1].isTransitionGreen = 1; - } else if (processedData[i].type == 1) { - processedData[i - 1].isTransitionRed = 1; - } else if (processedData[i].type == 2) { - processedData[i - 1].isTransitionYellow = 1; - } - // // 创建过渡点,使用前一个点的值 - // processedData[i - 1].isTransition = true - } - } - // 分离红绿数据,包含过渡点 - let greenData = []; - let redData = []; - let yellowData = []; - - processedData.forEach((item, idx) => { - const point = [item.date, item.value]; - - if (item.type === 0) { - greenData.push(point); - redData.push([item.date, "-"]); - yellowData.push([item.date, "-"]); - - // if (item.isTransition) { - // // 添加过渡点到红色线 - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } else if (item.type === 1) { - redData.push(point); - greenData.push([item.date, "-"]); - yellowData.push([item.date, "-"]); - - // if (item.isTransition) { - // // 添加过渡点到绿色线 - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // yellowData[yellowData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } else if (item.type === 2) { - redData.push([item.date, "-"]); - greenData.push([item.date, "-"]); - yellowData.push(point); - - // if (item.isTransition) { - // // 添加过渡点到绿色线 - // greenData[greenData.length - 1] = [processedData[idx].date, processedData[idx].value] - // redData[redData.length - 1] = [processedData[idx].date, processedData[idx].value] - // } - if (item.isTransitionGreen) { - greenData[greenData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionRed) { - redData[redData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } else if (item.isTransitionYellow) { - yellowData[yellowData.length - 1] = [ - processedData[idx].date, - processedData[idx].value, - ]; - } - } - }); - // console.log('greenData', greenData) - // console.log('redData', redData) - // console.log('yellowData', yellowData) - // console.log('green', singleTypeGreen) - // console.log('red', singleTypeRed) - // console.log('yellow', singleTypeYellow) - return { - greenData: greenData, - redData: redData, - yellowData: yellowData, - singleTypeGreen: singleTypeGreen, - singleTypeRed: singleTypeRed, - singleTypeYellow: singleTypeYellow, - }; - } - const maData = processMAData(data.FCX); - // 牵牛绳的数据 - - // 如果第一个字段的第一个数据为-1的话,不展示牵牛绳 - if (data.FCX[0][1] == "-1") { - maData.greenData = []; - maData.redData = []; - maData.yellowData = []; - } - // K线图距离顶部的距离 - // 配置项 - KlineOption = { - // 底部选项 - // animation: false, - // 手放上去显示的内容 - legend: [ - { - //图例文字的样式 - textStyle: { - color: "black", //图例文字颜色 - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), // 响应式字体大小 - }, - width: "100%", // 确保有足够的宽度容纳图例 - left: "center", - itemGap: window.innerWidth > 768 ? 20 : 10, // 控制图例项之间的间距 - itemWidth: 10, // 调整颜色块的宽度 - itemHeight: 10, // 调整颜色块的高度 - data: [ - { - name: "进攻K线", - itemStyle: { - color: "rgb(255,0,0)", - }, - }, - { - name: "防守K线", - itemStyle: { - color: "red", - }, - }, - { - name: "推进K线", - itemStyle: { - color: "orange", - }, - }, - { - name: "撤退K线", - itemStyle: { - color: "rgb(84,252,252", - }, - }, - ], - }, - { - //图例文字的样式 - textStyle: { - color: "black", //图例文字颜色 - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), // 响应式字体大小 - }, - orient: "horizontal", // 设置图例水平布局 - top: window.innerWidth > 768 ? "8%" : "8%", - width: "100%", // 确保有足够的宽度容纳图例 - left: "center", - itemGap: 15, // 控制图例项之间的间距 - data: [ - // 牵牛绳 - { - name: "{green|━}{red|━} " + "牵牛绳", // 将牵牛绳样式应用到文本前缀 - icon: "none", // 去掉默认图例图标 - textStyle: { - rich: { - green: { - color: "green", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - red: { - color: "red", - fontSize: window.innerWidth > 768 ? 20 : 10, - }, - }, - }, - }, - { - name: "龙线", - }, - { - name: "虫线", - }, - ], - }, - ], - tooltip: { - // 调用接口之后方法 - formatter: function (a, b, d) { - if (a[0].seriesIndex == 0) { - const KlineTag = ref([]); // 判断几根K线 - const AIBullTag = ref([]); - - // 找到第一个满足条件的数据 - KlineTag.value = a.find((item) => item.data[1])?.data || []; - - // 找到第一个满足条件的非 '-' 数据 - AIBullTag.value = - a.slice(4).find((item) => item.data[1] !== "-")?.data || []; - return ( - a[0].name + - "
" + - "开盘价" + - ":" + - KlineTag.value[1] + - "
" + - "收盘价" + - ":" + - KlineTag.value[2] + - "
" + - "最低价" + - ":" + - KlineTag.value[3] + - "
" + - "最高价" + - ":" + - KlineTag.value[4] + - "
" + - "牵牛绳" + - ":" + - AIBullTag.value[1] - ); - // }else if(a[0].seriesIndex == 5){ - // return a[0].name+ "
" + a[0].seriesName + ":" + a[0].value + "
" + a[1].seriesName + ":" + a[1].value + "
" + a[2].seriesName + ":" + a[2].value + "
" + a[3].seriesName + ":" + a[3].value + "
" + a[4].seriesName + ":" + a[4].value + "
" + a[5].seriesName + ":" + a[5].value - } else { - return ( - a[0].name + - "
" + - "开盘价" + - ":" + - a[0].data[1] + - "
" + - "收盘价" + - ":" + - a[0].data[2] + - "
" + - "最低价" + - ":" + - a[0].data[3] + - "
" + - "最高价" + - ":" + - a[0].data[4] + - "
" - ); - } - }, - trigger: "axis", - axisPointer: { - //坐标轴指示器配置项 - type: "cross", //‘line’直线指示器,‘cross’十字准星指示器,‘shadow’阴影指示器 - }, - backgroundColor: "rgba(119, 120, 125, 0.6)", // 提示框浮层的边框颜色。 - borderWidth: 1, // 提示框浮层的边框宽。 - borderColor: "#77787D", // 提示框浮层的边框颜色。 - padding: 10, // 提示框浮层内边距, - textStyle: { - //提示框浮层上的文字样式 - color: "#fff", - }, - }, - // 手放上去时拉的框 - axisPointer: { - link: [ - { - xAxisIndex: "all", // 同时触发所有图形的 x 坐标轴指示器 - }, - ], - label: { - backgroundColor: "#77787D", // 文本标签的背景颜色 - }, - }, - toolbox: { - show: false, - }, - grid: [ - { - // left: window.innerWidth > 768 ? '8%' : '15%', - // right: window.innerWidth > 768 ? '7%' : '2.5%', - height: window.innerWidth > 768 ? "40%" : "37%", - top: window.innerWidth > 768 ? "10%" : "12%", - containLabel: false, - }, - { - // left: window.innerWidth > 768 ? '8%' : '15%', - // right: window.innerWidth > 768 ? '7%' : '2.5%', - top: window.innerWidth > 768 ? "53%" : "52%", - height: window.innerWidth > 768 ? "40%" : "37%", - containLabel: false, - }, - ], - xAxis: [ - { - type: "category", - data: dealData.categoryData, - boundaryGap: true, // 坐标轴两边是否留空,false表示不留空(通常用于K线图) - axisLine: { onZero: false }, // 设置坐标轴是否通过零点,onZero:false表示不强制穿过零点 - splitLine: { show: false }, // 是否显示分隔线,false表示不显示 - min: "dataMin", // 坐标轴最小值,'dataMin'表示从数据的最小值开始 - max: "dataMax", // 坐标轴最大值,'dataMax'表示从数据的最大值开始 - axisPointer: { - z: 100, // 坐标轴指示器的层级,较大的值会让它显示在其他元素上方 - }, - axisLine: { - lineStyle: { - color: "black", // 坐标轴线的颜色 - }, - }, // - axisLabel: { show: false }, // 隐藏刻度标签 - axisTick: { show: false }, // 隐藏刻度线 - }, - { - type: "category", - gridIndex: 1, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { - show: false, - }, - axisTick: { show: false }, // 隐藏刻度线 // 只保留一个 axisLine 定义 - // 对于第二个类别轴,通常也不需要设置 min 和 max - }, - ], - // 控制纵坐标展示数据 - yAxis: [ - { - scale: true, - gridIndex: 0, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - }, - axisLine: { - lineStyle: { - fontSize: "", - color: "black", - }, - }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - { - scale: true, - gridIndex: 1, - splitNumber: 2, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - }, - axisLine: { - lineStyle: { - color: "black", - }, - }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - ], - // 下拉条 - dataZoom: [ - { - type: "inside", - xAxisIndex: [0, 1], - start: 55, - end: 100, - }, - { - show: true, - xAxisIndex: [0, 1], - type: "slider", - top: window.innerWidth > 768 ? "92%" : "91%", - left: window.innerWidth > 768 ? "10%" : "8%", - start: 98, - end: 100, - }, - ], - visualMap: [ - { - type: "piecewise", - show: false, - pieces: maData.singleTypeGreen, - outOfRange: { - color: "green", - }, - dimension: 0, - seriesIndex: 6, - }, - { - type: "piecewise", - show: false, - pieces: maData.singleTypeRed, - outOfRange: { - color: "red", - }, - dimension: 0, - seriesIndex: 7, - }, - { - type: "piecewise", - show: false, - pieces: maData.singleTypeYellow, - outOfRange: { - color: "yellow", - }, - dimension: 0, - seriesIndex: 8, - }, - ], - series: [ - // 第一条K线 - { - name: "进攻K线", - type: "candlestick", - data: dealData1.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 - itemStyle: { - normal: { - color: "rgb(255,0,0)", // 默认颜色 - color0: "rgb(255,0,0)", - borderColor: "rgb(255,0,0)", - borderColor0: "rgb(255,0,0)", - }, - }, - gridIndex: 0, - }, - // - { - name: "推进K线", - type: "candlestick", - data: dealData2.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 - itemStyle: { - normal: { - color: "rgb(0,0,252)", // 默认颜色 - color0: "rgb(0,0,252)", - borderColor: "rgb(0,0,252)", - borderColor0: "rgb(0,0,252)", - }, - }, - gridIndex: 0, - }, - { - name: "防守K线", - type: "candlestick", - data: dealData3.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 - itemStyle: { - normal: { - color: "orange", // 默认颜色 - color0: "orange", - borderColor: "orange", - borderColor0: "orange", - }, - }, - gridIndex: 0, - }, - { - name: "撤退K线", - type: "candlestick", - data: dealData4.values, - xAxisIndex: 0, // 使用第一个 X 轴 - yAxisIndex: 0, // 使用第一个 Y 轴 - itemStyle: { - normal: { - color: "rgb(84,252,252)", // 默认颜色 - color0: "rgb(84,252,252)", - borderColor: "rgb(84,252,252)", - borderColor0: "rgb(84,252,252)", - }, - }, - gridIndex: 0, - }, - // 第二条K线 - { - type: "candlestick", - name: "日K", - xAxisIndex: 1, // 使用第二个 X 轴 - yAxisIndex: 1, // 使用第二个 Y 轴 - data: dealData.values, - itemStyle: { - normal: { - color0: "red", - color: "green", - borderColor0: "red", - borderColor: "green", - }, - }, - gridIndex: 1, - }, - { - name: "{green|━}{red|━} " + "牵牛绳", // 将牵牛绳样式应用到文本前缀 - type: "line", - data: [], // 设置为空数组,不显示数据点 - smooth: true, - symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 - showSymbol: false, // 隐藏符号 - lineStyle: { - opacity: 0, // 使线条透明 - }, - itemStyle: { - normal: { - color: "green", - }, - }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 - }, - { - name: "虫线", - type: "line", - data: maData.greenData, - smooth: true, - symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 - itemStyle: { - normal: { - color: "green", - lineStyle: { - // color: 'orange', // 线的颜色 - width: 2, // 线宽 - type: "solid", // 线类型 - }, - }, - }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 - }, - { - name: "龙线", - type: "line", - data: maData.redData, - smooth: true, - symbol: "none", - xAxisIndex: 0, // 线图与第一个 K 线图共享 X 轴 - yAxisIndex: 0, // 线图与第一个 K 线图共享 Y 轴 - itemStyle: { - normal: { - color: "red", - lineStyle: { - // color: 'orange', // 线的颜色 - width: 2, // 线宽 - type: "solid", // 线类型 - }, - }, - }, - gridIndex: 0, // 确保线图与第一个K线图共享网格 - }, - { - name: "黄色", - type: "line", - data: maData.yellowData, - smooth: true, - symbol: "none", - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "yellow", - lineStyle: { - width: 2, - type: "solid", - }, - }, - }, - gridIndex: 0, - }, - ], - }; - } else if (klineData.type === 5 || klineData.type === 7) { - console.log("进入第7分类"); - - const upColor = "#00da3c"; - const downColor = "#ec0000"; - function calculateMA(index, data) { - let result = []; - if (data.FTLINE) { - data.FTLINE.forEach((item) => { - result.push(item[index]); - }); - } - return result; - } - var dealData = splitData(data.KLine20); - var bodongliang = splitData(data.WAVEVOL); - function bodongliangData(values, i) { - return values.map((subArray) => subArray[i]); - } - KlineOption = { - animation: false, - legend: { - textStyle: { - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), - }, - left: "center", - data: [ - { - name: "天线", - }, - { - name: "飞线", - itemStyle: { - color: "#000", - }, - }, - { - name: "中线", - }, - { - name: "流线", - }, - ], - }, - tooltip: [ - { - trigger: "axis", - formatter: function (a, b, d) { - if (a[0].seriesIndex == 0) { - return ( - a[0].name + - "
" + - "开盘价" + - ":" + - a[0].data[1] + - "
" + - "收盘价" + - ":" + - a[0].data[2] + - "
" + - "最低价" + - ":" + - a[0].data[3] + - "
" + - "最高价" + - ":" + - a[0].data[4] + - "
" + - a[3].marker + - a[3].seriesName + - ":" + - a[3].value + - "
" + - a[1].marker + - a[1].seriesName + - ":" + - a[1].value + - "
" + - a[2].marker + - a[2].seriesName + - ":" + - a[2].value + - "
" + - a[4].marker + - a[4].seriesName + - ":" + - a[4].value - ); - // }else if(a[0].seriesIndex == 5){ - // console.log(a[0].seriesIndex,'a[0].seriesIndex') - // return a[0].name+ "
" + a[0].seriesName + ":" + a[0].value + "
" + a[1].seriesName + ":" + a[1].value + "
" + a[2].seriesName + ":" + a[2].value + "
" + a[3].seriesName + ":" + a[3].value + "
" + a[4].seriesName + ":" + a[4].value + "
" + a[5].seriesName + ":" + a[5].value - } else { - return ( - a[0].name + - "
" + - a[0].marker + - a[0].seriesName + - ":" + - a[0].value + - "
" + - a[1].marker + - a[1].seriesName + - ":" + - a[1].value + - "
" + - a[2].marker + - a[2].seriesName + - ":" + - a[2].value + - "
" + - a[3].marker + - a[3].seriesName + - ":" + - a[3].value + - "
" + - a[4].marker + - a[4].seriesName + - ":" + - a[4].value + - "
" - ); - } - }, - axisPointer: { - type: "cross", - }, - backgroundColor: "#fff", - borderWidth: 1, - borderColor: "#ccc", - padding: 10, - textStyle: { - color: "#000", - }, - }, - ], - axisPointer: { - link: [ - { - xAxisIndex: "all", - }, - ], - label: { - backgroundColor: "#777", - }, - }, - toolbox: { - show: false, - }, - - visualMap: { - show: false, - seriesIndex: 5, - dimension: 2, - pieces: [ - { - value: 1, - color: downColor, - }, - { - value: -1, - color: upColor, - }, - ], - }, - grid: [ - { - top: "8%", - // left: window.innerWidth > 768 ? '10%' : '17%', - right: "8%", - height: "40%", - containLabel: false, - }, - { - // left: window.innerWidth > 768 ? '10%' : '17%', - right: "8%", - top: "10%", - height: "1%", - containLabel: false, - }, - { - // left: window.innerWidth > 768 ? '10%' : '17%', - right: "8%", - top: window.innerWidth > 768 ? "60%" : "63%", - height: "30%", - containLabel: false, - }, - ], - xAxis: [ - { - type: "category", - data: dealData.categoryData, - boundaryGap: true, - axisLine: { onZero: false }, - splitLine: { show: false }, - min: "dataMin", - max: "dataMax", - axisPointer: { - z: 100, - }, - axisLine: { - lineStyle: { - color: "#8392A5", - }, - }, - }, - { - type: "category", - gridIndex: 1, - data: [], - boundaryGap: true, - axisLine: { onZero: false }, - axisTick: { show: false }, - splitLine: { show: false }, - axisLabel: { show: false }, - min: "dataMin", - max: "dataMax", - show: false, - }, - { - type: "category", - gridIndex: 2, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { - onZero: true, - lineStyle: { - color: "#8392A5", - }, - }, - axisTick: { show: false }, - splitLine: { show: false }, - axisLabel: { show: false }, - min: "dataMin", - max: "dataMax", - }, - ], - yAxis: [ - { - scale: true, - splitArea: { - show: false, - }, - splitLine: { - show: !1, - }, - axisLine: { - lineStyle: { - color: "#8392A5", - }, - }, - }, - { - scale: true, - gridIndex: 1, - splitNumber: 2, - min: "0", - max: "100", - axisLabel: { show: false }, - - axisLine: { show: false }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - { - scale: true, - gridIndex: 2, - splitNumber: 2, - axisLabel: { show: true }, - axisLine: { onZero: true }, - axisLine: { - show: true, - onZero: false, - lineStyle: { - color: "#8392A5", - }, - }, - axisTick: { show: true }, - splitLine: { show: false }, - }, - ], - dataZoom: [ - { - type: "inside", - xAxisIndex: [0, 1, 2], - start: 50, - end: 100, - textStyle: { - color: "#8392A5", - }, - }, - { - show: true, - xAxisIndex: [0, 1, 2], - type: "slider", - top: "85%", - start: 50, - end: 100, - textStyle: { - color: "#8392A5", - }, - }, - ], - series: [ - { - name: "Dow-Jones index", - type: "candlestick", - data: dealData.values, - itemStyle: { - normal: { - color0: "#ec0000", - color: "#00da3c", - borderColor0: "#ec0000", - borderColor: "#00da3c", - }, - }, - }, - { - name: "飞线", - type: "line", - data: calculateMA(1, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#00a32e", - lineStyle: { - color: "#00a32e", - width: 2, - type: "solid", - }, - }, - }, - }, - { - name: "中线", - type: "line", - data: calculateMA(2, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#de0000", - lineStyle: { - color: "#de0000", - width: 2, - type: "solid", - }, - }, - }, - }, - { - name: "天线", - type: "line", - data: calculateMA(3, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#ffb300", - lineStyle: { - color: "#ffb300", - width: 2, - type: "solid", - }, - }, - }, - }, - { - name: "流线", - type: "line", - data: calculateMA(4, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#00c8ff", - lineStyle: { - color: "#00c8ff", - width: 2, - type: "solid", - }, - }, - }, - }, - { - name: "买盘", - data: bodongliangData(bodongliang.values, 1), - xAxisIndex: 2, - yAxisIndex: 2, - type: "bar", - stack: "1", - itemStyle: { - normal: { - color: "#ec0000", - }, - }, - }, - { - name: "卖盘", - data: bodongliangData(bodongliang.values, 0), - xAxisIndex: 2, - yAxisIndex: 2, - type: "bar", - stack: "1", - itemStyle: { - normal: { - color: "#00ffff", - }, - }, - }, - - { - name: "CJ", - data: bodongliangData(bodongliang.values, 2), - xAxisIndex: 2, - yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#B0B0B0", - }, - }, - lineStyle: { - width: 2, - }, - }, - { - name: "CD", - data: bodongliangData(bodongliang.values, 3), - xAxisIndex: 2, - yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#ffb300", - }, - }, - lineStyle: { - width: 2, - }, - }, - { - name: "CK", - data: bodongliangData(bodongliang.values, 4), - xAxisIndex: 2, - yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#ff00ff", - }, - }, - lineStyle: { - width: 2, - }, - }, - ], - }; - } else if (klineData.type === 6) { - console.log("进入第6分类"); - - var bodongliang = splitData(data.WAVEVOL); - function bodongliangData(values, i) { - return values.map((subArray) => subArray[i]); - } - function calculateMA(index, data) { - let result = []; - if (data.FTLINE) { - data.FTLINE.forEach((item) => { - result.push(item[index]); - }); - } - return result; - } - function vwToPx(vw) { - return (window.innerWidth * vw) / 100; - } - const arr1 = []; - const arr2 = []; - const arr3 = []; - const arr4 = []; - const changeColorKline = (QSXH, KLine20) => { - if (QSXH) { - QSXH.map((item) => { - KLine20.map((kline_item) => { - if (item[1] == 1 && item[0] == kline_item[0]) { - arr1.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 2 && item[0] == kline_item[0]) { - arr2.push(kline_item); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 3 && item[0] == kline_item[0]) { - arr3.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr4.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - if (item[1] == 4 && item[0] == kline_item[0]) { - arr4.push(kline_item); - arr2.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr3.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - arr1.push([ - kline_item[0], - null, - null, - null, - null, - null, - null, - null, - ]); - } - }); - }); - } - }; - changeColorKline(data.QSXH, data.KLine20); - var dealData = splitData(data.KLine20); - var dealData1 = splitData(arr1); - var dealData2 = splitData(arr2); - var dealData3 = splitData(arr3); - var dealData4 = splitData(arr4); - var dealGnBullData = data.JN; - const processBarData = (data) => { - const barData = []; - const markPointData = []; - data.forEach((item) => { - let color; - switch (item[4]) { - case 1: - color = "#13E113"; - break; - case 2: - color = "#FF0E00"; - break; - case 3: - color = "#0000FE"; - break; - case 4: - color = "#1397FF"; - break; - } - barData.push({ - value: item[5], - itemStyle: { - normal: { - color: color, - }, - }, - }); - if (item[1] === 1) { - markPointData.push({ - coord: [item[0], item[5]], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb101000d5si3v3hr7w2vg0h43z1u.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - if (item[2] === 1) { - markPointData.push({ - coord: [item[0], item[5] / 2], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujaz01000d5si016bxdf6vh0377d2h.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - if (item[3] === 1) { - markPointData.push({ - coord: [item[0], 0], - symbol: - "image://https://d31zlh4on95l9h.cloudfront.net/images/5iujb001000d5shzls0tmd4vs0e5tdrw.png", - symbolSize: [30, 30], - label: { - normal: { - color: "rgba(0, 0, 0, 0)", - }, - }, - }); - } - }); - return { barData, markPointData }; - }; - const { barData, markPointData } = processBarData(dealGnBullData); - KlineOption = { - legend: [ - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(1.8), - }, - width: "100%", - // top: , - left: "center", - itemGap: window.innerWidth > 768 ? 20 : 10, - itemWidth: 10, - itemHeight: 10, - data: [ - { - name: "进攻K线", - itemStyle: { - color: "rgb(255,0,0)", - }, - }, - { - name: "防守K线", - itemStyle: { - color: "red", - }, - }, - { - name: "推进K线", - itemStyle: { - color: "orange", - }, - }, - { - name: "撤退K线", - itemStyle: { - color: "rgb(84,252,252)", - }, - }, - ], - }, - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(2.8), - }, - width: "100%", - top: "5%", - left: "center", - itemGap: window.innerWidth > 768 ? 20 : 10, - itemWidth: 10, - itemHeight: 10, - data: [ - { - name: "天线", - }, - { - name: "飞线", - itemStyle: { - color: "#fff", - }, - }, - { - name: "中线", - }, - { - name: "流线", - }, - ], - }, - { - textStyle: { - color: "black", - fontSize: window.innerWidth > 768 ? 15 : vwToPx(2.8), - }, - orient: "horizontal", - top: window.innerWidth > 768 ? "8%" : "8%", - width: "100%", - left: "center", - itemGap: 15, - data: [ - { - name: "龙线", - }, - { - name: "虫线", - }, - ], - }, - ], - tooltip: { - formatter: function (a, b, d) { - if (a[0].seriesIndex == 0) { - const KlineTag = ref([]); - const AIBullTag = ref([]); - KlineTag.value = a.find((item) => item.data[1])?.data || []; - AIBullTag.value = - a.slice(4).find((item) => item.data[1] !== "-")?.data || []; - return ( - a[0].name + - "
" + - "开盘价" + - ":" + - KlineTag.value[1] + - "
" + - "收盘价" + - ":" + - KlineTag.value[2] + - "
" + - "最低价" + - ":" + - KlineTag.value[3] + - "
" + - "最高价" + - ":" + - KlineTag.value[4] + - "
" + - a[4].seriesName + - ":" + - a[4].value + - "
" + - a[5].seriesName + - ":" + - a[5].value + - "
" + - a[6].seriesName + - ":" + - a[6].value + - "
" + - a[7].seriesName + - ":" + - a[7].value - ); - } - if (a[0].seriesIndex == 4) { - let formattedVolume; - if (a[0].data.value >= 10000) { - formattedVolume = (a[0].data.value / 10000).toFixed(2) + "w"; - } else { - formattedVolume = a[0].data.value; - } - return a[0].name + "
" + "成交量" + ":" + formattedVolume; - } - if (a[0].seriesIndex == 9) { - return ( - a[0].name + - "
" + - a[0].marker + - a[0].seriesName + - ":" + - a[0].value + - "
" + - a[1].marker + - a[1].seriesName + - ":" + - a[1].value + - "
" + - a[2].marker + - a[2].seriesName + - ":" + - a[2].value + - "
" + - a[3].marker + - a[3].seriesName + - ":" + - a[3].value + - "
" + - a[4].marker + - a[4].seriesName + - ":" + - a[4].value + - "
" - ); - } - }, - trigger: "axis", - axisPointer: { - type: "cross", - }, - backgroundColor: "rgba(119, 120, 125, 0.6)", - borderWidth: 1, - borderColor: "#77787D", - padding: 10, - textStyle: { - color: "#fff", - }, - }, - axisPointer: { - link: [ - { - xAxisIndex: "all", - }, - ], - label: { - backgroundColor: "#77787D", - }, - }, - toolbox: { - show: false, - }, - grid: [ - { - left: window.innerWidth > 768 ? "14%" : "15%", - right: window.innerWidth > 768 ? "4%" : "5%", - top: window.innerWidth > 768 ? "10%" : "12%", - height: window.innerWidth > 768 ? "36%" : "34%", - containLabel: false, - }, - { - left: window.innerWidth > 768 ? "14%" : "15%", - right: window.innerWidth > 768 ? "4%" : "5%", - top: window.innerWidth > 768 ? "50%" : "50%", - height: window.innerWidth > 768 ? "20%" : "22%", - containLabel: false, - }, - { - left: window.innerWidth > 768 ? "14%" : "15%", - right: window.innerWidth > 768 ? "4%" : "5%", - top: window.innerWidth > 768 ? "74%" : "75%", - height: window.innerWidth > 768 ? "20%" : "20%", - containLabel: false, - }, - ], - xAxis: [ - { - type: "category", - data: dealData.categoryData, - boundaryGap: true, - axisLine: { onZero: false }, - splitLine: { show: false }, - min: "dataMin", - max: "dataMax", - axisPointer: { - z: 100, - }, - axisLine: { - lineStyle: { - color: "black", - }, - }, // - axisLabel: { show: false }, - axisTick: { show: false }, - }, - { - type: "category", - gridIndex: 1, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { lineStyle: { color: "black" } }, - axisLabel: { - show: false, - // fontSize: window.innerWidth > 768 ? 10 : 8, - interval: "auto", - }, - axisTick: { show: false }, - }, - { - type: "category", - gridIndex: 2, - data: dealData.categoryData, - boundaryGap: true, - axisLine: { lineStyle: { color: "black" } }, - axisLabel: { - show: true, - interval: "auto", - }, - axisTick: { show: false }, - }, - ], - yAxis: [ - { - scale: true, - gridIndex: 0, - position: "left", - axisLabel: { - inside: false, - align: "right", - fontSize: window.innerWidth > 768 ? 15 : 10, - }, - axisLine: { - show: true, - lineStyle: { - fontSize: "", - color: "black", - }, - }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - { - scale: true, - gridIndex: 1, - splitNumber: 4, - min: 0, - minInterval: 1, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - margin: 8, - formatter: (value) => { - if (value >= 1000000000) { - return (value / 1000000000).toFixed(1) + "B"; - } else if (value >= 1000000) { - return (value / 1000000).toFixed(1) + "M"; - } else if (value >= 10000) { - return (value / 10000).toFixed(1) + "W"; - } - return value.toFixed(0); - }, - }, - axisLine: { show: true, lineStyle: { color: "black" } }, - axisTick: { show: false }, - splitLine: { show: true, lineStyle: { type: "dashed" } }, - boundaryGap: ["20%", "20%"], - }, - { - scale: true, - gridIndex: 2, - splitNumber: 2, - axisLabel: { - show: true, - fontSize: window.innerWidth > 768 ? 15 : 10, - }, - axisLine: { show: true, lineStyle: { color: "black" } }, - axisTick: { show: false }, - splitLine: { show: false }, - }, - ], - dataZoom: [ - { - type: "inside", - xAxisIndex: [0, 1, 2], - start: 55, - end: 100, - }, - { - show: true, - xAxisIndex: [0, 1, 2], - type: "slider", - top: window.innerWidth > 768 ? "95%" : "95%", - left: window.innerWidth > 768 ? "14%" : "14%", - start: 98, - end: 100, - }, - ], - series: [ - { - name: "进攻K线", - type: "candlestick", - barWidth: "50%", - data: dealData1.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(255,0,0)", - color0: "rgb(255,0,0)", - borderColor: "rgb(255,0,0)", - borderColor0: "rgb(255,0,0)", - }, - }, - gridIndex: 0, - }, - // - { - name: "推进K线", - type: "candlestick", - barWidth: "50%", - data: dealData2.values, - // markPoint: { data: dealMarkPointData }, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(0,0,252)", - color0: "rgb(0,0,252)", - borderColor: "rgb(0,0,252)", - borderColor0: "rgb(0,0,252)", - }, - }, - gridIndex: 0, - }, - { - name: "防守K线", - type: "candlestick", - barWidth: "50%", - data: dealData3.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "orange", - color0: "orange", - borderColor: "orange", - borderColor0: "orange", - }, - }, - gridIndex: 0, - }, { - name: "撤退K线", - type: "candlestick", - barWidth: "50%", - data: dealData4.values, - xAxisIndex: 0, - yAxisIndex: 0, - itemStyle: { - normal: { - color: "rgb(84,252,252)", - color0: "rgb(84,252,252)", - borderColor: "rgb(84,252,252)", - borderColor0: "rgb(84,252,252)", + name: "背景区域", + type: "line", + data: [], + xAxisIndex: 2, + yAxisIndex: 2, + markArea: { + silent: true, + itemStyle: { + normal: { + opacity: 1, + }, }, - }, - gridIndex: 0, - }, - { - name: "成交量", - type: "bar", - barWidth: "70%", - xAxisIndex: 1, - yAxisIndex: 1, - data: barData, - markPoint: { - data: markPointData, label: { - show: false, - }, - }, - }, - { - name: "飞线", - type: "line", - data: calculateMA(1, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#00a32e", - lineStyle: { - color: "#00a32e", - width: 2, - type: "solid", + normal: { + show: true, + position: "insideRight", + fontSize: window.innerWidth > 768 ? 16 : 12, + fontWeight: "bold", + color: "#13E113", + distance: 10, }, }, + data: [ + [ + { + yAxis: 0, + itemStyle: { + normal: { + color: "#CFFFCF", + }, + }, + label: { + normal: { + formatter: "度牛区", + }, + }, + }, + { + yAxis: 20, + }, + ], + [ + { + yAxis: 20, + itemStyle: { + normal: { + color: "#A6FFFF", + }, + }, + }, + { + yAxis: 40, + }, + ], + [ + { + yAxis: 40, + itemStyle: { + normal: { + color: "#FFF686", + }, + }, + }, + { + yAxis: 60, + }, + ], + [ + { + yAxis: 60, + itemStyle: { + normal: { color: "#FFD2B3" }, + }, + }, + { + yAxis: 80, + }, + ], + [ + { + yAxis: 80, + itemStyle: { + normal: { color: "#FFB8B8" }, + }, + label: { + normal: { + formatter: "度牛区", + color: "#FF0000", + position: "insideLeft", + distance: 10, + }, + }, + }, + { + yAxis: 100, + }, + ], + ], }, }, { - name: "中线", + name: "度牛尺", type: "line", - data: calculateMA(2, data), - smooth: true, + data: maDuchiData.greenData, symbol: "none", + xAxisIndex: 2, + yAxisIndex: 2, itemStyle: { normal: { - color: "#de0000", + color: "green", lineStyle: { - color: "#de0000", width: 2, type: "solid", }, }, }, - }, - { - name: "天线", - type: "line", - data: calculateMA(3, data), - smooth: true, - symbol: "none", - itemStyle: { - normal: { - color: "#ffb300", - lineStyle: { - color: "#ffb300", - width: 2, - type: "solid", + gridIndex: 2, + markPoint: { + symbol: "rect", + symbolSize: (value, params) => { + const width = window.innerWidth; + const baseHeight = 36; + if (width <= 375) { + return [2, 16]; + } else if (width <= 768) { + return [2, 24]; + } + return [2, baseHeight]; + }, + itemStyle: { + normal: { + label: { + show: false, + }, }, }, + data: [ + ...maDuchiData.greenData + .map((item) => { + if (item[1] === 0) { + return { + coord: [item[0], 20], + symbolOffset: window.innerWidth > 768 ? [0, 20] : [0, 12], + itemStyle: { + color: "#00ff00", + }, + }; + } + }) + .filter(Boolean), + ], }, }, { - name: "流线", type: "line", - data: calculateMA(4, data), - smooth: true, + data: maDuchiData.redData, + // smooth: true, symbol: "none", + xAxisIndex: 2, + yAxisIndex: 2, itemStyle: { normal: { - color: "#00c8ff", + color: "red", lineStyle: { - color: "#00c8ff", width: 2, type: "solid", }, }, }, - }, - { - name: "买盘", - data: bodongliangData(bodongliang.values, 1), - barWidth: "70%", - xAxisIndex: 2, - yAxisIndex: 2, - type: "bar", - stack: "1", - itemStyle: { - normal: { - color: "#ec0000", + gridIndex: 2, + markPoint: { + symbol: "rect", + symbolSize: (value, params) => { + const width = window.innerWidth; + const baseHeight = 36; + if (width <= 375) { + return [2, 16]; + } else if (width <= 768) { + return [2, 24]; + } + return [2, baseHeight]; + }, + itemStyle: { + normal: { + label: { + show: false, + }, + }, }, + data: [ + ...maDuchiData.redData + .map((item) => { + if (item[1] === 100) { + return { + coord: [item[0], 80], + symbolOffset: + window.innerWidth > 768 ? [0, -20] : [0, -12], + itemStyle: { + color: "#ff0000", + }, + }; + } + }) + .filter(Boolean), + ], }, }, { - name: "卖盘", - data: bodongliangData(bodongliang.values, 0), - barWidth: "70%", + name: "辅助线", + type: "line", + data: [], xAxisIndex: 2, yAxisIndex: 2, - type: "bar", - stack: "1", - itemStyle: { - normal: { - color: "#00ffff", + markLine: { + silent: true, + symbol: "none", + lineStyle: { + color: "#000000", + width: 3, + type: "solid", }, + data: [{ yAxis: 20 }], }, }, { - name: "CJ", - data: bodongliangData(bodongliang.values, 2), + name: "辅助线", + type: "line", + data: [], xAxisIndex: 2, yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#000", + markLine: { + silent: true, + symbol: "none", + lineStyle: { + color: "#000000", + width: 3, + type: "solid", }, - }, - lineStyle: { - width: 2, + data: [{ yAxis: 50 }], }, }, { - name: "CD", - data: bodongliangData(bodongliang.values, 3), + name: "辅助线", + type: "line", + data: [], xAxisIndex: 2, yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#ffb300", + markLine: { + silent: true, + symbol: "none", + lineStyle: { + color: "#000000", + width: 3, + type: "solid", }, - }, - lineStyle: { - width: 2, + data: [{ yAxis: 80 }], }, }, { - name: "CK", - data: bodongliangData(bodongliang.values, 4), + name: "辅助线", + type: "line", + data: [], xAxisIndex: 2, yAxisIndex: 2, - type: "line", - smooth: !0, - showSymbol: false, - itemStyle: { - normal: { - color: "#ff00ff", - }, - }, - lineStyle: { - width: 2, - }, - }, - ], - // graphic: { - // markPointData : generateGraphicmarkPointData(data11111) - // } - }; - } else { - console.log("其他分类"); - - var dealData = splitData(data.KLine20); - console.log("dealData", dealData); - - KlineOption = { - title: { - text: klineData.name, - left: 50, - }, - tooltip: { - trigger: "axis", - formatter: function (a, b, d) { - let def = - a[0].name + - "
" + - "开盘价" + - a[0].data[1] + - "
" + - "收盘价" + - a[0].data[2] + - "
" + - "最低价" + - a[0].data[3] + - "
" + - "最高价" + - a[0].data[4]; - - if (a[1] && a[1].seriesName) { - def += "
" + a[1].seriesName + ":" + a[1].value; - } - return def; - }, - axisPointer: { - animation: false, - type: "line", - lineStyle: { - color: "#376df4", - width: 2, - opacity: 1, - }, - }, - confine: true, // 确保提示框不超出画布 - }, - //控制坐标轴 - grid: { - left: "12%", - right: "10%", - bottom: "10%", - top: "18%", - }, - xAxis: { - type: "category", - data: dealData.categoryData, - axisLine: { lineStyle: { color: "#8392A5" } }, - }, - yAxis: { - scale: !0, //true - // 自定义纵坐标现实的数据 - axisLabel: { - formatter: function (value) { - return value; // 返回原始值 - }, - }, - axisLine: { lineStyle: { color: "#8392A5" } }, - splitLine: { - show: !1, - }, - }, - dataZoom: [ - { - textStyle: { - color: "#8392A5", - }, - handleIcon: - "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z", - handleSize: "80%", - dataBackground: { - areaStyle: { - color: "#8392A5", - }, + markLine: { + silent: true, + symbol: "none", lineStyle: { - opacity: 0.8, - color: "#8392A5", - }, - }, - handleStyle: { - color: "#fff", - shadowBlur: 3, - shadowColor: "rgba(0, 0, 0, 0.6)", - shadowOffsetX: 2, - shadowOffsetY: 2, - }, - }, - { - type: "inside", - start: 1, - end: 100, - zoomOnMouseWheel: true, - moveOnMouseMove: true, - }, - ], - animation: false, - series: [ - { - type: "candlestick", - name: "\u65e5K", - data: dealData.values, - itemStyle: { - normal: { - color0: "#FD1050", - color: "#0CF49B", - borderColor0: "#FD1050", - borderColor: "#0CF49B", + color: "#000000", + width: 3, + + type: "solid", }, - }, - // barWidth: isMobile ? 6 : isTablet ? 8 : 10 - }, - { - name: "MA5", - type: "line", - data: (function (a) { - for (var MA5 = [], d = 0, g = dealData.values.length; d < g; d++) { - if (d < a) { - MA5.push("-"); - } else { - for (var f = 0, e = 0; e < a; e++) { - f += dealData.values[d - e][1]; - } - MA5.push((f / a).toFixed(2)); - } - } - return MA5; - })(5), - smooth: true, - lineStyle: { - width: isMobile ? 1 : 2, - opacity: 0.8, + data: [{ yAxis: 100 }], }, }, ], @@ -5106,26 +2382,30 @@ function KlineCanvsEcharts(containerId) { console.log("KLine渲染: 图表选项设置成功"); // 窗口大小变化时重新渲染图表 - const resizeFunc = function () { - console.log("窗口大小改变,调整图表大小"); - if ( - chartInstancesMap[containerId] && - !chartInstancesMap[containerId].isDisposed() - ) { - // 如果设备类型发生变化,重新渲染 - const newIsMobile = window.innerWidth < 768; - const newIsTablet = - window.innerWidth >= 768 && window.innerWidth < 1024; - - if (newIsMobile !== isMobile || newIsTablet !== isTablet) { - console.log("设备类型变化,重新渲染图表"); - KlineCanvsEcharts(containerId); - return; - } + const resizeFunc = _.throttle( + function () { + console.log("窗口大小改变,调整图表大小"); + if ( + chartInstancesMap[containerId] && + !chartInstancesMap[containerId].isDisposed() + ) { + // 如果设备类型发生变化,重新渲染 + const newIsMobile = window.innerWidth < 768; + const newIsTablet = + window.innerWidth >= 768 && window.innerWidth < 1024; + + if (newIsMobile !== isMobile || newIsTablet !== isTablet) { + console.log("设备类型变化,重新渲染图表"); + KlineCanvsEcharts(containerId); + return; + } - chartInstancesMap[containerId].resize(); - } - }; + chartInstancesMap[containerId].resize(); + } + }, + 1000, + { trailing: false } + ); // 给resize事件绑定一个特定的函数名,便于后续移除 window[`resize_${containerId}`] = resizeFunc; @@ -5200,7 +2480,7 @@ function renderAllKlineCharts() { // 查找所有K线消息 const messages = chatStore.messages; for (let i = 0; i < messages.length; i++) { - if (messages[i].type === "kline" && messages[i].chartData) { + if (messages[i].kline && messages[i].chartData) { const containerId = `kline-container-${i}`; console.log(`尝试渲染K线图: ${containerId}`); @@ -5226,6 +2506,7 @@ onMounted(() => { smartLists: true, // 智能列表 smartypants: true, // 智能标点符号 xhtml: false, // 不使用 XHTML 输出 + renderer: renderer, }); const random = Math.floor(Math.random() * 6) + 1; @@ -5323,7 +2604,7 @@ onUnmounted(() => { 出错了
-
+

暂无数据

@@ -5335,7 +2616,7 @@ onUnmounted(() => {
-
+

暂无数据

@@ -5600,6 +2881,17 @@ onUnmounted(() => { align-items: center; } +.content1chart { + background-image: url("@/assets/img/AIchat/罗盘边框.png"); + background-repeat: no-repeat; + background-size: 100% 100%; + width: 50vw; + min-width: 350px; + display: flex; + justify-content: center; + align-items: center; +} + .content1Text { background-image: url("@/assets/img/AIchat/框.png"); background-repeat: no-repeat; @@ -5621,6 +2913,20 @@ onUnmounted(() => { .message-bubble.ai.content2 { width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.content2chart { + background-image: url("@/assets/img/AIchat/PCbackPic.png"); + background-repeat: no-repeat; + background-size: 100% 100%; + width: 50vw; + min-width: 350px; + display: flex; + justify-content: center; + align-items: center; } .message-bubble.ai.content3 { @@ -5663,7 +2969,7 @@ onUnmounted(() => { min-height: 320px; /* 视口高度单位 */ height: 40vh; - min-width: 50vw; + width: 50vw; } @media (max-width: 768px) { @@ -5682,6 +2988,11 @@ onUnmounted(() => { font-size: 20px; } + .content2chart { + background-image: url("@/assets/img/AIchat/new-app-bgc.png") !important; + height: 100vw; + } + .content3Text { width: 77vw; min-width: 0px; @@ -5699,7 +3010,10 @@ onUnmounted(() => { } .kline-container .chart-mount-point { - height: 100%; - width: 100%; + display: flex; + justify-content: center; + align-items: center; + height: 80%; + width: 90%; } diff --git a/src/views/Announcement.vue b/src/views/Announcement.vue index b8e413b..359cd10 100644 --- a/src/views/Announcement.vue +++ b/src/views/Announcement.vue @@ -26,18 +26,18 @@ const codeList = ref([ const getMarketAndCode = async () => { const result = await getMarketAndCodeAPI() - console.log(result.data, "MarketAndCode"); + // console.log(result.data, "MarketAndCode"); for (let i = 0; i < result.data.length; i++) { const item = result.data[i]; const market = marketList.value[item.market]; const codeLists=item.code.split(',') - console.log(codeLists, "codeLists",market,'market'); + // console.log(codeLists, "codeLists",market,'market'); const targetMarket=codeList.value.find(item=>item.market==market) if(targetMarket){ targetMarket.code=codeLists - console.log(targetMarket, "targetMarket"); + // console.log(targetMarket, "targetMarket"); }else{ console.log("未找到对应的市场") } @@ -50,7 +50,7 @@ const getMarketAndCode = async () => { const announcementVideo = ref({}); const getAnnouncement = async () => { const result = await getAnnouncementAPI() - console.log(result.data, "result.data"); + // console.log(result.data, "result.data"); announcementVideo.value.url = result.data[0].url; announcementVideo.value.img = result.data[0].img; @@ -58,9 +58,9 @@ const getAnnouncement = async () => { token: localStorage.getItem('localToken'), id: result.data[0].id }) - console.log(click); + // console.log(click); - console.log(announcementVideo.value, "announcementVideo"); + // console.log(announcementVideo.value, "announcementVideo"); } const handleVideoPlay = () => { diff --git a/src/views/Feedback.vue b/src/views/Feedback.vue index f147f5e..7a10c33 100644 --- a/src/views/Feedback.vue +++ b/src/views/Feedback.vue @@ -12,7 +12,6 @@ import failure from "../assets/img/Feedback/failure.png"; import save from "../assets/img/Feedback/save.png"; import back from "../assets/img/Feedback/back.png"; import purpleDot from "../assets/img/Feedback/purpleDot.png"; - import moment from 'moment'; const dataStore = useDataStore()