Browse Source

两个图表(差打字机顺序,语音播放)

ds_hxl
no99 1 week ago
parent
commit
d0892a2aa0
  1. 2
      README.md
  2. BIN
      src/assets/img/AIchat/PCbackPic.png
  3. BIN
      src/assets/img/AIchat/new-app-bgc.png
  4. 374
      src/store/dataList.js
  5. 5022
      src/views/AIchat.vue
  6. 12
      src/views/Announcement.vue
  7. 1
      src/views/Feedback.vue

2
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 组件,解决时间处理问题
npm install moment 安装 moment 组件,解决时间处理问题

BIN
src/assets/img/AIchat/PCbackPic.png

After

Width: 2280  |  Height: 1900  |  Size: 216 KiB

BIN
src/assets/img/AIchat/new-app-bgc.png

After

Width: 647  |  Height: 1144  |  Size: 16 KiB

374
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,
};
});

5022
src/views/AIchat.vue
File diff suppressed because it is too large
View File

12
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 = () => {

1
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()

Loading…
Cancel
Save