<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' ||
                      timeProtocol == '65280' ||
                      timeProtocol == '65296' ||
                      timeProtocol == '65281' ||
                      timeProtocol == '65284' ||
                      timeProtocol == '65285'
                    "
                    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' ||
                      timeProtocol == '65280' ||
                      timeProtocol == '65296' ||
                      timeProtocol == '65281' ||
                      timeProtocol == '65284' ||
                      timeProtocol == '65285'
                    "
                    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),
      setNum: 0,
      compareloading: false,
      timeProtocol: "",

      intervalNum: 1000, //时间间隔
    };
  },
  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" ||
                this.timeProtocol == "65280" ||
                this.timeProtocol == "65296" ||
                this.timeProtocol == "65281" ||
                this.timeProtocol == "65284" ||
                this.timeProtocol == "65285"
              ) {
                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.compareloading = false;
      this.timernum = 0;
      // this.$message.success("查询成功");
      clearInterval(this.timer);
      this.timer = null;
      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" ||
            this.timeProtocol == "65281"
          ) {
            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(() => {
            this.realNewtime();
            console.log("时间", this.timernum);
            console.log("时间间隔", this.intervalNum);
            this.timernum++;
          }, this.intervalNum);
        })
        .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" ||
                this.timeProtocol == "65280" ||
                this.timeProtocol == "65296" ||
                this.timeProtocol == "65281" ||
                this.timeProtocol == "65284" ||
                this.timeProtocol == "65285"
              ) {
                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.deviceListData.zzprotocol == "65282" ||
                this.deviceListData.zzprotocol == "65280" ||
                this.deviceListData.zzprotocol == "65296" ||
                this.deviceListData.zzprotocol == "65281" ||
                this.deviceListData.zzprotocol == "65284" ||
                this.deviceListData.zzprotocol == "65285"
              ) {
                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")) {
                  console.log("dayArr最后一天啊");
                  console.log(dayArr);
                  console.log(
                    lastETime,
                    this.$moment(new Date(lastETime)).format("YYYY-MM-DD HH:mm")
                  );
                  // dayArr.push(
                  //   this.$moment(new Date(lastETime)).format("YYYY-MM-DD HH:mm")
                  // );
                }

                // return dayArr;
              }
            }
            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,
              });
            }
            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();
      this.sureloading = false;
      clearInterval(this.timers);
      this.timers = null;
    },
    display() {
      this.isShow = true;
    },
    hide() {
      this.isShow = false;
    },
    handleclose() {
      this.newshedulenr = [];
      this.shedulenr = [];
      this.sureloading = false;
      this.compareloading = false;

      clearInterval(this.timer);
      clearInterval(this.timers);
      this.timers = null;
      this.timer = null;
      console.log("关闭轮询", "loading");
    },
  },
};
</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>
