Compare commits

..

10 Commits

Author SHA1 Message Date
longguancheng
1da7eff80e Merge branch 'main' into dev_20260130_RemoveRedis 2026-03-06 15:43:34 +08:00
wxs
a31693bad3 样式调整 2026-03-06 11:30:58 +08:00
wxs
19848df78e 语言切换时自动请求数据字典 2026-03-06 11:26:04 +08:00
wxs
e19d2da93e remove 无效代码 2026-03-06 10:46:42 +08:00
wxs
825c319d33 处理cesium上已添加的entity 2026-03-06 10:44:38 +08:00
wxs
6babecf7f3 样式调整 2026-03-05 17:52:27 +08:00
wxs
12418c9703 feat:国际化语言对接完成 2026-03-05 17:50:29 +08:00
wxs
46d604dd56 Merge branch 'main' of http://182.92.203.107:3000/libingkun/skyeyesystem into dev-i18n 2026-03-05 17:25:28 +08:00
wxs
e5a62e1ad0 Merge branch 'main' of http://182.92.203.107:3000/libingkun/skyeyesystem into dev-i18n 2026-03-03 18:00:11 +08:00
wxs
3fd281baaf feat:国际化处理提交 2026-03-03 17:59:09 +08:00
23 changed files with 1033 additions and 801 deletions

View File

@ -17,6 +17,8 @@ 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 })
}) })

View File

@ -9,6 +9,7 @@
: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"
@ -63,6 +64,10 @@ export default {
small: { small: {
type: Boolean, type: Boolean,
default: true default: true
},
pagerCount: {
type: Number,
default: 7
} }
}, },
computed: { computed: {

View File

@ -17,13 +17,256 @@ 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',
},
},
} }

View File

@ -2,19 +2,54 @@ 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, 'zh_CN': zh,
en, 'en_US': en,
} }
const locale = localStorage.getItem('locale') || 'zh' const locale = localStorage.getItem('locale') || 'zh_CN'
const i18n = new VueI18n({ const i18n = new VueI18n({
locale, locale,
fallbackLocale: 'zh', fallbackLocale: 'zh_CN',
messages, messages,
}) })

View File

@ -1,4 +1,3 @@
// Chinese translations
export default { export default {
app: { app: {
title: '空域快视系统', title: '空域快视系统',
@ -17,13 +16,254 @@ 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列表',
},
},
} }

View File

@ -4,6 +4,7 @@ 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 },
@ -172,12 +173,28 @@ 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')

View File

@ -260,3 +260,7 @@ $light_gray: #eee;
.el-form-item__button {} .el-form-item__button {}
} }
.split-line {
margin: 0 5px;
}

View File

