|
|
<template>
|
|
|
<div class="AreaBox">
|
|
|
<div class="areaHead">
|
|
|
<span @dblclick="handleDblClick(areaData.cmdid)">{{
|
|
|
areaData.cmdid
|
|
|
}}</span>
|
|
|
<el-button
|
|
|
type="text"
|
|
|
:icon="areaData.isfavor == 1 ? 'el-icon-star-on' : 'el-icon-star-off'"
|
|
|
@click="addCollectClick"
|
|
|
>{{ areaData.isfavor == 1 ? "取消收藏" : "添加收藏" }}</el-button
|
|
|
>
|
|
|
</div>
|
|
|
<div class="paramsDate">
|
|
|
<h3>日历快速查询</h3>
|
|
|
<el-date-picker
|
|
|
v-model="dateValue"
|
|
|
type="date"
|
|
|
placeholder="选择日期"
|
|
|
format="yyyy 年 MM 月 dd 日"
|
|
|
:picker-options="pickerOptions"
|
|
|
@change="changedate"
|
|
|
@focus="handleDateFocus"
|
|
|
:clearable="false"
|
|
|
>
|
|
|
</el-date-picker>
|
|
|
</div>
|
|
|
<div class="paramsDate">
|
|
|
<h3>通道监拍点</h3>
|
|
|
<!-- <el-radio-group v-model="selectChannelValue" @input="changeChannelId">
|
|
|
<el-radio-button
|
|
|
v-for="item in channelListOption"
|
|
|
:key="item.channelid"
|
|
|
:value="item.channelid"
|
|
|
:label="item.channelid"
|
|
|
>
|
|
|
{{
|
|
|
item.alias !== null && item.alias !== ""
|
|
|
? item.alias
|
|
|
: item.channelname
|
|
|
}}</el-radio-button
|
|
|
>
|
|
|
</el-radio-group> -->
|
|
|
<el-select
|
|
|
v-model="selectChannelValue"
|
|
|
placeholder="请选择通道"
|
|
|
@change="changeChannelId"
|
|
|
ref="multiSelect"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in channelListOption"
|
|
|
:key="item.channelid"
|
|
|
:label="
|
|
|
item.alias !== null && item.alias !== ''
|
|
|
? item.alias
|
|
|
: item.channelname
|
|
|
"
|
|
|
:value="item.channelid"
|
|
|
>
|
|
|
{{
|
|
|
item.alias !== null && item.alias !== ""
|
|
|
? item.alias
|
|
|
: item.channelname
|
|
|
}}
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="paramsDate setTimebtn">
|
|
|
<h3>操作项</h3>
|
|
|
<div class="buttonGroup">
|
|
|
<takePicButton></takePicButton>
|
|
|
|
|
|
<takeVideoButton></takeVideoButton>
|
|
|
|
|
|
<deviceInfoButton></deviceInfoButton>
|
|
|
|
|
|
<scheduleButton></scheduleButton>
|
|
|
<alarmButton></alarmButton>
|
|
|
<cableButton></cableButton>
|
|
|
<gpsButton></gpsButton>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
@click="handlehistoryPic"
|
|
|
v-if="roleUser != 4"
|
|
|
>
|
|
|
历史图片</el-button
|
|
|
>
|
|
|
<el-button type="primary" @click="handleParams"> 参数配置</el-button>
|
|
|
|
|
|
<el-button type="primary" @click="handleuploadPic" v-if="roleUser == 0">
|
|
|
上传图片</el-button
|
|
|
>
|
|
|
<takeTimePicButton v-if="roleUser == 0"></takeTimePicButton>
|
|
|
|
|
|
<setChannelButton v-if="roleUser == 0"></setChannelButton>
|
|
|
<setAppButton v-if="roleUser == 0"></setAppButton>
|
|
|
<el-dropdown
|
|
|
class="dropgps"
|
|
|
trigger="click"
|
|
|
@command="
|
|
|
(command) => {
|
|
|
handleSearchCommand(command, areaData);
|
|
|
}
|
|
|
"
|
|
|
>
|
|
|
<el-button type="primary">
|
|
|
数据查询<i class="el-icon-arrow-down el-icon--right"></i>
|
|
|
</el-button>
|
|
|
<el-dropdown-menu slot="dropdown" class="picdropStyle">
|
|
|
<el-dropdown-item command="info">基本信息</el-dropdown-item>
|
|
|
<el-dropdown-item command="workStatus">工作状态</el-dropdown-item>
|
|
|
<el-dropdown-item command="runStatus">运行状态</el-dropdown-item>
|
|
|
<el-dropdown-item command="GPS">GPS位置</el-dropdown-item>
|
|
|
<el-dropdown-item command="faultInfo">故障信息报</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
<!-- <el-button type="primary" @click="handleTakePic" :loading="picLoading"
|
|
|
>主动拍照
|
|
|
</el-button> -->
|
|
|
<!-- <el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button>
|
|
|
<el-button type="primary">主动拍照 </el-button> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="setfocalLength" v-if="areaData.protocol == '65286'">
|
|
|
<h3>焦距调节</h3>
|
|
|
<div class="selectChannel">
|
|
|
<span class="labelname">选择通道</span>
|
|
|
<el-select
|
|
|
v-model="channelarrValue"
|
|
|
placeholder="请选择通道"
|
|
|
ref="multiSelect"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in channelfocalOpyion"
|
|
|
:key="item.channelid"
|
|
|
:label="
|
|
|
item.alias !== null && item.alias !== ''
|
|
|
? item.alias
|
|
|
: item.channelname
|
|
|
"
|
|
|
:value="item.channelid"
|
|
|
>
|
|
|
{{
|
|
|
item.alias !== null && item.alias !== ""
|
|
|
? item.alias
|
|
|
: item.channelname
|
|
|
}}
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="buttonGroup">
|
|
|
<el-button type="primary" icon="el-icon-zoom-in" @click="amplify()"
|
|
|
>放大</el-button
|
|
|
>
|
|
|
<el-button type="primary" icon="el-icon-zoom-out" @click="reduce()"
|
|
|
>缩小</el-button
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
<parameterSetDialog ref="parameterSetref"></parameterSetDialog>
|
|
|
<uploadpic ref="uploadpicref"></uploadpic>
|
|
|
|
|
|
<baseInfor ref="baseInfor_ref"></baseInfor>
|
|
|
<workStatus ref="workStatus_ref"></workStatus>
|
|
|
<runStatus ref="runStatus_ref"></runStatus>
|
|
|
<gpsSite ref="gpsSite_ref"></gpsSite>
|
|
|
<faultInfomation ref="fultInfo_ref"></faultInfomation>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import EventBus from "@/utils/event-bus";
|
|
|
import takePicButton from "./takePicButton.vue";
|
|
|
import setChannelButton from "./setChannelButton.vue";
|
|
|
import takeTimePicButton from "./takeTimePicButton.vue";
|
|
|
import takeVideoButton from "./takeVideoButton.vue";
|
|
|
import deviceInfoButton from "./deviceInfoButton.vue";
|
|
|
import scheduleButton from "./scheduleButton.vue";
|
|
|
import alarmButton from "./alarmButton.vue";
|
|
|
import cableButton from "./cableButton.vue";
|
|
|
import gpsButton from "./gpsButton.vue";
|
|
|
import uploadpic from "./uploadpic.vue";
|
|
|
import parameterSetDialog from "../../photographicDevice/components/parameterSetDialog.vue";
|
|
|
import setAppButton from "./setAppButton.vue";
|
|
|
|
|
|
import baseInfor from "../../photographicDevice/components/baseInfor.vue";
|
|
|
import workStatus from "../../photographicDevice/components/workStatus.vue";
|
|
|
import runStatus from "../../photographicDevice/components/runStatus.vue";
|
|
|
import gpsSite from "../../photographicDevice/components/gpsSite.vue";
|
|
|
import faultInfomation from "../../photographicDevice/components/faultInfomation.vue";
|
|
|
import {
|
|
|
getChannelByTermidJoggle,
|
|
|
updateTermCamera,
|
|
|
getTermStatus,
|
|
|
addFavorList,
|
|
|
} from "@/utils/api/index";
|
|
|
export default {
|
|
|
components: {
|
|
|
takePicButton,
|
|
|
takeTimePicButton,
|
|
|
takeVideoButton,
|
|
|
deviceInfoButton,
|
|
|
scheduleButton,
|
|
|
alarmButton,
|
|
|
cableButton,
|
|
|
gpsButton,
|
|
|
parameterSetDialog,
|
|
|
uploadpic,
|
|
|
setChannelButton,
|
|
|
setAppButton,
|
|
|
baseInfor,
|
|
|
workStatus,
|
|
|
runStatus,
|
|
|
gpsSite,
|
|
|
faultInfomation,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
roleUser: "",
|
|
|
selectChannelValue: null, //选中的通道
|
|
|
channelListOption: [], //通道数组
|
|
|
channelarrValue: null,
|
|
|
channelfocalOpyion: [], //焦距通道
|
|
|
dateValue: "", //选择日期
|
|
|
pickerOptions: {
|
|
|
disabledDate(date) {
|
|
|
return date.getTime() > Date.now(); // 禁用大于今天的日期
|
|
|
},
|
|
|
},
|
|
|
picLoading: false, //拍照loading
|
|
|
selectDyId: "", //获取当前选中的电压线路等信息
|
|
|
selectLineId: "",
|
|
|
selectTowerId: "",
|
|
|
collectFlag: false, //收藏
|
|
|
};
|
|
|
},
|
|
|
|
|
|
watch: {
|
|
|
areaData: {
|
|
|
handler(newVal, oldVal) {},
|
|
|
deep: true,
|
|
|
immediate: true,
|
|
|
},
|
|
|
},
|
|
|
computed: {
|
|
|
areaData() {
|
|
|
return this.$store.state.currentData;
|
|
|
},
|
|
|
},
|
|
|
created() {
|
|
|
this.roleUser = localStorage.getItem("role");
|
|
|
console.log("asdsaddddddddddddddddddddddddd", this.roleUser);
|
|
|
},
|
|
|
mounted() {
|
|
|
this.getDateTime();
|
|
|
},
|
|
|
methods: {
|
|
|
//双击选中复制
|
|
|
handleDblClick(val) {
|
|
|
// alert(val);
|
|
|
var input = document.createElement("input"); // 创建input对象
|
|
|
input.value = val; // 设置复制内容
|
|
|
document.body.appendChild(input); // 添加临时实例
|
|
|
input.select(); // 选择实例内容
|
|
|
document.execCommand("Copy"); // 执行复制
|
|
|
document.body.removeChild(input); // 删除临时实例
|
|
|
//this.$message.success("复制成功!");
|
|
|
this.$message({
|
|
|
duration: 800,
|
|
|
showClose: true,
|
|
|
message: "复制成功!",
|
|
|
type: "success",
|
|
|
});
|
|
|
},
|
|
|
//获取当前时间
|
|
|
getDateTime() {
|
|
|
console.log(new Date());
|
|
|
this.dateValue = new Date().getTime();
|
|
|
console.log(this.dateValue);
|
|
|
},
|
|
|
//点击收藏和取消收藏
|
|
|
addCollectClick() {
|
|
|
if (this.areaData.isfavor !== 1) {
|
|
|
this.areaData.isfavor = 1;
|
|
|
addFavorList({ list: [this.areaData.id], type: 1 }).then((res) => {
|
|
|
EventBus.$emit("treelist");
|
|
|
});
|
|
|
this.$message({
|
|
|
type: "success",
|
|
|
message: "添加成功!",
|
|
|
});
|
|
|
// this.$confirm("此操作将添加至收藏夹, 是否继续?", "提示", {
|
|
|
// confirmButtonText: "确定",
|
|
|
// cancelButtonText: "取消",
|
|
|
// type: "warning",
|
|
|
// }).then(() => {
|
|
|
|
|
|
// });
|
|
|
} else {
|
|
|
this.$confirm("此操作将取消收藏, 是否继续?", "提示", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
type: "warning",
|
|
|
}).then(() => {
|
|
|
this.areaData.isfavor = 0;
|
|
|
addFavorList({ list: [this.areaData.id], type: 0 }).then((res) => {
|
|
|
EventBus.$emit("treelist");
|
|
|
});
|
|
|
this.$message({
|
|
|
type: "success",
|
|
|
message: "取消收藏!",
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
//focus时间重新赋值
|
|
|
handleDateFocus() {
|
|
|
// 更新pickerOptions的disabledDate函数,禁用大于当前时间的日期
|
|
|
this.pickerOptions.disabledDate = (date) => {
|
|
|
//console.log(date);
|
|
|
const currentDate = new Date();
|
|
|
return date.getTime() > currentDate.getTime(); // 禁用大于今天的日期
|
|
|
};
|
|
|
},
|
|
|
//选择时间
|
|
|
changedate() {
|
|
|
console.log(this.dateValue.getTime());
|
|
|
this.$parent.getPhotoList(
|
|
|
this.selectChannelValue,
|
|
|
this.dateValue,
|
|
|
this.areaData.id
|
|
|
);
|
|
|
},
|
|
|
//获取通道的接口
|
|
|
getChannelList() {
|
|
|
console.log(this.areaData);
|
|
|
getChannelByTermidJoggle({ termid: this.areaData.id })
|
|
|
.then((res) => {
|
|
|
console.log(res);
|
|
|
this.channelListOption = [
|
|
|
{ channelname: "全部", channelid: -1, alias: null },
|
|
|
];
|
|
|
this.channelListOption = this.channelListOption.concat(res.data.list);
|
|
|
console.log(this.channelListOption);
|
|
|
this.channelfocalOpyion = res.data.list; //焦距通道
|
|
|
|
|
|
this.selectChannelValue = this.channelListOption[0].channelid; //默认选中所有通道;
|
|
|
this.$store.commit("channelId", this.selectChannelValue); //通道保存在vuex中
|
|
|
this.$store.commit("channelIdList", res.data.list); //将通道保存在vuex中
|
|
|
this.$parent.getPhotoList(
|
|
|
this.selectChannelValue,
|
|
|
this.dateValue,
|
|
|
this.areaData.id
|
|
|
);
|
|
|
this.selectDyId = res.data.dyId;
|
|
|
this.selectLineId = res.data.lineId;
|
|
|
//this.selectTowerId = res.data.towerId;
|
|
|
if (res.data.list.length == 0) {
|
|
|
this.channelarrValue = null;
|
|
|
return;
|
|
|
} else {
|
|
|
this.channelarrValue = this.channelfocalOpyion[0].channelid;
|
|
|
}
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
console.log(err); //代码错误、请求失败捕获
|
|
|
});
|
|
|
},
|
|
|
//切换通道
|
|
|
changeChannelId(val) {
|
|
|
console.log(val);
|
|
|
this.$store.commit("channelId", val); //将currentData保存在vuex中
|
|
|
this.$parent.getPhotoList(val, this.dateValue, this.areaData.id);
|
|
|
},
|
|
|
//历史图片跳转
|
|
|
handlehistoryPic() {
|
|
|
console.log(this.areaData);
|
|
|
if (this.areaData.id == "13276") {
|
|
|
// "id": 13009,
|
|
|
// "towerid": 3980,
|
|
|
this.$set(this.areaData, "id", 13009);
|
|
|
this.$set(this.areaData, "towerid", 3980);
|
|
|
}
|
|
|
console.log(this.selectDyId, this.selectLineId, this.selectTowerId);
|
|
|
// console.log(this.zzCmdid, this.selectChannelValue);
|
|
|
if (typeof this.dateValue == "number") {
|
|
|
this.dateValue = new Date(new Date().toLocaleDateString()).getTime();
|
|
|
} else {
|
|
|
this.dateValue = this.dateValue.getTime();
|
|
|
}
|
|
|
this.$router.push({
|
|
|
path: "/realTimeSearch",
|
|
|
query: {
|
|
|
dyId: this.selectDyId,
|
|
|
lineId: this.selectLineId,
|
|
|
towerId: this.areaData.towerid,
|
|
|
termId: this.areaData.id,
|
|
|
cmdId: this.areaData.cmdid,
|
|
|
channelId: this.selectChannelValue,
|
|
|
date: this.dateValue,
|
|
|
},
|
|
|
});
|
|
|
},
|
|
|
//参数配置
|
|
|
handleParams() {
|
|
|
console.log(this.areaData);
|
|
|
this.$refs.parameterSetref.display(this.areaData);
|
|
|
},
|
|
|
//基本信息报
|
|
|
//数据查询
|
|
|
handleSearchCommand(command, row) {
|
|
|
console.log(command, row);
|
|
|
switch (command) {
|
|
|
case "info":
|
|
|
this.$refs.baseInfor_ref.display(row);
|
|
|
break;
|
|
|
case "workStatus":
|
|
|
this.$refs.workStatus_ref.display(row);
|
|
|
break;
|
|
|
case "runStatus":
|
|
|
this.$refs.runStatus_ref.display(row);
|
|
|
break;
|
|
|
case "GPS":
|
|
|
this.$refs.gpsSite_ref.display(row);
|
|
|
break;
|
|
|
case "faultInfo":
|
|
|
this.$refs.fultInfo_ref.display(row);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
},
|
|
|
//焦距放大缩小
|
|
|
amplify() {
|
|
|
getTermStatus({ termId: this.areaData.id }).then((res) => {
|
|
|
console.log(res);
|
|
|
if (res.data.isonline) {
|
|
|
updateTermCamera({
|
|
|
termId: this.areaData.id,
|
|
|
channelId: this.channelarrValue,
|
|
|
type: 6,
|
|
|
})
|
|
|
.then((res) => {})
|
|
|
.catch();
|
|
|
//this.$refs.infodialog_ref.getListData(this.channelId, this.cmdid);
|
|
|
} else {
|
|
|
this.$message({
|
|
|
duration: 1500,
|
|
|
showClose: true,
|
|
|
message: "装置下线,发送指令失败",
|
|
|
type: "error",
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
console.log(this.channelarrValue, this.areaData.id);
|
|
|
},
|
|
|
//焦距缩小
|
|
|
reduce() {
|
|
|
getTermStatus({ termId: this.areaData.id }).then((res) => {
|
|
|
console.log(res);
|
|
|
if (res.data.isonline) {
|
|
|
updateTermCamera({
|
|
|
termId: this.areaData.id,
|
|
|
channelId: this.channelarrValue,
|
|
|
type: 7,
|
|
|
})
|
|
|
.then((res) => {})
|
|
|
.catch();
|
|
|
//this.$refs.infodialog_ref.getListData(this.channelId, this.cmdid);
|
|
|
} else {
|
|
|
this.$message({
|
|
|
duration: 1500,
|
|
|
showClose: true,
|
|
|
message: "装置下线,发送指令失败",
|
|
|
type: "error",
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
handleuploadPic() {
|
|
|
this.$refs.uploadpicref.display(this.areaData);
|
|
|
},
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="less">
|
|
|
.AreaBox {
|
|
|
.areaHead {
|
|
|
height: 32px;
|
|
|
line-height: 32px;
|
|
|
color: #169e8c;
|
|
|
font-size: 14px;
|
|
|
font-weight: normal;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
span {
|
|
|
font-size: 12px;
|
|
|
}
|
|
|
.el-button--text {
|
|
|
color: #f08200;
|
|
|
}
|
|
|
}
|
|
|
.paramsDate {
|
|
|
margin-bottom: 16px;
|
|
|
position: relative;
|
|
|
h3 {
|
|
|
font-size: 14px;
|
|
|
font-weight: normal;
|
|
|
color: #303133;
|
|
|
margin-bottom: 8px;
|
|
|
}
|
|
|
.el-radio-group {
|
|
|
// display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
.el-radio-button {
|
|
|
margin-right: 6px;
|
|
|
margin-top: 6px;
|
|
|
.el-radio-button__inner {
|
|
|
padding: 8px 4px;
|
|
|
width: 66px;
|
|
|
border-left: 1px solid #dcdfe6;
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
.el-radio-button__orig-radio:checked + .el-radio-button__inner {
|
|
|
box-shadow: none !important;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.setTimebtn {
|
|
|
.buttonGroup {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
justify-content: space-between;
|
|
|
.el-button {
|
|
|
margin-bottom: 8px;
|
|
|
width: 104px;
|
|
|
}
|
|
|
.el-button + .el-button {
|
|
|
margin-left: 0px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.setfocalLength {
|
|
|
margin-bottom: 16px;
|
|
|
position: relative;
|
|
|
h3 {
|
|
|
font-size: 14px;
|
|
|
font-weight: normal;
|
|
|
color: #303133;
|
|
|
margin-bottom: 8px;
|
|
|
}
|
|
|
.selectChannel {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
margin-bottom: 12px;
|
|
|
.labelname {
|
|
|
font-size: 14px;
|
|
|
margin-right: 4px;
|
|
|
width: 80px;
|
|
|
color: #666;
|
|
|
}
|
|
|
}
|
|
|
.buttonGroup {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
justify-content: space-between;
|
|
|
.el-button {
|
|
|
margin-bottom: 8px;
|
|
|
width: 104px;
|
|
|
}
|
|
|
.el-button + .el-button {
|
|
|
margin-left: 0px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</style>
|