You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
frontend/src/views/realTimeMonitor/components/setschedule.bak.vue

627 lines
17 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-dialog
class="setTimeDialog"
title="拍照时间表设置"
:visible.sync="isShow"
:close-on-click-modal="false"
@close="handleclose"
width="1000px"
>
<el-tabs v-model="activeName" @tab-click="handleClick" v-loading="loading">
<el-tab-pane label="查询实际时间表" name="1">
<div class="timebox">
<div class="flexnr">
<div class="w8">选择通道:</div>
<el-select
v-model="selaccess"
placeholder="请选择"
class="mr20"
@change="changeSelect"
>
<el-option
v-for="item in accesslist"
:key="item.channelid"
:label="item.channelname"
:value="item.channelid"
></el-option>
</el-select>
<!-- <el-button type="primary" @click="inquireRealbtn()"
>查询实际时间表</el-button
> -->
</div>
<div class="flexno bt30" v-if="this.shedulenr.length !== 0">
<div class="timehead">
<label>时间表规则:</label>
<p>ssssssssssss</p>
</div>
<div class="timeShow">
<div class="w8">时间表:</div>
<div class="w80 flexonly" v-loading="timeloading">
<el-tag
class="mr10 mt10"
size="mini"
v-for="(val, index) in this.shedulenr"
:key="index"
>{{ val }}</el-tag
>
</div>
</div>
</div>
<div class="flexno bt30" v-else>暂无设置时间表</div>
<el-button class="searchBtn" type="text" @click="inquirebtn()"
>查询</el-button
>
</div>
</el-tab-pane>
<el-tab-pane label="设置时间表" name="2">
<div class="deviceTable">
<el-table
ref="multipleTable"
:data="deviceTableData"
tooltip-effect="dark"
stripe
style="width: 100%"
height="calc(100% - 40px)"
>
<el-table-column label="名称" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column>
<el-table-column label="时间表类型" show-overflow-tooltip>
<template>按时间段</template>
</el-table-column>
<el-table-column label="时间表规则" width="300">
<template slot-scope="scope">
<p
class="timeGz"
v-for="(val, index) in scope.row.list"
:key="index"
>
<span>{{ val.startTime }}</span> ~
<span>{{ val.endTime }}</span>
间隔:<b>{{ val.span }}分钟</b>
</p>
</template>
</el-table-column>
<el-table-column
prop="remark"
label="备注"
show-overflow-tooltip
></el-table-column>
<el-table-column fixed="right" label="操作">
<template slot-scope="scope">
<el-button
type="primary"
@click.native.stop="handleSet(scope.row)"
>设置</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pageNation">
<el-pagination
:current-page="page"
:page-size="pageSize"
layout=" prev, pager, next, jumper,total"
@current-change="handleCurrentChange"
:total="total"
background
>
</el-pagination>
</div>
</div>
<el-dialog
class="setRoadDialog"
title="设置"
:visible.sync="isShowset"
:close-on-click-modal="false"
width="680px"
append-to-body
@close="closebtn"
>
<div class="setTimeTd">
<div class="tdSetBox">
<h3>装置信息</h3>
<el-descriptions title="" :column="3" border>
<el-descriptions-item label="电压等级">{{
deviceListData.dyname
}}</el-descriptions-item>
<el-descriptions-item label="线路名称">
{{ deviceListData.xlname }}</el-descriptions-item
>
<el-descriptions-item label="装置名称">
{{ deviceListData.zzname }}
</el-descriptions-item>
</el-descriptions>
<h3>时间表规则</h3>
<p class="timename">时间表名称:{{ timeName }}</p>
<div class="flexTimeGz">
<p
class="timeGz"
v-for="(val, index) in scheduleInfo"
:key="index"
>
<span>{{ val.startTime }}</span> ~
<span>{{ val.endTime }}</span>
间隔:<b>{{ val.span }}分钟</b>
</p>
</div>
<h3>选择通道</h3>
<div class="checkBox">
<el-radio-group v-model="checkList" @change="handleChange">
<el-radio
:label="val.id"
border
v-for="val in zzchannel"
:key="val.id"
>{{ val.name }}</el-radio
>
</el-radio-group>
<!-- <el-checkbox-group v-model="checkList" @change="handleChange">
<el-checkbox
:label="val.id"
border
v-for="val in zzchannel"
:key="val.id"
>{{ val.name }}</el-checkbox
>
</el-checkbox-group> -->
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="closebtn">取 消</el-button>
<el-button type="primary" v-debounce="submitForm">确 定</el-button>
</div>
</el-dialog>
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
import {
getChannelListJoggle,
getSchedulenr,
getScheduleRulelListJoggle,
setScheduleRulel,
getScheduleRulelAccessList,
selectPhotoTimeGetJoggle,
selectPhotoTimeJoggle,
getPhotoTimeJoggle,
} from "@/utils/api/index";
export default {
props: {
title: String,
},
data() {
return {
loading: true,
isShow: true,
isShowset: false,
activeName: "1", //选项卡
accesslist: [], //通道选择器
selaccess: "", //选中的通道
shedulenr: [], //查询的时间表
deviceTableData: [], //时间表-表格
page: 1, // 当前页数
pageSize: 10, // 每页数量
total: 0, //总条数
listnr: [], //通道树结构
defaultProps: {
children: "list",
label: "name",
},
selfacilityId: "", //所选设备id
ruleid: "", //线路id
parmsList: [], //所选装置下通道参数
scheduleid: 0, //所选时间表id
//设置-获取所有通道
timeName: "",
scheduleInfo: [],
//获取当前装置内容
deviceListData: {}, //当前装置信息
zzchannel: [], //当前装置通道
checkList: "", //选中的通道
newcmdzzid: "",
newrequestId: "",
timer: null, //定时器
timernum: 0,
timeloading: false,
};
},
mounted() {},
methods: {
handleClick(tab, event) {
console.log(tab, event);
},
//获取单个设备通道
getSingleAccess(id, zzid) {
this.newcmdzzid = zzid;
this.selfacilityId = id;
getChannelListJoggle({ termid: id })
.then((res) => {
this.accesslist = res.data.list;
console.log(this.accesslist);
this.selaccess = res.data.list[0].channelid;
this.inquireRealbtn();
})
.catch((err) => {});
},
//选择通道查询
changeSelect(val) {
console.log(val);
console.log(this.selaccess);
},
//查询时间表
//查询真是时间时间表
inquirebtn() {
console.log(this.selaccess, this.selfacilityId, this.newcmdzzid);
this.timeloading = true;
selectPhotoTimeGetJoggle({
channel: this.selaccess,
termId: this.selfacilityId,
cmdId: this.newcmdzzid,
})
.then((res) => {
this.$message.success("查询成功");
console.log(this.shedulenr);
this.newrequestId = res.data.requestId;
this.searchRealtime();
})
.catch((err) => {
this.$message.error("查询失败");
});
},
searchRealtime() {
selectPhotoTimeJoggle({
channel: this.selaccess,
termId: this.selfacilityId,
cmdId: this.newcmdzzid,
requestId: this.newrequestId,
}).then((res) => {
console.log(res);
if (res.data.isNew == true && this.timernum < 10) {
clearInterval(this.timer);
this.timer = null;
this.inquirebtn();
this.timernum = 0;
} else if (res.data.isNew == false && this.timernum > 10) {
this.i = 0;
clearInterval(this.timer);
this.timer = null;
this.$message({
showClose: true,
message: "时间表查询无响应,请稍后再试!",
type: "warning",
});
}
// if (res.data.isNew == true) {
// this.shedulenr = res.data.list;
// this.$message({
// message: "装置信息已更新",
// type: "success",
// });
// clearInterval(this.timer);
// }
});
},
//获取线路列表数据
deviceList() {
getScheduleRulelListJoggle({
pageindex: this.page,
pagesize: this.pageSize,
})
.then((res) => {
this.deviceTableData = res.data.list;
this.total = res.data.total;
console.log(this.deviceTableData);
this.loading = false;
})
.catch((err) => {});
},
//点击分页
handleCurrentChange(val) {
this.page = val;
this.deviceList();
},
//设置-获取所有通道
handleSet(val) {
this.loading = true;
this.scheduleid = val.id;
this.isShowset = true;
console.log(val);
this.scheduleInfo = val.list;
this.timeName = val.name;
getScheduleRulelAccessList({ termid: this.selfacilityId })
.then((res) => {
this.listnr = res.data.list;
console.log("1111111111111111111");
console.log(this.listnr);
this.deviceListData = {
dyname: this.listnr[0].name,
dyid: this.listnr[0].id,
xlname: this.listnr[0].list[0].name,
xlid: this.listnr[0].list[0].id,
zzname: this.listnr[0].list[0].list[0].name,
zzcmid: this.listnr[0].list[0].list[0].cmdid,
zzid: this.listnr[0].list[0].list[0].id,
};
this.zzchannel = this.listnr[0].list[0].list[0].list;
console.log(this.deviceListData);
console.log(this.zzchannel);
this.this.loading = false;
})
.catch((err) => {});
},
//获取所选值
getCheckedNodes() {
this.parmsList = [];
const checkedNodes = this.$refs.tree.getCheckedNodes(false, true); //若节点可被选择,则返回目前被选中的节点所组成的数组
//const checkedParam = []; //定义选中的数组
let index = -1;
// console.log(checkedNodes);
if (checkedNodes.length !== 0) {
checkedNodes.forEach((item) => {
// 父节点结构的情况 判断是否有list子节点如果有定义数组结构
if (item.list !== undefined) {
index++;
this.parmsList[index] = {
//name: item.name,
termid: item.id,
channelidlist: [],
};
} else {
//如果没有list 把子节点id push到 定义的数组channelidlist中
this.parmsList[index].channelidlist.push(item.id);
}
//通过bsManufacturer 判断是否是 线路 获取线路id
// if (item.bsManufacturer !== undefined) {
// this.ruleid = item.id;
// console.log(this.ruleid);
// }
});
}
// console.log(this.parmsList);
//遍历删除没有channelichilddlist的数据只留下通道
this.parmsList = this.parmsList
.filter((item) => item.channelidlist.length !== 0)
.map((item) => {
return {
termid: item.termid,
channelidlist: item.channelidlist,
};
});
// console.log(this.parmsList);
return this.parmsList;
},
//选择通道
handleChange() {
//console.log(this.listnr);
console.log(this.checkList);
// this.$refs.tree.setCheckedKeys(this.checkedAisle);
},
// 保存确定操作
submitForm() {
//this.getCheckedNodes();
console.log(this.deviceListData);
console.log(this.checkList);
console.log(this.scheduleid);
if (this.checkList.length == 0) {
this.$message.error("请选择通道");
} else {
setScheduleRulel({
scheduleid: this.scheduleid,
list: [
{
termid: this.deviceListData.zzid,
channelidlist: [this.checkList],
},
],
})
.then((res) => {
this.isShowset = false;
console.log(res);
// this.$message({
showClose: true,
message: '添加成功',type: 'success'
});;
console.log(this.checkList);
// this.$store.commit("SET_CHANNELID", this.checkList); //将通道保存在vuex中
// this.$store.commit("SET_TERMID", this.deviceListData.zzid); //将装置保存在vuex中
this.handlexfTime(this.deviceListData.zzid, this.checkList);
this.deviceList();
})
.catch((err) => {
this.$message({
showClose: true,
message: '添加失败',type: 'error'
});
});
}
},
//下发时间表
handlexfTime(termid, channelid) {
console.log("下发时间表");
console.log(termid);
console.log(channelid);
console.log("下发时间表结束");
getPhotoTimeJoggle({
channel: channelid,
termId: termid,
})
.then((res) => {
console.log(res);
if (res.code == 200) {
this.$message.success("拍照时间表设置下发成功");
}
})
.catch((err) => {});
},
closebtn() {
this.isShowset = false;
clearInterval(this.timer);
this.deviceList();
},
display() {
this.isShow = true;
},
hide() {
this.isShow = false;
},
handleclose() {
clearInterval(this.timer);
console.log("关闭轮询");
},
},
};
</script>
<style lang="less">
.setTimeDialog {
.el-tabs__content {
height: 400px;
overflow: auto;
.el-tab-pane {
height: calc(100% - 16px);
}
}
.timebox {
width: 410px;
margin: auto;
}
.flexonly {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
.flexno {
display: flex;
margin-top: 16px;
padding: 0px 8px;
flex-direction: column;
.timehead {
display: flex;
line-height: 32px;
margin-bottom: 8px;
label {
margin-right: 6px;
width: 80px;
}
.searchBtn {
font-size: 16px;
}
}
.timeShow {
display: flex;
}
}
.flexnr {
display: flex;
align-items: center;
margin-top: 16px;
padding: 0px 8px;
}
.mt10 {
margin-bottom: 10px;
}
.mr10 {
margin-right: 10px;
}
.w8 {
width: 80px;
}
.w80 {
width: 80%;
overflow-y: auto;
height: 267px;
}
.mr20 {
margin-right: 20px;
}
.deviceTable {
padding: 16px 8px 0 8px;
height: calc(100% - 16px);
.el-table--small {
margin-bottom: 8px;
}
.rulesBox {
display: flex;
flex-direction: row;
li {
list-style: none;
margin-right: 24px;
line-height: 24px;
span {
margin-right: 4px;
}
.el-tag--small {
height: 16px;
padding: 0 8px;
line-height: 16px;
}
}
}
.timeGz {
line-height: 26px;
span {
margin: 0px 8px;
}
b {
font-weight: normal;
color: @color-primary;
}
}
.pageNation {
justify-content: flex-start;
}
}
}
.setRoadDialog {
.el-dialog__body {
height: 400px;
overflow: auto;
.el-form {
height: 100%;
//background: #fcc;
}
.setTimeTd {
h3 {
margin: 8px 0px;
font-size: 16px;
line-height: 24px;
}
.timename {
margin: 8px 0px;
}
.flexTimeGz {
display: flex;
flex-wrap: wrap;
.timeGz {
line-height: 32px;
margin-right: 16px;
span {
margin: 0px 8px;
}
b {
font-weight: normal;
color: @color-primary;
}
}
}
}
}
}
</style>