@ -25,11 +25,15 @@
</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')">中文</a> | <a @click.prevent="changeLocale('en')">EN</a> <a @click.prevent="changeLocale('zh_CN')">中文</a>
</li> --> <span class="split-line">|</span>
<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">{{ $t('header.login') }}</span> <span class="user-login" @click="showLogin">{{
$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">
@ -45,7 +49,9 @@
<!-- <el-dropdown-item command="modifyPassword" <!-- <el-dropdown-item command="modifyPassword"
>修改密码</el-dropdown-item >修改密码</el-dropdown-item
> --> > -->
<el-dropdown-item command="logout">{{ $t('header.logout') }}</el-dropdown-item> <el-dropdown-item command="logout">{{
$t('header.logout')
}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</li> </li>
@ -125,7 +131,8 @@
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>

View File

@ -1,6 +1,4 @@
// 台风列表 // 台风列表
import { mapMutations, mapGetters } from 'vuex'
import { import {
getTaskListData, getTaskListData,
} from '@/api/task' } from '@/api/task'
@ -10,12 +8,10 @@ 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,
@ -37,57 +33,49 @@ 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: {
@ -130,20 +118,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.$message.success(this.$t('device1Manage.radarTurnOnSuccess'))
} }
}) })
} else if (type === 2) { } else if (type === 2) {
const bool = await this.$confirm(`确认要结束所有任务吗?`, '提示', { const bool = await this.$confirm(this.$t('device1Manage.radarEndConfirm'), this.$t('device1Manage.tip'), {
customClass: 'confirm-light', customClass: 'confirm-light',
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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.$message.success(this.$t('device1Manage.radarEndSuccess'))
} }
}) })
} }
@ -153,10 +141,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.$message.error(res.data.msg || this.$t('common.requestFailed'))
} }
}).catch(err => { }).catch(err => {
this.$message.error(err.msg || '请求失败') this.$message.error(err.msg || this.$t('common.requestFailed'))
}) })
}, },
uavPage() { uavPage() {
@ -164,15 +152,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.$message.error(res.data.msg || this.$t('common.requestFailed'))
} }
}).catch(err => { }).catch(err => {
this.$message.error(err.msg || '请求失败') this.$message.error(err.msg || this.$t('common.requestFailed'))
}) })
}, },
addDevice() { addDevice() {
this.device.visible = true this.device.visible = true
this.device.title = `新增${this.deviceMap[this.queryForm.type]}` this.device.title = this.$t(`device1Manage.add`) + this.deviceMap[this.queryForm.type]
if (this.queryForm.type === 'uav') { if (this.queryForm.type === 'uav') {
this.device.form = { this.device.form = {
id: '', id: '',
@ -191,7 +179,7 @@ export default {
}, },
editDevice(row) { editDevice(row) {
this.device.visible = true this.device.visible = true
this.device.title = `编辑${this.deviceMap[this.queryForm.type]}` this.device.title = `${this.$t('common.edit')}${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,
@ -262,28 +250,27 @@ export default {
}, },
async deleteDevice(row) { async deleteDevice(row) {
const bool = await this.$confirm(`确认要永久删除该${this.deviceMap[this.queryForm.type]}吗?`, '提示', { const bool = await this.$confirm(`${this.$t('device1Manage.deleteConfirm')}${this.deviceMap[this.queryForm.type]}?`, this.$t('device1Manage.tip'), {
customClass: 'confirm-light', customClass: 'confirm-light',
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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.$message.success(this.$t('common.deleteSuccess'))
this.uavPage() this.uavPage()
}) })
} else { } else {
payloadRemove([row.id]).then(res => { payloadRemove([row.id]).then(res => {
this.$message.success('删除成功') this.$message.success(this.$t('common.deleteSuccess'))
this.payloadPage() this.payloadPage()
}) })
} }
}, },
//#region 无人机详情代码 //#region 无人机详情代码
resourceClick(info) { resourceClick(info) {
console.log('点击的信息', info)
this.detailInfo.visible = false this.detailInfo.visible = false
// 直接显示详细信息窗口,跳过中间步骤 // 直接显示详细信息窗口,跳过中间步骤
@ -298,7 +285,6 @@ 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) {

View File

@ -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="可用资源" :title="$t('device1Manage.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"
>新增{{ deviceMap[queryForm.type] }}</el-button >{{ $t('device1Manage.add') }}{{ 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="雷达名称"> </el-table-column> <el-table-column prop="name" :label="$t('device1Manage.radarName')"> </el-table-column>
<el-table-column prop="type" label="雷达类型"> </el-table-column> <el-table-column prop="type" :label="$t('device1Manage.radarType')"> </el-table-column>
<el-table-column prop="ip" label="IP"> </el-table-column> <el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
</template> </template>
<template v-else> <template v-else>
<el-table-column prop="name" label="无人机名称"> </el-table-column> <el-table-column prop="name" :label="$t('device1Manage.uavName')"> </el-table-column>
<el-table-column prop="code" label="无人机码"> </el-table-column> <el-table-column prop="code" :label="$t('device1Manage.uavCode')"> </el-table-column>
<el-table-column prop="ip" label="IP"> </el-table-column> <el-table-column prop="ip" :label="$t('device1Manage.ip')"> </el-table-column>
<el-table-column prop="createTime" label="创建时间"> </el-table-column> <el-table-column prop="createTime" :label="$t('device1Manage.createTime')"> </el-table-column>
</template> </template>
<el-table-column label="操作" width="200"> <el-table-column :label="$t('device1Manage.operation')" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip <el-tooltip
class="item" class="item"
effect="light" effect="light"
content="修改" :content="$t('device1Manage.edit')"
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="手动开机" :content="$t('device1Manage.manualPowerOn')"
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="结束所有任务" :content="$t('device1Manage.endAllTasks')"
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="删除" :content="$t('device1Manage.delete')"
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="device.rules" :rules="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="无人机名称" prop="name1"> <el-form-item :label="$t('device1Manage.uavName')" prop="name1">
<el-input <el-input
v-model="device.form.name1" v-model="device.form.name1"
placeholder="请输入无人机名称" :placeholder="$t('device1Manage.uavNamePlaceholder')"
clearable clearable
size="mini" size="mini"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="无人机码" prop="code"> <el-form-item :label="$t('device1Manage.uavCode')" prop="code">
<el-input <el-input
v-model="device.form.code" v-model="device.form.code"
placeholder="请输入无人机码" :placeholder="$t('device1Manage.uavCodePlaceholder')"
clearable clearable
size="mini" size="mini"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="IP" prop="ip1"> <el-form-item :label="$t('device1Manage.ip')" prop="ip1">
<el-input <el-input
v-model="device.form.ip1" v-model="device.form.ip1"
placeholder="请输入无人机IP" :placeholder="$t('device1Manage.ipPlaceholder')"
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="雷达名称" prop="name2"> <el-form-item :label="$t('device1Manage.radarName')" prop="name2">
<el-input <el-input
v-model="device.form.name2" v-model="device.form.name2"
placeholder="请输入雷达名称" :placeholder="$t('device1Manage.radarNamePlaceholder')"
clearable clearable
size="mini" size="mini"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="雷达类型" prop="type"> <el-form-item :label="$t('device1Manage.radarType')" prop="type">
<el-input <el-input
v-model="device.form.type" v-model="device.form.type"
placeholder="请输入雷达类型" :placeholder="$t('device1Manage.radarTypePlaceholder')"
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="请输入雷达IP" :placeholder="$t('device1Manage.ipPlaceholder')"
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"> </el-button> <el-button @click="close" size="mini">{{ $t('common.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="submitDevice" <el-button type="primary" size="mini" @click="submitDevice"
> </el-button >{{ $t('common.confirm') }}</el-button
> >
</div> </div>
</dt-dialog> </dt-dialog>

View File

@ -52,13 +52,20 @@ export default {
id: '', id: '',
loading: false loading: false
}, },
nameRules: { // validation rules moved to computed property
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) {
@ -86,10 +93,10 @@ export default {
arr.push({ arr.push({
id: i, id: i,
checked: false, checked: false,
name: `影像${i + 1}`, name: `${this.$t('picture.pictureName')}${i + 1}`,
url: 'static/img/test.jpg', url: 'static/img/test.jpg',
position: [lon, lat, lon2, lat2], position: [lon, lat, lon2, lat2],
taskName: `任务${i + 1}`, taskName: `${this.$t('picture.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
@ -116,14 +123,15 @@ 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 {
@ -139,9 +147,8 @@ 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.$message.success(this.$t('picture.aiCheckSuccess'))
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) {
@ -154,17 +161,15 @@ export default {
} }
}) })
} else { } else {
this.$message.warning('请勾选要识别的图片') this.$message.warning(this.$t('picture.selectPicture'))
} }
}, },
handleCheck(value, info) { handleCheck(info) {
console.log('check变化', value, info) info.checked = !info.checked
let findIndex = this.checkIds.findIndex(check => check === info.id) let findIndex = this.checkIds.findIndex(check => check === info.id)
console.log(33333, findIndex) if (info.checked) {
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,
@ -319,14 +324,14 @@ export default {
}, },
// 删除任务 // 删除任务
deletePicture(info) { deletePicture(info) {
this.$confirm('确定删除吗', '提示', { this.$confirm(this.$t('picture.deleteConfirm'), this.$t('picture.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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.$message.success(this.$t('picture.deleteSuccess'))
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)
@ -359,7 +364,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.$message.success(this.$t('picture.editSuccess'))
this.editName.visible = false this.editName.visible = false
this.getList(false) this.getList(false)
} else { } else {

View File

@ -45,13 +45,15 @@
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;
display: flex; cursor: pointer;
align-items: center; >p{
line-height: 24px;
color: $--color-text-2;
padding-left: 3px;
}
.pic-center { .pic-center {
flex: 1; flex: 1;
} }
@ -108,6 +110,13 @@
} }
} }
} }
.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 {
@ -139,3 +148,54 @@
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;
}
}
}

View File

