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 || {}
|
config.headers = config.headers || {}
|
||||||
let token = getToken()
|
let token = getToken()
|
||||||
if (token) Object.assign(config.headers, { 'X-Access-Token': token })
|
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 => {
|
config.cancelToken = new axios.CancelToken(cancel => {
|
||||||
window.__axiosCancelTokenArr.push({ cancel })
|
window.__axiosCancelTokenArr.push({ cancel })
|
||||||
})
|
})
|
||||||
|
|||||||
@ -9,7 +9,6 @@
|
|||||||
:layout="layout"
|
:layout="layout"
|
||||||
:page-sizes="pageSizes"
|
:page-sizes="pageSizes"
|
||||||
:total="total"
|
:total="total"
|
||||||
:pager-count="pagerCount"
|
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@size-change="handleSizeChange"
|
@size-change="handleSizeChange"
|
||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
@ -64,10 +63,6 @@ export default {
|
|||||||
small: {
|
small: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
|
||||||
pagerCount: {
|
|
||||||
type: Number,
|
|
||||||
default: 7
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|||||||
@ -17,256 +17,13 @@ export default {
|
|||||||
passwordMin: 'Password must be at least 6 characters',
|
passwordMin: 'Password must be at least 6 characters',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
common: {
|
||||||
|
capsLockOn: 'Caps lock is On',
|
||||||
|
},
|
||||||
menu: {
|
menu: {
|
||||||
device: 'Device Management',
|
device: 'Device Management',
|
||||||
task: 'Task Management',
|
task: 'Task Management',
|
||||||
picture: 'Picture Management',
|
picture: 'Picture Management',
|
||||||
user: 'User 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 VueI18n from 'vue-i18n'
|
||||||
import zh from './zh';
|
import zh from './zh';
|
||||||
import en from './en';
|
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)
|
Vue.use(VueI18n)
|
||||||
|
|
||||||
// load locale messages
|
// load locale messages
|
||||||
const messages = {
|
const messages = {
|
||||||
'zh_CN': zh,
|
zh,
|
||||||
'en_US': en,
|
en,
|
||||||
}
|
}
|
||||||
|
|
||||||
const locale = localStorage.getItem('locale') || 'zh_CN'
|
const locale = localStorage.getItem('locale') || 'zh'
|
||||||
|
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
locale,
|
locale,
|
||||||
fallbackLocale: 'zh_CN',
|
fallbackLocale: 'zh',
|
||||||
messages,
|
messages,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
// Chinese translations
|
||||||
export default {
|
export default {
|
||||||
app: {
|
app: {
|
||||||
title: '空域快视系统',
|
title: '空域快视系统',
|
||||||
@ -16,254 +17,13 @@ export default {
|
|||||||
passwordMin: '密码不少于6位字符',
|
passwordMin: '密码不少于6位字符',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
common: {
|
||||||
|
capsLockOn: '大写锁定已打开',
|
||||||
|
},
|
||||||
menu: {
|
menu: {
|
||||||
device: '设备管理',
|
device: '设备管理',
|
||||||
task: '任务管理',
|
task: '任务管理',
|
||||||
picture: '图片管理',
|
picture: '图片管理',
|
||||||
user: '用户管理'
|
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 { mapMutations, mapGetters, mapActions } from 'vuex'
|
||||||
import ChangePassword from '@/layout/components/change-password/index.vue'
|
import ChangePassword from '@/layout/components/change-password/index.vue'
|
||||||
import { getTreeAllItems, judgeArrayRepeat } from '@/utils'
|
import { getTreeAllItems, judgeArrayRepeat } from '@/utils'
|
||||||
import { gisLabels } from '../../../lang'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Header',
|
name: 'Header',
|
||||||
components: { ChangePassword },
|
components: { ChangePassword },
|
||||||
@ -173,28 +172,12 @@ export default {
|
|||||||
...mapActions('app', ['reload']),
|
...mapActions('app', ['reload']),
|
||||||
...mapMutations('app', ['SET_SCENE_ID', 'SET_SCENE_INFO', 'SET_MENUS_CHOSE']),
|
...mapMutations('app', ['SET_SCENE_ID', 'SET_SCENE_INFO', 'SET_MENUS_CHOSE']),
|
||||||
...mapMutations('user', ['SET_ROLES', 'SET_USER_ID', 'SET_USERNAME']),
|
...mapMutations('user', ['SET_ROLES', 'SET_USER_ID', 'SET_USERNAME']),
|
||||||
...mapActions('dict', ['getDict']),
|
|
||||||
handleSelect(key) {
|
handleSelect(key) {
|
||||||
this.SET_MENUS_CHOSE(key)
|
this.SET_MENUS_CHOSE(key)
|
||||||
},
|
},
|
||||||
changeLocale(lang) {
|
changeLocale(lang) {
|
||||||
this.$i18n.locale = lang
|
this.$i18n.locale = lang
|
||||||
localStorage.setItem('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() {
|
goHome() {
|
||||||
this.SET_MENUS_CHOSE('1')
|
this.SET_MENUS_CHOSE('1')
|
||||||
|
|||||||
@ -260,7 +260,3 @@ $light_gray: #eee;
|
|||||||
|
|
||||||
.el-form-item__button {}
|
.el-form-item__button {}
|
||||||
}
|
}
|
||||||
|
|
||||||
.split-line {
|
|
||||||
margin: 0 5px;
|
|
||||||
}
|
|
||||||
|
|||||||
@ -25,15 +25,11 @@
|
|||||||
</el-menu>
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
<ul class="header-nav-r">
|
<ul class="header-nav-r">
|
||||||
<li class="lang-select">
|
<!-- <li class="lang-select">
|
||||||
<a @click.prevent="changeLocale('zh_CN')">中文</a>
|
<a @click.prevent="changeLocale('zh')">中文</a> | <a @click.prevent="changeLocale('en')">EN</a>
|
||||||
<span class="split-line">|</span>
|
</li> -->
|
||||||
<a @click.prevent="changeLocale('en_US')">English</a>
|
|
||||||
</li>
|
|
||||||
<li v-if="roleIdsLocale.indexOf(2) !== -1">
|
<li v-if="roleIdsLocale.indexOf(2) !== -1">
|
||||||
<span class="user-login" @click="showLogin">{{
|
<span class="user-login" @click="showLogin">{{ $t('header.login') }}</span>
|
||||||
$t('header.login')
|
|
||||||
}}</span>
|
|
||||||
</li>
|
</li>
|
||||||
<li v-if="roleIdsLocale.indexOf(2) === -1">
|
<li v-if="roleIdsLocale.indexOf(2) === -1">
|
||||||
<span class="user-photo">
|
<span class="user-photo">
|
||||||
@ -49,9 +45,7 @@
|
|||||||
<!-- <el-dropdown-item command="modifyPassword"
|
<!-- <el-dropdown-item command="modifyPassword"
|
||||||
>修改密码</el-dropdown-item
|
>修改密码</el-dropdown-item
|
||||||
> -->
|
> -->
|
||||||
<el-dropdown-item command="logout">{{
|
<el-dropdown-item command="logout">{{ $t('header.logout') }}</el-dropdown-item>
|
||||||
$t('header.logout')
|
|
||||||
}}</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</li>
|
</li>
|
||||||
@ -131,8 +125,7 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@click.native.prevent="handleLogin"
|
@click.native.prevent="handleLogin"
|
||||||
>{{ $t('login.submit') }}</el-button
|
>{{ $t('login.submit') }}</el-button>
|
||||||
>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</dt-dialog>
|
</dt-dialog>
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
// 台风列表
|
// 台风列表
|
||||||
|
import { mapMutations, mapGetters } from 'vuex'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getTaskListData,
|
getTaskListData,
|
||||||
} from '@/api/task'
|
} from '@/api/task'
|
||||||
@ -8,10 +10,12 @@ import LeftSlide from '@/components/LeftSlide.vue'
|
|||||||
import {
|
import {
|
||||||
payloadList,
|
payloadList,
|
||||||
payloadRemove,
|
payloadRemove,
|
||||||
|
getPayloadEnableList,
|
||||||
payloadSave,
|
payloadSave,
|
||||||
payloadUpdate,
|
payloadUpdate,
|
||||||
uavRemove,
|
uavRemove,
|
||||||
uavList,
|
uavList,
|
||||||
|
getUavEnableList,
|
||||||
uavSave,
|
uavSave,
|
||||||
uavUpdate,
|
uavUpdate,
|
||||||
deviceControlTurnon,
|
deviceControlTurnon,
|
||||||
@ -33,49 +37,57 @@ export default {
|
|||||||
return {
|
return {
|
||||||
visibleLocale: false,
|
visibleLocale: false,
|
||||||
deviceData: [
|
deviceData: [
|
||||||
|
// {
|
||||||
|
// name: '无人机1',
|
||||||
|
// num: 'M3127',
|
||||||
|
// location: '112.3423242,45.2312324'
|
||||||
|
// }
|
||||||
],
|
],
|
||||||
device: {
|
device: {
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '',
|
title: '新增',
|
||||||
form: {
|
form: {
|
||||||
type: 'SAR'
|
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: {
|
queryForm: {
|
||||||
type: 'uav'
|
type: 'uav'
|
||||||
},
|
},
|
||||||
|
deviceTypes: [
|
||||||
|
{
|
||||||
|
label: '无人机',
|
||||||
|
value: 'uav'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '雷达',
|
||||||
|
value: 'payload'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
deviceMap: {
|
||||||
|
payload: '雷达',
|
||||||
|
uav: '无人机'
|
||||||
|
},
|
||||||
isShowTable: false
|
isShowTable: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
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: {
|
watch: {
|
||||||
visible: {
|
visible: {
|
||||||
@ -118,20 +130,20 @@ export default {
|
|||||||
if (type === 1) {
|
if (type === 1) {
|
||||||
deviceControlTurnon({ payloadId: row.ip }).then(res => {
|
deviceControlTurnon({ payloadId: row.ip }).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('device1Manage.radarTurnOnSuccess'))
|
this.$message.success('雷达开机成功')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (type === 2) {
|
} 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',
|
customClass: 'confirm-light',
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
if (!bool) return;
|
if (!bool) return;
|
||||||
deviceControlEndall({ payloadId: row.ip }).then(res => {
|
deviceControlEndall({ payloadId: row.ip }).then(res => {
|
||||||
if (res.data.code === 200) {
|
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) {
|
if (res.data.code === 200) {
|
||||||
this.deviceData = res.data.data
|
this.deviceData = res.data.data
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.msg || this.$t('common.requestFailed'))
|
this.$message.error(res.data.msg || '请求失败')
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
this.$message.error(err.msg || this.$t('common.requestFailed'))
|
this.$message.error(err.msg || '请求失败')
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
uavPage() {
|
uavPage() {
|
||||||
@ -152,15 +164,15 @@ export default {
|
|||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.deviceData = res.data.data
|
this.deviceData = res.data.data
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.msg || this.$t('common.requestFailed'))
|
this.$message.error(res.data.msg || '请求失败')
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
this.$message.error(err.msg || this.$t('common.requestFailed'))
|
this.$message.error(err.msg || '请求失败')
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
addDevice() {
|
addDevice() {
|
||||||
this.device.visible = true
|
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') {
|
if (this.queryForm.type === 'uav') {
|
||||||
this.device.form = {
|
this.device.form = {
|
||||||
id: '',
|
id: '',
|
||||||
@ -179,7 +191,7 @@ export default {
|
|||||||
},
|
},
|
||||||
editDevice(row) {
|
editDevice(row) {
|
||||||
this.device.visible = true
|
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') {
|
if (this.queryForm.type === 'uav') {
|
||||||
this.device.form = {
|
this.device.form = {
|
||||||
id: row.id,
|
id: row.id,
|
||||||
@ -250,27 +262,28 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
async deleteDevice(row) {
|
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',
|
customClass: 'confirm-light',
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
if (!bool) return;
|
if (!bool) return;
|
||||||
if (this.queryForm.type === 'uav') {
|
if (this.queryForm.type === 'uav') {
|
||||||
uavRemove([row.id]).then(res => {
|
uavRemove([row.id]).then(res => {
|
||||||
this.$message.success(this.$t('common.deleteSuccess'))
|
this.$message.success('删除成功')
|
||||||
this.uavPage()
|
this.uavPage()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
payloadRemove([row.id]).then(res => {
|
payloadRemove([row.id]).then(res => {
|
||||||
this.$message.success(this.$t('common.deleteSuccess'))
|
this.$message.success('删除成功')
|
||||||
this.payloadPage()
|
this.payloadPage()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//#region 无人机详情代码
|
//#region 无人机详情代码
|
||||||
resourceClick(info) {
|
resourceClick(info) {
|
||||||
|
console.log('点击的信息', info)
|
||||||
this.detailInfo.visible = false
|
this.detailInfo.visible = false
|
||||||
|
|
||||||
// 直接显示详细信息窗口,跳过中间步骤
|
// 直接显示详细信息窗口,跳过中间步骤
|
||||||
@ -285,6 +298,7 @@ export default {
|
|||||||
// this.resourceClickTest(info)
|
// this.resourceClickTest(info)
|
||||||
getTaskListData({ payloadId: info.id }).then(res => {
|
getTaskListData({ payloadId: info.id }).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('任务详情----------------', res.data.data)
|
||||||
let tasklist = res.data.data
|
let tasklist = res.data.data
|
||||||
this.detailInfo.jobId = undefined
|
this.detailInfo.jobId = undefined
|
||||||
if (tasklist.length > 0) {
|
if (tasklist.length > 0) {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<dt-card
|
<dt-card
|
||||||
class="resource-list card-light"
|
class="resource-list card-light"
|
||||||
icon="iconfont icon-left_icon_remote"
|
icon="iconfont icon-left_icon_remote"
|
||||||
:title="$t('device1Manage.title')"
|
title="可用资源"
|
||||||
:visible.sync="visibleLocale"
|
:visible.sync="visibleLocale"
|
||||||
:scroll="false"
|
:scroll="false"
|
||||||
:showClose="false"
|
:showClose="false"
|
||||||
@ -41,7 +41,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-slot:command>
|
<template v-slot:command>
|
||||||
<el-button size="mini" icon="el-icon-plus" @click="addDevice"
|
<el-button size="mini" icon="el-icon-plus" @click="addDevice"
|
||||||
>{{ $t('device1Manage.add') }}{{ deviceMap[queryForm.type] }}</el-button
|
>新增{{ deviceMap[queryForm.type] }}</el-button
|
||||||
>
|
>
|
||||||
</template>
|
</template>
|
||||||
<!-- <div class="resource-list__content">
|
<!-- <div class="resource-list__content">
|
||||||
@ -83,23 +83,23 @@
|
|||||||
height="100%"
|
height="100%"
|
||||||
>
|
>
|
||||||
<template v-if="queryForm.type === 'payload'">
|
<template v-if="queryForm.type === 'payload'">
|
||||||
<el-table-column prop="name" :label="$t('device1Manage.radarName')"> </el-table-column>
|
<el-table-column prop="name" label="雷达名称"> </el-table-column>
|
||||||
<el-table-column prop="type" :label="$t('device1Manage.radarType')"> </el-table-column>
|
<el-table-column prop="type" label="雷达类型"> </el-table-column>
|
||||||
<el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
|
<el-table-column prop="ip" label="IP"> </el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-table-column prop="name" :label="$t('device1Manage.uavName')"> </el-table-column>
|
<el-table-column prop="name" label="无人机名称"> </el-table-column>
|
||||||
<el-table-column prop="code" :label="$t('device1Manage.uavCode')"> </el-table-column>
|
<el-table-column prop="code" label="无人机码"> </el-table-column>
|
||||||
<el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
|
<el-table-column prop="ip" label="IP"> </el-table-column>
|
||||||
<el-table-column prop="createTime" :label="$t('device1Manage.createTime')"> </el-table-column>
|
<el-table-column prop="createTime" label="创建时间"> </el-table-column>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table-column :label="$t('device1Manage.operation')" width="200">
|
<el-table-column label="操作" width="200">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="light"
|
effect="light"
|
||||||
:content="$t('device1Manage.edit')"
|
content="修改"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -115,7 +115,7 @@
|
|||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="light"
|
effect="light"
|
||||||
:content="$t('device1Manage.manualPowerOn')"
|
content="手动开机"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="light"
|
effect="light"
|
||||||
:content="$t('device1Manage.endAllTasks')"
|
content="结束所有任务"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
@ -146,7 +146,7 @@
|
|||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="light"
|
effect="light"
|
||||||
:content="$t('device1Manage.delete')"
|
content="删除"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -174,51 +174,51 @@
|
|||||||
<el-form
|
<el-form
|
||||||
ref="form"
|
ref="form"
|
||||||
:model="device.form"
|
:model="device.form"
|
||||||
:rules="rules"
|
:rules="device.rules"
|
||||||
label-position="right"
|
label-position="right"
|
||||||
label-width="110px"
|
label-width="110px"
|
||||||
class="change-password-form"
|
class="change-password-form"
|
||||||
>
|
>
|
||||||
<template v-if="queryForm.type === 'uav'">
|
<template v-if="queryForm.type === 'uav'">
|
||||||
<el-form-item :label="$t('device1Manage.uavName')" prop="name1">
|
<el-form-item label="无人机名称" prop="name1">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.name1"
|
v-model="device.form.name1"
|
||||||
:placeholder="$t('device1Manage.uavNamePlaceholder')"
|
placeholder="请输入无人机名称"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item :label="$t('device1Manage.uavCode')" prop="code">
|
<el-form-item label="无人机码" prop="code">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.code"
|
v-model="device.form.code"
|
||||||
:placeholder="$t('device1Manage.uavCodePlaceholder')"
|
placeholder="请输入无人机码"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('device1Manage.ip')" prop="ip1">
|
<el-form-item label="IP" prop="ip1">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.ip1"
|
v-model="device.form.ip1"
|
||||||
:placeholder="$t('device1Manage.ipPlaceholder')"
|
placeholder="请输入无人机IP"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-form-item :label="$t('device1Manage.radarName')" prop="name2">
|
<el-form-item label="雷达名称" prop="name2">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.name2"
|
v-model="device.form.name2"
|
||||||
:placeholder="$t('device1Manage.radarNamePlaceholder')"
|
placeholder="请输入雷达名称"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('device1Manage.radarType')" prop="type">
|
<el-form-item label="雷达类型" prop="type">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.type"
|
v-model="device.form.type"
|
||||||
:placeholder="$t('device1Manage.radarTypePlaceholder')"
|
placeholder="请输入雷达类型"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
disabled
|
disabled
|
||||||
@ -227,7 +227,7 @@
|
|||||||
<el-form-item label="IP" prop="ip2">
|
<el-form-item label="IP" prop="ip2">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="device.form.ip2"
|
v-model="device.form.ip2"
|
||||||
:placeholder="$t('device1Manage.ipPlaceholder')"
|
placeholder="请输入雷达IP"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
></el-input>
|
></el-input>
|
||||||
@ -236,9 +236,9 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="btns" slot="footer">
|
<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"
|
<el-button type="primary" size="mini" @click="submitDevice"
|
||||||
>{{ $t('common.confirm') }}</el-button
|
>确 定</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</dt-dialog>
|
</dt-dialog>
|
||||||
|
|||||||
@ -52,20 +52,13 @@ export default {
|
|||||||
id: '',
|
id: '',
|
||||||
loading: false
|
loading: false
|
||||||
},
|
},
|
||||||
// validation rules moved to computed property
|
nameRules: {
|
||||||
|
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||||
|
},
|
||||||
checkIds: [],
|
checkIds: [],
|
||||||
emptyImg: require('@/assets/img/common/empty.svg')
|
emptyImg: require('@/assets/img/common/empty.svg')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
nameRules() {
|
|
||||||
return {
|
|
||||||
name: [
|
|
||||||
{ required: true, message: this.$t('picture.nameRequired'), trigger: 'blur' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
watch: {
|
||||||
visible: {
|
visible: {
|
||||||
handler: function (nv) {
|
handler: function (nv) {
|
||||||
@ -93,10 +86,10 @@ export default {
|
|||||||
arr.push({
|
arr.push({
|
||||||
id: i,
|
id: i,
|
||||||
checked: false,
|
checked: false,
|
||||||
name: `${this.$t('picture.pictureName')}${i + 1}`,
|
name: `影像${i + 1}`,
|
||||||
url: 'static/img/test.jpg',
|
url: 'static/img/test.jpg',
|
||||||
position: [lon, lat, lon2, lat2],
|
position: [lon, lat, lon2, lat2],
|
||||||
taskName: `${this.$t('picture.taskName')}${i + 1}`,
|
taskName: `任务${i + 1}`,
|
||||||
time: moment().format('YYYY-MM-DD HH:mm:ss')
|
time: moment().format('YYYY-MM-DD HH:mm:ss')
|
||||||
})
|
})
|
||||||
lon += 5
|
lon += 5
|
||||||
@ -123,15 +116,14 @@ export default {
|
|||||||
pageCurrent: this.page.current,
|
pageCurrent: this.page.current,
|
||||||
type: [1, 2, 4],
|
type: [1, 2, 4],
|
||||||
}
|
}
|
||||||
|
console.log('请求参数', params)
|
||||||
if (clear) {
|
if (clear) {
|
||||||
this.clearScene()
|
this.clearScene()
|
||||||
}
|
}
|
||||||
uavPicturePage(params).then(res => {
|
uavPicturePage(params).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('图片分页', res.data.data)
|
||||||
let data = res.data.data.records
|
let data = res.data.data.records
|
||||||
data.forEach(item => {
|
|
||||||
this.$set(item, 'checked', false)
|
|
||||||
})
|
|
||||||
this.pictureData = data
|
this.pictureData = data
|
||||||
this.page.total = res.data.data.total
|
this.page.total = res.data.data.total
|
||||||
} else {
|
} else {
|
||||||
@ -147,8 +139,9 @@ export default {
|
|||||||
if (this.checkIds.length > 0) {
|
if (this.checkIds.length > 0) {
|
||||||
pictureAiCheck(this.checkIds).then(res => {
|
pictureAiCheck(this.checkIds).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('picture.aiCheckSuccess'))
|
this.$message.success('图片识别成功!')
|
||||||
let data = res.data.data
|
let data = res.data.data
|
||||||
|
console.log('识别结果, dat', data)
|
||||||
data.forEach((item, index) => {
|
data.forEach((item, index) => {
|
||||||
let findIndex = this.pictureData.findIndex(tar => tar.id === item.id)
|
let findIndex = this.pictureData.findIndex(tar => tar.id === item.id)
|
||||||
if (findIndex > -1) {
|
if (findIndex > -1) {
|
||||||
@ -161,15 +154,17 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('picture.selectPicture'))
|
this.$message.warning('请勾选要识别的图片')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleCheck(info) {
|
handleCheck(value, info) {
|
||||||
info.checked = !info.checked
|
console.log('check变化', value, info)
|
||||||
let findIndex = this.checkIds.findIndex(check => check === info.id)
|
let findIndex = this.checkIds.findIndex(check => check === info.id)
|
||||||
if (info.checked) {
|
console.log(33333, findIndex)
|
||||||
|
if (value) {
|
||||||
if (findIndex === -1) {
|
if (findIndex === -1) {
|
||||||
this.checkIds.push(info.id)
|
this.checkIds.push(info.id)
|
||||||
|
console.log(333, [].concat(this.checkIds))
|
||||||
}
|
}
|
||||||
let obj = {
|
let obj = {
|
||||||
picture: null,
|
picture: null,
|
||||||
@ -324,14 +319,14 @@ export default {
|
|||||||
},
|
},
|
||||||
// 删除任务
|
// 删除任务
|
||||||
deletePicture(info) {
|
deletePicture(info) {
|
||||||
this.$confirm(this.$t('picture.deleteConfirm'), this.$t('picture.tip'), {
|
this.$confirm('确定删除吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
deletePictureItem([info.id]).then(res => {
|
deletePictureItem([info.id]).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('picture.deleteSuccess'))
|
this.$message.success('删除成功')
|
||||||
this.getList()
|
this.getList()
|
||||||
// if (layerCollection[info.id]) {
|
// if (layerCollection[info.id]) {
|
||||||
// viewer.cesiumViewer.imageryLayers.remove(layerCollection[info.id].picture)
|
// viewer.cesiumViewer.imageryLayers.remove(layerCollection[info.id].picture)
|
||||||
@ -364,7 +359,7 @@ export default {
|
|||||||
editPictureName(params).then(res => {
|
editPictureName(params).then(res => {
|
||||||
this.editName.loading = false
|
this.editName.loading = false
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('picture.editSuccess'))
|
this.$message.success('修改成功!')
|
||||||
this.editName.visible = false
|
this.editName.visible = false
|
||||||
this.getList(false)
|
this.getList(false)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -45,15 +45,13 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background-color: rgba(51, 51, 51, 0.6);
|
background-color: rgba(51, 51, 51, 0.6);
|
||||||
|
// border: 1px solid #656363;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
cursor: pointer;
|
display: flex;
|
||||||
>p{
|
align-items: center;
|
||||||
line-height: 24px;
|
|
||||||
color: $--color-text-2;
|
|
||||||
padding-left: 3px;
|
|
||||||
}
|
|
||||||
.pic-center {
|
.pic-center {
|
||||||
flex: 1;
|
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 {
|
.page-wrap {
|
||||||
@ -148,54 +139,3 @@
|
|||||||
top: 60px;
|
top: 60px;
|
||||||
left: 10px;
|
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
|
<dt-card
|
||||||
class="picture-content"
|
class="picture-content"
|
||||||
icon="ri-multi-image-line"
|
icon="ri-multi-image-line"
|
||||||
:title="$t('picture.list')"
|
title="影像列表"
|
||||||
:visible.sync="imageInfo.visible"
|
:visible.sync="imageInfo.visible"
|
||||||
:scroll="false"
|
:scroll="false"
|
||||||
:showClose="false"
|
:showClose="false"
|
||||||
:showDivider="false"
|
:showDivider="false"
|
||||||
>
|
>
|
||||||
<template v-slot:command>
|
<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>
|
<i class="ri-qr-scan-line" @click.stop="aiCheck"></i>
|
||||||
</el-tooltip>
|
</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>
|
<i class="ri-upload-2-line" @click.stop="showUpload"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
@ -23,30 +23,34 @@
|
|||||||
<el-input
|
<el-input
|
||||||
size="mini"
|
size="mini"
|
||||||
v-model="search.name"
|
v-model="search.name"
|
||||||
:placeholder="$t('picture.searchPlaceholder')"
|
|
||||||
clearable
|
clearable
|
||||||
@clear="getList"
|
@clear="getList"
|
||||||
></el-input>
|
></el-input>
|
||||||
<el-button size="mini" type="primary" @click="getList"
|
<el-button size="mini" type="primary" @click="getList"
|
||||||
>{{ $t('common.search') }}</el-button
|
>搜索</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-wrap">
|
<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 v-for="item in pictureData" :key="item.id" class="pic-item">
|
||||||
<div class="top-part">
|
<div class="pic-name">
|
||||||
<div class="top-part__left">
|
<el-checkbox
|
||||||
<div class="execute-info">
|
v-model="item.checked"
|
||||||
<span class="task-execute">{{ item.name }}</span>
|
@change="(value) => handleCheck(value, item)"
|
||||||
|
>{{ item.name }}</el-checkbox
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="pic-center">
|
||||||
|
<div class="pic-task">所属任务:{{ item.jobName }}</div>
|
||||||
|
<div class="pic-time">拍摄时间:{{ item.createTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="top-part__right">
|
<div class="pic-command">
|
||||||
<el-tooltip effect="dark" :content="$t('picture.editName')" placement="top">
|
<el-tooltip effect="dark" content="修改名称" placement="top">
|
||||||
<i
|
<i
|
||||||
class="el-icon-edit-outline"
|
class="el-icon-edit-outline"
|
||||||
@click.stop="editPictureName(item)"
|
@click.stop="editPictureName(item)"
|
||||||
></i>
|
></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip effect="dark" :content="$t('picture.delete')" placement="top">
|
<el-tooltip effect="dark" content="删除" placement="top">
|
||||||
<i
|
<i
|
||||||
class="el-icon-close delete-task"
|
class="el-icon-close delete-task"
|
||||||
@click.stop="deletePicture(item)"
|
@click.stop="deletePicture(item)"
|
||||||
@ -54,31 +58,26 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $t('picture.task') }}:{{ item.jobName }}</p>
|
|
||||||
<p>{{$t('picture.time')}}:{{ item.createTime }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="page-wrap">
|
<div class="page-wrap">
|
||||||
<Pagination
|
<Pagination
|
||||||
:total="page.total"
|
:total="page.total"
|
||||||
:limit="page.size"
|
:limit="page.size"
|
||||||
:page="page.current"
|
:page="page.current"
|
||||||
:pagerCount="5"
|
|
||||||
:layout="'total, prev, pager, next'"
|
|
||||||
@pagination="onPageChange"
|
@pagination="onPageChange"
|
||||||
></Pagination>
|
></Pagination>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="task-empty">
|
<div v-else class="task-empty">
|
||||||
<img :src="emptyImg" alt="" />
|
<img :src="emptyImg" alt="" />
|
||||||
<p>{{ $t('picture.noPicture') }}</p>
|
<p>暂无影像</p>
|
||||||
</div>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
</left-slide>
|
</left-slide>
|
||||||
|
|
||||||
<!-- 修改名称-->
|
<!-- 修改名称-->
|
||||||
<dt-dialog
|
<dt-dialog
|
||||||
:title="$t('picture.editNameTitle')"
|
title="修改影像名称"
|
||||||
top="20vh"
|
top="20vh"
|
||||||
width="400px"
|
width="400px"
|
||||||
:visible.sync="editName.visible"
|
:visible.sync="editName.visible"
|
||||||
@ -91,11 +90,11 @@
|
|||||||
label-width="100px"
|
label-width="100px"
|
||||||
class="picture-name-form"
|
class="picture-name-form"
|
||||||
>
|
>
|
||||||
<el-form-item prop="name" :label="$t('picture.taskName')">
|
<el-form-item prop="name" label="任务名称">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="editName.name"
|
v-model="editName.name"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('picture.taskNamePlaceholder')"
|
placeholder="请输入图片文件夹路径"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="submit-wrap">
|
<div class="submit-wrap">
|
||||||
@ -104,7 +103,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
:disabled="editName.loading || !editName.name"
|
:disabled="editName.loading || !editName.name"
|
||||||
@click.stop="submitName"
|
@click.stop="submitName"
|
||||||
>{{ $t('common.confirm') }}</el-button
|
>确定</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
@ -10,7 +10,16 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
visibleLocale: false,
|
visibleLocale: false,
|
||||||
taskData: [], // populated via API
|
taskData: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: '任务1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: '任务2',
|
||||||
|
}
|
||||||
|
],
|
||||||
uavOptions: [],
|
uavOptions: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
form: {
|
form: {
|
||||||
@ -20,24 +29,19 @@ export default {
|
|||||||
dir: '',
|
dir: '',
|
||||||
fileUrlArr: []
|
fileUrlArr: []
|
||||||
},
|
},
|
||||||
// rules computed for i18n
|
rules: {
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
rules() {
|
|
||||||
return {
|
|
||||||
dir: [
|
dir: [
|
||||||
{ required: true, message: this.$t('picturesUpload.rules.inputDirPath'), trigger: 'blur' }
|
{ required: true, message: '请输入文件夹路径', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
fileUrlArr: [
|
fileUrlArr: [
|
||||||
{ required: true, message: this.$t('picturesUpload.rules.fileUrlArr'), trigger: 'change' }
|
{ required: true, message: '请选择图片', trigger: 'change' }
|
||||||
]
|
],
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
visible: {
|
visible: {
|
||||||
handler: function (nv) {
|
handler: function(nv) {
|
||||||
if (nv) {
|
if (nv) {
|
||||||
this.visibleLocale = nv
|
this.visibleLocale = nv
|
||||||
}
|
}
|
||||||
@ -50,7 +54,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
'form.fileUrlArr': {
|
'form.fileUrlArr': {
|
||||||
handler: function (newValue, oldValue) {
|
handler: function(newValue, oldValue) {
|
||||||
if (newValue.length && this.$refs.form) {
|
if (newValue.length && this.$refs.form) {
|
||||||
this.$refs.form.validateField('fileUrlArr')
|
this.$refs.form.validateField('fileUrlArr')
|
||||||
}
|
}
|
||||||
@ -69,8 +73,9 @@ export default {
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getTaskList() {
|
getTaskList() {
|
||||||
getTaskListData({ type: 2 }).then(res => {
|
getTaskListData({type: 2}).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('任务列表', res.data.data)
|
||||||
let data = res.data.data
|
let data = res.data.data
|
||||||
this.taskData = data
|
this.taskData = data
|
||||||
} else {
|
} else {
|
||||||
@ -79,6 +84,7 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleJobChange(value) {
|
handleJobChange(value) {
|
||||||
|
console.log('变化的', value)
|
||||||
this.form.uavId = undefined
|
this.form.uavId = undefined
|
||||||
if (value) {
|
if (value) {
|
||||||
let find = this.taskData.find(item => item.id === value)
|
let find = this.taskData.find(item => item.id === value)
|
||||||
@ -93,6 +99,7 @@ export default {
|
|||||||
getUavList() {
|
getUavList() {
|
||||||
getUavListData().then(res => {
|
getUavListData().then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('无人机列表', res.data.data)
|
||||||
this.uavOptions = res.data.data
|
this.uavOptions = res.data.data
|
||||||
// TODO 临时
|
// TODO 临时
|
||||||
if (this.uavOptions.length > 0) {
|
if (this.uavOptions.length > 0) {
|
||||||
@ -107,10 +114,12 @@ export default {
|
|||||||
this.$refs.fileInput.click()
|
this.$refs.fileInput.click()
|
||||||
},
|
},
|
||||||
changeFile(event) {
|
changeFile(event) {
|
||||||
|
console.log('多文件', event.target.files)
|
||||||
const files = event.target.files
|
const files = event.target.files
|
||||||
const filesLength = files.length
|
const filesLength = files.length
|
||||||
|
console.log('文件', filesLength, files[0])
|
||||||
if (files) {
|
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)
|
let find = this.form.fileUrlArr.find(item => item === files[i].name)
|
||||||
if (!find) {
|
if (!find) {
|
||||||
this.form.fileUrlArr.push(files[i].name)
|
this.form.fileUrlArr.push(files[i].name)
|
||||||
@ -121,7 +130,7 @@ export default {
|
|||||||
},
|
},
|
||||||
resetInputFile() {
|
resetInputFile() {
|
||||||
this.$refs.fileInput.value = ''
|
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 = ''
|
||||||
this.$refs.fileInput.value.type = 'file'
|
this.$refs.fileInput.value.type = 'file'
|
||||||
}
|
}
|
||||||
@ -131,6 +140,7 @@ export default {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
let tempFile = ['001.tif', '002.tif']
|
let tempFile = ['001.tif', '002.tif']
|
||||||
|
console.log('提交我选取的', this.form.fileUrlArr)
|
||||||
let params = {
|
let params = {
|
||||||
jobId: this.form.jobId,
|
jobId: this.form.jobId,
|
||||||
uavId: this.form.uavId,
|
uavId: this.form.uavId,
|
||||||
@ -140,7 +150,7 @@ export default {
|
|||||||
uploadUavPicture(params).then(res => {
|
uploadUavPicture(params).then(res => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('picturesUpload.uploadSuccess'))
|
this.$message.success('上传成功')
|
||||||
this.$emit('submit')
|
this.$emit('submit')
|
||||||
this.visibleLocale = false
|
this.visibleLocale = false
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<dt-dialog
|
<dt-dialog
|
||||||
:title="$t('picturesUpload.title')"
|
title="上传精处理图片"
|
||||||
top="20vh"
|
top="20vh"
|
||||||
width="500px"
|
width="500px"
|
||||||
:visible.sync="visibleLocale"
|
:visible.sync="visibleLocale"
|
||||||
@ -8,8 +8,8 @@
|
|||||||
>
|
>
|
||||||
<div class="pictures-upload">
|
<div class="pictures-upload">
|
||||||
<el-form :model="form" :rules="rules" ref="form" label-width="120px" class="pictures-upload-form">
|
<el-form :model="form" :rules="rules" ref="form" label-width="120px" class="pictures-upload-form">
|
||||||
<el-form-item :label="$t('picturesUpload.jobName')">
|
<el-form-item label="关联任务" >
|
||||||
<el-select v-model="form.jobId" filterable :placeholder="$t('picturesUpload.selectJob')" @change="handleJobChange">
|
<el-select v-model="form.jobId" filterable placeholder="请选择" @change="handleJobChange">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in taskData"
|
v-for="item in taskData"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@ -18,11 +18,10 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('picturesUpload.uav')">
|
<el-form-item label="无人机">
|
||||||
<el-select
|
<el-select
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form.uavId"
|
v-model="form.uavId"
|
||||||
:placeholder="$t('picturesUpload.selectUav')"
|
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in uavOptions"
|
v-for="item in uavOptions"
|
||||||
@ -32,14 +31,14 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="dir" :label="$t('picturesUpload.dirPath')">
|
<el-form-item prop="dir" label="文件夹路径">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.dir"
|
v-model="form.dir"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('picturesUpload.inputDirPath')"
|
placeholder="请输入图片文件夹路径"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</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">
|
||||||
<div :class="{'pick-file-button': true, 'pick-file-button_shrink': form.fileUrlArr.length > 0}" @click.stop="openFile">选取文件</div>
|
<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">
|
<div class="file-list" v-if="form.fileUrlArr.length > 0">
|
||||||
@ -59,7 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="submit-wrap">
|
<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>
|
</div>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
@ -372,12 +372,14 @@ export default {
|
|||||||
id: '',
|
id: '',
|
||||||
loading: false
|
loading: false
|
||||||
},
|
},
|
||||||
// nameRules moved to computed for translation
|
nameRules: {
|
||||||
|
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||||
|
},
|
||||||
uavReady: false,
|
uavReady: false,
|
||||||
loaderReady: false,
|
loaderReady: false,
|
||||||
taskLineDetail: {
|
taskLineDetail: {
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '', // will be set in watcher or when opened
|
title: '航线详情',
|
||||||
data: []
|
data: []
|
||||||
},
|
},
|
||||||
currentUavInfo: {
|
currentUavInfo: {
|
||||||
@ -386,8 +388,26 @@ export default {
|
|||||||
height: undefined
|
height: undefined
|
||||||
},
|
},
|
||||||
previewLoading: false,
|
previewLoading: false,
|
||||||
// focusOptions computed for i18n
|
focusOptions: [
|
||||||
// motoOptions computed for i18n
|
{
|
||||||
|
label: '否',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '是',
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
motoOptions: [
|
||||||
|
{
|
||||||
|
label: '否',
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '是',
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -407,23 +427,6 @@ export default {
|
|||||||
},
|
},
|
||||||
readyUavLocation() {
|
readyUavLocation() {
|
||||||
return this.uavReady && this.loaderReady
|
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: {
|
watch: {
|
||||||
@ -492,10 +495,6 @@ export default {
|
|||||||
// })
|
// })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'$i18n.locale'(nv) {
|
|
||||||
// refresh dynamic titles
|
|
||||||
this.taskLineDetail.title = this.$t('task.airline.lineDetail');
|
|
||||||
},
|
|
||||||
'form.targetList': {
|
'form.targetList': {
|
||||||
handler: function (newValue, oldValue) {
|
handler: function (newValue, oldValue) {
|
||||||
if (newValue.length && this.taskForm.visible && this.$refs.form) {
|
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.data = line
|
||||||
this.taskLineDetail.visible = true
|
this.taskLineDetail.visible = true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,7 +75,7 @@ export default {
|
|||||||
show: false,
|
show: false,
|
||||||
visible: false,
|
visible: false,
|
||||||
form: {},
|
form: {},
|
||||||
title: ''
|
title: '新增任务'
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
id: '',
|
id: '',
|
||||||
@ -105,10 +105,46 @@ export default {
|
|||||||
autoFocus: 0,
|
autoFocus: 0,
|
||||||
imageMode: '0',
|
imageMode: '0',
|
||||||
moto: 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,
|
settingExpand: false,
|
||||||
duringDraw: false,
|
duringDraw: false,
|
||||||
duringPick: false,
|
duringPick: false,
|
||||||
|
flyModeOptions: [
|
||||||
|
{
|
||||||
|
label: '点目标模式',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '区域目标模式',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '航线创建',
|
||||||
|
value: 3
|
||||||
|
}
|
||||||
|
],
|
||||||
drawOptions: [
|
drawOptions: [
|
||||||
{
|
{
|
||||||
label: '点',
|
label: '点',
|
||||||
@ -119,7 +155,58 @@ export default {
|
|||||||
value: '多边形'
|
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: {
|
ratioMap: {
|
||||||
'0.1': {
|
'0.1': {
|
||||||
width: 317.5523063, // y 方向幅宽
|
width: 317.5523063, // y 方向幅宽
|
||||||
@ -194,7 +281,22 @@ export default {
|
|||||||
polarization: '0', //极化方式
|
polarization: '0', //极化方式
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
uavOptions: [],
|
heightModeOptions: [
|
||||||
|
{
|
||||||
|
label: '海拔高度',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '相对起飞点高度',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '相对地形高度',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
],
|
||||||
|
uavOptions: [
|
||||||
|
],
|
||||||
duringAirlinePick: false,
|
duringAirlinePick: false,
|
||||||
calculateMap: [
|
calculateMap: [
|
||||||
{
|
{
|
||||||
@ -350,11 +452,14 @@ export default {
|
|||||||
id: '',
|
id: '',
|
||||||
loading: false
|
loading: false
|
||||||
},
|
},
|
||||||
|
nameRules: {
|
||||||
|
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
||||||
|
},
|
||||||
uavReady: false,
|
uavReady: false,
|
||||||
loaderReady: false,
|
loaderReady: false,
|
||||||
taskLineDetail: {
|
taskLineDetail: {
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '',
|
title: '航线详情',
|
||||||
data: []
|
data: []
|
||||||
},
|
},
|
||||||
currentUavInfo: {
|
currentUavInfo: {
|
||||||
@ -363,6 +468,36 @@ export default {
|
|||||||
height: undefined
|
height: undefined
|
||||||
},
|
},
|
||||||
previewLoading: false,
|
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'),
|
emptyImg: require('@/assets/img/common/empty.svg'),
|
||||||
noAllowDraw: true
|
noAllowDraw: true
|
||||||
}
|
}
|
||||||
@ -385,50 +520,6 @@ export default {
|
|||||||
readyUavLocation() {
|
readyUavLocation() {
|
||||||
return this.uavReady && this.loaderReady
|
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: {
|
watch: {
|
||||||
visible: {
|
visible: {
|
||||||
@ -458,7 +549,7 @@ export default {
|
|||||||
'taskForm.visible'(nv) {
|
'taskForm.visible'(nv) {
|
||||||
if (nv) {
|
if (nv) {
|
||||||
this.taskList.visible = false
|
this.taskList.visible = false
|
||||||
this.taskForm.title = this.$t('task.addTask')
|
|
||||||
} else {
|
} else {
|
||||||
if (this.visibleLocale) {
|
if (this.visibleLocale) {
|
||||||
this.taskList.visible = true
|
this.taskList.visible = true
|
||||||
@ -471,16 +562,31 @@ export default {
|
|||||||
viewer.entities.remove(endPoint)
|
viewer.entities.remove(endPoint)
|
||||||
endPoint = null
|
endPoint = null
|
||||||
}
|
}
|
||||||
|
console.log('走这一步了吗')
|
||||||
if (theViewerTools) {
|
if (theViewerTools) {
|
||||||
theViewerTools.destroy()
|
theViewerTools.destroy()
|
||||||
}
|
}
|
||||||
theViewerTools = null
|
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': {
|
'form.targetList': {
|
||||||
handler: function (newValue, oldValue) {
|
handler: function (newValue, oldValue) {
|
||||||
if (newValue.length && this.taskForm.visible && this.$refs.form) {
|
if (newValue.length && this.taskForm.visible && this.$refs.form) {
|
||||||
@ -554,16 +660,39 @@ export default {
|
|||||||
// #region 任务启动部分代码迁移
|
// #region 任务启动部分代码迁移
|
||||||
reRunTask(info) {
|
reRunTask(info) {
|
||||||
if (info.status !== 2) return
|
if (info.status !== 2) return
|
||||||
this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
|
this.$confirm('确定重新执行吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
reRunTask({ id: info.id }).then(res => {
|
reRunTask({ id: info.id }).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('task.reFlyTaskSuccess'))
|
console.log('重新运行结果', res)
|
||||||
|
this.$message.success('任务重新执行成功')
|
||||||
this.getList()
|
this.getList()
|
||||||
this.SET_MENUS_CHOSE('1')
|
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 {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
}
|
}
|
||||||
@ -571,9 +700,9 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
stopTask(info, index) {
|
stopTask(info, index) {
|
||||||
this.$confirm(this.$t('task.stopTaskConfirm'), this.$t('task.tip'), {
|
this.$confirm('确定结束任务吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
stopTaskFly({ id: info.id }).then(res => {
|
stopTaskFly({ id: info.id }).then(res => {
|
||||||
@ -581,7 +710,7 @@ export default {
|
|||||||
// info.status = 2
|
// info.status = 2
|
||||||
this.getList()
|
this.getList()
|
||||||
// info.statusName = this.jobStatus[info.status + '']
|
// info.statusName = this.jobStatus[info.status + '']
|
||||||
this.$message.success(this.$t('task.stopTaskSuccess'))
|
this.$message.success('任务已结束!')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
}
|
}
|
||||||
@ -590,9 +719,9 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
makeTaskUavFly(info, index) {
|
makeTaskUavFly(info, index) {
|
||||||
this.$confirm(this.$t('task.flyTaskConfirm'), this.$t('task.tip'), {
|
this.$confirm('确定执行吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
flyTaskUavCommand({ id: info.id }).then(res => {
|
flyTaskUavCommand({ id: info.id }).then(res => {
|
||||||
@ -606,7 +735,7 @@ export default {
|
|||||||
// this.toggleTaskSceneShow(child, childIndex)
|
// this.toggleTaskSceneShow(child, childIndex)
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
this.$message.success(this.$t('task.flyTaskSuccess'))
|
this.$message.success('起飞成功')
|
||||||
this.SET_MENUS_CHOSE('1')
|
this.SET_MENUS_CHOSE('1')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
@ -756,8 +885,11 @@ export default {
|
|||||||
this.uavReady = false
|
this.uavReady = false
|
||||||
getUavEnabledListData().then(res => {
|
getUavEnabledListData().then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('无人机列表', res.data.data)
|
||||||
this.uavOptions = res.data.data
|
this.uavOptions = res.data.data
|
||||||
|
// TODO 临时
|
||||||
if (this.uavOptions.length > 0) {
|
if (this.uavOptions.length > 0) {
|
||||||
|
// this.form.uav = this.uavOptions[0].id
|
||||||
this.uavReady = true
|
this.uavReady = true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -783,6 +915,7 @@ export default {
|
|||||||
this.removePreviewLine()
|
this.removePreviewLine()
|
||||||
this.form.targetList = []
|
this.form.targetList = []
|
||||||
// 清楚当前目标
|
// 清楚当前目标
|
||||||
|
console.log(data, '载荷状态信息');
|
||||||
let position = DT.Cesium.Cartesian3.fromDegrees(data.longitude, data.latitude, 2000)
|
let position = DT.Cesium.Cartesian3.fromDegrees(data.longitude, data.latitude, 2000)
|
||||||
viewer.cesiumViewer.scene.camera.flyTo({
|
viewer.cesiumViewer.scene.camera.flyTo({
|
||||||
destination: position,
|
destination: position,
|
||||||
@ -828,21 +961,23 @@ export default {
|
|||||||
latitude: res.data.data.latitude,
|
latitude: res.data.data.latitude,
|
||||||
height: res.data.data.altitude,
|
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)
|
let position = DT.Cesium.Cartesian3.fromDegrees(res.data.data.longitude, res.data.data.latitude, 3000)
|
||||||
viewer.cesiumViewer.scene.camera.flyTo({
|
viewer.cesiumViewer.scene.camera.flyTo({
|
||||||
destination: position,
|
destination: position,
|
||||||
duration: 1
|
duration: 1
|
||||||
})
|
})
|
||||||
this.$message.success(this.$t('task.refreshUavHeightSuccess'))
|
this.$message.success('获取当前高度成功!')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('task.selectLoader'))
|
this.$message.warning('请选择雷达!')
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('task.selectUav'))
|
this.$message.warning('请选择无人机!')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getList() {
|
getList() {
|
||||||
@ -884,6 +1019,7 @@ export default {
|
|||||||
copyTask(info) {
|
copyTask(info) {
|
||||||
getTaskEditItemDetail({ jobId: info.id }).then(res => {
|
getTaskEditItemDetail({ jobId: info.id }).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
|
console.log('编辑详情', res.data.data)
|
||||||
this.editTask(JSON.parse(res.data.data))
|
this.editTask(JSON.parse(res.data.data))
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
@ -907,7 +1043,7 @@ export default {
|
|||||||
editTaskName(params).then(res => {
|
editTaskName(params).then(res => {
|
||||||
this.editName.loading = false
|
this.editName.loading = false
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('common.editSuccess'))
|
this.$message.success('修改成功!')
|
||||||
this.editName.visible = false
|
this.editName.visible = false
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
@ -921,14 +1057,14 @@ export default {
|
|||||||
},
|
},
|
||||||
// 删除任务
|
// 删除任务
|
||||||
deleteTask(info) {
|
deleteTask(info) {
|
||||||
this.$confirm(this.$t('task.deleteConfirm'), this.$t('task.tip'), {
|
this.$confirm('确定删除吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
deleteTaskItem([info.id]).then(res => {
|
deleteTaskItem([info.id]).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('common.deleteSuccess'))
|
this.$message.success('删除成功')
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
@ -942,14 +1078,14 @@ export default {
|
|||||||
* @param info
|
* @param info
|
||||||
*/
|
*/
|
||||||
reRunTask(info) {
|
reRunTask(info) {
|
||||||
this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
|
this.$confirm('确定重新执行吗', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
reRunTask({ id: info.id }).then(res => {
|
reRunTask({ id: info.id }).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('task.reFlyTaskSuccess'))
|
this.$message.success('任务重新执行成功')
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
this.$message.error(res.data.message)
|
||||||
@ -963,6 +1099,7 @@ export default {
|
|||||||
* @param info
|
* @param info
|
||||||
*/
|
*/
|
||||||
editTask(info) {
|
editTask(info) {
|
||||||
|
console.log('复制信息', info)
|
||||||
// 移除所有线
|
// 移除所有线
|
||||||
this.removeAllAirline()
|
this.removeAllAirline()
|
||||||
// 移除预览
|
// 移除预览
|
||||||
@ -1077,6 +1214,7 @@ export default {
|
|||||||
|
|
||||||
theViewerTools = new AreaPlotManager(viewer)
|
theViewerTools = new AreaPlotManager(viewer)
|
||||||
theViewerTools.initPlot(this.theCallback)
|
theViewerTools.initPlot(this.theCallback)
|
||||||
|
console.log('船舰了吗', theViewerTools)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@ -1130,6 +1268,8 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
|
console.log(this.form, 88888888);
|
||||||
|
|
||||||
this.$refs.form.validate((valid) => {
|
this.$refs.form.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
let params = JSON.parse(JSON.stringify(this.form))
|
let params = JSON.parse(JSON.stringify(this.form))
|
||||||
@ -1237,10 +1377,12 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
console.log(info, 22222222222);
|
||||||
|
|
||||||
if (info.id) {
|
if (info.id) {
|
||||||
addTaskFast(info).then(res => {
|
addTaskFast(info).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('task.addTaskSuccess'))
|
this.$message.success('新增任务任务成功')
|
||||||
this.taskForm.visible = false
|
this.taskForm.visible = false
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
@ -1250,7 +1392,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
addTaskFast(info).then(res => {
|
addTaskFast(info).then(res => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
this.$message.success(this.$t('task.addTaskSuccess'))
|
this.$message.success('新增任务任务成功')
|
||||||
this.taskForm.visible = false
|
this.taskForm.visible = false
|
||||||
this.resetForm()
|
this.resetForm()
|
||||||
this.getList()
|
this.getList()
|
||||||
@ -1270,6 +1412,11 @@ export default {
|
|||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
onModeChange(value) {
|
onModeChange(value) {
|
||||||
|
console.log('飞行模式', value)
|
||||||
|
// if (linePlot) {
|
||||||
|
// linePlot.destroy()
|
||||||
|
// linePlot = null
|
||||||
|
// }
|
||||||
this.form.targetList.forEach(item => {
|
this.form.targetList.forEach(item => {
|
||||||
this.tagClose(item)
|
this.tagClose(item)
|
||||||
})
|
})
|
||||||
@ -1329,6 +1476,7 @@ export default {
|
|||||||
*/
|
*/
|
||||||
targetTypeChange(val) {
|
targetTypeChange(val) {
|
||||||
this.endDraw()
|
this.endDraw()
|
||||||
|
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case '区域选择':
|
case '区域选择':
|
||||||
break
|
break
|
||||||
@ -1452,13 +1600,13 @@ export default {
|
|||||||
startAirlineDraw() {
|
startAirlineDraw() {
|
||||||
if (this.readOnly) return
|
if (this.readOnly) return
|
||||||
if (this.duringAirlinePick) {
|
if (this.duringAirlinePick) {
|
||||||
this.$message.info(this.$t('task.duringAirlinePick'))
|
this.$message.info('已经处于绘制模式!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (this.form.routepoints.length > 0) {
|
if (this.form.routepoints.length > 0) {
|
||||||
this.$confirm(this.$t('task.clearAirlineConfirm'), this.$t('task.tip'), {
|
this.$confirm('绘制会清除历史数据,是否继续?', '提示', {
|
||||||
confirmButtonText: this.$t('common.confirm'),
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: this.$t('common.cancel'),
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.form.routepoints = []
|
this.form.routepoints = []
|
||||||
@ -1522,7 +1670,7 @@ export default {
|
|||||||
onTableCommand(info, index) {
|
onTableCommand(info, index) {
|
||||||
if (this.readOnly || this.duringAirlinePick) return
|
if (this.readOnly || this.duringAirlinePick) return
|
||||||
if (this.form.routepoints.length < 3) {
|
if (this.form.routepoints.length < 3) {
|
||||||
this.$message.warning(this.$t('task.airlineMinPoint'))
|
this.$message.warning('至少需要保留两个点!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let position = DT.Cesium.Cartesian3.fromDegrees(info.longitude, info.latitude)
|
let position = DT.Cesium.Cartesian3.fromDegrees(info.longitude, info.latitude)
|
||||||
@ -1571,7 +1719,7 @@ export default {
|
|||||||
result.forEach((item, index) => {
|
result.forEach((item, index) => {
|
||||||
if (index < length - 1) {
|
if (index < length - 1) {
|
||||||
lineData.push({
|
lineData.push({
|
||||||
name: this.$t('task.point') + (index + 1),
|
name: '点' + (index + 1),
|
||||||
lon: item[0].toFixed(4),
|
lon: item[0].toFixed(4),
|
||||||
lat: item[1].toFixed(4)
|
lat: item[1].toFixed(4)
|
||||||
})
|
})
|
||||||
@ -1683,7 +1831,7 @@ export default {
|
|||||||
if (this.form.mode === '1') {
|
if (this.form.mode === '1') {
|
||||||
if (this.form.targetChoose === '多边形') {
|
if (this.form.targetChoose === '多边形') {
|
||||||
this.onModeChange('1')
|
this.onModeChange('1')
|
||||||
this.form.targetChoose = this.$t('task.point')
|
this.form.targetChoose = '点'
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.form.mode = '1'
|
this.form.mode = '1'
|
||||||
@ -1784,7 +1932,7 @@ export default {
|
|||||||
}
|
}
|
||||||
this.$message({
|
this.$message({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('task.createAirlineTip'),
|
message: '在场景中点击鼠标左键创建航线',
|
||||||
duration: 4000,
|
duration: 4000,
|
||||||
})
|
})
|
||||||
this.airlineCreateInfo.during = true
|
this.airlineCreateInfo.during = true
|
||||||
@ -1937,7 +2085,7 @@ export default {
|
|||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
let data = res.data.data
|
let data = res.data.data
|
||||||
this.addPreviewLine(data.uavList)
|
this.addPreviewLine(data.uavList)
|
||||||
this.$message.success(this.$t('task.getAirlineSuccess'))
|
this.$message.success('获取航线成功!')
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(res.data.message)
|
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.data = line
|
||||||
this.taskLineDetail.visible = true
|
this.taskLineDetail.visible = true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,8 +7,7 @@
|
|||||||
'task-list__large': isIconModeLarge,
|
'task-list__large': isIconModeLarge,
|
||||||
}"
|
}"
|
||||||
icon="ri-list-unordered"
|
icon="ri-list-unordered"
|
||||||
:title="this.$t('task.taskList')"
|
title="任务列表"
|
||||||
|
|
||||||
:visible.sync="taskList.visible"
|
:visible.sync="taskList.visible"
|
||||||
:scroll="false"
|
:scroll="false"
|
||||||
:showClose="false"
|
:showClose="false"
|
||||||
@ -17,13 +16,13 @@
|
|||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<span class="remote-header">
|
<span class="remote-header">
|
||||||
<i class="ri-function-add-line"></i>
|
<i class="ri-function-add-line"></i>
|
||||||
{{ $t('task.taskList') }}
|
任务列表
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:command>
|
<template v-slot:command>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="$t('task.addTask')"
|
content="新增任务"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -52,7 +51,7 @@
|
|||||||
<div class="top-part__right">
|
<div class="top-part__right">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="item.check ? $t('task.hide') : $t('task.show')"
|
:content="item.check ? '隐藏' : '显示'"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -64,7 +63,7 @@
|
|||||||
<el-tooltip
|
<el-tooltip
|
||||||
v-if="item.status === 0"
|
v-if="item.status === 0"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="$t('task.execute')"
|
content="执行"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -75,7 +74,7 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="$t('task.reExecute')"
|
content="重新执行"
|
||||||
placement="top"
|
placement="top"
|
||||||
v-if="item.status === 2"
|
v-if="item.status === 2"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
@ -94,16 +93,16 @@
|
|||||||
<i class="ri-more-fill"></i>
|
<i class="ri-more-fill"></i>
|
||||||
</span>
|
</span>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item command="edit">{{ $t('task.editName') }}</el-dropdown-item>
|
<el-dropdown-item command="edit">修改名称</el-dropdown-item>
|
||||||
<el-dropdown-item command="copy">{{ $t('task.copy') }}</el-dropdown-item>
|
<el-dropdown-item command="copy">复制</el-dropdown-item>
|
||||||
<el-dropdown-item command="remove">{{ $t('task.delete') }}</el-dropdown-item>
|
<el-dropdown-item command="remove">删除</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
|
<p>无人机名称: {{ item.uav }}</p>
|
||||||
<p>{{ $t('task.radarName') }}: {{ item.sar }}</p>
|
<p>雷达名称: {{ item.sar }}</p>
|
||||||
<p>{{ $t('task.startTime') }}:{{ item.beginTime }}</p>
|
<p>开始时间:{{ item.beginTime }}</p>
|
||||||
<div
|
<div
|
||||||
class="task-info"
|
class="task-info"
|
||||||
:style="{ color: dealStatusColor(item.statusName) }"
|
:style="{ color: dealStatusColor(item.statusName) }"
|
||||||
@ -114,7 +113,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-else class="task-empty">
|
<div v-else class="task-empty">
|
||||||
<img :src="emptyImg" alt="" />
|
<img :src="emptyImg" alt="" />
|
||||||
<p>{{ $t('task.noTask') }}</p>
|
<p>暂无任务</p>
|
||||||
</div>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
<dt-card
|
<dt-card
|
||||||
@ -136,14 +135,14 @@
|
|||||||
label-position="left"
|
label-position="left"
|
||||||
label-width="auto"
|
label-width="auto"
|
||||||
>
|
>
|
||||||
<el-form-item prop="name" :label="$t('task.taskName')">
|
<el-form-item prop="name" label="任务名称">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('task.inputTaskName')"
|
placeholder="请输入任务名称"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="uav" :label="$t('task.uav')">
|
<el-form-item prop="uav" label="无人机">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -157,13 +156,12 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="loader" :label="$t('task.loader')">
|
<el-form-item prop="loader" label="载荷">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form.loader"
|
v-model="form.loader"
|
||||||
@change="loaderChange"
|
@change="loaderChange"
|
||||||
:placeholder="$t('task.selectLoader')"
|
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in loaderOptions"
|
v-for="item in loaderOptions"
|
||||||
@ -173,7 +171,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="mode" :label="$t('task.flyMode')">
|
<el-form-item prop="mode" label="飞行模式">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -190,7 +188,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('task.taskTarget')"
|
label="任务目标"
|
||||||
v-if="form.mode === '1'"
|
v-if="form.mode === '1'"
|
||||||
style="margin-bottom: 0"
|
style="margin-bottom: 0"
|
||||||
>
|
>
|
||||||
@ -200,7 +198,6 @@
|
|||||||
size="small"
|
size="small"
|
||||||
:disabled="duringDraw || noAllowDraw"
|
:disabled="duringDraw || noAllowDraw"
|
||||||
v-model="form.targetChoose"
|
v-model="form.targetChoose"
|
||||||
:placeholder="$t('task.selectTarget')"
|
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in drawOptions"
|
v-for="item in drawOptions"
|
||||||
@ -215,7 +212,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
@click="drawFromButton"
|
@click="drawFromButton"
|
||||||
:disabled="duringDraw || duringPick || !form.targetChoose"
|
:disabled="duringDraw || duringPick || !form.targetChoose"
|
||||||
>{{ $t('task.draw') }}</el-button
|
>绘制</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -233,9 +230,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</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-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-list">
|
||||||
<div
|
<div
|
||||||
class="airline-item"
|
class="airline-item"
|
||||||
@ -266,7 +263,55 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</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">
|
<div class="input-command">
|
||||||
<el-input
|
<el-input
|
||||||
v-model.number="form.startAltitude"
|
v-model.number="form.startAltitude"
|
||||||
@ -277,7 +322,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
:disabled="!form.loader || !form.uav"
|
:disabled="!form.loader || !form.uav"
|
||||||
@click.stop="refreshUavHeight()"
|
@click.stop="refreshUavHeight()"
|
||||||
>{{ $t('task.update') }}</el-button
|
>更新</el-button
|
||||||
>
|
>
|
||||||
<!-- <el-tooltip-->
|
<!-- <el-tooltip-->
|
||||||
<!-- effect="dark"-->
|
<!-- effect="dark"-->
|
||||||
@ -288,7 +333,7 @@
|
|||||||
<!-- </el-tooltip>-->
|
<!-- </el-tooltip>-->
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="imageLight" :label="$t('task.imageLight')">
|
<el-form-item prop="imageLight" label="图片亮度">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.imageLight"
|
v-model="form.imageLight"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
@ -296,7 +341,7 @@
|
|||||||
:max="100"
|
:max="100"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="ratio" :label="$t('task.resolution')">
|
<el-form-item prop="ratio" label="分辨率">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -312,7 +357,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.imageMode')" prop="imageMode">
|
<el-form-item label="成像模式" prop="imageMode">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -329,7 +374,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="more-setting">
|
<div class="more-setting">
|
||||||
<div class="setting-left">
|
<div class="setting-left">
|
||||||
<i class="ri-settings-line"></i> {{ $t('task.moreSetting') }}
|
<i class="ri-settings-line"></i> 更多设置
|
||||||
</div>
|
</div>
|
||||||
<i
|
<i
|
||||||
@click="settingExpand = !settingExpand"
|
@click="settingExpand = !settingExpand"
|
||||||
@ -340,7 +385,21 @@
|
|||||||
></i>
|
></i>
|
||||||
</div>
|
</div>
|
||||||
<template v-if="settingExpand">
|
<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-->
|
<!-- <el-input-->
|
||||||
<!-- v-model.number="form.initSpeed"-->
|
<!-- v-model.number="form.initSpeed"-->
|
||||||
<!-- type="number"-->
|
<!-- type="number"-->
|
||||||
@ -355,7 +414,7 @@
|
|||||||
:max="20"
|
:max="20"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.autoFocus')">
|
<el-form-item label="自动聚焦">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -369,7 +428,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.moto')">
|
<el-form-item label="运动补偿">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -386,7 +445,7 @@
|
|||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.mode !== '2'"
|
v-if="form.mode !== '2'"
|
||||||
prop="headingDiff"
|
prop="headingDiff"
|
||||||
:label="$t('task.radarHeading')"
|
label="雷达朝向"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.headingDiff"
|
v-model="form.headingDiff"
|
||||||
@ -395,7 +454,7 @@
|
|||||||
:max="180"
|
:max="180"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.imageBit')">
|
<el-form-item label="图像位数">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -405,7 +464,7 @@
|
|||||||
<el-option label="16bit" :value="1"></el-option>
|
<el-option label="16bit" :value="1"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</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
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -420,7 +479,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.polarization')">
|
<el-form-item label="极化方式">
|
||||||
<el-select
|
<el-select
|
||||||
popper-class="form-light"
|
popper-class="form-light"
|
||||||
size="small"
|
size="small"
|
||||||
@ -434,7 +493,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="flyHeight" :label="$t('task.flyHeight')">
|
<el-form-item prop="flyHeight" label="飞行高度">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="form.flyHeight"
|
v-model="form.flyHeight"
|
||||||
show-input
|
show-input
|
||||||
@ -444,7 +503,7 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
></el-slider>
|
></el-slider>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.downViewAngle')">
|
<el-form-item label="下视角">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="form.theta"
|
v-model="form.theta"
|
||||||
:step="0.1"
|
:step="0.1"
|
||||||
@ -455,7 +514,7 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
></el-slider>
|
></el-slider>
|
||||||
</el-form-item>
|
</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
|
<el-slider
|
||||||
v-model="form.waveAngle"
|
v-model="form.waveAngle"
|
||||||
:step="0.1"
|
:step="0.1"
|
||||||
@ -466,13 +525,13 @@
|
|||||||
size="mini"
|
size="mini"
|
||||||
></el-slider>
|
></el-slider>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('task.y_width')">
|
<el-form-item label="y向幅宽">
|
||||||
<el-input
|
<el-input
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
v-model.number="form.width"
|
v-model.number="form.width"
|
||||||
type="number"
|
type="number"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('task.y_width_placeholder')"
|
placeholder="请输入y向幅宽"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="返航点设置">-->
|
<!-- <el-form-item label="返航点设置">-->
|
||||||
@ -490,15 +549,15 @@
|
|||||||
:disabled="previewLoading"
|
:disabled="previewLoading"
|
||||||
v-if="form.mode === '1'"
|
v-if="form.mode === '1'"
|
||||||
@click="previewLine"
|
@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>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
</left-slide>
|
</left-slide>
|
||||||
|
|
||||||
<dt-dialog
|
<dt-dialog
|
||||||
:title="$t('task.editTaskName')"
|
title="修改任务名称"
|
||||||
top="20vh"
|
top="20vh"
|
||||||
width="400px"
|
width="400px"
|
||||||
:visible.sync="editName.visible"
|
:visible.sync="editName.visible"
|
||||||
@ -511,11 +570,11 @@
|
|||||||
label-width="100px"
|
label-width="100px"
|
||||||
class="task-name-form"
|
class="task-name-form"
|
||||||
>
|
>
|
||||||
<el-form-item prop="name" :label="$t('task.taskName')">
|
<el-form-item prop="name" label="任务名称">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="editName.name"
|
v-model="editName.name"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('task.taskNamePlaceholder')"
|
placeholder="请输入图片文件夹路径"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="submit-wrap">
|
<div class="submit-wrap">
|
||||||
@ -524,7 +583,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
:disabled="editName.loading || !editName.name"
|
:disabled="editName.loading || !editName.name"
|
||||||
@click.stop="submitName"
|
@click.stop="submitName"
|
||||||
>{{ $t('common.confirm') }}</el-button
|
>确定</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -540,17 +599,17 @@
|
|||||||
<div class="task-line-detail">
|
<div class="task-line-detail">
|
||||||
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
||||||
<el-table-column type="index" width="50"> </el-table-column>
|
<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="startLon" label="起点经度"> </el-table-column>
|
||||||
<el-table-column prop="startLat" :label="$t('task.airline.startLat')"> </el-table-column>
|
<el-table-column prop="startLat" label="起点纬度"> </el-table-column>
|
||||||
<el-table-column prop="startHeight" :label="$t('task.airline.startHeight')">
|
<el-table-column prop="startHeight" label="起点相对高度">
|
||||||
</el-table-column>
|
</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>
|
||||||
<el-table-column prop="endLon" :label="$t('task.airline.endLon')"> </el-table-column>
|
<el-table-column prop="endLon" label="终点经度"> </el-table-column>
|
||||||
<el-table-column prop="endLat" :label="$t('task.airline.endLat')"> </el-table-column>
|
<el-table-column prop="endLat" label="终点纬度"> </el-table-column>
|
||||||
<el-table-column prop="endHeight" :label="$t('task.airline.endHeight')">
|
<el-table-column prop="endHeight" label="终点相对高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="endAlt" :label="$t('task.airline.endAlt')">
|
<el-table-column prop="endAlt" label="终点海拔高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -33,7 +33,6 @@ import PicturesUpload from '../pictures-upload/index.vue'
|
|||||||
import RightSlide from '@/components/RightSlide.vue'
|
import RightSlide from '@/components/RightSlide.vue'
|
||||||
import LeftSlide from '@/components/LeftSlide.vue'
|
import LeftSlide from '@/components/LeftSlide.vue'
|
||||||
import { debounce } from '@/utils'
|
import { debounce } from '@/utils'
|
||||||
import { gisLabels } from '@/lang/index'
|
|
||||||
let handler = undefined
|
let handler = undefined
|
||||||
let broadcastChannel = null
|
let broadcastChannel = null
|
||||||
let broadcastChannelInterval = null
|
let broadcastChannelInterval = null
|
||||||
@ -58,7 +57,6 @@ let radarSceneEntity = {}
|
|||||||
let sceneEntity = {}
|
let sceneEntity = {}
|
||||||
let taskListResource = []
|
let taskListResource = []
|
||||||
let orthoManager = null
|
let orthoManager = null
|
||||||
const lang = window.localStorage.getItem('locale') || 'zh_CN'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TwinSituation',
|
name: 'TwinSituation',
|
||||||
props: {
|
props: {
|
||||||
@ -247,9 +245,40 @@ export default {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
statusInfo: {
|
statusInfo: {
|
||||||
dev: [],
|
dev: [
|
||||||
gps: [],
|
// { name: '是否开机', value: '是', unit: '' },
|
||||||
imu: [],
|
{ 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: {
|
dev2: {
|
||||||
isWork: true,
|
isWork: true,
|
||||||
isLock: true,
|
isLock: true,
|
||||||
@ -1166,9 +1195,8 @@ export default {
|
|||||||
allPositions = allPositions.concat(positions)
|
allPositions = allPositions.concat(positions)
|
||||||
let entity = viewer.entities.add({
|
let entity = viewer.entities.add({
|
||||||
position: positions[0],
|
position: positions[0],
|
||||||
id: `${taskId}-area`,
|
|
||||||
label: {
|
label: {
|
||||||
text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
|
text: `${taskName}任务-规划区域${index + 1}`,
|
||||||
disableDepthTestDistance: 10000,
|
disableDepthTestDistance: 10000,
|
||||||
font: '14px sans-serif',
|
font: '14px sans-serif',
|
||||||
fillColor: DT.Cesium.Color.RED,
|
fillColor: DT.Cesium.Color.RED,
|
||||||
@ -1196,9 +1224,8 @@ export default {
|
|||||||
allPositions.push(position)
|
allPositions.push(position)
|
||||||
let entity = viewer.entities.add({
|
let entity = viewer.entities.add({
|
||||||
position,
|
position,
|
||||||
id: `${taskId}-area`,
|
|
||||||
label: {
|
label: {
|
||||||
text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
|
text: `${taskName}任务-规划区域${index + 1}`,
|
||||||
disableDepthTestDistance: 10000,
|
disableDepthTestDistance: 10000,
|
||||||
font: '14px sans-serif',
|
font: '14px sans-serif',
|
||||||
fillColor: DT.Cesium.Color.RED,
|
fillColor: DT.Cesium.Color.RED,
|
||||||
@ -2725,37 +2752,37 @@ export default {
|
|||||||
this.detailUav.baseInfo.status = data.connected
|
this.detailUav.baseInfo.status = data.connected
|
||||||
this.detailUav.statusInfo.dev = [
|
this.detailUav.statusInfo.dev = [
|
||||||
// { name: '是否开机', value: this.sarWorkStatus[data.dIsBoot], unit: '' },
|
// { 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: 'GPU温度', value: '正常', unit: '' },
|
||||||
{ name: this.$t('task.fly.cpuTemp'), value: data.cpuC, unit: '℃' },
|
{ name: 'CPU温度', value: data.cpuC, unit: '℃' },
|
||||||
{ name: this.$t('task.fly.rfTemp'), value: data.rfC, unit: '℃' },
|
{ name: '射频温度', value: data.rfC, unit: '℃' },
|
||||||
{ name: this.$t('task.fly.antennaTemp'), value: data.antC, unit: '℃' },
|
{ name: '天线温度', value: data.antC, unit: '℃' },
|
||||||
{ name: this.$t('task.fly.diskTemp'), value: data.diskC, unit: '℃' },
|
{ name: '硬盘温度', value: data.diskC, unit: '℃' },
|
||||||
{ name: this.$t('task.fly.fpgaTemp'), value: data.fpgaC, unit: '℃' },
|
{ name: 'FPGA温度', value: data.fpgaC, unit: '℃' },
|
||||||
{ name: this.$t('task.fly.diskCapacity'), value: data.diskUtilization, unit: '%' },
|
{ name: '硬盘容量', value: data.diskUtilization, unit: '%' },
|
||||||
{ name: this.$t('task.fly.memoryCapacity'), value: data.memoryCapacity, unit: 'MB' },
|
{ name: '内存容量', value: data.memoryCapacity, unit: 'MB' },
|
||||||
]
|
]
|
||||||
this.detailUav.statusInfo.gps = [
|
this.detailUav.statusInfo.gps = [
|
||||||
// { name: '定位状态', value: '正常', unit: '' },
|
// { name: '定位状态', value: '正常', unit: '' },
|
||||||
// { name: '定向状态', value: '正常', unit: '' },
|
// { name: '定向状态', value: '正常', unit: '' },
|
||||||
{ name: this.$t('task.fly.rtkStatus'), value: data.rtkStatusLabel, unit: '' },
|
{ name: 'rtk状态', value: data.rtkStatusLabel, unit: '' },
|
||||||
{ name: this.$t('task.fly.satelliteNum'), value: data.satelliteNum, unit: '' },
|
{ name: '卫星个数', value: data.satelliteNum, unit: '' },
|
||||||
{ name: this.$t('task.fly.imuStatus'), value: this.imuStatus[data.imuStatus], unit: '' },
|
{ name: '惯导状态', value: this.imuStatus[data.imuStatus], unit: '' },
|
||||||
{ name: this.$t('task.fly.date'), value: data.date, unit: '' },
|
{ name: '年月日', value: data.date, unit: '' },
|
||||||
{ name: this.$t('task.fly.longitude'), value: data.longitude, unit: '°' },
|
{ name: '经度', value: data.longitude, unit: '°' },
|
||||||
{ name: this.$t('task.fly.latitude'), value: data.latitude, unit: '°' },
|
{ name: '纬度', value: data.latitude, unit: '°' },
|
||||||
{ name: this.$t('task.fly.height'), value: data.altitude, unit: 'm' },
|
{ name: '高度', value: data.altitude, unit: 'm' },
|
||||||
]
|
]
|
||||||
this.detailUav.statusInfo.imu = [
|
this.detailUav.statusInfo.imu = [
|
||||||
{ name: this.$t('task.fly.configStatus'), value: '正常', unit: '' },
|
{ name: '配置状态', value: '正常', unit: '' },
|
||||||
{ name: this.$t('task.fly.antennaAzimuth'), value: data.antennaAzimuth, unit: '°' },
|
{ name: '天线方位角', value: data.antennaAzimuth, unit: '°' },
|
||||||
{ name: this.$t('task.fly.antennaPitch'), value: data.antennaPitch, unit: '°' },
|
{ name: '天线俯仰角', value: data.antennaPitch, unit: '°' },
|
||||||
{ name: this.$t('task.fly.eastwardSpeed'), value: data.eastVelocity, unit: 'm/s' },
|
{ name: '东向速度', value: data.eastVelocity, unit: 'm/s' },
|
||||||
{ name: this.$t('task.fly.northwardSpeed'), value: data.northVelocity, unit: 'm/s' },
|
{ name: '北向速度', value: data.northVelocity, unit: 'm/s' },
|
||||||
{ name: this.$t('task.fly.upwardSpeed'), value: data.skyVelocity, unit: 'm/s' },
|
{ name: '天向速度', value: data.skyVelocity, unit: 'm/s' },
|
||||||
{ name: this.$t('task.fly.pitchAngle'), value: data.anglePitch, unit: '°' },
|
{ name: '俯仰角', value: data.anglePitch, unit: '°' },
|
||||||
{ name: this.$t('task.fly.rollAngle'), value: data.angleRoll, unit: '°' },
|
{ name: '翻转角', value: data.angleRoll, unit: '°' },
|
||||||
{ name: this.$t('task.fly.yawAngle'), value: data.angleYaw, unit: '°' },
|
{ name: '偏航角', value: data.angleYaw, unit: '°' },
|
||||||
]
|
]
|
||||||
// 更新场景中数据
|
// 更新场景中数据
|
||||||
// this.updateSceneUav(data)
|
// this.updateSceneUav(data)
|
||||||
|
|||||||
@ -1327,7 +1327,7 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: calc(100vh - 60px);
|
top: calc(100vh - 60px);
|
||||||
width: 400px;
|
width: 360px;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
background-color: $--color-black-1-alpha;
|
background-color: $--color-black-1-alpha;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
@ -1347,10 +1347,9 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.is-label {
|
.is-label {
|
||||||
text-align: center;
|
|
||||||
flex: none;
|
flex: none;
|
||||||
color: $--color-text-1;
|
color: $--color-text-1;
|
||||||
width: 90px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,46 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="twin-situation">
|
<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">
|
<left-slide class="task-info-wrap">
|
||||||
<dt-card
|
<dt-card
|
||||||
:class="{
|
:class="{
|
||||||
@ -14,9 +55,18 @@
|
|||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<span class="remote-header">
|
<span class="remote-header">
|
||||||
<i class="ri-task-fill"></i>
|
<i class="ri-task-fill"></i>
|
||||||
{{ $t('task.executingTasks') }}
|
执行中的任务
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</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">
|
<div class="task-list__content">
|
||||||
<template v-if="taskList.data.length">
|
<template v-if="taskList.data.length">
|
||||||
<div
|
<div
|
||||||
@ -43,7 +93,7 @@
|
|||||||
<div class="top-part__right">
|
<div class="top-part__right">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="item.check ? $t('task.hide') : $t('task.show')"
|
:content="item.check ? '隐藏' : '显示'"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
>
|
>
|
||||||
@ -54,7 +104,7 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="$t('task.endTask')"
|
content="结束任务"
|
||||||
placement="top"
|
placement="top"
|
||||||
:hide-after="1000"
|
:hide-after="1000"
|
||||||
v-if="item.status === 1"
|
v-if="item.status === 1"
|
||||||
@ -66,14 +116,20 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
|
<p>无人机名称: {{ item.uav }}</p>
|
||||||
<p>{{ $t('task.radarName') }} : {{ item.sar }}</p>
|
<p>雷达名称: {{ item.sar }}</p>
|
||||||
<p>{{ $t('task.beginTime') }}:{{ item.beginTime }}</p>
|
<p>开始时间:{{ item.beginTime }}</p>
|
||||||
|
<!-- <div
|
||||||
|
class="task-info"
|
||||||
|
:style="{ color: dealStatusColor(item.statusName) }"
|
||||||
|
>
|
||||||
|
{{ item.statusName }}
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div v-else class="task-empty">
|
<div v-else class="task-empty">
|
||||||
<img :src="emptyImg" alt="" />
|
<img :src="emptyImg" alt="" />
|
||||||
<p>{{ $t('task.noExecutingTasks') }}</p>
|
<p>暂无执行中的任务</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
@ -87,7 +143,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div class="image-set__item">
|
<div class="image-set__item">
|
||||||
<div class="is-label">{{ $t('task.brightness') }}:</div>
|
<div class="is-label">亮度:</div>
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="imageInfos.brightness"
|
v-model="imageInfos.brightness"
|
||||||
show-input
|
show-input
|
||||||
@ -128,7 +184,7 @@
|
|||||||
'weather-info__large': isIconModeLarge,
|
'weather-info__large': isIconModeLarge,
|
||||||
}"
|
}"
|
||||||
icon="iconfont icon-target"
|
icon="iconfont icon-target"
|
||||||
:title="$t('task.weatherWarning')"
|
title="气象预警"
|
||||||
:visible.sync="rightShow"
|
:visible.sync="rightShow"
|
||||||
:scroll="false"
|
:scroll="false"
|
||||||
:showClose="false"
|
:showClose="false"
|
||||||
@ -137,19 +193,19 @@
|
|||||||
<div class="weather-info__content2">
|
<div class="weather-info__content2">
|
||||||
<div class="base-info">
|
<div class="base-info">
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('task.temperature') }}:</span><span>{{ weatherInfo2.wendu }}</span>
|
<span>温度:</span><span>{{ weatherInfo2.wendu }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('task.humidity') }}:</span><span>{{ weatherInfo2.shidu }}</span>
|
<span>湿度:</span><span>{{ weatherInfo2.shidu }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('task.airQuality') }}:</span><span>{{ weatherInfo2.quality }}</span>
|
<span>空气质量:</span><span>{{ weatherInfo2.quality }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('task.pm25') }}:</span><span>{{ weatherInfo2.pm25 }}</span>
|
<span>pm25:</span><span>{{ weatherInfo2.pm25 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('task.pm10') }}:</span><span>{{ weatherInfo2.pm10 }}</span>
|
<span>pm10:</span><span>{{ weatherInfo2.pm10 }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="week-info">
|
<div class="week-info">
|
||||||
@ -168,9 +224,50 @@
|
|||||||
<div>{{ item.fl }}</div>
|
<div>{{ item.fl }}</div>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
</right-slide>
|
</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">
|
<right-slide class="detail-info-wrap" v-if="detailInfo.visible">
|
||||||
<dt-card
|
<dt-card
|
||||||
@ -179,7 +276,7 @@
|
|||||||
'detail-info__large': isIconModeLarge,
|
'detail-info__large': isIconModeLarge,
|
||||||
}"
|
}"
|
||||||
icon="iconfont icon-target"
|
icon="iconfont icon-target"
|
||||||
:title="$t('task.detailInfo')"
|
title="详细信息"
|
||||||
v-if="detailInfo.visible"
|
v-if="detailInfo.visible"
|
||||||
:visible.sync="detailInfo.visible"
|
:visible.sync="detailInfo.visible"
|
||||||
:scroll="false"
|
:scroll="false"
|
||||||
@ -227,7 +324,7 @@
|
|||||||
'detail-uav__large': isIconModeLarge,
|
'detail-uav__large': isIconModeLarge,
|
||||||
}"
|
}"
|
||||||
icon="iconfont icon-target"
|
icon="iconfont icon-target"
|
||||||
:title="$t('task.detailInfo')"
|
title="详细信息"
|
||||||
v-if="detailUav.visible"
|
v-if="detailUav.visible"
|
||||||
:visible.sync="detailUav.visible"
|
:visible.sync="detailUav.visible"
|
||||||
:scroll="true"
|
:scroll="true"
|
||||||
@ -240,9 +337,9 @@
|
|||||||
v-model="detailUav.activeNames"
|
v-model="detailUav.activeNames"
|
||||||
@change="handleUavDetailCollapse"
|
@change="handleUavDetailCollapse"
|
||||||
>
|
>
|
||||||
<el-collapse-item :title="$t('task.statusInfo')" name="3">
|
<el-collapse-item title="状态信息" name="3">
|
||||||
<el-tabs v-model="detailUav.activeTab">
|
<el-tabs v-model="detailUav.activeTab">
|
||||||
<el-tab-pane :label="$t('task.dev')" name="DEV">
|
<el-tab-pane label="DEV" name="DEV">
|
||||||
<div
|
<div
|
||||||
class="uav-span-wrap"
|
class="uav-span-wrap"
|
||||||
v-for="item in detailUav.statusInfo.dev"
|
v-for="item in detailUav.statusInfo.dev"
|
||||||
@ -274,7 +371,7 @@
|
|||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item :title="$t('task.waveInfo')" name="4">
|
<el-collapse-item title="波形信息" name="4">
|
||||||
<div class="wave-chart">
|
<div class="wave-chart">
|
||||||
<dt-multiple-analysis
|
<dt-multiple-analysis
|
||||||
ref="uavDetailChart"
|
ref="uavDetailChart"
|
||||||
@ -340,17 +437,17 @@
|
|||||||
<div class="task-line-detail">
|
<div class="task-line-detail">
|
||||||
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
<el-table :data="taskLineDetail.data" height="100%" style="width: 100%">
|
||||||
<el-table-column type="index" width="50"> </el-table-column>
|
<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="startLon" label="起点经度"> </el-table-column>
|
||||||
<el-table-column prop="startLat" :label="$t('task.startLat')"> </el-table-column>
|
<el-table-column prop="startLat" label="起点纬度"> </el-table-column>
|
||||||
<el-table-column prop="startHeight" :label="$t('task.startHeight')">
|
<el-table-column prop="startHeight" label="起点相对高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="startAlt" :label="$t('task.startAlt')">
|
<el-table-column prop="startAlt" label="起点海拔高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="endLon" :label="$t('task.endLon')"> </el-table-column>
|
<el-table-column prop="endLon" label="终点经度"> </el-table-column>
|
||||||
<el-table-column prop="endLat" :label="$t('task.endLat')"> </el-table-column>
|
<el-table-column prop="endLat" label="终点纬度"> </el-table-column>
|
||||||
<el-table-column prop="endHeight" :label="$t('task.endHeight')">
|
<el-table-column prop="endHeight" label="终点相对高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="endAlt" :label="$t('task.endAlt')">
|
<el-table-column prop="endAlt" label="终点海拔高度">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import * as DT from 'dt-sdk'
|
import * as DT from 'dt-sdk'
|
||||||
import { viewer } from '@/components/dt-scene'
|
import { viewer } from '@/components/dt-scene'
|
||||||
import { gisLabels } from '@/lang/index'
|
|
||||||
export default class UavTarget {
|
export default class UavTarget {
|
||||||
planLines = new DT.Cesium.AssociativeArray()
|
planLines = new DT.Cesium.AssociativeArray()
|
||||||
uavEntity = null
|
uavEntity = null
|
||||||
@ -15,7 +14,7 @@ export default class UavTarget {
|
|||||||
this.uavId = options.uavId
|
this.uavId = options.uavId
|
||||||
this.jobName = options.jobName
|
this.jobName = options.jobName
|
||||||
this.startAltitude = options.startAltitude
|
this.startAltitude = options.startAltitude
|
||||||
this.lang = window.localStorage.getItem('locale') || 'zh_CN'
|
|
||||||
this.addPlanLine(options.airlineList)
|
this.addPlanLine(options.airlineList)
|
||||||
console.log(options, '飞机数据');
|
console.log(options, '飞机数据');
|
||||||
if (options.startLon) {
|
if (options.startLon) {
|
||||||
@ -337,7 +336,7 @@ export default class UavTarget {
|
|||||||
id,
|
id,
|
||||||
position: positions[0],
|
position: positions[0],
|
||||||
label: {
|
label: {
|
||||||
text: `${gisLabels.planAirline[this.lang]}-${index + 1}-${gisLabels.startPoint[this.lang]}`,
|
text: `规划航线${index + 1}起点`,
|
||||||
disableDepthTestDistance: 10000,
|
disableDepthTestDistance: 10000,
|
||||||
font: '14px sans-serif',
|
font: '14px sans-serif',
|
||||||
fillColor: DT.Cesium.Color.RED,
|
fillColor: DT.Cesium.Color.RED,
|
||||||
|
|||||||
@ -553,6 +553,42 @@ export default {
|
|||||||
// window.open(window.config.homeUrl + 'monitor', '_blank')
|
// window.open(window.config.homeUrl + 'monitor', '_blank')
|
||||||
// TODO
|
// TODO
|
||||||
// this.resourceClick(this.resourceList.data[0])
|
// 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() {
|
beforeDestroy() {
|
||||||
if (handler) {
|
if (handler) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user