Compare commits
8 Commits
f34844f110
...
c1575d47dd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1575d47dd | ||
|
|
fa40aea621 | ||
|
|
8336e5e1ca | ||
| 62317aab51 | |||
|
|
395f69fda7 | ||
|
|
2eb9d77a18 | ||
|
|
303c6fc541 | ||
|
|
6a4a2eae95 |
@ -7,6 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@MapperScan("com.zhangy.skyeye.**.mapper")
|
@MapperScan("com.zhangy.skyeye.**.mapper")
|
||||||
@SpringBootApplication(scanBasePackages = "com.zhangy.**")
|
@SpringBootApplication(scanBasePackages = "com.zhangy.**")
|
||||||
@ -18,6 +20,20 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
|||||||
public class SEApplication {
|
public class SEApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
String projectRoot = System.getProperty("user.dir");
|
||||||
|
// String libPath = projectRoot + "/library/logisen/GMTI";
|
||||||
|
// System.setProperty("jna.library.path", libPath);
|
||||||
|
// 1. GMTI 路径
|
||||||
|
String gmtiPath = projectRoot + "/library/logisen/GMTI";
|
||||||
|
// 2. OpenCV 路径 (根据您的目录名: opencv-4.11.0-windows)
|
||||||
|
String opencvPath = projectRoot + "/library/opencv-4.11.0-windows";
|
||||||
|
|
||||||
|
// 使用 File.pathSeparator (Windows是分号; Linux是冒号:) 连接多个路径
|
||||||
|
String combinedPath = gmtiPath + File.pathSeparator + opencvPath;
|
||||||
|
|
||||||
|
System.setProperty("jna.library.path", combinedPath);
|
||||||
|
// 如果 OpenCV 使用的是标准 JNI (System.loadLibrary),可能还需要设置 java.library.path
|
||||||
|
System.setProperty("java.library.path", opencvPath);
|
||||||
SpringApplication.run(SEApplication.class, args);
|
SpringApplication.run(SEApplication.class, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -346,6 +346,15 @@ public class JmJobServiceImpl implements JmJobService {
|
|||||||
// SarBackImageFrameDTO.i = 1;
|
// SarBackImageFrameDTO.i = 1;
|
||||||
// 校验无人机、载荷
|
// 校验无人机、载荷
|
||||||
jobStatusService.checkDeviceForNewJob(job.getUavList());
|
jobStatusService.checkDeviceForNewJob(job.getUavList());
|
||||||
|
|
||||||
|
JmJobUav uav = job.getUavList().get(0);
|
||||||
|
List<JmAirline> airlineList = uav.getAirlineList();
|
||||||
|
for(JmAirline airline:airlineList) {
|
||||||
|
log.info("we are going to start job {}", job.getId());
|
||||||
|
log.info("airline origin status is {}, set to {}", airline.getStatus(), ExecStatusEnum.NOT);
|
||||||
|
airline.setStatus(ExecStatusEnum.NOT.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
// 保存任务状态
|
// 保存任务状态
|
||||||
job.setStatus(ExecStatusEnum.PROCESSING.getValue());
|
job.setStatus(ExecStatusEnum.PROCESSING.getValue());
|
||||||
job.setBeginTime(DateUtil.date());
|
job.setBeginTime(DateUtil.date());
|
||||||
|
|||||||
@ -1,120 +1,148 @@
|
|||||||
|
; (function (win, lib) {
|
||||||
;(function(win, lib) {
|
var doc = win.document
|
||||||
var doc = win.document;
|
var docEl = doc.documentElement
|
||||||
var docEl = doc.documentElement;
|
var metaEl = doc.querySelector('meta[name="viewport"]')
|
||||||
var metaEl = doc.querySelector('meta[name="viewport"]');
|
var flexibleEl = doc.querySelector('meta[name="flexible"]')
|
||||||
var flexibleEl = doc.querySelector('meta[name="flexible"]');
|
var dpr = 0
|
||||||
var dpr = 0;
|
var scale = 0
|
||||||
var scale = 0;
|
var tid
|
||||||
var tid;
|
var flexible = lib.flexible || (lib.flexible = {})
|
||||||
var flexible = lib.flexible || (lib.flexible = {});
|
|
||||||
|
|
||||||
if (metaEl) {
|
if (metaEl) {
|
||||||
console.warn('将根据已有的meta标签来设置缩放比例');
|
console.warn('将根据已有的meta标签来设置缩放比例')
|
||||||
var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/);
|
var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/)
|
||||||
if (match) {
|
if (match) {
|
||||||
scale = parseFloat(match[1]);
|
scale = parseFloat(match[1])
|
||||||
dpr = parseInt(1 / scale);
|
dpr = parseInt(1 / scale)
|
||||||
}
|
}
|
||||||
} else if (flexibleEl) {
|
} else if (flexibleEl) {
|
||||||
var content = flexibleEl.getAttribute('content');
|
var content = flexibleEl.getAttribute('content')
|
||||||
if (content) {
|
if (content) {
|
||||||
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
|
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/)
|
||||||
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
|
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
|
||||||
if (initialDpr) {
|
if (initialDpr) {
|
||||||
dpr = parseFloat(initialDpr[1]);
|
dpr = parseFloat(initialDpr[1])
|
||||||
scale = parseFloat((1 / dpr).toFixed(2));
|
scale = parseFloat((1 / dpr).toFixed(2))
|
||||||
}
|
}
|
||||||
if (maximumDpr) {
|
if (maximumDpr) {
|
||||||
dpr = parseFloat(maximumDpr[1]);
|
dpr = parseFloat(maximumDpr[1])
|
||||||
scale = parseFloat((1 / dpr).toFixed(2));
|
scale = parseFloat((1 / dpr).toFixed(2))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dpr && !scale) {
|
if (!dpr && !scale) {
|
||||||
var isAndroid = win.navigator.appVersion.match(/android/gi);
|
var isAndroid = win.navigator.appVersion.match(/android/gi)
|
||||||
var isIPhone = win.navigator.appVersion.match(/iphone/gi);
|
var isIPhone = win.navigator.appVersion.match(/iphone/gi)
|
||||||
var devicePixelRatio = win.devicePixelRatio;
|
var devicePixelRatio = win.devicePixelRatio
|
||||||
if (isIPhone) {
|
if (isIPhone) {
|
||||||
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
|
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
|
||||||
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
|
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
|
||||||
dpr = 3;
|
dpr = 3
|
||||||
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
|
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
|
||||||
dpr = 2;
|
dpr = 2
|
||||||
} else {
|
} else {
|
||||||
dpr = 1;
|
dpr = 1
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 其他设备下,仍旧使用1倍的方案
|
// 其他设备下,仍旧使用1倍的方案
|
||||||
dpr = 1;
|
dpr = 1
|
||||||
}
|
}
|
||||||
scale = 1 / dpr;
|
scale = 1 / dpr
|
||||||
}
|
}
|
||||||
|
|
||||||
docEl.setAttribute('data-dpr', dpr);
|
docEl.setAttribute('data-dpr', dpr)
|
||||||
if (!metaEl) {
|
if (!metaEl) {
|
||||||
metaEl = doc.createElement('meta');
|
metaEl = doc.createElement('meta')
|
||||||
metaEl.setAttribute('name', 'viewport');
|
metaEl.setAttribute('name', 'viewport')
|
||||||
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
|
metaEl.setAttribute(
|
||||||
|
'content',
|
||||||
|
'initial-scale=' +
|
||||||
|
scale +
|
||||||
|
', maximum-scale=' +
|
||||||
|
scale +
|
||||||
|
', minimum-scale=' +
|
||||||
|
scale +
|
||||||
|
', user-scalable=no'
|
||||||
|
)
|
||||||
if (docEl.firstElementChild) {
|
if (docEl.firstElementChild) {
|
||||||
docEl.firstElementChild.appendChild(metaEl);
|
docEl.firstElementChild.appendChild(metaEl)
|
||||||
} else {
|
} else {
|
||||||
var wrap = doc.createElement('div');
|
var wrap = doc.createElement('div')
|
||||||
wrap.appendChild(metaEl);
|
wrap.appendChild(metaEl)
|
||||||
doc.write(wrap.innerHTML);
|
doc.write(wrap.innerHTML)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshRem(){
|
function refreshRem() {
|
||||||
var width = docEl.getBoundingClientRect().width;
|
var width = docEl.getBoundingClientRect().width
|
||||||
if (width / dpr < 1980) {
|
if (width / dpr <= 1366) {
|
||||||
width = 1980 * dpr;
|
width = 1366 * dpr
|
||||||
|
} else if (width / dpr <= 1440) {
|
||||||
|
width = 1440 * dpr
|
||||||
|
} else if (width / dpr <= 1600) {
|
||||||
|
width = 1600 * dpr
|
||||||
|
} else if (width / dpr <= 1680) {
|
||||||
|
width = 1680 * dpr
|
||||||
|
} else if (width / dpr <= 1768) {
|
||||||
|
width = 1768 * dpr
|
||||||
|
} else if (width / dpr <= 1980) {
|
||||||
|
width = 1980 * dpr
|
||||||
} else if (width / dpr > 5760) {
|
} else if (width / dpr > 5760) {
|
||||||
width = 5760 * dpr;
|
width = 5760 * dpr
|
||||||
}
|
}
|
||||||
var rem = width / 10;
|
var rem = width / 10
|
||||||
docEl.style.fontSize = rem + 'px';
|
docEl.style.fontSize = rem + 'px'
|
||||||
flexible.rem = win.rem = rem;
|
flexible.rem = win.rem = rem
|
||||||
}
|
}
|
||||||
|
|
||||||
win.addEventListener('resize', function() {
|
win.addEventListener(
|
||||||
clearTimeout(tid);
|
'resize',
|
||||||
tid = setTimeout(refreshRem, 300);
|
function () {
|
||||||
}, false);
|
clearTimeout(tid)
|
||||||
win.addEventListener('pageshow', function(e) {
|
tid = setTimeout(refreshRem, 300)
|
||||||
|
},
|
||||||
|
false
|
||||||
|
)
|
||||||
|
win.addEventListener(
|
||||||
|
'pageshow',
|
||||||
|
function (e) {
|
||||||
if (e.persisted) {
|
if (e.persisted) {
|
||||||
clearTimeout(tid);
|
clearTimeout(tid)
|
||||||
tid = setTimeout(refreshRem, 300);
|
tid = setTimeout(refreshRem, 300)
|
||||||
}
|
}
|
||||||
}, false);
|
},
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
if (doc.readyState === 'complete') {
|
if (doc.readyState === 'complete') {
|
||||||
doc.body.style.fontSize = 12 * dpr + 'px';
|
doc.body.style.fontSize = 12 * dpr + 'px'
|
||||||
} else {
|
} else {
|
||||||
doc.addEventListener('DOMContentLoaded', function(e) {
|
doc.addEventListener(
|
||||||
doc.body.style.fontSize = 12 * dpr + 'px';
|
'DOMContentLoaded',
|
||||||
}, false);
|
function (e) {
|
||||||
|
doc.body.style.fontSize = 12 * dpr + 'px'
|
||||||
|
},
|
||||||
|
false
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshRem()
|
||||||
|
|
||||||
refreshRem();
|
flexible.dpr = win.dpr = dpr
|
||||||
|
flexible.refreshRem = refreshRem
|
||||||
flexible.dpr = win.dpr = dpr;
|
flexible.rem2px = function (d) {
|
||||||
flexible.refreshRem = refreshRem;
|
var val = parseFloat(d) * this.rem
|
||||||
flexible.rem2px = function(d) {
|
|
||||||
var val = parseFloat(d) * this.rem;
|
|
||||||
if (typeof d === 'string' && d.match(/rem$/)) {
|
if (typeof d === 'string' && d.match(/rem$/)) {
|
||||||
val += 'px';
|
val += 'px'
|
||||||
}
|
}
|
||||||
return val;
|
return val
|
||||||
}
|
}
|
||||||
flexible.px2rem = function(d) {
|
flexible.px2rem = function (d) {
|
||||||
var val = parseFloat(d) / this.rem;
|
var val = parseFloat(d) / this.rem
|
||||||
if (typeof d === 'string' && d.match(/px$/)) {
|
if (typeof d === 'string' && d.match(/px$/)) {
|
||||||
val += 'rem';
|
val += 'rem'
|
||||||
}
|
}
|
||||||
return val;
|
return val
|
||||||
}
|
}
|
||||||
|
})(window, window['lib'] || (window['lib'] = {}))
|
||||||
})(window, window['lib'] || (window['lib'] = {}));
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<div class="task-list__content">
|
<div class="task-list__content">
|
||||||
<div v-for="item in taskList.data" :key="item.id" class="task-item">
|
<div v-for="item in taskList.data" :key="item.id" class="task-item">
|
||||||
<div class="left-part">
|
<div class="top-part">
|
||||||
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
|
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
|
||||||
<div class="execute-info" @click="openTaskLineDetail(item)">
|
<div class="execute-info" @click="openTaskLineDetail(item)">
|
||||||
<span
|
<span
|
||||||
@ -41,14 +41,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="task-info">
|
<div class="task-info">
|
||||||
{{ item.statusName }}
|
{{ item.statusName }}
|
||||||
<!-- <i class="el-icon-camera"></i>-->
|
|
||||||
<!-- <span class="task-name">{{ item.name }}</span>-->
|
|
||||||
<!-- <span :class="{ 'task-finish': item.isFinish }">{{-->
|
|
||||||
<!-- item.taskProgressName-->
|
|
||||||
<!-- }}</span>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="task-time">{{ item.beginTime }}</div>
|
|
||||||
|
<!-- <div class="task-time">{{ item.beginTime }}</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
<p>无人机名称: 无人机1</p>
|
||||||
|
<p>雷达名称: SAR1</p>
|
||||||
|
<p>开始时间:{{ item.beginTime }}</p>
|
||||||
<div class="right-part">
|
<div class="right-part">
|
||||||
<!-- <i class="el-icon-edit-outline edit-task" @click.stop="editTask(item)"></i>-->
|
<!-- <i class="el-icon-edit-outline edit-task" @click.stop="editTask(item)"></i>-->
|
||||||
<!-- <el-tooltip-->
|
<!-- <el-tooltip-->
|
||||||
@ -59,18 +58,6 @@
|
|||||||
<!-- <i class="ri-repeat-line" @click.stop="reRunTask(item)"></i>-->
|
<!-- <i class="ri-repeat-line" @click.stop="reRunTask(item)"></i>-->
|
||||||
|
|
||||||
<!-- </el-tooltip>-->
|
<!-- </el-tooltip>-->
|
||||||
<el-tooltip effect="dark" content="修改名称" placement="right">
|
|
||||||
<i
|
|
||||||
class="el-icon-edit-outline"
|
|
||||||
@click.stop="editTaskName(item)"
|
|
||||||
></i>
|
|
||||||
</el-tooltip>
|
|
||||||
<el-tooltip effect="dark" content="删除" placement="right">
|
|
||||||
<i
|
|
||||||
class="el-icon-close delete-task"
|
|
||||||
@click.stop="deleteTask(item)"
|
|
||||||
></i>
|
|
||||||
</el-tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -876,7 +876,9 @@ export default {
|
|||||||
if (name === '执行中') {
|
if (name === '执行中') {
|
||||||
return '#6ae965'
|
return '#6ae965'
|
||||||
} else if (name === '已完成') {
|
} else if (name === '已完成') {
|
||||||
return '#336dff'
|
return '#0f8cc7'
|
||||||
|
} else if (name === '未执行') {
|
||||||
|
return '#b2ff38'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getUavList() {
|
getUavList() {
|
||||||
@ -985,6 +987,15 @@ export default {
|
|||||||
let list = []
|
let list = []
|
||||||
data.forEach(item => {
|
data.forEach(item => {
|
||||||
item.statusName = this.jobStatus[item.status + '']
|
item.statusName = this.jobStatus[item.status + '']
|
||||||
|
console.log(item, 33333333333);
|
||||||
|
let uav = undefined
|
||||||
|
let sar = undefined
|
||||||
|
if (item.uavList.length) {
|
||||||
|
uav = item.uavList[0].uavName
|
||||||
|
if (item.uavList[0].payloadList.length) {
|
||||||
|
sar = item.uavList[0].payloadList[0].payloadName
|
||||||
|
}
|
||||||
|
}
|
||||||
list.push({
|
list.push({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
beginTime: item.beginTime,
|
beginTime: item.beginTime,
|
||||||
@ -994,6 +1005,8 @@ export default {
|
|||||||
name: item.name,
|
name: item.name,
|
||||||
status: item.status,
|
status: item.status,
|
||||||
statusName: item.statusName,
|
statusName: item.statusName,
|
||||||
|
uav,
|
||||||
|
sar
|
||||||
})
|
})
|
||||||
this.removeTaskTarget(item.id)
|
this.removeTaskTarget(item.id)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -26,122 +26,35 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.task-item {
|
.task-item {
|
||||||
height: 40px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: calc(100% - 5px);
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin: 8px 0;
|
margin: 8px 0;
|
||||||
|
border: 1px solid $--color-border-1;
|
||||||
.left-part {
|
padding: 8px 15px;
|
||||||
padding: 0 8px;
|
|
||||||
background: rgba(51, 51, 51, 0.6);
|
|
||||||
border-radius: 4px;
|
|
||||||
flex: 1;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
border-radius: 6px;
|
||||||
justify-content: space-between;
|
background-color: $--color-black-3-alpha;
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.task-progress-bar {
|
&:hover {
|
||||||
position: absolute;
|
background-color: $--color-black-3;
|
||||||
height: 100%;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
background: #43522c;
|
|
||||||
//z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.execute-info {
|
>p {
|
||||||
z-index: 1;
|
line-height: 24px;
|
||||||
display: flex;
|
color: $--color-text-2;
|
||||||
justify-content: flex-start;
|
padding-left: 3px;
|
||||||
align-items: center;
|
|
||||||
// width: 150px;
|
|
||||||
|
|
||||||
.execute-type-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border-radius: 50%;
|
|
||||||
margin-right: 4px;
|
|
||||||
border: 1px solid $--color-text-1;
|
|
||||||
|
|
||||||
>i {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-0 {
|
|
||||||
border: 1px solid #a45d35;
|
|
||||||
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
|
||||||
0 0 10px rgba(164, 93, 53, 0.6),
|
|
||||||
0 0 20px rgba(164, 93, 53, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-1 {
|
|
||||||
border: 1px solid #39cf0b;
|
|
||||||
box-shadow: 0 0 5px rgba(17, 172, 38, 0.8),
|
|
||||||
0 0 10px rgba(17, 172, 38, 0.6),
|
|
||||||
0 0 20px rgba(17, 172, 38, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-2 {
|
|
||||||
border: 1px solid $--color-text-1;
|
|
||||||
box-shadow: 0 0 2px rgba(250, 250, 250, 0.8),
|
|
||||||
0 0 6px rgba(250, 250, 250, 0.6),
|
|
||||||
0 0 14px rgba(250, 250, 250, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-3 {
|
|
||||||
border: 1px solid #a45d35;
|
|
||||||
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
|
||||||
0 0 10px rgba(164, 93, 53, 0.6),
|
|
||||||
0 0 20px rgba(164, 93, 53, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-4 {
|
|
||||||
border: 1px solid #893654;
|
|
||||||
box-shadow: 0 0 5px rgba(137, 54, 84, 0.8),
|
|
||||||
0 0 10px rgba(137, 54, 84, 0.6),
|
|
||||||
0 0 20px rgba(137, 54, 84, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-5 {
|
|
||||||
border: 1px solid #681c1f;
|
|
||||||
box-shadow: 0 0 5px rgba(104, 28, 31, 0.8),
|
|
||||||
0 0 10px rgba(104, 28, 31, 0.6),
|
|
||||||
0 0 20px rgba(104, 28, 31, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-execute {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 14px;
|
|
||||||
width: 85px;
|
|
||||||
margin-left: 5px;
|
|
||||||
display: inline-block;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-info {
|
.task-info {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
width: 50px;
|
position: absolute;
|
||||||
display: flex;
|
bottom: 0;
|
||||||
justify-content: flex-start;
|
right: 0;
|
||||||
align-items: center;
|
background-color: $--color-black-2;
|
||||||
|
padding: 4px 15px;
|
||||||
|
border-bottom-right-radius: 6px;
|
||||||
|
border-top-left-radius: 6px;
|
||||||
|
|
||||||
>i {
|
>i {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -163,46 +76,9 @@
|
|||||||
color: $--color-green;
|
color: $--color-green;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-time {
|
|
||||||
z-index: 1;
|
|
||||||
color: $--color-text-1;
|
|
||||||
min-width: 140px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-part {
|
|
||||||
width: 60px;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//.task-list__large {
|
|
||||||
// height: calc(50vh - 110px);
|
|
||||||
// left: $--icon-mode-larger-card-left;
|
|
||||||
// top: $--icon-mode-larger-card-top;
|
|
||||||
// transition: 0.2s ease-in-out;
|
|
||||||
//}
|
|
||||||
|
|
||||||
.task-form {
|
.task-form {
|
||||||
width: 410px;
|
width: 410px;
|
||||||
height: calc(100vh - 70px);
|
height: calc(100vh - 70px);
|
||||||
@ -213,12 +89,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//.task-form__large {
|
|
||||||
// height: calc(100vh - 110px);
|
|
||||||
// left: $--icon-mode-larger-card-left;
|
|
||||||
// top: $--icon-mode-larger-card-top;
|
|
||||||
// transition: 0.2s ease-in-out;
|
|
||||||
//}
|
|
||||||
.requirement-form {
|
.requirement-form {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
@ -553,3 +423,115 @@
|
|||||||
background-color: #00000052;
|
background-color: #00000052;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
// width: 150px;
|
||||||
|
|
||||||
|
.execute-type-icon {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 4px;
|
||||||
|
border: 1px solid $--color-text-1;
|
||||||
|
|
||||||
|
>i {
|
||||||
|
color: $--color-text-1;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-0 {
|
||||||
|
border: 1px solid #a45d35;
|
||||||
|
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
||||||
|
0 0 10px rgba(164, 93, 53, 0.6),
|
||||||
|
0 0 20px rgba(164, 93, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-1 {
|
||||||
|
border: 1px solid #39cf0b;
|
||||||
|
box-shadow: 0 0 5px rgba(17, 172, 38, 0.8),
|
||||||
|
0 0 10px rgba(17, 172, 38, 0.6),
|
||||||
|
0 0 20px rgba(17, 172, 38, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-2 {
|
||||||
|
border: 1px solid $--color-text-1;
|
||||||
|
box-shadow: 0 0 2px rgba(250, 250, 250, 0.8),
|
||||||
|
0 0 6px rgba(250, 250, 250, 0.6),
|
||||||
|
0 0 14px rgba(250, 250, 250, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-3 {
|
||||||
|
border: 1px solid #a45d35;
|
||||||
|
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
||||||
|
0 0 10px rgba(164, 93, 53, 0.6),
|
||||||
|
0 0 20px rgba(164, 93, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-4 {
|
||||||
|
border: 1px solid #893654;
|
||||||
|
box-shadow: 0 0 5px rgba(137, 54, 84, 0.8),
|
||||||
|
0 0 10px rgba(137, 54, 84, 0.6),
|
||||||
|
0 0 20px rgba(137, 54, 84, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-5 {
|
||||||
|
border: 1px solid #681c1f;
|
||||||
|
box-shadow: 0 0 5px rgba(104, 28, 31, 0.8),
|
||||||
|
0 0 10px rgba(104, 28, 31, 0.6),
|
||||||
|
0 0 20px rgba(104, 28, 31, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-execute {
|
||||||
|
color: $--color-text-1;
|
||||||
|
font-size: 14px;
|
||||||
|
width: calc(100% - 50px);
|
||||||
|
margin-left: 5px;
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
width: 60px;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -30,8 +30,9 @@
|
|||||||
:key="item.id"
|
:key="item.id"
|
||||||
class="task-item"
|
class="task-item"
|
||||||
>
|
>
|
||||||
<div class="left-part">
|
<div class="top-part">
|
||||||
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
|
<!-- <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" @click="openTaskLineDetail(item)">
|
||||||
<span
|
<span
|
||||||
class="execute-type-icon"
|
class="execute-type-icon"
|
||||||
@ -40,20 +41,8 @@
|
|||||||
></span>
|
></span>
|
||||||
<span class="task-execute">{{ item.name }}</span>
|
<span class="task-execute">{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="task-info"
|
|
||||||
:style="{ color: dealStatusColor(item.statusName) }"
|
|
||||||
>
|
|
||||||
{{ item.statusName }}
|
|
||||||
<!-- <i class="el-icon-camera"></i>-->
|
|
||||||
<!-- <span class="task-name">{{ item.name }}</span>-->
|
|
||||||
<!-- <span :class="{ 'task-finish': item.isFinish }">{{-->
|
|
||||||
<!-- item.taskProgressName-->
|
|
||||||
<!-- }}</span>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="task-time">{{ item.beginTime }}</div>
|
<div class="top-part__right">
|
||||||
</div>
|
|
||||||
<div class="right-part">
|
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="item.check ? '隐藏' : '显示'"
|
:content="item.check ? '隐藏' : '显示'"
|
||||||
@ -100,21 +89,16 @@
|
|||||||
<el-dropdown-item command="remove">删除</el-dropdown-item>
|
<el-dropdown-item command="remove">删除</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<!-- <el-tooltip effect="dark" content="修改名称" placement="top">
|
</div>
|
||||||
<i
|
</div>
|
||||||
class="el-icon-edit-outline"
|
<p>无人机名称: {{ item.uav }}</p>
|
||||||
@click.stop="editTaskName(item)"
|
<p>雷达名称: {{ item.sar }}</p>
|
||||||
></i>
|
<p>开始时间:{{ item.beginTime }}</p>
|
||||||
</el-tooltip>
|
<div
|
||||||
<el-tooltip effect="dark" content="复制" placement="top">
|
class="task-info"
|
||||||
<i class="ri-file-copy-2-line" @click.stop="copyTask(item)"></i>
|
:style="{ color: dealStatusColor(item.statusName) }"
|
||||||
</el-tooltip>
|
>
|
||||||
<el-tooltip effect="dark" content="删除" placement="top">
|
{{ item.statusName }}
|
||||||
<i
|
|
||||||
class="el-icon-close delete-task"
|
|
||||||
@click.stop="deleteTask(item)"
|
|
||||||
></i>
|
|
||||||
</el-tooltip> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1085,6 +1085,7 @@ export default {
|
|||||||
console.log('任务列表', res.data.data)
|
console.log('任务列表', res.data.data)
|
||||||
let data = res.data.data
|
let data = res.data.data
|
||||||
let list = []
|
let list = []
|
||||||
|
|
||||||
data.forEach(item => {
|
data.forEach(item => {
|
||||||
// item.check = item.status === 1 || item.status === 3
|
// item.check = item.status === 1 || item.status === 3
|
||||||
item.check = false
|
item.check = false
|
||||||
@ -1096,6 +1097,15 @@ export default {
|
|||||||
}
|
}
|
||||||
child.jobName = item.name
|
child.jobName = item.name
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let uav = undefined
|
||||||
|
let sar = undefined
|
||||||
|
if (item.uavList.length) {
|
||||||
|
uav = item.uavList[0].uavName
|
||||||
|
if (item.uavList[0].payloadList.length) {
|
||||||
|
sar = item.uavList[0].payloadList[0].payloadName
|
||||||
|
}
|
||||||
|
}
|
||||||
list.push({
|
list.push({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
beginTime: item.beginTime,
|
beginTime: item.beginTime,
|
||||||
@ -1105,6 +1115,8 @@ export default {
|
|||||||
name: item.name,
|
name: item.name,
|
||||||
status: item.status,
|
status: item.status,
|
||||||
statusName: item.statusName,
|
statusName: item.statusName,
|
||||||
|
uav,
|
||||||
|
sar
|
||||||
})
|
})
|
||||||
// TODO
|
// TODO
|
||||||
// item.pointList = [item.pointList]
|
// item.pointList = [item.pointList]
|
||||||
@ -2607,6 +2619,10 @@ export default {
|
|||||||
name: '/topic/jobStatus',
|
name: '/topic/jobStatus',
|
||||||
callback: this.handleWebsocketState
|
callback: this.handleWebsocketState
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: '/topic/gmti',
|
||||||
|
callback: this.handleWebsocketGmti
|
||||||
|
},
|
||||||
],
|
],
|
||||||
success: () => {
|
success: () => {
|
||||||
console.log('自身websocket链接成功2')
|
console.log('自身websocket链接成功2')
|
||||||
@ -2616,6 +2632,9 @@ export default {
|
|||||||
socketInstance = socket
|
socketInstance = socket
|
||||||
stompClientInstance = stompClient
|
stompClientInstance = stompClient
|
||||||
},
|
},
|
||||||
|
handleWebsocketGmti(info) {
|
||||||
|
console.log('Gmti信息', info.body)
|
||||||
|
},
|
||||||
handleWebsocketStatus(info) {
|
handleWebsocketStatus(info) {
|
||||||
console.log('SAR状态信息', info.body)
|
console.log('SAR状态信息', info.body)
|
||||||
let data = JSON.parse(info.body)
|
let data = JSON.parse(info.body)
|
||||||
@ -2778,7 +2797,7 @@ export default {
|
|||||||
// console.log('SAR图像', info.body)
|
// console.log('SAR图像', info.body)
|
||||||
let data = JSON.parse(info.body)
|
let data = JSON.parse(info.body)
|
||||||
console.log('SAR图像2', data)
|
console.log('SAR图像2', data)
|
||||||
// this.addMarkPicture2(data)
|
this.addMarkPicture2(data)
|
||||||
// console.log('灭有匹配到吗taskUavCollection', taskUavCollection, taskUavCollection[data.jobId])
|
// console.log('灭有匹配到吗taskUavCollection', taskUavCollection, taskUavCollection[data.jobId])
|
||||||
if (taskUavCollection[data.jobId]) {
|
if (taskUavCollection[data.jobId]) {
|
||||||
let find = taskUavCollection[data.jobId].find(item => item.uavId + '' === data.uavId + '')
|
let find = taskUavCollection[data.jobId].find(item => item.uavId + '' === data.uavId + '')
|
||||||
@ -2987,9 +3006,12 @@ export default {
|
|||||||
// 从执行中变为执行完毕
|
// 从执行中变为执行完毕
|
||||||
if (this.taskList.data[findIndex].status === 1 && data.jobStatus === 2) {
|
if (this.taskList.data[findIndex].status === 1 && data.jobStatus === 2) {
|
||||||
// 移除任务相关信息
|
// 移除任务相关信息
|
||||||
console.log('任务变更', this.jobStatus, this.jobStatus[data.jobStatus + ''])
|
// console.log('任务变更', this.jobStatus, this.jobStatus[data.jobStatus + ''])
|
||||||
this.taskList.data[findIndex].statusName = this.jobStatus[data.jobStatus + '']
|
// this.taskList.data[findIndex].statusName = this.jobStatus[data.jobStatus + '']
|
||||||
taskListResource[findIndex].statusName = this.jobStatus[data.jobStatus + '']
|
// taskListResource[findIndex].statusName = this.jobStatus[data.jobStatus + '']
|
||||||
|
taskListResource.splice(findIndex, 1)
|
||||||
|
this.getTaskList()
|
||||||
|
this.removeTaskTarget(data.jobId)
|
||||||
}
|
}
|
||||||
if (data.jobStatus === 1 && this.detailUav.id === data.jobId) {
|
if (data.jobStatus === 1 && this.detailUav.id === data.jobId) {
|
||||||
this.updateUavInfo(data.sarStatus)
|
this.updateUavInfo(data.sarStatus)
|
||||||
|
|||||||
@ -48,122 +48,34 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.task-item {
|
.task-item {
|
||||||
height: 40px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: calc(100% - 5px);
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin: 8px 0;
|
margin: 8px 0;
|
||||||
|
border: 1px solid $--color-border-1;
|
||||||
.left-part {
|
padding: 8px 15px;
|
||||||
padding: 0 8px;
|
|
||||||
background: rgba(51, 51, 51, 0.6);
|
|
||||||
border-radius: 4px;
|
|
||||||
flex: 1;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
border-radius: 6px;
|
||||||
justify-content: space-between;
|
background-color: $--color-black-3-alpha;
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.task-progress-bar {
|
&:hover {
|
||||||
position: absolute;
|
background-color: $--color-black-3;
|
||||||
height: 100%;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
background: #43522c;
|
|
||||||
//z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.execute-info {
|
>p {
|
||||||
z-index: 1;
|
color: $--color-text-2;
|
||||||
display: flex;
|
line-height: 24px;
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
// width: 150px;
|
|
||||||
|
|
||||||
.execute-type-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border-radius: 50%;
|
|
||||||
margin-right: 4px;
|
|
||||||
border: 1px solid $--color-text-1;
|
|
||||||
|
|
||||||
>i {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-0 {
|
|
||||||
border: 1px solid #a45d35;
|
|
||||||
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
|
||||||
0 0 10px rgba(164, 93, 53, 0.6),
|
|
||||||
0 0 20px rgba(164, 93, 53, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-1 {
|
|
||||||
border: 1px solid #39cf0b;
|
|
||||||
box-shadow: 0 0 5px rgba(17, 172, 38, 0.8),
|
|
||||||
0 0 10px rgba(17, 172, 38, 0.6),
|
|
||||||
0 0 20px rgba(17, 172, 38, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-2 {
|
|
||||||
border: 1px solid $--color-text-1;
|
|
||||||
box-shadow: 0 0 2px rgba(250, 250, 250, 0.8),
|
|
||||||
0 0 6px rgba(250, 250, 250, 0.6),
|
|
||||||
0 0 14px rgba(250, 250, 250, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-3 {
|
|
||||||
border: 1px solid #a45d35;
|
|
||||||
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
|
||||||
0 0 10px rgba(164, 93, 53, 0.6),
|
|
||||||
0 0 20px rgba(164, 93, 53, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-4 {
|
|
||||||
border: 1px solid #893654;
|
|
||||||
box-shadow: 0 0 5px rgba(137, 54, 84, 0.8),
|
|
||||||
0 0 10px rgba(137, 54, 84, 0.6),
|
|
||||||
0 0 20px rgba(137, 54, 84, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.execute-state-5 {
|
|
||||||
border: 1px solid #681c1f;
|
|
||||||
box-shadow: 0 0 5px rgba(104, 28, 31, 0.8),
|
|
||||||
0 0 10px rgba(104, 28, 31, 0.6),
|
|
||||||
0 0 20px rgba(104, 28, 31, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-execute {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 14px;
|
|
||||||
width: 90px;
|
|
||||||
margin-left: 5px;
|
|
||||||
display: inline-block;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-info {
|
.task-info {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
width: 50px;
|
position: absolute;
|
||||||
display: flex;
|
bottom: 0;
|
||||||
justify-content: flex-start;
|
right: 0;
|
||||||
align-items: center;
|
background-color: $--color-black-2;
|
||||||
|
padding: 4px 15px;
|
||||||
|
border-bottom-right-radius: 6px;
|
||||||
|
border-top-left-radius: 6px;
|
||||||
|
|
||||||
>i {
|
>i {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -185,36 +97,6 @@
|
|||||||
color: $--color-green;
|
color: $--color-green;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-time {
|
|
||||||
z-index: 1;
|
|
||||||
color: $--color-text-1;
|
|
||||||
min-width: 140px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-part {
|
|
||||||
width: 40px;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 8px;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
>i {
|
|
||||||
font-size: 14px;
|
|
||||||
cursor: pointer;
|
|
||||||
margin: 2px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.edit-task {
|
|
||||||
color: #ffff00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-task {
|
|
||||||
color: $--color-red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,9 +290,9 @@
|
|||||||
.detail-uav-wrap {
|
.detail-uav-wrap {
|
||||||
width: 430px;
|
width: 430px;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 5px;
|
top: 60px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
height: calc(100vh - 60px);
|
height: calc(100vh - 220px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-info {
|
.detail-info {
|
||||||
@ -1086,35 +968,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-info {
|
|
||||||
z-index: 1;
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
width: 50px;
|
|
||||||
|
|
||||||
>i {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #07e5e5;
|
|
||||||
margin-right: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
>span {
|
|
||||||
color: $--color-orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-name {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-finish {
|
|
||||||
color: $--color-green;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-time {
|
.task-time {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
color: $--color-text-1;
|
color: $--color-text-1;
|
||||||
@ -1183,13 +1036,7 @@
|
|||||||
|
|
||||||
.detail-uav {
|
.detail-uav {
|
||||||
width: 410px;
|
width: 410px;
|
||||||
// position: fixed;
|
height: calc(100vh - 220px);
|
||||||
top: 60px;
|
|
||||||
//bottom: 5px;
|
|
||||||
right: 10px;
|
|
||||||
//right: 510px;
|
|
||||||
height: calc(100vh - 70px);
|
|
||||||
//height: calc(100vh - 620px);
|
|
||||||
transition: 0.2s ease-in-out;
|
transition: 0.2s ease-in-out;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
|
|
||||||
@ -1259,66 +1106,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.target-task-item {
|
|
||||||
height: 40px;
|
|
||||||
margin: 8px 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 8px;
|
|
||||||
background: #333333;
|
|
||||||
border-radius: 4px;
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.task-progress-bar {
|
|
||||||
position: absolute;
|
|
||||||
height: 100%;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
background: #43522c;
|
|
||||||
//z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-info {
|
|
||||||
z-index: 1;
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
width: 50px;
|
|
||||||
|
|
||||||
>i {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #07e5e5;
|
|
||||||
margin-right: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
>span {
|
|
||||||
color: $--color-orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-name {
|
|
||||||
color: $--color-text-1;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-finish {
|
|
||||||
color: $--color-green;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-time {
|
|
||||||
z-index: 1;
|
|
||||||
color: $--color-text-1;
|
|
||||||
min-width: 140px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.uav-span-wrap {
|
.uav-span-wrap {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
@ -1415,3 +1202,114 @@
|
|||||||
::v-deep .el-collapse {
|
::v-deep .el-collapse {
|
||||||
border-top: unset;
|
border-top: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
|
||||||
|
.execute-type-icon {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 4px;
|
||||||
|
border: 1px solid $--color-text-1;
|
||||||
|
|
||||||
|
>i {
|
||||||
|
color: $--color-text-1;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-0 {
|
||||||
|
border: 1px solid #a45d35;
|
||||||
|
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
||||||
|
0 0 10px rgba(164, 93, 53, 0.6),
|
||||||
|
0 0 20px rgba(164, 93, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-1 {
|
||||||
|
border: 1px solid #39cf0b;
|
||||||
|
box-shadow: 0 0 5px rgba(17, 172, 38, 0.8),
|
||||||
|
0 0 10px rgba(17, 172, 38, 0.6),
|
||||||
|
0 0 20px rgba(17, 172, 38, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-2 {
|
||||||
|
border: 1px solid $--color-text-1;
|
||||||
|
box-shadow: 0 0 2px rgba(250, 250, 250, 0.8),
|
||||||
|
0 0 6px rgba(250, 250, 250, 0.6),
|
||||||
|
0 0 14px rgba(250, 250, 250, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-3 {
|
||||||
|
border: 1px solid #a45d35;
|
||||||
|
box-shadow: 0 0 5px rgba(164, 93, 53, 0.8),
|
||||||
|
0 0 10px rgba(164, 93, 53, 0.6),
|
||||||
|
0 0 20px rgba(164, 93, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-4 {
|
||||||
|
border: 1px solid #893654;
|
||||||
|
box-shadow: 0 0 5px rgba(137, 54, 84, 0.8),
|
||||||
|
0 0 10px rgba(137, 54, 84, 0.6),
|
||||||
|
0 0 20px rgba(137, 54, 84, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.execute-state-5 {
|
||||||
|
border: 1px solid #681c1f;
|
||||||
|
box-shadow: 0 0 5px rgba(104, 28, 31, 0.8),
|
||||||
|
0 0 10px rgba(104, 28, 31, 0.6),
|
||||||
|
0 0 20px rgba(104, 28, 31, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-execute {
|
||||||
|
color: $--color-text-1;
|
||||||
|
font-size: 14px;
|
||||||
|
width: calc(100% - 50px);
|
||||||
|
margin-left: 5px;
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
width: 40px;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -75,8 +75,9 @@
|
|||||||
class="task-item"
|
class="task-item"
|
||||||
@click="openSarStatusDetail(item)"
|
@click="openSarStatusDetail(item)"
|
||||||
>
|
>
|
||||||
<div class="left-part">
|
<div class="top-part">
|
||||||
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
|
<!-- <div class="task-progress-bar" :style="'width: ' + item.uavCompletion +'%;'"></div>-->
|
||||||
|
<div class="top-part__left">
|
||||||
<div class="execute-info">
|
<div class="execute-info">
|
||||||
<span
|
<span
|
||||||
class="execute-type-icon"
|
class="execute-type-icon"
|
||||||
@ -85,15 +86,8 @@
|
|||||||
></span>
|
></span>
|
||||||
<span class="task-execute">{{ item.name }}</span>
|
<span class="task-execute">{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="task-info"
|
|
||||||
:style="{ color: dealStatusColor(item.statusName) }"
|
|
||||||
>
|
|
||||||
{{ item.statusName }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="task-time">{{ item.beginTime }}</div>
|
<div class="top-part__right">
|
||||||
</div>
|
|
||||||
<div class="right-part">
|
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:content="item.check ? '隐藏' : '显示'"
|
:content="item.check ? '隐藏' : '显示'"
|
||||||
@ -104,17 +98,6 @@
|
|||||||
@click.stop="toggleTaskSceneShow(item, index)"
|
@click.stop="toggleTaskSceneShow(item, index)"
|
||||||
></i>
|
></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<!-- <el-tooltip
|
|
||||||
v-if="item.status === 0"
|
|
||||||
effect="dark"
|
|
||||||
content="执行"
|
|
||||||
placement="top"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="ri-arrow-up-circle-line"
|
|
||||||
@click.stop="makeTaskUavFly(item, index)"
|
|
||||||
></i>
|
|
||||||
</el-tooltip> -->
|
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
effect="dark"
|
effect="dark"
|
||||||
content="结束任务"
|
content="结束任务"
|
||||||
@ -126,17 +109,16 @@
|
|||||||
@click.stop="stopTask(item, index)"
|
@click.stop="stopTask(item, index)"
|
||||||
></i>
|
></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<!-- <el-tooltip
|
</div>
|
||||||
effect="dark"
|
</div>
|
||||||
content="重新执行"
|
<p>无人机名称: {{ item.uav }}</p>
|
||||||
placement="top"
|
<p>雷达名称: {{ item.sar }}</p>
|
||||||
v-if="item.status === 2"
|
<p>开始时间:{{ item.beginTime }}</p>
|
||||||
|
<div
|
||||||
|
class="task-info"
|
||||||
|
:style="{ color: dealStatusColor(item.statusName) }"
|
||||||
>
|
>
|
||||||
<i
|
{{ item.statusName }}
|
||||||
class="ri-restart-line"
|
|
||||||
@click.stop="reRunTask(item, index)"
|
|
||||||
></i>
|
|
||||||
</el-tooltip> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -292,50 +274,6 @@
|
|||||||
<i class="el-icon-info device-lock" @click="showUavMore"></i>
|
<i class="el-icon-info device-lock" @click="showUavMore"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="target-task-list">-->
|
|
||||||
<!-- <div class="target-task-item" v-for="item in detailInfo.taskList" :key="item.id">-->
|
|
||||||
<!-- <div class="execute-info">-->
|
|
||||||
<!-- <span class="execute-type-icon" :class="'execute-state-' + item.status"><i class="ri-dv-line"></i></span>-->
|
|
||||||
<!-- <span class="task-execute">{{ item.name }}</span>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div class="task-time">{{item.beginTime}}</div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<div class="picture-list">
|
|
||||||
<div>回传图像:</div>
|
|
||||||
<div
|
|
||||||
v-for="item in detailInfo.pictureList"
|
|
||||||
:key="item.createTime"
|
|
||||||
class="picture-list-item"
|
|
||||||
>
|
|
||||||
<div class="picture-item-image">
|
|
||||||
<el-image
|
|
||||||
style="width: 40px; height: 40px"
|
|
||||||
:src="item.url"
|
|
||||||
:preview-src-list="[item.url]"
|
|
||||||
>
|
|
||||||
</el-image>
|
|
||||||
</div>
|
|
||||||
<div class="picture-item-info">
|
|
||||||
<div>
|
|
||||||
拍摄任务:{{ item.taskName }} | 拍摄载荷:{{
|
|
||||||
item.loaderName
|
|
||||||
}}
|
|
||||||
</div>
|
|
||||||
<div>拍摄时间:{{ item.createTime }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="picture-command">
|
|
||||||
<i
|
|
||||||
class="iconfont icon-dt-icon-dingwei"
|
|
||||||
@click="lockHistoryPicture(item)"
|
|
||||||
></i>
|
|
||||||
<i
|
|
||||||
class="iconfont icon-quanjushijiao-copy"
|
|
||||||
@click="toggleHistoryPicture(item)"
|
|
||||||
></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</dt-card>
|
</dt-card>
|
||||||
</right-slide>
|
</right-slide>
|
||||||
|
|||||||
@ -1524,7 +1524,7 @@ export default {
|
|||||||
},
|
},
|
||||||
//#endregion
|
//#endregion
|
||||||
sarChange(val) {
|
sarChange(val) {
|
||||||
this.moveInfoBar = val
|
// this.moveInfoBar = val
|
||||||
},
|
},
|
||||||
|
|
||||||
//#region ais船
|
//#region ais船
|
||||||
|
|||||||
@ -147,18 +147,18 @@ module.exports = {
|
|||||||
css: {
|
css: {
|
||||||
loaderOptions: {
|
loaderOptions: {
|
||||||
postcss: {
|
postcss: {
|
||||||
// plugins: [
|
plugins: [
|
||||||
// require('postcss-pxtorem')({
|
require('postcss-pxtorem')({
|
||||||
// rootValue: 192, // 正常适配
|
rootValue: 192, // 正常适配
|
||||||
// // rootValue: 280, // 3840 * 2160
|
// rootValue: 280, // 3840 * 2160
|
||||||
// propList: ['*'], // 可以从px更改为rem的属性
|
propList: ['*'], // 可以从px更改为rem的属性
|
||||||
// selectorBlackList: [
|
selectorBlackList: [
|
||||||
// // 匹配不被转换为rem的选择器
|
// 匹配不被转换为rem的选择器
|
||||||
// 'super-cesium-timeline-icon16'
|
'super-cesium-timeline-icon16'
|
||||||
// // 'card-position'
|
// 'card-position'
|
||||||
// ]
|
]
|
||||||
// })
|
})
|
||||||
// ]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user