Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
SatelliteDigital
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
nijiawen
SatelliteDigital
Commits
b0dbcc43
提交
b0dbcc43
authored
4月 10, 2026
作者:
liujiaxing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ai注释并修改
上级
a1e1d476
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
196 行增加
和
232 行删除
+196
-232
timers.vue
src/pages/footer/component/timers.vue
+146
-192
app.js
src/store/module/app.js
+50
-40
没有找到文件。
src/pages/footer/component/timers.vue
浏览文件 @
b0dbcc43
...
@@ -186,33 +186,30 @@ const jumpToSpecificTime = (targetTime, PerformDrag = false) => {
...
@@ -186,33 +186,30 @@ const jumpToSpecificTime = (targetTime, PerformDrag = false) => {
}
}
};
};
// websock发送数据
并接受数据
// websock发送数据
(只发送,不注册消息处理器)
const
wssOpenHandle
=
(
data
)
=>
{
const
wssOpenHandle
=
(
data
)
=>
{
console
.
log
(
"发送数据"
,
(
wssInstance
.
value
).
readyState
);
console
.
log
(
"发送数据"
,
(
wssInstance
.
value
).
readyState
);
if
((
wssInstance
.
value
).
readyState
===
WebSocket
.
OPEN
)
{
if
((
wssInstance
.
value
).
readyState
===
WebSocket
.
OPEN
)
{
// 如果连接已打开,直接发送数据
// 如果连接已打开,直接发送数据
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
wssMessageHandle
();
// console.warn('WebSocket 已连接,无法发送数据:', data);
// console.warn('WebSocket 已连接,无法发送数据:', data);
}
else
if
((
wssInstance
.
value
).
readyState
===
WebSocket
.
CLOSED
)
{
}
else
if
((
wssInstance
.
value
).
readyState
===
WebSocket
.
CLOSED
)
{
console
.
warn
(
'WebSocket 已关闭,无法发送数据:'
,
data
);
console
.
warn
(
'WebSocket 已关闭,无法发送数据:'
,
data
);
(
wssInstance
.
value
)
=
new
WebSocket
((
wssInstance
.
value
).
url
);
const
oldUrl
=
(
wssInstance
.
value
).
url
;
// 保存 URL
(
wssInstance
.
value
)
=
new
WebSocket
(
oldUrl
);
// 重连时重新注册消息处理器
wssMessageHandle
();
(
wssInstance
.
value
).
onopen
=
()
=>
{
(
wssInstance
.
value
).
onopen
=
()
=>
{
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
};
};
console
.
log
(
"发送数据1111"
);
console
.
log
(
"发送数据1111"
);
wssMessageHandle
();
}
else
{
}
else
{
// 否则等待连接打开后再发送
// 否则等待连接打开后再发送
(
wssInstance
.
value
).
onopen
=
()
=>
{
(
wssInstance
.
value
).
onopen
=
()
=>
{
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
(
wssInstance
.
value
).
send
(
JSON
.
stringify
(
data
));
};
};
wssMessageHandle
();
}
}
console
.
log
(
"触发1"
);
startAutoPlay
();
};
};
const
wssResponeFlag_isSuccess
=
ref
(
true
);
const
loading
=
ref
(
''
);
const
loading
=
ref
(
''
);
...
@@ -289,8 +286,8 @@ const wsTimeInstanceFn = () => {
...
@@ -289,8 +286,8 @@ const wsTimeInstanceFn = () => {
}
}
const
preTimeWindowEnd
=
ref
(
null
);
const
preTimeWindowEnd
=
ref
(
null
);
//下一个时间窗口结束时间
const
preTimeAllDate
=
ref
(
null
);
const
preTimeAllDate
=
ref
(
null
);
//上一条完整数据
const
onMessageIndex
=
ref
(
0
);
const
onMessageIndex
=
ref
(
0
);
// const hasPlayed = ref(false);//判断是否在自动播放中
// const hasPlayed = ref(false);//判断是否在自动播放中
...
@@ -298,166 +295,133 @@ const unlesscount = ref(0);
...
@@ -298,166 +295,133 @@ const unlesscount = ref(0);
const
wssMessageHandle
=
()
=>
{
const
wssMessageHandle
=
()
=>
{
// let WwflagToNext = 0
// let WwflagToNext = 0
(
wssInstance
.
value
).
onmessage
=
(
event
)
=>
{
(
wssInstance
.
value
).
onmessage
=
(
event
)
=>
{
const
data
=
JSON
.
parse
(
event
.
data
);
let
data
;
console
.
log
(
'data接受到返回的数据了----------------'
,
data
)
// 修复问题2: 添加 try-catch 包裹 JSON.parse
if
(
data
.
type
===
"realtime"
)
{
try
{
console
.
log
(
'是否开始播放'
);
data
=
JSON
.
parse
(
event
.
data
);
}
catch
(
error
)
{
playForward
();
//开始播放
console
.
error
(
'WebSocket 数据解析失败:'
,
error
);
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
return
;
}
// 只有history和实时模式数据,回复已收到数据的确认。要修改以下代码
if
((
data
.
type
===
'history'
&&
!
(
data
?.
isLagrangeInterpolation
===
true
)))
{
wssOpenHandle
({
type
:
"confirm"
,
taskCode
:
String
(
taskCode_everyChange
.
value
)
===
""
?
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
)
:
String
(
taskCode_everyChange
.
value
),
clientType
:
"web"
})
}
if
(
data
.
type
===
'control'
&&
(
data
.
controlType
===
'continue'
&&
data
?.
messageTypeFalg
===
'true'
))
{
// 跳到指定时间点
console
.
log
(
tempDateTime
.
value
,
'试试模式的时间?-------'
);
jumpToSpecificTime
(
new
Date
(
subtractSecondsAndFormat
(
alignTo56Seconds
(
tempDateTime
.
value
).
toISOString
(),
data
.
remainingTimeMs
+
1
)),
false
)
playForward
();
//开始播放
// if (!hasPlayed.value) {
//console.log("我是playForward--3");
// hasPlayed.value = true;
// }
}
}
// //console.log('setTimeout:', (1000*60)/playbackSpeed.value,playbackSpeed.value);
console
.
log
(
'data接受到返回的数据了----------------'
,
data
);
if
((
data
.
type
===
'history'
&&
(
data
?.
isLagrangeInterpolation
===
true
))
&&
(
data
.
controlType
===
'SMOOTH'
))
{
//console.log("我是playForward--1");
if
(
data
.
nextTimestamp
)
{
console
.
log
(
'时间值111'
);
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
;
// 修复问题1: 将 history 类型统一处理
}
if
(
data
.
type
===
'realtime'
)
{
jumpToNextTime
.
value
=
data
.
remainingTimeMs
||
0
;
console
.
log
(
'是否开始播放'
);
hasDraged_first_falseToTrue
.
value
=
true
;
isChange_flag_firstBackDate
.
value
=
true
;
playForward
();
playForward
();
// hasPlayed.value = true;
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
// console.log("useAppStoreInstance.globalLeftWssCONTINE;执行了");
Loading
.
hide
();
// 成功处理后隐藏 loading
}
// 实时模式下,如果后端返回 SMOOTH 类型,说明是拖动后的同步数据
// 使用 Promise 包装 setTimeout
// 需要通知 UE5 继续播放,与时间轴同步
// await new Promise(resolve => {
if
(
data
.
controlType
===
'SMOOTH'
)
{
// setTimeout(() => {
if
(
window
.
ue5
)
{
// loading.close()
window
.
ue5
(
"callBackTimeFn"
,
String
(
JSON
.
stringify
({
// resolve()
isRealtime
:
true
,
// }, 2000)
replayTime
:
formatDateTime
(
selectedEndTime
.
value
),
// })
taskCode
:
String
(
taskCode_everyChange
.
value
)
===
""
?
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
)
:
String
(
taskCode_everyChange
.
value
),
//console.log('我是timer获取的wssRespone:', data);
speed
:
playbackSpeed
.
value
,
//console.log("我走了seekConfirm",!(data?.isLagrangeInterpolation === true));
status
:
"continue"
,
// 通知 UE5 继续播放
let
flagToNext
=
0
})));
Loading
.
hide
()
//接受到后端ws传递的消息,这时候隐藏loading
console
.
log
(
"SMOOTH类型,通知UE5继续播放"
);
}
if
(
data
.
type
===
'control'
&&
!
(
data
.
controlType
===
'stop'
)
&&
!
(
data
.
controlType
===
'continue'
))
{
if
(
data
.
nextTimestamp
)
{
console
.
log
(
'时间值222'
);
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
||
data
.
dataTime
;
}
}
hasDraged_first_falseToTrue
.
value
=
true
;
}
else
if
(
data
.
type
===
'history'
)
{
console
.
log
(
'是否跳转'
);
// 发送确认(仅非插值数据)
if
(
!
(
data
?.
isLagrangeInterpolation
===
true
))
{
jumpToSpecificTime
(
new
Date
(
subtractSecondsAndFormat
(
alignTo56Seconds
(
selectedEndTime
.
value
).
toISOString
(),
data
.
remainingTimeMs
+
1
)));
wssOpenHandle
({
//console.log("我走了ElMessage",hasDraged_first_falseToTrue.value , !(data?.isLagrangeInterpolation === true) , (data.controlType === 'seekConfirm'));
type
:
"confirm"
,
// ElMessage.warning("dsadasd",jumpToNextTime.value)
taskCode
:
String
(
taskCode_everyChange
.
value
)
===
""
?
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
)
:
String
(
taskCode_everyChange
.
value
),
if
(
hasDraged_first_falseToTrue
.
value
&&
!
(
data
?.
isLagrangeInterpolation
===
true
)
&&
(
data
.
controlType
===
'seekConfirm'
))
{
clientType
:
"web"
// ElMessage({
});
// type: 'success',
// message: `${jumpToNextTime.value/1000}秒后可进行下次时间轴拖动!!!`,
// })
}
}
isChange_flag_firstBackDate
.
value
=
true
;
}
if
(
data
.
type
===
'error'
)
{
wssResponeFlag_isSuccess
.
value
=
false
;
// eleplate plus 关闭loading
// (loading.value).close()
console
.
log
(
data
.
type
,
data
.
type
===
'error'
,
'为什么会进来33'
);
ElMessage
({
// 平滑插值处理
type
:
'error'
,
if
((
data
?.
isLagrangeInterpolation
===
true
)
&&
(
data
.
controlType
===
'SMOOTH'
))
{
message
:
data
.
message
?
`主系统:
${
data
.
message
}
`
:
`已暂停,没有查询到该时间段的历史数据!!!`
,
if
(
data
.
nextTimestamp
)
{
})
console
.
log
(
'时间值111'
);
// //console.log("获取的wssResponeFlag_isSuccess信息1:", wssResponeFlag_isSuccess.value);
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
;
useAppStoreInstance
.
setglobalStartWss
(
false
)
}
//console.log("我走了这里4")
jumpToNextTime
.
value
=
data
.
remainingTimeMs
||
0
;
stopAutoPlay
();
hasDraged_first_falseToTrue
.
value
=
true
;
// isChange_flag_firstBackDate.value = false;
isChange_flag_firstBackDate
.
value
=
true
;
// hasPlayed.value = false;
playForward
();
// 处理任务数据
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
}
if
(
data
.
type
===
'history'
&&
!
(
data
?.
isLagrangeInterpolation
===
true
))
{
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
// 处理日志数据
// //console.log("endDateTime.value === selectedEndTime.value:", endDateTime.value , selectedEndTime.value.toISOString(),endDateTime.value === selectedEndTime.value);
useAppStoreInstance
.
setglobalStartWss
(
true
)
speedChangedNormalDataBack
.
value
=
false
;
//多余
if
(
data
.
nextTimestamp
||
data
.
timeWindowEnd
)
{
console
.
log
(
'时间值333'
);
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
||
data
.
timeWindowEnd
;
}
}
hasDraged_first_falseToTrue
.
value
=
false
;
// if (!(is_flag_confirmAndPauseAndSpeed.value) && !(is_flag_isRealtime.value)) {
// //console.log("我走了is_flag_confirmAndPauseAndSpeed",!(is_flag_confirmAndPauseAndSpeed.value) && !(is_flag_isRealtime.value));
// is_flag_confirmAndPauseAndSpeed.value = true;
// 普通历史数据处理
// }
if
(
!
(
data
?.
isLagrangeInterpolation
===
true
))
{
useAppStoreInstance
.
setGlobalLeftWssCONTINE
(
data
);
preTimeAllDate
.
value
=
data
;
useAppStoreInstance
.
setglobalStartWss
(
true
);
// clearTimeout(WwflagToNext);
speedChangedNormalDataBack
.
value
=
false
;
if
(
flagToNext
!==
0
)
{
if
(
data
.
nextTimestamp
||
data
.
timeWindowEnd
)
{
clearTimeout
(
flagToNext
);
console
.
log
(
'时间值333'
);
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
||
data
.
timeWindowEnd
;
}
hasDraged_first_falseToTrue
.
value
=
false
;
preTimeAllDate
.
value
=
data
;
isChange_flag_firstBackDate
.
value
=
true
;
onMessageIndex
.
value
+=
1
;
// 修复问题6: 添加容差判断(2秒容差)
// 添加空值保护
if
(
endDateTime
.
value
&&
selectedEndTime
.
value
)
{
const
toleranceMs
=
2000
;
// 2秒容差
const
endTimeMs
=
new
Date
(
endDateTime
.
value
).
getTime
();
const
selectedTimeMs
=
selectedEndTime
.
value
.
getTime
();
const
timeDiff
=
endTimeMs
-
selectedTimeMs
;
if
(
timeDiff
<=
toleranceMs
&&
timeDiff
>=
0
)
{
console
.
log
(
'接受值后,已到达终点容差范围'
);
stopAutoPlay
();
}
else
{
playForward
();
}
}
else
{
playForward
();
}
Loading
.
hide
();
// 成功处理后隐藏 loading
}
}
isChange_flag_firstBackDate
.
value
=
true
;
}
else
if
(
data
.
type
===
'control'
)
{
// control 类型单独处理
onMessageIndex
.
value
+=
1
if
(
data
.
controlType
===
'continue'
&&
data
?.
messageTypeFalg
===
'true'
)
{
// 跳到指定时间点
if
(
endDateTime
.
value
===
selectedEndTime
.
value
.
toISOString
())
{
console
.
log
(
tempDateTime
.
value
,
'试试模式的时间?-------'
);
//console.log("我走了这里1",endDateTime.value === selectedEndTime.value.toISOString(),endDateTime.value,selectedEndTime.value.toISOString());
jumpToSpecificTime
(
new
Date
(
subtractSecondsAndFormat
(
alignTo56Seconds
(
tempDateTime
.
value
).
toISOString
(),
data
.
remainingTimeMs
+
1
)),
false
);
console
.
log
(
'接受值后'
);
stopAutoPlay
();
}
else
{
playForward
();
playForward
();
// if (!hasPlayed.value) {
Loading
.
hide
();
// //console.log("我是playForward--3");
}
else
if
(
!
(
data
.
controlType
===
'stop'
)
&&
!
(
data
.
controlType
===
'continue'
))
{
// hasPlayed.value = true;
if
(
data
.
nextTimestamp
)
{
// }
console
.
log
(
'时间值222'
);
// startAutoPlay()
preTimeWindowEnd
.
value
=
data
.
nextTimestamp
||
data
.
dataTime
;
}
hasDraged_first_falseToTrue
.
value
=
true
;
console
.
log
(
'是否跳转'
);
jumpToSpecificTime
(
new
Date
(
subtractSecondsAndFormat
(
alignTo56Seconds
(
selectedEndTime
.
value
).
toISOString
(),
data
.
remainingTimeMs
+
1
)));
isChange_flag_firstBackDate
.
value
=
true
;
Loading
.
hide
();
}
}
}
else
if
(
data
.
type
===
'error'
)
{
wssResponeFlag_isSuccess
.
value
=
true
;
console
.
log
(
data
.
type
,
'为什么会进来33'
);
}
ElMessage
({
if
(
data
.
type
===
'EndProcess'
)
{
type
:
'error'
,
useAppStoreInstance
.
setglobalStartWss
(
false
)
message
:
data
.
message
?
`主系统:
${
data
.
message
}
`
:
`已暂停,没有查询到该时间段的历史数据!!!`
,
// useAppStoreInstance.setglobalStartWss(false)
});
// isChange_flag_firstBackDate.value = false;
useAppStoreInstance
.
setglobalStartWss
(
false
);
stopAutoPlay
();
// 错误情况不隐藏 loading,保持加载状态提示用户
}
else
if
(
data
.
type
===
'EndProcess'
)
{
useAppStoreInstance
.
setglobalStartWss
(
false
);
console
.
log
(
data
.
type
,
data
.
type
===
'error'
,
'为什么会进来11'
);
console
.
log
(
data
.
type
,
data
.
type
===
'error'
,
'为什么会进来11'
);
ElMessage
({
ElMessage
({
type
:
'error'
,
type
:
'error'
,
message
:
data
.
message
||
`已暂停,没有查询到该时间段的历史数据!!!`
,
message
:
data
.
message
||
`已暂停,没有查询到该时间段的历史数据!!!`
,
})
})
;
stopAutoPlay
();
stopAutoPlay
();
// //console.log('我是left,type == time获取的wssRespone:', JSONdata, typeof JSONdata.time);
// //console.log('我是left,type == time获取的wssRespone:', JSONdata.time, typeof JSONdata.time);
// //console.log('我是left,type == time获取的wssRespone:', JSONdata.time.toLocaleString(), typeof JSONdata.time.toLocaleString());
}
}
unlesscount
.
value
+=
1
unlesscount
.
value
+=
1
;
};
};
}
}
...
@@ -570,8 +534,7 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
...
@@ -570,8 +534,7 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
}
}
if
(
val
&&
val
.
length
>
0
)
{
if
(
val
&&
val
.
length
>
0
)
{
wssResponeFlag_isSuccess
.
value
=
true
;
isPlaying
.
value
=
false
;
//播放暂停
isPlaying
.
value
=
false
;
if
(
!
flag
)
{
if
(
!
flag
)
{
Loading
.
show
()
Loading
.
show
()
}
}
...
@@ -620,7 +583,6 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
...
@@ -620,7 +583,6 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
console
.
log
(
"走了这里3"
);
console
.
log
(
"走了这里3"
);
}
}
wssMessageHandle
()
}
else
{
}
else
{
ElMessage
({
ElMessage
({
type
:
'warning'
,
type
:
'warning'
,
...
@@ -642,24 +604,6 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
...
@@ -642,24 +604,6 @@ const handleDateRangeChange = async (val, flag = false, RemoveSat, speed) => {
}
}
};
};
watch
(()
=>
wssResponeFlag_isSuccess
.
value
,
(
newVal
)
=>
{
//console.log("我是这里再监测数值变化,",newVal);
if
(
newVal
)
{
console
.
log
(
"触发2"
);
startAutoPlay
();
}
else
{
//console.log("我是watch(())stopAutoPlay()");
//console.log("我走了这里6")
console
.
log
(
'触发了暂停'
);
stopAutoPlay
();
// (wssInstance.value).close()
}
})
const
isDateRangeNotEmpty
=
ref
(
false
);
const
isDateRangeNotEmpty
=
ref
(
false
);
const
autoUpdateDateRange
=
ref
(
null
);
const
autoUpdateDateRange
=
ref
(
null
);
autoUpdateDateRange
.
value
=
setInterval
(()
=>
{
autoUpdateDateRange
.
value
=
setInterval
(()
=>
{
...
@@ -917,7 +861,7 @@ const toggleAutoPlay = () => {
...
@@ -917,7 +861,7 @@ const toggleAutoPlay = () => {
speed
:
playbackSpeed
.
value
,
speed
:
playbackSpeed
.
value
,
taskCode
:
String
(
taskCode_everyChange
.
value
)
===
""
?
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
)
:
String
(
taskCode_everyChange
.
value
),
taskCode
:
String
(
taskCode_everyChange
.
value
)
===
""
?
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
)
:
String
(
taskCode_everyChange
.
value
),
currentTime
:
(
formatDateTime
(
selectedEndTime
.
value
)),
currentTime
:
(
formatDateTime
(
selectedEndTime
.
value
)),
status
:
isPlaying
.
value
?
"
stop"
:
"continue
"
,
status
:
isPlaying
.
value
?
"
continue"
:
"stop
"
,
// status: isPlaying.value ? "continue" : "stop",
// status: isPlaying.value ? "continue" : "stop",
//时间参数
//时间参数
})))
})))
...
@@ -1020,9 +964,9 @@ const playForward = async () => {
...
@@ -1020,9 +964,9 @@ const playForward = async () => {
// 第二版开始播放
// 第二版开始播放
const
startAutoPlay
=
()
=>
{
const
startAutoPlay
=
()
=>
{
console
.
log
(
'开始播放?'
,
!
isPlaying
.
value
);
console
.
log
(
'开始播放?'
,
!
isPlaying
.
value
);
// 清除定时器
// 清除定时器
(注意:playbackInterval 存储的是 setTimeout 返回值)
if
(
playbackInterval
.
value
)
{
if
(
playbackInterval
.
value
)
{
clear
Interval
(
playbackInterval
.
value
);
clear
Timeout
(
playbackInterval
.
value
);
}
}
let
expectedTime
=
Date
.
now
()
+
(
1000
/
playbackSpeed
.
value
);
let
expectedTime
=
Date
.
now
()
+
(
1000
/
playbackSpeed
.
value
);
...
@@ -1042,12 +986,12 @@ const stopAutoPlay = () => {
...
@@ -1042,12 +986,12 @@ const stopAutoPlay = () => {
isPlaying
.
value
=
false
;
isPlaying
.
value
=
false
;
console
.
log
(
"停止自动播放"
,
playbackInterval
.
value
);
console
.
log
(
"停止自动播放"
,
playbackInterval
.
value
);
if
(
playbackInterval
.
value
)
{
if
(
playbackInterval
.
value
)
{
clear
Interval
(
playbackInterval
.
value
);
clear
Timeout
(
playbackInterval
.
value
);
playbackInterval
.
value
=
null
;
playbackInterval
.
value
=
null
;
}
}
if
(
flag_SetTimeOutCycle
.
value
!==
null
)
{
if
(
flag_SetTimeOutCycle
.
value
!==
null
)
{
clear
Interval
(
flag_SetTimeOutCycle
.
value
);
clear
Timeout
(
flag_SetTimeOutCycle
.
value
);
flag_SetTimeOutCycle
.
value
=
null
;
flag_SetTimeOutCycle
.
value
=
null
;
}
}
...
@@ -1147,23 +1091,16 @@ const startDrag = (handle, e) => {
...
@@ -1147,23 +1091,16 @@ const startDrag = (handle, e) => {
// console.log("拖动开始", currentDragHandle.value);
// console.log("拖动开始", currentDragHandle.value);
// 手动拖动时停止自动播放
// 手动拖动时停止自动播放
// if (isPlaying.value) {
if
(
isPlaying
.
value
)
{
// //console.log("我是拖动开始stopAutoPlay()",isPlaying.value);
stopAutoPlay
();
// //console.log("我走了这里9")
}
// stopAutoPlay();
// }
// 移除旧的事件监听器,防止重复绑定
window
.
removeEventListener
(
'mousemove'
,
handleDrag
);
window
.
removeEventListener
(
'mouseup'
,
endDrag
);
// 添加新的事件监听器
window
.
addEventListener
(
'mousemove'
,
handleDrag
);
window
.
addEventListener
(
'mousemove'
,
handleDrag
);
window
.
addEventListener
(
'mouseup'
,
endDrag
);
window
.
addEventListener
(
'mouseup'
,
endDrag
);
// if(!hasDraged_first_falseToTrue.value) {
// // 添加全局事件监听器
// window.addEventListener('mousemove', handleDrag);
// window.addEventListener('mouseup', endDrag);
// }else{
// ElMessage.warning("已拖动过,请等待执行下次拖动!");
// }
};
};
// 拖动过程中函数回显样式等信息
// 拖动过程中函数回显样式等信息
...
@@ -1315,6 +1252,14 @@ const endDrag = () => {
...
@@ -1315,6 +1252,14 @@ const endDrag = () => {
console
.
log
(
'触发了暂停'
);
console
.
log
(
'触发了暂停'
);
stopAutoPlay
();
stopAutoPlay
();
// 问题4修复:拖动结束后,如果处于实时模式,恢复自动更新定时器
if
(
isDateRangeNotEmpty
.
value
)
{
clearInterval
(
autoUpdateDateRange
.
value
);
autoUpdateDateRange
.
value
=
setInterval
(()
=>
{
autoHandleDateRangeChange
([
new
Date
((
new
Date
(
useAppStoreInstance
.
globalSubsystemSelectedStartTime
[
0
]))).
toISOString
(),
new
Date
((
new
Date
(
useAppStoreInstance
.
globalSubsystemSelectedStartTime
[
1
]))).
toISOString
()]);
},
1000
);
}
};
};
// 重置滑块-重置当天日期
// 重置滑块-重置当天日期
...
@@ -1375,17 +1320,26 @@ const resetclick = () => {
...
@@ -1375,17 +1320,26 @@ const resetclick = () => {
startHandlePercent
.
value
=
0
;
startHandlePercent
.
value
=
0
;
endHandlePercent
.
value
=
100
;
//实时模式滑块为100
endHandlePercent
.
value
=
100
;
//实时模式滑块为100
dateRange
.
value
=
[]
dateRange
.
value
=
[]
// 向ue5发送消息转换成实时模式
// window.ue5("callBackTimeFn", String(JSON.stringify({
// isRealtime: is_flag_isRealtime.value,
// taskCode: String(taskCode_everyChange.value) === "" ? useAppStoreInstance.globalRecordMainSysTaskCode || (useAppStoreInstance.globalSubsystemTaskCode) : String(taskCode_everyChange.value),
// speed: playbackSpeed.value,
// // status: isPlaying.value ? "continue" : "stop",
// })))
// 向后端发送消息转换成实时模式
handleDateRangeChange
(
JSON
.
parse
(
localStorage
.
getItem
(
"isRealtimetime"
)),
true
,
false
,
localStorage
.
getItem
(
"playbackSpeed"
));
handleDateRangeChange
(
JSON
.
parse
(
localStorage
.
getItem
(
"isRealtimetime"
)),
true
,
false
,
localStorage
.
getItem
(
"playbackSpeed"
));
wssOpenHandle
({
wssOpenHandle
({
isRealtime
:
is_flag_isRealtime
.
value
,
isRealtime
:
is_flag_isRealtime
.
value
,
status
:
'continue'
,
//
status: 'continue',
messageTypeFalg
:
tr
ue
,
speed
:
playbackSpeed
.
val
ue
,
taskCode
:
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
),
taskCode
:
useAppStoreInstance
.
globalRecordMainSysTaskCode
||
(
useAppStoreInstance
.
globalSubsystemTaskCode
),
})
})
}
}
const
tempDateTime
=
ref
(
new
Date
(
useAppStoreInstance
.
globalTimeLineEndSelectTime
))
const
tempDateTime
=
ref
(
new
Date
(
useAppStoreInstance
.
globalTimeLineEndSelectTime
))
onMounted
(()
=>
{
onMounted
(()
=>
{
wssMessageHandle
();
// 只在初始化时注册一次消息处理器
wsTimeInstanceFn
();
//接受实时模式下的数据
wsTimeInstanceFn
();
//接受实时模式下的数据
//进入前时间
//进入前时间
tempDateTime
.
value
=
""
tempDateTime
.
value
=
""
...
@@ -1550,7 +1504,7 @@ watch(
...
@@ -1550,7 +1504,7 @@ watch(
}
}
}
}
jiangerTime
.
value
+=
1
;
jiangerTime
.
value
+=
1
;
console
.
log
(
formatDateTime
(
selectedEndTime
.
value
),
preTimeWindowEnd
.
value
,
'时间对比'
);
//
console.log(formatDateTime(selectedEndTime.value), preTimeWindowEnd.value, '时间对比');
//对比时间----判断是否需要停止,拖动后后端连续返回三条数据,第一条是提示,第二第三条是ue用来定位和平滑的数据,这是后不应该停止时间,到56秒后应该接收到下一条数据时
//对比时间----判断是否需要停止,拖动后后端连续返回三条数据,第一条是提示,第二第三条是ue用来定位和平滑的数据,这是后不应该停止时间,到56秒后应该接收到下一条数据时
// if (compareTime(formatDateTime(selectedEndTime.value), preTimeWindowEnd.value)) {
// if (compareTime(formatDateTime(selectedEndTime.value), preTimeWindowEnd.value)) {
...
...
src/store/module/app.js
浏览文件 @
b0dbcc43
...
@@ -12,60 +12,70 @@ import { tr } from "element-plus/es/locales.mjs";
...
@@ -12,60 +12,70 @@ import { tr } from "element-plus/es/locales.mjs";
const
useAppStore
=
defineStore
(
"app"
,
{
const
useAppStore
=
defineStore
(
"app"
,
{
state
:
()
=>
({
state
:
()
=>
({
// 记录时间轴走的时间
// ==================== 时间轴相关 ====================
globalTimeLineEndSelectTime
:
"2025-11-02 00:00:00"
,
globalTimeLineEndSelectTime
:
"2025-11-02 00:00:00"
,
// 时间轴滑块当前选中的结束时间
globalTimeLineStartTime
:
"2025-11-02 00:00:00"
,
globalTimeLineStartTime
:
"2025-11-02 00:00:00"
,
// 时间轴范围开始时间
globalTimeLineEndTime
:
"2025-11-02 00:00:00"
,
globalTimeLineEndTime
:
"2025-11-02 00:00:00"
,
// 时间轴范围结束时间
globalisFromTosub
:
false
,
globalisFromTosub
:
false
,
// 是否从主系统进入子系统
footerTimeHasedSelectTimeToSub
:
false
,
footerTimeHasedSelectTimeToSub
:
false
,
// 判断是否需要发送时间到子系统(返回时恢复状态用)
// ==================== 子系统时间范围 ====================
globalSubsystemSelectedTimeRange
:
[
globalSubsystemSelectedTimeRange
:
[
"Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Tue Nov 04 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Tue Nov 04 2025 00:00:00 GMT+0800 (中国标准时间) "
,
],
],
// 子系统选中时间段范围
globalLeftWssCONTINE
:
false
,
globalLeftWssCONTINE
:
false
,
// WebSocket 连续数据推送状态
// 进入子系统前是否处于实时模式(专门用于返回时恢复,不依赖 globalLeftWssCONTINE)
// 进入子系统前是否处于实时模式(专门用于返回时恢复,不依赖 globalLeftWssCONTINE)
globalIsRealtimeBeforeSub
:
false
,
globalIsRealtimeBeforeSub
:
false
,
globalRecordMainSysTaskCode
:
0
,
globalRecordMainSysTaskCode
:
0
,
// 主系统当前任务码
subSystemTimeLineEndSelectTime
:
"-"
,
// ==================== 子系统时间轴 ====================
subsystemSocket
:
null
,
subSystemTimeLineEndSelectTime
:
"-"
,
// 子系统时间轴滑块结束时间
subsystemSocketContent
:
""
,
subsystemSocket
:
null
,
// 子系统 WebSocket 实例
HeartbeatInterval
:
null
,
subsystemSocketContent
:
""
,
// 子系统 WebSocket 接收内容
isTimeLineShow
:
true
,
HeartbeatInterval
:
null
,
// 心跳定时器实例
islegendShow
:
true
,
//主系统时间下方图例是否隐藏
isSourceLegendShow
:
true
,
// ==================== 面板显示控制 ====================
isdataPanelShow
:
true
,
isTimeLineShow
:
true
,
// 是否显示时间轴
issatelliteOrbitShow
:
false
,
islegendShow
:
true
,
// 主系统时间下方图例是否隐藏
issatelliteBeamShow
:
true
,
isSourceLegendShow
:
true
,
// 源图例是否显示
iscontrolPanelShow
:
true
,
//控制主系统右上角悬浮框,分系统右上角悬浮框
isdataPanelShow
:
true
,
// 数据面板是否显示
issatelliteOrbitShow
:
false
,
// 卫星轨道是否显示
globaleAutoPlay
:
true
,
issatelliteBeamShow
:
true
,
// 卫星波束是否显示
globalIntervalTime
:
3000
,
iscontrolPanelShow
:
true
,
// 控制面板是否显示(主系统/子系统右上角悬浮框)
globalStartWss
:
false
,
globalSatelliteSearchID
:
"4097"
,
//卫星id
// ==================== 播放控制 ====================
globalSubsystemActiveIndex
:
"0"
,
globaleAutoPlay
:
true
,
// 是否自动播放
globalSubsystemIsFastForward
:
false
,
globalIntervalTime
:
3000
,
// 播放间隔时间(毫秒)
globalSubsystemSpeed
:
1
,
globalStartWss
:
false
,
// 是否已启动 WebSocket
globalSubsystemTaskCode
:
0
,
// ==================== 卫星相关 ====================
globalSatelliteSearchID
:
"4097"
,
// 当前选中的卫星 ID
globalSubsystemActiveIndex
:
"0"
,
// 子系统当前激活的索引
globalSubsystemIsFastForward
:
false
,
// 子系统是否处于快进状态
globalSubsystemSpeed
:
1
,
// 子系统播放倍速
globalSubsystemTaskCode
:
0
,
// 子系统当前任务码
globalSubsystemSelectedStartTime
:
[
globalSubsystemSelectedStartTime
:
[
"Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Tue Nov 04 2025 00:00:00 GMT+0800 (中国标准时间) "
,
"Tue Nov 04 2025 00:00:00 GMT+0800 (中国标准时间) "
,
],
],
// 子系统选中时间段(开始时间)
globalSubsystemSelectedEndTime
:
"2025-11-04 00:00:00"
,
//
暂未使用
globalSubsystemSelectedEndTime
:
"2025-11-04 00:00:00"
,
//
子系统选中时间段(结束时间)
globalDisableTimeLine
:
true
,
globalDisableTimeLine
:
true
,
// 是否禁用时间轴
gridPanelData
:
[],
//格网面板
// ==================== 面板数据 ====================
regionPanelData
:
[],
//区域面板
gridPanelData
:
[],
// 格网面板数据
signalSitePanelData
:
[],
//信关站面板
regionPanelData
:
[],
// 区域面板数据
signalSitePanelData
:
[],
// 信关站面板数据
chartConfig
:
{},
//图表配置项,
// ==================== 图表配置 ====================
chartConfig
:
{},
// 图表配置项(模板、粒度、类型等)
currentHotMapCountry
:
null
,
// ==================== 其他 ====================
currentHotMapCountry
:
null
,
// 当前热力图选中的国家
gridInfoList
:
null
,
//全部格网信息列表
gridInfoList
:
null
,
//
全部格网信息列表
}),
}),
actions
:
{
actions
:
{
setGlobalRecordMainSysTaskCode
(
status
)
{
setGlobalRecordMainSysTaskCode
(
status
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论