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.

1367 lines
46 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.alias !== null && item.alias !== ''
? item.alias
: item.channelname
"
:value="item.channelid"
>
{{
item.alias !== null && item.alias !== ""
? item.alias
: item.channelname
}}
</el-option>
</el-select>
<!-- <el-button type="primary" @click="inquireRealbtn()"
>查询实际时间表</el-button
> -->
</div>
<div class="flexno bt30">
<!-- <div class="timehead">
<label>时间表规则:</label>
<p>ssssssssssss</p>
</div> -->
<div class="timeShow" v-loading="loading">
<div class="leftTime" v-if="shedulenr.length !== 0">
<div class="w8">时间表:</div>
<div class="w80 flexonly" v-loading="timeloading">
<el-tag
v-if="timeProtocol == '65283'"
class="mr10 mt10"
size="mini"
v-for="(val, index) in this.shedulenr"
:key="index"
>{{ val.substring(val.length - 5) }}</el-tag
>
<el-tag
v-if="timeProtocol == '65286' || timeProtocol == '65282'"
class="mr10 mt10"
size="mini"
v-for="(val, index) in this.shedulenr"
:key="index"
>{{ $moment(val).format("HH:mm") }}</el-tag
>
<!-- {{ val.substring(val.length - 5) }} -->
</div>
</div>
<div class="rightTime" v-if="newshedulenr.length !== 0">
<div class="w8">装置时间表:</div>
<span class="offtime" v-if="offsetnum !== null"
>(偏移时间{{ offsetnum }}分钟)</span
>
<div class="w80 flexonly" v-loading="timeloading">
<el-tag
v-if="timeProtocol == '65283'"
class="mr10 mt10"
size="mini"
v-for="(val, index) in this.newshedulenr"
:key="index"
>{{ val.substring(val.length - 5) }}</el-tag
>
<el-tag
v-if="timeProtocol == '65286' || timeProtocol == '65282'"
class="mr10 mt10"
size="mini"
v-for="(val, index) in this.newshedulenr"
:key="index"
>{{ $moment(val).format("HH:mm") }}</el-tag
>
</div>
</div>
<div v-if="shedulenr.length == 0 && newshedulenr.length == 0">
暂无拍照时间表
</div>
</div>
</div>
<el-button
class="searchBtn"
type="text"
:loading="compareloading"
@click="inquirebtn()"
>装置时间表对比</el-button
>
</div>
</el-tab-pane>
<el-tab-pane label="拍照时间表下发" name="2">
<div class="deviceTable">
<el-table
ref="multipleTable"
:data="newList"
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="360px">
<template slot-scope="scope">
<p
class="timeGz"
v-for="(val, index) in scope.row.listTime"
:key="index"
>
<span>
{{
new Date(val.startTime).getHours() < 10
? "0" + new Date(val.startTime).getHours()
: new Date(val.startTime).getHours()
}}:
{{
new Date(val.startTime).getMinutes() < 10
? "0" + new Date(val.startTime).getMinutes()
: new Date(val.startTime).getMinutes()
}}</span
>
~
<span
>{{
new Date(val.endTime).getHours() < 10
? "0" + new Date(val.endTime).getHours()
: new Date(val.endTime).getHours()
}}:
{{
new Date(val.endTime).getMinutes() < 10
? "0" + new Date(val.endTime).getMinutes()
: new Date(val.endTime).getMinutes()
}}</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
>{{
new Date(val.startTime).getHours() < 10
? "0" + new Date(val.startTime).getHours()
: new Date(val.startTime).getHours()
}}:
{{
new Date(val.startTime).getMinutes() < 10
? "0" + new Date(val.startTime).getMinutes()
: new Date(val.startTime).getMinutes()
}}</span
>
~
<span
>{{
new Date(val.endTime).getHours() < 10
? "0" + new Date(val.endTime).getHours()
: new Date(val.endTime).getHours()
}}:
{{
new Date(val.endTime).getMinutes() < 10
? "0" + new Date(val.endTime).getMinutes()
: new Date(val.endTime).getMinutes()
}}</span
>
间隔:<b>{{ val.span }}分钟</b>
</p>
</div>
<div class="math">
偏移时间(分)
<el-input-number
v-model="setNum"
:min="0"
:max="9"
></el-input-number>
</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"
:loading="sureloading"
>确 定</el-button
>
</div>
</el-dialog>
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
import {
getChannelListJoggle,
getSchedulenr,
getScheduleRulelListJoggle,
setScheduleRulel,
getScheduleRulelAccessList,
cmaSchelduleDetials,
getCmaSchelduleDetials,
getCmaSchelduleUpload,
getTermStatus,
} from "@/utils/api/index";
import moment from "moment";
export default {
props: {
title: String,
},
data() {
return {
loading: false,
isShow: false,
isShowset: false,
activeName: "1", //选项卡
accesslist: [], //通道选择器
selaccess: "", //选中的通道
shedulenr: [], //查询的时间表
deviceTableData: [], //时间表-表格
newList: [],
listTime: [],
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, //定时器
timers: null,
timernum: 0,
i: 0,
timeloading: false,
requestId: "",
newshedulenr: [], //装置时间表
requestList: [],
requestArr: [], //通过requestid获取状态
sureloading: false,
offsetnum: "",
setNum: Math.floor(Math.random() * 10),
compareloading: false,
timeProtocol: "",
};
},
mounted() {
console.log(this.selaccess);
},
methods: {
handleClick(tab, event) {
console.log(tab, event);
},
//获取单个设备通道
getSingleAccess(id, zzid, protocol) {
this.newcmdzzid = zzid;
this.selfacilityId = id;
this.timeProtocol = protocol;
console.log(this.timeProtocol);
getChannelListJoggle({ termid: id })
.then((res) => {
this.accesslist = res.data.list;
console.log(this.accesslist);
this.selaccess = res.data.list[0].channelid;
//this.inquireRealbtn();
console.log(this.selaccess);
this.loading = true;
getSchedulenr({
channelid: this.selaccess,
terminalid: this.selfacilityId,
})
.then((res) => {
this.shedulenr = res.data.list;
console.log(res.data.offset);
this.offsetnum = res.data.offset;
console.log(this.offsetnum);
console.log("aaaaa");
console.log(this.shedulenr);
//湖南规约
if (this.timeProtocol == "65283") {
console.log("1111111111111111111111111111111111111");
var hnarr = [];
for (var i = 0; i < this.shedulenr.length; i++) {
if (i % 3 == 0) {
var hnobj = {};
hnobj.span =
this.shedulenr[i].hour * 60 + this.shedulenr[i].minute;
console.log("时间间隔");
} else if (i % 3 == 1) {
console.log("开始时间");
console.log("a");
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
console.log(timeDate);
hnobj.startTime = timeDate;
} else if (i % 3 == 2) {
console.log("结束时间");
hnobj.endTime =
this.shedulenr[i].hour + ":" + this.shedulenr[i].minute;
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
// hnobj.endTime = c.toJSON();
let timeHour =
timeDate.getHours() < 10
? "0" + timeDate.getHours()
: timeDate.getHours();
let timeMinute =
timeDate.getMinutes() < 10
? "0" + timeDate.getMinutes()
: timeDate.getMinutes();
hnobj.endTime = timeDate;
hnarr.push(hnobj);
}
}
console.log("222222222222222222");
console.log(hnarr);
console.log("22222222222222222222222");
let dayArr = [];
//根据开始时间结束时间生产数组
for (let k = 0; k < hnarr.length; k++) {
console.log(hnarr[k].startTime);
console.log(hnarr[k].endTime);
console.log(hnarr[k].span);
let startDay = hnarr[k].startTime;
let endDay = hnarr[k].endTime;
console.log(startDay, endDay);
let startVal = this.$moment(new Date(startDay)).format(
"YYYY-MM-DD HH:mm"
);
console.log(startVal);
while (this.$moment(startVal).isBefore(endDay)) {
dayArr.push(startVal);
// 自增
startVal = this.$moment(new Date(startVal))
.add(hnarr[k].span, "minute")
.format("YYYY-MM-DD HH:mm");
console.log(startVal);
}
// // 将结束日期的天放进数组
dayArr.push(
this.$moment(new Date(endDay)).format("YYYY-MM-DD HH:mm")
);
console.log(dayArr);
this.shedulenr = dayArr;
}
}
//河南规约
if (
this.timeProtocol == "65286" ||
this.timeProtocol == "65282"
) {
console.log("河南规约");
var hnarr = [];
for (var i = 0; i < this.shedulenr.length; i++) {
console.log(this.shedulenr[i].hour);
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
console.log(timeDate);
hnarr.push(timeDate);
}
console.log(hnarr);
this.shedulenr = hnarr;
}
this.loading = false;
})
.catch((err) => {
this.$message.error("查询失败");
});
})
.catch((err) => {});
},
//changeSelect\选择通道
changeSelect() {
console.log(this.selaccess);
this.loading = true;
this.newshedulenr = [];
getSchedulenr({
channelid: this.selaccess,
terminalid: this.selfacilityId,
})
.then((res) => {
this.shedulenr = res.data.list;
console.log(this.shedulenr);
//湖南规约
if (this.timeProtocol == "65283") {
console.log("1111111111111111111111111111111111111");
var hnarr = [];
for (var i = 0; i < this.shedulenr.length; i++) {
if (i % 3 == 0) {
var hnobj = {};
hnobj.span =
this.shedulenr[i].hour * 60 + this.shedulenr[i].minute;
console.log("时间间隔");
} else if (i % 3 == 1) {
console.log("开始时间");
console.log("a");
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
console.log(timeDate);
hnobj.startTime = timeDate;
} else if (i % 3 == 2) {
console.log("结束时间");
hnobj.endTime =
this.shedulenr[i].hour + ":" + this.shedulenr[i].minute;
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
// hnobj.endTime = c.toJSON();
let timeHour =
timeDate.getHours() < 10
? "0" + timeDate.getHours()
: timeDate.getHours();
let timeMinute =
timeDate.getMinutes() < 10
? "0" + timeDate.getMinutes()
: timeDate.getMinutes();
hnobj.endTime = timeDate;
hnarr.push(hnobj);
}
}
console.log("222222222222222222");
console.log(hnarr);
console.log("22222222222222222222222");
let dayArr = [];
//根据开始时间结束时间生产数组
for (let k = 0; k < hnarr.length; k++) {
console.log(hnarr[k].startTime);
console.log(hnarr[k].endTime);
console.log(hnarr[k].span);
let startDay = hnarr[k].startTime;
let endDay = hnarr[k].endTime;
console.log(startDay, endDay);
let startVal = this.$moment(new Date(startDay)).format(
"YYYY-MM-DD HH:mm"
);
console.log(startVal);
while (this.$moment(startVal).isBefore(endDay)) {
dayArr.push(startVal);
// 自增
startVal = this.$moment(new Date(startVal))
.add(hnarr[k].span, "minute")
.format("YYYY-MM-DD HH:mm");
console.log(startVal);
}
// // 将结束日期的天放进数组
dayArr.push(
this.$moment(new Date(endDay)).format("YYYY-MM-DD HH:mm")
);
console.log(dayArr);
this.shedulenr = dayArr;
}
}
//河南规约
if (this.timeProtocol == "65286" || this.timeProtocol == "65282") {
console.log("河南规约");
var hnarr = [];
for (var i = 0; i < this.shedulenr.length; i++) {
console.log(this.shedulenr[i].hour);
let timeDate = new Date();
timeDate.setHours(this.shedulenr[i].hour);
timeDate.setMinutes(this.shedulenr[i].minute);
console.log(timeDate);
hnarr.push(timeDate);
}
console.log(hnarr);
this.shedulenr = hnarr;
}
this.offsetnum = res.data.offset;
this.loading = false;
})
.catch((err) => {
this.$message.error("查询失败");
});
},
//查询时间表
inquirebtn() {
console.log(this.selaccess, this.selfacilityId);
this.compareloading = true;
cmaSchelduleDetials({
channelid: this.selaccess,
terminalid: this.selfacilityId,
})
.then((res) => {
console.log(res);
this.requestId = res.data.requestId;
this.realNewtime();
this.timer = window.setInterval(() => {
//console.log(this.requestList);
this.realNewtime();
this.timernum++;
}, 3000);
})
.catch((err) => {
this.$message.error("查询失败");
});
},
//查询真是时间时间表
realNewtime() {
getCmaSchelduleDetials({
requestid: this.requestId,
})
.then((res) => {
if (res.code == 200) {
if (res.data.isNew == true) {
// this.shedulenr = res.data.list.join("; ")
this.compareloading = false;
this.newshedulenr = res.data.list;
this.offsetnum = res.data.offset;
console.log("qqqqqqqqqqqqqqqqqqqqqq");
console.log(this.offsetnum);
//湖南规约
if (this.timeProtocol == "65283") {
console.log("湖南规约");
console.log("1111111111111111111111111111111111111");
var hnarr = [];
for (var i = 0; i < this.newshedulenr.length; i++) {
if (i % 3 == 0) {
var hnobj = {};
hnobj.span =
this.newshedulenr[i].hour * 60 +
this.newshedulenr[i].minute;
console.log("时间间隔");
} else if (i % 3 == 1) {
console.log("开始时间");
console.log("a");
let timeDate = new Date();
timeDate.setHours(this.newshedulenr[i].hour);
timeDate.setMinutes(this.newshedulenr[i].minute);
console.log(timeDate);
hnobj.startTime = timeDate;
} else if (i % 3 == 2) {
console.log("结束时间");
hnobj.endTime =
this.newshedulenr[i].hour +
":" +
this.newshedulenr[i].minute;
let timeDate = new Date();
timeDate.setHours(this.newshedulenr[i].hour);
timeDate.setMinutes(this.newshedulenr[i].minute);
// hnobj.endTime = c.toJSON();
let timeHour =
timeDate.getHours() < 10
? "0" + timeDate.getHours()
: timeDate.getHours();
let timeMinute =
timeDate.getMinutes() < 10
? "0" + timeDate.getMinutes()
: timeDate.getMinutes();
hnobj.endTime = timeDate;
hnarr.push(hnobj);
}
}
console.log("222222222222222222");
console.log(hnarr);
console.log("22222222222222222222222");
let dayArr = [];
//根据开始时间结束时间生产数组
for (let k = 0; k < hnarr.length; k++) {
console.log(hnarr[k].startTime);
console.log(hnarr[k].endTime);
console.log(hnarr[k].span);
let startDay = hnarr[k].startTime;
let endDay = hnarr[k].endTime;
console.log(startDay, endDay);
let startVal = this.$moment(new Date(startDay)).format(
"YYYY-MM-DD HH:mm"
);
console.log(startVal);
while (this.$moment(startVal).isBefore(endDay)) {
dayArr.push(startVal);
// 自增
startVal = this.$moment(new Date(startVal))
.add(hnarr[k].span, "minute")
.format("YYYY-MM-DD HH:mm");
console.log(startVal);
}
// // 将结束日期的天放进数组
dayArr.push(
this.$moment(new Date(endDay)).format("YYYY-MM-DD HH:mm")
);
console.log(dayArr);
this.newshedulenr = dayArr;
}
}
//河南规约
if (
this.timeProtocol == "65286" ||
this.timeProtocol == "65282"
) {
console.log("河南规约");
var hnarr = [];
for (var i = 0; i < this.newshedulenr.length; i++) {
console.log(this.newshedulenr[i].hour);
let timeDate = new Date();
timeDate.setHours(this.newshedulenr[i].hour);
timeDate.setMinutes(this.newshedulenr[i].minute);
console.log(timeDate);
hnarr.push(timeDate);
}
console.log(hnarr);
this.newshedulenr = hnarr;
}
this.timernum = 0;
// this.$message.success("查询成功");
clearInterval(this.timer);
this.timer = null;
} else if (this.timernum > 9) {
this.compareloading = false;
this.searchloading = false;
this.timernum = 0;
this.$message.warning("暂无拍照时间表!");
clearInterval(this.timer);
this.timer = null;
}
} else {
this.$message.error(res.code.msg);
}
})
.catch((err) => {
this.compareloading = false;
this.$message.error("查询失败");
clearInterval(this.timer);
this.timer = null;
});
},
//获取线路列表数据
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;
this.newList = [];
this.deviceTableData = res.data.list;
this.total = res.data.total;
this.loading = false;
// for (var i = 0; i < this.deviceTableData.list.length; i++) {
// console.log(this.deviceTableData.list[i]);
// }
// console.log(this.deviceTableData);
for (var i = 0; i < this.deviceTableData.length; i++) {
var arr = [];
console.log(this.deviceTableData[i]);
for (var k = 0; k < this.deviceTableData[i].list.length; k++) {
if (k % 3 == 0) {
var obj = {};
obj.span =
this.deviceTableData[i].list[k].hour * 60 +
this.deviceTableData[i].list[k].minute;
console.log("时间间隔");
} else if (k % 3 == 1) {
console.log("开始时间");
console.log("a");
// obj.startTime =
// this.deviceTableData[i].list[k].hour +
// ":" +
// this.deviceTableData[i].list[k].minute;
// console.log(new Date());
let timeDate = new Date();
timeDate.setHours(this.deviceTableData[i].list[k].hour);
timeDate.setMinutes(this.deviceTableData[i].list[k].minute);
console.log(timeDate);
// console.log(new Date().getHours());
// console.log(
// new Date().setHours(this.deviceTableData[i].list[k].hour)
// );
// console.log(d.getHours() + ":" + d.getMinutes());
// if (timeDate.getHours() < 10) {
// console.log(timeDate.getHours());
// obj.startTime =
// "0" + timeDate.getHours() + ":" + timeDate.getMinutes();
// } else {
// }
// let timeHour =
// timeDate.getHours() < 10
// ? "0" + timeDate.getHours()
// : timeDate.getHours();
// let timeMinute =
// timeDate.getMinutes() < 10
// ? "0" + timeDate.getMinutes()
// : timeDate.getMinutes();
obj.startTime = timeDate.toUTCString();
} else if (k % 3 == 2) {
console.log("结束时间");
obj.endTime =
this.deviceTableData[i].list[k].hour +
":" +
this.deviceTableData[i].list[k].minute;
let timeDate = new Date();
timeDate.setHours(this.deviceTableData[i].list[k].hour);
timeDate.setMinutes(this.deviceTableData[i].list[k].minute);
// obj.endTime = c.toJSON();
let timeHour =
timeDate.getHours() < 10
? "0" + timeDate.getHours()
: timeDate.getHours();
let timeMinute =
timeDate.getMinutes() < 10
? "0" + timeDate.getMinutes()
: timeDate.getMinutes();
//obj.startTime = timeHour + ":" + timeMinute;
// obj.endTime = timeHour + ":" + timeMinute;
obj.endTime = timeDate.toUTCString();
arr.push(obj);
}
console.log(this.deviceTableData[i].list[k]);
}
this.newList.push({
id: this.deviceTableData[i].id,
list: this.deviceTableData[i].list,
name: this.deviceTableData[i].name,
remark: this.deviceTableData[i].remark,
listTime: arr,
});
}
console.log("this.newList");
console.log(this.newList);
})
.catch((err) => {});
},
//点击分页
handleCurrentChange(val) {
this.page = val;
this.deviceList();
},
//设置-获取所有通道
handleSet(val) {
console.log(this.setNum);
var deviceOffsetnum = this.setNum;
this.loading = true;
this.scheduleid = val.id;
this.isShowset = true;
console.log(val);
this.scheduleInfo = val.listTime;
console.log("1111111", deviceOffsetnum);
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 == null
? this.listnr[0].list[0].list[0].cmdid
: 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,
zzprotocol: this.timeProtocol,
offsetNum: deviceOffsetnum,
};
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 {
getTermStatus({ termId: this.deviceListData.zzid }).then((res) => {
console.log(res);
if (res.data.isonline) {
var ruleBox = [];
//循环装置
//循环时间规则
let timearr = [];
let dayArr = [];
console.log(this.scheduleInfo);
for (var j = 0; j < this.scheduleInfo.length; j++) {
var Stime = moment(this.scheduleInfo[j].startTime)
.add(this.deviceListData.offsetNum, "minute")
.format();
var Etime = moment(this.scheduleInfo[j].endTime)
.add(this.deviceListData.offsetNum, "minute")
.format();
var lastETime = moment(this.scheduleInfo[j].endTime).format();
var spanTime = this.scheduleInfo[j].span;
console.log(Stime, Etime, spanTime);
console.log(moment(this.scheduleInfo[j].endTime).hour());
//判断湖南规约
if (this.deviceListData.zzprotocol == "65283") {
console.log("湖南规约");
console.log(Stime, Etime);
console.log(typeof Stime);
console.log(
moment(this.scheduleInfo[j].endTime)
.add(this.deviceListData.offsetNum, "minute")
.hour()
);
console.log(
moment(this.scheduleInfo[j].endTime)
.add(this.deviceListData.offsetNum, "minute")
.minute()
);
if (moment().isSame(moment(Etime), "day")) {
//如果是同一天
timearr.push(
{
hour: Math.floor(this.scheduleInfo[j].span / 60),
minute: this.scheduleInfo[j].span % 60,
preset: 255,
},
{
hour: moment(this.scheduleInfo[j].startTime)
.add(this.deviceListData.offsetNum, "minute")
.hour(),
minute: moment(this.scheduleInfo[j].startTime)
.add(this.deviceListData.offsetNum, "minute")
.minute(),
preset: 255,
},
{
hour: moment(this.scheduleInfo[j].endTime)
.add(this.deviceListData.offsetNum, "minute")
.hour(),
minute: moment(this.scheduleInfo[j].endTime)
.add(this.deviceListData.offsetNum, "minute")
.minute(),
preset: 255,
}
);
} else {
timearr.push(
{
hour: Math.floor(this.scheduleInfo[j].span / 60),
minute: this.scheduleInfo[j].span % 60,
preset: 255,
},
{
hour: moment(this.scheduleInfo[j].startTime)
.add(this.deviceListData.offsetNum, "minute")
.hour(),
minute: moment(this.scheduleInfo[j].startTime)
.add(this.deviceListData.offsetNum, "minute")
.minute(),
preset: 255,
},
{
hour: moment(this.scheduleInfo[j].endTime).hour(),
minute: moment(this.scheduleInfo[j].endTime).minute(),
preset: 255,
}
);
}
console.log(timearr);
}
}
////判断河南规约
if (
this.deviceListData.zzprotocol == "65286" ||
this.timeProtocol == "65282"
) {
console.log("河南规约");
//偏移时间
//this.getDayArr(startDay, endDay);
let startDay = Stime;
let endDay = Etime;
var lastendDay = lastETime;
console.log(startDay, endDay);
let startVal = this.$moment(new Date(startDay)).format(
"YYYY-MM-DD HH:mm"
);
console.log(startVal);
while (this.$moment(startVal).isBefore(endDay)) {
dayArr.push(startVal);
// 自增
startVal = this.$moment(new Date(startVal))
.add(spanTime, "minute")
.format("YYYY-MM-DD HH:mm");
console.log(startVal);
}
// // 将结束日期的天放进数组
if (!moment().isSame(moment(endDay), "day")) {
dayArr.push(
this.$moment(new Date(lastETime)).format("YYYY-MM-DD HH:mm")
);
}
console.log(dayArr);
for (var k = 0; k < dayArr.length; k++) {
//console.log(moment(dayArr[k]).hour());
timearr.push({
hour: moment(dayArr[k]).hour(),
minute: moment(dayArr[k]).minute(),
preset: 255,
});
}
// return dayArr;
}
var parmsobj = {
termid: this.deviceListData.zzid,
channelid: this.checkList,
offset: this.deviceListData.offsetNum,
list: timearr,
};
console.log(parmsobj);
ruleBox.push(parmsobj);
console.log(ruleBox);
setScheduleRulel({
scheduleid: this.scheduleid,
list: ruleBox,
})
.then((res) => {
console.log(res);
this.requestList = res.data.list;
this.requestTime();
this.timers = window.setInterval(() => {
//console.log(this.requestList);
this.requestTime();
this.i++;
}, 3000);
})
.catch((err) => {
this.$message({
duration: 1500,
showClose: true,
message: "添加失败",
type: "error",
});
});
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
});
}
},
//下发时间表
requestTime() {
//
this.sureloading = true;
getCmaSchelduleUpload({
list: this.requestList,
})
.then((res) => {
console.log("aaaaaaaaaaaaaaaaaaaaaaaa");
this.requestArr = res.data.list;
this.requestList = this.requestArr.filter(function (
value,
index,
arr
) {
console.log(value, index, arr);
return value.status !== 1;
});
console.log(this.requestArr);
if (this.requestList.length == 0) {
this.isShowset = false;
this.sureloading = false;
this.$message.success("下发成功");
clearInterval(this.timers);
this.timers = null;
} else if (this.i > 9) {
this.isShowset = false;
this.sureloading = false;
this.i = 0;
this.$message.warning("下发失败,请稍后再试!");
clearInterval(this.timers);
this.timers = null;
}
})
.catch((err) => {});
},
closebtn() {
this.isShowset = false;
this.deviceListData = [];
this.checkList = "";
// this.setNum = this.offsetnum;
this.deviceList();
clearInterval(this.timers);
this.timers = null;
},
display() {
this.isShow = true;
},
hide() {
this.isShow = false;
},
handleclose() {
this.newshedulenr = [];
this.shedulenr = [];
console.log("关闭轮询");
clearInterval(this.timers);
this.timers = null;
},
},
};
</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;
height: 294px;
.timehead {
display: flex;
line-height: 32px;
margin-bottom: 8px;
label {
margin-right: 6px;
width: 80px;
}
}
.timeShow {
//display: flex;
.leftTime {
width: 50%;
float: left;
}
.rightTime {
width: 50%;
float: right;
position: relative;
.offtime {
position: absolute;
top: 0px;
left: 78px;
}
}
}
}
.searchBtn {
font-size: 14px;
display: flex;
margin-left: auto;
span {
text-decoration-line: underline;
}
}
.flexnr {
display: flex;
align-items: center;
margin-top: 16px;
padding: 0px 8px;
}
.mt10 {
margin-bottom: 10px;
}
.mr10 {
margin-right: 10px;
}
.w8 {
width: 80px;
margin-bottom: 8px;
}
.w80 {
width: 80%;
overflow-y: auto;
height: 210px;
}
.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;
}
}
}
.math {
margin-top: 12px;
margin-bottom: 12px;
}
}
}
}
</style>