提交 4da0d628 作者: 温凯

fix:飞行计划新增异常状态

上级 0bb9e2d4
......@@ -6,19 +6,10 @@
</div>
<div class="dialog-content">
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-date-picker
v-model="form.time"
:type="task.taskType == 1 ? 'datetime' : 'datetimerange'"
range-separator="至"
start-placeholder="请选择任务开始时间"
end-placeholder="请选择任务结束时间"
placeholder="选择日期时间"
size="mini"
popper-class="mmc"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions"
style="margin-bottom: 24px; width: 100%;"
></el-date-picker>
<el-date-picker v-model="form.time" :type="task.taskType == 1 ? 'datetime' : 'datetimerange'"
range-separator="至" start-placeholder="请选择任务开始时间" end-placeholder="请选择任务结束时间" placeholder="选择日期时间" size="mini"
popper-class="mmc" value-format="yyyy-MM-dd HH:mm:ss" :picker-options="pickerOptions"
style="margin-bottom: 24px; width: 100%;"></el-date-picker>
<el-form-item label="任务库:" prop="taskId">
{{ task.name }}
</el-form-item>
......@@ -28,7 +19,8 @@
</el-form>
<div class="task-add-btn">
<el-button type="danger" size="medium" class="btn btn--cancel" @click="close">取消</el-button>
<el-button type="primary" size="medium" :loading="confirmLoading" class="btn btn--ok" @click="onConfirm">确认</el-button>
<el-button type="primary" size="medium" :loading="confirmLoading" class="btn btn--ok"
@click="onConfirm">确认</el-button>
</div>
</div>
</div>
......@@ -45,7 +37,7 @@ export default {
props: {
task: {
type: Object,
default(){
default() {
return {}
}
}
......@@ -71,14 +63,23 @@ export default {
watch: {
},
async mounted() {
if(this.task.taskType == 1){
// 定时
this.form.time = Moment(this.task.taskStartTime).format('YYYY-MM-DD HH:mm:ss');
if (this.task.taskType == 1) {
if (this.task.taskStartTime == '/') {
this.form.time = null
} else if (this.task.taskStartTime) {
// 定时
this.form.time = Moment(this.task.taskStartTime).format('YYYY-MM-DD HH:mm:ss');
}
} else {
// 周期
this.form.time = [Moment(this.task.taskStartTime).format('YYYY-MM-DD HH:mm:ss'), Moment(this.task.taskEndTime).format('YYYY-MM-DD HH:mm:ss')];
if (this.task.taskStartTime == '/' || this.task.taskEndTime == '/') {
this.form.time = null
} else if (this.task.taskStartTime && this.task.taskEndTime) {
// 周期
this.form.time = [Moment(this.task.taskStartTime).format('YYYY-MM-DD HH:mm:ss'), Moment(this.task.taskEndTime).format('YYYY-MM-DD HH:mm:ss')];
}
}
},
methods: {
/**
......@@ -89,18 +90,18 @@ export default {
let params = {
id: this.task.id
}
if(this.task.taskType == 1){
params.taskStartTime = Moment(this.form.time).valueOf();
params.taskEndTime =null
if (this.task.taskType == 1) {
params.taskStartTime = Moment(this.form.time).valueOf();
params.taskEndTime = null
} else {
params.taskStartTime = Moment(this.form.time[0]).valueOf();
params.taskEndTime = Moment(this.form.time[1]).valueOf();
}
if (valid) {
this.confirmLoading = true;
this.rootNode.$emit("taskInfoUpdateTime", {
data: params,
data: params,
callback: (res) => {
console.log("taskInfoUpdateTime res", res);
this.confirmLoading = false;
......@@ -117,7 +118,7 @@ export default {
}
});
},
close(){
close() {
this.$emit('close');
}
},
......@@ -196,6 +197,7 @@ export default {
}
$height: 32px;
.el-form-item__content {
line-height: $height;
height: $height;
......@@ -204,6 +206,6 @@ export default {
.el-form-item__label {
line-height: $height;
}
}
</style>
\ No newline at end of file
......@@ -14,6 +14,9 @@
<div class="timed-task-header">
<div class="header__column flex2">时间</div>
<div class="header__column flex2">航线名</div>
<div class="header__column flex2">状态</div>
<div class="header__column flex2">异常状态</div>
<div class="header__column">操作</div>
</div>
<div class="timed-task-main">
......@@ -38,6 +41,16 @@
<span>{{item.reouteName}}</span>
</el-tooltip>
</div>
<div class="row__column flex2">
<el-tooltip class="item" effect="dark" :content="item.abnormal" placement="top-start">
<span>{{item.abnormal}}</span>
</el-tooltip>
</div>
<div class="row__column flex2">
<el-tooltip class="item" effect="dark" :content="item.abnormalName" placement="top-start">
<span>{{item.abnormalName}}</span>
</el-tooltip>
</div>
<div class="row__column ctrl">
<el-tooltip content="删除" placement="top">
<i class="el-icon-delete" @click="onDel(item)"></i>
......
......@@ -31,7 +31,7 @@
<i class="el-icon-date" @click="onOpenPlan(item)"></i>
</el-tooltip>
<el-tooltip content="编辑" placement="top" v>
<i class="el-icon-edit" @click="onOpenEdit(item)" v-if="item.status !== '执行中' && item.status !== '已完成'&&item.taskStartTime !='/'"></i>
<i class="el-icon-edit" @click="onOpenEdit(item)" v-if="item.status !== '执行中' && item.status !== '已完成'"></i>
</el-tooltip>
<!-- <el-tooltip content="开关" placement="top">
<i class="el-icon-turn-off"></i>
......
......@@ -18,43 +18,23 @@
<div class="nest-children" :class="{ collapse: listCollapse }">
<template v-if="data && data.deviceDOList && data.deviceDOList.length">
<div class="nest-device-list">
<div
v-for="device in data.deviceDOList"
:key="`device_${device.id}`"
class="nest-device-item"
:class="{ online: device.isOnline }"
>
<div v-for="device in data.deviceDOList" :key="`device_${device.id}`" class="nest-device-item"
:class="{ online: device.isOnline }">
<!-- 最前面的选项框 -->
<div class="title-box">
<el-tooltip
:content="device.isOnline? '在线' : '离线'"
placement="top"
:enterable="false"
>
<el-checkbox
:value="hangar && device.deviceId === hangar.deviceId && device.isCheck"
@change="(e) => handClick(e, device)"
></el-checkbox>
<el-tooltip :content="device.isOnline ? '在线' : '离线'" placement="top" :enterable="false">
<el-checkbox :value="hangar && device.deviceId === hangar.deviceId && device.isCheck"
@change="(e) => handClick(e, device)"></el-checkbox>
</el-tooltip>
<span :title="device.name" class="title">{{ device.name }}</span>
<span class="li" v-if="!device.isOnline">(离线)</span>
<span class="zai" v-else>(在线)</span>
<span
:title="device.comment || '异常'"
v-if="device.state == 2"
style="color: red"
class="status-icon iconfont icon-yichang1"
></span>
<span
:title="device.comment || '维修'"
v-if="device.state == 3"
class="status-icon iconfont icon-weixiu"
></span>
<span
:title="device.comment || '保养'"
v-if="device.state == 4"
class="status-icon iconfont icon-baoyang"
></span>
<span :title="device.comment || '异常'" v-if="device.state == 2" style="color: red"
class="status-icon iconfont icon-yichang1"></span>
<span :title="device.comment || '维修'" v-if="device.state == 3"
class="status-icon iconfont icon-weixiu"></span>
<span :title="device.comment || '保养'" v-if="device.state == 4"
class="status-icon iconfont icon-baoyang"></span>
</div>
<div class="icon-box">
......@@ -62,10 +42,7 @@
<span @click="onLocation(device)" class="iconfont fr icon-dingwei1" v-hover></span>
<!-- 相同部门不需要接管 -->
<span class="takeover" title="接管" @click="onTakeOver(device, data.name)" v-hover>
<img
src="./assets/images/jieguan_active.svg"
v-if="device.currentOperator === userInfo.id"
/>
<img src="./assets/images/jieguan_active.svg" v-if="device.currentOperator === userInfo.id" />
<img src="./assets/images/jieguan.svg" v-else />
</span>
</div>
......@@ -76,16 +53,9 @@
<Item v-for="(item, i) in data.child" :data="item" :key="`device_child_${i}`" />
</div>
</div>
<el-dialog
title="接管确认"
:visible.sync="takeOverVisible"
width="20%"
:modal-append-to-body="false"
:append-to-body="false"
:close-on-click-modal="false"
@close="takeLoading = false"
>
<span>是否请求接管 {{departmentName}} 下的 {{takeDevice.name}}</span>
<el-dialog title="接管确认" :visible.sync="takeOverVisible" width="20%" :modal-append-to-body="false"
:append-to-body="false" :close-on-click-modal="false" @close="takeLoading = false">
<span>是否请求接管 {{ departmentName }} 下的 {{ takeDevice.name }}</span>
<span slot="footer" class="dialog-footer">
<el-button @click="takeOverVisible = false">取 消</el-button>
<el-button @click="onForceTakeOver" type="danger" :loading="forceTakeLoading">强制接管</el-button>
......@@ -175,7 +145,12 @@ export default {
let res = await Control_API.applyControlUav({
deviceId: this.takeDevice.id,
});
console.log("申请接管");
setTimeout(() => {
if (this.takeLoading) {
this.$message.error(`申请接管失败`);
this.takeLoading = false
}
}, 5500);
if (res.code === 0) {
this.bus.$on("uas-device-take-agree-message", this.onTakeAgree);
this.bus.$on("uas-device-take-refuse-message", this.onTakeAgree);
......@@ -183,6 +158,12 @@ export default {
this.$message.warning("申请接管失败");
this.takeLoading = false;
}
setTimeout(() => {
if (this.takeLoading) {
this.$message.error(`申请接管失败`);
this.takeLoading = false
}
}, 5500);
},
/**
* 强制接管
......@@ -198,7 +179,7 @@ export default {
this.takeOverVisible = false;
this.$emit("refresh");
}
} catch (e) {}
} catch (e) { }
this.forceTakeLoading = false;
},
typeName(val) {
......@@ -363,6 +344,12 @@ export default {
// 不一致则申请接管
this.takeDevice = hangar;
this.takeOverVisible = true;
setTimeout(() => {
if (this.takeLoading) {
this.$message.error(`申请接管失败`);
this.takeLoading = false
}
}, 5500);
}
} else if (
// 判断当前接管人是不是自已, 是则提示退出接管, 不是则提示是否强制接管
......@@ -382,11 +369,18 @@ export default {
this.$message.success(`已退出接管${hangar.name}`);
this.$emit("refresh");
}
} catch (e) {}
} catch (e) { }
} else {
// 已被接管且接管人不是自已的情况下, 需要申请接管
this.takeDevice = hangar;
this.takeOverVisible = true;
// 5秒后没收到通知认定接管失败
setTimeout(() => {
if (this.takeLoading) {
this.$message.error(`申请接管失败`);
this.takeLoading = false
}
}, 5500);
}
},
},
......@@ -488,6 +482,7 @@ export default {
.title-box::v-deep {
height: 100%;
white-space: nowrap;
.el-checkbox {
&.is-checked {
.el-checkbox__input {
......@@ -533,6 +528,7 @@ export default {
font-weight: 400;
margin-left: 8px;
}
.status-icon {
margin-left: 12px;
font-size: 14px;
......@@ -566,16 +562,19 @@ export default {
}
}
}
.li {
font-size: 16px;
color: #9baaac;
font-weight: 400;
}
.zai {
color: #31db24;
font-weight: 400;
font-size: 16px;
}
.type {
cursor: default;
font-weight: 400;
......@@ -589,6 +588,7 @@ export default {
color: #fff;
background-color: #224563;
}
.el-checkbox__inner::v-deep {
background: transparent !important;
}
......
......@@ -8,43 +8,27 @@
<img class="level-icon" src="./assets/images/uav_item2.svg" v-if="level === 2" />
<img class="level-icon" src="./assets/images/uav_item3.svg" v-if="level === 3" />
<div class="org-name" :title="data.name">{{ data.name }}</div>
<i
class="refresh-icon el-icon-refresh-right"
v-if="level === 1"
@click.stop="$emit('refresh')"
/>
<i class="refresh-icon el-icon-refresh-right" v-if="level === 1" @click.stop="$emit('refresh')" />
</div>
<div class="online-info">
(共 {{data.onLineCount + data.offLineCount}}
<span
class="ml10"
:class="{ online: data.onLineCount }"
>{{ data.onLineCount }} 在线</span>
(共 {{ data.onLineCount + data.offLineCount }}
<span class="ml10" :class="{ online: data.onLineCount }">{{ data.onLineCount }} 在线</span>
/
{{ data.offLineCount }} 离线)
</div>
</div>
<div class="uav-item-child-box" :class="{ collapse: data.collapse }">
<Item
v-for="child in data.child"
:key="child.deptId"
:data="child"
:level="level+1"
@refresh="$emit('refresh')"
/>
<div
class="device-item-box"
:class="{ online: device.isOnline }"
v-for="device in data.deviceDOList"
:key="`device_${device.deviceId}`"
>
<Item v-for="child in data.child" :key="child.deptId" :data="child" :level="level + 1"
@refresh="$emit('refresh')" />
<div class="device-item-box" :class="{ online: device.isOnline }" v-for="device in data.deviceDOList"
:key="`device_${device.deviceId}`">
<div class="device-name">
<!-- <span
style="margin-right:10px"
:class="device.status==1&&device.currentOperator==1? 'blue' : device.status==1&&device.currentOperator!=1 ?'yellow':'' "
:title="device.name"
>{{device.name}}</span>-->
<span style="margin-right:10px" :class="'blue'" :title="device.name">{{device.name}}</span>
<span style="margin-right:10px" :class="'blue'" :title="device.name">{{ device.name }}</span>
<span style="color:#31DB24 " class="dib" v-if="device.isOnline">(在线)</span>
<span v-else class="dib">(离线)</span>
<div class="symbol-icon-box">
......@@ -53,13 +37,13 @@
<img src="./assets/images/I.svg" />
</div>
</template>
<template v-if="device.modelName && device.modelName.includes('入云龙2')">
<template v-if="device.modelName && device.modelName.includes('入云龙2')">
<div class="uav_version status-icon cp">
<img src="./assets/images/I.svg" />
<img src="./assets/images/I.svg" />
</div>
</template>
<template v-if="device.modelName && device.modelName.includes('插翅虎')">
<template v-if="device.modelName && device.modelName.includes('插翅虎')">
<div class="uav_version status-icon cp">
<img src="./assets/images/cq.svg" />
</div>
......@@ -74,41 +58,23 @@
</div>
</div>
<div class="device-fns">
<div v-if="showVideoPanel"
class="iconfont icon-luxiang_xianxing"
:class="{ active: uav && device.deviceId === uav.deviceId && uav.showPlayer }"
title="视频"
@click="onShowPlayer(device)"
v-hover
></div>
<div
class="iconfont icon-kongzhi_xianxing"
:class="{ active: uav && device.deviceId === uav.deviceId && uav.showPanel }"
title="控制面板"
@click="onShowPanel(device)"
v-hover
></div>
<div v-if="showVideoPanel" class="iconfont icon-luxiang_xianxing"
:class="{ active: uav && device.deviceId === uav.deviceId && uav.showPlayer }" title="视频"
@click="onShowPlayer(device)" v-hover></div>
<div class="iconfont icon-kongzhi_xianxing"
:class="{ active: uav && device.deviceId === uav.deviceId && uav.showPanel }" title="控制面板"
@click="onShowPanel(device)" v-hover></div>
<div class="takeover" title="接管" @click="onTakeOver(device, data.name)" v-hover>
<img
src="./assets/images/jieguan_active.svg"
v-if="device.currentOperator === userInfo.id"
/>
<img src="./assets/images/jieguan_active.svg" v-if="device.currentOperator === userInfo.id" />
<img src="./assets/images/jieguan.svg" v-else />
</div>
</div>
</div>
</div>
</div>
<el-dialog
title="接管确认"
:visible.sync="takeOverVisible"
width="20%"
:modal-append-to-body="false"
:append-to-body="false"
:close-on-click-modal="false"
@close="takeLoading = false"
>
<span>是否请求接管 {{departmentName}} 下的 {{takeDevice.name}}</span>
<el-dialog title="接管确认" :visible.sync="takeOverVisible" width="20%" :modal-append-to-body="false"
:append-to-body="false" :close-on-click-modal="false" @close="takeLoading = false">
<span>是否请求接管 {{ departmentName }} 下的 {{ takeDevice.name }}</span>
<span slot="footer" class="dialog-footer">
<el-button @click="takeOverVisible = false">取 消</el-button>
<el-button @click="onForceTakeOver" type="danger" :loading="forceTakeLoading">强制接管</el-button>
......@@ -225,6 +191,12 @@ export default {
this.$message.warning("申请接管失败");
this.takeLoading = false;
}
setTimeout(() => {
if (this.takeLoading) {
this.$message.error(`申请接管失败`);
this.takeLoading = false
}
}, 5500);
},
/**
* 强制接管
......@@ -240,7 +212,7 @@ export default {
this.takeOverVisible = false;
this.$emit("refresh");
}
} catch (e) {}
} catch (e) { }
this.forceTakeLoading = false;
},
......@@ -282,7 +254,7 @@ export default {
this.$message.success(`已退出接管${uav.name}`);
this.$emit("refresh");
}
} catch (e) {}
} catch (e) { }
} else {
// 已被接管且接管人不是自已的情况下, 需要申请接管
this.takeDevice = uav;
......@@ -574,6 +546,7 @@ export default {
height: 100%;
}
}
.iconfont {
font-size: 24px;
margin-right: 8px;
......@@ -587,40 +560,50 @@ export default {
}
}
}
.goodsName_two {
background-image: url("./assets/images/goodsName_two.svg");
background-size: 100% 100%;
}
.goodsName_one {
background-image: url("./assets/images/goodsName_one.svg");
background-size: 100% 100%;
}
}
.green {
color: #31db24;
}
.red {
color: red;
}
.item_items {
align-items: center;
}
.level-icon {
width: 16px;
margin-right: 6px;
}
.refresh-icon {
width: 16px;
margin-left: 34px;
}
.jcsb {
justify-content: left;
}
.status-icon {
margin-left: 12px;
font-size: 14px;
color: RGBA(251, 192, 1, 1);
}
.uav_version {
margin-top: 1px;
// width: 14px;
......@@ -634,6 +617,7 @@ export default {
color: #fff;
font-size: 8px;
}
.symbol-icon-box {
display: flex;
align-items: center;
......
......@@ -76,7 +76,7 @@ export default {
default: false,
},
//使用视频面板
showVideoPanel:{
showVideoPanel: {
type: Boolean,
default: false,
},
......@@ -109,10 +109,10 @@ export default {
watch: {
'scene': {
handler(newVal) {
if(newVal){
if (newVal) {
this.reset()
}
},
},
userInfo: {
......@@ -289,6 +289,10 @@ export default {
});
this.$message.success("已拒绝接管");
});
// 5秒后自动关闭弹框
setTimeout(() => {
this.$confirm.close(); // 关闭弹框
}, 5000);
break;
// 接管申请同意
......@@ -338,7 +342,7 @@ export default {
let cesiumEl = document.querySelector(".cesium-viewer");
// 判断cesium的父元素是否是layer-container来确定当前是否已经切换, 未切换就退出
if(cesiumEl.parentElement.id === 'layer-container'){
if (cesiumEl.parentElement.id === 'layer-container') {
return;
}
let cesiumParentEl = document.querySelector("#layer-container");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论