Compare commits
No commits in common. "1da7eff80e6d2712dce86bac10b797f4089bc7ae" and "bff31311de7059d0f396e62d4f3bdf7b97bb3d0e" have entirely different histories.
1da7eff80e
...
bff31311de
@ -17,8 +17,6 @@ instance.interceptors.request.use(
|
||||
config.headers = config.headers || {}
|
||||
let token = getToken()
|
||||
if (token) Object.assign(config.headers, { 'X-Access-Token': token })
|
||||
const language = localStorage.getItem('locale')
|
||||
Object.assign(config.headers, { 'content-language': language })
|
||||
config.cancelToken = new axios.CancelToken(cancel => {
|
||||
window.__axiosCancelTokenArr.push({ cancel })
|
||||
})
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
:layout="layout"
|
||||
:page-sizes="pageSizes"
|
||||
:total="total"
|
||||
:pager-count="pagerCount"
|
||||
v-bind="$attrs"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@ -64,10 +63,6 @@ export default {
|
||||
small: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
pagerCount: {
|
||||
type: Number,
|
||||
default: 7
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
@ -17,256 +17,13 @@ export default {
|
||||
passwordMin: 'Password must be at least 6 characters',
|
||||
},
|
||||
},
|
||||
common: {
|
||||
capsLockOn: 'Caps lock is On',
|
||||
},
|
||||
menu: {
|
||||
device: 'Device Management',
|
||||
task: 'Task Management',
|
||||
picture: 'Picture Management',
|
||||
user: 'User Management'
|
||||
},
|
||||
common: {
|
||||
capsLockOn: 'Caps lock is On',
|
||||
cancel: 'Cancel',
|
||||
confirm: 'Confirm',
|
||||
preview: 'Preview',
|
||||
save: 'Save',
|
||||
confirm: 'Confirm',
|
||||
delete: 'Delete',
|
||||
edit: 'Edit',
|
||||
copy: 'Copy',
|
||||
search: 'Search',
|
||||
yes: 'Yes',
|
||||
no: 'No',
|
||||
requestFailed: 'Request failed',
|
||||
deleteSuccess: 'Deleted successfully',
|
||||
},
|
||||
task: {
|
||||
taskList: 'Task List',
|
||||
addTask: 'Add Task',
|
||||
inputTaskName: 'Please enter task name',
|
||||
uav: 'UAV',
|
||||
loader: 'Loader',
|
||||
selectLoader: 'Please select loader',
|
||||
flyMode: 'Fly Mode',
|
||||
taskTarget: 'Task Target',
|
||||
selectTarget: 'Please select task target',
|
||||
taskAltitude: 'Task Altitude',
|
||||
startAltitude: 'Start Altitude',
|
||||
imageLight: 'Image Light',
|
||||
resolution: 'Resolution',
|
||||
imageMode: 'Image Mode',
|
||||
draw: 'Draw',
|
||||
update: 'Update',
|
||||
flySpeed: 'Fly Speed',
|
||||
autoFocus: "Auto Focus",
|
||||
moreSetting: 'More Setting',
|
||||
moto: 'Moto',
|
||||
radarHeading: 'Radar Heading',
|
||||
imageBit: 'Image Bit',
|
||||
sideViewDirection: 'Side View Direction',
|
||||
polarization: 'Polarization',
|
||||
flyHeight: 'Fly Height',
|
||||
waveAngle: 'Wave Angle',
|
||||
downViewAngle: 'Down View Angle',
|
||||
detailInfo: 'Detail Information',
|
||||
statusInfo: 'Status Information',
|
||||
waveInfo: 'Waveform Information',
|
||||
dev: 'DEV',
|
||||
wave: 'WAVE',
|
||||
humidity: 'Humidity',
|
||||
airQuality: 'Air Quality',
|
||||
pm25: 'PM2.5',
|
||||
pm10: 'PM10',
|
||||
startLongitude: 'Start Longitude',
|
||||
startLatitude: 'Start Latitude',
|
||||
endLongitude: 'End Longitude',
|
||||
endLatitude: 'End Latitude',
|
||||
endHeight: 'End Height',
|
||||
endAlt: 'End Altitude',
|
||||
hide: 'Hide',
|
||||
show: 'Show',
|
||||
executingTasks: 'Executing Tasks',
|
||||
noExecutingTasks: 'No executing tasks',
|
||||
endTask: 'Ended Task',
|
||||
fly: {
|
||||
statusInfo: 'Flight Status Information',
|
||||
height: 'Height',
|
||||
speed: 'Speed',
|
||||
longitude: 'Longitude',
|
||||
latitude: 'Latitude',
|
||||
alt: 'Altitude',
|
||||
clockLock: 'Clock Lock',
|
||||
gps: 'GPS',
|
||||
battery: 'Battery',
|
||||
signal: 'Signal',
|
||||
cpuTemp: 'CPU Temperature',
|
||||
rfTemp: 'RF Temperature',
|
||||
antennaTemp: 'Antenna Temperature',
|
||||
diskTemp: 'Disk Temperature',
|
||||
fpgaTemp: 'FPGA Temperature',
|
||||
diskCapacity: 'Disk Capacity',
|
||||
diskUsed: 'Disk Used',
|
||||
memoryCapacity: 'Memory Capacity',
|
||||
rtkStatus: 'RTK Status',
|
||||
satelliteNum: 'Satellite Number',
|
||||
imuStatus: 'IMU Status',
|
||||
date: 'Date',
|
||||
configStatus: 'Configuration Status',
|
||||
antennaAzimuth: 'Antenna Azimuth',
|
||||
antennaPitch: 'Antenna Pitch',
|
||||
eastwardSpeed: "Eastward Speed",
|
||||
northwardSpeed: "Northward Speed",
|
||||
upwardSpeed: "Upward Speed",
|
||||
pitchAngle: "Pitch Angle",
|
||||
rollAngle: "Roll Angle",
|
||||
yawAngle: "Yaw Angle",
|
||||
},
|
||||
editTaskName: 'Edit Task Name',
|
||||
taskName: 'Task Name',
|
||||
taskNamePlaceholder: 'Please enter task name',
|
||||
y_width: 'Y Width',
|
||||
y_width_placeholder: 'Please enter Y width',
|
||||
uavName: 'UAV Name',
|
||||
radarName: 'Radar Name',
|
||||
beginTime: 'Begin Time',
|
||||
startTime: 'Start Time',
|
||||
reExecute: 'Re-execute',
|
||||
editName: 'Edit Name',
|
||||
copy: 'Copy',
|
||||
delete: 'Delete',
|
||||
deleteConfirm: 'Are you sure you want to delete this task?',
|
||||
submit: 'Submit',
|
||||
preview: 'Preview',
|
||||
noTask: 'No Tasks',
|
||||
airline: {
|
||||
lineDetail: 'Airline Detail',
|
||||
startLon: 'Start Longitude',
|
||||
startLat: 'Start Latitude',
|
||||
startAlt: 'Start Altitude',
|
||||
endLon: 'End Longitude',
|
||||
endLat: 'End Latitude',
|
||||
endAlt: 'End Altitude',
|
||||
flyHeight: 'Fly Height',
|
||||
startHeight: 'Start Height',
|
||||
endHeight: 'End Height',
|
||||
},
|
||||
deleteConfirm: 'Are you sure you want to delete this task?',
|
||||
tip: 'Tip',
|
||||
deleteSuccess: 'Task deleted successfully',
|
||||
brightness: 'Brightness',
|
||||
flyTaskConfirm: 'Are you sure you want to execute this task?',
|
||||
flyTaskSuccess: 'fly successfully',
|
||||
refreshUavHeightSuccess: 'Successfully got current height!',
|
||||
selectLoader: 'Please select radar!',
|
||||
selectUav: 'Please select UAV!',
|
||||
editSuccess: 'Edit successfully!',
|
||||
reFlyTaskConfirm: 'Are you sure you want to re-execute this task?',
|
||||
reFlyTaskSuccess: 'Task re-executed successfully!',
|
||||
addTaskSuccess: 'Task added successfully!',
|
||||
duringAirlinePick: 'Already in drawing mode!',
|
||||
clearAirlineConfirm: 'Drawing will clear historical data, do you want to continue?',
|
||||
airlineMinPoint: 'At least two points are required!',
|
||||
point: 'Point',
|
||||
createAirlineTip: 'Click the left mouse button in the scene to create an airline',
|
||||
getAirlineSuccess: 'Successfully got airline!',
|
||||
stopTaskConfirm: 'Are you sure you want to stop this task?',
|
||||
stopTaskSuccess: 'Task stopped successfully!',
|
||||
planArea: 'Planning Area',
|
||||
direction: {
|
||||
left: 'Left',
|
||||
right: 'Right',
|
||||
},
|
||||
rules: {
|
||||
inputTaskName: 'Please enter task name',
|
||||
startAltitude: 'Please enter start altitude',
|
||||
imageLight: 'Please enter image light',
|
||||
mode: 'Please select fly mode',
|
||||
imageMode: 'Please select image mode',
|
||||
targetList: 'Please select task target',
|
||||
uav: 'Please select UAV',
|
||||
loader: 'Please select loader',
|
||||
loaderType: 'Please select loader type',
|
||||
ratio: 'Please enter ratio',
|
||||
},
|
||||
},
|
||||
device1Manage: {
|
||||
uav: 'UAV',
|
||||
radar: 'Radar',
|
||||
radarName: 'Radar Name',
|
||||
radarType: 'Radar Type',
|
||||
uavName: 'UAV Name',
|
||||
uavCode: 'UAV Code',
|
||||
ip: 'IP',
|
||||
createTime: 'Create Time',
|
||||
operation: 'Operation',
|
||||
radarNamePlaceholder: 'Please enter radar name',
|
||||
radarTypePlaceholder: 'Please enter radar type',
|
||||
ipPlaceholder: 'Please enter IP address',
|
||||
cancel: 'Cancel',
|
||||
confirm: 'Confirm',
|
||||
add: 'Add ',
|
||||
edit: 'Edit',
|
||||
delete: 'Delete',
|
||||
deleteConfirm: 'Are you sure you want to delete this device?',
|
||||
batchDeleteConfirm: 'Are you sure you want to delete the selected devices?',
|
||||
deleteSuccess: 'Device deleted successfully',
|
||||
batchDeleteSuccess: 'Selected devices deleted successfully',
|
||||
addSuccess: 'Device added successfully',
|
||||
editSuccess: 'Device updated successfully',
|
||||
noSelection: 'Please select at least one device to delete',
|
||||
uavNamePlaceholder: 'Please enter UAV name',
|
||||
uavCodePlaceholder: 'Please enter UAV code',
|
||||
validation: {
|
||||
nameRequired: 'Radar name is required',
|
||||
typeRequired: 'Radar type is required',
|
||||
ipRequired: 'IP address is required',
|
||||
ipInvalid: 'Please enter a valid IP address'
|
||||
},
|
||||
radarTurnOnSuccess: 'Radar turned on successfully',
|
||||
radarEndConfirm: 'Are you sure you want to end all tasks?',
|
||||
tip: 'Tip',
|
||||
radarEndSuccess: 'Radar ended successfully',
|
||||
deleteConfirm: 'Are you sure you want to delete this device?',
|
||||
},
|
||||
picture: {
|
||||
list: 'Picture List',
|
||||
pictureName: 'Picture Name',
|
||||
taskName: 'Task Name',
|
||||
nameRequired: 'Please enter picture name',
|
||||
aiCheckSuccess: 'AI check successful!',
|
||||
selectPicture: 'Please select pictures to identify',
|
||||
deleteConfirm: 'Are you sure you want to delete this picture?',
|
||||
tip: 'Tip',
|
||||
deleteSuccess: 'Picture deleted successfully',
|
||||
editSuccess: 'Picture name updated successfully',
|
||||
task: 'Task',
|
||||
time: 'Time',
|
||||
selectPicture: 'Select Picture',
|
||||
aiCheck: 'AI Check',
|
||||
delete: 'Delete',
|
||||
editName: 'Edit Name',
|
||||
editNameTitle: 'Edit Picture Name',
|
||||
taskName: 'Task Name',
|
||||
taskNamePlaceholder: 'Please enter task name',
|
||||
uploadPicture: 'Upload Picture',
|
||||
noPicture: 'No Pictures',
|
||||
searchPlaceholder: 'Please enter picture name ',
|
||||
},
|
||||
picturesUpload: {
|
||||
title: 'Upload Picture',
|
||||
jobName: 'Job Name',
|
||||
selectJob: 'Please select job',
|
||||
uav: 'UAV',
|
||||
selectUav: 'Please select UAV',
|
||||
dirPath: 'Directory Path',
|
||||
inputDirPath: 'Please enter picture directory path',
|
||||
fileUrlArr: 'Picture URLs',
|
||||
submit: 'Submit',
|
||||
uploadSuccess: 'upload successful!',
|
||||
rules: {
|
||||
selectJob: 'Please select job',
|
||||
selectUav: 'Please select UAV',
|
||||
inputDirPath: 'Please enter picture directory path',
|
||||
fileUrlArr: 'Please select picture URLs',
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,54 +2,19 @@ import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
import zh from './zh';
|
||||
import en from './en';
|
||||
|
||||
export const gisLabels = {
|
||||
planArea: {
|
||||
zh_CN: '规划区域',
|
||||
en_US: 'Plan Area'
|
||||
},
|
||||
planAirline: {
|
||||
zh_CN: '规划航线',
|
||||
en_US: 'Plan Airline'
|
||||
},
|
||||
startPoint: {
|
||||
zh_CN: '起点',
|
||||
en_US: 'Start Point'
|
||||
},
|
||||
endPoint: {
|
||||
zh_CN: '终点',
|
||||
en_US: 'end Point'
|
||||
},
|
||||
task: {
|
||||
zh_CN: '任务',
|
||||
en_US: 'Task'
|
||||
},
|
||||
point: {
|
||||
zh_CN: '点',
|
||||
en_US: 'Point'
|
||||
},
|
||||
line: {
|
||||
zh_CN: '线',
|
||||
en_US: 'Line'
|
||||
},
|
||||
PowerOnPoint: {
|
||||
zh_CN: '开机点',
|
||||
en_US: 'Power-on point'
|
||||
}
|
||||
}
|
||||
Vue.use(VueI18n)
|
||||
|
||||
// load locale messages
|
||||
const messages = {
|
||||
'zh_CN': zh,
|
||||
'en_US': en,
|
||||
zh,
|
||||
en,
|
||||
}
|
||||
|
||||
const locale = localStorage.getItem('locale') || 'zh_CN'
|
||||
const locale = localStorage.getItem('locale') || 'zh'
|
||||
|
||||
const i18n = new VueI18n({
|
||||
locale,
|
||||
fallbackLocale: 'zh_CN',
|
||||
fallbackLocale: 'zh',
|
||||
messages,
|
||||
})
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// Chinese translations
|
||||
export default {
|
||||
app: {
|
||||
title: '空域快视系统',
|
||||
@ -16,254 +17,13 @@ export default {
|
||||
passwordMin: '密码不少于6位字符',
|
||||
},
|
||||
},
|
||||
common: {
|
||||
capsLockOn: '大写锁定已打开',
|
||||
},
|
||||
menu: {
|
||||
device: '设备管理',
|
||||
task: '任务管理',
|
||||
picture: '图片管理',
|
||||
user: '用户管理'
|
||||
},
|
||||
common: {
|
||||
capsLockOn: '大写锁定已打开',
|
||||
cancel: '取 消',
|
||||
confirm: '确 定',
|
||||
preview: '预 览',
|
||||
save: '保 存',
|
||||
confirm: '确 定',
|
||||
delete: '删 除',
|
||||
edit: '编 辑',
|
||||
copy: '复 制',
|
||||
search: '搜 索',
|
||||
yes: '是',
|
||||
no: '否',
|
||||
requestFailed: '请求失败',
|
||||
deleteSuccess: '删除成功',
|
||||
},
|
||||
task: {
|
||||
taskList: '任务列表',
|
||||
addTask: '新增任务',
|
||||
inputTaskName: '请输入任务名称',
|
||||
uav: '无人机',
|
||||
loader: '载荷',
|
||||
selectLoader: '请选择载荷',
|
||||
flyMode: '飞行模式',
|
||||
taskTarget: '任务目标',
|
||||
selectTarget: '请选择任务目标',
|
||||
taskAltitude: '任务高度',
|
||||
startAltitude: '起飞点高度',
|
||||
imageLight: '图片亮度',
|
||||
resolution: '分辨率',
|
||||
imageMode: '成像模式',
|
||||
draw: '绘制',
|
||||
update: '更新',
|
||||
flySpeed: '飞行速度',
|
||||
autoFocus: "自动聚焦",
|
||||
moreSetting: '更多设置',
|
||||
moto: '运动补偿',
|
||||
radarHeading: '雷达朝向',
|
||||
imageBit: '图像位数',
|
||||
sideViewDirection: '侧视方向',
|
||||
polarization: '极化方式',
|
||||
flyHeight: '飞行高度',
|
||||
waveAngle: '波束半角',
|
||||
downViewAngle: '下视角',
|
||||
detailInfo: '详细信息',
|
||||
statusInfo: '状态信息',
|
||||
waveInfo: '波形信息',
|
||||
dev: 'DEV',
|
||||
wave: 'WAVE',
|
||||
humidity: '湿度',
|
||||
airQuality: '空气质量',
|
||||
pm25: 'PM2.5',
|
||||
pm10: 'PM10',
|
||||
startLongitude: '起始经度',
|
||||
startLatitude: '起始纬度',
|
||||
endLongitude: '结束经度',
|
||||
endLatitude: '结束纬度',
|
||||
endHeight: '结束高度',
|
||||
endAlt: '结束高度',
|
||||
hide: '隐藏',
|
||||
show: '显示',
|
||||
executingTasks: '执行中的任务',
|
||||
noExecutingTasks: '暂无执行中的任务',
|
||||
endTask: '结束任务',
|
||||
fly: {
|
||||
statusInfo: '飞行状态信息',
|
||||
height: '高度',
|
||||
speed: '速度',
|
||||
longitude: '经度',
|
||||
latitude: '纬度',
|
||||
alt: '海拔高度',
|
||||
clockLock: '时钟锁定',
|
||||
gps: 'GPS',
|
||||
battery: '电池电量',
|
||||
signal: '信号强度',
|
||||
cpuTemp: 'CPU温度',
|
||||
rfTemp: '射频温度',
|
||||
antennaTemp: '天线温度',
|
||||
diskTemp: '硬盘温度',
|
||||
fpgaTemp: 'FPGA温度',
|
||||
diskCapacity: '硬盘容量',
|
||||
diskUsed: '硬盘已用空间',
|
||||
memoryCapacity: '内存容量',
|
||||
rtkStatus: 'RTK状态',
|
||||
satelliteNum: '卫星数量',
|
||||
imuStatus: '惯导状态',
|
||||
date: '年月日',
|
||||
configStatus: '配置状态',
|
||||
antennaAzimuth: '天线方位角',
|
||||
antennaPitch: '天线俯仰角',
|
||||
eastwardSpeed: "东向速度",
|
||||
northwardSpeed: "北向速度",
|
||||
upwardSpeed: "天向速度",
|
||||
pitchAngle: "俯仰角",
|
||||
rollAngle: "翻转角",
|
||||
yawAngle: "偏航角",
|
||||
},
|
||||
editTaskName: '修改任务名称',
|
||||
taskName: '任务名称',
|
||||
taskNamePlaceholder: '请输入任务名称',
|
||||
y_width: 'y向幅宽',
|
||||
y_width_placeholder: '请输入y向幅宽',
|
||||
uavName: '无人机名称',
|
||||
radarName: '雷达名称',
|
||||
beginTime: '开始时间',
|
||||
startTime: '开始时间',
|
||||
reExecute: '重新执行',
|
||||
editName: '修改名称',
|
||||
copy: '复制',
|
||||
delete: '删除',
|
||||
deleteConfirm: '确定要删除该任务吗?',
|
||||
submit: '提交',
|
||||
preview: '预览',
|
||||
noTask: '暂无任务',
|
||||
airline: {
|
||||
lineDetail: '航线详情',
|
||||
startLon: '起始经度',
|
||||
startLat: '起始纬度',
|
||||
startAlt: '起始高度',
|
||||
endLon: '结束经度',
|
||||
endLat: '结束纬度',
|
||||
endAlt: '结束高度',
|
||||
flyHeight: '飞行高度',
|
||||
startHeight: '起始高度',
|
||||
endHeight: '结束高度',
|
||||
},
|
||||
deleteConfirm: '确定要删除该任务吗?',
|
||||
tip: '提示',
|
||||
deleteSuccess: '任务删除成功',
|
||||
brightness: '亮度',
|
||||
flyTaskConfirm: '确定要执行该任务吗?',
|
||||
flyTaskSuccess: '起飞成功',
|
||||
refreshUavHeightSuccess: '获取当前高度成功!',
|
||||
selectLoader: '请选择雷达!',
|
||||
selectUav: '请选择无人机!',
|
||||
editSuccess: '修改成功!',
|
||||
reFlyTaskConfirm: '确定要重新执行该任务吗?',
|
||||
reFlyTaskSuccess: '任务重新执行成功!',
|
||||
addTaskSuccess: '新增任务成功!',
|
||||
duringAirlinePick: '已经处于绘制模式!',
|
||||
clearAirlineConfirm: '绘制会清除历史数据,是否继续?',
|
||||
airlineMinPoint: '至少需要保留两个点!',
|
||||
point: '点',
|
||||
createAirlineTip: '在场景中点击鼠标左键创建航线',
|
||||
getAirlineSuccess: '获取航线成功!',
|
||||
stopTaskConfirm: '确定要结束该任务吗?',
|
||||
stopTaskSuccess: '任务已结束!',
|
||||
planArea: '规划区域',
|
||||
rules: {
|
||||
inputTaskName: '请输入任务名称',
|
||||
startAltitude: '请输入起飞点高度',
|
||||
imageLight: '请输入图片亮度',
|
||||
mode: '请选择飞行模式',
|
||||
imageMode: '请选择成像模式',
|
||||
targetList: '请选择任务目标',
|
||||
uav: '请选择无人机',
|
||||
loader: '请选择载荷',
|
||||
loaderType: '请选择载荷类型',
|
||||
ratio: '请输入比例',
|
||||
},
|
||||
},
|
||||
device1Manage: {
|
||||
uav: '无人机',
|
||||
radar: '雷达',
|
||||
radarName: '雷达名称',
|
||||
radarType: '雷达类型',
|
||||
uavName: '无人机名称',
|
||||
uavCode: '无人机码',
|
||||
ip: 'IP',
|
||||
createTime: '创建时间',
|
||||
operation: '操作',
|
||||
radarNamePlaceholder: '请输入雷达名称',
|
||||
radarTypePlaceholder: '请输入雷达类型',
|
||||
ipPlaceholder: '请输入IP地址',
|
||||
add: '添加',
|
||||
edit: '编辑',
|
||||
delete: '删除',
|
||||
deleteConfirm: '确定要删除该设备吗?',
|
||||
batchDeleteConfirm: '确定要删除选中的设备吗?',
|
||||
deleteSuccess: '设备删除成功',
|
||||
batchDeleteSuccess: '选中设备删除成功',
|
||||
addSuccess: '设备添加成功',
|
||||
editSuccess: '设备更新成功',
|
||||
noSelection: '请至少选择一个设备进行删除',
|
||||
uavNamePlaceholder: '请输入无人机名称',
|
||||
uavCodePlaceholder: '请输入无人机码',
|
||||
validation: {
|
||||
nameRequired: '雷达名称是必填项',
|
||||
typeRequired: '雷达类型是必填项',
|
||||
ipRequired: 'IP地址是必填项',
|
||||
ipInvalid: '请输入有效的IP地址'
|
||||
},
|
||||
radarTurnOnSuccess: '雷达开机成功',
|
||||
radarEndConfirm: '确定要结束所有任务吗?',
|
||||
tip: '提示',
|
||||
radarEndSuccess: '雷达关机成功',
|
||||
deleteConfirm: '确定要删除该?',
|
||||
direction: {
|
||||
left: '左侧视',
|
||||
right: '右侧视',
|
||||
},
|
||||
},
|
||||
picture: {
|
||||
list: '影像列表',
|
||||
pictureName: '影像名称',
|
||||
taskName: '任务名称',
|
||||
nameRequired: '请输入影像名称',
|
||||
aiCheckSuccess: 'AI检查成功!',
|
||||
selectPicture: '请选择要识别的图片',
|
||||
deleteConfirm: '确定要删除该图片吗?',
|
||||
tip: '提示',
|
||||
deleteSuccess: '图片删除成功',
|
||||
editSuccess: '图片名称更新成功',
|
||||
task: '所属任务',
|
||||
time: '拍摄时间',
|
||||
selectPicture: '选择图片',
|
||||
aiCheck: 'AI识别',
|
||||
delete: '删除',
|
||||
editName: '修改名称',
|
||||
editNameTitle: '修改图片名称',
|
||||
taskName: '任务名称',
|
||||
taskNamePlaceholder: '请输入任务名称',
|
||||
uploadPicture: '上传精处理图片',
|
||||
noPicture: '暂无影像',
|
||||
searchPlaceholder: '请输入影像名称',
|
||||
},
|
||||
picturesUpload: {
|
||||
title: '上传高精度图片',
|
||||
jobName: '任务名称',
|
||||
selectJob: '请选择任务',
|
||||
uav: '无人机',
|
||||
selectUav: '请选择无人机',
|
||||
dirPath: '目录路径',
|
||||
inputDirPath: '请输入图片目录路径',
|
||||
fileUrlArr: '图片URL列表',
|
||||
submit: '确定',
|
||||
uploadSuccess: '上传成功',
|
||||
rules: {
|
||||
selectJob: '请选择任务',
|
||||
selectUav: '请选择无人机',
|
||||
inputDirPath: '请输入图片目录路径',
|
||||
fileUrlArr: '请选择图片URL列表',
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import { constantRoutes } from '@/router'
|
||||
import { mapMutations, mapGetters, mapActions } from 'vuex'
|
||||
import ChangePassword from '@/layout/components/change-password/index.vue'
|
||||
import { getTreeAllItems, judgeArrayRepeat } from '@/utils'
|
||||
import { gisLabels } from '../../../lang'
|
||||
export default {
|
||||
name: 'Header',
|
||||
components: { ChangePassword },
|
||||
@ -173,28 +172,12 @@ export default {
|
||||
...mapActions('app', ['reload']),
|
||||
...mapMutations('app', ['SET_SCENE_ID', 'SET_SCENE_INFO', 'SET_MENUS_CHOSE']),
|
||||
...mapMutations('user', ['SET_ROLES', 'SET_USER_ID', 'SET_USERNAME']),
|
||||
...mapActions('dict', ['getDict']),
|
||||
handleSelect(key) {
|
||||
this.SET_MENUS_CHOSE(key)
|
||||
},
|
||||
changeLocale(lang) {
|
||||
this.$i18n.locale = lang
|
||||
localStorage.setItem('locale', lang)
|
||||
this.getDict()
|
||||
// 处理gis上已添加的entity
|
||||
viewer.entities.values.forEach(el => {
|
||||
if (el.id.includes('area')) {
|
||||
let obj = el.label.text._value.split('-')
|
||||
obj[1] = gisLabels.planArea[lang]
|
||||
el.label.text = obj.join('-')
|
||||
}
|
||||
if (el.id.includes('planLine')) {
|
||||
let obj = el.label.text._value.split('-')
|
||||
obj[0] = gisLabels.planAirline[lang]
|
||||
obj[2] = gisLabels.startPoint[lang]
|
||||
el.label.text = obj.join('-')
|
||||
}
|
||||
});
|
||||
},
|
||||
goHome() {
|
||||
this.SET_MENUS_CHOSE('1')
|
||||
|
||||
@ -260,7 +260,3 @@ $light_gray: #eee;
|
||||
|
||||
.el-form-item__button {}
|
||||
}
|
||||
|
||||
.split-line {
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
@ -25,15 +25,11 @@
|
||||
</el-menu>
|
||||
</div>
|
||||
<ul class="header-nav-r">
|
||||
<li class="lang-select">
|
||||
<a @click.prevent="changeLocale('zh_CN')">中文</a>
|
||||
<span class="split-line">|</span>
|
||||
<a @click.prevent="changeLocale('en_US')">English</a>
|
||||
</li>
|
||||
<!-- <li class="lang-select">
|
||||
<a @click.prevent="changeLocale('zh')">中文</a> | <a @click.prevent="changeLocale('en')">EN</a>
|
||||
</li> -->
|
||||
<li v-if="roleIdsLocale.indexOf(2) !== -1">
|
||||
<span class="user-login" @click="showLogin">{{
|
||||
$t('header.login')
|
||||
}}</span>
|
||||
<span class="user-login" @click="showLogin">{{ $t('header.login') }}</span>
|
||||
</li>
|
||||
<li v-if="roleIdsLocale.indexOf(2) === -1">
|
||||
<span class="user-photo">
|
||||
@ -49,9 +45,7 @@
|
||||
<!-- <el-dropdown-item command="modifyPassword"
|
||||
>修改密码</el-dropdown-item
|
||||
> -->
|
||||
<el-dropdown-item command="logout">{{
|
||||
$t('header.logout')
|
||||
}}</el-dropdown-item>
|
||||
<el-dropdown-item command="logout">{{ $t('header.logout') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</li>
|
||||
@ -131,8 +125,7 @@
|
||||
size="mini"
|
||||
style="width: 100%"
|
||||
@click.native.prevent="handleLogin"
|
||||
>{{ $t('login.submit') }}</el-button
|
||||
>
|
||||
>{{ $t('login.submit') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</dt-dialog>
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
// 台风列表
|
||||
import { mapMutations, mapGetters } from 'vuex'
|
||||
|
||||
import {
|
||||
getTaskListData,
|
||||
} from '@/api/task'
|
||||
@ -8,10 +10,12 @@ import LeftSlide from '@/components/LeftSlide.vue'
|
||||
import {
|
||||
payloadList,
|
||||
payloadRemove,
|
||||
getPayloadEnableList,
|
||||
payloadSave,
|
||||
payloadUpdate,
|
||||
uavRemove,
|
||||
uavList,
|
||||
getUavEnableList,
|
||||
uavSave,
|
||||
uavUpdate,
|
||||
deviceControlTurnon,
|
||||
@ -33,49 +37,57 @@ export default {
|
||||
return {
|
||||
visibleLocale: false,
|
||||
deviceData: [
|
||||
// {
|
||||
// name: '无人机1',
|
||||
// num: 'M3127',
|
||||
// location: '112.3423242,45.2312324'
|
||||
// }
|
||||
],
|
||||
device: {
|
||||
visible: false,
|
||||
title: '',
|
||||
title: '新增',
|
||||
form: {
|
||||
type: 'SAR'
|
||||
},
|
||||
rules: {
|
||||
name1: [
|
||||
{ required: true, message: '请输入无人机名称', trigger: 'blur' }
|
||||
],
|
||||
name2: [
|
||||
{ required: true, message: '请输入雷达名称', trigger: 'blur' }
|
||||
],
|
||||
ip1: [
|
||||
{ required: true, message: '请输入无人机Ip', trigger: 'blur' }
|
||||
],
|
||||
ip2: [
|
||||
{ required: true, message: '请输入雷达Ip', trigger: 'blur' }
|
||||
],
|
||||
code: [
|
||||
{ required: true, message: '请输入无人机码', trigger: 'blur' }
|
||||
],
|
||||
}
|
||||
},
|
||||
queryForm: {
|
||||
type: 'uav'
|
||||
},
|
||||
deviceTypes: [
|
||||
{
|
||||
label: '无人机',
|
||||
value: 'uav'
|
||||
},
|
||||
{
|
||||
label: '雷达',
|
||||
value: 'payload'
|
||||
},
|
||||
],
|
||||
deviceMap: {
|
||||
payload: '雷达',
|
||||
uav: '无人机'
|
||||
},
|
||||
isShowTable: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
deviceTypes() {
|
||||
return [
|
||||
{
|
||||
label: this.$t('device1Manage.uav'),
|
||||
value: 'uav'
|
||||
},
|
||||
{
|
||||
label: this.$t('device1Manage.radar'),
|
||||
value: 'payload'
|
||||
},
|
||||
]
|
||||
},
|
||||
deviceMap() {
|
||||
return {
|
||||
payload: this.$t('device1Manage.radar'),
|
||||
uav: this.$t('device1Manage.uav')
|
||||
}
|
||||
},
|
||||
rules() {
|
||||
return this.device.form.type === 'uav' ? {
|
||||
name1: [{ required: true, message: this.$t('device1Manage.uavNamePlaceholder'), trigger: 'blur' }],
|
||||
ip1: [{ required: true, message: this.$t('device1Manage.uavIpPlaceholder'), trigger: 'blur' }],
|
||||
code: [{ required: true, message: this.$t('device1Manage.uavCodePlaceholder'), trigger: 'blur' }],
|
||||
} : {
|
||||
name2: [{ required: true, message: this.$t('device1Manage.radarNamePlaceholder'), trigger: 'blur' }],
|
||||
ip2: [{ required: true, message: this.$t('device1Manage.ipPlaceholder'), trigger: 'blur' }],
|
||||
}
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
visible: {
|
||||
@ -118,20 +130,20 @@ export default {
|
||||
if (type === 1) {
|
||||
deviceControlTurnon({ payloadId: row.ip }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('device1Manage.radarTurnOnSuccess'))
|
||||
this.$message.success('雷达开机成功')
|
||||
}
|
||||
})
|
||||
} else if (type === 2) {
|
||||
const bool = await this.$confirm(this.$t('device1Manage.radarEndConfirm'), this.$t('device1Manage.tip'), {
|
||||
const bool = await this.$confirm(`确认要结束所有任务吗?`, '提示', {
|
||||
customClass: 'confirm-light',
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (!bool) return;
|
||||
deviceControlEndall({ payloadId: row.ip }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('device1Manage.radarEndSuccess'))
|
||||
this.$message.success('雷达关机成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -141,10 +153,10 @@ export default {
|
||||
if (res.data.code === 200) {
|
||||
this.deviceData = res.data.data
|
||||
} else {
|
||||
this.$message.error(res.data.msg || this.$t('common.requestFailed'))
|
||||
this.$message.error(res.data.msg || '请求失败')
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$message.error(err.msg || this.$t('common.requestFailed'))
|
||||
this.$message.error(err.msg || '请求失败')
|
||||
})
|
||||
},
|
||||
uavPage() {
|
||||
@ -152,15 +164,15 @@ export default {
|
||||
if (res.data.code === 200) {
|
||||
this.deviceData = res.data.data
|
||||
} else {
|
||||
this.$message.error(res.data.msg || this.$t('common.requestFailed'))
|
||||
this.$message.error(res.data.msg || '请求失败')
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$message.error(err.msg || this.$t('common.requestFailed'))
|
||||
this.$message.error(err.msg || '请求失败')
|
||||
})
|
||||
},
|
||||
addDevice() {
|
||||
this.device.visible = true
|
||||
this.device.title = this.$t(`device1Manage.add`) + this.deviceMap[this.queryForm.type]
|
||||
this.device.title = `新增${this.deviceMap[this.queryForm.type]}`
|
||||
if (this.queryForm.type === 'uav') {
|
||||
this.device.form = {
|
||||
id: '',
|
||||
@ -179,7 +191,7 @@ export default {
|
||||
},
|
||||
editDevice(row) {
|
||||
this.device.visible = true
|
||||
this.device.title = `${this.$t('common.edit')}${this.deviceMap[this.queryForm.type]}`
|
||||
this.device.title = `编辑${this.deviceMap[this.queryForm.type]}`
|
||||
if (this.queryForm.type === 'uav') {
|
||||
this.device.form = {
|
||||
id: row.id,
|
||||
@ -250,27 +262,28 @@ export default {
|
||||
|
||||
},
|
||||
async deleteDevice(row) {
|
||||
const bool = await this.$confirm(`${this.$t('device1Manage.deleteConfirm')}${this.deviceMap[this.queryForm.type]}?`, this.$t('device1Manage.tip'), {
|
||||
const bool = await this.$confirm(`确认要永久删除该${this.deviceMap[this.queryForm.type]}吗?`, '提示', {
|
||||
customClass: 'confirm-light',
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (!bool) return;
|
||||
if (this.queryForm.type === 'uav') {
|
||||
uavRemove([row.id]).then(res => {
|
||||
this.$message.success(this.$t('common.deleteSuccess'))
|
||||
this.$message.success('删除成功')
|
||||
this.uavPage()
|
||||
})
|
||||
} else {
|
||||
payloadRemove([row.id]).then(res => {
|
||||
this.$message.success(this.$t('common.deleteSuccess'))
|
||||
this.$message.success('删除成功')
|
||||
this.payloadPage()
|
||||
})
|
||||
}
|
||||
},
|
||||
//#region 无人机详情代码
|
||||
resourceClick(info) {
|
||||
console.log('点击的信息', info)
|
||||
this.detailInfo.visible = false
|
||||
|
||||
// 直接显示详细信息窗口,跳过中间步骤
|
||||
@ -285,6 +298,7 @@ export default {
|
||||
// this.resourceClickTest(info)
|
||||
getTaskListData({ payloadId: info.id }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('任务详情----------------', res.data.data)
|
||||
let tasklist = res.data.data
|
||||
this.detailInfo.jobId = undefined
|
||||
if (tasklist.length > 0) {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<dt-card
|
||||
class="resource-list card-light"
|
||||
icon="iconfont icon-left_icon_remote"
|
||||
:title="$t('device1Manage.title')"
|
||||
title="可用资源"
|
||||
:visible.sync="visibleLocale"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
@ -41,7 +41,7 @@
|
||||
</template>
|
||||
<template v-slot:command>
|
||||
<el-button size="mini" icon="el-icon-plus" @click="addDevice"
|
||||
>{{ $t('device1Manage.add') }}{{ deviceMap[queryForm.type] }}</el-button
|
||||
>新增{{ deviceMap[queryForm.type] }}</el-button
|
||||
>
|
||||
</template>
|
||||
<!-- <div class="resource-list__content">
|
||||
@ -83,23 +83,23 @@
|
||||
height="100%"
|
||||
>
|
||||
<template v-if="queryForm.type === 'payload'">
|
||||
<el-table-column prop="name" :label="$t('device1Manage.radarName')"> </el-table-column>
|
||||
<el-table-column prop="type" :label="$t('device1Manage.radarType')"> </el-table-column>
|
||||
<el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
|
||||
<el-table-column prop="name" label="雷达名称"> </el-table-column>
|
||||
<el-table-column prop="type" label="雷达类型"> </el-table-column>
|
||||
<el-table-column prop="ip" label="IP"> </el-table-column>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-table-column prop="name" :label="$t('device1Manage.uavName')"> </el-table-column>
|
||||
<el-table-column prop="code" :label="$t('device1Manage.uavCode')"> </el-table-column>
|
||||
<el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
|
||||
<el-table-column prop="createTime" :label="$t('device1Manage.createTime')"> </el-table-column>
|
||||
<el-table-column prop="name" label="无人机名称"> </el-table-column>
|
||||
<el-table-column prop="code" label="无人机码"> </el-table-column>
|
||||
<el-table-column prop="ip" label="IP"> </el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间"> </el-table-column>
|
||||
</template>
|
||||
|
||||
<el-table-column :label="$t('device1Manage.operation')" width="200">
|
||||
<el-table-column label="操作" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="light"
|
||||
:content="$t('device1Manage.edit')"
|
||||
content="修改"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -115,7 +115,7 @@
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="light"
|
||||
:content="$t('device1Manage.manualPowerOn')"
|
||||
content="手动开机"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -130,7 +130,7 @@
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="light"
|
||||
:content="$t('device1Manage.endAllTasks')"
|
||||
content="结束所有任务"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
@ -146,7 +146,7 @@
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="light"
|
||||
:content="$t('device1Manage.delete')"
|
||||
content="删除"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -174,51 +174,51 @@
|
||||
<el-form
|
||||
ref="form"
|
||||
:model="device.form"
|
||||
:rules="rules"
|
||||
:rules="device.rules"
|
||||
label-position="right"
|
||||
label-width="110px"
|
||||
class="change-password-form"
|
||||
>
|
||||
<template v-if="queryForm.type === 'uav'">
|
||||
<el-form-item :label="$t('device1Manage.uavName')" prop="name1">
|
||||
<el-form-item label="无人机名称" prop="name1">
|
||||
<el-input
|
||||
v-model="device.form.name1"
|
||||
:placeholder="$t('device1Manage.uavNamePlaceholder')"
|
||||
placeholder="请输入无人机名称"
|
||||
clearable
|
||||
size="mini"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="$t('device1Manage.uavCode')" prop="code">
|
||||
<el-form-item label="无人机码" prop="code">
|
||||
<el-input
|
||||
v-model="device.form.code"
|
||||
:placeholder="$t('device1Manage.uavCodePlaceholder')"
|
||||
placeholder="请输入无人机码"
|
||||
clearable
|
||||
size="mini"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('device1Manage.ip')" prop="ip1">
|
||||
<el-form-item label="IP" prop="ip1">
|
||||
<el-input
|
||||
v-model="device.form.ip1"
|
||||
:placeholder="$t('device1Manage.ipPlaceholder')"
|
||||
placeholder="请输入无人机IP"
|
||||
clearable
|
||||
size="mini"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-form-item :label="$t('device1Manage.radarName')" prop="name2">
|
||||
<el-form-item label="雷达名称" prop="name2">
|
||||
<el-input
|
||||
v-model="device.form.name2"
|
||||
:placeholder="$t('device1Manage.radarNamePlaceholder')"
|
||||
placeholder="请输入雷达名称"
|
||||
clearable
|
||||
size="mini"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('device1Manage.radarType')" prop="type">
|
||||
<el-form-item label="雷达类型" prop="type">
|
||||
<el-input
|
||||
v-model="device.form.type"
|
||||
:placeholder="$t('device1Manage.radarTypePlaceholder')"
|
||||
placeholder="请输入雷达类型"
|
||||
clearable
|
||||
size="mini"
|
||||
disabled
|
||||
@ -227,7 +227,7 @@
|
||||
<el-form-item label="IP" prop="ip2">
|
||||
<el-input
|
||||
v-model="device.form.ip2"
|
||||
:placeholder="$t('device1Manage.ipPlaceholder')"
|
||||
placeholder="请输入雷达IP"
|
||||
clearable
|
||||
size="mini"
|
||||
></el-input>
|
||||
@ -236,9 +236,9 @@
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="btns" slot="footer">
|
||||
<el-button @click="close" size="mini">{{ $t('common.cancel') }}</el-button>
|
||||
<el-button @click="close" size="mini">取 消</el-button>
|
||||
<el-button type="primary" size="mini" @click="submitDevice"
|
||||
>{{ $t('common.confirm') }}</el-button
|
||||
>确 定</el-button
|
||||
>
|
||||
</div>
|
||||
</dt-dialog>
|
||||
|
||||
@ -52,20 +52,13 @@ export default {
|
||||
id: '',
|
||||
loading: false
|
||||
},
|
||||
// validation rules moved to computed property
|
||||
nameRules: {
|
||||
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||
},
|
||||
checkIds: [],
|
||||
emptyImg: require('@/assets/img/common/empty.svg')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
nameRules() {
|
||||
return {
|
||||
name: [
|
||||
{ required: true, message: this.$t('picture.nameRequired'), trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
visible: {
|
||||
handler: function (nv) {
|
||||
@ -93,10 +86,10 @@ export default {
|
||||
arr.push({
|
||||
id: i,
|
||||
checked: false,
|
||||
name: `${this.$t('picture.pictureName')}${i + 1}`,
|
||||
name: `影像${i + 1}`,
|
||||
url: 'static/img/test.jpg',
|
||||
position: [lon, lat, lon2, lat2],
|
||||
taskName: `${this.$t('picture.taskName')}${i + 1}`,
|
||||
taskName: `任务${i + 1}`,
|
||||
time: moment().format('YYYY-MM-DD HH:mm:ss')
|
||||
})
|
||||
lon += 5
|
||||
@ -123,15 +116,14 @@ export default {
|
||||
pageCurrent: this.page.current,
|
||||
type: [1, 2, 4],
|
||||
}
|
||||
console.log('请求参数', params)
|
||||
if (clear) {
|
||||
this.clearScene()
|
||||
}
|
||||
uavPicturePage(params).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('图片分页', res.data.data)
|
||||
let data = res.data.data.records
|
||||
data.forEach(item => {
|
||||
this.$set(item, 'checked', false)
|
||||
})
|
||||
this.pictureData = data
|
||||
this.page.total = res.data.data.total
|
||||
} else {
|
||||
@ -147,8 +139,9 @@ export default {
|
||||
if (this.checkIds.length > 0) {
|
||||
pictureAiCheck(this.checkIds).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('picture.aiCheckSuccess'))
|
||||
this.$message.success('图片识别成功!')
|
||||
let data = res.data.data
|
||||
console.log('识别结果, dat', data)
|
||||
data.forEach((item, index) => {
|
||||
let findIndex = this.pictureData.findIndex(tar => tar.id === item.id)
|
||||
if (findIndex > -1) {
|
||||
@ -161,15 +154,17 @@ export default {
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(this.$t('picture.selectPicture'))
|
||||
this.$message.warning('请勾选要识别的图片')
|
||||
}
|
||||
},
|
||||
handleCheck(info) {
|
||||
info.checked = !info.checked
|
||||
handleCheck(value, info) {
|
||||
console.log('check变化', value, info)
|
||||
let findIndex = this.checkIds.findIndex(check => check === info.id)
|
||||
if (info.checked) {
|
||||
console.log(33333, findIndex)
|
||||
if (value) {
|
||||
if (findIndex === -1) {
|
||||
this.checkIds.push(info.id)
|
||||
console.log(333, [].concat(this.checkIds))
|
||||
}
|
||||
let obj = {
|
||||
picture: null,
|
||||
@ -324,14 +319,14 @@ export default {
|
||||
},
|
||||
// 删除任务
|
||||
deletePicture(info) {
|
||||
this.$confirm(this.$t('picture.deleteConfirm'), this.$t('picture.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定删除吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
deletePictureItem([info.id]).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('picture.deleteSuccess'))
|
||||
this.$message.success('删除成功')
|
||||
this.getList()
|
||||
// if (layerCollection[info.id]) {
|
||||
// viewer.cesiumViewer.imageryLayers.remove(layerCollection[info.id].picture)
|
||||
@ -364,7 +359,7 @@ export default {
|
||||
editPictureName(params).then(res => {
|
||||
this.editName.loading = false
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('picture.editSuccess'))
|
||||
this.$message.success('修改成功!')
|
||||
this.editName.visible = false
|
||||
this.getList(false)
|
||||
} else {
|
||||
|
||||
@ -45,15 +45,13 @@
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
background-color: rgba(51, 51, 51, 0.6);
|
||||
// border: 1px solid #656363;
|
||||
border-radius: 4px;
|
||||
margin: 10px 0;
|
||||
padding: 10px 15px;
|
||||
cursor: pointer;
|
||||
>p{
|
||||
line-height: 24px;
|
||||
color: $--color-text-2;
|
||||
padding-left: 3px;
|
||||
}
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.pic-center {
|
||||
flex: 1;
|
||||
}
|
||||
@ -110,13 +108,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.is-checked {
|
||||
width: calc(100% - 10px);
|
||||
margin-left: 5px;
|
||||
padding: 8px 15px 8px 10px;
|
||||
background-color: rgba(23, 69, 46, .7) !important;
|
||||
box-shadow: 0 0 15px 3px rgba(23, 69, 46, 0.5)
|
||||
}
|
||||
}
|
||||
|
||||
.page-wrap {
|
||||
@ -148,54 +139,3 @@
|
||||
top: 60px;
|
||||
left: 10px;
|
||||
}
|
||||
.top-part {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 24px;
|
||||
|
||||
&__left {
|
||||
flex: 1;
|
||||
|
||||
.execute-info {
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
.task-execute {
|
||||
color: $--color-text-1;
|
||||
font-size: 14px;
|
||||
width: calc(100% - 50px);
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__right {
|
||||
width: 38px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 5px;
|
||||
|
||||
>i {
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
margin: 2px 0;
|
||||
}
|
||||
|
||||
.edit-task {
|
||||
color: #ffff00;
|
||||
}
|
||||
|
||||
.delete-task {
|
||||
color: $--color-red;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,17 +4,17 @@
|
||||
<dt-card
|
||||
class="picture-content"
|
||||
icon="ri-multi-image-line"
|
||||
:title="$t('picture.list')"
|
||||
title="影像列表"
|
||||
:visible.sync="imageInfo.visible"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
:showDivider="false"
|
||||
>
|
||||
<template v-slot:command>
|
||||
<el-tooltip effect="dark" :content="$t('picture.aiCheck')" placement="top">
|
||||
<el-tooltip effect="dark" content="AI识别" placement="top">
|
||||
<i class="ri-qr-scan-line" @click.stop="aiCheck"></i>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" :content="$t('picture.uploadPicture')" placement="top">
|
||||
<el-tooltip effect="dark" content="上传精处理图片" placement="top">
|
||||
<i class="ri-upload-2-line" @click.stop="showUpload"></i>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
@ -23,30 +23,34 @@
|
||||
<el-input
|
||||
size="mini"
|
||||
v-model="search.name"
|
||||
:placeholder="$t('picture.searchPlaceholder')"
|
||||
clearable
|
||||
@clear="getList"
|
||||
></el-input>
|
||||
<el-button size="mini" type="primary" @click="getList"
|
||||
>{{ $t('common.search') }}</el-button
|
||||
>搜索</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="list-wrap">
|
||||
<div v-for="item in pictureData" :key="item.id" :class="{'is-checked': item.checked,'pic-item':true}" @click.stop="handleCheck(item)">
|
||||
<div class="top-part">
|
||||
<div class="top-part__left">
|
||||
<div class="execute-info">
|
||||
<span class="task-execute">{{ item.name }}</span>
|
||||
<div v-for="item in pictureData" :key="item.id" class="pic-item">
|
||||
<div class="pic-name">
|
||||
<el-checkbox
|
||||
v-model="item.checked"
|
||||
@change="(value) => handleCheck(value, item)"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</div>
|
||||
<div class="pic-center">
|
||||
<div class="pic-task">所属任务:{{ item.jobName }}</div>
|
||||
<div class="pic-time">拍摄时间:{{ item.createTime }}</div>
|
||||
</div>
|
||||
<div class="top-part__right">
|
||||
<el-tooltip effect="dark" :content="$t('picture.editName')" placement="top">
|
||||
<div class="pic-command">
|
||||
<el-tooltip effect="dark" content="修改名称" placement="top">
|
||||
<i
|
||||
class="el-icon-edit-outline"
|
||||
@click.stop="editPictureName(item)"
|
||||
></i>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" :content="$t('picture.delete')" placement="top">
|
||||
<el-tooltip effect="dark" content="删除" placement="top">
|
||||
<i
|
||||
class="el-icon-close delete-task"
|
||||
@click.stop="deletePicture(item)"
|
||||
@ -54,31 +58,26 @@
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<p>{{ $t('picture.task') }}:{{ item.jobName }}</p>
|
||||
<p>{{$t('picture.time')}}:{{ item.createTime }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-wrap">
|
||||
<Pagination
|
||||
:total="page.total"
|
||||
:limit="page.size"
|
||||
:page="page.current"
|
||||
:pagerCount="5"
|
||||
:layout="'total, prev, pager, next'"
|
||||
@pagination="onPageChange"
|
||||
></Pagination>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="task-empty">
|
||||
<img :src="emptyImg" alt="" />
|
||||
<p>{{ $t('picture.noPicture') }}</p>
|
||||
<p>暂无影像</p>
|
||||
</div>
|
||||
</dt-card>
|
||||
</left-slide>
|
||||
|
||||
<!-- 修改名称-->
|
||||
<dt-dialog
|
||||
:title="$t('picture.editNameTitle')"
|
||||
title="修改影像名称"
|
||||
top="20vh"
|
||||
width="400px"
|
||||
:visible.sync="editName.visible"
|
||||
@ -91,11 +90,11 @@
|
||||
label-width="100px"
|
||||
class="picture-name-form"
|
||||
>
|
||||
<el-form-item prop="name" :label="$t('picture.taskName')">
|
||||
<el-form-item prop="name" label="任务名称">
|
||||
<el-input
|
||||
v-model="editName.name"
|
||||
size="small"
|
||||
:placeholder="$t('picture.taskNamePlaceholder')"
|
||||
placeholder="请输入图片文件夹路径"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<div class="submit-wrap">
|
||||
@ -104,7 +103,7 @@
|
||||
type="primary"
|
||||
:disabled="editName.loading || !editName.name"
|
||||
@click.stop="submitName"
|
||||
>{{ $t('common.confirm') }}</el-button
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
@ -10,7 +10,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
visibleLocale: false,
|
||||
taskData: [], // populated via API
|
||||
taskData: [
|
||||
{
|
||||
id: 1,
|
||||
name: '任务1',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '任务2',
|
||||
}
|
||||
],
|
||||
uavOptions: [],
|
||||
loading: false,
|
||||
form: {
|
||||
@ -20,24 +29,19 @@ export default {
|
||||
dir: '',
|
||||
fileUrlArr: []
|
||||
},
|
||||
// rules computed for i18n
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
rules() {
|
||||
return {
|
||||
rules: {
|
||||
dir: [
|
||||
{ required: true, message: this.$t('picturesUpload.rules.inputDirPath'), trigger: 'blur' }
|
||||
{ required: true, message: '请输入文件夹路径', trigger: 'blur' },
|
||||
],
|
||||
fileUrlArr: [
|
||||
{ required: true, message: this.$t('picturesUpload.rules.fileUrlArr'), trigger: 'change' }
|
||||
]
|
||||
};
|
||||
{ required: true, message: '请选择图片', trigger: 'change' }
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
visible: {
|
||||
handler: function (nv) {
|
||||
handler: function(nv) {
|
||||
if (nv) {
|
||||
this.visibleLocale = nv
|
||||
}
|
||||
@ -50,7 +54,7 @@ export default {
|
||||
}
|
||||
},
|
||||
'form.fileUrlArr': {
|
||||
handler: function (newValue, oldValue) {
|
||||
handler: function(newValue, oldValue) {
|
||||
if (newValue.length && this.$refs.form) {
|
||||
this.$refs.form.validateField('fileUrlArr')
|
||||
}
|
||||
@ -69,8 +73,9 @@ export default {
|
||||
|
||||
methods: {
|
||||
getTaskList() {
|
||||
getTaskListData({ type: 2 }).then(res => {
|
||||
getTaskListData({type: 2}).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('任务列表', res.data.data)
|
||||
let data = res.data.data
|
||||
this.taskData = data
|
||||
} else {
|
||||
@ -79,6 +84,7 @@ export default {
|
||||
})
|
||||
},
|
||||
handleJobChange(value) {
|
||||
console.log('变化的', value)
|
||||
this.form.uavId = undefined
|
||||
if (value) {
|
||||
let find = this.taskData.find(item => item.id === value)
|
||||
@ -93,6 +99,7 @@ export default {
|
||||
getUavList() {
|
||||
getUavListData().then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('无人机列表', res.data.data)
|
||||
this.uavOptions = res.data.data
|
||||
// TODO 临时
|
||||
if (this.uavOptions.length > 0) {
|
||||
@ -107,10 +114,12 @@ export default {
|
||||
this.$refs.fileInput.click()
|
||||
},
|
||||
changeFile(event) {
|
||||
console.log('多文件', event.target.files)
|
||||
const files = event.target.files
|
||||
const filesLength = files.length
|
||||
console.log('文件', filesLength, files[0])
|
||||
if (files) {
|
||||
for (let i = 0; i < filesLength; i++) {
|
||||
for(let i = 0; i < filesLength; i++) {
|
||||
let find = this.form.fileUrlArr.find(item => item === files[i].name)
|
||||
if (!find) {
|
||||
this.form.fileUrlArr.push(files[i].name)
|
||||
@ -121,7 +130,7 @@ export default {
|
||||
},
|
||||
resetInputFile() {
|
||||
this.$refs.fileInput.value = ''
|
||||
if (!/safari/i.test(navigator.userAgent)) {
|
||||
if(!/safari/i.test(navigator.userAgent)){
|
||||
this.$refs.fileInput.value.type = ''
|
||||
this.$refs.fileInput.value.type = 'file'
|
||||
}
|
||||
@ -131,6 +140,7 @@ export default {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
let tempFile = ['001.tif', '002.tif']
|
||||
console.log('提交我选取的', this.form.fileUrlArr)
|
||||
let params = {
|
||||
jobId: this.form.jobId,
|
||||
uavId: this.form.uavId,
|
||||
@ -140,7 +150,7 @@ export default {
|
||||
uploadUavPicture(params).then(res => {
|
||||
this.loading = false
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('picturesUpload.uploadSuccess'))
|
||||
this.$message.success('上传成功')
|
||||
this.$emit('submit')
|
||||
this.visibleLocale = false
|
||||
} else {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<dt-dialog
|
||||
:title="$t('picturesUpload.title')"
|
||||
title="上传精处理图片"
|
||||
top="20vh"
|
||||
width="500px"
|
||||
:visible.sync="visibleLocale"
|
||||
@ -8,8 +8,8 @@
|
||||
>
|
||||
<div class="pictures-upload">
|
||||
<el-form :model="form" :rules="rules" ref="form" label-width="120px" class="pictures-upload-form">
|
||||
<el-form-item :label="$t('picturesUpload.jobName')">
|
||||
<el-select v-model="form.jobId" filterable :placeholder="$t('picturesUpload.selectJob')" @change="handleJobChange">
|
||||
<el-form-item label="关联任务" >
|
||||
<el-select v-model="form.jobId" filterable placeholder="请选择" @change="handleJobChange">
|
||||
<el-option
|
||||
v-for="item in taskData"
|
||||
:key="item.id"
|
||||
@ -18,11 +18,10 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('picturesUpload.uav')">
|
||||
<el-form-item label="无人机">
|
||||
<el-select
|
||||
size="small"
|
||||
v-model="form.uavId"
|
||||
:placeholder="$t('picturesUpload.selectUav')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in uavOptions"
|
||||
@ -32,14 +31,14 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="dir" :label="$t('picturesUpload.dirPath')">
|
||||
<el-form-item prop="dir" label="文件夹路径">
|
||||
<el-input
|
||||
v-model="form.dir"
|
||||
size="small"
|
||||
:placeholder="$t('picturesUpload.inputDirPath')"
|
||||
placeholder="请输入图片文件夹路径"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('picturesUpload.fileUrlArr')" prop="fileUrlArr">
|
||||
<el-form-item label="选择图片地址" prop="fileUrlArr">
|
||||
<div class="pick-file">
|
||||
<div :class="{'pick-file-button': true, 'pick-file-button_shrink': form.fileUrlArr.length > 0}" @click.stop="openFile">选取文件</div>
|
||||
<div class="file-list" v-if="form.fileUrlArr.length > 0">
|
||||
@ -59,7 +58,7 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div class="submit-wrap">
|
||||
<el-button size="mini" type="primary" :disabled="loading || form.fileUrlArr.length === 0" @click.stop="submit">{{ $t('picturesUpload.submit') }}</el-button>
|
||||
<el-button size="mini" type="primary" :disabled="loading || form.fileUrlArr.length === 0" @click.stop="submit">确定</el-button>
|
||||
</div>
|
||||
|
||||
</el-form>
|
||||
|
||||
@ -372,12 +372,14 @@ export default {
|
||||
id: '',
|
||||
loading: false
|
||||
},
|
||||
// nameRules moved to computed for translation
|
||||
nameRules: {
|
||||
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||
},
|
||||
uavReady: false,
|
||||
loaderReady: false,
|
||||
taskLineDetail: {
|
||||
visible: false,
|
||||
title: '', // will be set in watcher or when opened
|
||||
title: '航线详情',
|
||||
data: []
|
||||
},
|
||||
currentUavInfo: {
|
||||
@ -386,8 +388,26 @@ export default {
|
||||
height: undefined
|
||||
},
|
||||
previewLoading: false,
|
||||
// focusOptions computed for i18n
|
||||
// motoOptions computed for i18n
|
||||
focusOptions: [
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
}
|
||||
],
|
||||
motoOptions: [
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
},
|
||||
@ -407,23 +427,6 @@ export default {
|
||||
},
|
||||
readyUavLocation() {
|
||||
return this.uavReady && this.loaderReady
|
||||
},
|
||||
nameRules() {
|
||||
return {
|
||||
name: [{ required: true, message: this.$t('task.rules.inputTaskName'), trigger: 'blur' }]
|
||||
};
|
||||
},
|
||||
focusOptions() {
|
||||
return [
|
||||
{ label: this.$t('common.no'), value: 0 },
|
||||
{ label: this.$t('common.yes'), value: 1 }
|
||||
];
|
||||
},
|
||||
motoOptions() {
|
||||
return [
|
||||
{ label: this.$t('common.no'), value: 0 },
|
||||
{ label: this.$t('common.yes'), value: 1 }
|
||||
];
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -492,10 +495,6 @@ export default {
|
||||
// })
|
||||
}
|
||||
},
|
||||
'$i18n.locale'(nv) {
|
||||
// refresh dynamic titles
|
||||
this.taskLineDetail.title = this.$t('task.airline.lineDetail');
|
||||
},
|
||||
'form.targetList': {
|
||||
handler: function (newValue, oldValue) {
|
||||
if (newValue.length && this.taskForm.visible && this.$refs.form) {
|
||||
@ -1721,7 +1720,7 @@ export default {
|
||||
})
|
||||
}
|
||||
})
|
||||
this.taskLineDetail.title = `${find.name}-${this.$t('task.airline.lineDetail')}`
|
||||
this.taskLineDetail.title = find.name + '-航线详情'
|
||||
this.taskLineDetail.data = line
|
||||
this.taskLineDetail.visible = true
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ export default {
|
||||
show: false,
|
||||
visible: false,
|
||||
form: {},
|
||||
title: ''
|
||||
title: '新增任务'
|
||||
},
|
||||
form: {
|
||||
id: '',
|
||||
@ -105,10 +105,46 @@ export default {
|
||||
autoFocus: 0,
|
||||
imageMode: '0',
|
||||
moto: 0,
|
||||
// startPoint: {
|
||||
// lon: undefined,
|
||||
// lat: undefined,
|
||||
// },
|
||||
// endPoint: {
|
||||
// lon: undefined,
|
||||
// lat: undefined,
|
||||
// }
|
||||
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||
startAltitude: [{ required: true, message: '请输入起飞点高度', trigger: 'blur' }],
|
||||
imageLight: [{ required: true, message: '请输入图片亮度', trigger: 'blur' }],
|
||||
mode: [{ required: true, message: '请选择飞行模式', trigger: 'change' }],
|
||||
imageMode: [{ required: true, message: '请选择成像模式', trigger: 'change' }],
|
||||
targetList: [{ required: true, message: '请选择区域', trigger: 'change' }],
|
||||
uav: [{ required: true, message: '请选择无人机', trigger: 'change' }],
|
||||
loader: [{ required: true, message: '请选择载荷', trigger: 'change' }],
|
||||
loaderType: [{ required: true, message: '请选择载荷类型', trigger: 'change' }],
|
||||
ratio: [{ required: true, message: '请选择分辨率', trigger: 'change' }],
|
||||
|
||||
},
|
||||
settingExpand: false,
|
||||
duringDraw: false,
|
||||
duringPick: false,
|
||||
flyModeOptions: [
|
||||
{
|
||||
label: '点目标模式',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '区域目标模式',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: '航线创建',
|
||||
value: 3
|
||||
}
|
||||
],
|
||||
drawOptions: [
|
||||
{
|
||||
label: '点',
|
||||
@ -119,7 +155,58 @@ export default {
|
||||
value: '多边形'
|
||||
}
|
||||
],
|
||||
loaderOptions: [],
|
||||
loaderTypeOptions: [
|
||||
{
|
||||
label: '可见光',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '红外',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: '多光谱',
|
||||
value: 3
|
||||
},
|
||||
{
|
||||
label: '激光雷达',
|
||||
value: 4
|
||||
},
|
||||
{
|
||||
label: 'SAR',
|
||||
value: 'SAR'
|
||||
}
|
||||
],
|
||||
loaderOptions: [
|
||||
],
|
||||
ratioOptions: [
|
||||
{
|
||||
label: '0.1m',
|
||||
value: 0.1
|
||||
},
|
||||
{
|
||||
label: '0.3m',
|
||||
value: 0.3
|
||||
},
|
||||
{
|
||||
label: '1m',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '3m',
|
||||
value: 3
|
||||
},
|
||||
],
|
||||
directionOptions: [
|
||||
{
|
||||
label: '左侧视',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '右侧视',
|
||||
value: -1
|
||||
}
|
||||
],
|
||||
ratioMap: {
|
||||
'0.1': {
|
||||
width: 317.5523063, // y 方向幅宽
|
||||
@ -194,7 +281,22 @@ export default {
|
||||
polarization: '0', //极化方式
|
||||
}
|
||||
},
|
||||
uavOptions: [],
|
||||
heightModeOptions: [
|
||||
{
|
||||
label: '海拔高度',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '相对起飞点高度',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: '相对地形高度',
|
||||
value: 3
|
||||
},
|
||||
],
|
||||
uavOptions: [
|
||||
],
|
||||
duringAirlinePick: false,
|
||||
calculateMap: [
|
||||
{
|
||||
@ -350,11 +452,14 @@ export default {
|
||||
id: '',
|
||||
loading: false
|
||||
},
|
||||
nameRules: {
|
||||
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||
},
|
||||
uavReady: false,
|
||||
loaderReady: false,
|
||||
taskLineDetail: {
|
||||
visible: false,
|
||||
title: '',
|
||||
title: '航线详情',
|
||||
data: []
|
||||
},
|
||||
currentUavInfo: {
|
||||
@ -363,6 +468,36 @@ export default {
|
||||
height: undefined
|
||||
},
|
||||
previewLoading: false,
|
||||
imageModeOptions: [
|
||||
{
|
||||
label: '条带',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: 'GMTI',
|
||||
value: 4
|
||||
}
|
||||
],
|
||||
focusOptions: [
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
}
|
||||
],
|
||||
motoOptions: [
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
}
|
||||
],
|
||||
emptyImg: require('@/assets/img/common/empty.svg'),
|
||||
noAllowDraw: true
|
||||
}
|
||||
@ -385,50 +520,6 @@ export default {
|
||||
readyUavLocation() {
|
||||
return this.uavReady && this.loaderReady
|
||||
},
|
||||
directionOptions() {
|
||||
return [
|
||||
{
|
||||
label: this.$t('task.direction.left'),
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: this.$t('task.direction.right'),
|
||||
value: -1
|
||||
}
|
||||
]
|
||||
},
|
||||
// i18n-aware validation rules
|
||||
rules() {
|
||||
return {
|
||||
name: [{ required: true, message: this.$t('task.rules.inputTaskName'), trigger: 'blur' }],
|
||||
startAltitude: [{ required: true, message: this.$t('task.rules.startAltitude'), trigger: 'blur' }],
|
||||
imageLight: [{ required: true, message: this.$t('task.rules.imageLight'), trigger: 'blur' }],
|
||||
mode: [{ required: true, message: this.$t('task.rules.mode'), trigger: 'change' }],
|
||||
imageMode: [{ required: true, message: this.$t('task.rules.imageMode'), trigger: 'change' }],
|
||||
targetList: [{ required: true, message: this.$t('task.rules.targetList'), trigger: 'change' }],
|
||||
uav: [{ required: true, message: this.$t('task.rules.uav'), trigger: 'change' }],
|
||||
loader: [{ required: true, message: this.$t('task.rules.loader'), trigger: 'change' }],
|
||||
loaderType: [{ required: true, message: this.$t('task.rules.loaderType'), trigger: 'change' }],
|
||||
ratio: [{ required: true, message: this.$t('task.rules.ratio'), trigger: 'change' }],
|
||||
};
|
||||
},
|
||||
nameRules() {
|
||||
return {
|
||||
name: [{ required: true, message: this.$t('task.rules.inputTaskName'), trigger: 'blur' }],
|
||||
};
|
||||
},
|
||||
focusOptions() {
|
||||
return [
|
||||
{ label: this.$t('common.no'), value: 0 },
|
||||
{ label: this.$t('common.yes'), value: 1 }
|
||||
];
|
||||
},
|
||||
motoOptions() {
|
||||
return [
|
||||
{ label: this.$t('common.no'), value: 0 },
|
||||
{ label: this.$t('common.yes'), value: 1 }
|
||||
];
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
visible: {
|
||||
@ -458,7 +549,7 @@ export default {
|
||||
'taskForm.visible'(nv) {
|
||||
if (nv) {
|
||||
this.taskList.visible = false
|
||||
this.taskForm.title = this.$t('task.addTask')
|
||||
|
||||
} else {
|
||||
if (this.visibleLocale) {
|
||||
this.taskList.visible = true
|
||||
@ -471,16 +562,31 @@ export default {
|
||||
viewer.entities.remove(endPoint)
|
||||
endPoint = null
|
||||
}
|
||||
console.log('走这一步了吗')
|
||||
if (theViewerTools) {
|
||||
theViewerTools.destroy()
|
||||
}
|
||||
theViewerTools = null
|
||||
// this.$nextTick(() => {
|
||||
// this.form = {
|
||||
// id: '',
|
||||
// targetChoose: undefined,
|
||||
// loaderType: undefined,
|
||||
// direction: 1,
|
||||
// name: '',
|
||||
// ratio: '',
|
||||
// heightMode: 1,
|
||||
// mode: undefined,
|
||||
// flyHeight: 300,
|
||||
// initSpeed: 10,
|
||||
// targetList: [],
|
||||
// loader: undefined,
|
||||
// uav: undefined,
|
||||
// routepoints: [],
|
||||
// }
|
||||
// })
|
||||
}
|
||||
},
|
||||
'$i18n.locale'(nv) {
|
||||
this.taskForm.title = this.$t('task.addTask');
|
||||
this.taskLineDetail.title = this.$t('task.airline.lineDetail');
|
||||
},
|
||||
'form.targetList': {
|
||||
handler: function (newValue, oldValue) {
|
||||
if (newValue.length && this.taskForm.visible && this.$refs.form) {
|
||||
@ -554,16 +660,39 @@ export default {
|
||||
// #region 任务启动部分代码迁移
|
||||
reRunTask(info) {
|
||||
if (info.status !== 2) return
|
||||
this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定重新执行吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
reRunTask({ id: info.id }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('task.reFlyTaskSuccess'))
|
||||
console.log('重新运行结果', res)
|
||||
this.$message.success('任务重新执行成功')
|
||||
this.getList()
|
||||
this.SET_MENUS_CHOSE('1')
|
||||
// let data = res.data.data
|
||||
// data.check = data.status === 1
|
||||
// data.statusName = this.jobStatus[data.status + '']
|
||||
// data.uavList.forEach(child => {
|
||||
// if (!child.trailList) {
|
||||
// child.trailList = []
|
||||
// }
|
||||
// child.jobName = data.name
|
||||
// })
|
||||
// this.taskList.data.unshift({
|
||||
// id: data.id,
|
||||
// beginTime: data.beginTime,
|
||||
// check: data.check,
|
||||
// endTime: data.endTime,
|
||||
// mode: data.mode,
|
||||
// name: data.name,
|
||||
// status: data.status,
|
||||
// statusName: data.statusName,
|
||||
// })
|
||||
// taskListResource.unshift(data)
|
||||
// this.addUavToScene(data)
|
||||
// this.addTaskPlanArea(data.pointList, data.id, data.name)
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
}
|
||||
@ -571,9 +700,9 @@ export default {
|
||||
})
|
||||
},
|
||||
stopTask(info, index) {
|
||||
this.$confirm(this.$t('task.stopTaskConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定结束任务吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
stopTaskFly({ id: info.id }).then(res => {
|
||||
@ -581,7 +710,7 @@ export default {
|
||||
// info.status = 2
|
||||
this.getList()
|
||||
// info.statusName = this.jobStatus[info.status + '']
|
||||
this.$message.success(this.$t('task.stopTaskSuccess'))
|
||||
this.$message.success('任务已结束!')
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
}
|
||||
@ -590,9 +719,9 @@ export default {
|
||||
|
||||
},
|
||||
makeTaskUavFly(info, index) {
|
||||
this.$confirm(this.$t('task.flyTaskConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定执行吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
flyTaskUavCommand({ id: info.id }).then(res => {
|
||||
@ -606,7 +735,7 @@ export default {
|
||||
// this.toggleTaskSceneShow(child, childIndex)
|
||||
// }
|
||||
// })
|
||||
this.$message.success(this.$t('task.flyTaskSuccess'))
|
||||
this.$message.success('起飞成功')
|
||||
this.SET_MENUS_CHOSE('1')
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
@ -756,8 +885,11 @@ export default {
|
||||
this.uavReady = false
|
||||
getUavEnabledListData().then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('无人机列表', res.data.data)
|
||||
this.uavOptions = res.data.data
|
||||
// TODO 临时
|
||||
if (this.uavOptions.length > 0) {
|
||||
// this.form.uav = this.uavOptions[0].id
|
||||
this.uavReady = true
|
||||
}
|
||||
} else {
|
||||
@ -783,6 +915,7 @@ export default {
|
||||
this.removePreviewLine()
|
||||
this.form.targetList = []
|
||||
// 清楚当前目标
|
||||
console.log(data, '载荷状态信息');
|
||||
let position = DT.Cesium.Cartesian3.fromDegrees(data.longitude, data.latitude, 2000)
|
||||
viewer.cesiumViewer.scene.camera.flyTo({
|
||||
destination: position,
|
||||
@ -828,21 +961,23 @@ export default {
|
||||
latitude: res.data.data.latitude,
|
||||
height: res.data.data.altitude,
|
||||
}
|
||||
console.log(this.currentUavInfo, 889999999);
|
||||
|
||||
let position = DT.Cesium.Cartesian3.fromDegrees(res.data.data.longitude, res.data.data.latitude, 3000)
|
||||
viewer.cesiumViewer.scene.camera.flyTo({
|
||||
destination: position,
|
||||
duration: 1
|
||||
})
|
||||
this.$message.success(this.$t('task.refreshUavHeightSuccess'))
|
||||
this.$message.success('获取当前高度成功!')
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(this.$t('task.selectLoader'))
|
||||
this.$message.warning('请选择雷达!')
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(this.$t('task.selectUav'))
|
||||
this.$message.warning('请选择无人机!')
|
||||
}
|
||||
},
|
||||
getList() {
|
||||
@ -884,6 +1019,7 @@ export default {
|
||||
copyTask(info) {
|
||||
getTaskEditItemDetail({ jobId: info.id }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
console.log('编辑详情', res.data.data)
|
||||
this.editTask(JSON.parse(res.data.data))
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
@ -907,7 +1043,7 @@ export default {
|
||||
editTaskName(params).then(res => {
|
||||
this.editName.loading = false
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('common.editSuccess'))
|
||||
this.$message.success('修改成功!')
|
||||
this.editName.visible = false
|
||||
this.getList()
|
||||
} else {
|
||||
@ -921,14 +1057,14 @@ export default {
|
||||
},
|
||||
// 删除任务
|
||||
deleteTask(info) {
|
||||
this.$confirm(this.$t('task.deleteConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定删除吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
deleteTaskItem([info.id]).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('common.deleteSuccess'))
|
||||
this.$message.success('删除成功')
|
||||
this.getList()
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
@ -942,14 +1078,14 @@ export default {
|
||||
* @param info
|
||||
*/
|
||||
reRunTask(info) {
|
||||
this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('确定重新执行吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(res => {
|
||||
reRunTask({ id: info.id }).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('task.reFlyTaskSuccess'))
|
||||
this.$message.success('任务重新执行成功')
|
||||
this.getList()
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
@ -963,6 +1099,7 @@ export default {
|
||||
* @param info
|
||||
*/
|
||||
editTask(info) {
|
||||
console.log('复制信息', info)
|
||||
// 移除所有线
|
||||
this.removeAllAirline()
|
||||
// 移除预览
|
||||
@ -1077,6 +1214,7 @@ export default {
|
||||
|
||||
theViewerTools = new AreaPlotManager(viewer)
|
||||
theViewerTools.initPlot(this.theCallback)
|
||||
console.log('船舰了吗', theViewerTools)
|
||||
},
|
||||
|
||||
|
||||
@ -1130,6 +1268,8 @@ export default {
|
||||
})
|
||||
},
|
||||
submit() {
|
||||
console.log(this.form, 88888888);
|
||||
|
||||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
let params = JSON.parse(JSON.stringify(this.form))
|
||||
@ -1237,10 +1377,12 @@ export default {
|
||||
}
|
||||
]
|
||||
}
|
||||
console.log(info, 22222222222);
|
||||
|
||||
if (info.id) {
|
||||
addTaskFast(info).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('task.addTaskSuccess'))
|
||||
this.$message.success('新增任务任务成功')
|
||||
this.taskForm.visible = false
|
||||
this.getList()
|
||||
} else {
|
||||
@ -1250,7 +1392,7 @@ export default {
|
||||
} else {
|
||||
addTaskFast(info).then(res => {
|
||||
if (res.data.code === 200) {
|
||||
this.$message.success(this.$t('task.addTaskSuccess'))
|
||||
this.$message.success('新增任务任务成功')
|
||||
this.taskForm.visible = false
|
||||
this.resetForm()
|
||||
this.getList()
|
||||
@ -1270,6 +1412,11 @@ export default {
|
||||
* @param value
|
||||
*/
|
||||
onModeChange(value) {
|
||||
console.log('飞行模式', value)
|
||||
// if (linePlot) {
|
||||
// linePlot.destroy()
|
||||
// linePlot = null
|
||||
// }
|
||||
this.form.targetList.forEach(item => {
|
||||
this.tagClose(item)
|
||||
})
|
||||
@ -1329,6 +1476,7 @@ export default {
|
||||
*/
|
||||
targetTypeChange(val) {
|
||||
this.endDraw()
|
||||
|
||||
switch (val) {
|
||||
case '区域选择':
|
||||
break
|
||||
@ -1452,13 +1600,13 @@ export default {
|
||||
startAirlineDraw() {
|
||||
if (this.readOnly) return
|
||||
if (this.duringAirlinePick) {
|
||||
this.$message.info(this.$t('task.duringAirlinePick'))
|
||||
this.$message.info('已经处于绘制模式!')
|
||||
return
|
||||
}
|
||||
if (this.form.routepoints.length > 0) {
|
||||
this.$confirm(this.$t('task.clearAirlineConfirm'), this.$t('task.tip'), {
|
||||
confirmButtonText: this.$t('common.confirm'),
|
||||
cancelButtonText: this.$t('common.cancel'),
|
||||
this.$confirm('绘制会清除历史数据,是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.form.routepoints = []
|
||||
@ -1522,7 +1670,7 @@ export default {
|
||||
onTableCommand(info, index) {
|
||||
if (this.readOnly || this.duringAirlinePick) return
|
||||
if (this.form.routepoints.length < 3) {
|
||||
this.$message.warning(this.$t('task.airlineMinPoint'))
|
||||
this.$message.warning('至少需要保留两个点!')
|
||||
return
|
||||
}
|
||||
let position = DT.Cesium.Cartesian3.fromDegrees(info.longitude, info.latitude)
|
||||
@ -1571,7 +1719,7 @@ export default {
|
||||
result.forEach((item, index) => {
|
||||
if (index < length - 1) {
|
||||
lineData.push({
|
||||
name: this.$t('task.point') + (index + 1),
|
||||
name: '点' + (index + 1),
|
||||
lon: item[0].toFixed(4),
|
||||
lat: item[1].toFixed(4)
|
||||
})
|
||||
@ -1683,7 +1831,7 @@ export default {
|
||||
if (this.form.mode === '1') {
|
||||
if (this.form.targetChoose === '多边形') {
|
||||
this.onModeChange('1')
|
||||
this.form.targetChoose = this.$t('task.point')
|
||||
this.form.targetChoose = '点'
|
||||
}
|
||||
} else {
|
||||
this.form.mode = '1'
|
||||
@ -1784,7 +1932,7 @@ export default {
|
||||
}
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: this.$t('task.createAirlineTip'),
|
||||
message: '在场景中点击鼠标左键创建航线',
|
||||
duration: 4000,
|
||||
})
|
||||
this.airlineCreateInfo.during = true
|
||||
@ -1937,7 +2085,7 @@ export default {
|
||||
if (res.data.code === 200) {
|
||||
let data = res.data.data
|
||||
this.addPreviewLine(data.uavList)
|
||||
this.$message.success(this.$t('task.getAirlineSuccess'))
|
||||
this.$message.success('获取航线成功!')
|
||||
} else {
|
||||
this.$message.error(res.data.message)
|
||||
}
|
||||
@ -2072,7 +2220,7 @@ export default {
|
||||
})
|
||||
}
|
||||
})
|
||||
this.taskLineDetail.title = find.name + '-' + this.$t('task.airline.lineDetail')
|
||||
this.taskLineDetail.title = find.name + '-航线详情'
|
||||
this.taskLineDetail.data = line
|
||||
this.taskLineDetail.visible = true
|
||||
}
|
||||
|
||||
@ -7,8 +7,7 @@
|
||||
'task-list__large': isIconModeLarge,
|
||||
}"
|
||||
icon="ri-list-unordered"
|
||||
:title="this.$t('task.taskList')"
|
||||
|
||||
title="任务列表"
|
||||
:visible.sync="taskList.visible"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
@ -17,13 +16,13 @@
|
||||
<template v-slot:header>
|
||||
<span class="remote-header">
|
||||
<i class="ri-function-add-line"></i>
|
||||
{{ $t('task.taskList') }}
|
||||
任务列表
|
||||
</span>
|
||||
</template>
|
||||
<template v-slot:command>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="$t('task.addTask')"
|
||||
content="新增任务"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -52,7 +51,7 @@
|
||||
<div class="top-part__right">
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="item.check ? $t('task.hide') : $t('task.show')"
|
||||
:content="item.check ? '隐藏' : '显示'"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -64,7 +63,7 @@
|
||||
<el-tooltip
|
||||
v-if="item.status === 0"
|
||||
effect="dark"
|
||||
:content="$t('task.execute')"
|
||||
content="执行"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -75,7 +74,7 @@
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="$t('task.reExecute')"
|
||||
content="重新执行"
|
||||
placement="top"
|
||||
v-if="item.status === 2"
|
||||
:hide-after="1000"
|
||||
@ -94,16 +93,16 @@
|
||||
<i class="ri-more-fill"></i>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="edit">{{ $t('task.editName') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="copy">{{ $t('task.copy') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="remove">{{ $t('task.delete') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="edit">修改名称</el-dropdown-item>
|
||||
<el-dropdown-item command="copy">复制</el-dropdown-item>
|
||||
<el-dropdown-item command="remove">删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
|
||||
<p>{{ $t('task.radarName') }}: {{ item.sar }}</p>
|
||||
<p>{{ $t('task.startTime') }}:{{ item.beginTime }}</p>
|
||||
<p>无人机名称: {{ item.uav }}</p>
|
||||
<p>雷达名称: {{ item.sar }}</p>
|
||||
<p>开始时间:{{ item.beginTime }}</p>
|
||||
<div
|
||||
class="task-info"
|
||||
:style="{ color: dealStatusColor(item.statusName) }"
|
||||
@ -114,7 +113,7 @@
|
||||
</div>
|
||||
<div v-else class="task-empty">
|
||||
<img :src="emptyImg" alt="" />
|
||||
<p>{{ $t('task.noTask') }}</p>
|
||||
<p>暂无任务</p>
|
||||
</div>
|
||||
</dt-card>
|
||||
<dt-card
|
||||
@ -136,14 +135,14 @@
|
||||
label-position="left"
|
||||
label-width="auto"
|
||||
>
|
||||
<el-form-item prop="name" :label="$t('task.taskName')">
|
||||
<el-form-item prop="name" label="任务名称">
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
size="small"
|
||||
:placeholder="$t('task.inputTaskName')"
|
||||
placeholder="请输入任务名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="uav" :label="$t('task.uav')">
|
||||
<el-form-item prop="uav" label="无人机">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -157,13 +156,12 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="loader" :label="$t('task.loader')">
|
||||
<el-form-item prop="loader" label="载荷">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
v-model="form.loader"
|
||||
@change="loaderChange"
|
||||
:placeholder="$t('task.selectLoader')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in loaderOptions"
|
||||
@ -173,7 +171,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="mode" :label="$t('task.flyMode')">
|
||||
<el-form-item prop="mode" label="飞行模式">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -190,7 +188,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('task.taskTarget')"
|
||||
label="任务目标"
|
||||
v-if="form.mode === '1'"
|
||||
style="margin-bottom: 0"
|
||||
>
|
||||
@ -200,7 +198,6 @@
|
||||
size="small"
|
||||
:disabled="duringDraw || noAllowDraw"
|
||||
v-model="form.targetChoose"
|
||||
:placeholder="$t('task.selectTarget')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in drawOptions"
|
||||
@ -215,7 +212,7 @@
|
||||
type="primary"
|
||||
@click="drawFromButton"
|
||||
:disabled="duringDraw || duringPick || !form.targetChoose"
|
||||
>{{ $t('task.draw') }}</el-button
|
||||
>绘制</el-button
|
||||
>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@ -233,9 +230,9 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="$t('task.airline')" v-if="form.mode === '3'">
|
||||
<el-form-item label="航线" v-if="form.mode === '3'">
|
||||
<div class="airline-wrap">
|
||||
<div class="airline-create" @click="createAirline">{{ $t('task.createAirline') }}</div>
|
||||
<div class="airline-create" @click="createAirline">创建航线</div>
|
||||
<div class="airline-list">
|
||||
<div
|
||||
class="airline-item"
|
||||
@ -266,7 +263,55 @@
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="startAltitude" :label="$t('task.startAltitude')">
|
||||
|
||||
<!-- <div class="airline-point-header" v-if="form.mode === '3'">
|
||||
<span>航线信息</span>
|
||||
<div class="command-button" @click="startAirlineDraw"><img :src="startDrawIcon"> 开始绘制</div>
|
||||
<div class="command-button" @click="endAirlineDraw"> <img :src="endDrawIcon">结束绘制</div>
|
||||
</div>
|
||||
<div class="point-table" v-if="form.mode === '3'">
|
||||
<el-table :data="form.routepoints" stripe style="width: 100%" height="100%" class="airline-modify-table">
|
||||
<el-table-column type="index" width="54" label="序号" align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="longitude" header-align="center" label="经度">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
:disabled="readOnly || duringAirlinePick"
|
||||
style="color: #FFBB51;"
|
||||
v-model.number="scope.row.longitude"
|
||||
@change="onTableInputChange(scope.row, scope.$index)"
|
||||
type="number"
|
||||
size="mini"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="latitude" header-align="center" label="纬度">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
:disabled="readOnly || duringPick"
|
||||
v-model.number="scope.row.latitude"
|
||||
@change="onTableInputChange(scope.row, scope.$index)"
|
||||
type="number"
|
||||
size="mini"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div class="table-button">
|
||||
<img
|
||||
:src="IconDelete"
|
||||
alt="删除"
|
||||
@click.stop="onTableCommand(scope.row,scope.$index,)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>-->
|
||||
|
||||
<el-form-item prop="startAltitude" label="起飞点高度">
|
||||
<div class="input-command">
|
||||
<el-input
|
||||
v-model.number="form.startAltitude"
|
||||
@ -277,7 +322,7 @@
|
||||
type="primary"
|
||||
:disabled="!form.loader || !form.uav"
|
||||
@click.stop="refreshUavHeight()"
|
||||
>{{ $t('task.update') }}</el-button
|
||||
>更新</el-button
|
||||
>
|
||||
<!-- <el-tooltip-->
|
||||
<!-- effect="dark"-->
|
||||
@ -288,7 +333,7 @@
|
||||
<!-- </el-tooltip>-->
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="imageLight" :label="$t('task.imageLight')">
|
||||
<el-form-item prop="imageLight" label="图片亮度">
|
||||
<el-input-number
|
||||
v-model="form.imageLight"
|
||||
controls-position="right"
|
||||
@ -296,7 +341,7 @@
|
||||
:max="100"
|
||||
></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item prop="ratio" :label="$t('task.resolution')">
|
||||
<el-form-item prop="ratio" label="分辨率">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -312,7 +357,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.imageMode')" prop="imageMode">
|
||||
<el-form-item label="成像模式" prop="imageMode">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -329,7 +374,7 @@
|
||||
</el-form-item>
|
||||
<div class="more-setting">
|
||||
<div class="setting-left">
|
||||
<i class="ri-settings-line"></i> {{ $t('task.moreSetting') }}
|
||||
<i class="ri-settings-line"></i> 更多设置
|
||||
</div>
|
||||
<i
|
||||
@click="settingExpand = !settingExpand"
|
||||
@ -340,7 +385,21 @@
|
||||
></i>
|
||||
</div>
|
||||
<template v-if="settingExpand">
|
||||
<el-form-item prop="initSpeed" :label="$t('task.flySpeed')">
|
||||
<!-- <el-form-item prop="heightMode" label="航线高度模式">-->
|
||||
<!-- <el-select-->
|
||||
<!-- size="small"-->
|
||||
<!-- v-model="form.heightMode"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in heightModeOptions"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<el-form-item prop="initSpeed" label="飞行速度">
|
||||
<!-- <el-input-->
|
||||
<!-- v-model.number="form.initSpeed"-->
|
||||
<!-- type="number"-->
|
||||
@ -355,7 +414,7 @@
|
||||
:max="20"
|
||||
></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.autoFocus')">
|
||||
<el-form-item label="自动聚焦">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -369,7 +428,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.moto')">
|
||||
<el-form-item label="运动补偿">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -386,7 +445,7 @@
|
||||
<el-form-item
|
||||
v-if="form.mode !== '2'"
|
||||
prop="headingDiff"
|
||||
:label="$t('task.radarHeading')"
|
||||
label="雷达朝向"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.headingDiff"
|
||||
@ -395,7 +454,7 @@
|
||||
:max="180"
|
||||
></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.imageBit')">
|
||||
<el-form-item label="图像位数">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -405,7 +464,7 @@
|
||||
<el-option label="16bit" :value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.sideViewDirection')" v-if="form.mode !== '3'">
|
||||
<el-form-item label="侧视方向" v-if="form.mode !== '3'">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -420,7 +479,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.polarization')">
|
||||
<el-form-item label="极化方式">
|
||||
<el-select
|
||||
popper-class="form-light"
|
||||
size="small"
|
||||
@ -434,7 +493,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="flyHeight" :label="$t('task.flyHeight')">
|
||||
<el-form-item prop="flyHeight" label="飞行高度">
|
||||
<el-slider
|
||||
v-model="form.flyHeight"
|
||||
show-input
|
||||
@ -444,7 +503,7 @@
|
||||
size="mini"
|
||||
></el-slider>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.downViewAngle')">
|
||||
<el-form-item label="下视角">
|
||||
<el-slider
|
||||
v-model="form.theta"
|
||||
:step="0.1"
|
||||
@ -455,7 +514,7 @@
|
||||
size="mini"
|
||||
></el-slider>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.mode !== '2'" :label="$t('task.waveAngle')">
|
||||
<el-form-item v-if="form.mode !== '2'" label="波束半角">
|
||||
<el-slider
|
||||
v-model="form.waveAngle"
|
||||
:step="0.1"
|
||||
@ -466,13 +525,13 @@
|
||||
size="mini"
|
||||
></el-slider>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('task.y_width')">
|
||||
<el-form-item label="y向幅宽">
|
||||
<el-input
|
||||
:disabled="true"
|
||||
v-model.number="form.width"
|
||||
type="number"
|
||||
size="small"
|
||||
:placeholder="$t('task.y_width_placeholder')"
|
||||
placeholder="请输入y向幅宽"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="返航点设置">-->
|
||||
@ -490,15 +549,15 @@
|
||||
:disabled="previewLoading"
|
||||
v-if="form.mode === '1'"
|
||||
@click="previewLine"
|
||||
>{{ $t('common.preview') }}</el-button
|
||||
>预览</el-button
|
||||
>
|
||||
<el-button size="mini" type="primary" @click="submit">{{ $t('common.save') }}</el-button>
|
||||
<el-button size="mini" type="primary" @click="submit">保存</el-button>
|
||||
</div>
|
||||
</dt-card>
|
||||
</left-slide>
|
||||
|
||||
<dt-dialog
|
||||
:title="$t('task.editTaskName')"
|
||||
title="修改任务名称"
|
||||
top="20vh"
|
||||
width="400px"
|
||||
:visible.sync="editName.visible"
|
||||
@ -511,11 +570,11 @@
|
||||
label-width="100px"
|
||||
class="task-name-form"
|
||||
>
|
||||
<el-form-item prop="name" :label="$t('task.taskName')">
|
||||
<el-form-item prop="name" label="任务名称">
|
||||
<el-input
|
||||
v-model="editName.name"
|
||||
size="small"
|
||||
:placeholder="$t('task.taskNamePlaceholder')"
|
||||
placeholder="请输入图片文件夹路径"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<div class="submit-wrap">
|
||||
@ -524,7 +583,7 @@
|
||||
type="primary"
|
||||
:disabled="editName.loading || !editName.name"
|
||||
@click.stop="submitName"
|
||||
>{{ $t('common.confirm') }}</el-button
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</el-form>
|
||||
@ -540,17 +599,17 @@
|
||||
<div class="task-line-detail">
|
||||
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
||||
<el-table-column type="index" width="50"> </el-table-column>
|
||||
<el-table-column prop="startLon" :label="$t('task.airline.startLon')"> </el-table-column>
|
||||
<el-table-column prop="startLat" :label="$t('task.airline.startLat')"> </el-table-column>
|
||||
<el-table-column prop="startHeight" :label="$t('task.airline.startHeight')">
|
||||
<el-table-column prop="startLon" label="起点经度"> </el-table-column>
|
||||
<el-table-column prop="startLat" label="起点纬度"> </el-table-column>
|
||||
<el-table-column prop="startHeight" label="起点相对高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="startAlt" :label="$t('task.airline.startAlt')">
|
||||
<el-table-column prop="startAlt" label="起点海拔高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="endLon" :label="$t('task.airline.endLon')"> </el-table-column>
|
||||
<el-table-column prop="endLat" :label="$t('task.airline.endLat')"> </el-table-column>
|
||||
<el-table-column prop="endHeight" :label="$t('task.airline.endHeight')">
|
||||
<el-table-column prop="endLon" label="终点经度"> </el-table-column>
|
||||
<el-table-column prop="endLat" label="终点纬度"> </el-table-column>
|
||||
<el-table-column prop="endHeight" label="终点相对高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="endAlt" :label="$t('task.airline.endAlt')">
|
||||
<el-table-column prop="endAlt" label="终点海拔高度">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
@ -33,7 +33,6 @@ import PicturesUpload from '../pictures-upload/index.vue'
|
||||
import RightSlide from '@/components/RightSlide.vue'
|
||||
import LeftSlide from '@/components/LeftSlide.vue'
|
||||
import { debounce } from '@/utils'
|
||||
import { gisLabels } from '@/lang/index'
|
||||
let handler = undefined
|
||||
let broadcastChannel = null
|
||||
let broadcastChannelInterval = null
|
||||
@ -58,7 +57,6 @@ let radarSceneEntity = {}
|
||||
let sceneEntity = {}
|
||||
let taskListResource = []
|
||||
let orthoManager = null
|
||||
const lang = window.localStorage.getItem('locale') || 'zh_CN'
|
||||
export default {
|
||||
name: 'TwinSituation',
|
||||
props: {
|
||||
@ -247,9 +245,40 @@ export default {
|
||||
},
|
||||
],
|
||||
statusInfo: {
|
||||
dev: [],
|
||||
gps: [],
|
||||
imu: [],
|
||||
dev: [
|
||||
// { name: '是否开机', value: '是', unit: '' },
|
||||
{ name: '时钟锁定', value: '是', unit: '' },
|
||||
// { name: 'GPU温度', value: '正常', unit: '' },
|
||||
{ name: 'CPU温度', value: '', unit: '℃' },
|
||||
{ name: '射频温度', value: '', unit: '℃' },
|
||||
{ name: '天线温度', value: '', unit: '℃' },
|
||||
{ name: '硬盘温度', value: '', unit: '℃' },
|
||||
{ name: 'FPGA温度', value: '', unit: '℃' },
|
||||
{ name: '硬盘容量', value: '', unit: '%' },
|
||||
{ name: '内存容量', value: '', unit: 'MB' },
|
||||
],
|
||||
gps: [
|
||||
// { name: '定位状态', value: '正常', unit: '' },
|
||||
// { name: '定向状态', value: '正常', unit: '' },
|
||||
{ name: 'rtk状态', value: '无效', unit: '' },
|
||||
{ name: '卫星个数', value: '', unit: '' },
|
||||
{ name: '惯导状态', value: '位置+速度+航向', unit: '' },
|
||||
{ name: '年月日', value: moment().format('YYYY-MM-DD'), unit: '' },
|
||||
{ name: '经度', value: '', unit: '°' },
|
||||
{ name: '纬度', value: '', unit: '°' },
|
||||
{ name: '高度', value: '', unit: 'm' },
|
||||
],
|
||||
imu: [
|
||||
{ name: '配置状态', value: '', unit: '' },
|
||||
{ name: '天线方位角', value: '', unit: '°' },
|
||||
{ name: '天线俯仰角', value: '', unit: '°' },
|
||||
{ name: '东向速度', value: '', unit: 'm/s' },
|
||||
{ name: '北向速度', value: '', unit: 'm/s' },
|
||||
{ name: '天向速度', value: '', unit: 'm/s' },
|
||||
{ name: '俯仰角', value: '', unit: '°' },
|
||||
{ name: '翻转角', value: '', unit: '°' },
|
||||
{ name: '偏航角', value: '', unit: '°' },
|
||||
],
|
||||
dev2: {
|
||||
isWork: true,
|
||||
isLock: true,
|
||||
@ -1166,9 +1195,8 @@ export default {
|
||||
allPositions = allPositions.concat(positions)
|
||||
let entity = viewer.entities.add({
|
||||
position: positions[0],
|
||||
id: `${taskId}-area`,
|
||||
label: {
|
||||
text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
|
||||
text: `${taskName}任务-规划区域${index + 1}`,
|
||||
disableDepthTestDistance: 10000,
|
||||
font: '14px sans-serif',
|
||||
fillColor: DT.Cesium.Color.RED,
|
||||
@ -1196,9 +1224,8 @@ export default {
|
||||
allPositions.push(position)
|
||||
let entity = viewer.entities.add({
|
||||
position,
|
||||
id: `${taskId}-area`,
|
||||
label: {
|
||||
text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
|
||||
text: `${taskName}任务-规划区域${index + 1}`,
|
||||
disableDepthTestDistance: 10000,
|
||||
font: '14px sans-serif',
|
||||
fillColor: DT.Cesium.Color.RED,
|
||||
@ -2725,37 +2752,37 @@ export default {
|
||||
this.detailUav.baseInfo.status = data.connected
|
||||
this.detailUav.statusInfo.dev = [
|
||||
// { name: '是否开机', value: this.sarWorkStatus[data.dIsBoot], unit: '' },
|
||||
{ name: this.$t('task.fly.clockLock'), value: this.successStatus[data.clockLock], unit: '' },
|
||||
{ name: '时钟锁定', value: this.successStatus[data.clockLock], unit: '' },
|
||||
// { name: 'GPU温度', value: '正常', unit: '' },
|
||||
{ name: this.$t('task.fly.cpuTemp'), value: data.cpuC, unit: '℃' },
|
||||
{ name: this.$t('task.fly.rfTemp'), value: data.rfC, unit: '℃' },
|
||||
{ name: this.$t('task.fly.antennaTemp'), value: data.antC, unit: '℃' },
|
||||
{ name: this.$t('task.fly.diskTemp'), value: data.diskC, unit: '℃' },
|
||||
{ name: this.$t('task.fly.fpgaTemp'), value: data.fpgaC, unit: '℃' },
|
||||
{ name: this.$t('task.fly.diskCapacity'), value: data.diskUtilization, unit: '%' },
|
||||
{ name: this.$t('task.fly.memoryCapacity'), value: data.memoryCapacity, unit: 'MB' },
|
||||
{ name: 'CPU温度', value: data.cpuC, unit: '℃' },
|
||||
{ name: '射频温度', value: data.rfC, unit: '℃' },
|
||||
{ name: '天线温度', value: data.antC, unit: '℃' },
|
||||
{ name: '硬盘温度', value: data.diskC, unit: '℃' },
|
||||
{ name: 'FPGA温度', value: data.fpgaC, unit: '℃' },
|
||||
{ name: '硬盘容量', value: data.diskUtilization, unit: '%' },
|
||||
{ name: '内存容量', value: data.memoryCapacity, unit: 'MB' },
|
||||
]
|
||||
this.detailUav.statusInfo.gps = [
|
||||
// { name: '定位状态', value: '正常', unit: '' },
|
||||
// { name: '定向状态', value: '正常', unit: '' },
|
||||
{ name: this.$t('task.fly.rtkStatus'), value: data.rtkStatusLabel, unit: '' },
|
||||
{ name: this.$t('task.fly.satelliteNum'), value: data.satelliteNum, unit: '' },
|
||||
{ name: this.$t('task.fly.imuStatus'), value: this.imuStatus[data.imuStatus], unit: '' },
|
||||
{ name: this.$t('task.fly.date'), value: data.date, unit: '' },
|
||||
{ name: this.$t('task.fly.longitude'), value: data.longitude, unit: '°' },
|
||||
{ name: this.$t('task.fly.latitude'), value: data.latitude, unit: '°' },
|
||||
{ name: this.$t('task.fly.height'), value: data.altitude, unit: 'm' },
|
||||
{ name: 'rtk状态', value: data.rtkStatusLabel, unit: '' },
|
||||
{ name: '卫星个数', value: data.satelliteNum, unit: '' },
|
||||
{ name: '惯导状态', value: this.imuStatus[data.imuStatus], unit: '' },
|
||||
{ name: '年月日', value: data.date, unit: '' },
|
||||
{ name: '经度', value: data.longitude, unit: '°' },
|
||||
{ name: '纬度', value: data.latitude, unit: '°' },
|
||||
{ name: '高度', value: data.altitude, unit: 'm' },
|
||||
]
|
||||
this.detailUav.statusInfo.imu = [
|
||||
{ name: this.$t('task.fly.configStatus'), value: '正常', unit: '' },
|
||||
{ name: this.$t('task.fly.antennaAzimuth'), value: data.antennaAzimuth, unit: '°' },
|
||||
{ name: this.$t('task.fly.antennaPitch'), value: data.antennaPitch, unit: '°' },
|
||||
{ name: this.$t('task.fly.eastwardSpeed'), value: data.eastVelocity, unit: 'm/s' },
|
||||
{ name: this.$t('task.fly.northwardSpeed'), value: data.northVelocity, unit: 'm/s' },
|
||||
{ name: this.$t('task.fly.upwardSpeed'), value: data.skyVelocity, unit: 'm/s' },
|
||||
{ name: this.$t('task.fly.pitchAngle'), value: data.anglePitch, unit: '°' },
|
||||
{ name: this.$t('task.fly.rollAngle'), value: data.angleRoll, unit: '°' },
|
||||
{ name: this.$t('task.fly.yawAngle'), value: data.angleYaw, unit: '°' },
|
||||
{ name: '配置状态', value: '正常', unit: '' },
|
||||
{ name: '天线方位角', value: data.antennaAzimuth, unit: '°' },
|
||||
{ name: '天线俯仰角', value: data.antennaPitch, unit: '°' },
|
||||
{ name: '东向速度', value: data.eastVelocity, unit: 'm/s' },
|
||||
{ name: '北向速度', value: data.northVelocity, unit: 'm/s' },
|
||||
{ name: '天向速度', value: data.skyVelocity, unit: 'm/s' },
|
||||
{ name: '俯仰角', value: data.anglePitch, unit: '°' },
|
||||
{ name: '翻转角', value: data.angleRoll, unit: '°' },
|
||||
{ name: '偏航角', value: data.angleYaw, unit: '°' },
|
||||
]
|
||||
// 更新场景中数据
|
||||
// this.updateSceneUav(data)
|
||||
|
||||
@ -1327,7 +1327,7 @@
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: calc(100vh - 60px);
|
||||
width: 400px;
|
||||
width: 360px;
|
||||
transform: translateX(-50%);
|
||||
background-color: $--color-black-1-alpha;
|
||||
padding: 6px 10px;
|
||||
@ -1347,10 +1347,9 @@
|
||||
align-items: center;
|
||||
|
||||
.is-label {
|
||||
text-align: center;
|
||||
flex: none;
|
||||
color: $--color-text-1;
|
||||
width: 90px;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,46 @@
|
||||
<template>
|
||||
<div class="twin-situation">
|
||||
<!-- 资源列表 -->
|
||||
<!--dt-card
|
||||
:class="{
|
||||
'resource-list': true,
|
||||
'resource-list__large': isIconModeLarge
|
||||
}"
|
||||
icon="ri-send-plane-line"
|
||||
title="可用资源"
|
||||
:visible.sync="resourceList.visible"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
:showDivider="false"
|
||||
>
|
||||
<template v-slot:header>
|
||||
<span class="remote-header">
|
||||
<i class="iconfont icon-left_icon_remote"></i>
|
||||
可用资源
|
||||
</span>
|
||||
</template-->
|
||||
<!-- <template v-slot:command>-->
|
||||
<!-- <el-tooltip-->
|
||||
<!-- effect="dark"-->
|
||||
<!-- content="详情"-->
|
||||
<!-- placement="bottom"-->
|
||||
<!-- >-->
|
||||
<!-- <i class="ri-eye-2-line" @click="toggleRightShow"></i>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </template>-->
|
||||
<!--div class="resource-list__content">
|
||||
<div v-for="item in resourceList.data" :key="item.id" class="resource-item" @click.stop="resourceClick(item)">
|
||||
<span class="device-status" :class="item.status ? 'device-status__online' : ''"></span>
|
||||
<span class="icon"><i class="ri-dv-line"></i></span>
|
||||
<span class="device-name">{{item.name}}</span>
|
||||
<span class="battery" :class="getDeviceBatteryClass(item.battery)" style="opacity: 0;"><i class="ri-battery-saver-line"></i>{{item.battery}}%</span>
|
||||
<span class="fly-height"><i class="ri-expand-vertical-line"></i>{{item.flyHeight}}m</span>
|
||||
<span class="device-location"><i class="ri-map-pin-line"></i>{{item.lon}},{{item.lat}}</span>
|
||||
<i class="iconfont icon-zhuizong device-lock" @click.stop="flyToTarget(item.lon, item.lat, item.flyHeight)"></i>
|
||||
</div>
|
||||
</div>
|
||||
</dt-card-->
|
||||
|
||||
<left-slide class="task-info-wrap">
|
||||
<dt-card
|
||||
:class="{
|
||||
@ -14,9 +55,18 @@
|
||||
<template v-slot:header>
|
||||
<span class="remote-header">
|
||||
<i class="ri-task-fill"></i>
|
||||
{{ $t('task.executingTasks') }}
|
||||
执行中的任务
|
||||
</span>
|
||||
</template>
|
||||
<!-- <template v-slot:command>-->
|
||||
<!-- <el-tooltip-->
|
||||
<!-- effect="dark"-->
|
||||
<!-- content="上传精处理图片"-->
|
||||
<!-- placement="top"-->
|
||||
<!-- >-->
|
||||
<!-- <i class="ri-upload-2-line" @click.stop="showUpload"></i>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </template>-->
|
||||
<div class="task-list__content">
|
||||
<template v-if="taskList.data.length">
|
||||
<div
|
||||
@ -43,7 +93,7 @@
|
||||
<div class="top-part__right">
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="item.check ? $t('task.hide') : $t('task.show')"
|
||||
:content="item.check ? '隐藏' : '显示'"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
>
|
||||
@ -54,7 +104,7 @@
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="$t('task.endTask')"
|
||||
content="结束任务"
|
||||
placement="top"
|
||||
:hide-after="1000"
|
||||
v-if="item.status === 1"
|
||||
@ -66,14 +116,20 @@
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
|
||||
<p>{{ $t('task.radarName') }} : {{ item.sar }}</p>
|
||||
<p>{{ $t('task.beginTime') }}:{{ item.beginTime }}</p>
|
||||
<p>无人机名称: {{ item.uav }}</p>
|
||||
<p>雷达名称: {{ item.sar }}</p>
|
||||
<p>开始时间:{{ item.beginTime }}</p>
|
||||
<!-- <div
|
||||
class="task-info"
|
||||
:style="{ color: dealStatusColor(item.statusName) }"
|
||||
>
|
||||
{{ item.statusName }}
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<div v-else class="task-empty">
|
||||
<img :src="emptyImg" alt="" />
|
||||
<p>{{ $t('task.noExecutingTasks') }}</p>
|
||||
<p>暂无执行中的任务</p>
|
||||
</div>
|
||||
</div>
|
||||
</dt-card>
|
||||
@ -87,7 +143,7 @@
|
||||
"
|
||||
>
|
||||
<div class="image-set__item">
|
||||
<div class="is-label">{{ $t('task.brightness') }}:</div>
|
||||
<div class="is-label">亮度:</div>
|
||||
<el-slider
|
||||
v-model="imageInfos.brightness"
|
||||
show-input
|
||||
@ -128,7 +184,7 @@
|
||||
'weather-info__large': isIconModeLarge,
|
||||
}"
|
||||
icon="iconfont icon-target"
|
||||
:title="$t('task.weatherWarning')"
|
||||
title="气象预警"
|
||||
:visible.sync="rightShow"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
@ -137,19 +193,19 @@
|
||||
<div class="weather-info__content2">
|
||||
<div class="base-info">
|
||||
<div>
|
||||
<span>{{ $t('task.temperature') }}:</span><span>{{ weatherInfo2.wendu }}</span>
|
||||
<span>温度:</span><span>{{ weatherInfo2.wendu }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('task.humidity') }}:</span><span>{{ weatherInfo2.shidu }}</span>
|
||||
<span>湿度:</span><span>{{ weatherInfo2.shidu }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('task.airQuality') }}:</span><span>{{ weatherInfo2.quality }}</span>
|
||||
<span>空气质量:</span><span>{{ weatherInfo2.quality }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('task.pm25') }}:</span><span>{{ weatherInfo2.pm25 }}</span>
|
||||
<span>pm25:</span><span>{{ weatherInfo2.pm25 }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('task.pm10') }}:</span><span>{{ weatherInfo2.pm10 }}</span>
|
||||
<span>pm10:</span><span>{{ weatherInfo2.pm10 }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="week-info">
|
||||
@ -168,9 +224,50 @@
|
||||
<div>{{ item.fl }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="visibility-chart">-->
|
||||
<!-- <dt-multiple-analysis-->
|
||||
<!-- ref="chart"-->
|
||||
<!-- :data="weatherInfo2.chart.data"-->
|
||||
<!-- :legend="weatherInfo2.chart.legend"-->
|
||||
<!-- :tooltip="weatherInfo2.chart.tooltip"-->
|
||||
<!-- :title="weatherInfo2.chart.title"-->
|
||||
<!-- :grid="weatherInfo2.chart.grid"-->
|
||||
<!-- :xAxis="weatherInfo2.chart.xAxis"-->
|
||||
<!-- :yAxis="weatherInfo2.chart.yAxis"-->
|
||||
<!-- ></dt-multiple-analysis>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</dt-card>
|
||||
</right-slide>
|
||||
|
||||
<!-- 雷达图 -->
|
||||
|
||||
<!--right-slide class="radar-info-wrap">
|
||||
<dt-card
|
||||
:class="{
|
||||
'radar-info': true,
|
||||
'radar-info__large': isIconModeLarge
|
||||
}"
|
||||
icon="iconfont icon-target"
|
||||
title="缩略图"
|
||||
:visible.sync="rightShow"
|
||||
:scroll="false"
|
||||
:showClose="false"
|
||||
:showDivider="false"
|
||||
>
|
||||
<template v-slot:command>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
content="重建"
|
||||
placement="bottom"
|
||||
>
|
||||
<i class="el-icon-refresh" style="cursor: pointer;" @click.stop="refreshRadar"></i>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<div class="radar-canvas" ref="radarCanvas"></div>
|
||||
</dt-card>
|
||||
</right-slide-->
|
||||
|
||||
<!-- 详情 -->
|
||||
<right-slide class="detail-info-wrap" v-if="detailInfo.visible">
|
||||
<dt-card
|
||||
@ -179,7 +276,7 @@
|
||||
'detail-info__large': isIconModeLarge,
|
||||
}"
|
||||
icon="iconfont icon-target"
|
||||
:title="$t('task.detailInfo')"
|
||||
title="详细信息"
|
||||
v-if="detailInfo.visible"
|
||||
:visible.sync="detailInfo.visible"
|
||||
:scroll="false"
|
||||
@ -227,7 +324,7 @@
|
||||
'detail-uav__large': isIconModeLarge,
|
||||
}"
|
||||
icon="iconfont icon-target"
|
||||
:title="$t('task.detailInfo')"
|
||||
title="详细信息"
|
||||
v-if="detailUav.visible"
|
||||
:visible.sync="detailUav.visible"
|
||||
:scroll="true"
|
||||
@ -240,9 +337,9 @@
|
||||
v-model="detailUav.activeNames"
|
||||
@change="handleUavDetailCollapse"
|
||||
>
|
||||
<el-collapse-item :title="$t('task.statusInfo')" name="3">
|
||||
<el-collapse-item title="状态信息" name="3">
|
||||
<el-tabs v-model="detailUav.activeTab">
|
||||
<el-tab-pane :label="$t('task.dev')" name="DEV">
|
||||
<el-tab-pane label="DEV" name="DEV">
|
||||
<div
|
||||
class="uav-span-wrap"
|
||||
v-for="item in detailUav.statusInfo.dev"
|
||||
@ -274,7 +371,7 @@
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item :title="$t('task.waveInfo')" name="4">
|
||||
<el-collapse-item title="波形信息" name="4">
|
||||
<div class="wave-chart">
|
||||
<dt-multiple-analysis
|
||||
ref="uavDetailChart"
|
||||
@ -340,17 +437,17 @@
|
||||
<div class="task-line-detail">
|
||||
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
||||
<el-table-column type="index" width="50"> </el-table-column>
|
||||
<el-table-column prop="startLon" :label="$t('task.startLon')"> </el-table-column>
|
||||
<el-table-column prop="startLat" :label="$t('task.startLat')"> </el-table-column>
|
||||
<el-table-column prop="startHeight" :label="$t('task.startHeight')">
|
||||
<el-table-column prop="startLon" label="起点经度"> </el-table-column>
|
||||
<el-table-column prop="startLat" label="起点纬度"> </el-table-column>
|
||||
<el-table-column prop="startHeight" label="起点相对高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="startAlt" :label="$t('task.startAlt')">
|
||||
<el-table-column prop="startAlt" label="起点海拔高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="endLon" :label="$t('task.endLon')"> </el-table-column>
|
||||
<el-table-column prop="endLat" :label="$t('task.endLat')"> </el-table-column>
|
||||
<el-table-column prop="endHeight" :label="$t('task.endHeight')">
|
||||
<el-table-column prop="endLon" label="终点经度"> </el-table-column>
|
||||
<el-table-column prop="endLat" label="终点纬度"> </el-table-column>
|
||||
<el-table-column prop="endHeight" label="终点相对高度">
|
||||
</el-table-column>
|
||||
<el-table-column prop="endAlt" :label="$t('task.endAlt')">
|
||||
<el-table-column prop="endAlt" label="终点海拔高度">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import * as DT from 'dt-sdk'
|
||||
import { viewer } from '@/components/dt-scene'
|
||||
import { gisLabels } from '@/lang/index'
|
||||
export default class UavTarget {
|
||||
planLines = new DT.Cesium.AssociativeArray()
|
||||
uavEntity = null
|
||||
@ -15,7 +14,7 @@ export default class UavTarget {
|
||||
this.uavId = options.uavId
|
||||
this.jobName = options.jobName
|
||||
this.startAltitude = options.startAltitude
|
||||
this.lang = window.localStorage.getItem('locale') || 'zh_CN'
|
||||
|
||||
this.addPlanLine(options.airlineList)
|
||||
console.log(options, '飞机数据');
|
||||
if (options.startLon) {
|
||||
@ -337,7 +336,7 @@ export default class UavTarget {
|
||||
id,
|
||||
position: positions[0],
|
||||
label: {
|
||||
text: `${gisLabels.planAirline[this.lang]}-${index + 1}-${gisLabels.startPoint[this.lang]}`,
|
||||
text: `规划航线${index + 1}起点`,
|
||||
disableDepthTestDistance: 10000,
|
||||
font: '14px sans-serif',
|
||||
fillColor: DT.Cesium.Color.RED,
|
||||
|
||||
@ -553,6 +553,42 @@ export default {
|
||||
// window.open(window.config.homeUrl + 'monitor', '_blank')
|
||||
// TODO
|
||||
// this.resourceClick(this.resourceList.data[0])
|
||||
return;
|
||||
viewer.entities.add({
|
||||
show: true,
|
||||
id: 'image1',
|
||||
name: '美女1',
|
||||
rectangle: {
|
||||
coordinates: DT.Cesium.Rectangle.fromDegrees(
|
||||
115.914508,
|
||||
40.357867,
|
||||
115.916869,
|
||||
40.361485
|
||||
),
|
||||
height: 0,
|
||||
material: new DT.Cesium.ImageMaterialProperty({
|
||||
image: process.env.BASE_URL + 'static/img/meinv.png',
|
||||
transparent: 1
|
||||
})
|
||||
}
|
||||
})
|
||||
viewer.entities.add({
|
||||
show: true,
|
||||
id: 'image2',
|
||||
name: '美女2',
|
||||
rectangle: {
|
||||
coordinates: DT.Cesium.Rectangle.fromDegrees(
|
||||
115.914508,
|
||||
40.357867,
|
||||
115.916869,
|
||||
40.361485
|
||||
),
|
||||
height: 100,
|
||||
material: new DT.Cesium.ImageMaterialProperty({
|
||||
image: process.env.BASE_URL + 'static/img/meinv.png',
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (handler) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user