Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mmc-stl-vue2
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
mmc-stl-vue2
Commits
6a04cad8
提交
6a04cad8
authored
12月 03, 2024
作者:
翁进城
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 增加任务库
上级
fdc94ed2
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
210 行增加
和
92 行删除
+210
-92
App.vue
iframe/src/App.vue
+2
-2
index.vue
...eft/components/airwayList/components/normalTask/index.vue
+66
-50
index.vue
...wayList/components/timedTask/components/taskAdd/index.vue
+57
-4
index.vue
...el/components/controlLeft/components/airwayList/index.vue
+66
-8
index.vue
.../components/controlPanel/components/controlLeft/index.vue
+2
-6
index.vue
src/components/MMCFlightControlCenter/index.vue
+7
-6
joystick.js
src/components/MMCFlightControlCenter/mixins/joystick.js
+9
-15
index.js
src/components/MMCFlightControlCenter/store/index.js
+1
-1
没有找到文件。
iframe/src/App.vue
浏览文件 @
6a04cad8
...
...
@@ -8,7 +8,7 @@
:scene=
"scene"
:useSTLAirway=
"useSTLAirway"
:useTimedTask=
"useTimedTask"
:use
Airway=
"useAirway
"
:use
Task=
"useTask
"
@
tokenInvalid=
"dispatchEvent('tokenInvalid')"
@
refreshToken=
"dispatchEvent('refreshToken', $event)"
@
uavChange=
"dispatchEvent('uavChange', $event)"
...
...
@@ -50,7 +50,7 @@ export default {
airwayPageChangeCB
:
null
,
//航线翻页时回调
airwayGetCB
:
null
,
//获取航线数据回调
taskListGetCB
:
null
,
//获取任务数据回调
use
Airway
:
true
,
//使用航线而不使用任务起飞
use
Task
:
false
,
//使用任务进行航线选择
callbackList
:
{},
};
},
...
...
src/components/MMCFlightControlCenter/components/hangar/components/controlPanel/components/controlLeft/components/airwayList/components/normalTask/index.vue
浏览文件 @
6a04cad8
<
template
>
<div
class=
"taskListBox"
>
<el-form
class=
"task-main"
label-width=
"70px"
>
<el-form-item
label=
"任务库"
v-if=
"useTask"
>
<el-select
v-model=
"selectedTaskId"
clearable
>
<el-option
v-for=
"(item , i) in taskList"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"航线选择"
>
<el-select
v-model=
"selectedAirwayId"
>
<el-option
v-for=
"(item , i) in airwayList"
:label=
"item.name"
:value=
"item.id"
></el-option>
...
...
@@ -32,16 +37,31 @@ export default {
inject
:
[
"rootNode"
,
"bus"
],
data
()
{
return
{
//航线列表
airwayList
:
[],
// 选择的航线
selectedAirwayId
:
""
,
airwayList
:
[],
//航线列表
selectedAirwayId
:
""
,
// 选择的航线
taskList
:
[],
//任务列表
selectedTaskId
:
""
,
//选择的任务
airwaySelectDisabled
:
false
,
//选择任务后, 禁用航线选择
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"useSTLAirway"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"useSTLAirway"
,
"useTask"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"uavRealTimeData"
]),
...
mapState
(
"MMCFlightControlCenter/hangar"
,
[
"hangar"
]),
// 选择的任务
selectedTask
()
{
let
find
=
this
.
taskList
.
find
((
item
)
=>
{
return
item
.
id
==
this
.
selectedTaskId
;
});
if
(
find
)
{
return
find
;
}
else
{
return
{
name
:
""
,
id
:
-
1
,
};
}
},
showAirwayEdit
:
{
get
()
{
return
this
.
$store
.
state
.
MMCFlightControlCenter
.
showAirwayEdit
;
...
...
@@ -69,6 +89,15 @@ export default {
},
},
watch
:
{
selectedTask
()
{
if
(
this
.
selectedTask
.
id
!==
-
1
)
{
this
.
airwaySelectDisabled
=
true
;
}
else
{
this
.
airwaySelectDisabled
=
false
;
}
// 任务改变则修改航线选择为任务中的航线
this
.
selectedAirwayId
=
this
.
selectedTask
?.
airwayId
;
},
selectedAirway
()
{
this
.
clearAirwayEntities
();
if
(
this
.
selectedAirway
.
id
!==
-
1
)
{
...
...
@@ -81,55 +110,18 @@ export default {
}
catch
(
e
)
{
console
.
log
(
"绘制航线失败"
,
e
);
}
}
else
{
if
(
this
.
selectedTaskId
&&
this
.
selectedAirwayId
==
""
)
{
this
.
$message
.
warning
(
"未找到相应的航线"
);
}
this
.
selectedAirwayId
=
""
;
this
.
airwaySelectDisabled
=
false
;
}
},
},
async
created
()
{
this
.
bus
.
$on
(
"startTask"
,
this
.
onStartTask
);
/* if (this.useSTLAirway) {
let res = await Control_API.getUavRouteList({
pageNo: 1,
pageSize: 100,
nestId: this.hangar.id,
});
if (res?.code === 0) {
let airwayList = [];
for (let i = 0; i < res.data.list.length; i++) {
let item = res.data.list[i];
let flightCourseJson;
try {
flightCourseJson = JSON.parse(item.flightCourseJson);
} catch (e) {
console.log(e);
}
// 转换成飞控中心能接受的数据协议
let content = flightCourseJson
? await this.$store.dispatch(
"MMCFlightControlCenter/apiPointsToFKZXPoints",
{
list: flightCourseJson?.linePointSaveReqVOS || [],
actionListKey: "pointActionSaveReqVOS",
}
)
: null;
airwayList.push({
name: item.flightName,
id: item.id,
content: content,
});
}
this.airwayList = airwayList;
}
} else {
this.rootNode.$emit("airwayListGet", {
pageNo: this.airwayData.pageNo,
pageSize: this.airwayData.pageSize,
callback: (data) => {
this.airwayList = airwayData?.records || [];
},
});
} */
await
this
.
getTaskList
();
await
this
.
getAirwayList
();
// 获取正在飞行的航线
console
.
log
(
'当前飞行状态'
,
this
.
uavRealTimeData
?.
isFlying
);
...
...
@@ -154,7 +146,31 @@ export default {
]),
...
mapActions
(
"MMCFlightControlCenter/hangar"
,
[
"isTakeOver"
]),
/**
* 更新任务列表
* 获取任务列表
*/
getTaskList
(
id
)
{
return
new
Promise
((
resolve
)
=>
{
console
.
log
(
"getTaskList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"taskListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
type
:
0
,
isHangar
:
true
,
hangar
:
null
,
callback
:
(
res
)
=>
{
this
.
taskList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedTaskId
=
id
;
}
resolve
();
});
},
});
});
},
/**
* 获取航线列表
*/
getAirwayList
(
id
)
{
return
new
Promise
((
resolve
)
=>
{
...
...
src/components/MMCFlightControlCenter/components/hangar/components/controlPanel/components/controlLeft/components/airwayList/components/timedTask/components/taskAdd/index.vue
浏览文件 @
6a04cad8
...
...
@@ -21,7 +21,24 @@
value-format=
"yyyy-MM-dd HH:mm:ss"
:picker-options=
"pickerOptions"
></el-date-picker>
<el-select
v-model=
"item.airwayId"
size=
"mini"
popper-class=
"mmc"
placeholder=
"请选择航线"
>
<el-select
v-model=
"item.taskId"
clearable
size=
"mini"
popper-class=
"mmc"
@
change=
"onTaskChange(item)"
placeholder=
"请选择任务"
v-if=
"useTask"
>
<el-option
v-for=
"(item , i) in taskList"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
v-model=
"item.airwayId"
size=
"mini"
popper-class=
"mmc"
placeholder=
"请选择航线"
:disabled=
"!!item.taskId"
>
<el-option
:label=
"item1.name"
:value=
"item1.id"
v-for=
"(item1, index) in airwayList"
></el-option>
</el-select>
<el-tooltip
content=
"删除"
placement=
"top"
>
...
...
@@ -57,7 +74,8 @@ export default {
list
:
[
/* {
time: '',
airwayId: ''
airwayId: '',
taskId: '',
} */
],
showMore
:
false
,
...
...
@@ -69,11 +87,12 @@ export default {
},
airwayList
:
[],
//航线列表
confirmLoading
:
false
,
taskList
:
[],
//任务列表
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter/hangar"
,
[
"hangar"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"airwayEntities"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"airwayEntities"
,
"useTask"
]),
},
mounted
()
{
this
.
rootNode
.
$emit
(
"airwayListGet"
,
{
...
...
@@ -84,6 +103,17 @@ export default {
this
.
airwayList
=
data
?.
records
||
[];
},
});
this
.
rootNode
.
$emit
(
"taskListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
type
:
1
,
isHangar
:
true
,
hangar
:
null
,
callback
:
(
res
)
=>
{
this
.
taskList
=
res
?.
records
||
[];
},
});
},
methods
:
{
...
mapActions
(
"MMCFlightControlCenter"
,
[
...
...
@@ -168,6 +198,29 @@ export default {
});
// 根节点发送机库任务新增事件
}
},
/**
* 任务更改事件
*/
onTaskChange
(
item
)
{
let
find
=
this
.
taskList
.
find
((
item1
)
=>
{
return
item1
.
id
==
item
.
taskId
;
});
if
(
find
)
{
let
findAirway
=
this
.
airwayList
.
find
((
item1
)
=>
{
return
item1
.
id
===
find
.
airwayId
;
});
if
(
findAirway
)
{
item
.
airwayId
=
find
.
airwayId
;
return
;
}
}
// 找不到航线
item
.
airwayId
=
""
;
item
.
taskId
=
""
;
this
.
$message
.
warning
(
"未找到相应的航线"
);
},
},
};
</
script
>
...
...
@@ -178,7 +231,7 @@ export default {
position
:
absolute
;
top
:
-5px
;
left
:
550px
;
width
:
520px
;
min-
width
:
520px
;
z-index
:
1
;
display
:
flex
;
flex-direction
:
column
;
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlLeft/components/airwayList/index.vue
浏览文件 @
6a04cad8
...
...
@@ -7,8 +7,13 @@
</div>
</div>
<el-form
class=
"task-main"
label-width=
"70px"
>
<el-form-item
label=
"任务库"
v-if=
"useTask"
>
<el-select
v-model=
"selectedTaskId"
clearable
>
<el-option
v-for=
"(item , i) in taskList"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"航线选择"
>
<el-select
v-model=
"selectedAirwayId"
>
<el-select
v-model=
"selectedAirwayId"
:disabled=
"airwaySelectDisabled"
clearable
>
<el-option
v-for=
"(item , i) in airwayList"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -38,15 +43,30 @@ export default {
inject
:
[
"rootNode"
,
"bus"
],
data
()
{
return
{
//航线列表
airwayList
:
[],
// 选择的航线
selectedAirwayId
:
""
,
airwayList
:
[],
//航线列表
selectedAirwayId
:
""
,
// 选择的航线
taskList
:
[],
//任务列表
selectedTaskId
:
""
,
//选择的任务
airwaySelectDisabled
:
false
,
//选择任务后, 禁用航线选择
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"useSTLAirway"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"useSTLAirway"
,
"useTask"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
]),
// 选择的任务
selectedTask
()
{
let
find
=
this
.
taskList
.
find
((
item
)
=>
{
return
item
.
id
==
this
.
selectedTaskId
;
});
if
(
find
)
{
return
find
;
}
else
{
return
{
name
:
""
,
id
:
-
1
,
};
}
},
// 选择的航线
selectedAirway
()
{
let
find
=
this
.
airwayList
.
find
((
item
)
=>
{
...
...
@@ -91,6 +111,15 @@ export default {
this
.
listCollapse
=
true
;
}
},
selectedTask
()
{
if
(
this
.
selectedTask
.
id
!==
-
1
)
{
this
.
airwaySelectDisabled
=
true
;
}
else
{
this
.
airwaySelectDisabled
=
false
;
}
// 任务改变则修改航线选择为任务中的航线
this
.
selectedAirwayId
=
this
.
selectedTask
?.
airwayId
;
},
selectedAirway
()
{
this
.
clearAirwayEntities
();
if
(
this
.
selectedAirway
.
id
!==
-
1
)
{
...
...
@@ -104,15 +133,23 @@ export default {
}
catch
(
e
)
{
console
.
log
(
"绘制航线失败"
,
e
);
}
}
else
{
if
(
this
.
selectedTaskId
&&
this
.
selectedAirwayId
==
""
)
{
this
.
$message
.
warning
(
"未找到相应的航线"
);
}
this
.
selectedAirwayId
=
""
;
this
.
airwaySelectDisabled
=
false
;
}
},
},
async
created
()
{
this
.
bus
.
$on
(
"startTask"
,
this
.
onStartTask
);
this
.
bus
.
$on
(
"refreshAirway"
,
this
.
getAirwayList
);
await
this
.
getTaskList
();
await
this
.
getAirwayList
();
// 获取正在飞行的航线
console
.
log
(
"当前飞行状态"
,
this
.
uavRealTimeData
?.
isFlying
);
console
.
log
(
this
.
useTask
);
if
(
this
.
uav
&&
this
.
uavRealTimeData
?.
isFlying
)
{
let
res
=
await
TaskInfo
.
getTaskInfoRecord
({
deviceId
:
this
.
uav
.
deviceId
,
...
...
@@ -142,7 +179,28 @@ export default {
]),
...
mapActions
(
"MMCFlightControlCenter/uav"
,
[
"isTakeOver"
]),
/**
* 更新任务列表
* 获取任务列表
*/
getTaskList
(
id
)
{
return
new
Promise
((
resolve
)
=>
{
console
.
log
(
"getTaskList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"taskListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
callback
:
(
res
)
=>
{
this
.
taskList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedTaskId
=
id
;
}
resolve
();
});
},
});
});
},
/**
* 获取航线列表
*/
getAirwayList
(
id
)
{
return
new
Promise
((
resolve
)
=>
{
...
...
@@ -209,7 +267,7 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.taskListBox
{
height
:
200px
;
min-
height
:
200px
;
width
:
416px
;
background
:
#222222
;
border-radius
:
12px
;
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlLeft/index.vue
浏览文件 @
6a04cad8
...
...
@@ -4,28 +4,24 @@
<img
class=
"left-bar-item__icon"
src=
"./assets/images/task.svg"
/>
<div
class=
"left-bar-item__text"
>
任务
</div>
</div>
<TaskList
class=
"task-list"
v-if=
"!useAirway && openTask"
></TaskList>
<AirwayList
class=
"task-list"
v-if=
"useAirway && openTask"
></AirwayList>
<AirwayList
class=
"task-list"
></AirwayList>
<VideoMapSwitch
ref=
"videoMapSwitch"
></VideoMapSwitch>
</div>
</
template
>
<
script
>
import
{
mapState
}
from
"vuex"
;
import
TaskList
from
"./components/taskList"
;
import
AirwayList
from
"./components/airwayList"
;
import
VideoMapSwitch
from
'./components/videoMapSwitch'
;
export
default
{
name
:
"ControlLeft"
,
components
:
{
TaskList
,
AirwayList
,
VideoMapSwitch
},
data
()
{
return
{
openTask
:
true
,
//打开任务
openAIList
:
false
,
//打开AI列表
openTraffic
:
false
,
//打开交通指引
openFace
:
false
,
//打开人脸识别
...
...
@@ -34,7 +30,7 @@ export default {
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"useAirway"
]),
...
mapState
(
"MMCFlightControlCenter"
,
[]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
]),
// 收起列表按钮
listCollapse
:
{
...
...
src/components/MMCFlightControlCenter/index.vue
浏览文件 @
6a04cad8
...
...
@@ -68,10 +68,11 @@ export default {
type
:
Boolean
,
default
:
false
,
},
// 使用航线而不使用任务起飞
useAirway
:
{
// useAirway
// 使用任务
useTask
:
{
type
:
Boolean
,
default
:
tru
e
,
default
:
fals
e
,
},
userInfo
:
{
type
:
Object
,
...
...
@@ -170,11 +171,11 @@ export default {
});
},
},
use
Airway
:
{
use
Task
:
{
immediate
:
true
,
handler
(
newVal
)
{
this
.
$store
.
commit
(
"MMCFlightControlCenter/setState"
,
{
key
:
"use
Airway
"
,
key
:
"use
Task
"
,
value
:
newVal
,
});
},
...
...
@@ -520,7 +521,7 @@ export default {
.el-select-dropdown__empty
{
background
:
#02173d
;
border
:
1px
solid
#
315ec7
;
border
:
1px
solid
#
4b4b4b
;
}
}
...
...
src/components/MMCFlightControlCenter/mixins/joystick.js
浏览文件 @
6a04cad8
...
...
@@ -24,17 +24,16 @@ export default {
return
this
.
mountCtrlList
[
this
.
selectMount
?.
gimbalName
];
},
},
inject
:
[
"uav_mqtt_fn"
],
watch
:
{
str
:
function
(
val
)
{
this
.
uav_mqtt_fn
(
{
this
.
$store
.
dispatch
(
"MMCMQTT/publish"
,
{
topic
:
"PX4/OBTAIN/"
+
this
.
uav
.
deviceId
,
data
:
{
type
:
513
,
data
:
val
,
},
"wrj"
,
this
.
uav
.
control
.
device
);
callback
()
{},
});
},
},
beforeDestroy
()
{
...
...
@@ -51,9 +50,7 @@ export default {
let
topic
=
`
${
uavCate
}
/OBTAIN/
${
this
.
uav
.
deviceId
}
`
;
this
.
wsJoystick
=
new
WebSocket
(
"ws://127.0.0.1:8802"
);
this
.
wsJoystick
.
onopen
=
()
=>
{
console
.
log
(
"joystick.js 连接上 ws://127.0.0.1:8802"
);
console
.
log
(
"joystick.js 连接上 ws://127.0.0.1:8802"
);
this
.
wsJoystick
.
send
(
JSON
.
stringify
({
type
:
2003
,
...
...
@@ -75,17 +72,14 @@ export default {
if
(
obj
.
type
==
518
)
{
}
let
data
=
JSON
.
parse
(
event
.
currentTarget
.
result
).
data
;
window
.
$log
(
"joystick.js message"
,
data
);
window
.
$log
(
"joystick.js message"
,
data
);
let
y
=
data
.
channel03
;
//油门值 0-1000
// console.log(data.channel03,data,"yyyyyyyy");
if
(
y
||
y
==
0
)
{
this
.
$store
.
commit
(
"MMCFlightControlCenter/joystick/setState"
,
{
key
:
'throttleValue'
,
value
:
y
key
:
"throttleValue"
,
value
:
y
,
});
}
if
(
this
.
mountCtrl
)
{
...
...
src/components/MMCFlightControlCenter/store/index.js
浏览文件 @
6a04cad8
...
...
@@ -41,7 +41,7 @@ export default {
airwayEntities
:
[],
//航线实体集合, 元素为new Cesium.EntityCollection()创建
useSTLAirway
:
true
,
//是否使用标准航线库
useTimedTask
:
false
,
//是否使用定时任务
use
Airway
:
true
,
//使用航线而不使用任务起飞
use
Task
:
false
,
//使用任务进行航线选择
baseUrl
:
''
,
//api请求的base url
wsUrl
:
''
,
//websocket的url
mqttUrl
:
''
,
//无人机的mqtt地址
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论