<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
      <!-- 计划名称 -->
      <el-form-item :label="$t('administration.ProjectName')">
        <el-input
          v-model="queryParams.taskName"
          :placeholder="
            $t('share.PleaseEnter') + ' ' + $t('administration.ProjectName')
          "
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <!-- 区域名称 -->
      <el-form-item :label="$t('administration.RegionName')">
        <el-input
          v-model="queryParams.areaName"
          :placeholder="
            $t('share.PleaseEnter') + ' ' + $t('administration.RegionName')
          "
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <!-- 状态 -->
      <el-form-item :label="$t('share.status')" prop="status">
        <el-select
          v-model="queryParams.isenable"
          :placeholder="$t('share.status')"
          clearable
          style="width: 240px"
        >
          <el-option :label="$t('share.On')" value="0"></el-option>
          <el-option :label="$t('share.Off')" value="1"></el-option>
        </el-select>
      </el-form-item>
      <!-- 计划有效期 -->
      <el-form-item :label="$t('administration.PlanValidityPeriod')">
        <el-date-picker
          v-model="queryParams.cycleStartTime"
          type="date"
          :placeholder="$t('share.StartTime')"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
        -
        <el-date-picker
          v-model="queryParams.cycleEndTime"
          type="date"
          :placeholder="$t('share.EndTime')"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </el-form-item>
      <!-- 创建时间 -->
      <el-form-item :label="$t('share.CreationTime')">
        <el-date-picker
          v-model="queryParams.beginTime"
          type="date"
          :placeholder="$t('share.StartTime')"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
        -
        <el-date-picker
          v-model="queryParams.endTime"
          type="date"
          :placeholder="$t('share.EndTime')"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </el-form-item>
      <!-- 按钮 -->
      <el-form-item>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >{{ $t("share.search") }}</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{
          $t("share.reset")
        }}</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <!-- 新增 -->
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          >{{ $t("share.new") }}</el-button
        >
      </el-col>
      <!-- 删除 -->
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          @click="handleDeleteAll"
          >{{ $t("share.delete") }}</el-button
        >
      </el-col>
    </el-row>
    <el-table
      v-loading="loading"
      :data="dataList"
      @selection-change="handleSelectionChange"
    >
      <el-table-column type="selection" width="55" align="center" />
      <!-- 计划名称 -->
      <el-table-column
        :label="$t('administration.ProjectName')"
        prop="taskName"
      />
      <!-- 计划有效期开始时间 -->
      <el-table-column
        :label="$t('administration.PlanValidityPeriod') + $t('share.StartTime')"
        prop="cycleStartTime"
        :show-overflow-tooltip="true"
        min-width="100px"
      />
      <!-- 计划有效期结束时间 -->
      <el-table-column
        :label="$t('administration.PlanValidityPeriod') + $t('share.EndTime')"
        prop="cycleEndTime"
        :show-overflow-tooltip="true"
        min-width="100px"
      />
      <!-- 创建时间 -->
      <el-table-column :label="$t('share.CreationTime')" prop="createTime" />
      <!-- 区域时间 -->
      <el-table-column
        :label="$t('administration.RegionName')"
        prop="areaName"
      />
      <!-- 任务策略 -->
      <el-table-column
        :label="$t('administration.TaskStrategy')"
        prop="executionStatus"
        :formatter="stateFormat"
      />
      <!-- 执行任务周期 -->
      <el-table-column
        :label="$t('administration.ExecutionTaskCycle')"
        prop="taskCycle"
         :formatter="stateTask"
      />
      <!-- 状态 -->
      <el-table-column :label="$t('share.status')" align="center">
        <template slot-scope="scope">
          <el-switch
            v-model="scope.row.isenable"
            active-value="0"
            inactive-value="1"
            @change="handleStatusChange(scope.row)"
          ></el-switch>
        </template>
      </el-table-column>
      <!-- 操作 -->
      <el-table-column
        :label="$t('share.operate')"
        align="center"
        class-name="small-padding fixed-width"
        width="200"
      >
        <template slot-scope="scope" v-if="scope.row.roleId !== 1">
          <!-- 立即执行 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleImmediateExecution(scope.row.taskId)"
            >{{ $t("administration.ImmediateExecution") }}</el-button
          >
          <!-- 下发 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleIssue(scope.row.taskId)"
            >{{ $t("administration.issue") }}</el-button
          >
          <!-- 复制任务 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleCopy(scope.row)"
            >{{ $t("administration.ReplicationTask") }}</el-button
          >
          <!-- 编辑 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            >{{ $t("share.edit") }}</el-button
          >
          <!-- 删除 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row.taskId)"
            >{{ $t("share.delete") }}</el-button
          >
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
       @pagination="init"
    />
    <el-dialog :title="title" :visible.sync="dialogTableVisible">
      <el-steps :active="active" style="margin-bottom: 20px">
        <el-step :title="$t('administration.SetPlanObject')"></el-step>
        <el-step :title="$t('administration.SelectInspectionObject')"></el-step>
        <el-step :title="$t('administration.PointSetting')"></el-step>
      </el-steps>

      <el-form
        ref="ruleForm"
        :model="dialogForm"
        label-width="110px"
        :rules="rules"
      >
        <div v-if="dialogTableVisibleStep == 0">
          <!-- 名称 -->
          <el-form-item :label="$t('administration.name')" prop="taskName">
            <el-input
              v-model="dialogForm.taskName"
              :placeholder="$t('share.PleaseEnter') + $t('administration.name')"
            ></el-input>
          </el-form-item>
          <!-- 优先级 -->
          <el-form-item :label="$t('administration.priority')" prop="priority">
            <el-select
              v-model="dialogForm.priority"
              :placeholder="$t('administration.priority')"
            >
              <el-option
                :label="$t('administration.priority') + 1"
                value="1"
              ></el-option>
              <el-option
                :label="$t('administration.priority') + 2"
                value="2"
              ></el-option>
              <el-option
                :label="$t('administration.priority') + 3"
                value="3"
              ></el-option>
              <el-option
                :label="$t('administration.priority') + 4"
                value="4"
              ></el-option>
            </el-select>
          </el-form-item>
          <!-- 任务类型 -->
          <el-form-item :label="$t('administration.TaskType')" prop="type">
            <el-select
              v-model="dialogForm.type"
              :placeholder="$t('administration.TaskType')"
            >
              <el-option
                :label="item.patrolTypeName"
                :value="item.patrolTypeId"
                v-for="item in patroltype"
                :key="item.patrolTypeId"
              ></el-option>
            </el-select>
          </el-form-item>
          <!-- 任务执行方式 -->
          <!-- <el-form-item
            :label="$t('administration.TaskExecutionMethod')"
            prop="executionMode"
          >
            <el-checkbox-group v-model="dialogForm.executionMode">
              <el-checkbox label="0" name="type">{{
                $t("administration.WalkThrough")
              }}</el-checkbox>
          
            </el-checkbox-group>
          </el-form-item> -->
          <!-- 巡检区域 -->
          <el-form-item
            :label="$t('administration.InspectionArea')"
            prop="areaIdS"
          >
            <!-- :default-checked-keys="dialogForm.areaIdS" -->
            <el-tree
              :data="treeData"
              show-checkbox
              node-key="areaId"
              ref="tree"
              highlight-current
              :props="defaultProps"
              @check="setUpHandleCheckChange"
            >
            </el-tree>
          </el-form-item>
          <!-- 执行周期 -->
          <el-form-item :label="$t('administration.executeCycle')">
            <el-radio-group v-model="dialogForm.executionStatus">
              <el-radio :label="1" :value="1">{{
                $t("administration.RegularExecution")
              }}</el-radio>
              <el-radio :label="2" :value="2">{{
                $t("administration.PeriodicExecution")
              }}</el-radio>
              <el-radio :label="4" :value="4">{{
                $t("administration.IntervalExecution")
              }}</el-radio>
            </el-radio-group>
          </el-form-item>
          <!-- 执行日期 -->
          <el-form-item
            :label="$t('administration.ExecutionDate')"
            v-if="dialogForm.executionStatus == 1"
            prop="fixedStartTime"
          >
            <el-date-picker
              v-model="dialogForm.fixedStartTime"
              type="datetime"
              :placeholder="$t('administration.ExecutionDate')"
              value-format="yyyy-MM-dd HH:mm:ss"
            >
            </el-date-picker>
          </el-form-item>
          <div
            v-if="dialogForm.executionStatus == 2"
            style="margin-bottom: 20px"
          >
            <div class="cycle2">{{ $t("administration.timeSetting") }}</div>
            <!-- 计划有效期 -->
            <el-form-item
              :label="$t('administration.PlanValidityPeriod')"
              prop="PlanValidityPeriod"
            >
              <el-date-picker
                v-model="dialogForm.value1"
                type="datetimerange"
                range-separator="-"
                :start-placeholder="$t('share.StartTime')"
                :end-placeholder="$t('share.EndTime')"
              >
              </el-date-picker>
            </el-form-item>
            <!-- 执行任务周期 -->
            <el-form-item
              :label="$t('administration.ExecutionTaskCycle')"
              prop="ExecutionTaskCycle"
            >
              <el-select
                v-model="dialogForm.region"
                :placeholder="
                  $t('share.PleaseChoose') +
                  $t('administration.ExecutionTaskCycle')
                "
              >
                <el-option
                  :label="$t('administration.SelectByWeek')"
                  value="shanghai"
                ></el-option>
                <el-option
                  :label="$t('administration.MonthlySelection')"
                  value="beijing"
                ></el-option>
              </el-select>
            </el-form-item>
            <!-- 执行日期添加 -->
            <el-form-item
              :label="$t('administration.ExecutionDate')"
              prop="ExecutionDate"
            >
              <el-button type="primary" @click="executionTimeBtn"
                >{{ $t("share.addTo") }}{{ executionTimeButton }}/7</el-button
              >
            </el-form-item>
            <el-table
              :data="executionTimeData"
              style="width: 80%; margin-left: 10%"
            >
              <!-- 日期 -->
              <el-table-column
                :label="$t('administration.date')"
                align="center"
              >
                <template slot-scope="scope">
                  <el-select
                    v-model="scope.row.day"
                    :placeholder="
                      $t('share.PleaseChoose') + $t('administration.date')
                    "
                  >
                    <el-option
                      :label="item.name"
                      :value="item.name"
                      v-for="(item, index) in weekData"
                      :key="item.id"
                      >{{ item.name }}</el-option
                    >
                  </el-select>
                </template>
              </el-table-column>
              <!-- 时间 -->
              <el-table-column
                prop="name"
                :label="$t('administration.time')"
                align="center"
              >
                <template slot-scope="scope">
                  <el-time-picker
                    v-model="scope.row.time"
                    :placeholder="
                      $t('share.PleaseChoose') + $t('administration.time')
                    "
                  >
                  </el-time-picker>
                </template>
              </el-table-column>
              <!-- 操作 -->
              <el-table-column
                prop="address"
                :label="$t('share.delete')"
                align="center"
              >
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    icon="el-icon-delete"
                    @click="executionTimeDelet(scope.row)"
                  />
                </template>
              </el-table-column>
            </el-table>
          </div>
          <div
            v-if="dialogForm.executionStatus == 4"
            style="margin-bottom: 20px"
          >
            <!-- <div class="cycle2">时间设置</div> -->
            <!-- 间隔 -->
            <el-form-item
              :label="$t('administration.interval')"
              prop="interval"
            >
              <el-date-picker
                v-model="dialogForm.value1"
                type="datetimerange"
                range-separator="-"
                :start-placeholder="$t('share.StartTime')"
                :end-placeholder="$t('share.EndTime')"
              >
              </el-date-picker>
            </el-form-item>
            <!-- 执行时间 -->
            <el-form-item
              :label="$t('administration.executionTime')"
              prop="executionTime"
            >
              <el-time-picker
                v-model="dialogForm.value1"
                :placeholder="
                  $t('share.PleaseChoose') + $t('administration.executionTime')
                "
              >
              </el-time-picker>
            </el-form-item>
            <!-- 间隔类型 -->
            <el-form-item
              :label="$t('administration.intervalType')"
              prop="intervalType"
            >
              <el-select
                v-model="dialogForm.region"
                :placeholder="
                  $t('share.PleaseChoose') + $t('administration.intervalType')
                "
              >
                <el-option :label="$t('share.hour')" value="小时"></el-option>
              </el-select>
            </el-form-item>
            <!-- 数量 -->
            <el-form-item
              :label="$t('administration.quantity')"
              prop="quantity"
            >
              <el-input-number
                v-model="dialogForm.num"
                :min="1"
              ></el-input-number>
            </el-form-item>
          </div>
          <el-form-item>
            <el-button @click="resetForm('ruleForm')">{{
              $t("share.cancel")
            }}</el-button>
            <el-button type="primary" @click="submitForm(0)">{{
              $t("administration.nextStep")
            }}</el-button>
          </el-form-item>
        </div>
        <!-- 选择巡检对象 -->
        <div v-if="dialogTableVisibleStep == 1">
          <div class="dialogTableVisibleStep1">
            <div class="dialogTableVisibleStep1-content">
              <div class="leftTotle">{{ $t("administration.region") }}</div>
              <div
                class="dialogTableVisibleStepQurey"
                style="margin-bottom: 10px"
              >
                <el-input
                  :placeholder="$t('share.content')"
                  v-model="treeWatchInput"
                >
                </el-input>
                <!-- <el-button
                  slot="append"
                  icon="el-icon-search"
                  type="primary"
                ></el-button> -->
              </div>
              <el-tree
                :data="selectTreeData"
                show-checkbox
                node-key="areaId"
                ref="selectTree"
                highlight-current
                :props="defaultProps"
                @check="selectTreeHandleCheckChange"
                :check-strictly="true"
                :filter-node-method="selectTreeDataWacth"
              >
              </el-tree>
            </div>
            <div>
              <el-transfer
                v-model="transferValue"
                :data="transferData"
                :props="{ key: 'deviceId', label: 'deviceName' }"
                :titles="[
                  $t('administration.ToBeAdded'),
                  $t('administration.Added'),
                ]"
              ></el-transfer>
            </div>
          </div>
          <div
            style="
              margin-left: 80%;
              margin-top: 20px;
              display: flex;
              justify-content: flex-end;
            "
          >
            <el-button @click="returnCancel(0)">{{
              $t("administration.PreviousStep")
            }}</el-button>
            <el-button type="primary" @click="submitForm(1)">{{
              $t("administration.nextStep")
            }}</el-button>
          </div>
        </div>
        <!-- 点位设置 -->
        <div v-if="dialogTableVisibleStep == 2">
          <el-tree
            :data="pointSettingsTreeData"
            show-checkbox
            node-key="areaId"
            ref="pointSettingsTree"
            highlight-current
            :props="pointSettingsDefaultProps"
            @check="pointSettingsTreeDataHandleCheckChange"
          >
          </el-tree>
          <el-form-item
            :label="$t('administration.IsItEnabled')"
            prop="isenable"
          >
            <el-radio-group v-model="dialogForm.isenable">
              <el-radio :label="0">{{ $t("share.Yes") }}</el-radio>
              <el-radio :label="1">{{ $t("share.No") }}</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item>
            <el-button @click="returnCancel(1)">{{
              $t("administration.PreviousStep")
            }}</el-button>
            <el-button type="primary" @click="submitForm(2)">{{
              $t("share.confirm")
            }}</el-button>
          </el-form-item>
        </div>
        <!-- <span slot="footer" class="dialog-footer">
        <el-button @click="cancel">取 消</el-button>
        <el-button type="primary" @click="submitForm">下一步</el-button>
      </span> -->
      </el-form>
    </el-dialog>

    <!-- 复制弹框 -->
    <el-dialog
      :title="$t('administration.CopyTask')"
      :visible.sync="copyDialogVisible"
      width="30%"
      :before-close="handleClose"
    >
      <el-time-picker
        v-model="copyTask.time"
        format="HH:mm:ss"
        value-format="HH:mm:ss"
        :placeholder="$t('share.PleaseChoose') + $t('administration.time')"
      >
      </el-time-picker>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="copyOk()">{{
          $t("administration.Copy")
        }}</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import {
  getList,
  getChangeStatus,
  postRemove,
  getPatroltypeList,
  getAreaList,
  getProDeviceTreeSelect,
  getTreeProMainDevicePatrolEquSelect,
  getCopyTask,
  getControlChange,
  getTaskIsSue,
} from "@/api/administration";
import TreeSelect from "@riophae/vue-treeselect";
export default {
  data() {
    return {
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        taskName: "",
        cycleStartTime: "",
        cycleEndTime: "",
        areaName: "",
        isenable: "",
        beginTime: "",
        endTime: "",
      },
      total: 0,
      loading: true,
      dataList: [],
      // 选中数组
      ids: [],
      title: "新增",
      dialogTableVisible: false,
      active: 0,
      patroltype: [],
      dialogForm: {
        areaIdS: [],
        executionMode: [],
        executionStatus: 1,
      },
      areaIdS: [],
      treeData: [],
      setUpAreaIds: [],
      selectTreeData: [],
      selectTreeIds: [],
      pointSettingsTreeData: [],
      pointSettingsDefaultProps: {
        children: "children",
        label: "label",
      },
      defaultProps: {
        children: "children",
        label: "areaName",
      },
      rules: {},
      executionTimeButton: 1,
      executionTimeData: [{ day: "", time: "", id: Date.now() }],
      weekData: [
        { name: "周一", id: "0" },
        { name: "周二", id: "1" },
        { name: "周三", id: "2" },
        { name: "周四", id: "3" },
        { name: "周五", id: "4" },
        { name: "周六", id: "5" },
        { name: "周日", id: "6" },
      ],
      dialogTableVisibleStep: 0,
      transferData: [],
      transferValue: [],
      copyDialogVisible: false,
      rules: {
        taskName: [
          {
            required: true,
            message:
              this.$t("share.PleaseEnter") + this.$t("administration.name"),
            trigger: "blur",
          },
        ],
        priority: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.priority"),
            trigger: "blur",
          },
        ],
        type: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.TaskType"),
            trigger: "blur",
          },
        ],
        executionMode: [
          {
            type: "array",
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.TaskExecutionMethod"),
            trigger: "change",
          },
        ],
        areaIdS: [
          {
            type: "array",
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.InspectionArea"),
            trigger: "change",
          },
        ],
        fixedStartTime: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.ExecutionDate"),
            trigger: "change",
          },
        ],
        proDeviceTreeSelect: [],
        isenable: [
          {
            required: true,
            message: this.$t("share.PleaseChoose") + this.$t("share.status"),
            trigger: "change",
          },
        ],
        PlanValidityPeriod: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.PlanValidityPeriod"),
            trigger: "change",
          },
        ],
        ExecutionTaskCycle: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.ExecutionTaskCycle"),
            trigger: "change",
          },
        ],
        ExecutionDate: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.ExecutionDate"),
            trigger: "change",
          },
        ],
        interval: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.interval"),
            trigger: "change",
          },
        ],
        executionTime: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.executionTime"),
            trigger: "change",
          },
        ],
        intervalType: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.intervalType"),
            trigger: "change",
          },
        ],
        quantity: [
          {
            required: true,
            message:
              this.$t("share.PleaseChoose") +
              this.$t("administration.quantity"),
            trigger: "change",
          },
        ],
      },
      copyTask: {
        taskId: null,
        time: null,
      },
      treeWatchInput: "",
    };
  },
  watch: {
    treeWatchInput(val) {
      this.$refs.selectTree.filter(val);
    },
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      getList(this.queryParams).then((res) => {
        console.log(res);
        if (res.code == 200) {
          this.loading = false;
          this.dataList = res.rows;
          this.total = res.total;
          this.$message({
            message: this.$t("prompt.success.queryWasSuccessful"),
            type: "success",
          });
        }
      });
    },
    // 查询
    handleQuery() {
      this.init();
    },
    // 重置
    resetQuery() {
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
      };
      this.init();
    },
     stateFormat(row, column) {
      if (row.executionStatus == 0) {
        return "立即执行";
      } else if (row.executionStatus == 1) {
        return "周期执行";
      } else if (row.executionStatus == 2) {
        return "定时执行";
      } else if (row.executionStatus == 3) {
        return "已执行";
      } else if (row.executionStatus == 4) {
        return "间隔执行";
      }
    },
    stateTask(row, column) {
      if (row.executionStatus == 1) {
        if (row.taskCycle == 0) {
          return "按月";
        } else if (row.taskCycle == 1) {
          return "按周";
        }
        return "";
      }
    },
    handleStatusChange(row) {
      let data = {
        taskId: row.taskId,
        isenable: row.isenable,
      };
      getChangeStatus(data).then((res) => {
        if (res.code == 200) {
          this.init();
        }
      });
    },
    // 新增
    handleAdd() {
      this.dialogTableVisible = true;
      getPatroltypeList().then((res) => {
        if (res.code == 200) {
          this.patroltype = res.rows;
        }
      });
      getAreaList().then((res) => {
        if (res.code == 200) {
          let tree = this.dialogTree(res.data);
          this.treeData = tree;
        }
      });
    },
    // 弹框tree扁平转树结构
    dialogTree(list) {
      var map = {},
        node,
        tree = [];
      for (let i = 0; i < list.length; i++) {
        map[list[i].areaId] = list[i];
        list[i].children = [];
      }
      for (let i = 0; i < list.length; i += 1) {
        list[i];
        if (list[i].parentId !== 0) {
          // 不是根节点
          map[list[i].parentId].children.push(list[i]); // 放到父节点的children里
        } else {
          // 是根节点
          tree.push(list[i]); // 根节点计入结果数组
        }
      }
      return tree;
    },
    // 多选删除
    handleDeleteAll() {
      if (this.ids.length <= 0) {
        this.$message({
          message: this.$t("prompt.error.delete_Data"),
          type: "warning",
        });
        return;
      } else {
        console.log(this.ids.toString());
        postRemove(this.ids.toString()).then((res) => {
          if (res.code == 200) {
            this.$message({
              message: this.$t("prompt.success.queryWasSuccessful"),
              type: "success",
            });
            this.init();
          } else {
            this.$message({
              message: res.msg,
              type: "warning",
            });
          }
        });
      }
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.taskId);
    },
    handleDelete(taskId) {
      postRemove(taskId).then((res) => {
        if (res.code == 200) {
          this.init();
        }
      });
    },
    cancel() {
      this.dialogTableVisible = false;
      this.dialogForm = {};
    },

    // 弹框tree树选择
    handleCheckChange(data) {
      let idArr = [];
      if (idArr.indexOf(data.areaId) > -1) {
        idArr.splice(idArr.indexOf(data.areaId), 1);
      } else {
        idArr.push(data.areaId);
      }
      return idArr;
    },
    // 设置计划对象弹框选择
    setUpHandleCheckChange(data) {
      var parentIds = this.$refs.tree.getHalfCheckedKeys();
      var childsIds = this.$refs.tree.getCheckedKeys();
      let treeIds = parentIds.concat(childsIds);
      this.dialogForm.areaIdS = treeIds;

      return;
      this.dialogForm.areaIdS = this.handleCheckChange(treeIds);
      console.log(this.dialogForm.areaIdS);
    },
    // 弹框选择巡检对象 tree树选择
    selectTreeHandleCheckChange(data) {
      // this.selectTreeIds = this.handleCheckChange(data);
      let res = this.$refs.selectTree.getCheckedNodes();
      let arrDeptId = [];
      res.forEach((item) => {
        arrDeptId.push(item.areaId);
      });
      this.transferData = this.proDeviceTreeSelect.filter((item) =>
        arrDeptId.some((ele) => ele === item.areaId)
      );
    },
    // 点位设置数
    pointSettingsTreeDataHandleCheckChange() {
      let res = this.$refs.pointSettingsTree.getCheckedNodes();
      console.log(res);
    },
    // 弹框下一步
    submitForm(type) {
      this.$refs["ruleForm"].validate((valid) => {
        if (valid) {
          console.log(this.dialogForm);
          // this.dialogForm.executionMode = 0;
          if (type == 0) {
            this.active = 1;
            this.dialogTableVisibleStep = 1;
            let areaIdS = JSON.parse(JSON.stringify(this.dialogForm.areaIdS));
            // areaIdS.push(1);
            getAreaList(areaIdS.join(","), 1).then((res) => {
              if (res.code == 200) {
                let tree = this.dialogTree(res.data);
                this.selectTreeData = tree;
              }
            });
            getProDeviceTreeSelect(areaIdS.join(",")).then((res) => {
              if (res.code == 200) {
                this.proDeviceTreeSelect = res.data;
              }
            });
          }
          if (type == 1 && this.transferValue) {
            this.active = 2;
            this.dialogTableVisibleStep = 2;
            getTreeProMainDevicePatrolEquSelect(
              this.transferValue.join(",")
            ).then((res) => {
              console.log(res, 11111);
              this.pointSettingsTreeData = res.data;
            });
          }
          if (type == 2) {
            console.log(this.dialogForm);
          }
        }
      });
    },
    // 弹框上一步
    returnCancel(type) {
      this.active = type;
      this.dialogTableVisibleStep = type;
    },
    resetForm(formName) {
      this.dialogForm = {};
      this.$refs[formName].resetFields();
      this.dialogTableVisible = false;
    },
    // 添加任务执行时间输入框
    executionTimeBtn() {
      if (this.executionTimeData.length <= 6) {
        this.executionTimeData.push({ day: "", time: "", id: Date.now() });
      }
    },
    executionTimeDelet(row) {
      if (this.executionTimeData.length > 1) {
        this.executionTimeData = this.executionTimeData.filter(
          (item) => item.id != row.id
        );
        console.log(this.executionTimeData);
      }
    },
    // 复制任务
    handleCopy(row) {
      this.copyTask.taskId = row.taskId;
      this.copyDialogVisible = true;
    },
    // 编辑任务
    handleUpdate(row) {
      this.dialogTableVisible = true;
    },
    handleClose() {
      this.copyDialogVisible = false;
    },
    // 复制任务确定
    copyOk() {
      console.log(this.copyTask.time);
      if (this.copyTask.time) {
        getCopyTask(this.copyTask).then((res) => {
          if (res.code == 200) {
            this.$message({
              message: this.$t("prompt.success.taskCopySuccess"),
              type: "success",
            });
            this.init();
            this.copyDialogVisible = false;
          }
        });
      } else {
        this.$message.error(this.$t("prompt.error.PleaseSelectATime"));
      }
    },
    // 立即执行
    handleImmediateExecution(taskId) {
      getControlChange({ taskId }).then((res) => {
        console.log(res, 111111111);
        if (res.code == 200) {
          this.$message({
            message: this.$t("prompt.success.OperationSuccessful"),
            type: "success",
          });
        }
      });
    },
    // 任务下发
    handleIssue(taskId) {
      getTaskIsSue({ taskId }).then((res) => {
        if (res.code == 200) {
          this.$message({
            message: this.$t("prompt.success.OperationSuccessful"),
            type: "success",
          });
        }
      });
    },
    // 第二部Tree过滤
    selectTreeDataWacth(value, data) {
      console.log(value, data, 11111111);
      if (!value) return true;
      return data.areaName.indexOf(value) !== -1;
    },
  },
};
</script>

<style lang="scss" scoped>
.cycle2 {
  padding: 10px;
  font-size: 20px;
  font-weight: bold;
  margin-bottom: 20px;
}
.dialogTableVisibleStep1 {
  display: flex;
  justify-content: space-around;
}
.dialogTableVisibleStep1-content {
  width: 30%;
  // height: 200px;
  .leftTotle {
    font-size: 20px;
    margin-bottom: 10px;
  }
  .el-input {
    width: 75%;
  }
}
</style>
