Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mmc-stl-vue2
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
mmc-stl-vue2
Commits
307fa50b
提交
307fa50b
authored
8月 28, 2024
作者:
翁进城
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:
1. 删除无用文件 2. 刷新恢复当前任务航线 3. 挂载录像修正
上级
234bd52c
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
144 行增加
和
739 行删除
+144
-739
index.vue
...ponents/MMCDataTransferPanel/components/battery/index.vue
+11
-4
taskInfo.js
...components/MMCFlightControlCenter/api/modules/taskInfo.js
+18
-0
index.vue
...eft/components/airwayList/components/normalTask/index.vue
+30
-16
index.vue
...el/components/controlLeft/components/player/uav/index.vue
+22
-1
index.vue
...el/components/controlLeft/components/airwayList/index.vue
+30
-47
index.vue
...lPanel/components/controlRight/components/mount/index.vue
+3
-3
takeOverRecords.vue
...anel/components/controlTop/components/takeOverRecords.vue
+1
-1
index.js
...ons/components/player/components/carTraffic/data/index.js
+0
-7
index.vue
...cations/components/player/components/carTraffic/index.vue
+0
-267
index.js
...cations/components/player/components/faceai/data/index.js
+0
-17
index.vue
...pplications/components/player/components/faceai/index.vue
+0
-335
index.vue
...ications/components/player/components/pointList/index.vue
+18
-5
index.vue
...er/components/uavApplications/components/player/index.vue
+1
-34
utils.js
...onents/uavApplications/components/player/methods/utils.js
+0
-0
uav.js
src/components/MMCFlightControlCenter/store/uav.js
+10
-2
没有找到文件。
src/components/MMCDataTransferPanel/components/battery/index.vue
浏览文件 @
307fa50b
<!-- 飞控中心电池-->
<
template
>
<div
class=
"cpt-observe-mspace-dashboard-battery"
>
<div
class=
"cpt-observe-mspace-dashboard-battery"
v-if=
"isShow"
>
<div
class=
"battery-inner"
v-for=
"(item,index) in _batteryList"
:key=
"index"
>
<div
class=
"dec mr9 f12"
>
{{
index
+
1
}}
</div>
<div
class=
"size-wrap"
>
...
...
@@ -8,13 +8,13 @@
<div
class=
"size-inner"
>
<div
class=
"dianchigai"
></div>
<div
v-if=
"item.statusType !=3"
v-if=
"item.statusType !=
=
3"
class=
"size-inner-box"
:style=
"`height: $
{item.chargeRemaining || 100}%; ${setColor(item.chargeRemaining || 100)}`"
>
</div>
</div>
</div>
<span
v-if=
"item.statusType == 3"
class=
"size__text"
>
{{
"已关机"
}}
</span>
<span
v-if=
"item.statusType ==
=
3"
class=
"size__text"
>
{{
"已关机"
}}
</span>
<span
v-else
class=
"size__text"
>
{{
item
.
chargeRemaining
||
100
}}
%
</span>
</div>
...
...
@@ -53,10 +53,17 @@ export default {
},
},
data
()
{
return
{};
return
{
isShow
:
true
,
};
},
computed
:
{
_batteryList
()
{
console
.
log
(
'电池信息'
,
this
.
batteryList
)
this
.
isShow
=
false
;
this
.
$nextTick
(()
=>
{
this
.
isShow
=
true
;
})
if
(
this
.
batteryList
.
length
>
0
)
{
return
this
.
batteryList
;
}
else
{
...
...
src/components/MMCFlightControlCenter/api/modules/taskInfo.js
浏览文件 @
307fa50b
...
...
@@ -11,4 +11,22 @@ export default class TaskInfo {
data
});
}
// 获取航线
static
getRoute
(
data
)
{
return
request
({
url
:
`/admin-api/bpm/task-info/getreoute`
,
method
:
"post"
,
data
});
}
// 获取任务信息
static
getTaskInfoRecord
(
data
)
{
return
request
({
url
:
`/admin-api/bpm/task-info/getTaskInfoRecord`
,
method
:
"post"
,
data
});
}
}
src/components/MMCFlightControlCenter/components/hangar/components/controlPanel/components/controlLeft/components/airwayList/components/normalTask/index.vue
浏览文件 @
307fa50b
...
...
@@ -19,7 +19,7 @@
<
script
>
import
{
Utils
}
from
"../../../../../../../../../../lib/cesium"
;
import
{
mapState
,
mapActions
}
from
"vuex"
;
import
{
Control_API
}
from
"../../../../../../../../../../api"
;
import
{
Control_API
,
TaskInfo
}
from
"../../../../../../../../../../api"
;
import
AirwayEdit
from
"./components/airwayEdit"
;
const
airwayEntities
=
[];
// 航线实体
...
...
@@ -40,7 +40,7 @@ export default {
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"useSTLAirway"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"uavRealTimeData"
]),
...
mapState
(
"MMCFlightControlCenter/hangar"
,
[
"hangar"
]),
showAirwayEdit
:
{
get
()
{
...
...
@@ -129,7 +129,18 @@ export default {
},
});
} */
this
.
getAirwayList
();
await
this
.
getAirwayList
();
// 获取正在飞行的航线
console
.
log
(
'当前飞行状态'
,
this
.
uavRealTimeData
.
isFlying
);
if
(
this
.
uav
&&
this
.
uavRealTimeData
.
isFlying
)
{
let
res
=
await
TaskInfo
.
getTaskInfoRecord
({
deviceId
:
this
.
uav
.
deviceId
,
});
if
(
res
.
code
===
0
)
{
this
.
selectedAirwayId
=
res
.
data
.
reouteId
;
}
}
},
beforeDestroy
()
{
this
.
bus
.
$off
(
"startTask"
,
this
.
onStartTask
);
...
...
@@ -146,19 +157,22 @@ export default {
* 更新任务列表
*/
getAirwayList
(
id
)
{
console
.
log
(
"getAirwayList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"airwayListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
hangar
:
this
.
hangar
,
callback
:
(
res
)
=>
{
this
.
airwayList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedAirwayId
=
id
;
}
});
},
return
new
Promise
((
resolve
)
=>
{
console
.
log
(
"getAirwayList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"airwayListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
hangar
:
this
.
hangar
,
callback
:
(
res
)
=>
{
this
.
airwayList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedAirwayId
=
id
;
}
resolve
();
});
},
});
});
},
/**
...
...
src/components/MMCFlightControlCenter/components/hangar/components/controlPanel/components/controlLeft/components/player/uav/index.vue
浏览文件 @
307fa50b
<
template
>
<div>
<Player
ref=
"player"
@
close=
"$emit('close')"
:url=
"selectUrl"
:name=
"name"
:label=
"label"
style=
"height: 200px;"
/>
<Player
ref=
"player"
@
close=
"$emit('close')"
:url=
"selectUrl"
:name=
"name"
:label=
"label"
style=
"height: 200px;"
/>
<el-select
v-model=
"selectUrl"
class=
"select"
popper-class=
"mmc"
>
<el-option
v-for=
"item in streamOptions"
...
...
@@ -110,6 +117,20 @@ export default {
}
},
},
selectUrl() {
// 记录用的流是否为清流
if (this.selectUrl.toLowerCase().includes("pzsp://")) {
this.$store.commit("MMCFlightControlCenter/uav/setState", {
key: "isQingLiu",
value: true,
});
} else {
this.$store.commit("MMCFlightControlCenter/uav/setState", {
key: "isQingLiu",
value: false,
});
}
},
},
mounted() {
this.selectUrl = this.streamOptions[0]?.url || "";
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlLeft/components/airwayList/index.vue
浏览文件 @
307fa50b
...
...
@@ -25,7 +25,7 @@
<
script
>
import
{
Utils
}
from
"../../../../../../../../lib/cesium"
;
import
{
mapState
,
mapActions
}
from
"vuex"
;
import
{
Control_API
}
from
"../../../../../../../../api"
;
import
{
Control_API
,
TaskInfo
}
from
"../../../../../../../../api"
;
import
AirwayEdit
from
"./components/airwayEdit"
;
const
airwayEntities
=
[];
// 航线实体
...
...
@@ -86,8 +86,8 @@ export default {
},
},
watch
:
{
showAirwayEdit
(
newVal
){
if
(
newVal
)
{
showAirwayEdit
(
newVal
)
{
if
(
newVal
)
{
this
.
listCollapse
=
true
;
}
},
...
...
@@ -109,42 +109,22 @@ export default {
},
async
created
()
{
this
.
bus
.
$on
(
"startTask"
,
this
.
onStartTask
);
/* let res = await Control_API.getUavRouteList({
pageNo: 1,
pageSize: 100,
});
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
.
bus
.
$on
(
"refreshAirway"
,
this
.
getAirwayList
);
await
this
.
getAirwayList
();
// 获取正在飞行的航线
console
.
log
(
"当前飞行状态"
,
this
.
uavRealTimeData
.
isFlying
);
if
(
this
.
uav
&&
this
.
uavRealTimeData
.
isFlying
)
{
let
res
=
await
TaskInfo
.
getTaskInfoRecord
({
deviceId
:
this
.
uav
.
deviceId
,
});
if
(
res
.
code
===
0
)
{
this
.
selectedAirwayId
=
res
.
data
.
reouteId
;
}
this.airwayList = airwayList;
} */
this
.
getAirwayList
();
}
},
beforeDestroy
()
{
this
.
bus
.
$off
(
"startTask"
,
this
.
onStartTask
);
this
.
bus
.
$off
(
"refreshAirway"
,
this
.
getAirwayList
);
this
.
clearAirwayEntities
();
},
methods
:
{
...
...
@@ -158,18 +138,21 @@ export default {
* 更新任务列表
*/
getAirwayList
(
id
)
{
console
.
log
(
"getAirwayList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"airwayListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
callback
:
(
res
)
=>
{
this
.
airwayList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedAirwayId
=
id
;
}
});
},
return
new
Promise
((
resolve
)
=>
{
console
.
log
(
"getAirwayList"
,
this
.
taskListAll
);
this
.
rootNode
.
$emit
(
"airwayListGet"
,
{
pageNo
:
1
,
pageSize
:
100
,
callback
:
(
res
)
=>
{
this
.
airwayList
=
res
?.
records
||
[];
this
.
$nextTick
(()
=>
{
if
(
id
)
{
this
.
selectedAirwayId
=
id
;
}
resolve
();
});
},
});
});
},
/**
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlRight/components/mount/index.vue
浏览文件 @
307fa50b
...
...
@@ -116,9 +116,9 @@ export default {
* 挂载录像
*/
mountRecord
(
streamData
)
{
window
.
$mmc
.
$store
.
dispatch
(
"MMCMQTT/publish"
,
{
topic
:
"PX4/OBTAIN/"
+
this
.
uav
.
deviceId
,
data
:
streamData
,
console
.
log
(
"挂载录像"
,
streamData
);
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/videoTranscribe"
,
{
recordControl
:
streamData
.
data
.
data
.
status
||
streamData
.
data
.
data
.
recordControl
||
false
,
callback
:
()
=>
{
if
(
streamData
.
data
.
data
.
recordControl
)
{
this
.
$message
.
success
(
`录像开始`
);
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/controlPanel/components/controlTop/components/takeOverRecords.vue
浏览文件 @
307fa50b
...
...
@@ -17,7 +17,7 @@
<el-table-column
label=
"当前控制单位"
align=
"center"
prop=
"takeUserName"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
prop=
"name"
>
<
template
slot-scope=
"scope"
>
<el-button
@
click=
"onExit(scope.row)"
type=
"text"
size=
"small"
v-if=
"scope.takeStats"
>
退出接管
</el-button>
<el-button
@
click=
"onExit(scope.row)"
type=
"text"
size=
"small"
v-if=
"scope.
row.
takeStats"
>
退出接管
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/carTraffic/data/index.js
deleted
100644 → 0
浏览文件 @
234bd52c
export
default
{
trafficData
:{
imagePath
:
""
,
total
:
12
}
}
\ No newline at end of file
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/carTraffic/index.vue
deleted
100644 → 0
浏览文件 @
234bd52c
<
template
>
<div
class=
"content"
v-interact
>
<div
class=
"content_head"
>
<div
class=
"left"
>
<img
src=
"../../assets/images/mount_head.png"
/>
<div
class=
"font"
>
车流识别
</div>
</div>
<div
class=
"right"
@
click=
"() => $emit('close')"
>
关闭
</div>
</div>
<div
class=
"content_box"
>
<div
class=
"items"
>
<div
class=
"car_item"
>
<div
class=
"image"
>
<img
:src=
"baseUrl + trafficData.imagePath"
alt=
""
/>
</div>
<div
class=
"info"
>
<div
class=
"row"
>
<div
class=
"title"
>
发现车辆:
</div>
<div
class=
"props"
>
{{
trafficData
.
total
||
"0"
}}
辆
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
data
from
"./data"
;
export
default
{
props
:{
trafficData
:{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
// ...data,
baseUrl
:
process
.
env
.
VUE_APP_IMG_URL
,
};
},
methods
:
{
},
mounted
()
{
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.content
{
position
:
fixed
;
z-index
:
101
;
top
:
calc
(
50%
-
120px
);
left
:
calc
(
50%
+
80px
);
margin-right
:
16px
;
width
:
468px
;
max-height
:
635px
;
margin-bottom
:
190px
;
background
:
rgba
(
0
,
39
,
121
,
0.5
);
box-shadow
:
0px
2px
8px
0px
rgba
(
1
,
162
,
255
,
0.7
),
inset
0px
0px
64px
0px
rgba
(
26
,
138
,
227
,
0.35
),
inset
0px
0px
8px
0px
#019aff
;
backdrop-filter
:
blur
(
2px
);
border-radius
:
10px
10px
0px
0px
;
.content_head
{
display
:
flex
;
justify-content
:
space-between
;
height
:
32px
;
background
:
linear-gradient
(
180deg
,
#9198ff
0%
,
rgba
(
45
,
81
,
153
,
0.45
)
40%
,
#05091a
100%
);
box-shadow
:
inset
0px
0px
10px
2px
#3f9dff
;
border-radius
:
10px
10px
0px
0px
;
align-items
:
center
;
padding
:
0
16px
;
.left
{
display
:
flex
;
align-items
:
center
;
.font
{
font-size
:
20px
;
font-family
:
YouSheBiaoTiHei
;
color
:
#14faff
;
line-height
:
26px
;
text-shadow
:
0px
1px
1px
rgba
(
2
,
32
,
56
,
0.2
);
background
:
linear-gradient
(
135deg
,
#e3aa77
0%
,
#f5cda9
38%
,
#f9ecd3
58%
,
#fcdbb1
79%
,
#edb07a
100%
);
-webkit-background-clip
:
text
;
-webkit-text-fill-color
:
transparent
;
}
}
.right
{
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#d2dfff
;
margin-right
:
8px
;
cursor
:
pointer
;
}
}
.content_box
{
width
:
100%
;
max-height
:
600px
;
//
padding
:
0
16px
;
//
overflow
:
auto
;
position
:
relative
;
.items
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
align-content
:
flex-start
;
flex-wrap
:
wrap
;
justify-content
:
space-between
;
.car_item
{
margin
:
11px
auto
;
width
:
90%
;
height
:
300px
;
border
:
1px
solid
#43deff
;
padding
:
4px
4px
0
4px
;
.image
{
position
:
relative
;
width
:
100%
;
height
:
90%
;
img
{
width
:
100%
;
height
:
100%
;
}
.tip
{
position
:
absolute
;
bottom
:
0
;
width
:
204px
;
height
:
16px
;
background
:
#000000
;
opacity
:
0.8
;
font-size
:
12px
;
font-family
:
MicrosoftYaHei
;
color
:
#b7bfc8
;
text-align
:
center
;
line-height
:
16px
;
}
}
.info
{
width
:
204px
;
height
:
53px
;
//
border
:
1px
solid
#43deff
;
background
:
url("../../assets/images/info.png")
;
.row
{
margin-left
:
9px
;
padding-top
:
7px
;
display
:
flex
;
.title
{
font-size
:
14px
;
font-family
:
MicrosoftYaHei-Bold
,
MicrosoftYaHei
;
font-weight
:
bold
;
color
:
#b7cae2
;
}
.props
{
//
width
:
150px
;
//
height
:
19px
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#b7cae2
;
word-wrap
:
break-word
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
//
&
:hover
{
//
background
:
url("../../assets/images/infos.png")
;
//
}
}
}
}
.detail
{
display
:
flex
;
flex-direction
:
column
;
margin-top
:
12px
;
.image
{
position
:
relative
;
width
:
436px
;
height
:
255px
;
img
{
width
:
436px
;
height
:
255px
;
}
.tip
{
position
:
absolute
;
bottom
:
0
;
width
:
436px
;
height
:
31px
;
background
:
#000000
;
opacity
:
0.8
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#b7bfc8
;
text-align
:
center
;
line-height
:
31px
;
}
}
.info
{
//
display
:
flex
;
//
justify-content
:
space-between
;
//
flex-wrap
:
wrap
;
.row
{
margin-top
:
16px
;
display
:
flex
;
justify-content
:
space-between
;
.col
{
display
:
flex
;
}
.title
{
//
flex
:
1
;
flex-shrink
:
0
;
font-size
:
16px
;
font-family
:
MicrosoftYaHei-Bold
,
MicrosoftYaHei
;
font-weight
:
bold
;
color
:
#ffffff
;
line-height
:
21px
;
}
.props
{
font-size
:
16px
;
font-family
:
MicrosoftYaHei
;
color
:
#c5ebff
;
line-height
:
21px
;
}
}
}
.btn
{
margin
:
20px
0
;
//
position
:
absolute
;
//
bottom
:
0
;
align-self
:
center
;
width
:
79px
;
height
:
32px
;
background
:
rgba
(
23
,
70
,
216
,
0.2
);
box-shadow
:
0px
2px
4px
0px
rgba
(
23
,
33
,
60
,
0.5
),
inset
0px
0px
16px
0px
rgba
(
33
,
137
,
255
,
0.4
),
inset
0px
0px
4px
0px
#00a7ff
;
border-radius
:
6px
;
//
border
:
1px
solid
;
border-image
:
linear-gradient
(
180deg
,
rgba
(
138
,
218
,
255
,
1
),
rgba
(
82
,
179
,
255
,
0
)
)
1
1
;
font-size
:
12px
;
font-family
:
MicrosoftYaHei
;
color
:
#00ffff
;
text-align
:
center
;
line-height
:
32px
;
}
}
}
}
</
style
>
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/faceai/data/index.js
deleted
100644 → 0
浏览文件 @
234bd52c
export
default
{
list
:
[
// {
// userName: '何元高',
// birthday: '1974-01-11',
// occurTime: '2022-02-25 08:44;55',
// address: '江苏省盐城市亭湖区人民北路66号华府景城31幢1605室',
// idCard: '320902197401112539',
// labels: ['省内人员'],
// similarity: '63',
// img: 'http://32.128.10.139:30080/components/osg-default/_/video_face_cropped/20220225-ca5ae89e-000a580ae000af-00000020-00000c10',
// imgs:'http://32.128.6.48/uploads/2022/02/25/b4e2793c-bba1-475d-9702-6a9c3f7a1adf.jpeg',
// show: false
// },
]
}
\ No newline at end of file
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/faceai/index.vue
deleted
100644 → 0
浏览文件 @
234bd52c
<
template
>
<div
class=
"content"
v-interact
>
<div
class=
"content_head"
>
<div
class=
"left"
>
<img
src=
"../../assets/images/mount_head.png"
/>
<div
class=
"font"
>
人脸识别
</div>
</div>
<div
class=
"right"
@
click=
"() => $emit('closeface')"
>
关闭
</div>
</div>
<div
class=
"content_box"
>
<div
class=
"face-item"
v-for=
"item in list"
:key=
"item.name"
>
<div
class=
"avatar xiangsi"
:class=
"item.similarity >= 80 ? 'cheng' : ''"
>
<div
class=
"avatar-box left"
>
<img
:src=
"baseUrl + item.recordImageUrl"
/>
<!--
<img
:src=
"item.snapImageUrl"
/>
-->
</div>
<div
class=
"compare-box"
@
click=
"infoFn(item)"
>
<div
class=
"value"
>
{{
Number
(
item
.
similarity
).
toFixed
(
2
)
}}
%
</div>
<div
class=
"label cp"
>
相似度
</div>
</div>
<div
class=
"avatar-box right"
>
<img
:src=
"baseUrl + item.snapImageUrl"
/>
</div>
</div>
<div
class=
"detail"
v-if=
"item.show"
>
<div
class=
"image"
>
<div
class=
"left"
>
<img
:src=
"baseUrl + item.recordImageUrl"
alt
/>
<div
class=
"tip"
>
比对照片
</div>
</div>
<div
class=
"right"
>
<img
:src=
"baseUrl + item.snapImageUrl"
alt
/>
<div
class=
"tip"
>
抓拍照片
</div>
</div>
</div>
<div
class=
"ds"
>
<div
class=
"row"
>
<div
class=
"title"
>
姓名:
</div>
<div
class=
"props"
>
{{
item
.
userName
||
'暂无'
}}
</div>
</div>
<div
class=
"row"
>
<div
class=
"title"
>
身份证号:
</div>
<div
class=
"props"
>
{{
item
.
idCard
||
'暂无'
}}
</div>
</div>
<div
class=
"row"
>
<div
class=
"title"
>
出生年份:
</div>
<div
class=
"props"
>
{{
item
.
birthday
||
'暂无'
}}
</div>
</div>
<div
class=
"row"
>
<div
class=
"title"
>
发现时间:
</div>
<div
class=
"props"
>
{{
item
.
occurTime
||
'暂无'
}}
</div>
</div>
<div
class=
"row"
>
<div
class=
"title"
>
发现地点:
</div>
<div
class=
"props"
>
{{
item
.
addr
||
item
.
address
||
'暂无'
}}
</div>
</div>
<div
class=
"row"
>
<div
class=
"title"
>
AI识别:
</div>
<div
class=
"props border"
>
{{
item
.
labels
&&
item
.
labels
.
length
>
0
?
item
.
labels
[
0
]
:
'暂无'
}}
</div>
</div>
</div>
</div>
<div
class=
"down"
@
click=
"item.show = !item.show"
>
<img
v-if=
"!item.show"
src=
"../../assets/images/down.png"
alt
/>
<img
v-else
src=
"../../assets/images/up.png"
alt
/>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
data
from
"./data"
;
export
default
{
props
:
[
"uavId"
],
data
()
{
return
{
...
data
,
baseUrl
:
process
.
env
.
VUE_APP_IMG_URL
,
};
},
methods
:
{
async
get_face_list
()
{
if
(
!
this
.
uavId
)
{
this
.
$message
.
error
(
"请选择无人机"
);
return
;
}
/* let data = {
aiFacePid: this.uavId,
};
let res = await API.AIUSE.getFaceuavvideoMsg(data);
for (let i = 0; i < res.length; i++) {
let item = res[i];
if (res.length == 1) {
item.show = true;
} else {
item.show = false;
}
if (Number(item.longi) && Number(item.lati)) {
let address = await API.MAP.AiRegeo({
location: `${item.longi},${item.lati}`,
});
item.addr =
address.province.value +
address.city.value +
address.dist.value +
address.road.roadname +
address.poi;
}
}
this.list = res || []; */
},
},
mounted
()
{
this
.
get_face_list
();
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.content
{
z-index
:
101
;
position
:
fixed
;
top
:
16vh
;
left
:
calc
(
50%
);
margin-left
:
-234px
;
width
:
468px
;
max-height
:
635px
;
background
:
rgba
(
0
,
39
,
121
,
0.5
);
box-shadow
:
0px
2px
8px
0px
rgba
(
1
,
162
,
255
,
0.7
),
inset
0px
0px
64px
0px
rgba
(
26
,
138
,
227
,
0.35
),
inset
0px
0px
8px
0px
#019aff
;
backdrop-filter
:
blur
(
2px
);
border-radius
:
10px
10px
0px
0px
;
.content_head
{
display
:
flex
;
justify-content
:
space-between
;
height
:
32px
;
background
:
linear-gradient
(
180deg
,
#9198ff
0%
,
rgba
(
45
,
81
,
153
,
0.45
)
40%
,
#05091a
100%
);
box-shadow
:
inset
0px
0px
10px
2px
#3f9dff
;
border-radius
:
10px
10px
0px
0px
;
align-items
:
center
;
padding
:
0
16px
;
.left
{
display
:
flex
;
align-items
:
center
;
.font
{
font-size
:
20px
;
font-family
:
YouSheBiaoTiHei
;
color
:
#14faff
;
line-height
:
26px
;
text-shadow
:
0px
1px
1px
rgba
(
2
,
32
,
56
,
0.2
);
background
:
linear-gradient
(
135deg
,
#e3aa77
0%
,
#f5cda9
38%
,
#f9ecd3
58%
,
#fcdbb1
79%
,
#edb07a
100%
);
-webkit-background-clip
:
text
;
-webkit-text-fill-color
:
transparent
;
}
}
.right
{
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#d2dfff
;
margin-right
:
8px
;
cursor
:
pointer
;
}
}
.content_box
{
width
:
436px
;
max-height
:
600px
;
padding
:
0
16px
;
overflow
:
auto
;
.face-item
{
position
:
relative
;
margin-bottom
:
15px
;
&:last-child
{
margin-bottom
:
0
;
}
.avatar
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
height
:
130px
;
position
:
relative
;
margin-bottom
:
15px
;
.avatar-box
{
width
:
130px
;
height
:
130px
;
//
box-sizing
:
border-box
;
//
display
:
flex
;
//
align-items
:
center
;
img
{
width
:
88px
;
height
:
88px
;
margin-top
:
21px
;
}
&
.left
{
margin-left
:
7px
;
}
&
.right
{
display
:
flex
;
justify-content
:
flex-end
;
margin-right
:
6px
;
}
}
.compare-box
{
width
:
74px
;
height
:
74px
;
border-radius
:
74px
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
position
:
absolute
;
left
:
50%
;
transform
:
translateX
(
-50%
);
cursor
:
pointer
;
.value
{
font-size
:
24px
;
font-family
:
UniDreamLED
;
color
:
#ffffff
;
line-height
:
28px
;
}
.label
{
font-size
:
16px
;
font-family
:
MicrosoftYaHei
;
color
:
#c7ebff
;
line-height
:
21px
;
letter-spacing
:
1px
;
}
}
}
.detail
{
width
:
404px
;
height
:
379px
;
padding
:
16px
;
.image
{
height
:
150px
;
display
:
flex
;
justify-content
:
space-between
;
.left,
.right
{
position
:
relative
;
width
:
198px
;
height
:
150px
;
img
{
width
:
198px
;
height
:
150px
;
}
.tip
{
position
:
absolute
;
bottom
:
0
;
width
:
198px
;
height
:
27px
;
background
:
#0c1120
;
opacity
:
0.8
;
font-size
:
14px
;
font-family
:
MicrosoftYaHeiUI
;
color
:
#aee9ff
;
line-height
:
27px
;
text-align
:
center
;
}
}
}
.ds
{
.row
{
margin-top
:
16px
;
display
:
flex
;
.title
{
white-space
:
nowrap
;
width
:
70px
;
font-size
:
14px
;
font-family
:
MicrosoftYaHeiUI-Bold
,
MicrosoftYaHeiUI
;
font-weight
:
bold
;
color
:
#ffffff
;
line-height
:
18px
;
}
.props
{
//
position
:
absolute
;
margin-left
:
30px
;
font-size
:
16px
;
font-family
:
MicrosoftYaHeiUI
;
color
:
#aee9ff
;
line-height
:
20px
;
}
.border
{
width
:
70px
;
height
:
23px
;
border-radius
:
8px
;
border
:
1px
solid
#ff4a4a
;
font-size
:
14px
;
font-family
:
MicrosoftYaHeiUI
;
color
:
#ff4a4a
;
line-height
:
23px
;
text-align
:
center
;
}
}
}
}
.down
{
width
:
436px
;
height
:
20px
;
box-shadow
:
inset
0px
0px
12px
0px
#019aff
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
margin-bottom
:
8px
;
.icon
{
}
}
}
}
}
.xiangsi
{
background-image
:
url("../../assets/images/lan.png")
;
background-size
:
100%
100%
;
}
.cheng
{
background-image
:
url("../../assets/images/cheng.png")
;
background-size
:
100%
100%
;
}
</
style
>
\ No newline at end of file
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/pointList/index.vue
浏览文件 @
307fa50b
...
...
@@ -68,8 +68,7 @@
@
click=
"getActive(10,!videoStatus ? 'start' : 'end')"
>
<!--
<div
class=
"num"
>
2/3
</div>
-->
<div
v-if=
"videoStatus == 0"
class=
"name"
>
开始录像
</div>
<div
v-if=
"videoStatus == 2"
class=
"name"
>
结束录像
</div>
<div
v-if=
"videoStatus == 0"
class=
"name"
>
停止录像
</div>
<div
v-if=
"videoStatus == 1"
class=
"name"
>
录像中
</div>
</div>
</div>
...
...
@@ -247,7 +246,7 @@ export default {
});
}
}
console
.
log
(
this
.
aiList
,
"save"
);
console
.
log
(
"save"
,
this
.
aiList
,
this
.
pointList
);
},
getPoint
()
{
let
blob
=
this
.
$parent
.
screenShot
();
...
...
@@ -421,14 +420,14 @@ export default {
)
{
this
.
pointList
[
this
.
pointList
.
length
-
1
].
actions
.
push
(
data
);
}
this
.
videoStatus
=
2
;
this
.
videoStatus
=
0
;
}
},
getDe
()
{
this
.
active
=
2
;
this
.
aiShow
=
false
;
this
.
stayShow
=
false
;
console
.
log
(
this
.
aiList
,
"
123
"
);
console
.
log
(
this
.
aiList
,
"
航点动作
"
);
// setTimeout(() => {
if
(
this
.
pointInfo
&&
this
.
pointInfo
.
aiList
)
{
...
...
@@ -489,6 +488,16 @@ export default {
});
let
time
=
parseInt
(
distance
/
6
);
let
aiList
=
this
.
aiList
.
filter
((
item
)
=>
item
.
switch
)
.
map
((
item
)
=>
{
return
{
id
:
item
.
id
,
type
:
item
.
type
,
isSingle
:
item
.
check
,
};
});
let
waypoints
=
this
.
pointList
.
map
((
val
)
=>
{
return
{
altitude
:
val
.
alt
,
...
...
@@ -500,6 +509,7 @@ export default {
speed
:
this
.
speed
,
stay
:
0
,
waypointActions
:
val
.
actions
,
aiList
:
aiList
,
};
});
let
data
=
{
...
...
@@ -512,6 +522,9 @@ export default {
this
.
rootNode
.
$emit
(
"airwayAdd"
,
{
airway
:
data
,
callback
:
()
=>
{
this
.
bus
.
$emit
(
"refreshAirway"
);
},
});
this
.
$emit
(
"close"
);
},
0
);
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/index.vue
浏览文件 @
307fa50b
...
...
@@ -350,34 +350,19 @@
@
dblclick
.
native
.
stop
></PointList>
</div>
<FaceAI
v-if=
"faceAiShow"
:uavId=
"pid"
@
closeface=
"faceAiShow = false"
/>
<CarAI
v-if=
"carAiShow"
:uavId=
"uav.deviceId"
:list=
"carList"
@
closecar=
"carAiShow = false"
/>
<Traffic
v-if=
"trafficShow"
:trafficData=
"trafficData"
@
close=
"trafficShow = false"
/>
<carTraffic
v-if=
"cartrafficShow"
:trafficData=
"cartrafficData"
@
close=
"cartrafficShow = false"
/>
</div>
</template>
<
script
>
import
{
ViewLibrary
}
from
"../../../../api"
;
import
dayjs
from
"dayjs"
;
import
FaceAI
from
"./components/faceai"
;
import
CarAI
from
"./components/carai"
;
import
Traffic
from
"./components/traffic"
;
import
carTraffic
from
"./components/carTraffic"
;
import
LiveNVRPlayer
from
"./components/livenvr/index.vue"
;
import
QingLiuPlayer
from
"./components/qingliu"
;
import
SRSPlayer
from
"./components/srs"
;
import
{
saveAs
}
from
"file-saver"
;
import
{
to_moveMount
}
from
"../../../../utils/to_moveMount.js"
;
import
{
newDate
}
from
"../../../../utils/formatDate"
;
import
Obstacle
from
"./components/obstacle"
;
import
PointList
from
"./components/pointList"
;
import
videoModelChange
from
"./components/videoModelChange"
;
import
fkutils
from
"./methods/utils"
;
import
videoModelChange
from
"./components/videoModelChange"
;;
import
{
mapState
}
from
"vuex"
;
import
AiList
from
"./components/aiList"
;
...
...
@@ -386,10 +371,6 @@ export default {
components
:
{
QingLiuPlayer
,
LiveNVRPlayer
,
FaceAI
,
CarAI
,
Traffic
,
carTraffic
,
PointList
,
Obstacle
,
SRSPlayer
,
...
...
@@ -411,16 +392,6 @@ export default {
showInfo
:
false
,
//清流视频信息展示
infoData
:
null
,
//清流信息
raw_msg
:
0
,
carList
:
[],
//车牌识别结果
aiVisible
:
false
,
//打开ai
pid
:
null
,
faceAiShow
:
false
,
carAiShow
:
false
,
trafficShow
:
false
,
cartrafficShow
:
false
,
trafficData
:
{},
cartrafficData
:
{},
showPlayer
:
true
,
// 显示播放器, 用于刷新播放器
smallFPV
:
true
,
// FPV小化显示
isStatus
:
false
,
...
...
@@ -454,10 +425,7 @@ export default {
seven
:
-
15
,
},
isInfoShow
:
false
,
openOSD
:
true
,
// 是否开启OSD
showFlywayAction
:
false
,
//显示航点动作
showContinueFly
:
false
,
//显示继续飞行对话框
continueFlyContent
:
""
,
//继续飞行对话框内容
};
},
computed
:
{
...
...
@@ -644,7 +612,6 @@ export default {
window
.
removeEventListener
(
"resize"
,
this
.
fullScreenChangeFn
);
},
methods
:
{
...
fkutils
,
startLinePoint
()
{
let
gps
=
{};
if
(
this
.
uavRealTimeData
)
{
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/methods/utils.js
deleted
100644 → 0
浏览文件 @
234bd52c
差异被折叠。
点击展开。
src/components/MMCFlightControlCenter/store/uav.js
浏览文件 @
307fa50b
...
...
@@ -1175,7 +1175,11 @@ const actions = {
},
type
:
528
,
};
if
(
data
.
playerFormat
.
toLocaleLowerCase
()
==
"qingliu"
)
{
let
isQingLiu
=
state
.
isQingLiu
;
if
(
data
.
isQingLiu
!==
undefined
){
isQingLiu
=
data
.
isQingLiu
;
}
if
(
isQingLiu
)
{
streamData
.
data
.
messageID
=
1017
;
streamData
.
data
.
data
.
status
=
data
.
recordControl
;
}
else
{
...
...
@@ -1241,7 +1245,11 @@ const actions = {
},
type
:
528
,
};
if
(
data
.
isQingLiu
)
{
let
isQingLiu
=
state
.
isQingLiu
;
if
(
data
.
isQingLiu
!==
undefined
){
isQingLiu
=
data
.
isQingLiu
;
}
if
(
isQingLiu
)
{
streamData
.
data
.
messageID
=
1016
;
}
else
{
streamData
.
data
.
messageID
=
1007
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论