提交 83ca81d5 authored 作者: 周文艺's avatar 周文艺

2026/1/10

上级 d73184ca
......@@ -78,7 +78,7 @@
<span
class="marker-label"
:class="{ 'selected-label': isMarkerInSelectedRange(marker) }"
v-if=" (index % showLength === 0 || index === timeMarkers.length - 1)"
v-if=" ((index-1) % showLength === 0 || index === timeMarkers.length - 1)"
v-html="marker.label"
></span>
......@@ -237,9 +237,15 @@ const loading = ref('');
const compareTime = (time1, time2) => {
// console.log('每隔开始compareTime----------', time1, time2);
console.log('cao每隔开始compareTime----------', time1, time2);
// 将时间字符串转换为 Date 对象
const date1 = new Date(time1);
if (time2 === null || time2 === "" || time2 === undefined) {
time2 = new Date(
new Date(selectedStartTime.value).getTime() + 60 * 1000
).toISOString();
console.log('每隔开始compareTime----------', time1, time2);
}
const date2 = new Date(time2);
// 检查时间是否有效
......@@ -267,9 +273,8 @@ const wssMessageHandle = () => {
// let WwflagToNext = 0
wss.onmessage = (event) => {
const data = JSON.parse(event.data);
// 回复已收到数据的确认
if (!(data.type === 'control')) {
// 只有history和实时模式数据,回复已收到数据的确认。要修改以下代码
if ((data.type === 'history') ) {
wssOpenHandle({
type: "confirm",
......@@ -298,7 +303,13 @@ const wssMessageHandle = () => {
// })
console.log('我是timer获取的wssRespone:', data);
let flagToNext = 0
Loading.hide()
if (data.type === 'control') {
if (data.dataTime ) {
preTimeWindowEnd.value = data.dataTime ;
}
playForward();
}
if (data.type === 'error') {
wssResponeFlag_isSuccess.value = false;
// eleplate plus 关闭loading
......@@ -306,20 +317,24 @@ const wssMessageHandle = () => {
Loading.hide()
ElMessage({
type: 'error',
message: `已暂停,没有查询到该时间段的历史数据!!!`,
message: data.message || `已暂停,没有查询到该时间段的历史数据!!!`,
})
// console.log("获取的wssResponeFlag_isSuccess信息1:", wssResponeFlag_isSuccess.value);
useAppStoreInstance.setglobalStartWss(false)
console.log("我走了这里4")
stopAutoPlay();
isChange_flag_firstBackDate.value = false;
hasPlayed.value = false;
// 处理任务数据
}
if (data.type === 'history') {
// 处理日志数据
// console.log("endDateTime.value === selectedEndTime.value:", endDateTime.value , selectedEndTime.value.toISOString(),endDateTime.value === selectedEndTime.value);
useAppStoreInstance.setglobalStartWss(true)
preTimeWindowEnd.value = data.timeWindowEnd;
if (data.nextTimestamp || data.timeWindowEnd ) {
preTimeWindowEnd.value = data.nextTimestamp || data.timeWindowEnd ;
}
preTimeAllDate.value = data;
// clearTimeout(WwflagToNext);
if (flagToNext !== 0) {
......@@ -349,7 +364,7 @@ const wssMessageHandle = () => {
// if(loading.value){
// (loading.value).close()
Loading.hide()
// }else{
// console.log("99999999999999",loading.value);
......@@ -376,7 +391,6 @@ const wssMessageHandle = () => {
// console.log('我是left,type == time获取的wssRespone:', JSONdata.time, typeof JSONdata.time);
// console.log('我是left,type == time获取的wssRespone:', JSONdata.time.toLocaleString(), typeof JSONdata.time.toLocaleString());
}
// 处理服务器返回的数据,减去1000毫秒延迟,防止setTimeout和返回数据重叠在一个时间点上
// flagToNext = setTimeout(() => {
// stopAutoPlay();
......@@ -497,7 +511,7 @@ const toNumber = (value) => {
return isNaN(num) ? 0 : num; // 如果转换失败则返回0
}
// 点击确认后,处理日期范围变化
const handleDateRangeChange = async (val) => {
const handleDateRangeChange = async (val,flag = false) => {
jiangerTime.value = 0;
isChange_flag_firstBackDate.value = false;
......@@ -516,14 +530,18 @@ const handleDateRangeChange = async (val) => {
// text: 'Loading',
// background: 'rgba(0, 0, 0, 0.7)',
// })
if(!flag) {
Loading.show()
}
// Loading.show()
if (val && val.length === 2) {
// console.log("cao cao",val[0].toISOString(),new Date((new Date(val[0])).setSeconds(56)).toISOString());
console.log("cao cao",val[0]);
startDateTime.value = new Date((new Date(val[0])).setSeconds(56)).toISOString();
// preTimeWindowEnd.value = new Date((new Date(val[0])).setSeconds(56+60)).toISOString();
endDateTime.value = val[1].toISOString();
// console.log("//////////////////",val[0],"4444444444--",pick_select_date.value[0]);
// preTimeWindowEnd.value = new Date((new Date(new Date(selectedStartTime.value))).setSeconds(56+60)).toISOString();
useAppStoreInstance.setglobalSubsystemSelectedStartTime(val);
useAppStoreInstance.setglobalSubsystemSelectedEndTime(formatDateTime(val[1]));
......@@ -731,7 +749,7 @@ const timeMarkers = computed(() => {
}
// 增加30分钟
currentTime.setMinutes(currentTime.getMinutes() + 30);
currentTime.setMinutes(currentTime.getMinutes() +60);
}
return markers;
......@@ -871,7 +889,7 @@ const toggleAutoPlay = () => {
} else {
status = 'continue';
isConfirmedWithRange.value = false; // 开始播放时重置标记
jiangerTime.value = 0;
playForward();
if(window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
......@@ -1059,17 +1077,18 @@ const changeSpeed = () => {
const nextIndex = (currentIndex + 1) % speeds.length;
hasPlayed.value = false;
playbackSpeed.value = speeds[nextIndex];
jiangerTime.value = 0;
if (window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
isRealtime: is_flag_isRealtime.value? true: false,
isFastForward: playbackSpeed.value === 1 || playbackSpeed.value === '1'?false:true,
step: playbackSpeed.value,
speed: playbackSpeed.value,
taskCode: String(taskCode_everyChange.value),
})))
wssOpenHandle({
isRealtime: is_flag_isRealtime.value? true: false,
isFastForward: playbackSpeed.value === 1 || playbackSpeed.value === '1'?false:true,
step: playbackSpeed.value,
speed: playbackSpeed.value,
taskCode: String(taskCode_everyChange.value),
})
}
......@@ -1137,6 +1156,7 @@ const endDrag = () => {
isDragging.value = false;
currentDragHandle.value = null;
hasPlayed.value = false;
// hasPlayed.value = true;
// 调用UE5回调函数
if (window.ue5) {
if (isDraged.value) {
......@@ -1194,12 +1214,14 @@ const updateTimeline = () => {
onMounted(() => {
if (useAppStoreInstance.globalisFromTosub) {
handleDateRangeChange(useAppStoreInstance.globalSubsystemSelectedStartTime);
console.log("00000000.000从分系统进来");
handleDateRangeChange(useAppStoreInstance.globalSubsystemSelectedStartTime,true);
// jumpToSpecificTime(new Date(useAppStoreInstance.globalTimeLineEndSelectTime),true)
}else {
updateTimeline();
console.log("00000000.111默认进来");
// 初始化时,默认实时传输
if(window.ue5) {
window.ue5("callBackTimeFn", String(JSON.stringify({
......@@ -1225,13 +1247,16 @@ const intervalTimer = ref(null);
// 监听 selectedEndTime 的变化,二无停,时间是2025-11-02 16:01:00
// 检测时间间隔
const jiangerTime = ref(0)
const isFirst = ref(true)
watch(
() => selectedEndTime.value,
(val) => {
// 检查是否满足条件
if ( isChange_flag_firstBackDate.value) {
console.log("每隔开始进来");
console.log("我走了",compareTime(formatDateTime(selectedEndTime.value), preTimeWindowEnd.value),formatDateTime(selectedEndTime.value),preTimeWindowEnd.value,300%7.8947 ===0.0014);
// preTimeWindowEnd.value = new Date((new Date(new Date(selectedStartTime.value))).setSeconds(56+60)).toISOString();
// console.log("我走了",compareTime(formatDateTime(selectedEndTime.value), preTimeWindowEnd.value),formatDateTime(selectedEndTime.value),preTimeWindowEnd.value,300%7.8947 ===0.0014);
// 间隔5分钟即300秒,发送时轴de 当前时间给ue
const adjustedStep = Math.ceil(300 / playbackSpeed.value);
......@@ -1292,15 +1317,37 @@ onUnmounted(() => {
stopAutoPlay();
window.removeEventListener('mousemove', handleDrag);
window.removeEventListener('mouseup', endDrag);
console.log("jieshuli 1");
console.log("jieshuli 1,组件卸载时要发暂停");
if(is_flag_isRealtime.value){
// 实时传输时,组件卸载时要发暂停
}else{
// 非实时传输时,组件卸载时要发暂停
if(window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
isRealtime: is_flag_isRealtime.value? true: false,
status: "stop",
speed: playbackSpeed.value,
taskCode: String(taskCode_everyChange.value),
})));
// window.ue5("callBackTimeFn", String(JSON.stringify({
// isRealtime: is_flag_isRealtime.value? true: false,
// status: "stop",
// taskCode: String(taskCode_everyChange.value),
// })));
wssOpenHandle({
isRealtime: is_flag_isRealtime.value? true: false,
status: "stop",
taskCode: String(taskCode_everyChange.value),
})
}
}
});
onDeactivated(() => {
stopAutoPlay();
window.removeEventListener('mousemove', handleDrag);
window.removeEventListener('mouseup', endDrag);
console.log("jieshuli 2");
});
</script>
<style scoped>
......
......@@ -253,8 +253,12 @@ const loading = ref('');
// })
let flagToNext = 0
if (Jsondata.type === 'status') {
Jsondata.status === 'STOP' ? stopAutoPlay() : startAutoPlay();
Jsondata.status === 'STOP' ? stopAutoPlay() : "不执行";
isChange_flag_firstBackDate.value = false;
hasPlayed.value = false;
if (Jsondata.nextTimestamp || Jsondata.timeWindowEnd) {
preTimeWindowEnd.value = Jsondata.nextTimestamp || Jsondata.timeWindowEnd ;
}
}
// console.log("222222222FOOT2---------",Jsondata);
if (Jsondata.type === 'no_data') {
......@@ -279,15 +283,26 @@ const loading = ref('');
})
stopAutoPlay();
}else {
wssOpenHandle({
type: "confirm",
taskCode: String(useAppStoreInstance.globalSubsystemTaskCode),
clientType: "web"
})
if (Jsondata.nextTimestamp || Jsondata.timeWindowEnd) {
preTimeWindowEnd.value = Jsondata.nextTimestamp || Jsondata.timeWindowEnd ;
}
isChange_flag_firstBackDate.value = true;
useAppStoreInstance.setSubsystemSocketContent(Jsondata)
// if(loading.value){
// (loading.value).close()
// }
Loading.hide()
if (flagToNext !== 0) {
clearTimeout(flagToNext);
}
// if (flagToNext !== 0) {
// clearTimeout(flagToNext);
// }
// startAutoPlay();
if (endDateTime.value === selectedEndTime.value.toISOString()) {
stopAutoPlay();
......@@ -432,19 +447,19 @@ const shortcuts = [
];
const pick_select_date = ref();//未使用
const pick_select_date_handFn = (val) => {
if (!isDraged.value) {
// window.ue5("callBackTimeFn", String(JSON.stringify({
// taskCode:String(taskCode_everyChange.value),
// })));
// wssOpenHandle({
// taskCode:String(taskCode_everyChange.value),
// })
}
pick_select_date.value = val;
console.log("dddddd",val);
isChange_flag_select_date.value = true;
}
// const pick_select_date_handFn = (val) => {
// if (!isDraged.value) {
// // window.ue5("callBackTimeFn", String(JSON.stringify({
// // taskCode:String(taskCode_everyChange.value),
// // })));
// // wssOpenHandle({
// // taskCode:String(taskCode_everyChange.value),
// // })
// }
// pick_select_date.value = val;
// console.log("dddddd",val);
// isChange_flag_select_date.value = true;
// }
const isChange_flag_select_date = ref(false);//未使用
const taskCode_everyChange = ref(Date.now());//每次进入分系统时,生成一个新的taskCode
......@@ -474,9 +489,10 @@ const handleDateRangeChange = async (val) => {
// })
Loading.show()
if (val && val.length === 2) {
console.log("11111111111111111",val[0]);
console.log("cao cao11111111111111111",val[0]);
startDateTime.value = new Date((new Date(val[0])).setSeconds(56)).toISOString();
startDateTime.value = val[0].toISOString();
endDateTime.value = val[1].toISOString();
isDraged.value = false;
is_flag_isRealtime.value = false;
......@@ -794,12 +810,29 @@ const toggleAutoPlay = () => {
status = 'stop';
console.log("我是切换自动播放状态stopAutoPlay()",isPlaying.value);
stopAutoPlay();
if (window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
isRealtime: is_flag_isRealtime.value? true: false,
status: "stop",
step: playbackSpeed.value,
taskCode: String(taskCode_everyChange.value),
})));
}
} else {
status = 'continue';
isConfirmedWithRange.value = false; // 开始播放时重置标记
playForward();
if(window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
isRealtime: is_flag_isRealtime.value? true: false,
status: 'continue',
step: playbackSpeed.value,
taskCode: String(taskCode_everyChange.value),
})));
}
wssOpenHandle({
// isRealtime: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
status: 'continue',
......@@ -812,18 +845,7 @@ const toggleAutoPlay = () => {
updateSelectedTimes();
});
}
if(window.ue5) {
// window.ue5("callBackTimeFn", String(JSON.stringify({
// isRealtime: is_flag_isRealtime.value? true: false,
// status: status,
// taskCode: String(taskCode_everyChange.value),
// })));
// wssOpenHandle({
// isRealtime: is_flag_isRealtime.value? true: false,
// status: status,
// taskCode: String(taskCode_everyChange.value),
// })
}
}
};
......@@ -902,18 +924,34 @@ const playForward = async () => {
// };
// 开始自动播放
// const startAutoPlay = () => {
// // 清除之前的定时器
// if (playbackInterval.value) {
// clearInterval(playbackInterval.value);
// }
// // 设置新的定时器,每秒更新一次
// playbackInterval.value = setInterval(() => {
// moveEndHandle();
// }, 1000); // 根据播放速度调整间隔
// };
// 第二版
const startAutoPlay = () => {
// 清除之前的定时器
if (playbackInterval.value) {
clearInterval(playbackInterval.value);
}
// 设置新的定时器,每秒更新一次
playbackInterval.value = setInterval(() => {
let expectedTime = Date.now() + (1000 );
const update = () => {
const drift = Date.now() - expectedTime;
moveEndHandle();
}, 1000); // 根据播放速度调整间隔
};
expectedTime += (1000 );
playbackInterval.value = setTimeout(update, Math.max(0, (1000 ) - drift));
};
playbackInterval.value = setTimeout(update, 1000 );
};
// 停止自动播放
const stopAutoPlay = () => {
isPlaying.value = false;
......@@ -987,17 +1025,18 @@ const changeSpeed = () => {
const nextIndex = (currentIndex + 1) % speeds.length;
playbackSpeed.value = speeds[nextIndex];
useAppStoreInstance.setglobalSubsystemSpeed(playbackSpeed.value)
if (window.ue5) {
window.ue5("callBackSpeedFn", String(JSON.stringify({
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
speed: useAppStoreInstance.globalSubsystemSpeed,
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward === 1 || useAppStoreInstance.globalSubsystemIsFastForward === '1'? false: true,
step: playbackSpeed.value,
taskCode: String(useAppStoreInstance.globalSubsystemTaskCode),
satelliteId: useAppStoreInstance.globalSatelliteSearchID,
})))
wssOpenHandle({
// isRealtime: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
speed: useAppStoreInstance.globalSubsystemSpeed,
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward === 1 || useAppStoreInstance.globalSubsystemIsFastForward === '1'? false: true,
step: playbackSpeed.value,
taskCode: String(useAppStoreInstance.globalSubsystemTaskCode),
satelliteId: useAppStoreInstance.globalSatelliteSearchID,
})
......@@ -1063,6 +1102,11 @@ const endDrag = () => {
hasPlayed.value = false;
isDragging.value = false;
currentDragHandle.value = null;
// window.ue5("callBackTimeFn", String(JSON.stringify({
// isRealtime: false,
// replayTime: formatDateTime(selectedEndTime.value),
// taskCode: String(taskCode_everyChange.value),
// })));
wssOpenHandle({
// isRealtime: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
......@@ -1071,6 +1115,18 @@ const endDrag = () => {
taskCode: String(useAppStoreInstance.globalSubsystemTaskCode),
satelliteId: useAppStoreInstance.globalSatelliteSearchID,
})
if (window.ue5) {
// 发送时轴de 当前时间给ue
window.ue5("callTimeLineCurrentTimeFn", String(JSON.stringify({
year: selectedEndTime.value.getFullYear(),
month: selectedEndTime.value.getMonth() + 1,
day: selectedEndTime.value.getDate(),
hour: selectedEndTime.value.getHours(),
minute: selectedEndTime.value.getMinutes(),
second: selectedEndTime.value.getSeconds(),
})));
}
// 移除全局事件监听器
window.removeEventListener('mousemove', handleDrag);
window.removeEventListener('mouseup', endDrag);
......@@ -1100,6 +1156,10 @@ const stratEndTimeTransformTime = (time) => {
};
onMounted(() => {
preTimeWindowEnd.value = "2026-11-01 00:00:00"
// console.log("cao ceshi ",compareTime("Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间)","Sun Nov 02 2026 00:00:00 GMT+0800 (中国标准时间)"));
// 添加实时模式的时间出路逻辑
if(!useAppStoreInstance.footerTimeHasedSelectTimeToSub) {
updateTimeline();
......@@ -1151,7 +1211,6 @@ if(!useAppStoreInstance.footerTimeHasedSelectTimeToSub) {
speed: useAppStoreInstance.globalSubsystemSpeed,
startTime: dataPickStartTime.value,
endTime: dataPickEndTime.value,
// startTime: formatDateTime(new Date(new Date(Date.now() - 3*24 * 60 * 60 * 1000).toISOString())),
// endTime: formatDateTime(new Date(new Date(Date.now() ).toISOString())),
taskCode: String(useAppStoreInstance.globalSubsystemTaskCode),
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论