Compare commits

...

15 Commits

Author SHA1 Message Date
longguancheng
75aeed56be Merge branch 'refs/heads/main' into dev_20260130_RemoveRedis 2026-02-05 11:44:43 +08:00
longguancheng
7892e6c660 Merge remote-tracking branch 'origin/main' 2026-02-05 11:12:50 +08:00
longguancheng
9b3b735cdd Add fronted resource 2026-02-05 11:11:31 +08:00
Bingkun Li
fe2cc3b8de Add manually turn on sar mode 2026-02-05 11:07:40 +08:00
wxs
50a860fdf7 修复图片显示问题 2026-02-05 10:57:04 +08:00
wxs
4ded7b26c9 禁用多余的loading插件 2026-02-04 16:23:34 +08:00
wxs
1758accfbe 任务列表添加hover样式 2026-02-04 14:34:16 +08:00
wxs
c0cea6e5c9 增加任务选中效果 2026-02-04 14:32:01 +08:00
wxs
05a9aae280 修改任务切换波形展示不对的问题 2026-02-04 14:14:47 +08:00
wxs
e3c806ea3c 去掉console限制 2026-02-04 14:01:15 +08:00
wxs
eb89c8216d update 2026-02-04 13:28:43 +08:00
wxs
4371a95c0d update 2026-02-04 13:24:29 +08:00
wxs
b92a26dac1 update 2026-02-04 13:15:14 +08:00
8e55124158 wave2: fix opencv dll load fail from library directory 2026-02-04 11:49:37 +08:00
wxs
e3fdca4ac2 线上环境也开启console打印 2026-02-04 11:32:12 +08:00
33 changed files with 843205 additions and 154 deletions

View File

@ -33,7 +33,7 @@ public class SEApplication {
System.setProperty("jna.library.path", combinedPath);
// 如果 OpenCV 使用的是标准 JNI (System.loadLibrary)可能还需要设置 java.library.path
System.setProperty("java.library.path", opencvPath);
System.setProperty("opencv.library.path", opencvPath);
SpringApplication.run(SEApplication.class, args);
}
}

View File

@ -12,7 +12,7 @@ import lombok.Getter;
public enum JmJobModeEnum implements CodeEnum<Integer> {
QUICK(1, "快速模式"),
CRUISE(2, "巡航模式"),
CREATE(3, "航线创建")
;

View File

@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.io.File;
import java.net.ConnectException;
import java.util.stream.Collectors;
@ -118,7 +119,22 @@ public class JmImageController {
}
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//加载 OpenCV (强制使用绝对路径加载解决 UnsatisfiedLinkError)
String openCvDll = System.getProperty("opencv.library.path") + File.separator + Core.NATIVE_LIBRARY_NAME + ".dll";
try {
File dllFile = new File(openCvDll);
if (dllFile.exists()) {
// 注意必须使用 System.load() 加载绝对路径
System.load(dllFile.getAbsolutePath());
System.out.println("SUCCESS: OpenCV loaded from -> " + dllFile.getAbsolutePath());
} else {
System.err.println("ERROR: OpenCV DLL not found at -> " + openCvDll);
}
} catch (Throwable e) {
System.err.println("CRITICAL: Failed to load OpenCV: " + e.getMessage());
e.printStackTrace();
}
}
/*@IgnoreAuth

View File

@ -60,7 +60,7 @@ public class JmUavStatusDTO {
private String sarIp;
/** sar 图片亮度 */
private Integer sarImageLight;
private volatile Integer sarImageLight;
/**
* 获取sar当前状态

View File

@ -19,6 +19,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.Optional;
import static com.zhangy.skyeye.jm.consts.JmJobModeEnum.CRUISE;
/**
* 控制指令
*/
@ -54,7 +56,11 @@ public class SarControlServiceImpl implements ISarControlService {
param.setMoto(sar.getMoto());
param.setImageBit(sar.getImageBit());
param.setResolution(sar.getResolution());
if (job.getMode().equals(CRUISE.getCode())) {
param.setControlType(SarControlTypeEnum.TURNON);
} else {
param.setControlType(SarControlTypeEnum.AUTO);
}
double startAltitude = uav.getStartAltitude();
// 高度加上起始高度
Optional.ofNullable(param.getAirlineList())

View File

@ -1,11 +1,11 @@
const prodPlugins = []
if (process.env.NODE_ENV === 'production') {
prodPlugins.push('transform-remove-console')
// prodPlugins.push('transform-remove-console')
}
module.exports = {
presets: [[
"@babel/preset-env",
{ targets: "> 1% in AU and not dead", shippedProposals: true },
],'@vue/cli-plugin-babel/preset'],
plugins:[...prodPlugins]
], '@vue/cli-plugin-babel/preset'],
plugins: [...prodPlugins]
}

