提交 e133a643 authored 作者: liujiaxing's avatar liujiaxing

最新代码--4.10

上级 c1af309f
...@@ -24,6 +24,6 @@ ...@@ -24,6 +24,6 @@
# VITE_API_URL = /prod-api # VITE_API_URL = /prod-api
VITE_API_URL = /api VITE_API_URL = /api
# 线上环境部署 # 线上环境部署
VITE_WS_URL = 121.229.107.155:19021 # VITE_WS_URL = 121.229.107.155:19021
# 本地环境部署 # 本地环境部署
# VITE_WS_URL = 127.0.0.1:19021 VITE_WS_URL = 127.0.0.1:19021
\ No newline at end of file \ No newline at end of file
...@@ -106,12 +106,12 @@ import { ElLoading, ElMessage } from 'element-plus' ...@@ -106,12 +106,12 @@ import { ElLoading, ElMessage } from 'element-plus'
import Loading from '@/pages/all/components/loadingComponent/index.js' import Loading from '@/pages/all/components/loadingComponent/index.js'
import { ref, onMounted, onUnmounted, computed, watch, nextTick, watchEffect } from 'vue'; import { ref, onMounted, onUnmounted, computed, watch, nextTick, watchEffect } from 'vue';
import wss from '@/utils/requestSocekt.js' import wss from '@/utils/requestSocekt.js'
import wsTime from '@/utils/requestSocektTime.js' import { getTimewss, createWebSocket } from '@/utils/requestSocektTime.js'
import useAppStore from '@/store/module/app' import useAppStore from '@/store/module/app'
import dayjs from 'dayjs'; import dayjs from 'dayjs';
const wssInstance = ref(wss) const wssInstance = ref(wss)
const wsTimeInstance = ref(wsTime) let wsTimeInstance = ""; //时间ws实例
// import { loading } from 'vxe-pc-ui'; // import { loading } from 'vxe-pc-ui';
// 用于表示速度改变时,正常数据返回后才能够再次改变速度 // 用于表示速度改变时,正常数据返回后才能够再次改变速度
const speedChangedNormalDataBack = ref(false) const speedChangedNormalDataBack = ref(false)
...@@ -247,52 +247,44 @@ const compareTime = (time1, time2) => { ...@@ -247,52 +247,44 @@ const compareTime = (time1, time2) => {
}; };
const wsTimeInstanceFn = () => { const wsTimeInstanceFn = () => {
console.log('架子啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊'); console.log('架子啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊', wsTimeInstance);
wsTimeInstance.onmessage = (event) => {
if (wsTimeInstance.value) { console.log(selectedEndTime.value, '时间对比------------------------');
console.log(wsTimeInstance.value, '链接------------------------'); const data = JSON.parse(event.data);
// console.log('data', data)
(wsTimeInstance.value).onmessage = (event) => { console.log(data, '时间------------------------', useAppStoreInstance.globalLeftWssCONTINE.type);
console.log(selectedEndTime.value, '时间对比------------------------'); // if (useAppStoreInstance.globalLeftWssCONTINE.type === "realtime") {
const data = JSON.parse(event.data); startDateTime.value = data.startTime;
// console.log('data', data) endDateTime.value = data.endTime;
console.log(selectedEndTime.value, '时间对比------------------------', useAppStoreInstance.globalLeftWssCONTINE.type); const currentEndTimeMs = selectedEndTime.value
? selectedEndTime.value.getTime()
if (useAppStoreInstance.globalLeftWssCONTINE.type === "realtime") { : null;
startDateTime.value = data.startTime;
endDateTime.value = data.endTime;
const currentEndTimeMs = selectedEndTime.value
? selectedEndTime.value.getTime()
: null;
nextTick(() => {
// 只刷新刻度,不调 updateTimeline(它会重置滑块)
generateTimelineDates();
// 把滑块按比例映射到新时间范围
if (currentEndTimeMs) {
const newStartMs = new Date(data.startTime).getTime();
const newEndMs = new Date(data.endTime).getTime();
const newTotalMs = newEndMs - newStartMs;
if (newTotalMs > 0) {
// 当前时间在新范围中的百分比位置
const newPercent = ((currentEndTimeMs - newStartMs) / newTotalMs) * 100;
// 限制在 0~100
endHandlePercent.value = Math.max(0, Math.min(100, newPercent));
}
}
// 同步选中时间 nextTick(() => {
updateSelectedTimes(); // 只刷新刻度,不调 updateTimeline(它会重置滑块)
}); generateTimelineDates();
// 把滑块按比例映射到新时间范围
if (currentEndTimeMs) {
const newStartMs = new Date(data.startTime).getTime();
const newEndMs = new Date(data.endTime).getTime();
const newTotalMs = newEndMs - newStartMs;
if (newTotalMs > 0) {
// 当前时间在新范围中的百分比位置
const newPercent = ((currentEndTimeMs - newStartMs) / newTotalMs) * 100;
// 限制在 0~100
endHandlePercent.value = Math.max(0, Math.min(100, newPercent));
}
} }
}
// 同步选中时间
updateSelectedTimes();
});
// }
} }
} }
const preTimeWindowEnd = ref(null);//下一个时间窗口结束时间 const preTimeWindowEnd = ref(null);//下一个时间窗口结束时间
const preTimeAllDate = ref(null);//上一条完整数据 const preTimeAllDate = ref(null);//上一条完整数据
...@@ -1382,6 +1374,9 @@ const resetclick = () => { ...@@ -1382,6 +1374,9 @@ const resetclick = () => {
} }
const tempDateTime = ref(new Date(useAppStoreInstance.globalTimeLineEndSelectTime)) const tempDateTime = ref(new Date(useAppStoreInstance.globalTimeLineEndSelectTime))
onMounted(() => { onMounted(() => {
createWebSocket();
// console.log();
wsTimeInstance = getTimewss()
wsTimeInstanceFn();//接受实时模式下的数据 wsTimeInstanceFn();//接受实时模式下的数据
wssMessageHandle();// 只在初始化时注册一次消息处理器 wssMessageHandle();// 只在初始化时注册一次消息处理器
//进入前时间 //进入前时间
...@@ -1584,6 +1579,7 @@ onUnmounted(() => { ...@@ -1584,6 +1579,7 @@ onUnmounted(() => {
useAppStoreInstance.setGlobalIsRealtimeBeforeSub(is_flag_isRealtime.value); useAppStoreInstance.setGlobalIsRealtimeBeforeSub(is_flag_isRealtime.value);
useAppStoreInstance.setGlobalSubsystemSelectedTimeRange(getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)); useAppStoreInstance.setGlobalSubsystemSelectedTimeRange(getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime));
console.log(is_flag_isRealtime.value, '判断状态'); console.log(is_flag_isRealtime.value, '判断状态');
wsTimeInstance.close()
// is_flag_isRealtime--true代表实时模式,false--代表历史模式 // is_flag_isRealtime--true代表实时模式,false--代表历史模式
//console.log("jieshuli 1,组件卸载时要发暂停",getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[0],getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[1]); //console.log("jieshuli 1,组件卸载时要发暂停",getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[0],getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[1]);
// 储存跳转前的模式--实时模式-true,还是历史模式-false // 储存跳转前的模式--实时模式-true,还是历史模式-false
......
...@@ -6,34 +6,51 @@ let Timewss = null; ...@@ -6,34 +6,51 @@ let Timewss = null;
let timer = null; let timer = null;
const appStore = useAppStore(); const appStore = useAppStore();
function createWebSocket() { function createWebSocket(options = {}) {
if (Timewss && Timewss.readyState === WebSocket.OPEN) {
console.log('TimeWebSocket已连接,无需重复创建');
// 如果有新传入的 onmessage,更新它
if (options.onmessage) {
Timewss.onmessage = options.onmessage;
}
return Timewss;
}
Timewss = new WebSocket(apiUrl); Timewss = new WebSocket(apiUrl);
Timewss.onopen = () => { Timewss.onopen = () => {
console.log('TimeWebSocket已连接'); console.log('TimeWebSocket已连接');
options.onopen?.();
}; };
Timewss.onmessage = (event) => { Timewss.onmessage = (event) => {
console.log('Time接收到消息:', event.data); console.log('Time接收到消息:', event.data);
options.onmessage?.(event);
}; };
Timewss.onerror = (error) => { Timewss.onerror = (error) => {
console.error('WebSocket错误:', error); console.error('WebSocket错误:', error);
options.onerror?.(error);
}; };
Timewss.onclose = () => { Timewss.onclose = () => {
console.log('连接关闭,1秒后重连...'); console.log('连接关闭,1秒后重连...');
timer = setTimeout(() => { timer = setTimeout(() => {
Timewss = createWebSocket(); // 重新创建连接 createWebSocket(options); // 重新创建连接,保留回调
clearTimeout(timer); clearTimeout(timer);
timer = null; //释放内存 timer = null;
}, 1000); }, 1000);
}; };
return Timewss;
} }
// 初始化连接 // 获取当前 WebSocket 实例
if (!Timewss || Timewss.readyState === WebSocket.CLOSED) { function getTimewss() {
createWebSocket(); return Timewss;
} }
export default Timewss; export {
\ No newline at end of file createWebSocket,
getTimewss
};
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论