@ -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="影像列表" :title="$t('picture.list')"
: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="AI识别" placement="top"> <el-tooltip effect="dark" :content="$t('picture.aiCheck')" 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="上传精处理图片" placement="top"> <el-tooltip effect="dark" :content="$t('picture.uploadPicture')" 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,40 +23,39 @@
<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"
>搜索</el-button >{{ $t('common.search') }}</el-button
> >
</div> </div>
<div class="list-wrap"> <div class="list-wrap">
<div v-for="item in pictureData" :key="item.id" class="pic-item"> <div v-for="item in pictureData" :key="item.id" :class="{'is-checked': item.checked,'pic-item':true}" @click.stop="handleCheck(item)">
<div class="pic-name"> <div class="top-part">
<el-checkbox <div class="top-part__left">
v-model="item.checked" <div class="execute-info">
@change="(value) => handleCheck(value, item)" <span class="task-execute">{{ item.name }}</span>
>{{ item.name }}</el-checkbox </div>
> </div>
</div> <div class="top-part__right">
<div class="pic-center"> <el-tooltip effect="dark" :content="$t('picture.editName')" placement="top">
<div class="pic-task">所属任务{{ item.jobName }}</div> <i
<div class="pic-time">拍摄时间{{ item.createTime }}</div> class="el-icon-edit-outline"
</div> @click.stop="editPictureName(item)"
<div class="pic-command"> ></i>
<el-tooltip effect="dark" content="修改名称" placement="top"> </el-tooltip>
<i <el-tooltip effect="dark" :content="$t('picture.delete')" placement="top">
class="el-icon-edit-outline" <i
@click.stop="editPictureName(item)" class="el-icon-close delete-task"
></i> @click.stop="deletePicture(item)"
</el-tooltip> ></i>
<el-tooltip effect="dark" content="删除" placement="top"> </el-tooltip>
<i </div>
class="el-icon-close delete-task"
@click.stop="deletePicture(item)"
></i>
</el-tooltip>
</div> </div>
<p>{{ $t('picture.task') }}{{ item.jobName }}</p>
<p>{{$t('picture.time')}}{{ item.createTime }}</p>
</div> </div>
</div> </div>
<div class="page-wrap"> <div class="page-wrap">
@ -64,20 +63,22 @@
: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>暂无影像</p> <p>{{ $t('picture.noPicture') }}</p>
</div> </div>
</dt-card> </dt-card>
</left-slide> </left-slide>
<!-- 修改名称--> <!-- 修改名称-->
<dt-dialog <dt-dialog
title="修改影像名称" :title="$t('picture.editNameTitle')"
top="20vh" top="20vh"
width="400px" width="400px"
:visible.sync="editName.visible" :visible.sync="editName.visible"
@ -90,11 +91,11 @@
label-width="100px" label-width="100px"
class="picture-name-form" class="picture-name-form"
> >
<el-form-item prop="name" label="任务名称"> <el-form-item prop="name" :label="$t('picture.taskName')">
<el-input <el-input
v-model="editName.name" v-model="editName.name"
size="small" size="small"
placeholder="请输入图片文件夹路径" :placeholder="$t('picture.taskNamePlaceholder')"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<div class="submit-wrap"> <div class="submit-wrap">
@ -103,7 +104,7 @@
type="primary" type="primary"
:disabled="editName.loading || !editName.name" :disabled="editName.loading || !editName.name"
@click.stop="submitName" @click.stop="submitName"
>确定</el-button >{{ $t('common.confirm') }}</el-button
> >
</div> </div>
</el-form> </el-form>

View File

@ -10,16 +10,7 @@ export default {
data() { data() {
return { return {
visibleLocale: false, visibleLocale: false,
taskData: [ taskData: [], // populated via API
{
id: 1,
name: '任务1',
},
{
id: 2,
name: '任务2',
}
],
uavOptions: [], uavOptions: [],
loading: false, loading: false,
form: { form: {
@ -29,19 +20,24 @@ export default {
dir: '', dir: '',
fileUrlArr: [] fileUrlArr: []
}, },
rules: { // rules computed for i18n
}
},
computed: {
rules() {
return {
dir: [ dir: [
{ required: true, message: '请输入文件夹路径', trigger: 'blur' }, { required: true, message: this.$t('picturesUpload.rules.inputDirPath'), trigger: 'blur' }
], ],
fileUrlArr: [ fileUrlArr: [
{ required: true, message: '请选择图片', trigger: 'change' } { required: true, message: this.$t('picturesUpload.rules.fileUrlArr'), trigger: 'change' }
], ]
} };
} }
}, },
watch: { watch: {
visible: { visible: {
handler: function(nv) { handler: function (nv) {
if (nv) { if (nv) {
this.visibleLocale = nv this.visibleLocale = nv
} }
@ -54,7 +50,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')
} }
@ -73,9 +69,8 @@ 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 {
@ -84,7 +79,6 @@ 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)
@ -99,7 +93,6 @@ 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) {
@ -114,12 +107,10 @@ 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)
@ -130,7 +121,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'
} }
@ -140,7 +131,6 @@ 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,
@ -150,7 +140,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.$message.success(this.$t('picturesUpload.uploadSuccess'))
this.$emit('submit') this.$emit('submit')
this.visibleLocale = false this.visibleLocale = false
} else { } else {

View File

@ -1,6 +1,6 @@
<template> <template>
<dt-dialog <dt-dialog
title="上传精处理图片" :title="$t('picturesUpload.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="关联任务" > <el-form-item :label="$t('picturesUpload.jobName')">
<el-select v-model="form.jobId" filterable placeholder="请选择" @change="handleJobChange"> <el-select v-model="form.jobId" filterable :placeholder="$t('picturesUpload.selectJob')" @change="handleJobChange">
<el-option <el-option
v-for="item in taskData" v-for="item in taskData"
:key="item.id" :key="item.id"
@ -18,10 +18,11 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="无人机"> <el-form-item :label="$t('picturesUpload.uav')">
<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"
@ -31,14 +32,14 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="dir" label="文件夹路径"> <el-form-item prop="dir" :label="$t('picturesUpload.dirPath')">
<el-input <el-input
v-model="form.dir" v-model="form.dir"
size="small" size="small"
placeholder="请输入图片文件夹路径" :placeholder="$t('picturesUpload.inputDirPath')"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="选择图片地址" prop="fileUrlArr"> <el-form-item :label="$t('picturesUpload.fileUrlArr')" 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">
@ -58,7 +59,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">确定</el-button> <el-button size="mini" type="primary" :disabled="loading || form.fileUrlArr.length === 0" @click.stop="submit">{{ $t('picturesUpload.submit') }}</el-button>
</div> </div>
</el-form> </el-form>

View File

@ -372,14 +372,12 @@ export default {
id: '', id: '',
loading: false loading: false
}, },
nameRules: { // nameRules moved to computed for translation
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
},
uavReady: false, uavReady: false,
loaderReady: false, loaderReady: false,
taskLineDetail: { taskLineDetail: {
visible: false, visible: false,
title: '航线详情', title: '', // will be set in watcher or when opened
data: [] data: []
}, },
currentUavInfo: { currentUavInfo: {
@ -388,26 +386,8 @@ export default {
height: undefined height: undefined
}, },
previewLoading: false, previewLoading: false,
focusOptions: [ // focusOptions computed for i18n
{ // motoOptions computed for i18n
label: '否',
value: 0
},
{
label: '是',
value: 1
}
],
motoOptions: [
{
label: '否',
value: 0
},
{
label: '是',
value: 1
}
]
} }
}, },
@ -427,6 +407,23 @@ 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: {
@ -495,6 +492,10 @@ 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) {
@ -1720,7 +1721,7 @@ export default {
}) })
} }
}) })
this.taskLineDetail.title = find.name + '-航线详情' this.taskLineDetail.title = `${find.name}-${this.$t('task.airline.lineDetail')}`
this.taskLineDetail.data = line this.taskLineDetail.data = line
this.taskLineDetail.visible = true this.taskLineDetail.visible = true
} }