View File

@ -19,6 +19,7 @@
"dependencies": {
"@turf/turf": "^7.1.0",
"axios": "^0.21.1",
"babel-plugin-transform-remove-console": "^6.9.4",
"core-js": "^3.6.4",
"element-ui": "^2.15.6",
"js-cookie": "^2.2.1",

View File

@ -0,0 +1,10 @@
<meta charset="utf-8">
<title>dt-chart demo</title>
<script src="./dt-chart.umd.js"></script>
<link rel="stylesheet" href="./dt-chart.css">
<script>
console.log(dt-chart)
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"file":"dt-chart.umd.min.js","sources":["webpack://dt-chart/dt-chart.umd.min.js"],"mappings":"AAAA;AA+HA;AAAA;AAqEA;AAAA;AA+HA;AAAA;AA0FA;AAAA;AAsNA;AAAA;AAuEA;AAAA;AAiLA;AAAA;AA0HA;AAAA;AAkGA;AAAA;AA4NA;AAAA;AAyFA;AAAA;AAqFA;AAAA;AAyHA;AAAA;AAqEA;AAAA;AAyEA;AAAA;AAiGA;AAAA;AAqQA;AAAA;AAoMA;AAAA;AA8IA;AAAA;AA8HA;AAAA;AAkYA;AAAA;AA2JA;AAAA;AAqMA;AAAA;AA6LA;AAAA;AA8JA;AAAA;AAuMA;AAAA;AA4IA;AAAA;AA8FA;AAAA;AAmKA;AAAA;AAmHA;AAAA;AAwHA;AAAA;AAgFA;AAAA;AAqFA;AAAA;AAyNA;AAAA;AA0IA;AAAA;AAkHA;AAAA;AA4JA;AAAA;AAiRA;AAAA;AAiJA;AAAA;AAsmBA;AAAA;AAiFA;AAAA;AAyiBA;AAAA;AA4IA;AAAA;AAkHA;AAAA;AAiZA;AAAA;AA0HA;AAAA;AA4HA;AAAA;AAiGA;AAAA;AA6OA;AAAA;AA8JA;AAAA;AA8JA;AAAA;AAuIA;AAAA;AA4GA;AAAA;AAuIA;AAAA;AAqJA;AAAA;AA8HA;AAAA;AAkJA;AAAA;AAmPA;AAAA;AAgIA;AAAA;AA+FA;AAAA;AAiGA;AAAA;AAqLA;AAAA;AA4HA;AAAA;AAiLA;AAAA;AA2EA;AAAA;AAkGA;AAAA;AAiqBA;AAAA;AA6KA;AAAA;AAgFA;AAAA;AAoFA;AAAA;AA4MA;AAAA;AA2GA;AAAA;AA4SA;AAAA;AAsbA;AAAA;AAmFA;AAAA;AAmNA;AAAA;AAyIA;AAAA;AAsKA;AAAA;AAqHA;AAAA;AAyGA;AAAA;AAmMA;AAAA;AA0IA;AAAA;AAwHA;AAAA;AA2JA;AAAA;AAgIA;AAAA;AA2MA;AAAA;AAoJA;AAAA;;AAyHA;AA8PA;AAAA;AA4NA;AAAA;AAmHA;AAAA;AAoGA;AAAA;AAkJA;AAAA;AA0FA;AAAA;AA2QA;AAAA;AA+LA;AAAA;AAylBA;AAAA;AA8JA;AAAA;AA4MA;AAAA;AA6UA;AAAA;AAoFA;AAAA;AA8FA;AAAA;AA4FA;AAAA;AAsEA;AAAA;AA2FA;AAAA;;;;;;;AAqJA;AA++DA;AAAA;AAqFA;AAAA;AA4EA;AAAA;AA4GA;AAAA;AA0HA;AAAA;;;;;AAgEA;;AA++KA;AAwJA;AAAA;AAyIA;AAAA;AAoMA;AAAA;AAwIA;AAAA;AAsGA;AAAA;AA0MA;AAAA;AAuLA;AAAA;AAoOA;AAAA;AAyEA;AAAA;AA4GA;AAAA;AAmPA;AAAA;AA4GA;AAAA;AAmKA;AAAA;AA4SA;AAAA;AAmLA;AAAA;AA8LA;AAAA;AA2KA;AAAA;AA4FA;AAAA;AA6FA;AAAA;AAqFA;AAAA;AAmFA;AAAA;AA8EA;AAAA;AA2KA;AAAA;AA+HA;AAAA;;;;;;;;;;;;;;AAkYA;;;;;;;;;AA6vLA;AAq80KA;AAAA;AA8IA;AAAA","sourceRoot":""}

