Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mmc-stl-vue2
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
mmc-stl-vue2
Commits
ec70f3f2
提交
ec70f3f2
authored
6月 19, 2025
作者:
“kai”
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(i18n): 添加多语言支持并优化UI样式
- 为多个组件添加i18n国际化支持 - 移除冗余的width样式定义 - 更新中、英、俄三种语言的翻译文件 - 优化AI识别列表的滚动条样式 - 统一关闭按钮的国际化显示
上级
5cddbaf4
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
433 行增加
和
246 行删除
+433
-246
en.js
iframe/src/i18n/locales/en.js
+66
-0
ru.js
iframe/src/i18n/locales/ru.js
+32
-2
zh.js
iframe/src/i18n/locales/zh.js
+67
-0
index.vue
...onents/MMCDataTransferPanel/controlMenu/AI/face/index.vue
+1
-1
index.vue
...pplications/components/player/components/aiList/index.vue
+81
-83
index.vue
...Applications/components/player/components/carai/index.vue
+35
-35
index.vue
...ications/components/player/components/pointList/index.vue
+67
-36
index.vue
...er/components/uavApplications/components/player/index.vue
+27
-28
index.vue
...ponents/uavList/components/list/components/item/index.vue
+0
-1
index.vue
src/components/MMCMount/MMC_Gimbal_Z60R/index.vue
+1
-1
index.vue
src/components/MMCMount/MMC_Gimbal_ZT60R/index.vue
+1
-1
index.vue
src/components/MMCPlayer/components/faceai/index.vue
+1
-1
index.vue
src/components/MMCPlayer/index.vue
+0
-1
index.vue
...rve/fckernel/nest/components/airway-edit/manual/index.vue
+31
-31
index.vue
src/observe/fckernel/uav/components/float-playerfk/index.vue
+23
-24
index.vue
...bserve/fckernelVideos/components/float-playerfk/index.vue
+0
-1
没有找到文件。
iframe/src/i18n/locales/en.js
浏览文件 @
ec70f3f2
export
default
{
export
default
{
common
:
{
common
:
{
截图
:
"Screenshot"
,
速度
:
"Speed"
,
开始录像
:
"Start Recording"
,
变焦
:
"Zoom"
,
消息等级
:
"Message Level"
,
消息等级
:
"Message Level"
,
消息内容
:
"Message Content"
,
消息内容
:
"Message Content"
,
流畅
:
"Smooth"
,
流畅
:
"Smooth"
,
...
@@ -217,6 +221,36 @@ export default {
...
@@ -217,6 +221,36 @@ export default {
损坏
:
"Damaged"
,
损坏
:
"Damaged"
,
保养中
:
"Under Upkeep"
,
保养中
:
"Under Upkeep"
,
该机库中没有无人机
:
"No UAV in this hangar!"
,
该机库中没有无人机
:
"No UAV in this hangar!"
,
模式切换
:
"Mode Switch"
,
AI
识别
:
"AI Recognition"
,
人脸识别
:
"Face Recognition"
,
车辆识别
:
"Vehicle Recognition"
,
拍照
:
"Take Photo"
,
信息
:
"Information"
,
切换源
:
"Switch Source"
,
比例
:
"Ratio"
,
公网
:
"Public Network"
,
专网
:
"Private Network"
,
暂无任务
:
"No task available!"
,
拍照成功
:
"Photo taken successfully!"
,
下载
:
"Download"
,
正在识别中
:
"Recognizing..."
,
识别成功
:
"Recognition successful!"
,
识别完成
:
"Recognition completed"
,
偏航角
:
"Yaw Angle"
,
云台偏航
:
"Gimbal Yaw"
,
云台俯仰
:
"Gimbal Pitch"
,
悬停
:
"Hover"
,
停止录像
:
"Stop Recording"
,
录像中
:
"Recording"
,
单点
:
"Single Point"
,
分
:
"Min"
,
秒
:
"Sec"
,
游泳识别
:
"Swimming Recognition"
,
异物识别
:
"Foreign Object Recognition"
,
漏油识别
:
"Oil Leak Recognition"
,
裸土识别
:
"Bare Soil Recognition"
,
生成航线至少两个航点
:
"At least two waypoints are required to generate a route"
,
该机库没有经纬度
:
"This hangar has no coordinates"
,
该机库没有经纬度
:
"This hangar has no coordinates"
,
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
"Equipment has not been maintained for more than three months, there are safety hazards, normal flight is not possible!"
,
"Equipment has not been maintained for more than three months, there are safety hazards, normal flight is not possible!"
,
...
@@ -546,6 +580,38 @@ export default {
...
@@ -546,6 +580,38 @@ export default {
退出接管
:
"Exit Takeover"
,
退出接管
:
"Exit Takeover"
,
确认退出该用户接管
:
"Confirm exit takeover for this user?"
,
确认退出该用户接管
:
"Confirm exit takeover for this user?"
,
操作完成
:
"Operation Completed"
,
操作完成
:
"Operation Completed"
,
视频信息
:
"Video Information"
,
是否启动瞄准镜
:
"Enable Crosshair"
,
摇杆位于中位
:
"Joystick at Center"
,
摇杆未在中位
:
"Joystick Not at Center"
,
切换源
:
"Switch Source"
,
比例
:
"Scale"
,
模式切换
:
"Mode Switch"
,
截图
:
"Screenshot"
,
当前高度创建航点动作可能不安全
:
"Creating waypoint action at current altitude may be unsafe!"
,
录像失败
NX
通信异常
:
"Recording failed, NX communication error!"
,
开始
:
"Start"
,
结束
:
"End"
,
录像失败
:
"Recording Failed"
,
拍照失败
NX
通信异常
:
"Photo failed, NX communication error!"
,
拍照完成
:
"Photo Completed"
,
截屏成功
:
"Screenshot Successful"
,
截屏失败
:
"Screenshot Failed"
,
抓拍照片
:
"Captured Photo"
,
车牌号
:
"License Plate Number"
,
车辆品牌
:
"Vehicle Brand"
,
车主
:
"Vehicle Owner"
,
联系号码
:
"Contact Number"
,
单位编号
:
"Unit Number"
,
是否有违法未处理
:
"Any Unprocessed Violations"
,
有违法未处理
:
"Has Unprocessed Violations"
,
无违法未处理
:
"No Unprocessed Violations"
,
车辆种类
:
"Vehicle Type"
,
车辆识别代号
:
"Vehicle Identification Code"
,
预警地点
:
"Alert Location"
,
识别时间
:
"Recognition Time"
,
车辆轨迹
:
"Vehicle Trajectory"
,
暂无轨迹
:
"No trajectory available!"
,
行人识别
:
"Pedestrian Recognition"
,
行人识别
:
"Pedestrian Recognition"
,
车牌识别
:
"License Plate Recognition"
,
车牌识别
:
"License Plate Recognition"
,
口罩识别
:
"Mask Recognition"
,
口罩识别
:
"Mask Recognition"
,
...
...
iframe/src/i18n/locales/ru.js
浏览文件 @
ec70f3f2
export
default
{
export
default
{
common
:
{
common
:
{
截图
:
"Скриншот"
,
开始录像
:
"Начать запись"
,
变焦
:
"Увеличение"
,
速度
:
"Скорость"
,
原画
:
"Рисунок"
,
原画
:
"Рисунок"
,
流畅
:
"Плавный"
,
流畅
:
"Плавный"
,
低延迟
:
"Низкая задержка"
,
低延迟
:
"Низкая задержка"
,
...
@@ -215,6 +219,34 @@ export default {
...
@@ -215,6 +219,34 @@ export default {
损坏
:
"Поврежден"
,
损坏
:
"Поврежден"
,
保养中
:
"На уходе"
,
保养中
:
"На уходе"
,
该机库中没有无人机
:
"В этом ангаре нет БПЛА!"
,
该机库中没有无人机
:
"В этом ангаре нет БПЛА!"
,
模式切换
:
"Переключение режима"
,
AI
识别
:
"ИИ распознавание"
,
人脸识别
:
"Распознавание лиц"
,
车辆识别
:
"Распознавание транспорта"
,
拍照
:
"Сделать фото"
,
信息
:
"Информация"
,
切换源
:
"Переключить источник"
,
比例
:
"Соотношение"
,
暂无任务
:
"Нет доступных задач!"
,
拍照成功
:
"Фото успешно сделано!"
,
下载
:
"Скачать"
,
正在识别中
:
"Распознавание..."
,
识别成功
:
"Распознавание успешно!"
,
识别完成
:
"Распознавание завершено"
,
偏航角
:
"Угол рыскания"
,
云台偏航
:
"Рыскание подвеса"
,
云台俯仰
:
"Тангаж подвеса"
,
悬停
:
"Зависание"
,
停止录像
:
"Остановить запись"
,
录像中
:
"Запись"
,
单点
:
"Одна точка"
,
分
:
"Мин"
,
秒
:
"Сек"
,
游泳识别
:
"Распознавание плавания"
,
异物识别
:
"Распознавание посторонних объектов"
,
漏油识别
:
"Распознавание утечки масла"
,
裸土识别
:
"Распознавание голой земли"
,
生成航线至少两个航点
:
"Для создания маршрута требуется минимум две точки"
,
该机库没有经纬度
:
"У этого ангара нет координат"
,
该机库没有经纬度
:
"У этого ангара нет координат"
,
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
"Оборудование не обслуживалось более трех месяцев, есть угрозы безопасности, нормальный полет невозможен!"
,
"Оборудование не обслуживалось более трех месяцев, есть угрозы безопасности, нормальный полет невозможен!"
,
...
@@ -238,8 +270,6 @@ export default {
...
@@ -238,8 +270,6 @@ export default {
升起平台
:
"Поднять платформу"
,
升起平台
:
"Поднять платформу"
,
释放无人机
:
"Освободить дрон"
,
释放无人机
:
"Освободить дрон"
,
无人机
RTK
定位
:
"RTK позиционирование"
,
无人机
RTK
定位
:
"RTK позиционирование"
,
消息等级
:
"Уровень сообщ."
,
消息内容
:
"Содерж. сообщ."
,
时间
:
"Время"
,
时间
:
"Время"
,
紧急
:
"Срочно"
,
紧急
:
"Срочно"
,
普通
:
"Обычный"
,
普通
:
"Обычный"
,
...
...
iframe/src/i18n/locales/zh.js
浏览文件 @
ec70f3f2
export
default
{
export
default
{
common
:
{
common
:
{
AI
识别
:
"AI识别"
,
变焦
:
"变焦"
,
截图
:
"截图"
,
开始录像
:
"开始录像"
,
结束录像
:
"结束录像"
,
原画
:
"原画"
,
原画
:
"原画"
,
流畅
:
"流畅"
,
流畅
:
"流畅"
,
速度
:
"速度"
,
低延迟
:
"低延迟"
,
低延迟
:
"低延迟"
,
无人机视频
:
"无人机视频"
,
无人机视频
:
"无人机视频"
,
舱内
:
"舱内"
,
舱内
:
"舱内"
,
...
@@ -198,6 +204,35 @@ export default {
...
@@ -198,6 +204,35 @@ export default {
损坏
:
"损坏"
,
损坏
:
"损坏"
,
保养中
:
"保养中"
,
保养中
:
"保养中"
,
该机库中没有无人机
:
"该机库中没有无人机!"
,
该机库中没有无人机
:
"该机库中没有无人机!"
,
模式切换
:
"模式切换"
,
人脸识别
:
"人脸识别"
,
车辆识别
:
"车辆识别"
,
拍照
:
"拍照"
,
信息
:
"信息"
,
切换源
:
"切换源"
,
比例
:
"比例"
,
公网
:
"公网"
,
专网
:
"专网"
,
暂无任务
:
"暂无任务!"
,
拍照成功
:
"拍照成功!"
,
下载
:
"下载"
,
正在识别中
:
"正在识别中..."
,
识别成功
:
"识别成功!"
,
识别完成
:
"识别完成"
,
偏航角
:
"偏航角"
,
云台偏航
:
"云台偏航"
,
云台俯仰
:
"云台俯仰"
,
悬停
:
"悬停"
,
停止录像
:
"停止录像"
,
录像中
:
"录像中"
,
单点
:
"单点"
,
分
:
"分"
,
秒
:
"秒"
,
游泳识别
:
"游泳识别"
,
异物识别
:
"异物识别"
,
漏油识别
:
"漏油识别"
,
裸土识别
:
"裸土识别"
,
生成航线至少两个航点
:
"生成航线至少两个航点"
,
该机库没有经纬度
:
"该机库没有经纬度"
,
该机库没有经纬度
:
"该机库没有经纬度"
,
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
设备超三个月未进行保养存在安全隐患无法进行正常飞行
:
"设备超三个月未进行保养,存在安全隐患,无法进行正常飞行!"
,
"设备超三个月未进行保养,存在安全隐患,无法进行正常飞行!"
,
...
@@ -594,6 +629,38 @@ export default {
...
@@ -594,6 +629,38 @@ export default {
退出接管
:
"退出接管"
,
退出接管
:
"退出接管"
,
确认退出该用户接管
:
"确认退出该用户接管?"
,
确认退出该用户接管
:
"确认退出该用户接管?"
,
操作完成
:
"操作完成"
,
操作完成
:
"操作完成"
,
视频信息
:
"视频信息"
,
是否启动瞄准镜
:
"是否启动瞄准镜"
,
摇杆位于中位
:
"摇杆位于中位"
,
摇杆未在中位
:
"摇杆未在中位"
,
切换源
:
"切换源"
,
比例
:
"比例"
,
模式切换
:
"模式切换"
,
截图
:
"截图"
,
当前高度创建航点动作可能不安全
:
"当前高度创建航点动作可能不安全!"
,
录像失败
NX
通信异常
:
"录像失败,NX通信异常!"
,
开始
:
"开始"
,
结束
:
"结束"
,
录像失败
:
"录像失败"
,
拍照失败
NX
通信异常
:
"拍照失败,NX通信异常!"
,
拍照完成
:
"拍照完成"
,
截屏成功
:
"截屏成功"
,
截屏失败
:
"截屏失败"
,
抓拍照片
:
"抓拍照片"
,
车牌号
:
"车牌号"
,
车辆品牌
:
"车辆品牌"
,
车主
:
"车主"
,
联系号码
:
"联系号码"
,
单位编号
:
"单位编号"
,
是否有违法未处理
:
"是否有违法未处理"
,
有违法未处理
:
"有违法未处理"
,
无违法未处理
:
"无违法未处理"
,
车辆种类
:
"车辆种类"
,
车辆识别代号
:
"车辆识别代号"
,
预警地点
:
"预警地点"
,
识别时间
:
"识别时间"
,
车辆轨迹
:
"车辆轨迹"
,
暂无轨迹
:
"暂无轨迹!"
,
},
},
logger
:
{
logger
:
{
运行监控日志
:
"运行监控日志"
,
运行监控日志
:
"运行监控日志"
,
...
...
src/components/MMCDataTransferPanel/controlMenu/AI/face/index.vue
浏览文件 @
ec70f3f2
...
@@ -65,7 +65,7 @@
...
@@ -65,7 +65,7 @@
</div>
</div>
<div
class=
"rate-form-item"
>
<div
class=
"rate-form-item"
>
<div
class=
"rate-form-item__label"
>
<div
class=
"rate-form-item__label"
>
{{
$t
(
'co
ntrolMenu
.AI识别'
)
}}
:
{{
$t
(
'co
mmon
.AI识别'
)
}}
:
</div>
</div>
<div
class=
"rate=form-item__value"
>
<div
class=
"rate=form-item__value"
>
<template
v-if=
"item.labels && item.labels.length"
>
<template
v-if=
"item.labels && item.labels.length"
>
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/aiList/index.vue
浏览文件 @
ec70f3f2
<
template
>
<
template
>
<div>
<div>
<el-tooltip
content=
"AI识别
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.AI识别')
"
placement=
"bottom"
>
<div
class=
"menu-item"
>
<div
class=
"menu-item"
>
<img
src=
"./assets/images/car1.png"
@
click=
"aiVisible = !aiVisible"
/>
<img
src=
"./assets/images/car1.png"
@
click=
"aiVisible = !aiVisible"
/>
<div
class=
"ai-list"
v-show=
"aiVisible"
>
<div
class=
"ai-list"
v-show=
"aiVisible"
>
...
@@ -52,61 +52,110 @@ export default {
...
@@ -52,61 +52,110 @@ export default {
return
{
return
{
aiVisible
:
false
,
aiVisible
:
false
,
aiIdentifyList
:
[],
aiIdentifyList
:
[],
deAiIdentifyList
:
[
// deAiIdentifyList:
// aiIdentifyList: [
// {
// title: "人脸识别",
// type: "face",
// typeId: 1,
// img: require("./assets/images/人脸识别.svg"),
// },
// {
// title: "车牌识别",
// type: "plate",
// typeId: 8,
// img: require("./assets/images/车牌识别.svg"),
// },
// {
// title: "人流识别",
// type: "crowd",
// typeId: 3,
// img: require("./assets/images/人流识别.svg"),
// },
// {
// title: "烟雾识别",
// type: "smoke",
// typeId: 7,
// img: require("./assets/images/烟雾识别.svg"),
// },
// {
// title: "漏油识别",
// type: "oilLeak",
// typeId: 5,
// img: require("./assets/images/漏油识别.svg"),
// },
// {
// title: "裸土识别",
// type: "bareSoil",
// typeId: 6,
// img: require("./assets/images/裸土识别.svg"),
// },
// ],
aiResultShow
:
false
,
//ai识别结果展示
aiTitle
:
""
,
aiResultImg
:
""
,
//ai结果图
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"baseUrl"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"userInfo"
]),
deAiIdentifyList
(){
return
[
{
{
typeId
:
1
,
typeId
:
1
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/person_car.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/person_car.png"
,
title
:
"人车识别"
,
title
:
this
.
$t
(
'controlMenu.人车识别'
)
,
},
},
{
{
typeId
:
2
,
typeId
:
2
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/fire.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/fire.png"
,
title
:
"烟火识别"
,
title
:
this
.
$t
(
'controlMenu.烟火识别'
)
,
},
},
{
{
typeId
:
4
,
typeId
:
4
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/person.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/person.png"
,
title
:
"行人识别"
,
title
:
this
.
$t
(
'controlMenu.行人识别'
)
,
},
},
{
{
typeId
:
5
,
typeId
:
5
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/car.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/car.png"
,
title
:
"机动车识别"
,
title
:
this
.
$t
(
'controlMenu.机动车识别'
)
,
},
},
{
{
typeId
:
6
,
typeId
:
6
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/motor_bicycle.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/motor_bicycle.png"
,
title
:
"两轮车识别"
,
title
:
this
.
$t
(
'controlMenu.两轮车识别'
)
,
},
},
{
{
typeId
:
7
,
typeId
:
7
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/tricycle.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/tricycle.png"
,
title
:
"三轮车识别"
,
title
:
this
.
$t
(
'controlMenu.三轮车识别'
),
},
},
{
{
typeId
:
8
,
typeId
:
8
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/excavator.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/excavator.png"
,
title
:
"挖掘机识别"
,
title
:
this
.
$t
(
'controlMenu.挖掘机识别'
)
,
},
},
{
{
typeId
:
9
,
typeId
:
9
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/plate.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/plate.png"
,
title
:
"车牌识别"
,
title
:
this
.
$t
(
'controlMenu.车牌识别'
)
,
type
:
"plate"
,
type
:
"plate"
,
},
},
{
{
...
@@ -114,179 +163,128 @@ export default {
...
@@ -114,179 +163,128 @@ export default {
type
:
"face"
,
type
:
"face"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/face.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/face.png"
,
title
:
"人脸识别"
,
title
:
this
.
$t
(
'common.人脸识别'
)
,
},
},
{
{
typeId
:
11
,
typeId
:
11
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/mask.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/mask.png"
,
title
:
"口罩识别"
,
title
:
this
.
$t
(
'controlMenu.口罩识别'
),
},
},
{
{
typeId
:
14
,
typeId
:
14
,
type
:
"smoke"
,
type
:
"smoke"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/smoke.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/smoke.png"
,
title
:
"烟雾识别"
,
title
:
this
.
$t
(
'controlMenu.烟雾识别'
)
,
},
},
{
{
typeId
:
15
,
typeId
:
15
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/fire.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/fire.png"
,
title
:
"火焰识别"
,
title
:
this
.
$t
(
'controlMenu.火焰识别'
)
,
},
},
{
{
typeId
:
17
,
typeId
:
17
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/zhandao.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/zhandao.png"
,
title
:
"占道经营"
,
title
:
this
.
$t
(
'controlMenu.占道经营'
)
,
},
},
{
{
type
:
"kbtAi"
,
type
:
"kbtAi"
,
typeId
:
22
,
typeId
:
22
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/boat.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/boat.png"
,
title
:
"船舶识别"
,
title
:
this
.
$t
(
'controlMenu.船舶识别'
)
,
},
},
{
{
typeId
:
23
,
typeId
:
23
,
type
:
"oilLeak"
,
type
:
"oilLeak"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/oilspill.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/oilspill.png"
,
title
:
"漏油识别"
,
title
:
this
.
$t
(
'controlMenu.漏油识别'
)
,
},
},
{
{
typeId
:
24
,
typeId
:
24
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/helmet.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/helmet.png"
,
title
:
"头盔识别"
,
title
:
this
.
$t
(
'controlMenu.头盔识别'
)
,
},
},
{
{
typeId
:
25
,
typeId
:
25
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/guanxian.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/guanxian.png"
,
title
:
"管线识别"
,
title
:
this
.
$t
(
'controlMenu.管线识别'
)
,
},
},
{
{
typeId
:
26
,
typeId
:
26
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/lumianliefeng.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/lumianliefeng.png"
,
title
:
"路面裂缝"
,
title
:
this
.
$t
(
'controlMenu.路面裂缝'
)
,
},
},
{
{
typeId
:
27
,
typeId
:
27
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/dingpeng.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/dingpeng.png"
,
title
:
"顶棚违建"
,
title
:
this
.
$t
(
'controlMenu.顶棚违建'
)
,
},
},
{
{
typeId
:
28
,
typeId
:
28
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/guanggaopai.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/guanggaopai.png"
,
title
:
"门牌广告"
,
title
:
this
.
$t
(
'controlMenu.门牌广告'
)
,
},
},
{
{
typeId
:
29
,
typeId
:
29
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/jinggai.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/jinggai.png"
,
title
:
"井盖识别"
,
title
:
this
.
$t
(
'controlMenu.井盖识别'
)
,
},
},
{
{
typeId
:
30
,
typeId
:
30
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/jiaobanche.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/jiaobanche.png"
,
title
:
"搅拌车识别"
,
title
:
this
.
$t
(
'controlMenu.搅拌车识别'
)
,
},
},
{
{
typeId
:
31
,
typeId
:
31
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/youguanche.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/youguanche.png"
,
title
:
"油罐车识别"
,
title
:
this
.
$t
(
'controlMenu.油罐车识别'
)
,
},
},
{
{
typeId
:
32
,
typeId
:
32
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/zhatuche.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/zhatuche.png"
,
title
:
"渣土车识别"
,
title
:
this
.
$t
(
'controlMenu.渣土车识别'
)
,
},
},
{
{
typeId
:
33
,
typeId
:
33
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/paiwukou.png"
,
img
:
"https://mmc-crm.oss-cn-shenzhen.aliyuncs.com/prod/tmj-icon/ai/paiwukou.png"
,
title
:
"排气口识别"
,
title
:
this
.
$t
(
'controlMenu.排气口识别'
),
type
:
"kbtAi"
,
type
:
"kbtAi"
,
},
},
{
{
typeId
:
34
,
typeId
:
34
,
img
:
require
(
"./assets/images/人流识别.svg"
),
img
:
require
(
"./assets/images/人流识别.svg"
),
title
:
"人流识别"
,
title
:
this
.
$t
(
'controlMenu.人流识别'
)
,
type
:
"kbtAi"
,
type
:
"kbtAi"
,
},
},
{
{
title
:
"裸土识别"
,
type
:
"bareSoil"
,
type
:
"bareSoil"
,
typeId
:
35
,
typeId
:
35
,
title
:
this
.
$t
(
'controlMenu.裸土识别'
),
img
:
require
(
"./assets/images/裸土识别.svg"
),
img
:
require
(
"./assets/images/裸土识别.svg"
),
},
},
],
]
// aiIdentifyList: [
}
// {
// title: "人脸识别",
// type: "face",
// typeId: 1,
// img: require("./assets/images/人脸识别.svg"),
// },
// {
// title: "车牌识别",
// type: "plate",
// typeId: 8,
// img: require("./assets/images/车牌识别.svg"),
// },
// {
// title: "人流识别",
// type: "crowd",
// typeId: 3,
// img: require("./assets/images/人流识别.svg"),
// },
// {
// title: "烟雾识别",
// type: "smoke",
// typeId: 7,
// img: require("./assets/images/烟雾识别.svg"),
// },
// {
// title: "漏油识别",
// type: "oilLeak",
// typeId: 5,
// img: require("./assets/images/漏油识别.svg"),
// },
// {
// title: "裸土识别",
// type: "bareSoil",
// typeId: 6,
// img: require("./assets/images/裸土识别.svg"),
// },
// ],
aiResultShow
:
false
,
//ai识别结果展示
aiTitle
:
""
,
aiResultImg
:
""
,
//ai结果图
};
},
computed
:
{
...
mapState
(
"MMCFlightControlCenter"
,
[
"cesiumViewer"
,
"baseUrl"
]),
...
mapState
(
"MMCFlightControlCenter/uav"
,
[
"uav"
,
"userInfo"
]),
},
},
mounted
()
{
mounted
()
{
this
.
getAiconfig
();
this
.
getAiconfig
();
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/carai/index.vue
浏览文件 @
ec70f3f2
...
@@ -3,9 +3,9 @@
...
@@ -3,9 +3,9 @@
<div
class=
"content_head"
>
<div
class=
"content_head"
>
<div
class=
"left"
>
<div
class=
"left"
>
<img
src=
"../../assets/images/mount_head.png"
/>
<img
src=
"../../assets/images/mount_head.png"
/>
<div
class=
"font"
>
车辆识别
</div>
<div
class=
"font"
>
{{
$t
(
'common.车辆识别'
)
}}
</div>
</div>
</div>
<div
class=
"right"
@
click=
"() => $emit('closecar')"
>
关闭
</div>
<div
class=
"right"
@
click=
"() => $emit('closecar')"
>
{{
$t
(
'common.关闭'
)
}}
</div>
</div>
</div>
<div
class=
"content_box"
>
<div
class=
"content_box"
>
<div
class=
"items"
v-show=
"!show"
>
<div
class=
"items"
v-show=
"!show"
>
...
@@ -17,16 +17,16 @@
...
@@ -17,16 +17,16 @@
>
>
<div
class=
"image"
>
<div
class=
"image"
>
<img
:src=
"baseUrl + item.imageUrl"
alt=
""
/>
<img
:src=
"baseUrl + item.imageUrl"
alt=
""
/>
<div
class=
"tip"
>
{{
item
.
plateNum
||
"暂无"
}}
</div>
<div
class=
"tip"
>
{{
item
.
plateNum
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"title"
>
地点
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.地点'
)
}}
:
</div>
<div
class=
"props"
>
{{
item
.
findAddress
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
item
.
findAddress
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"title"
>
时间
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.时间'
)
}}
:
</div>
<div
class=
"props"
>
{{
item
.
findTime
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
item
.
findTime
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -35,82 +35,82 @@
...
@@ -35,82 +35,82 @@
<div
class=
"image"
>
<div
class=
"image"
>
<canvas
id=
"canvas"
ref=
"canvas"
></canvas>
<canvas
id=
"canvas"
ref=
"canvas"
></canvas>
<!--
<img
:src=
"detail.imageUrl"
alt=
""
/>
-->
<!--
<img
:src=
"detail.imageUrl"
alt=
""
/>
-->
<div
class=
"tip"
>
抓拍照片
</div>
<div
class=
"tip"
>
{{
$t
(
'common.抓拍照片'
)
}}
</div>
</div>
</div>
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"row"
v-if=
"detail.plateNum"
>
<div
class=
"row"
v-if=
"detail.plateNum"
>
<div
style=
"display: flex"
v-if=
"detail.plateNum"
>
<div
style=
"display: flex"
v-if=
"detail.plateNum"
>
<div
class=
"title"
>
车牌号
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车牌号'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
plateNum
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
plateNum
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.carBrand"
>
<div
class=
"row"
v-if=
"detail.carBrand"
>
<div
class=
"col"
v-if=
"detail.carBrand"
>
<div
class=
"col"
v-if=
"detail.carBrand"
>
<div
class=
"title"
>
车辆品牌
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车辆品牌'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
carBrand
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
carBrand
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.plateName"
>
<div
class=
"row"
v-if=
"detail.plateName"
>
<div
style=
"display: flex"
v-if=
"detail.plateName"
>
<div
style=
"display: flex"
v-if=
"detail.plateName"
>
<div
class=
"title"
>
车主
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车主'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
plateName
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
plateName
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.telPhone"
>
<div
class=
"row"
v-if=
"detail.telPhone"
>
<div
class=
"col"
v-if=
"detail.telPhone"
>
<div
class=
"col"
v-if=
"detail.telPhone"
>
<div
class=
"title"
>
联系号码
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.联系号码'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
telPhone
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
telPhone
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.userCode"
>
<div
class=
"row"
v-if=
"detail.userCode"
>
<div
style=
"display: flex"
v-if=
"detail.userCode"
>
<div
style=
"display: flex"
v-if=
"detail.userCode"
>
<div
class=
"title"
>
身份证/单位编号
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.身份证号'
)
}}
/
{{
$t
(
'common.单位编号'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
userCode
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
userCode
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"title"
>
是否有违法未处理
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.是否有违法未处理'
)
}}
:
</div>
<div
class=
"props"
>
<div
class=
"props"
>
{{
{{
detail
.
illegalRecord
detail
.
illegalRecord
?
"有违法未处理"
?
$t
(
'common.有违法未处理'
)
:
"无违法未处理"
||
"暂无"
:
$t
(
'common.无违法未处理'
)
||
$t
(
'common.暂无'
)
}}
}}
</div>
</div>
</div>
</div>
<div
class=
"col"
v-if=
"detail.carType"
>
<div
class=
"col"
v-if=
"detail.carType"
>
<div
class=
"title"
>
车辆种类
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车辆种类'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
carType
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
carType
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.carCode"
>
<div
class=
"row"
v-if=
"detail.carCode"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"title"
>
车辆识别代号
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车辆识别代号'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
carCode
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
carCode
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.findAddress"
>
<div
class=
"row"
v-if=
"detail.findAddress"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"title"
>
预警地点
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.预警地点'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
findAddress
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
findAddress
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
v-if=
"detail.findTime"
>
<div
class=
"row"
v-if=
"detail.findTime"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"title"
>
识别时间
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.识别时间'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
findTime
||
"暂无"
}}
</div>
<div
class=
"props"
>
{{
detail
.
findTime
||
$t
(
'common.暂无'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"title"
>
车辆轨迹
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.车辆轨迹'
)
}}
:
</div>
<div
class=
"props"
>
{{
detail
.
locus
&&
detail
.
locus
.
length
||
"0"
}}
条
</div>
<div
class=
"props"
>
{{
detail
.
locus
&&
detail
.
locus
.
length
||
"0"
}}
{{
$t
(
'common.条'
)
}}
</div>
<div
class=
"cf"
@
click=
"add_zysb(detail.locus)"
>
预览
</div>
<div
class=
"cf"
@
click=
"add_zysb(detail.locus)"
>
{{
$t
(
'common.预览'
)
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"btn"
@
click=
"show = !show"
>
返回
</div>
<div
class=
"btn"
@
click=
"show = !show"
>
{{
$t
(
'common.返回'
)
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -205,7 +205,7 @@ export default {
...
@@ -205,7 +205,7 @@ export default {
},
},
async
get_car_list
()
{
async
get_car_list
()
{
if
(
!
this
.
uavId
)
{
if
(
!
this
.
uavId
)
{
this
.
$message
.
error
(
"请选择无人机"
);
this
.
$message
.
error
(
this
.
$t
(
'common.请选择无人机'
)
);
return
;
return
;
}
}
let
data
=
{
let
data
=
{
...
@@ -216,7 +216,7 @@ export default {
...
@@ -216,7 +216,7 @@ export default {
},
},
add_zysb
(
res
)
{
add_zysb
(
res
)
{
if
(
!
res
)
return
this
.
$message
.
error
(
"暂无轨迹!"
)
if
(
!
res
)
return
this
.
$message
.
error
(
this
.
$t
(
'common.暂无轨迹'
)
)
let
cesium_layer
=
this
.
g_cesium_layer
();
let
cesium_layer
=
this
.
g_cesium_layer
();
cesium_layer
.
fly_to_globe
();
cesium_layer
.
fly_to_globe
();
let
cate_name
=
"zysb"
;
let
cate_name
=
"zysb"
;
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/components/pointList/index.vue
浏览文件 @
ec70f3f2
...
@@ -10,9 +10,9 @@
...
@@ -10,9 +10,9 @@
:class=
"disable && pointList.length >= 2 ? 'active':''"
:class=
"disable && pointList.length >= 2 ? 'active':''"
v-if=
"disable && pointList.length >= 2"
v-if=
"disable && pointList.length >= 2"
@
click=
"saveLine"
@
click=
"saveLine"
>
生成航线
</div>
>
{{
$t
(
'common.生成航线'
)
}}
</div>
<div
class=
"btn"
v-else
>
生成航线
</div>
<div
class=
"btn"
v-else
>
{{
$t
(
'common.生成航线'
)
}}
</div>
<div
class=
"close"
@
click=
"$emit('close')"
>
关闭
</div>
<div
class=
"close"
@
click=
"$emit('close')"
>
{{
$t
(
'common.关闭'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"list"
v-if=
"!infoShow"
>
<div
class=
"list"
v-if=
"!infoShow"
>
...
@@ -28,39 +28,39 @@
...
@@ -28,39 +28,39 @@
<div
class=
"form"
>
<div
class=
"form"
>
<div
class=
"info"
:class=
"active == 2 ? 'active' : ''"
@
click=
"getActive(2)"
>
<div
class=
"info"
:class=
"active == 2 ? 'active' : ''"
@
click=
"getActive(2)"
>
<div
class=
"num"
>
{{
pointInfo
.
alt
.
toFixed
(
2
)
}}
</div>
<div
class=
"num"
>
{{
pointInfo
.
alt
.
toFixed
(
2
)
}}
</div>
<div
class=
"name"
>
高度
</div>
<div
class=
"name"
>
{{
$t
(
'common.高度'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 3 ? 'active' : ''"
@
click=
"getActive(3)"
>
<div
class=
"info"
:class=
"active == 3 ? 'active' : ''"
@
click=
"getActive(3)"
>
<div
class=
"num"
>
{{
pointInfo
.
heading
.
toFixed
(
2
)
}}
</div>
<div
class=
"num"
>
{{
pointInfo
.
heading
.
toFixed
(
2
)
}}
</div>
<div
class=
"name"
>
偏航角
</div>
<div
class=
"name"
>
{{
$t
(
'common.偏航角'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 4 ? 'active' : ''"
@
click=
"getActive(4)"
>
<div
class=
"info"
:class=
"active == 4 ? 'active' : ''"
@
click=
"getActive(4)"
>
<div
class=
"num"
>
{{
pointInfo
.
actions
[
0
].
param3
.
toFixed
(
2
)
}}
</div>
<div
class=
"num"
>
{{
pointInfo
.
actions
[
0
].
param3
.
toFixed
(
2
)
}}
</div>
<div
class=
"name"
>
云台偏航
</div>
<div
class=
"name"
>
{{
$t
(
'common.云台偏航'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 5 ? 'active' : ''"
@
click=
"getActive(5)"
>
<div
class=
"info"
:class=
"active == 5 ? 'active' : ''"
@
click=
"getActive(5)"
>
<div
class=
"num"
>
{{
pointInfo
.
actions
[
0
].
param1
.
toFixed
(
2
)
}}
</div>
<div
class=
"num"
>
{{
pointInfo
.
actions
[
0
].
param1
.
toFixed
(
2
)
}}
</div>
<div
class=
"name"
>
云台俯仰
</div>
<div
class=
"name"
>
{{
$t
(
'common.云台俯仰'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 6 ? 'active' : ''"
@
click=
"getActive(6)"
>
<div
class=
"info"
:class=
"active == 6 ? 'active' : ''"
@
click=
"getActive(6)"
>
<div
class=
"num"
>
{{
(
pointInfo
.
actions
[
1
].
param2
).
toFixed
(
2
)
+
"X"
}}
</div>
<div
class=
"num"
>
{{
(
pointInfo
.
actions
[
1
].
param2
).
toFixed
(
2
)
+
"X"
}}
</div>
<div
class=
"name"
>
变焦
</div>
<div
class=
"name"
>
{{
$t
(
'common.变焦'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 7 ? 'active' : ''"
@
click=
"getActive(7, 'ai')"
>
<div
class=
"info"
:class=
"active == 7 ? 'active' : ''"
@
click=
"getActive(7, 'ai')"
>
<div
class=
"num"
>
{{
checkedAI
(
aiList
)
+
"/"
+
aiList
.
length
}}
</div>
<div
class=
"num"
>
{{
checkedAI
(
aiList
)
+
"/"
+
aiList
.
length
}}
</div>
<div
class=
"name"
>
AI识别
</div>
<div
class=
"name"
>
{{
$t
(
'common.AI识别'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 8 ? 'active' : ''"
@
click=
"getActive(8, 'stay')"
>
<div
class=
"info"
:class=
"active == 8 ? 'active' : ''"
@
click=
"getActive(8, 'stay')"
>
<div
class=
"num"
>
{{
this
.
min
+
"分"
+
this
.
se
+
"秒"
}}
</div>
<div
class=
"num"
>
{{
this
.
min
+
$t
(
'common.分'
)
+
this
.
se
+
$t
(
'common.秒'
)
}}
</div>
<div
class=
"name"
>
悬停
</div>
<div
class=
"name"
>
{{
$t
(
'common.悬停'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 9 ? 'active' : ''"
@
click=
"getActive(9, 'speed')"
>
<div
class=
"info"
:class=
"active == 9 ? 'active' : ''"
@
click=
"getActive(9, 'speed')"
>
<div
class=
"num"
>
{{
this
.
speed
}}
M/S
</div>
<div
class=
"num"
>
{{
this
.
speed
}}
M/S
</div>
<div
class=
"name"
>
速度
</div>
<div
class=
"name"
>
{{
$t
(
'common.速度'
)
}}
</div>
</div>
</div>
<div
class=
"info"
:class=
"active == 1?'active':''"
@
click=
"getActive(1,'camera')"
>
<div
class=
"info"
:class=
"active == 1?'active':''"
@
click=
"getActive(1,'camera')"
>
<!--
<div
class=
"num"
>
2/3
</div>
-->
<!--
<div
class=
"num"
>
2/3
</div>
-->
<div
class=
"name"
>
拍照
</div>
<div
class=
"name"
>
{{
$t
(
'common.拍照'
)
}}
</div>
</div>
</div>
<div
<div
class=
"info"
class=
"info"
...
@@ -68,8 +68,8 @@
...
@@ -68,8 +68,8 @@
@
click=
"getActive(10,!videoStatus ? 'start' : 'end')"
@
click=
"getActive(10,!videoStatus ? 'start' : 'end')"
>
>
<!--
<div
class=
"num"
>
2/3
</div>
-->
<!--
<div
class=
"num"
>
2/3
</div>
-->
<div
v-if=
"videoStatus == 0"
class=
"name"
>
停止录像
</div>
<div
v-if=
"videoStatus == 0"
class=
"name"
>
{{
$t
(
'common.停止录像'
)
}}
</div>
<div
v-if=
"videoStatus == 1"
class=
"name"
>
录像中
</div>
<div
v-if=
"videoStatus == 1"
class=
"name"
>
{{
$t
(
'common.录像中'
)
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"ai"
v-if=
"aiShow"
>
<div
class=
"ai"
v-if=
"aiShow"
>
...
@@ -88,16 +88,16 @@
...
@@ -88,16 +88,16 @@
<img
:src=
"item.img"
alt
/>
<img
:src=
"item.img"
alt
/>
</div>
</div>
</div>
</div>
<el-checkbox
v-model=
"item.check"
:disabled=
"!item.switch"
>
单点
</el-checkbox>
<el-checkbox
v-model=
"item.check"
:disabled=
"!item.switch"
>
{{
$t
(
'common.单点'
)
}}
</el-checkbox>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"stay"
v-if=
"stayShow"
>
<div
class=
"stay"
v-if=
"stayShow"
>
<el-input-number
@
change=
"getMinte"
v-model=
"min"
:max=
"30"
:min=
"0"
></el-input-number>
分
<el-input-number
@
change=
"getMinte"
v-model=
"min"
:max=
"30"
:min=
"0"
></el-input-number>
{{
$t
(
'common.分'
)
}}
<el-input-number
v-model=
"se"
:max=
"maxSe"
:min=
"0"
></el-input-number>
秒
<el-input-number
v-model=
"se"
:max=
"maxSe"
:min=
"0"
></el-input-number>
{{
$t
(
'common.秒'
)
}}
</div>
</div>
<div
class=
"stay"
v-if=
"speedStatus"
>
<div
class=
"stay"
v-if=
"speedStatus"
>
速度
{{
$t
(
'common.速度'
)
}}
<el-input-number
v-model=
"speed"
:max=
"12"
:min=
"1"
></el-input-number>
M/S
<el-input-number
v-model=
"speed"
:max=
"12"
:min=
"1"
></el-input-number>
M/S
</div>
</div>
</div>
</div>
...
@@ -151,42 +151,42 @@ export default {
...
@@ -151,42 +151,42 @@ export default {
aiList
:
[
aiList
:
[
{
{
id
:
1
,
id
:
1
,
type
:
"人脸识别"
,
type
:
this
.
$t
(
'common.人脸识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgFace
,
img
:
svgFace
,
},
},
{
{
id
:
2
,
id
:
2
,
type
:
"车牌识别"
,
type
:
this
.
$t
(
'controlMenu.车牌识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgCar
,
img
:
svgCar
,
},
},
{
{
id
:
3
,
id
:
3
,
type
:
"人流识别"
,
type
:
this
.
$t
(
'controlMenu.人流识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgPeople
,
img
:
svgPeople
,
},
},
{
{
id
:
4
,
id
:
4
,
type
:
"游泳识别"
,
type
:
this
.
$t
(
'common.游泳识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgSwim
,
img
:
svgSwim
,
},
},
{
{
id
:
7
,
id
:
7
,
type
:
"烟雾识别"
,
type
:
this
.
$t
(
'controlMenu.烟雾识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgYan
,
img
:
svgYan
,
},
},
{
{
id
:
6
,
id
:
6
,
type
:
"异物识别"
,
type
:
this
.
$t
(
'common.异物识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgThings
,
img
:
svgThings
,
...
@@ -326,21 +326,21 @@ export default {
...
@@ -326,21 +326,21 @@ export default {
this
.
aiList
=
[
this
.
aiList
=
[
{
{
id
:
1
,
id
:
1
,
type
:
"人脸识别"
,
type
:
this
.
$t
(
'controlMenu.人脸识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgFace
,
img
:
svgFace
,
},
},
{
{
id
:
8
,
id
:
8
,
type
:
"车牌识别"
,
type
:
this
.
$t
(
'controlMenu.车牌识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgCar
,
img
:
svgCar
,
},
},
{
{
id
:
3
,
id
:
3
,
type
:
"人流识别"
,
type
:
this
.
$t
(
'controlMenu.人流识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgPeople
,
img
:
svgPeople
,
...
@@ -348,21 +348,21 @@ export default {
...
@@ -348,21 +348,21 @@ export default {
{
{
id
:
7
,
id
:
7
,
type
:
"烟雾识别"
,
type
:
this
.
$t
(
'controlMenu.烟雾识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgYan
,
img
:
svgYan
,
},
},
{
{
id
:
4
,
id
:
4
,
type
:
"漏油识别"
,
type
:
this
.
$t
(
'controlMenu.漏油识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgSwim
,
img
:
svgSwim
,
},
},
{
{
id
:
6
,
id
:
6
,
type
:
"裸土识别"
,
type
:
this
.
$t
(
'controlMenu.裸土识别'
)
,
switch
:
false
,
switch
:
false
,
check
:
false
,
check
:
false
,
img
:
svgThings
,
img
:
svgThings
,
...
@@ -464,7 +464,7 @@ export default {
...
@@ -464,7 +464,7 @@ export default {
},
},
async
saveLine
()
{
async
saveLine
()
{
if
(
this
.
pointList
.
length
<=
1
)
if
(
this
.
pointList
.
length
<=
1
)
return
this
.
$message
.
warning
(
"生成航线至少两个航点"
);
return
this
.
$message
.
warning
(
this
.
$t
(
'common.生成航线至少两个航点'
)
);
this
.
getLineName
();
this
.
getLineName
();
this
.
disable
=
false
;
this
.
disable
=
false
;
setTimeout
(
async
()
=>
{
setTimeout
(
async
()
=>
{
...
@@ -530,6 +530,28 @@ export default {
...
@@ -530,6 +530,28 @@ export default {
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
/* 定义滚动条的宽度 */
::-webkit-scrollbar
{
width
:
2px
;
/* 滚动条的宽度 */
height
:
4px
;
}
/* 定义滚动条轨道的样式 */
::-webkit-scrollbar-track
{
background
:
#f1f1f1
;
/* 轨道的背景颜色 */
border-radius
:
10px
;
/* 轨道的圆角 */
}
/* 定义滚动条滑块的样式 */
::-webkit-scrollbar-thumb
{
background
:
#888
;
/* 滑块的背景颜色 */
border-radius
:
10px
;
/* 滑块的圆角 */
}
/* 定义滚动条滑块在悬停状态下的样式 */
::-webkit-scrollbar-thumb:hover
{
background
:
#555
;
/* 悬停时滑块的背景颜色 */
}
.pointList
{
.pointList
{
margin-top
:
50px
;
margin-top
:
50px
;
//
height
:
400px
;
//
height
:
400px
;
...
@@ -640,26 +662,31 @@ export default {
...
@@ -640,26 +662,31 @@ export default {
}
}
.point
{
.point
{
//
margin-top
:
20px
;
//
margin-top
:
20px
;
overflow-y
:
auto
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
//
border
:
solid
1px
#fff
;
width
:
694px
;
width
:
694px
;
height
:
172px
;
height
:
172px
;
//
background
:
#333
;
.form
{
.form
{
margin
:
10px
;
width
:
600px
;
width
:
600px
;
display
:
flex
;
display
:
flex
;
color
:
#fff
;
color
:
#fff
;
margin
:
4px
0
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
space-between
;
overflow-y
:
auto
;
padding
:
10px
;
.info
{
.info
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
text-align
:
center
;
align-items
:
center
;
align-items
:
center
;
}
}
.name
{
width
:
120px
;
}
.active
{
.active
{
color
:
yellow
;
color
:
yellow
;
}
}
...
@@ -668,11 +695,14 @@ export default {
...
@@ -668,11 +695,14 @@ export default {
padding
:
10px
0
;
padding
:
10px
0
;
display
:
flex
;
display
:
flex
;
//
background
:
#333
;
//
background
:
#333
;
overflow-x
:
auto
;
color
:
#fff
;
color
:
#fff
;
overflow-y
:
hidden
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
space-between
;
.item
{
.item
{
width
:
100px
;
width
:
170px
;
height
:
88px
;
height
:
88px
;
//
border
:
solid
1px
#fff
;
//
border
:
solid
1px
#fff
;
margin
:
6px
;
margin
:
6px
;
...
@@ -685,6 +715,7 @@ export default {
...
@@ -685,6 +715,7 @@ export default {
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
align-items
:
center
;
width
:
170px
;
.flexs
{
.flexs
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/player/index.vue
浏览文件 @
ec70f3f2
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<div
class=
"name"
v-clipboard:copy=
"vUrl.vUrl"
>
{{
uav
.
name
}}
</div>
<div
class=
"name"
v-clipboard:copy=
"vUrl.vUrl"
>
{{
uav
.
name
}}
</div>
<!--
<div
class=
"type"
v-if=
"networkType"
>
{{
networkType
}}
</div>
-->
<!--
<div
class=
"type"
v-if=
"networkType"
>
{{
networkType
}}
</div>
-->
<!--
<div
class=
"types"
>
{{
streamName
}}
</div>
-->
<!--
<div
class=
"types"
>
{{
streamName
}}
</div>
-->
<div
v-show=
"!isStatus"
class=
"close"
@
click
.
stop=
"close()"
>
关闭
</div>
<div
v-show=
"!isStatus"
class=
"close"
@
click
.
stop=
"close()"
>
{{
$t
(
'common.关闭'
)
}}
</div>
</div>
</div>
<!--
<videoModelChange
<!--
<videoModelChange
...
@@ -139,12 +139,12 @@
...
@@ -139,12 +139,12 @@
<div
class=
"title_box"
>
<div
class=
"title_box"
>
<div
class=
"title pl20"
>
<div
class=
"title pl20"
>
<img
src=
"./assets/images/mount_head.png"
/>
<img
src=
"./assets/images/mount_head.png"
/>
<div
class=
"font"
>
视频信息
</div>
<div
class=
"font"
>
{{
$t
(
'common.视频信息'
)
}}
</div>
</div>
</div>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
<div
class=
"icon-box"
></div>
<div
class=
"icon-box"
></div>
<div
class=
"cf ml20 mr10 c70d cp"
@
click
.
stop=
"showInfo = false"
>
<div
class=
"cf ml20 mr10 c70d cp"
@
click
.
stop=
"showInfo = false"
>
关闭
{{
$t
(
'common.关闭'
)
}}
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -315,7 +315,7 @@
...
@@ -315,7 +315,7 @@
<div
class=
"left"
>
<div
class=
"left"
>
<el-tooltip
<el-tooltip
v-if=
"streamSelect.toUpperCase() == 'QINGLIU'"
v-if=
"streamSelect.toUpperCase() == 'QINGLIU'"
content=
"视频信息
"
:content=
"$t('common.视频信息')
"
placement=
"bottom"
placement=
"bottom"
:style=
"isStatus ? 'margin-left:100px' : ''"
:style=
"isStatus ? 'margin-left:100px' : ''"
>
>
...
@@ -328,7 +328,7 @@
...
@@ -328,7 +328,7 @@
/>
/>
</el-tooltip>
</el-tooltip>
<el-tooltip
<el-tooltip
content=
"是否启动瞄准镜
"
:content=
"$t('common.是否启动瞄准镜')
"
placement=
"bottom"
placement=
"bottom"
v-if=
"!isStatus"
v-if=
"!isStatus"
>
>
...
@@ -343,8 +343,8 @@
...
@@ -343,8 +343,8 @@
v-if=
"!isStatus"
v-if=
"!isStatus"
:content=
"
:content=
"
ygisCenterFlag
ygisCenterFlag
? `
摇杆位于中位
$
{(ygValue
&&
ygValue.toFixed(2)) || ''}`
? `
$
{$t('common.摇杆位于中位')}
${(ygValue
&&
ygValue.toFixed(2)) || ''}`
: `摇杆未在中位
${(ygValue
&&
ygValue.toFixed(2)) || ''}`
: `${$t('common.摇杆未在中位')}
${(ygValue
&&
ygValue.toFixed(2)) || ''}`
"
"
placement="bottom"
placement="bottom"
>
>
...
@@ -361,7 +361,7 @@
...
@@ -361,7 +361,7 @@
<el-select
<el-select
class=
"video_type mr24"
class=
"video_type mr24"
v-model=
"streamSelect"
v-model=
"streamSelect"
placeholder=
"切换源
"
:placeholder=
"$t('common.切换源')
"
>
>
<el-option
<el-option
v-for=
"(item, i) in streamOptions"
v-for=
"(item, i) in streamOptions"
...
@@ -373,7 +373,7 @@
...
@@ -373,7 +373,7 @@
<el-select
<el-select
class=
"big_type"
class=
"big_type"
v-model=
"sizeSelect"
v-model=
"sizeSelect"
placeholder=
"比例
"
:placeholder=
"$t('common.比例')
"
@
change=
"changeBig"
@
change=
"changeBig"
>
>
<el-option
<el-option
...
@@ -389,7 +389,7 @@
...
@@ -389,7 +389,7 @@
@
click
.
stop=
"reset"
@
click
.
stop=
"reset"
></div>
></div>
<!-- FPV切换 -->
<!-- FPV切换 -->
<el-tooltip
content=
"模式切换
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.模式切换')
"
placement=
"bottom"
>
<div
<div
v-if=
"streamSelect.toUpperCase() !== 'QINGLIU'"
v-if=
"streamSelect.toUpperCase() !== 'QINGLIU'"
class=
"iconfont icon-moshiqiehuan modelStyle menu-item"
class=
"iconfont icon-moshiqiehuan modelStyle menu-item"
...
@@ -406,27 +406,27 @@
...
@@ -406,27 +406,27 @@
<div
class=
"right-menu"
>
<div
class=
"right-menu"
>
<template
v-if=
"uav.network === 2"
>
<template
v-if=
"uav.network === 2"
>
<el-tooltip
content=
"拍照
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.拍照')
"
placement=
"bottom"
>
<div
class=
"menu-item plate"
@
click
.
stop=
"photojz"
>
<div
class=
"menu-item plate"
@
click
.
stop=
"photojz"
>
<img
src=
"./assets/images/ai.png"
/>
<img
src=
"./assets/images/ai.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
<el-tooltip
<el-tooltip
v-if=
"!screenRecordingStatus"
v-if=
"!screenRecordingStatus"
content=
"开始录像
"
:content=
"$t('common.开始录像')
"
placement=
"bottom"
placement=
"bottom"
>
>
<div
class=
"record menu-item"
@
click
.
stop=
"getRecord"
>
<div
class=
"record menu-item"
@
click
.
stop=
"getRecord"
>
<img
src=
"./assets/images/record.png"
/>
<img
src=
"./assets/images/record.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
<el-tooltip
v-else
content=
"停止录像
"
placement=
"bottom"
>
<el-tooltip
v-else
:content=
"$t('common.停止录像')
"
placement=
"bottom"
>
<div
class=
"record menu-item"
@
click
.
stop=
"getRecord"
>
<div
class=
"record menu-item"
@
click
.
stop=
"getRecord"
>
<img
src=
"./assets/images/stop.png"
/>
<img
src=
"./assets/images/stop.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
</
template
>
</
template
>
<el-tooltip
content=
"截图
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.截图')
"
placement=
"bottom"
>
<div
class=
"photojz menu-item"
@
click
.
stop=
"photo"
>
<div
class=
"photojz menu-item"
@
click
.
stop=
"photo"
>
<img
src=
"./assets/images/photojz.svg"
/>
<img
src=
"./assets/images/photojz.svg"
/>
</div>
</div>
...
@@ -435,7 +435,7 @@
...
@@ -435,7 +435,7 @@
<div
<div
class=
"menu-item"
class=
"menu-item"
@
click
.
stop=
"startLinePoint"
@
click
.
stop=
"startLinePoint"
content=
"航点动作
"
:content=
"$t('common.航点动作')
"
>
>
<img
src=
"./assets/images/point_small.svg"
/>
<img
src=
"./assets/images/point_small.svg"
/>
</div>
</div>
...
@@ -567,7 +567,7 @@ export default {
...
@@ -567,7 +567,7 @@ export default {
*/
*/
networkType
()
{
networkType
()
{
// console.log('网络判断', this.uav.videos)
// console.log('网络判断', this.uav.videos)
let
name
=
"公网"
;
let
name
=
this
.
$t
(
'common.公网'
)
;
return
name
;
return
name
;
},
},
...
@@ -793,7 +793,7 @@ export default {
...
@@ -793,7 +793,7 @@ export default {
this
.
showFlywayAction
=
true
;
this
.
showFlywayAction
=
true
;
}
else
{
}
else
{
// this.$message.warning("当前高度不可创建航点动作!");
// this.$message.warning("当前高度不可创建航点动作!");
this
.
$message
.
warning
(
"当前高度创建航点动作可能不安全!"
);
this
.
$message
.
warning
(
this
.
$t
(
'controlMenu.当前高度创建航点动作可能不安全'
)
);
this
.
showFlywayAction
=
true
;
this
.
showFlywayAction
=
true
;
}
}
},
},
...
@@ -890,7 +890,7 @@ export default {
...
@@ -890,7 +890,7 @@ export default {
return
;
return
;
}
}
if
(
this
.
healthData
.
NX
.
code
!==
"0x2110000"
)
{
if
(
this
.
healthData
.
NX
.
code
!==
"0x2110000"
)
{
return
this
.
$message
.
error
(
"录像失败,NX通信异常!"
);
return
this
.
$message
.
error
(
this
.
$t
(
'common.录像失败NX通信异常'
)
);
}
}
this
.
screenRecordingStatus
=
!
this
.
screenRecordingStatus
;
this
.
screenRecordingStatus
=
!
this
.
screenRecordingStatus
;
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/videoTranscribe"
,
{
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/videoTranscribe"
,
{
...
@@ -903,11 +903,11 @@ export default {
...
@@ -903,11 +903,11 @@ export default {
callback
:
(
isOk
)
=>
{
callback
:
(
isOk
)
=>
{
if
(
isOk
)
{
if
(
isOk
)
{
this
.
$message
.
success
(
this
.
$message
.
success
(
`
${
this
.
screenRecordingStatus
?
"开始"
:
"结束"
}
录像
`
`
${
this
.
screenRecordingStatus
?
this
.
$t
(
'common.开始'
)
:
this
.
$t
(
'common.结束'
)}${
this
.
$t
(
'common.录像'
)}
`
);
);
}
else
{
}
else
{
this
.
$message
.
error
(
this
.
$message
.
error
(
`
${
this
.
screenRecordingStatus
?
"开始"
:
"结束"
}
录像失败
`
`
${
this
.
screenRecordingStatus
?
this
.
$t
(
'common.开始'
)
:
this
.
$t
(
'common.结束'
)}${
this
.
$t
(
'common.录像失败'
)}
`
);
);
this
.
screenRecordingStatus
=
!
this
.
screenRecordingStatus
;
this
.
screenRecordingStatus
=
!
this
.
screenRecordingStatus
;
}
}
...
@@ -922,7 +922,7 @@ export default {
...
@@ -922,7 +922,7 @@ export default {
return
;
return
;
}
}
if
(
this
.
healthData
.
NX
.
code
!==
"0x2110000"
)
{
if
(
this
.
healthData
.
NX
.
code
!==
"0x2110000"
)
{
return
this
.
$message
.
error
(
"拍照失败,NX通信异常!"
);
return
this
.
$message
.
error
(
this
.
$t
(
'common.拍照失败NX通信异常'
)
);
}
}
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/takePhotos"
,
{
this
.
$store
.
dispatch
(
"MMCFlightControlCenter/uav/takePhotos"
,
{
isQingLiu
:
this
.
isQingLiu
,
isQingLiu
:
this
.
isQingLiu
,
...
@@ -931,7 +931,7 @@ export default {
...
@@ -931,7 +931,7 @@ export default {
name: "z30Pro", // 挂载名称(如果知道挂载名称,将传名称即可,通道号可以不用传)
name: "z30Pro", // 挂载名称(如果知道挂载名称,将传名称即可,通道号可以不用传)
taskID: "", // 任务ID,可传可不传 */
taskID: "", // 任务ID,可传可不传 */
callback
:
(
isOk
)
=>
{
callback
:
(
isOk
)
=>
{
isOk
&&
this
.
$message
.
success
(
`拍照完成`
);
isOk
&&
this
.
$message
.
success
(
this
.
$t
(
'common.拍照完成'
)
);
},
},
});
});
},
},
...
@@ -943,7 +943,7 @@ export default {
...
@@ -943,7 +943,7 @@ export default {
if
(
blob
)
{
if
(
blob
)
{
console
.
log
(
blob
,
window
.
URL
.
createObjectURL
(
blob
));
console
.
log
(
blob
,
window
.
URL
.
createObjectURL
(
blob
));
let
formData
=
new
FormData
();
let
formData
=
new
FormData
();
formData
.
append
(
"file"
,
blob
,
`
截图
.jpeg`
);
formData
.
append
(
"file"
,
blob
,
`
${
this
.
$t
(
'common.截图'
)}
.jpeg`
);
let
uploadRes
=
await
ViewLibrary
.
uploadFile
(
formData
);
let
uploadRes
=
await
ViewLibrary
.
uploadFile
(
formData
);
if
(
uploadRes
.
code
===
0
)
{
if
(
uploadRes
.
code
===
0
)
{
...
@@ -953,16 +953,16 @@ export default {
...
@@ -953,16 +953,16 @@ export default {
deviceId
:
this
.
uav
.
deviceId
,
deviceId
:
this
.
uav
.
deviceId
,
});
});
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
this
.
$message
.
success
(
"截屏成功"
);
this
.
$message
.
success
(
this
.
$t
(
'common.截屏成功'
)
);
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
msg
||
"截屏失败"
);
this
.
$message
.
error
(
res
.
msg
||
this
.
$t
(
'common.截屏失败'
)
);
}
}
}
else
{
}
else
{
this
.
$message
.
error
(
uploadRes
.
msg
||
"截屏失败"
);
this
.
$message
.
error
(
uploadRes
.
msg
||
this
.
$t
(
'common.截屏失败'
)
);
}
}
return
;
return
;
}
}
this
.
$message
.
warning
(
"截屏失败"
);
this
.
$message
.
warning
(
this
.
$t
(
'common.截屏失败'
)
);
},
},
// 人脸车牌识别
// 人脸车牌识别
handle
(
command
)
{
handle
(
command
)
{
...
@@ -1166,7 +1166,6 @@ export default {
...
@@ -1166,7 +1166,6 @@ export default {
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
right
:
0
;
right
:
0
;
width
:
46px
;
height
:
26px
;
height
:
26px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
26px
;
line-height
:
26px
;
...
...
src/components/MMCFlightControlCenter/components/uavApplications/components/uavList/components/list/components/item/index.vue
浏览文件 @
ec70f3f2
...
@@ -243,7 +243,6 @@ export default {
...
@@ -243,7 +243,6 @@ export default {
let
tmjData
=
JSON
.
parse
(
localStorage
.
getItem
(
"tmj"
));
let
tmjData
=
JSON
.
parse
(
localStorage
.
getItem
(
"tmj"
));
if
(
tmjData
)
{
if
(
tmjData
)
{
const
userList
=
this
.
handleGetMenuList
(
tmjData
.
user
.
menuList
);
const
userList
=
this
.
handleGetMenuList
(
tmjData
.
user
.
menuList
);
console
.
log
(
userList
,
"userList"
);
// 使用一个映射对象来存储权限ID和对应的标志
// 使用一个映射对象来存储权限ID和对应的标志
const
permissionMap
=
{
const
permissionMap
=
{
3108
:
"IsShowPane"
,
// 控制面板权限
3108
:
"IsShowPane"
,
// 控制面板权限
...
...
src/components/MMCMount/MMC_Gimbal_Z60R/index.vue
浏览文件 @
ec70f3f2
...
@@ -147,7 +147,7 @@
...
@@ -147,7 +147,7 @@
</div>
</div>
</div>
</div>
<div
class=
"form-item"
>
<div
class=
"form-item"
>
<div
class=
"label-box"
>
AI识别
:
</div>
<div
class=
"label-box"
>
{{
$t
(
'common.AI识别'
)
}}
:
</div>
<div
class=
"input-box"
>
<div
class=
"input-box"
>
<el-radio-group
v-model=
"ai_mode"
@
change=
"handle_change_ai_mode"
>
<el-radio-group
v-model=
"ai_mode"
@
change=
"handle_change_ai_mode"
>
<el-radio
<el-radio
...
...
src/components/MMCMount/MMC_Gimbal_ZT60R/index.vue
浏览文件 @
ec70f3f2
...
@@ -323,7 +323,7 @@
...
@@ -323,7 +323,7 @@
</div>
</div>
<div
class=
"form-item"
>
<div
class=
"form-item"
>
<div
class=
"label-box"
>
AI识别
:
</div>
<div
class=
"label-box"
>
{{
$t
(
'common.AI识别'
)
}}
:
</div>
<div
class=
"input-box"
>
<div
class=
"input-box"
>
<el-radio-group
@
change=
"handle_change_ai_mode"
v-model=
"ai_mode"
>
<el-radio-group
@
change=
"handle_change_ai_mode"
v-model=
"ai_mode"
>
<el-radio
<el-radio
...
...
src/components/MMCPlayer/components/faceai/index.vue
浏览文件 @
ec70f3f2
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
<div
class=
"props"
>
{{
item
.
addr
||
item
.
address
||
'暂无'
}}
</div>
<div
class=
"props"
>
{{
item
.
addr
||
item
.
address
||
'暂无'
}}
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"title"
>
AI识别
:
</div>
<div
class=
"title"
>
{{
$t
(
'common.AI识别'
)
}}
:
</div>
<div
class=
"props border"
>
{{
item
.
labels
[
0
]
||
'暂无'
}}
</div>
<div
class=
"props border"
>
{{
item
.
labels
[
0
]
||
'暂无'
}}
</div>
</div>
</div>
</div>
</div>
...
...
src/components/MMCPlayer/index.vue
浏览文件 @
ec70f3f2
...
@@ -581,7 +581,6 @@ export default {
...
@@ -581,7 +581,6 @@ export default {
}
}
.close
{
.close
{
flex-shrink
:
0
;
flex-shrink
:
0
;
width
:
46px
;
height
:
26px
;
height
:
26px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
26px
;
line-height
:
26px
;
...
...
src/observe/fckernel/nest/components/airway-edit/manual/index.vue
浏览文件 @
ec70f3f2
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div>
<div>
<div
class=
"right-box mt10"
>
<div
class=
"right-box mt10"
>
<div
class=
"before-point"
:class=
"
{ disabled: action.curr_index
<
=
0
}"
@
click=
"handle_before_point"
>
<div
class=
"before-point"
:class=
"
{ disabled: action.curr_index
<
=
0
}"
@
click=
"handle_before_point"
>
上一航点
{{
$t
(
'上一航点'
)
}}
</div>
</div>
<div
class=
"no"
>
<div
class=
"no"
>
<span
class=
"current"
>
{{
action
.
curr_index
}}
</span>
<span
class=
"current"
>
{{
action
.
curr_index
}}
</span>
...
@@ -13,26 +13,26 @@
...
@@ -13,26 +13,26 @@
<div
class=
"after-point"
:class=
"
{
<div
class=
"after-point"
:class=
"
{
disabled: action.curr_index >= airline.points.length,
disabled: action.curr_index >= airline.points.length,
}" @click="handle_after_point">
}" @click="handle_after_point">
下一航点
{{
$t
(
'下一航点'
)
}}
</div>
</div>
</div>
</div>
<div
class=
"ctx-box"
>
<div
class=
"ctx-box"
>
<div
class=
"form-box"
>
<div
class=
"form-box"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"96px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"96px"
>
<el-form-item
label=
"航线名称
"
>
<el-form-item
:label=
"$t('航线名称')
"
>
<el-input
:disabled=
"true"
v-model=
"airline.filename"
/>
<el-input
:disabled=
"true"
v-model=
"airline.filename"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"航线速度
"
>
<el-form-item
:label=
"$t('航线速度')
"
>
<div
class=
"item-group"
>
<div
class=
"item-group"
>
<el-input
oninput=
"value=value.replace(/[^0-9.]/g,'')"
v-model=
"airline.line.baseSpeed"
/>
<el-input
oninput=
"value=value.replace(/[^0-9.]/g,'')"
v-model=
"airline.line.baseSpeed"
/>
<span
class=
"unit"
>
( m/s )
</span>
<span
class=
"unit"
>
( m/s )
</span>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"目标位置
"
prop=
"destination"
>
<el-form-item
:label=
"$t('目标位置')
"
prop=
"destination"
>
<div
class=
"item-group"
:title=
"form.destination"
>
<div
class=
"item-group"
:title=
"form.destination"
>
<el-autocomplete
:popper-append-to-body=
'false'
v-model=
"destination.name"
:fetch-suggestions=
"handle_query_address_async"
<el-autocomplete
:popper-append-to-body=
'false'
v-model=
"destination.name"
:fetch-suggestions=
"handle_query_address_async"
placeholder=
"请输入目标位置
"
:trigger-on-focus=
"false"
@
select=
"handle_select_address"
clearable
>
:placeholder=
"$t('请输入目标位置')
"
:trigger-on-focus=
"false"
@
select=
"handle_select_address"
clearable
>
<template
slot-scope=
"
{ item }">
<template
slot-scope=
"
{ item }">
<div>
<div>
<span
style=
"font-size: 14px; color: #333"
>
{{
<span
style=
"font-size: 14px; color: #333"
>
{{
...
@@ -46,52 +46,52 @@
...
@@ -46,52 +46,52 @@
</div>
</div>
</el-form-item>
</el-form-item>
<!-- <div class="divider"></div> -->
<!-- <div class="divider"></div> -->
<el-form-item
label=
"选择鹰巢
"
v-if=
"flag"
prop=
"nestId"
>
<el-form-item
:label=
"$t('选择鹰巢')
"
v-if=
"flag"
prop=
"nestId"
>
<el-select
v-model=
"form.nestId"
:popper-append-to-body=
"false"
>
<el-select
v-model=
"form.nestId"
:popper-append-to-body=
"false"
>
<el-option
v-for=
"item in getNestListForLineList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
<el-option
v-for=
"item in getNestListForLineList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"场景
"
prop=
"scene"
>
<el-form-item
:label=
"$t('场景')
"
prop=
"scene"
>
<el-select
v-model=
"scene"
:popper-append-to-body=
"false"
@
change=
"handle_change"
>
<el-select
v-model=
"scene"
:popper-append-to-body=
"false"
@
change=
"handle_change"
>
<el-option
v-for=
"item in scene_list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.name"
/>
<el-option
v-for=
"item in scene_list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.name"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"纬度
"
prop=
"lat"
>
<el-form-item
:label=
"$t('纬度')
"
prop=
"lat"
>
<el-input
v-model=
"form.lat"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
<el-input
v-model=
"form.lat"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"经度
"
prop=
"lon"
>
<el-form-item
:label=
"$t('经度')
"
prop=
"lon"
>
<el-input
v-model=
"form.lon"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
<el-input
v-model=
"form.lon"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"高度
"
prop=
"alt"
>
<el-form-item
:label=
"$t('高度')
"
prop=
"alt"
>
<div
class=
"item-group"
>
<div
class=
"item-group"
>
<el-input
@
change=
"(val) => handle_change_field('alt', val)"
v-model
.
number=
"form.alt"
<el-input
@
change=
"(val) => handle_change_field('alt', val)"
v-model
.
number=
"form.alt"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
oninput=
"value=value.replace(/[^0-9.]/g,'')"
/>
<span
class=
"unit"
>
( m )
</span>
<span
class=
"unit"
>
( m )
</span>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"偏航角
"
>
<el-form-item
:label=
"$t('偏航角')
"
>
<div
class=
"item-group"
>
<div
class=
"item-group"
>
<el-input-number
@
change=
"(val) => handle_change_field('pitch', val)"
v-model=
"form.pitch"
:min=
"-90"
<el-input-number
@
change=
"(val) => handle_change_field('pitch', val)"
v-model=
"form.pitch"
:min=
"-90"
:max=
"90"
label=
"描述文字"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
></el-input-number>
:max=
"90"
label=
"描述文字"
oninput=
"value=value.replace(/[^0-9.]/g,'')"
></el-input-number>
<span
class=
"unit"
>
( ° )
</span>
<span
class=
"unit"
>
( ° )
</span>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"俯仰角
"
>
<el-form-item
:label=
"$t('俯仰角')
"
>
<div
class=
"item-group"
>
<div
class=
"item-group"
>
<el-input-number
@
change=
"(val) => handle_change_field('gimbalPitch', val)"
v-model=
"form.gimbalPitch"
<el-input-number
@
change=
"(val) => handle_change_field('gimbalPitch', val)"
v-model=
"form.gimbalPitch"
:min=
"-90"
:max=
"90"
label=
"描述文字"
oninput
.
native=
"value=value.replace(/[^0-9.]/g,'')"
></el-input-number>
:min=
"-90"
:max=
"90"
label=
"描述文字"
oninput
.
native=
"value=value.replace(/[^0-9.]/g,'')"
></el-input-number>
<span
class=
"unit"
>
( ° )
</span>
<span
class=
"unit"
>
( ° )
</span>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"航线标签
"
prop=
"lat"
>
<el-form-item
:label=
"$t('航线标签')
"
prop=
"lat"
>
<el-select
v-model=
"labvalue"
multiple
placeholder=
"请选择航线标签
"
>
<el-select
v-model=
"labvalue"
multiple
:placeholder=
"$t('请选择航线标签')
"
>
<el-option
v-for=
"item in LablistL"
:key=
"item.id"
:label=
"item.labelName"
:value=
"item.id"
>
<el-option
v-for=
"item in LablistL"
:key=
"item.id"
:label=
"item.labelName"
:value=
"item.id"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"航点动作
"
prop=
"actions"
>
<el-form-item
:label=
"$t('航点动作')
"
prop=
"actions"
>
<el-link
@
click=
"handle_show_action"
style=
"color: #409eff"
>
{{ form.actions.length }}
个动作
<i
<el-link
@
click=
"handle_show_action"
style=
"color: #409eff"
>
{{ form.actions.length }}
{{ $t('个动作') }}
<i
class=
"el-icon-d-arrow-right"
></i>
class=
"el-icon-d-arrow-right"
></i>
</el-link>
</el-link>
</el-form-item>
</el-form-item>
...
@@ -101,8 +101,8 @@
...
@@ -101,8 +101,8 @@
<div
class=
"bottom-box"
>
<div
class=
"bottom-box"
>
<!-- <div class="iconfont icon-zengjia" title="添加"></div> -->
<!-- <div class="iconfont icon-zengjia" title="添加"></div> -->
<div
@
click=
"handle_save_line"
class=
"iconfont icon-baocun"
title=
"保存航线
"
></div>
<div
@
click=
"handle_save_line"
class=
"iconfont icon-baocun"
:title=
"$t('保存航线')
"
></div>
<div
@
click=
"handle_remove_point"
class=
"iconfont icon-shanchu"
title=
"删除航点
"
></div>
<div
@
click=
"handle_remove_point"
class=
"iconfont icon-shanchu"
:title=
"$t('删除航点')
"
></div>
</div>
</div>
<!-- <el-dialog
<!-- <el-dialog
...
@@ -120,22 +120,22 @@
...
@@ -120,22 +120,22 @@
> -->
> -->
<div
class=
"w500 action-list"
v-if=
"action.visible"
>
<div
class=
"w500 action-list"
v-if=
"action.visible"
>
<div
class=
"header"
>
<div
class=
"header"
>
<div
class=
"hd-box"
>
新增航点动作
</div>
<div
class=
"hd-box"
>
{{ $t('新增航点动作') }}
</div>
<div
class=
"hd-box cp mr20"
@
click=
"
<div
class=
"hd-box cp mr20"
@
click=
"
action.visible = false;
action.visible = false;
action.list = [];
action.list = [];
"
>
"
>
关闭
{{ $t('关闭') }}
</div>
</div>
</div>
</div>
<div
class=
"actions-box"
>
<div
class=
"actions-box"
>
<div
class=
"title-box"
>
<div
class=
"title-box"
>
<div
class=
"title"
>
航点动作
</div>
<div
class=
"title"
>
{{ $t('航点动作') }}
</div>
<el-dropdown
trigger=
"click"
>
<el-dropdown
trigger=
"click"
>
<el-button
size=
"small"
type=
"primary"
icon=
"el-icon-plus"
>
增加
</el-button>
<el-button
size=
"small"
type=
"primary"
icon=
"el-icon-plus"
>
{{ $t('增加') }}
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"(item, index) in action.types"
:key=
"index"
>
<el-dropdown-item
v-for=
"(item, index) in action.types"
:key=
"index"
>
<div
@
click=
"handle_add_action(item)"
>
{{
item.label
}}
</div>
<div
@
click=
"handle_add_action(item)"
>
{{
$t(item.label)
}}
</div>
</el-dropdown-item>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
...
@@ -146,7 +146,7 @@
...
@@ -146,7 +146,7 @@
<div
v-if=
"item.input"
class=
"item-input"
>
<div
v-if=
"item.input"
class=
"item-input"
>
<component
:is=
"item.input"
:min=
"item.min"
:max=
"item.max"
v-model=
"item.actionParam"
/>
<component
:is=
"item.input"
:min=
"item.min"
:max=
"item.max"
v-model=
"item.actionParam"
/>
</div>
</div>
<div
@
click=
"handle_delete_action(index, item)"
class=
"iconfont icon-shanchu"
title=
"删除
"
></div>
<div
@
click=
"handle_delete_action(index, item)"
class=
"iconfont icon-shanchu"
:title=
"$t('删除')
"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -154,8 +154,8 @@
...
@@ -154,8 +154,8 @@
<el-button
size=
"small"
@
click=
"
<el-button
size=
"small"
@
click=
"
action.visible = false;
action.visible = false;
action.list = [];
action.list = [];
"
>
取 消
</el-button>
"
>
{{ $t('取 消') }}
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"handle_save_action"
>
确 定
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"handle_save_action"
>
{{ $t('确 定') }}
</el-button>
</span>
</span>
</div>
</div>
<!-- </el-dialog> -->
<!-- </el-dialog> -->
...
@@ -190,7 +190,7 @@
...
@@ -190,7 +190,7 @@
// /^[\-\+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/;
// /^[\-\+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/;
console
.
log
(
"value"
,
value
);
console
.
log
(
"value"
,
value
);
if
(
value
<
-
180
||
value
>
180
)
{
if
(
value
<
-
180
||
value
>
180
)
{
callback
(
new
Error
(
"请输入正确经度值(-180.0-180.0)"
));
callback
(
new
Error
(
this
.
$t
(
'请输入正确经度值(-180.0-180.0)'
)
));
}
else
{
}
else
{
callback
();
callback
();
}
}
...
@@ -199,21 +199,21 @@
...
@@ -199,21 +199,21 @@
// let reg = /^[\-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
// let reg = /^[\-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
console
.
log
(
"value"
,
value
);
console
.
log
(
"value"
,
value
);
if
(
value
<
-
90
||
value
>
90
)
{
if
(
value
<
-
90
||
value
>
90
)
{
callback
(
new
Error
(
"请输入正确纬度值(-90.0-90.0)"
));
callback
(
new
Error
(
this
.
$t
(
'请输入正确纬度值(-90.0-90.0)'
)
));
}
else
{
}
else
{
callback
();
callback
();
}
}
};
};
let
validateAlt
=
(
rule
,
value
,
callback
)
=>
{
let
validateAlt
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
>
150
)
{
if
(
value
>
150
)
{
callback
(
new
Error
(
"航点高度不可超过150m"
));
callback
(
new
Error
(
this
.
$t
(
'航点高度不可超过150m'
)
));
}
else
{
}
else
{
callback
();
callback
();
}
}
};
};
let
validateNestId
=
(
rule
,
value
,
callback
)
=>
{
let
validateNestId
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
if
(
!
value
)
{
callback
(
new
Error
(
"请选择鹰巢"
));
callback
(
new
Error
(
this
.
$t
(
'请选择鹰巢'
)
));
}
else
{
}
else
{
callback
();
callback
();
}
}
...
...
src/observe/fckernel/uav/components/float-playerfk/index.vue
浏览文件 @
ec70f3f2
...
@@ -7,9 +7,9 @@
...
@@ -7,9 +7,9 @@
<div
class=
"name"
v-clipboard:copy=
"vUrl.vUrl"
>
{{
data
.
orgName
}}
-
{{
data
.
deviceName
}}
</div>
<div
class=
"name"
v-clipboard:copy=
"vUrl.vUrl"
>
{{
data
.
orgName
}}
-
{{
data
.
deviceName
}}
</div>
<div
class=
"type"
v-if=
"networkType"
>
{{
networkType
}}
</div>
<div
class=
"type"
v-if=
"networkType"
>
{{
networkType
}}
</div>
<div
class=
"types"
>
{{
streamName
}}
</div>
<div
class=
"types"
>
{{
streamName
}}
</div>
<div
v-show=
"!isStatus"
class=
"close"
@
click=
"close(data)"
>
关闭
</div>
<div
v-show=
"!isStatus"
class=
"close"
@
click=
"close(data)"
>
{{
$t
(
'common.关闭'
)
}}
</div>
</div>
</div>
<el-tooltip
content=
"模式切换
"
placement=
"bottom"
v-if=
"streamSelect !== 'QingLiu'"
>
<el-tooltip
:content=
"$t('common.模式切换')
"
placement=
"bottom"
v-if=
"streamSelect !== 'QingLiu'"
>
<div
class=
"cp pa iconfont icon-moshiqiehuan cf modelStyle"
@
click=
"change"
></div>
<div
class=
"cp pa iconfont icon-moshiqiehuan cf modelStyle"
@
click=
"change"
></div>
</el-tooltip>
</el-tooltip>
<components
<components
...
@@ -94,7 +94,7 @@
...
@@ -94,7 +94,7 @@
</div>
-->
</div>
-->
</div>
</div>
<div
class=
"play"
>
<div
class=
"play"
>
<el-tooltip
v-if=
"streamSelect == 'QingLiu'"
class=
"left ml24"
content=
"信息
"
placement=
"bottom"
>
<el-tooltip
v-if=
"streamSelect == 'QingLiu'"
class=
"left ml24"
:content=
"$t('common.信息')
"
placement=
"bottom"
>
<div
@
click=
"getInfo"
>
<div
@
click=
"getInfo"
>
<img
src=
"~./assets/info.png"
alt=
""
>
<img
src=
"~./assets/info.png"
alt=
""
>
</div>
</div>
...
@@ -102,7 +102,7 @@
...
@@ -102,7 +102,7 @@
<div
v-else
class=
"left ml24"
></div>
<div
v-else
class=
"left ml24"
></div>
<div
class=
"right mr14"
>
<div
class=
"right mr14"
>
<div
class=
"search mr22"
>
<div
class=
"search mr22"
>
<el-select
class=
"video_type mr24"
v-model=
"streamSelect"
placeholder=
"切换源
"
>
<el-select
class=
"video_type mr24"
v-model=
"streamSelect"
:placeholder=
"$t('common.切换源')
"
>
<el-option
<el-option
v-for=
"item in streamOptions"
v-for=
"item in streamOptions"
:key=
"item.value"
:key=
"item.value"
...
@@ -110,7 +110,7 @@
...
@@ -110,7 +110,7 @@
:value=
"item.value"
:value=
"item.value"
></el-option>
></el-option>
</el-select>
</el-select>
<el-select
class=
"big_type"
v-model=
"sizeSelect"
placeholder=
"比例
"
@
change=
"changeBig"
>
<el-select
class=
"big_type"
v-model=
"sizeSelect"
:placeholder=
"$t('common.比例')
"
@
change=
"changeBig"
>
<el-option
<el-option
v-for=
"item in sizeOptions2"
v-for=
"item in sizeOptions2"
:key=
"item.value"
:key=
"item.value"
...
@@ -123,24 +123,24 @@
...
@@ -123,24 +123,24 @@
<div
class=
"pointer iconfont icon-quanping cf f16"
@
click=
"screen"
></div>
<div
class=
"pointer iconfont icon-quanping cf f16"
@
click=
"screen"
></div>
</div>
</div>
</div>
</div>
<el-tooltip
class=
"cp pa right10 cf ai"
content=
"AI识别
"
placement=
"bottom"
>
<el-tooltip
class=
"cp pa right10 cf ai"
:content=
"$t('common.AI识别')
"
placement=
"bottom"
>
<div
@
click=
"aiVisible = !aiVisible"
>
<div
@
click=
"aiVisible = !aiVisible"
>
<img
src=
"~./assets/car.png"
/>
<img
src=
"~./assets/car.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
<div
class=
"faceAndcar cp pa right70 cf"
v-if=
"aiVisible"
>
<div
class=
"faceAndcar cp pa right70 cf"
v-if=
"aiVisible"
>
<el-tooltip
content=
"人脸识别
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.人脸识别')
"
placement=
"bottom"
>
<div
class=
"plan"
@
click=
"handle('a')"
>
<div
class=
"plan"
@
click=
"handle('a')"
>
<img
src=
"~./assets/faceAI2.png"
/>
<img
src=
"~./assets/faceAI2.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
<el-tooltip
content=
"车辆识别
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.车辆识别')
"
placement=
"bottom"
>
<div
class=
"plan"
@
click=
"handle('b')"
>
<div
class=
"plan"
@
click=
"handle('b')"
>
<img
src=
"~./assets/carAI2.png"
/>
<img
src=
"~./assets/carAI2.png"
/>
</div>
</div>
</el-tooltip>
</el-tooltip>
</div>
</div>
<el-tooltip
content=
"拍照
"
placement=
"bottom"
>
<el-tooltip
:content=
"$t('common.拍照')
"
placement=
"bottom"
>
<div
class=
"cp pa right10 cf plate"
@
click=
"photo"
>
<div
class=
"cp pa right10 cf plate"
@
click=
"photo"
>
<img
src=
"~./assets/ai.png"
/>
<img
src=
"~./assets/ai.png"
/>
</div>
</div>
...
@@ -263,21 +263,21 @@ export default {
...
@@ -263,21 +263,21 @@ export default {
let
name
=
""
;
let
name
=
""
;
try
{
try
{
if
(
this
.
data
.
videos
.
checkOnLine
==
1
)
{
if
(
this
.
data
.
videos
.
checkOnLine
==
1
)
{
name
=
"公网"
;
name
=
this
.
$t
(
'common.公网'
)
;
}
else
{
}
else
{
if
(
this
.
uavData
?.
link
)
{
if
(
this
.
uavData
?.
link
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
priority
==
2
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
priority
==
2
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
using
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
using
)
{
name
=
"专网"
;
name
=
this
.
$t
(
'common.专网'
)
;
}
else
{
}
else
{
name
=
"公网"
;
name
=
this
.
$t
(
'common.公网'
)
;
}
}
}
}
if
(
this
.
uavData
?.
link
[
0
]?.
priority
==
3
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
priority
==
3
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
using
)
{
if
(
this
.
uavData
?.
link
[
0
]?.
using
)
{
name
=
"公网"
;
name
=
this
.
$t
(
'common.公网'
)
;
}
else
{
}
else
{
name
=
"专网"
;
name
=
this
.
$t
(
'common.专网'
)
;
}
}
}
}
}
}
...
@@ -294,7 +294,7 @@ export default {
...
@@ -294,7 +294,7 @@ export default {
streams
()
{
streams
()
{
let
networkKey1
=
""
;
let
networkKey1
=
""
;
let
networkKey2
=
""
;
let
networkKey2
=
""
;
if
(
this
.
networkType
===
"专网"
)
{
if
(
this
.
networkType
===
this
.
$t
(
'common.专网'
)
)
{
networkKey1
=
"private"
;
networkKey1
=
"private"
;
networkKey2
=
"public"
;
networkKey2
=
"public"
;
}
else
{
}
else
{
...
@@ -478,17 +478,17 @@ export default {
...
@@ -478,17 +478,17 @@ export default {
},
},
async
photo
()
{
async
photo
()
{
if
(
!
this
.
taskId
)
{
if
(
!
this
.
taskId
)
{
this
.
$message
.
error
(
"暂无任务!"
);
this
.
$message
.
error
(
this
.
$t
(
'common.暂无任务'
)
);
return
;
return
;
}
}
let
blob
=
this
.
screenShot
();
let
blob
=
this
.
screenShot
();
let
fd
=
new
FormData
();
let
fd
=
new
FormData
();
fd
.
append
(
"uploadFile"
,
blob
,
`
拍照
.png`
);
fd
.
append
(
"uploadFile"
,
blob
,
`
${
this
.
$t
(
'common.拍照'
)}
.png`
);
fd
.
append
(
"taskId"
,
this
.
taskId
);
fd
.
append
(
"taskId"
,
this
.
taskId
);
fd
.
append
(
"deviceHardId"
,
this
.
device
.
deviceHardId
);
fd
.
append
(
"deviceHardId"
,
this
.
device
.
deviceHardId
);
/* let res = await API.FCKERNEL.Upload(fd);
/* let res = await API.FCKERNEL.Upload(fd);
console.log(res); */
console.log(res); */
this
.
$message
.
success
(
"拍照成功!"
)
this
.
$message
.
success
(
this
.
$t
(
'common.拍照成功'
));
let
imgshowurl
=
process
.
env
.
VUE_APP_IMG_URL
+
'/uploads'
+
res
.
fileKey
let
imgshowurl
=
process
.
env
.
VUE_APP_IMG_URL
+
'/uploads'
+
res
.
fileKey
this
.
$emit
(
"imgUrl"
,
imgshowurl
)
this
.
$emit
(
"imgUrl"
,
imgshowurl
)
...
@@ -500,7 +500,7 @@ export default {
...
@@ -500,7 +500,7 @@ export default {
async
getcanvas
(
command
)
{
async
getcanvas
(
command
)
{
let
blob
=
this
.
screenShot
();
let
blob
=
this
.
screenShot
();
let
fd
=
new
FormData
();
let
fd
=
new
FormData
();
fd
.
append
(
"uploadFiles"
,
blob
,
`
下载
.jpeg`
);
fd
.
append
(
"uploadFiles"
,
blob
,
`
${
this
.
$t
(
'common.下载'
)}
.jpeg`
);
/* let res = await API.MAPMANAGE.fileUpload(fd);
/* let res = await API.MAPMANAGE.fileUpload(fd);
if (command == "a") {
if (command == "a") {
this.aiuse(res[0].storage);
this.aiuse(res[0].storage);
...
@@ -513,10 +513,10 @@ export default {
...
@@ -513,10 +513,10 @@ export default {
imageUrl
:
url
,
imageUrl
:
url
,
deviceHardId
:
this
.
device
.
deviceHardId
,
deviceHardId
:
this
.
device
.
deviceHardId
,
};
};
this
.
$el_message
(
"正在识别中..."
,
()
=>
{},
"info"
,
0
);
this
.
$el_message
(
this
.
$t
(
'common.正在识别中'
)
,
()
=>
{},
"info"
,
0
);
/* let res = await API.AIUSE.aiphoto(data);
/* let res = await API.AIUSE.aiphoto(data);
if (res.code == 200) {
if (res.code == 200) {
this.$el_message(
"识别成功!"
, () => {}, "success");
this.$el_message(
this.$t('common.识别成功')
, () => {}, "success");
this.faceAiShow = true;
this.faceAiShow = true;
} else {
} else {
this.$el_message(res.message, () => {}, "error");
this.$el_message(res.message, () => {}, "error");
...
@@ -527,10 +527,10 @@ export default {
...
@@ -527,10 +527,10 @@ export default {
imgUrl
:
url
,
imgUrl
:
url
,
deviceHardId
:
this
.
device
.
deviceHardId
,
deviceHardId
:
this
.
device
.
deviceHardId
,
};
};
this
.
$el_message
(
"正在识别中..."
,
()
=>
{},
"info"
,
0
);
this
.
$el_message
(
this
.
$t
(
'common.正在识别中'
)
,
()
=>
{},
"info"
,
0
);
/* let res = await API.AIUSE.palteId(data);
/* let res = await API.AIUSE.palteId(data);
if (res.code == 200) {
if (res.code == 200) {
this.$el_message(
"识别完成"
, () => {}, "success");
this.$el_message(
this.$t('common.识别完成')
, () => {}, "success");
this.carList = res.data;
this.carList = res.data;
this.carAiShow = true;
this.carAiShow = true;
} else {
} else {
...
@@ -673,7 +673,6 @@ export default {
...
@@ -673,7 +673,6 @@ export default {
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
right
:
0
;
right
:
0
;
width
:
46px
;
height
:
26px
;
height
:
26px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
26px
;
line-height
:
26px
;
...
...
src/observe/fckernelVideos/components/float-playerfk/index.vue
浏览文件 @
ec70f3f2
...
@@ -403,7 +403,6 @@ export default {
...
@@ -403,7 +403,6 @@ export default {
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
right
:
0
;
right
:
0
;
width
:
46px
;
height
:
26px
;
height
:
26px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
26px
;
line-height
:
26px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论