<template>
  <div style="height: 100%; padding: 10px 20px">
    <div class="query mg-b-8">
      <div class="query-items">
        <div
          class="newspan"
          v-for="(item, index) of optionData"
          :key="index"
          :class="{ active: cur == index }"
          @click="handleOpen(item, index)"
        >
          {{ item }}
        </div>
      </div>
    </div>
    <div class="query mg-b-8">
      <div class="query-items">
        <div class="query-item">
          <div class="lable">场站：</div>
          <div class="search-input">
            <el-select
              v-model="value1"
              clearable
              placeholder="请选择"
              popper-class="select"
            >
              <el-option
                v-for="item in ChangZhan"
                :key="item.id"
                :value="item.id"
                :label="item.name"
              >
              </el-option>
            </el-select>
          </div>
        </div>
        <div class="query-item">
          <div class="lable">日期：</div>
          <div class="search-input">
            <el-date-picker
              v-model="date"
              :type="cur ? 'date' : 'month'"
              placeholder="选择日期"
              popper-class="date-select"
              :value-format="`YYYY-MM${cur ? '-DD' : ''}`"
            >
            </el-date-picker>
          </div>
        </div>
        <div class="query-actions">
          <el-button size="mini" round class="searchColor" @click="getTable"
            >查 询</el-button
          >
        </div>
      </div>
    </div>
    <div class="table-box">
      <div class="leftContent">
        <span>{{ showTitle }}</span>
      </div>
      <ComTable
        :data="tableData"
        :pageSize="20"
        v-loading="tableLoading"
        element-loading-text="拼命加载中.."
        element-loading-background="rgba(0, 0, 0, 0.8)"
      ></ComTable>
    </div>
  </div>
</template>
<script>
import ComTable from "@/components/coms/table/table-qc.vue";
import thermometerVue from "../../../../components/chart/bar/thermometer.vue";
import api1 from "@api/economic/index.js";
import api from "@api/wisdomOverhaul/energy/index.js";
export default {
  name: "Qxpclfx",
  components: { ComTable },
  data() {
    return {
      cur: 0,
      optionData: ["月曲线偏差率排行榜", "日曲线偏差率排行榜"],
      ChangZhan: [],
      value1: "",
      date: "",
      showTitle: "月曲线偏差率排行榜",
      tableLoading: true,
      tableData: {
        column: [
          {
            name: "风机",
            field: "wtCode",
            is_num: false,
            is_light: false,
            sortable: thermometerVue,
          },
          {
            name: "实际 / 保证（%）",
            field: "deviationRate2",
            is_num: false,
            is_light: false,
            sortable: true,
          },
          {
            name: "实际 / 最优（%）",
            field: "deviationRate1",
            is_num: false,
            is_light: false,
            sortable: true,
          },
          {
            name: "最优 / 保证（%）",
            field: "deviationRate3",
            is_num: false,
            is_light: false,
            sortable: true,
          },
          {
            name: "环比",
            field: "monthDeviationRate",
            is_num: false,
            is_light: false,
            sortable: true,
          },
          {
            name: "同比",
            field: "yearDeviationRate",
            is_num: false,
            is_light: false,
            sortable: true,
          },
          {
            name: "比标杆风机",
            field: "standardDeviationRate",
            is_num: false,
            is_light: false,
            sortable: true,
          },
        ],
        data: [],
      },
      tableId: "",
    };
  },
  created() {
    this.ChangZhanVal();
    this.date = new Date().formatDate("yyyy-MM-dd");
  },
  methods: {
    // 获取表格数据
    getTable() {
      this.tableLoading = true;

      const url = this.cur
        ? "getCurvefittingmainList"
        : "getCurvefittingmonthmainList";

      const param = {
        isAsc: "asc",
        wpId: this.value1,
        pageNum: 1,
        pageSize: 1000,
      };

      if (this.cur) {
        param.recorddate = this.date;
      } else {
        param.year = parseInt(this.date?.split("-")[0]);
        param.month = parseInt(this.date?.split("-")[1]);
      }

      api[url](param).then((res) => {
        this.tableLoading = false;
        if (res.code === 200) {
          res.data.forEach((ele) => {
            ele.curIndex = this.cur;
            ele.recordDate = this.date;
          });
          this.tableData.data = res.data || [];
        }
      });
    },
    // tab
    handleOpen(vl, index) {
      this.cur = index;
      this.showTitle = vl;
      this.date = new Date().formatDate(`yyyy-MM${index ? "-dd" : ""}`);
      this.getTable();
    },
    // 场站
    ChangZhanVal() {
      api1
        .getWpList({
          type: "-1",
        })
        .then((res) => {
          if (res.data.code === 200) {
            this.ChangZhan = res.data.data;
            this.value1 = res.data.data[0].id;
            this.getTable();
          }
        });
    },
  },
};
</script>
<style scoped lang="less">
.table-box {
  height: calc(100% - 80px);
  .leftContent {
    width: 242px;
    height: 45px;
    line-height: 45px;
    background: url("~@/assets/imgs/title_left_bg1.png") no-repeat;

    span {
      font-size: 16px;
      font-family: Microsoft YaHei;
      font-weight: 400;
      color: #05bb4c;
      margin-left: 25px;
    }
  }
}
.query-actions {
  margin-left: 0 !important;
}
button {
  margin-left: 10px;
  background: rgba(67, 81, 107, 0.3);
  border: 1px solid #274934;
  color: #b3b3b3;
}

.searchColor {
  background-color: rgba(5, 187, 76, 0.2);
  border: 1px solid #3b6c53;
  color: #b3b3b3;
  font-size: 14px;

  &:hover {
    background-color: rgba(5, 187, 76, 0.5);
    color: #ffffff;
  }
}

.newspan {
  line-height: 30px;
  cursor: pointer;
  padding: 0 1vw;
  margin: 0 2px;
  color: #9ca5a8;
  transition: color 0.2s ease-in-out;
  position: relative;
}
.newspan:hover {
  background: linear-gradient(
    to top,
    rgba(5, 187, 76, 0.5),
    rgba(5, 187, 76, 0)
  );
  color: white;
  position: relative;
}
.newspan:hover::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 0.463vh;
  border: 0.093vh solid #05bb4c;
  border-top: 0;
  left: 0;
  bottom: 0;
  box-sizing: border-box;
}
.active {
  background: linear-gradient(
    to top,
    rgba(5, 187, 76, 0.5),
    rgba(5, 187, 76, 0)
  );
  color: white;
  position: relative;
}
.active::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 4px;
  border: 1px solid #05bb4c;
  border-top: 0;
  left: 0;
  bottom: 0;
  box-sizing: border-box;
}
.title {
  background: rgba(255, 255, 255, 0.1);
  margin-bottom: 8px;
  padding: 8px;
}
</style>