View File

@ -0,0 +1,10 @@
<meta charset="utf-8">
<title>dt-chart demo</title>
<script src="./dt-chart.umd.js"></script>
<link rel="stylesheet" href="./dt-chart.css">
<script>
console.log(dt-chart)
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"file":"dt-chart.umd.min.js","sources":["webpack://dt-chart/dt-chart.umd.min.js"],"mappings":"AAAA;AA+HA;AAAA;AAqEA;AAAA;AA+HA;AAAA;AA0FA;AAAA;AAsNA;AAAA;AAuEA;AAAA;AAiLA;AAAA;AA0HA;AAAA;AAkGA;AAAA;AA4NA;AAAA;AAyFA;AAAA;AAqFA;AAAA;AAyHA;AAAA;AAqEA;AAAA;AAyEA;AAAA;AAiGA;AAAA;AAqQA;AAAA;AAoMA;AAAA;AA8IA;AAAA;AA8HA;AAAA;AAkYA;AAAA;AA2JA;AAAA;AAqMA;AAAA;AA6LA;AAAA;AA8JA;AAAA;AAuMA;AAAA;AA4IA;AAAA;AA8FA;AAAA;AAmKA;AAAA;AAmHA;AAAA;AAwHA;AAAA;AAgFA;AAAA;AAqFA;AAAA;AAyNA;AAAA;AA0IA;AAAA;AAkHA;AAAA;AA4JA;AAAA;AAiRA;AAAA;AAiJA;AAAA;AAsmBA;AAAA;AAiFA;AAAA;AAyiBA;AAAA;AA4IA;AAAA;AAkHA;AAAA;AAiZA;AAAA;AA0HA;AAAA;AA4HA;AAAA;AAiGA;AAAA;AA6OA;AAAA;AA8JA;AAAA;AA8JA;AAAA;AAuIA;AAAA;AA4GA;AAAA;AAuIA;AAAA;AAqJA;AAAA;AA8HA;AAAA;AAkJA;AAAA;AAmPA;AAAA;AAgIA;AAAA;AA+FA;AAAA;AAiGA;AAAA;AAqLA;AAAA;AA4HA;AAAA;AAiLA;AAAA;AA2EA;AAAA;AAkGA;AAAA;AAiqBA;AAAA;AA6KA;AAAA;AAgFA;AAAA;AAoFA;AAAA;AA4MA;AAAA;AA2GA;AAAA;AA4SA;AAAA;AAsbA;AAAA;AAmFA;AAAA;AAmNA;AAAA;AAyIA;AAAA;AAsKA;AAAA;AAqHA;AAAA;AAyGA;AAAA;AAmMA;AAAA;AA0IA;AAAA;AAwHA;AAAA;AA2JA;AAAA;AAgIA;AAAA;AA2MA;AAAA;AAoJA;AAAA;;AAyHA;AA8PA;AAAA;AA4NA;AAAA;AAmHA;AAAA;AAoGA;AAAA;AAkJA;AAAA;AA0FA;AAAA;AA2QA;AAAA;AA+LA;AAAA;AAylBA;AAAA;AA8JA;AAAA;AA4MA;AAAA;AA6UA;AAAA;AAoFA;AAAA;AA8FA;AAAA;AA4FA;AAAA;AAsEA;AAAA;AA2FA;AAAA;;;;;;;AAqJA;AA++DA;AAAA;AAqFA;AAAA;AA4EA;AAAA;AA4GA;AAAA;AA0HA;AAAA;;;;;AAgEA;;AA++KA;AAwJA;AAAA;AAyIA;AAAA;AAoMA;AAAA;AAwIA;AAAA;AAsGA;AAAA;AA0MA;AAAA;AAuLA;AAAA;AAoOA;AAAA;AAyEA;AAAA;AA4GA;AAAA;AAmPA;AAAA;AA4GA;AAAA;AAmKA;AAAA;AA4SA;AAAA;AAmLA;AAAA;AA8LA;AAAA;AA2KA;AAAA;AA4FA;AAAA;AA6FA;AAAA;AAqFA;AAAA;AAmFA;AAAA;AA8EA;AAAA;AA2KA;AAAA;AA+HA;AAAA;;;;;;;;;;;;;;AAkYA;;;;;;;;;AA6vLA;AAq80KA;AAAA;AA8IA;AAAA","sourceRoot":""}

