提交 ec70f3f2 作者: “kai”

feat(i18n): 添加多语言支持并优化UI样式

- 为多个组件添加i18n国际化支持
- 移除冗余的width样式定义
- 更新中、英、俄三种语言的翻译文件
- 优化AI识别列表的滚动条样式
- 统一关闭按钮的国际化显示
上级 5cddbaf4
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",
......
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 позиционирование",
消息等级: "Уровень сообщ.",
消息内容: "Содерж. сообщ.",
时间: "Время", 时间: "Время",
紧急: "Срочно", 紧急: "Срочно",
普通: "Обычный", 普通: "Обычный",
......
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: {
运行监控日志: "运行监控日志", 运行监控日志: "运行监控日志",
......
...@@ -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('controlMenu.AI识别') }} {{ $t('common.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">
......
...@@ -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";
......
...@@ -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;
......
...@@ -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", // 控制面板权限
......
...@@ -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
......
...@@ -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
......
...@@ -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>
......
...@@ -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;
......
...@@ -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();
} }
......
...@@ -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;
......
...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论