feat:修改任务列表样式,增加任务完成后自动清除目标区域,更新数据等

This commit is contained in:
wxs 2026-02-03 17:42:24 +08:00
parent 303c6fc541
commit 2eb9d77a18
8 changed files with 475 additions and 652 deletions

View File

@ -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>

View File

@ -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)
}) })

View File

@ -26,183 +26,59 @@
} }
.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;
padding: 8px 15px;
box-sizing: border-box;
border-radius: 6px;
background-color: $--color-black-3-alpha;
.left-part { &:hover {
padding: 0 8px; background-color: $--color-black-3;
background: rgba(51, 51, 51, 0.6);
border-radius: 4px;
flex: 1;
height: 100%;
position: relative;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
.task-progress-bar {
position: absolute;
height: 100%;
left: 0;
top: 0;
border-radius: 4px;
background: #43522c;
//z-index: -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: 85px;
margin-left: 5px;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
}
.task-info {
z-index: 1;
width: 50px;
display: flex;
justify-content: flex-start;
align-items: center;
>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;
}
} }
.right-part { >p {
width: 60px; line-height: 24px;
height: 100%; color: $--color-text-2;
display: flex; padding-left: 3px;
justify-content: space-between; }
align-items: center;
padding: 0 5px; .task-info {
z-index: 1;
position: absolute;
bottom: 0;
right: 0;
background-color: $--color-black-2;
padding: 4px 15px;
border-bottom-right-radius: 6px;
border-top-left-radius: 6px;
>i { >i {
font-size: 16px;
color: #07e5e5;
margin-right: 6px;
}
>span {
color: $--color-orange;
}
.task-name {
color: $--color-text-1;
font-size: 14px; font-size: 14px;
cursor: pointer; margin-right: 2px;
margin: 2px 0;
} }
.edit-task { .task-finish {
color: #ffff00; color: $--color-green;
}
.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;
}
}
}

View File

@ -30,91 +30,75 @@
: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="execute-info" @click="openTaskLineDetail(item)"> <div class="top-part__left">
<span <div class="execute-info" @click="openTaskLineDetail(item)">
class="execute-type-icon" <span
:class="'execute-state-' + item.status" class="execute-type-icon"
><i class="ri-playstation-line"></i :class="'execute-state-' + item.status"
></span> ><i class="ri-playstation-line"></i
<span class="task-execute">{{ item.name }}</span> ></span>
<span class="task-execute">{{ item.name }}</span>
</div>
</div> </div>
<div <div class="top-part__right">
class="task-info" <el-tooltip
:style="{ color: dealStatusColor(item.statusName) }" effect="dark"
> :content="item.check ? '隐藏' : '显示'"
{{ item.statusName }} placement="top"
<!-- <i class="el-icon-camera"></i>--> >
<!-- <span class="task-name">{{ item.name }}</span>--> <i
<!-- <span :class="{ 'task-finish': item.isFinish }">{{--> :class="item.check ? 'ri-eye-off-line' : 'ri-eye-line'"
<!-- item.taskProgressName--> @click.stop="toggleTaskSceneShow(item, index)"
<!-- }}</span>--> ></i>
</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
effect="dark"
content="重新执行"
placement="top"
v-if="item.status === 2"
>
<i
class="ri-restart-line"
@click.stop="makeTaskUavFly(item, index)"
></i>
</el-tooltip>
<el-dropdown
@command="handleCommand($event, item)"
placement="bottom"
size="small"
>
<span class="el-dropdown-link">
<i class="ri-more-fill"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">修改名称</el-dropdown-item>
<el-dropdown-item command="copy">复制</el-dropdown-item>
<el-dropdown-item command="remove">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> </div>
<div class="task-time">{{ item.beginTime }}</div>
</div> </div>
<div class="right-part"> <p>无人机名称: {{ item.uav }}</p>
<el-tooltip <p>雷达名称: {{ item.sar }}</p>
effect="dark" <p>开始时间{{ item.beginTime }}</p>
:content="item.check ? '隐藏' : '显示'" <div
placement="top" class="task-info"
> :style="{ color: dealStatusColor(item.statusName) }"
<i >
:class="item.check ? 'ri-eye-off-line' : 'ri-eye-line'" {{ item.statusName }}
@click.stop="toggleTaskSceneShow(item, index)"
></i>
</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
effect="dark"
content="重新执行"
placement="top"
v-if="item.status === 2"
>
<i
class="ri-restart-line"
@click.stop="makeTaskUavFly(item, index)"
></i>
</el-tooltip>
<el-dropdown
@command="handleCommand($event, item)"
placement="bottom"
size="small"
>
<span class="el-dropdown-link">
<i class="ri-more-fill"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">修改名称</el-dropdown-item>
<el-dropdown-item command="copy">复制</el-dropdown-item>
<el-dropdown-item command="remove">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-tooltip effect="dark" content="修改名称" placement="top">
<i
class="el-icon-edit-outline"
@click.stop="editTaskName(item)"
></i>
</el-tooltip>
<el-tooltip effect="dark" content="复制" placement="top">
<i class="ri-file-copy-2-line" @click.stop="copyTask(item)"></i>
</el-tooltip>
<el-tooltip effect="dark" content="删除" placement="top">
<i
class="el-icon-close delete-task"
@click.stop="deleteTask(item)"
></i>
</el-tooltip> -->
</div> </div>
</div> </div>
</div> </div>

View File

@ -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]
@ -2994,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)

View File