View File

@ -75,7 +75,7 @@ export default {
show: false, show: false,
visible: false, visible: false,
form: {}, form: {},
title: '新增任务' title: ''
}, },
form: { form: {
id: '', id: '',
@ -105,46 +105,10 @@ 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: '点',
@ -155,58 +119,7 @@ export default {
value: '多边形' value: '多边形'
} }
], ],
loaderTypeOptions: [ loaderOptions: [],
{
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 方向幅宽
@ -281,22 +194,7 @@ export default {
polarization: '0', //极化方式 polarization: '0', //极化方式
} }
}, },
heightModeOptions: [ uavOptions: [],
{
label: '海拔高度',
value: 1
},
{
label: '相对起飞点高度',
value: 2
},
{
label: '相对地形高度',
value: 3
},
],
uavOptions: [
],
duringAirlinePick: false, duringAirlinePick: false,
calculateMap: [ calculateMap: [
{ {
@ -452,14 +350,11 @@ 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: {
@ -468,36 +363,6 @@ 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
} }
@ -520,6 +385,50 @@ 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: {
@ -549,7 +458,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
@ -562,31 +471,16 @@ 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) {
@ -660,39 +554,16 @@ export default {
// #region 任务启动部分代码迁移 // #region 任务启动部分代码迁移
reRunTask(info) { reRunTask(info) {
if (info.status !== 2) return if (info.status !== 2) return
this.$confirm('确定重新执行吗', '提示', { this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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) {
console.log('重新运行结果', res) this.$message.success(this.$t('task.reFlyTaskSuccess'))
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)
} }
@ -700,9 +571,9 @@ export default {
}) })
}, },
stopTask(info, index) { stopTask(info, index) {
this.$confirm('确定结束任务吗', '提示', { this.$confirm(this.$t('task.stopTaskConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
type: 'warning' type: 'warning'
}).then(res => { }).then(res => {
stopTaskFly({ id: info.id }).then(res => { stopTaskFly({ id: info.id }).then(res => {
@ -710,7 +581,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.$message.success(this.$t('task.stopTaskSuccess'))
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
} }
@ -719,9 +590,9 @@ export default {
}, },
makeTaskUavFly(info, index) { makeTaskUavFly(info, index) {
this.$confirm('确定执行吗', '提示', { this.$confirm(this.$t('task.flyTaskConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
type: 'warning' type: 'warning'
}).then(res => { }).then(res => {
flyTaskUavCommand({ id: info.id }).then(res => { flyTaskUavCommand({ id: info.id }).then(res => {
@ -735,7 +606,7 @@ export default {
// this.toggleTaskSceneShow(child, childIndex) // this.toggleTaskSceneShow(child, childIndex)
// } // }
// }) // })
this.$message.success('起飞成功') this.$message.success(this.$t('task.flyTaskSuccess'))
this.SET_MENUS_CHOSE('1') this.SET_MENUS_CHOSE('1')
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
@ -885,11 +756,8 @@ 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 {
@ -915,7 +783,6 @@ 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,
@ -961,23 +828,21 @@ 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.$message.success(this.$t('task.refreshUavHeightSuccess'))
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
} }
}) })
} else { } else {
this.$message.warning('请选择雷达!') this.$message.warning(this.$t('task.selectLoader'))
} }
} else { } else {
this.$message.warning('请选择无人机!') this.$message.warning(this.$t('task.selectUav'))
} }
}, },
getList() { getList() {
@ -1019,7 +884,6 @@ 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)
@ -1043,7 +907,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.$message.success(this.$t('common.editSuccess'))
this.editName.visible = false this.editName.visible = false
this.getList() this.getList()
} else { } else {
@ -1057,14 +921,14 @@ export default {
}, },
// 删除任务 // 删除任务
deleteTask(info) { deleteTask(info) {
this.$confirm('确定删除吗', '提示', { this.$confirm(this.$t('task.deleteConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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.$message.success(this.$t('common.deleteSuccess'))
this.getList() this.getList()
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
@ -1078,14 +942,14 @@ export default {
* @param info * @param info
*/ */
reRunTask(info) { reRunTask(info) {
this.$confirm('确定重新执行吗', '提示', { this.$confirm(this.$t('task.reFlyTaskConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
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.$message.success(this.$t('task.reFlyTaskSuccess'))
this.getList() this.getList()
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
@ -1099,7 +963,6 @@ export default {
* @param info * @param info
*/ */
editTask(info) { editTask(info) {
console.log('复制信息', info)
// 移除所有线 // 移除所有线
this.removeAllAirline() this.removeAllAirline()
// 移除预览 // 移除预览
@ -1214,7 +1077,6 @@ export default {
theViewerTools = new AreaPlotManager(viewer) theViewerTools = new AreaPlotManager(viewer)
theViewerTools.initPlot(this.theCallback) theViewerTools.initPlot(this.theCallback)
console.log('船舰了吗', theViewerTools)
}, },
@ -1268,8 +1130,6 @@ 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))
@ -1377,12 +1237,10 @@ 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.$message.success(this.$t('task.addTaskSuccess'))
this.taskForm.visible = false this.taskForm.visible = false
this.getList() this.getList()
} else { } else {
@ -1392,7 +1250,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.$message.success(this.$t('task.addTaskSuccess'))
this.taskForm.visible = false this.taskForm.visible = false
this.resetForm() this.resetForm()
this.getList() this.getList()
@ -1412,11 +1270,6 @@ 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)
}) })
@ -1476,7 +1329,6 @@ export default {
*/ */
targetTypeChange(val) { targetTypeChange(val) {
this.endDraw() this.endDraw()
switch (val) { switch (val) {
case '区域选择': case '区域选择':
break break
@ -1600,13 +1452,13 @@ export default {
startAirlineDraw() { startAirlineDraw() {
if (this.readOnly) return if (this.readOnly) return
if (this.duringAirlinePick) { if (this.duringAirlinePick) {
this.$message.info('已经处于绘制模式!') this.$message.info(this.$t('task.duringAirlinePick'))
return return
} }
if (this.form.routepoints.length > 0) { if (this.form.routepoints.length > 0) {
this.$confirm('绘制会清除历史数据,是否继续?', '提示', { this.$confirm(this.$t('task.clearAirlineConfirm'), this.$t('task.tip'), {
confirmButtonText: '确定', confirmButtonText: this.$t('common.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('common.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.form.routepoints = [] this.form.routepoints = []
@ -1670,7 +1522,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.$message.warning(this.$t('task.airlineMinPoint'))
return return
} }
let position = DT.Cesium.Cartesian3.fromDegrees(info.longitude, info.latitude) let position = DT.Cesium.Cartesian3.fromDegrees(info.longitude, info.latitude)
@ -1719,7 +1571,7 @@ export default {
result.forEach((item, index) => { result.forEach((item, index) => {
if (index < length - 1) { if (index < length - 1) {
lineData.push({ lineData.push({
name: '点' + (index + 1), name: this.$t('task.point') + (index + 1),
lon: item[0].toFixed(4), lon: item[0].toFixed(4),
lat: item[1].toFixed(4) lat: item[1].toFixed(4)
}) })
@ -1831,7 +1683,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.form.targetChoose = this.$t('task.point')
} }
} else { } else {
this.form.mode = '1' this.form.mode = '1'
@ -1932,7 +1784,7 @@ export default {
} }
this.$message({ this.$message({
type: 'success', type: 'success',
message: '在场景中点击鼠标左键创建航线', message: this.$t('task.createAirlineTip'),
duration: 4000, duration: 4000,
}) })
this.airlineCreateInfo.during = true this.airlineCreateInfo.during = true
@ -2085,7 +1937,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.$message.success(this.$t('task.getAirlineSuccess'))
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
} }
@ -2220,7 +2072,7 @@ export default {
}) })
} }
}) })
this.taskLineDetail.title = find.name + '-航线详情' this.taskLineDetail.title = find.name + '-' + this.$t('task.airline.lineDetail')
this.taskLineDetail.data = line this.taskLineDetail.data = line
this.taskLineDetail.visible = true this.taskLineDetail.visible = true
} }

View File

@ -7,7 +7,8 @@
'task-list__large': isIconModeLarge, 'task-list__large': isIconModeLarge,
}" }"
icon="ri-list-unordered" icon="ri-list-unordered"
title="任务列表" :title="this.$t('task.taskList')"
:visible.sync="taskList.visible" :visible.sync="taskList.visible"
:scroll="false" :scroll="false"
:showClose="false" :showClose="false"
@ -16,13 +17,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="新增任务" :content="$t('task.addTask')"
placement="top" placement="top"
:hide-after="1000" :hide-after="1000"
> >
@ -51,7 +52,7 @@
<div class="top-part__right"> <div class="top-part__right">
<el-tooltip <el-tooltip
effect="dark" effect="dark"
:content="item.check ? '隐藏' : '显示'" :content="item.check ? $t('task.hide') : $t('task.show')"
placement="top" placement="top"
:hide-after="1000" :hide-after="1000"
> >
@ -63,7 +64,7 @@
<el-tooltip <el-tooltip
v-if="item.status === 0" v-if="item.status === 0"
effect="dark" effect="dark"
content="执行" :content="$t('task.execute')"
placement="top" placement="top"
:hide-after="1000" :hide-after="1000"
> >
@ -74,7 +75,7 @@
</el-tooltip> </el-tooltip>
<el-tooltip <el-tooltip
effect="dark" effect="dark"
content="重新执行" :content="$t('task.reExecute')"
placement="top" placement="top"
v-if="item.status === 2" v-if="item.status === 2"
:hide-after="1000" :hide-after="1000"
@ -93,16 +94,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">修改名称</el-dropdown-item> <el-dropdown-item command="edit">{{ $t('task.editName') }}</el-dropdown-item>
<el-dropdown-item command="copy">复制</el-dropdown-item> <el-dropdown-item command="copy">{{ $t('task.copy') }}</el-dropdown-item>
<el-dropdown-item command="remove">删除</el-dropdown-item> <el-dropdown-item command="remove">{{ $t('task.delete') }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
<p>无人机名称: {{ item.uav }}</p> <p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
<p>雷达名称: {{ item.sar }}</p> <p>{{ $t('task.radarName') }}: {{ item.sar }}</p>
<p>开始时间{{ item.beginTime }}</p> <p>{{ $t('task.startTime') }}{{ item.beginTime }}</p>
<div <div
class="task-info" class="task-info"
:style="{ color: dealStatusColor(item.statusName) }" :style="{ color: dealStatusColor(item.statusName) }"
@ -113,7 +114,7 @@
</div> </div>
<div v-else class="task-empty"> <div v-else class="task-empty">
<img :src="emptyImg" alt="" /> <img :src="emptyImg" alt="" />
<p>暂无任务</p> <p>{{ $t('task.noTask') }}</p>
</div> </div>
</dt-card> </dt-card>
<dt-card <dt-card
@ -135,14 +136,14 @@
label-position="left" label-position="left"
label-width="auto" label-width="auto"
> >
<el-form-item prop="name" label="任务名称"> <el-form-item prop="name" :label="$t('task.taskName')">
<el-input <el-input
v-model="form.name" v-model="form.name"
size="small" size="small"
placeholder="请输入任务名称" :placeholder="$t('task.inputTaskName')"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="uav" label="无人机"> <el-form-item prop="uav" :label="$t('task.uav')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -156,12 +157,13 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="loader" label="载荷"> <el-form-item prop="loader" :label="$t('task.loader')">
<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"
@ -171,7 +173,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="mode" label="飞行模式"> <el-form-item prop="mode" :label="$t('task.flyMode')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -188,7 +190,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label="任务目标" :label="$t('task.taskTarget')"
v-if="form.mode === '1'" v-if="form.mode === '1'"
style="margin-bottom: 0" style="margin-bottom: 0"
> >
@ -198,6 +200,7 @@
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"
@ -212,7 +215,7 @@
type="primary" type="primary"
@click="drawFromButton" @click="drawFromButton"
:disabled="duringDraw || duringPick || !form.targetChoose" :disabled="duringDraw || duringPick || !form.targetChoose"
>绘制</el-button >{{ $t('task.draw') }}</el-button
> >
</div> </div>
</el-form-item> </el-form-item>
@ -230,9 +233,9 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="航线" v-if="form.mode === '3'"> <el-form-item :label="$t('task.airline')" v-if="form.mode === '3'">
<div class="airline-wrap"> <div class="airline-wrap">
<div class="airline-create" @click="createAirline">创建航线</div> <div class="airline-create" @click="createAirline">{{ $t('task.createAirline') }}</div>
<div class="airline-list"> <div class="airline-list">
<div <div
class="airline-item" class="airline-item"
@ -263,55 +266,7 @@
</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"
@ -322,7 +277,7 @@
type="primary" type="primary"
:disabled="!form.loader || !form.uav" :disabled="!form.loader || !form.uav"
@click.stop="refreshUavHeight()" @click.stop="refreshUavHeight()"
>更新</el-button >{{ $t('task.update') }}</el-button
> >
<!-- <el-tooltip--> <!-- <el-tooltip-->
<!-- effect="dark"--> <!-- effect="dark"-->
@ -333,7 +288,7 @@
<!-- </el-tooltip>--> <!-- </el-tooltip>-->
</div> </div>
</el-form-item> </el-form-item>
<el-form-item prop="imageLight" label="图片亮度"> <el-form-item prop="imageLight" :label="$t('task.imageLight')">
<el-input-number <el-input-number
v-model="form.imageLight" v-model="form.imageLight"
controls-position="right" controls-position="right"
@ -341,7 +296,7 @@
:max="100" :max="100"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
<el-form-item prop="ratio" label="分辨率"> <el-form-item prop="ratio" :label="$t('task.resolution')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -357,7 +312,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="成像模式" prop="imageMode"> <el-form-item :label="$t('task.imageMode')" prop="imageMode">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -374,7 +329,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> 更多设置 <i class="ri-settings-line"></i> {{ $t('task.moreSetting') }}
</div> </div>
<i <i
@click="settingExpand = !settingExpand" @click="settingExpand = !settingExpand"
@ -385,21 +340,7 @@
></i> ></i>
</div> </div>
<template v-if="settingExpand"> <template v-if="settingExpand">
<!-- <el-form-item prop="heightMode" label="航线高度模式">--> <el-form-item prop="initSpeed" :label="$t('task.flySpeed')">
<!-- <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"-->
@ -414,7 +355,7 @@
:max="20" :max="20"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="自动聚焦"> <el-form-item :label="$t('task.autoFocus')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -428,7 +369,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运动补偿"> <el-form-item :label="$t('task.moto')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -445,7 +386,7 @@
<el-form-item <el-form-item
v-if="form.mode !== '2'" v-if="form.mode !== '2'"
prop="headingDiff" prop="headingDiff"
label="雷达朝向" :label="$t('task.radarHeading')"
> >
<el-input-number <el-input-number
v-model="form.headingDiff" v-model="form.headingDiff"
@ -454,7 +395,7 @@
:max="180" :max="180"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="图像位数"> <el-form-item :label="$t('task.imageBit')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -464,7 +405,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="侧视方向" v-if="form.mode !== '3'"> <el-form-item :label="$t('task.sideViewDirection')" v-if="form.mode !== '3'">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -479,7 +420,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="极化方式"> <el-form-item :label="$t('task.polarization')">
<el-select <el-select
popper-class="form-light" popper-class="form-light"
size="small" size="small"
@ -493,7 +434,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="flyHeight" label="飞行高度"> <el-form-item prop="flyHeight" :label="$t('task.flyHeight')">
<el-slider <el-slider
v-model="form.flyHeight" v-model="form.flyHeight"
show-input show-input
@ -503,7 +444,7 @@
size="mini" size="mini"
></el-slider> ></el-slider>
</el-form-item> </el-form-item>
<el-form-item label="下视角"> <el-form-item :label="$t('task.downViewAngle')">
<el-slider <el-slider
v-model="form.theta" v-model="form.theta"
:step="0.1" :step="0.1"
@ -514,7 +455,7 @@
size="mini" size="mini"
></el-slider> ></el-slider>
</el-form-item> </el-form-item>
<el-form-item v-if="form.mode !== '2'" label="波束半角"> <el-form-item v-if="form.mode !== '2'" :label="$t('task.waveAngle')">
<el-slider <el-slider
v-model="form.waveAngle" v-model="form.waveAngle"
:step="0.1" :step="0.1"
@ -525,13 +466,13 @@
size="mini" size="mini"
></el-slider> ></el-slider>
</el-form-item> </el-form-item>
<el-form-item label="y向幅宽"> <el-form-item :label="$t('task.y_width')">
<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="请输入y向幅宽" :placeholder="$t('task.y_width_placeholder')"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="返航点设置">--> <!-- <el-form-item label="返航点设置">-->
@ -549,15 +490,15 @@
:disabled="previewLoading" :disabled="previewLoading"
v-if="form.mode === '1'" v-if="form.mode === '1'"
@click="previewLine" @click="previewLine"
>预览</el-button >{{ $t('common.preview') }}</el-button
> >
<el-button size="mini" type="primary" @click="submit">保存</el-button> <el-button size="mini" type="primary" @click="submit">{{ $t('common.save') }}</el-button>
</div> </div>
</dt-card> </dt-card>
</left-slide> </left-slide>
<dt-dialog <dt-dialog
title="修改任务名称" :title="$t('task.editTaskName')"
top="20vh" top="20vh"
width="400px" width="400px"
:visible.sync="editName.visible" :visible.sync="editName.visible"
@ -570,11 +511,11 @@
label-width="100px" label-width="100px"
class="task-name-form" class="task-name-form"
> >
<el-form-item prop="name" label="任务名称"> <el-form-item prop="name" :label="$t('task.taskName')">
<el-input <el-input
v-model="editName.name" v-model="editName.name"
size="small" size="small"
placeholder="请输入图片文件夹路径" :placeholder="$t('task.taskNamePlaceholder')"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<div class="submit-wrap"> <div class="submit-wrap">
@ -583,7 +524,7 @@
type="primary" type="primary"
:disabled="editName.loading || !editName.name" :disabled="editName.loading || !editName.name"
@click.stop="submitName" @click.stop="submitName"
>确定</el-button >{{ $t('common.confirm') }}</el-button
> >
</div> </div>
</el-form> </el-form>
@ -599,17 +540,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="起点经度"> </el-table-column> <el-table-column prop="startLon" :label="$t('task.airline.startLon')"> </el-table-column>
<el-table-column prop="startLat" label="起点纬度"> </el-table-column> <el-table-column prop="startLat" :label="$t('task.airline.startLat')"> </el-table-column>
<el-table-column prop="startHeight" label="起点相对高度"> <el-table-column prop="startHeight" :label="$t('task.airline.startHeight')">
</el-table-column> </el-table-column>
<el-table-column prop="startAlt" label="起点海拔高度"> <el-table-column prop="startAlt" :label="$t('task.airline.startAlt')">
</el-table-column> </el-table-column>
<el-table-column prop="endLon" label="终点经度"> </el-table-column> <el-table-column prop="endLon" :label="$t('task.airline.endLon')"> </el-table-column>
<el-table-column prop="endLat" label="终点纬度"> </el-table-column> <el-table-column prop="endLat" :label="$t('task.airline.endLat')"> </el-table-column>
<el-table-column prop="endHeight" label="终点相对高度"> <el-table-column prop="endHeight" :label="$t('task.airline.endHeight')">
</el-table-column> </el-table-column>
<el-table-column prop="endAlt" label="终点海拔高度"> <el-table-column prop="endAlt" :label="$t('task.airline.endAlt')">
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>

View File

@ -33,6 +33,7 @@ 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
@ -57,6 +58,7 @@ 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: {
@ -245,40 +247,9 @@ export default {
}, },
], ],
statusInfo: { statusInfo: {
dev: [ dev: [],
// { name: '是否开机', value: '是', unit: '' }, gps: [],
{ name: '时钟锁定', value: '是', unit: '' }, imu: [],
// { 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,
@ -1195,8 +1166,9 @@ 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}任务-规划区域${index + 1}`, text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
disableDepthTestDistance: 10000, disableDepthTestDistance: 10000,
font: '14px sans-serif', font: '14px sans-serif',
fillColor: DT.Cesium.Color.RED, fillColor: DT.Cesium.Color.RED,
@ -1224,8 +1196,9 @@ 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}任务-规划区域${index + 1}`, text: `${taskName}-${gisLabels.planArea[lang]}-${index + 1}`,
disableDepthTestDistance: 10000, disableDepthTestDistance: 10000,
font: '14px sans-serif', font: '14px sans-serif',
fillColor: DT.Cesium.Color.RED, fillColor: DT.Cesium.Color.RED,
@ -2752,37 +2725,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: '时钟锁定', value: this.successStatus[data.clockLock], unit: '' }, { name: this.$t('task.fly.clockLock'), value: this.successStatus[data.clockLock], unit: '' },
// { name: 'GPU温度', value: '正常', unit: '' }, // { name: 'GPU温度', value: '正常', unit: '' },
{ name: 'CPU温度', value: data.cpuC, unit: '℃' }, { name: this.$t('task.fly.cpuTemp'), value: data.cpuC, unit: '℃' },
{ name: '射频温度', value: data.rfC, unit: '℃' }, { name: this.$t('task.fly.rfTemp'), value: data.rfC, unit: '℃' },
{ name: '天线温度', value: data.antC, unit: '℃' }, { name: this.$t('task.fly.antennaTemp'), value: data.antC, unit: '℃' },
{ name: '硬盘温度', value: data.diskC, unit: '℃' }, { name: this.$t('task.fly.diskTemp'), value: data.diskC, unit: '℃' },
{ name: 'FPGA温度', value: data.fpgaC, unit: '℃' }, { name: this.$t('task.fly.fpgaTemp'), value: data.fpgaC, unit: '℃' },
{ name: '硬盘容量', value: data.diskUtilization, unit: '%' }, { name: this.$t('task.fly.diskCapacity'), value: data.diskUtilization, unit: '%' },
{ name: '内存容量', value: data.memoryCapacity, unit: 'MB' }, { name: this.$t('task.fly.memoryCapacity'), 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: 'rtk状态', value: data.rtkStatusLabel, unit: '' }, { name: this.$t('task.fly.rtkStatus'), value: data.rtkStatusLabel, unit: '' },
{ name: '卫星个数', value: data.satelliteNum, unit: '' }, { name: this.$t('task.fly.satelliteNum'), value: data.satelliteNum, unit: '' },
{ name: '惯导状态', value: this.imuStatus[data.imuStatus], unit: '' }, { name: this.$t('task.fly.imuStatus'), value: this.imuStatus[data.imuStatus], unit: '' },
{ name: '年月日', value: data.date, unit: '' }, { name: this.$t('task.fly.date'), value: data.date, unit: '' },
{ name: '经度', value: data.longitude, unit: '°' }, { name: this.$t('task.fly.longitude'), value: data.longitude, unit: '°' },
{ name: '纬度', value: data.latitude, unit: '°' }, { name: this.$t('task.fly.latitude'), value: data.latitude, unit: '°' },
{ name: '高度', value: data.altitude, unit: 'm' }, { name: this.$t('task.fly.height'), value: data.altitude, unit: 'm' },
] ]
this.detailUav.statusInfo.imu = [ this.detailUav.statusInfo.imu = [
{ name: '配置状态', value: '正常', unit: '' }, { name: this.$t('task.fly.configStatus'), value: '正常', unit: '' },
{ name: '天线方位角', value: data.antennaAzimuth, unit: '°' }, { name: this.$t('task.fly.antennaAzimuth'), value: data.antennaAzimuth, unit: '°' },
{ name: '天线俯仰角', value: data.antennaPitch, unit: '°' }, { name: this.$t('task.fly.antennaPitch'), value: data.antennaPitch, unit: '°' },
{ name: '东向速度', value: data.eastVelocity, unit: 'm/s' }, { name: this.$t('task.fly.eastwardSpeed'), value: data.eastVelocity, unit: 'm/s' },
{ name: '北向速度', value: data.northVelocity, unit: 'm/s' }, { name: this.$t('task.fly.northwardSpeed'), value: data.northVelocity, unit: 'm/s' },
{ name: '天向速度', value: data.skyVelocity, unit: 'm/s' }, { name: this.$t('task.fly.upwardSpeed'), value: data.skyVelocity, unit: 'm/s' },
{ name: '俯仰角', value: data.anglePitch, unit: '°' }, { name: this.$t('task.fly.pitchAngle'), value: data.anglePitch, unit: '°' },
{ name: '翻转角', value: data.angleRoll, unit: '°' }, { name: this.$t('task.fly.rollAngle'), value: data.angleRoll, unit: '°' },
{ name: '偏航角', value: data.angleYaw, unit: '°' }, { name: this.$t('task.fly.yawAngle'), value: data.angleYaw, unit: '°' },
] ]
// 更新场景中数据 // 更新场景中数据
// this.updateSceneUav(data) // this.updateSceneUav(data)

View File

@ -1327,7 +1327,7 @@
position: absolute; position: absolute;
left: 50%; left: 50%;
top: calc(100vh - 60px); top: calc(100vh - 60px);
width: 360px; width: 400px;
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,9 +1347,10 @@
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: 60px; width: 90px;
} }
} }
} }

View File

@ -1,46 +1,5 @@
<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="{
@ -55,18 +14,9 @@
<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
@ -93,7 +43,7 @@
<div class="top-part__right"> <div class="top-part__right">
<el-tooltip <el-tooltip
effect="dark" effect="dark"
:content="item.check ? '隐藏' : '显示'" :content="item.check ? $t('task.hide') : $t('task.show')"
placement="top" placement="top"
:hide-after="1000" :hide-after="1000"
> >
@ -104,7 +54,7 @@
</el-tooltip> </el-tooltip>
<el-tooltip <el-tooltip
effect="dark" effect="dark"
content="结束任务" :content="$t('task.endTask')"
placement="top" placement="top"
:hide-after="1000" :hide-after="1000"
v-if="item.status === 1" v-if="item.status === 1"
@ -116,20 +66,14 @@
</el-tooltip> </el-tooltip>
</div> </div>
</div> </div>
<p>无人机名称: {{ item.uav }}</p> <p>{{ $t('task.uavName') }}: {{ item.uav }}</p>
<p>雷达名称: {{ item.sar }}</p> <p>{{ $t('task.radarName') }} : {{ item.sar }}</p>
<p>开始时间{{ item.beginTime }}</p> <p>{{ $t('task.beginTime') }}{{ 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>暂无执行中的任务</p> <p>{{ $t('task.noExecutingTasks') }}</p>
</div> </div>
</div> </div>
</dt-card> </dt-card>
@ -143,7 +87,7 @@
" "
> >
<div class="image-set__item"> <div class="image-set__item">
<div class="is-label">亮度</div> <div class="is-label">{{ $t('task.brightness') }}</div>
<el-slider <el-slider
v-model="imageInfos.brightness" v-model="imageInfos.brightness"
show-input show-input
@ -184,7 +128,7 @@
'weather-info__large': isIconModeLarge, 'weather-info__large': isIconModeLarge,
}" }"
icon="iconfont icon-target" icon="iconfont icon-target"
title="气象预警" :title="$t('task.weatherWarning')"
:visible.sync="rightShow" :visible.sync="rightShow"
:scroll="false" :scroll="false"
:showClose="false" :showClose="false"
@ -193,19 +137,19 @@
<div class="weather-info__content2"> <div class="weather-info__content2">
<div class="base-info"> <div class="base-info">
<div> <div>
<span>温度</span><span>{{ weatherInfo2.wendu }}</span> <span>{{ $t('task.temperature') }}</span><span>{{ weatherInfo2.wendu }}</span>
</div> </div>
<div> <div>
<span>湿度</span><span>{{ weatherInfo2.shidu }}</span> <span>{{ $t('task.humidity') }}</span><span>{{ weatherInfo2.shidu }}</span>
</div> </div>
<div> <div>
<span>空气质量</span><span>{{ weatherInfo2.quality }}</span> <span>{{ $t('task.airQuality') }}</span><span>{{ weatherInfo2.quality }}</span>
</div> </div>
<div> <div>
<span>pm25</span><span>{{ weatherInfo2.pm25 }}</span> <span>{{ $t('task.pm25') }}</span><span>{{ weatherInfo2.pm25 }}</span>
</div> </div>
<div> <div>
<span>pm10</span><span>{{ weatherInfo2.pm10 }}</span> <span>{{ $t('task.pm10') }}</span><span>{{ weatherInfo2.pm10 }}</span>
</div> </div>
</div> </div>
<div class="week-info"> <div class="week-info">
@ -224,50 +168,9 @@
<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
@ -276,7 +179,7 @@
'detail-info__large': isIconModeLarge, 'detail-info__large': isIconModeLarge,
}" }"
icon="iconfont icon-target" icon="iconfont icon-target"
title="详细信息" :title="$t('task.detailInfo')"
v-if="detailInfo.visible" v-if="detailInfo.visible"
:visible.sync="detailInfo.visible" :visible.sync="detailInfo.visible"
:scroll="false" :scroll="false"
@ -324,7 +227,7 @@
'detail-uav__large': isIconModeLarge, 'detail-uav__large': isIconModeLarge,
}" }"
icon="iconfont icon-target" icon="iconfont icon-target"
title="详细信息" :title="$t('task.detailInfo')"
v-if="detailUav.visible" v-if="detailUav.visible"
:visible.sync="detailUav.visible" :visible.sync="detailUav.visible"
:scroll="true" :scroll="true"
@ -337,9 +240,9 @@
v-model="detailUav.activeNames" v-model="detailUav.activeNames"
@change="handleUavDetailCollapse" @change="handleUavDetailCollapse"
> >
<el-collapse-item title="状态信息" name="3"> <el-collapse-item :title="$t('task.statusInfo')" name="3">
<el-tabs v-model="detailUav.activeTab"> <el-tabs v-model="detailUav.activeTab">
<el-tab-pane label="DEV" name="DEV"> <el-tab-pane :label="$t('task.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"
@ -371,7 +274,7 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="波形信息" name="4"> <el-collapse-item :title="$t('task.waveInfo')" name="4">
<div class="wave-chart"> <div class="wave-chart">
<dt-multiple-analysis <dt-multiple-analysis
ref="uavDetailChart" ref="uavDetailChart"
@ -437,17 +340,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="起点经度"> </el-table-column> <el-table-column prop="startLon" :label="$t('task.startLon')"> </el-table-column>
<el-table-column prop="startLat" label="起点纬度"> </el-table-column> <el-table-column prop="startLat" :label="$t('task.startLat')"> </el-table-column>
<el-table-column prop="startHeight" label="起点相对高度"> <el-table-column prop="startHeight" :label="$t('task.startHeight')">
</el-table-column> </el-table-column>
<el-table-column prop="startAlt" label="起点海拔高度"> <el-table-column prop="startAlt" :label="$t('task.startAlt')">
</el-table-column> </el-table-column>
<el-table-column prop="endLon" label="终点经度"> </el-table-column> <el-table-column prop="endLon" :label="$t('task.endLon')"> </el-table-column>
<el-table-column prop="endLat" label="终点纬度"> </el-table-column> <el-table-column prop="endLat" :label="$t('task.endLat')"> </el-table-column>
<el-table-column prop="endHeight" label="终点相对高度"> <el-table-column prop="endHeight" :label="$t('task.endHeight')">
</el-table-column> </el-table-column>
<el-table-column prop="endAlt" label="终点海拔高度"> <el-table-column prop="endAlt" :label="$t('task.endAlt')">
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>

View File

@ -1,5 +1,6 @@
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
@ -14,7 +15,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) {
@ -336,7 +337,7 @@ export default class UavTarget {
id, id,
position: positions[0], position: positions[0],
label: { label: {
text: `规划航线${index + 1}起点`, text: `${gisLabels.planAirline[this.lang]}-${index + 1}-${gisLabels.startPoint[this.lang]}`,
disableDepthTestDistance: 10000, disableDepthTestDistance: 10000,
font: '14px sans-serif', font: '14px sans-serif',
fillColor: DT.Cesium.Color.RED, fillColor: DT.Cesium.Color.RED,

View File

@ -553,42 +553,6 @@ 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) {