Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mmc-stl-vue2
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
mmc-stl-vue2
Commits
22b730b2
提交
22b730b2
authored
1月 09, 2025
作者:
温凯
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:切换摇杆为手动时,权限变成内场权限
上级
281fe7c3
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
157 行增加
和
96 行删除
+157
-96
index.vue
...omponents/controlPanel/components/controlBottom/index.vue
+149
-7
index.vue
.../components/controlRight/components/controlList/index.vue
+7
-88
joystick.js
src/components/MMCFlightControlCenter/store/joystick.js
+1
-1
没有找到文件。
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlBottom/index.vue
浏览文件 @
22b730b2
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
<span
class=
"dib"
>
任务结束
</span>
<span
class=
"dib"
>
任务结束
</span>
</div>
</div>
<template
v-if=
"uav.network === 2"
>
<template
v-if=
"uav.network === 2"
>
<div
v-if=
"controlType === 0"
class=
"control-bottom-item"
@
click=
"on
ModeManua
l"
>
<div
v-if=
"controlType === 0"
class=
"control-bottom-item"
@
click=
"on
InfieldContro
l"
>
<img
src=
"./assets/images/auto.svg"
/>
<img
src=
"./assets/images/auto.svg"
/>
<span
class=
"dib"
>
自动
</span>
<span
class=
"dib"
>
自动
</span>
</div>
</div>
...
@@ -44,6 +44,20 @@
...
@@ -44,6 +44,20 @@
</
template
>
</
template
>
<!-- 键盘控制 -->
<!-- 键盘控制 -->
<KeyControl
v-if=
"controlType === 2"
@
close=
"onModeAuto"
></KeyControl>
<KeyControl
v-if=
"controlType === 2"
@
close=
"onModeAuto"
></KeyControl>
<!-- 强制切换外场权限 -->
<el-dialog
title
:visible
.
sync=
"showInfieldControlDialog"
width=
"30%"
:append-to-body=
"true"
custom-class=
"mmc"
style=
"margin-top: 20vh"
>
<div
class=
"endrenwu"
>
<div
class=
"tishiyu"
>
温馨提示
</div>
<div
class=
"queding"
v-if=
"!isAcceleratorMedian"
>
当前油门值为
<span
style=
"color: red"
>
{{ throttleValue.toFixed(2) || 0 }}
</span>
,请调到中位(470-530)
</div>
<div
class=
"queding"
v-if=
"isAcceleratorMedian"
>
摇杆已处于中位,即将切换内场权限
</div>
</div>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -69,17 +83,65 @@ export default {
...
@@ -69,17 +83,65 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
showInfieldControlDialog
:
false
,
//强制切换状态为内场权限 提示框
isAcceleratorMedian
:
false
,
//油门是否在中位
YGPermissionsSend
:
false
,
//摇杆权限更改中
// 摇杆手动控制状态
// 摇杆手动控制状态
manualControlStatus
:
false
,
manualControlStatus
:
false
,
controlType
:
0
,
//控制类型, 0: 自动 1: 摇杆 2: 键盘
controlType
:
0
,
//控制类型, 0: 自动 1: 摇杆 2: 键盘
};
};
},
},
watch
:
{
watch
:
{
// 状态改变时摇杆会切换为手动模式
// 状态改变时摇杆会切换为手动模式
并且抢权限
"on
ModeManualState
"
:
{
"on
InfieldControlFn
"
:
{
handler
(
val
)
{
handler
(
val
)
{
if
(
val
)
{
if
(
val
)
{
this
.
onModeManual
()
this
.
onInfieldControl
()
}
}
},
throttleValue
(
val
)
{
// val = -1 代表摇杆已经建立连接 ,rcState为0 代表当前权限在外场需要去展示摇杆油门值
if
(
val
==
-
1
&&
this
.
uavRealTimeData
.
rcState
==
0
)
{
this
.
showInfieldControlDialog
=
true
;
}
// 判断是否为外场权限
if
(
this
.
uavRealTimeData
.
rcState
==
0
)
{
// 判断油门是否处于中位
if
(
val
>=
470
&&
val
<=
530
)
{
console
.
log
(
this
.
uavRealTimeData
,
val
,
'val'
);
this
.
isAcceleratorMedian
=
true
;
if
(
!
this
.
YGPermissionsSend
)
{
this
.
YGPermissionsSend
=
true
;
// 发送抢权限指令
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/changeYGPermissions"
,
{
callback
:
()
=>
{
},
}
);
setTimeout
(()
=>
{
if
(
this
.
uavRealTimeData
.
rcState
==
1
)
{
// 摇杆切换为手动模式
if
(
!
this
.
manualControlStatus
)
{
this
.
$message
.
success
(
"已切换内场权限,摇杆即将切换为手动模式!"
);
// 切换为是手动模式
this
.
onModeManual
();
}
else
{
this
.
$message
.
success
(
"已切换内场权限,请使用摇杆控制!"
);
}
this
.
showInfieldControlDialog
=
false
;
}
else
{
// this.$message.error("摇杆权限切换失败");
console
.
log
(
"摇杆权限切换失败"
);
}
this
.
YGPermissionsSend
=
false
;
},
2000
);
}
}
else
{
this
.
isAcceleratorMedian
=
false
;
}
}
}
}
},
},
...
@@ -97,10 +159,51 @@ export default {
...
@@ -97,10 +159,51 @@ export default {
immediate
:
true
,
immediate
:
true
,
},
},
computed
:
{
computed
:
{
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"airlineData"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"airlineData"
,
"uavRealTimeData"
]),
...
mapState
(
"MMCFlightControlCenter/joystick"
,
[
"on
ModeManualStat
e"
]),
...
mapState
(
"MMCFlightControlCenter/joystick"
,
[
"on
InfieldControlFn"
,
"throttleValu
e"
]),
},
},
methods
:
{
methods
:
{
network
()
{
let
{
uavRealTimeData
}
=
this
;
let
name
=
null
;
if
(
uavRealTimeData
&&
uavRealTimeData
.
link
)
{
for
(
let
i
=
0
;
i
<
uavRealTimeData
.
link
.
length
;
i
++
)
{
const
k
=
uavRealTimeData
.
link
[
i
];
if
(
k
.
priority
==
2
&&
k
.
using
)
{
return
"专网"
;
}
else
if
(
k
.
priority
==
3
&&
k
.
using
)
{
return
"公网"
;
}
else
if
(
k
.
priority
==
1
&&
k
.
using
)
{
return
"图传"
;
}
}
}
return
name
||
"离线"
;
},
async
onInfieldControl
()
{
// 判断是否已接管
if
(
!
(
await
this
.
isTakeOver
()))
{
this
.
$message
.
warning
(
"请先接管设备"
);
return
;
}
let
networkType
=
this
.
network
()
if
(
networkType
==
'离线'
)
{
return
this
.
$message
.
info
(
'无人机不在线!'
);
}
// 如果是内场权限 且摇杆为手动模式就提示用户使用
if
(
this
.
uavRealTimeData
.
rcState
==
1
&&
this
.
manualControlStatus
)
{
this
.
$message
.
success
(
"当前处于内场模式,请使用摇杆控制!"
);
}
else
{
// 否则如果摇杆是手动模式没内场权限,则展示油门弹窗,油门值为中位时发起抢权限指令
if
(
this
.
manualControlStatus
)
{
this
.
showInfieldControlDialog
=
true
;
}
else
{
this
.
$message
.
success
(
"摇杆即将切换为手动模式,请稍等!"
);
// 切换为手动模式
this
.
onModeManual
();
}
}
},
/**
/**
* 接管判断, 机库模块中不需要判断接管
* 接管判断, 机库模块中不需要判断接管
*/
*/
...
@@ -189,7 +292,6 @@ export default {
...
@@ -189,7 +292,6 @@ export default {
return
;
return
;
}
}
this
.
$message
.
success
(
"切换手动模式中请稍后!"
);
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/modeManual"
,
{
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/modeManual"
,
{
callback
:
(
isOk
)
=>
{
callback
:
(
isOk
)
=>
{
if
(
isOk
)
{
}
if
(
isOk
)
{
}
...
@@ -344,4 +446,43 @@ export default {
...
@@ -344,4 +446,43 @@ export default {
}
}
}
}
}
}
.el-dialog__header
{
margin-left
:
0
;
padding
:
0
;
background
:
#3c3c3c
;
}
.el-dialog__body
{
padding
:
0
;
z-index
:
2023
!important
;
}
.el-dialog
{
z-index
:
2022
!important
;
background
:
transparent
!important
;
}
.endrenwu
{
width
:
100%
;
height
:
177px
;
border
:
1px
solid
#70daf9
;
background
:
rgba
(
9
,
32
,
87
,
0.7
)
!important
;
}
.tishiyu
{
color
:
#92d9ff
;
font-size
:
18px
;
margin
:
30px
0
0
0
;
text-align
:
center
;
width
:
100%
;
}
.queding
{
color
:
#92d9ff
;
text-align
:
center
;
width
:
100%
;
font-size
:
14px
;
margin
:
30px
0
0
0
;
}
</
style
>
</
style
>
\ No newline at end of file
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlRight/components/controlList/index.vue
浏览文件 @
22b730b2
...
@@ -73,27 +73,7 @@
...
@@ -73,27 +73,7 @@
</div>
</div>
</div>
</div>
</el-dialog>
</el-dialog>
<!-- 强制切换外场权限 -->
<el-dialog
title
:visible
.
sync=
"showInfieldControlDialog"
width=
"30%"
:append-to-body=
"true"
custom-class=
"mmc"
style=
"margin-top: 20vh"
>
<div
class=
"endrenwu"
>
<div
class=
"tishiyu"
>
温馨提示
</div>
<div
class=
"queding"
v-if=
"!isAcceleratorMedian"
>
当前油门值为
<span
style=
"color: red"
>
{{
throttleValue
.
toFixed
(
2
)
||
0
}}
</span
>
,请调到中位(470-530)
</div>
<div
class=
"queding"
v-if=
"isAcceleratorMedian"
>
摇杆已处于中位,即将切换内场权限
</div>
</div>
</el-dialog>
<el-dialog
<el-dialog
title
title
:visible
.
sync=
"guideFlightShow"
:visible
.
sync=
"guideFlightShow"
...
@@ -159,11 +139,11 @@ export default {
...
@@ -159,11 +139,11 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
isAcceleratorMedian
:
false
,
//油门是否在中位
//
isAcceleratorMedian: false, //油门是否在中位
YGPermissionsSend
:
false
,
//摇杆权限更改中
//
YGPermissionsSend: false, //摇杆权限更改中
safetyNotice
:
false
,
//安全降落弹框
safetyNotice
:
false
,
//安全降落弹框
chargerPower
:
true
,
chargerPower
:
true
,
showInfieldControlDialog
:
false
,
//强制切换状态为内场权限 提示框
flySpeed
:
6
,
//指点飞行设置
flySpeed
:
6
,
//指点飞行设置
maxSpeed
:
false
,
maxSpeed
:
false
,
showLogger
:
false
,
//显示日志
showLogger
:
false
,
//显示日志
...
@@ -182,53 +162,9 @@ export default {
...
@@ -182,53 +162,9 @@ export default {
]),
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"userInfo"
,
"cesiumViewer"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"userInfo"
,
"cesiumViewer"
]),
...
mapState
(
"MMCFlightControlCenter/joystick"
,
[
...
mapState
(
"MMCFlightControlCenter/joystick"
,
[
"throttleValue"
,
"manualControlStatus"
,
"manualControlStatus"
,
]),
]),
},
},
watch
:
{
throttleValue
(
val
)
{
if
(
val
==
-
1
)
{
this
.
showInfieldControlDialog
=
true
;
}
// 判断是否为外场权限
if
(
this
.
uavRealTimeData
.
rcState
==
0
)
{
// 判断油门是否处于中位
if
(
val
>=
470
&&
val
<=
530
)
{
this
.
isAcceleratorMedian
=
true
;
if
(
!
this
.
YGPermissionsSend
)
{
this
.
YGPermissionsSend
=
true
;
// 发送抢权限指令
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/changeYGPermissions"
,
{
callback
:
()
=>
{},
}
);
setTimeout
(()
=>
{
if
(
this
.
uavRealTimeData
.
rcState
==
1
)
{
// 摇杆切换为手动模式
if
(
!
this
.
manualControlStatus
)
{
this
.
$message
.
success
(
"已切换内场权限,摇杆即将切换为手动模式!"
);
this
.
changeModeManualState
();
}
else
{
this
.
$message
.
success
(
"已切换内场权限,请使用摇杆控制!"
);
}
this
.
showInfieldControlDialog
=
false
;
}
else
{
// this.$message.error("摇杆权限切换失败");
console
.
log
(
"摇杆权限切换失败"
);
}
this
.
YGPermissionsSend
=
false
;
},
2000
);
}
}
else
{
this
.
isAcceleratorMedian
=
false
;
}
}
},
},
beforeDestroy
()
{
beforeDestroy
()
{
if
(
Point
)
{
if
(
Point
)
{
window
.
viewer
.
entities
.
remove
(
Point
);
window
.
viewer
.
entities
.
remove
(
Point
);
...
@@ -313,9 +249,9 @@ export default {
...
@@ -313,9 +249,9 @@ export default {
this
.
safetyNotice
=
false
;
this
.
safetyNotice
=
false
;
this
.
land
();
this
.
land
();
},
},
change
ModeManualState
()
{
change
OnInfieldControlFn
()
{
this
.
$store
.
commit
(
"MMCFlightControlCenter/joystick/setState"
,
{
this
.
$store
.
commit
(
"MMCFlightControlCenter/joystick/setState"
,
{
key
:
"on
ModeManualState
"
,
key
:
"on
InfieldControlFn
"
,
value
:
new
Date
().
getTime
(),
value
:
new
Date
().
getTime
(),
});
});
},
},
...
@@ -323,24 +259,7 @@ export default {
...
@@ -323,24 +259,7 @@ export default {
* 内场控制
* 内场控制
*/
*/
async
onInfieldControl
()
{
async
onInfieldControl
()
{
// 判断是否已接管
this
.
changeOnInfieldControlFn
()
if
(
!
(
await
this
.
isTake
()))
{
return
;
}
if
(
this
.
online
===
0
)
return
this
.
$message
.
warning
(
"处于离线状态,不可操作!"
);
// 自动切换摇杆权限
if
(
this
.
uavRealTimeData
.
rcState
==
1
)
{
this
.
$message
.
success
(
"当前处于内场模式,请使用摇杆控制!"
);
}
else
{
// 如果摇杆是手动模式,则展示油门弹窗
if
(
this
.
manualControlStatus
)
{
this
.
showInfieldControlDialog
=
true
;
}
else
{
this
.
$message
.
success
(
"摇杆即将切换为手动模式,请稍等!"
);
this
.
changeModeManualState
();
}
}
},
},
/**
/**
* cesium添加目标点
* cesium添加目标点
...
...
src/components/MMCFlightControlCenter/store/joystick.js
浏览文件 @
22b730b2
const
state
=
{
const
state
=
{
throttleValue
:
0
,
//油门值
throttleValue
:
0
,
//油门值
manualControlStatus
:
false
,
//是否手动控制
manualControlStatus
:
false
,
//是否手动控制
on
ModeManualState
:
null
,
//状态改变时摇杆会切换为手动模式
on
InfieldControlFn
:
null
,
//状态改变时摇杆会切换为手动模式并抢权限
};
};
const
mutations
=
{
const
mutations
=
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论