@ -48,171 +48,53 @@
} }
.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;
padding: 8px 15px;
box-sizing: border-box;
border-radius: 6px;
background-color: $--color-black-3-alpha;
.left-part { &:hover {
padding: 0 8px; background-color: $--color-black-3;
background: rgba(51, 51, 51, 0.6);
border-radius: 4px;
flex: 1;
height: 100%;
position: relative;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
.task-progress-bar {
position: absolute;
height: 100%;
left: 0;
top: 0;
border-radius: 4px;
background: #43522c;
//z-index: -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: 90px;
margin-left: 5px;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
}
.task-info {
z-index: 1;
width: 50px;
display: flex;
justify-content: flex-start;
align-items: center;
>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;
}
} }
.right-part { >p {
width: 40px; color: $--color-text-2;
height: 100%; line-height: 24px;
display: flex; }
justify-content: space-between;
padding: 0 8px; .task-info {
align-items: center; z-index: 1;
position: absolute;
bottom: 0;
right: 0;
background-color: $--color-black-2;
padding: 4px 15px;
border-bottom-right-radius: 6px;
border-top-left-radius: 6px;
>i { >i {
font-size: 16px;
color: #07e5e5;
margin-right: 6px;
}
>span {
color: $--color-orange;
}
.task-name {
color: $--color-text-1;
font-size: 14px; font-size: 14px;
cursor: pointer; margin-right: 2px;
margin: 2px 0;
} }
.edit-task { .task-finish {
color: #ffff00; color: $--color-green;
}
.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 - 270px);
} }
.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;
@ -1188,7 +1041,7 @@
//bottom: 5px; //bottom: 5px;
right: 10px; right: 10px;
//right: 510px; //right: 510px;
height: calc(100vh - 70px); height: calc(100vh - 270px);
//height: calc(100vh - 620px); //height: calc(100vh - 620px);
transition: 0.2s ease-in-out; transition: 0.2s ease-in-out;
z-index: 2; z-index: 2;
@ -1259,66 +1112,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 +1208,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;
}
}
}

View File

@ -75,68 +75,50 @@
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="execute-info"> <div class="top-part__left">
<span <div class="execute-info">
class="execute-type-icon" <span
:class="'execute-state-' + item.status" class="execute-type-icon"
><i class="ri-playstation-line"></i :class="'execute-state-' + item.status"
></span> ><i class="ri-playstation-line"></i
<span class="task-execute">{{ item.name }}</span> ></span>
<span class="task-execute">{{ item.name }}</span>
</div>
</div> </div>
<div <div class="top-part__right">
class="task-info" <el-tooltip
:style="{ color: dealStatusColor(item.statusName) }" effect="dark"
> :content="item.check ? '隐藏' : '显示'"
{{ item.statusName }} placement="top"
>
<i
:class="item.check ? 'ri-eye-off-line' : 'ri-eye-line'"
@click.stop="toggleTaskSceneShow(item, index)"
></i>
</el-tooltip>
<el-tooltip
effect="dark"
content="结束任务"
placement="top"
v-if="item.status === 1"
>
<i
class="ri-stop-circle-line"
@click.stop="stopTask(item, index)"
></i>
</el-tooltip>
</div> </div>
<div class="task-time">{{ item.beginTime }}</div>
</div> </div>
<div class="right-part"> <p>无人机名称: {{ item.uav }}</p>
<el-tooltip <p>雷达名称: {{ item.sar }}</p>
effect="dark" <p>开始时间{{ item.beginTime }}</p>
:content="item.check ? '隐藏' : '显示'" <div
placement="top" class="task-info"
> :style="{ color: dealStatusColor(item.statusName) }"
<i >
:class="item.check ? 'ri-eye-off-line' : 'ri-eye-line'" {{ item.statusName }}
@click.stop="toggleTaskSceneShow(item, index)"
></i>
</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
effect="dark"
content="结束任务"
placement="top"
v-if="item.status === 1"
>
<i
class="ri-stop-circle-line"
@click.stop="stopTask(item, index)"
></i>
</el-tooltip>
<!-- <el-tooltip
effect="dark"
content="重新执行"
placement="top"
v-if="item.status === 2"
>
<i
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>
@ -410,41 +348,41 @@
</div> </div>
</el-collapse-item> </el-collapse-item>
<!-- <el-collapse-item title="回传图像" name="5"> <!-- <el-collapse-item title="回传图像" name="5">
<div class="back-image"> <div class="back-image">
<div <div
v-for="item in detailInfo.pictureList" v-for="item in detailInfo.pictureList"
:key="item.time" :key="item.time"
class="picture-list-item" class="picture-list-item"
> >
<div class="picture-item-image"> <div class="picture-item-image">
<el-image <el-image
style="width: 40px; height: 40px" style="width: 40px; height: 40px"
:src="item.url" :src="item.url"
:preview-src-list="[item.url]" :preview-src-list="[item.url]"
> >
</el-image> </el-image>
</div> </div>
<div class="picture-item-info"> <div class="picture-item-info">
<div> <div>
拍摄任务{{ item.taskName }} | 拍摄载荷{{ 拍摄任务{{ item.taskName }} | 拍摄载荷{{
item.loaderName item.loaderName
}} }}
</div>
<div>拍摄时间{{ item.time }}</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>拍摄时间{{ item.time }}</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> </el-collapse-item> -->
</el-collapse-item> -->
</el-collapse> </el-collapse>
</div> </div>
</div> </div>

View File

@ -1524,7 +1524,7 @@ export default {
}, },
//#endregion //#endregion
sarChange(val) { sarChange(val) {
this.moveInfoBar = val // this.moveInfoBar = val
}, },
//#region ais船 //#region ais船