View File

@ -0,0 +1,48 @@
{
"name": "dt-chart",
"version": "0.1.0",
"private": true,
"main": "dist/dt-chart.umd.min.js",
"module": "./packages/index.js",
"exports": {
"./package.json": "./package.json",
".": {
"require": "dist/dt-chart.umd.min.js",
"import": "./packages/index.js"
}
},
"author": {
"name": "Farley"
},
"scripts": {
"serve": "vue-cli-service serve",
"docs": "vuepress dev docs",
"docs:build": "vuepress build docs",
"build": "vue-cli-service build --target lib packages/index.js & vuepress build docs"
},
"dependencies": {
"core-js": "^3.6.5",
"echarts": "^5.1.2",
"echarts-gl": "^2.0.8",
"echarts-liquidfill": "^3.1.0",
"install": "^0.13.0",
"moment": "^2.29.1",
"nanoid": "^3.1.23",
"npm": "^7.20.6",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vuepress": "^1.8.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.5.0",
"@vue/cli-service": "^4.5.0",
"sass": "^1.29.0",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

View File

@ -0,0 +1,48 @@
{
"name": "dt-chart",
"version": "0.1.0",
"private": true,
"main": "dist/dt-chart.umd.min.js",
"module": "./packages/index.js",
"exports": {
"./package.json": "./package.json",
".": {
"require": "dist/dt-chart.umd.min.js",
"import": "./packages/index.js"
}
},
"author": {
"name": "Farley"
},
"scripts": {
"serve": "vue-cli-service serve",
"docs": "vuepress dev docs",
"docs:build": "vuepress build docs",
"build": "vue-cli-service build --target lib packages/index.js & vuepress build docs"
},
"dependencies": {
"core-js": "^3.6.5",
"echarts": "^5.1.2",
"echarts-gl": "^2.0.8",
"echarts-liquidfill": "^3.1.0",
"install": "^0.13.0",
"moment": "^2.29.1",
"nanoid": "^3.1.23",
"npm": "^7.20.6",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vuepress": "^1.8.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.5.0",
"@vue/cli-service": "^4.5.0",
"sass": "^1.29.0",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

View File

@ -83,3 +83,7 @@ export const pictureAiCheck = params =>
// 开机
export const changePayloadRadarOpenState = params =>
req('post', '/sar/control/send', params)
export const changeJobStatus = params =>
req('post', '/sar/job/status/', params)

View File

@ -83,7 +83,7 @@
:data="colorStick.colors"
></color-stick>
<!-- 开关 -->
<dt-loading :visible.sync="loading"></dt-loading>
<!-- <dt-loading :visible.sync="loading"></dt-loading> -->
</div>
</template>

View File

@ -134,7 +134,7 @@
@modify="handleCommand('logout')"
></change-password>
<dt-loading :visible.sync="loading"></dt-loading>
<!-- <dt-loading :visible.sync="loading"></dt-loading> -->
</div>
</template>

View File

@ -35,9 +35,10 @@
box-sizing: border-box;
border-radius: 6px;
background-color: $--color-black-3-alpha;
cursor: pointer;
&:hover {
background-color: $--color-black-3;
background-color: rgba(23, 69, 46, .4);
}
>p {

View File

@ -29,11 +29,12 @@
v-for="(item, index) in taskList.data"
:key="item.id"
class="task-item"
@click="openTaskLineDetail(item)"
>
<div class="top-part">
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
<div class="top-part__left">
<div class="execute-info" @click="openTaskLineDetail(item)">
<div class="execute-info">
<span
class="execute-type-icon"
:class="'execute-state-' + item.status"

View File

@ -1128,8 +1128,15 @@ export default {
// 测试
// this.addUavToScene(item)
})
if (data.length) {
this.detailUav.chart.data[0].data = []
this.detailUav.chart.data[1].data = []
this.detailUav.chart.data[2].data = []
this.detailUav.chart.data[3].data = []
this.detailUav.id = data.length ? data[0].id : 1
this.detailUav.visible = data.length ? true : false
}
taskListResource = data
this.taskList.data = list
if (this.taskList.data.length) {
@ -1322,51 +1329,59 @@ export default {
}
},
addJobLine(info, isFinish) {
console.log('任务信息', info)
let load = renderTaskInfo[`${info.id}-${info.uavList[0].uavId}`]
// 参数和数据校验
console.log(info, info.uavList, 777777777777);
if (!info || !Array.isArray(info.uavList) || info.uavList.length === 0) return;
const uav = info.uavList[0];
if (!Array.isArray(uav.airlineList) || uav.airlineList.length === 0) return;
const key = `${info.id}-${uav.uavId}`;
let load = renderTaskInfo[key];
console.log(load, key, 3333333);
if (load) {
return
return;
}
let routes = []
let startHeight = 0
let endHeight = 0
info.uavList[0].airlineList.forEach((item, index) => {
let routes = [];
let startHeight = 0;
let endHeight = 0;
uav.airlineList.forEach((item, index) => {
if (index === 0) {
startHeight = item.flightStartHeight
startHeight = item.startHeight;
}
if (index === info.uavList[0].airlineList.length - 1) {
endHeight = item.flightEndHeight
if (index === uav.airlineList.length - 1) {
endHeight = item.endHeight;
}
routes.push([item.flightStartLon, item.flightStartLat, item.flightStartHeight])
routes.push([item.flightEndLon, item.flightEndLat, item.flightEndHeight])
})
routes.unshift([info.uavList[0].startLon, info.uavList[0].startLat, startHeight])
routes.push([info.uavList[0].endLon, info.uavList[0].endLat, endHeight])
let positions = []
let minLon, maxLon, minLat, maxLat
routes.push([item.startLon, item.startLat, item.startHeight]);
routes.push([item.endLon, item.endLat, item.endHeight]);
});
routes.unshift([uav.startLon, uav.startLat, startHeight]);
routes.push([uav.endLon, uav.endLat, endHeight]);
let positions = [];
let minLon, maxLon, minLat, maxLat;
routes.forEach((item, index) => {
if (index === 0) {
minLon = item[0]
maxLon = item[0]
minLat = item[1]
maxLat = item[1]
minLon = item[0];
maxLon = item[0];
minLat = item[1];
maxLat = item[1];
} else {
minLon = Math.min(minLon, item[0])
maxLon = Math.max(maxLon, item[0])
minLat = Math.min(minLat, item[1])
maxLat = Math.max(maxLat, item[1])
minLon = Math.min(minLon, item[0]);
maxLon = Math.max(maxLon, item[0]);
minLat = Math.min(minLat, item[1]);
maxLat = Math.max(maxLat, item[1]);
}
positions.push(DT.Cesium.Cartesian3.fromDegrees(item[0], item[1], item[2]))
})
let currentIndex = 0
let currentPosition = positions[0].clone()
positions.push(DT.Cesium.Cartesian3.fromDegrees(item[0], item[1], item[2]));
});
if (positions.length === 0) return;
let currentIndex = 0;
let currentPosition = positions[0].clone();
if (isFinish) {
currentIndex = positions.length - 1
currentPosition = positions[currentIndex].clone()
currentIndex = positions.length - 1;
currentPosition = positions[currentIndex].clone();
}
let pathEntity = new DT.DirectionPath({
id: `${info.id}-${info.uavList[0].uavId}~baseline`,
id: `${key}~baseline`,
positions: positions,
dataFit: false,
currentPosition: currentPosition,
@ -1394,19 +1409,18 @@ export default {
scale: 0.5,
show: true,
style: DT.Cesium.LabelStyle.FILL_AND_OUTLINE,
text: info.uavList[0].uavName,
text: uav.uavName,
verticalOrigin: DT.Cesium.VerticalOrigin.CENTER,
disableDepthTestDistance: 10000
},
billboardConfig: {
image: process.env.BASE_URL + 'static/img/icon_wrj.png',
disableDepthTestDistance: 10000
// enableRotation: true
},
enableRepeatAdjust: false,
})
});
let pathEntity2 = new DT.DirectionPath({
id: `${info.id}-${info.uavList[0].uavId}~baseline`,
id: `${key}~baseline-radar`,
positions: positions,
dataFit: false,
currentPosition: currentPosition,
@ -1434,53 +1448,48 @@ export default {
scale: 0.5,
show: true,
style: DT.Cesium.LabelStyle.FILL_AND_OUTLINE,
text: info.uavList[0].uavName,
text: uav.uavName,
verticalOrigin: DT.Cesium.VerticalOrigin.CENTER,
disableDepthTestDistance: 10000
},
billboardConfig: {
image: process.env.BASE_URL + 'static/img/icon_wrj.png',
disableDepthTestDistance: 10000
// enableRotation: true
},
enableRepeatAdjust: false,
})
console.log('调用添加方法了吗')
lodLayer.add(pathEntity)
radarLayer.add(pathEntity2)
// 添加图片
renderTaskInfo[`${info.id}-${info.uavList[0].uavId}`] = {
});
lodLayer.add(pathEntity);
radarLayer.add(pathEntity2);
renderTaskInfo[key] = {
entity: pathEntity,
entity2: pathEntity2,
picture: {}
}
info.uavList.forEach(uav => {
uav.payloadList.forEach(payload => {
};
info.uavList.forEach(uavItem => {
if (uavItem.payloadList && Array.isArray(uavItem.payloadList)) {
uavItem.payloadList.forEach(payload => {
if (payload.imageList && Array.isArray(payload.imageList)) {
payload.imageList.forEach(image => {
this.addMarkPicture2(image)
})
})
})
this.addMarkPicture2(image);
});
}
});
}
});
// 适当扩大视角范围
let lonDiff = (maxLon - minLon) / 2
let latDiff = (maxLat - minLat) / 2
minLon -= lonDiff
maxLon += lonDiff
minLat -= latDiff
maxLat += latDiff
let lonDiff = (maxLon - minLon) / 2;
let latDiff = (maxLat - minLat) / 2;
minLon -= lonDiff;
maxLon += lonDiff;
minLat -= latDiff;
maxLat += latDiff;
let boundingPosition = [
DT.Cesium.Cartesian3.fromDegrees(minLon, minLat),
DT.Cesium.Cartesian3.fromDegrees(minLon, maxLat),
DT.Cesium.Cartesian3.fromDegrees(maxLon, minLat),
DT.Cesium.Cartesian3.fromDegrees(minLon, maxLat),
DT.Cesium.Cartesian3.fromDegrees(maxLon, maxLat),
]
// console.log('最小最大', minLon, maxLon, minLat, maxLat)
viewer.cesiumViewer.camera.flyToBoundingSphere(DT.Cesium.BoundingSphere.fromPoints(boundingPosition), { duration: 0.1 })
];
viewer.cesiumViewer.camera.flyToBoundingSphere(DT.Cesium.BoundingSphere.fromPoints(boundingPosition), { duration: 0.1 });
},
removeJobLine(jobId, uavId) {
let load = renderTaskInfo[`${jobId}-${uavId}`]
@ -2633,7 +2642,7 @@ export default {
stompClientInstance = stompClient
},
handleWebsocketGmti(info) {
console.log('Gmti信息', info.body)
console.log('Gmti信息', JSON.parse(info.body))
},
handleWebsocketStatus(info) {
console.log('SAR状态信息', info.body)
@ -2846,9 +2855,11 @@ export default {
// }));
// if (this.tempAdd) return
// this.tempAdd = true
console.log(data, renderTaskInfo, 'tupiantupian');
let id = `${data.jobId}-${data.uavId}`
let target = renderTaskInfo[id]
if (target) {
// let target = renderTaskInfo[id]
// if (target) {
let cby_bg_data = [
data.left1Lon, data.left1Lat,
data.left2Lon, data.left2Lat,
@ -2859,14 +2870,11 @@ export default {
id: `${data.jobId}-${data.uavId}~${data.fileId}-picture`,
name: '背景',
polygon: {
// hierarchy: DT.Cesium.Cartesian3.fromDegreesArrayHeights(cby_bg_data),
hierarchy: DT.Cesium.Cartesian3.fromDegreesArray(cby_bg_data),
perPositionHeight: true,
material: new DT.Cesium.ImageMaterialProperty({
image: window.config.imagePath + data.relativePath,
// image: process.env.BASE_URL + 'static/img/ttt.tif',
// image: process.env.BASE_URL + 'static/img/pic.png',
}),//new Cesium.Color(0.29, 0.85, 0.89, 0.5), //Cesium.Color.PALETURQUOISE.withAlpha(0.5),
}),
outline: true,
outlineColor: DT.Cesium.Color.WHITE,
outlineWidth: 2, //很多电脑当宽度>1时没用
@ -2911,11 +2919,11 @@ export default {
markLineArr.push(markLine)
})
}
target.picture[`${data.fileId}-picture`] = {
pictureEntity: entity,
markArr: markLineArr
}
}
// target.picture[`${data.fileId}-picture`] = {
// pictureEntity: entity,
// markArr: markLineArr
// }
// }
},
addPictureHandle() {
console.log('双击事件执行了吗', new Date().getTime())
@ -3074,6 +3082,10 @@ export default {
//#endregion
// 打开状态和波形信息展示
openSarStatusDetail(data) {
this.detailUav.chart.data[0].data = []
this.detailUav.chart.data[1].data = []
this.detailUav.chart.data[2].data = []
this.detailUav.chart.data[3].data = []
this.detailUav.id = data.id
this.detailUav.visible = true
},

View File

@ -57,9 +57,10 @@
box-sizing: border-box;
border-radius: 6px;
background-color: $--color-black-3-alpha;
cursor: pointer;
&:hover {
background-color: $--color-black-3;
background-color: rgba(23, 69, 46, .4);
}
>p {
@ -98,6 +99,14 @@
}
}
}
.is-active {
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)
}
}
.task-list__large {

View File

@ -72,7 +72,10 @@
<div
v-for="(item, index) in taskList.data"
:key="item.id"
class="task-item"
:class="{
'task-item': true,
'is-active': detailUav.id === item.id,
}"
@click="openSarStatusDetail(item)"
>
<div class="top-part">
@ -114,12 +117,12 @@
<p>无人机名称: {{ item.uav }}</p>
<p>雷达名称: {{ item.sar }}</p>
<p>开始时间{{ item.beginTime }}</p>
<div
<!-- <div
class="task-info"
:style="{ color: dealStatusColor(item.statusName) }"
>
{{ item.statusName }}
</div>
</div> -->
</div>
</template>
<div v-else class="task-empty">