<template>
  <div class="parcel-box">
    <div class="search">
      <div class="search-left">
        <el-select
          size="mini"
          v-model="company"
          placeholder="请选择"
          @change="search()"
        >
          <el-option
            v-for="item in companyOptions"
            :key="item.id"
            :label="item.aname"
            :value="item.id"
          >
          </el-option>
        </el-select>
        <div class="tabCut">
          <div
            @click="tabClick(val.id)"
            :class="tabIndex === val.id ? 'active' : ''"
            v-for="val in tabOptions"
            :key="val.id"
          >
            <span>{{ val.name }}</span>
          </div>
        </div>
        <div class="search-input">
          <el-date-picker
            size="mini"
            v-model="searchYear"
            type="year"
            value-format="YYYY"
            placeholder="选择年"
            popper-class="date-select"
          >
          </el-date-picker>
        </div>
        <el-button round size="mini" class="searchColor" @click="search"
          >搜索</el-button
        >
      </div>
      <div class="search-right">
        <img class="select-back" src="@assets/imgs/select-back.png" />
        <div class="title-select">
          <el-select
            v-model="selectValue"
            placeholder="请选择"
            @change="search()"
            clearable
          >
            <el-option
              v-for="item in selectList"
              :key="item.name"
              :label="item.name"
              :value="item.name"
            >
            </el-option>
          </el-select>
        </div>
      </div>
      <!-- <el-button round size="mini">导出</el-button> -->
    </div>
    <div class="data-bodys">
      <div class="leftContent">
        <span>{{ selectValue }}</span>
      </div>

      <div class="economicTable">
        <el-table
          :data="tableData"
          style="width: 100%"
          size="mini"
          stripe
          height="100%"
          @row-click="rowClick"
        >
          <el-table-column
            align="center"
            prop=""
            label="场站"
            show-overflow-tooltip
            sortable
          >
            <template v-slot="scope">
              <span style="cursor: pointer">{{ scope.row.wpname }}</span>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            :label="val"
            v-for="(val, index) in tableHead"
            :key="index"
            width="140"
            sortable
          >
            <template v-slot="scope">
              <div v-if="scope.row.wpname == ''">
                <el-row>
                  <el-col :span="12"
                    ><span>{{ scope.row.data?.current }}</span></el-col
                  >
                  <el-col :span="12"
                    ><span>{{ scope.row.data.sameperiod }}</span></el-col
                  >
                </el-row>
              </div>
              <div v-else>
                <el-row>
                  <el-col :span="12" class="columnFlex">
                    <div
                      v-if="
                        scope.row.targetList[index]?.current ||
                        scope.row.targetList[index]?.current === 0
                      "
                      class="box-item"
                    >
                      <el-tooltip
                        effect="dark"
                        :content="scope.row.targetList[index]?.current"
                        placement="top-start"
                      >
                        <div>
                          <span style="width: 80%">{{
                            scope.row.targetList &&
                            scope.row.targetList[index]?.current
                          }}</span>
                        </div>
                      </el-tooltip>
                    </div>
                    <div v-else class="box-item">--</div>
                    <div style="flex: 0 0 auto; line-height: 1">
                      <Bottom
                        class="botSvg"
                        v-if="
                          scope.row.targetList &&
                          scope.row.targetList[index]?.current <
                            scope.row.targetList[index]?.sameperiod
                        "
                      />
                      <Top
                        class="topSvg"
                        v-if="
                          scope.row.targetList &&
                          scope.row.targetList[index]?.current >
                            scope.row.targetList[index]?.sameperiod
                        "
                      />
                    </div>
                  </el-col>
                  <el-col :span="12"
                    ><span>{{
                      scope.row.targetList &&
                      (scope.row.targetList[index]?.sameperiod ||
                      scope.row.targetList[index]?.sameperiod === 0
                        ? scope.row.targetList[index]?.sameperiod
                        : "--")
                    }}</span></el-col
                  >
                </el-row>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <div class="echarts">
      <div style="height: 100%">
        <BarCharts
          :list="barList"
          width="97%"
          height="100%"
          :top="60"
          :pillarName="pillarName"
          :xdate="false"
          :showLegend="true"
          :units="['', '']"
        ></BarCharts>
      </div>
    </div>
  </div>
</template>

<script>
// import Panel from "@/components/curveAnalyse/panel.vue";
// import ChartColumnar from '@/components/curveAnalyse/multiple-bar-chart.vue'

import BarCharts from "@/views/economicsOperation/thematicAnalysis/components/barCharts.vue";
import { companys, mtbfList, mttrList } from "@/api/curveAnalyse";
export default {
  name: "curveAnalyse",
  components: {
    // ChartColumnar,
    // Panel,
    BarCharts,
  },
  data() {
    return {
      pillarName: "",
      // echartsData: [],
      // tableName: "",
      list: [],
      // DayPower: {
      //     // 图表所用单位
      //     units: [""],
      //     value: [
      //         {
      //             title: "",
      //             yAxisIndex: 0, // 使用单位
      //             value: [],
      //         },
      //     ],
      // },
      // BarChartsList: [],
      tabIndex: -1,
      tabOptions: [
        { id: -1, name: "风电" },
        { id: -2, name: "光伏" },
      ],
      // barHeight: '260px',
      barList: [],
      tableData: [],
      tableHead: [
        "一月",
        "二月",
        "三月",
        "四月",
        "五月",
        "六月",
        "七月",
        "八月",
        "九月",
        "十月",
        "十一月",
        "十二月",
      ],
      company: "",
      companyOptions: [],
      searchYear: this.getmonthValue(),
      selectList: [
        {
          name: "MTBF",
        },
        {
          name: "MTTR",
        },
      ],
      selectValue: "MTBF",
    };
  },
  watch: {},
  filters: {},
  computed: {},
  created() {
    this.initialization();
  },
  methods: {
    compare(property) {
      return (a, b) => {
        let val1 = a[property];
        let val2 = b[property];
        return val1 - val2;
      };
    },
    rowClick(list) {
      if (list?.wpname) {
        let barList = [
          {
            name: "本期",
            children: [],
            date: [],
          },
          {
            name: "同期",
            children: [],
          },
        ];
        this.pillarName = list.wpname;
        list.targetList.forEach((item) => {
          barList[0].date.push(item.month + "月");
          barList[0].children.push(item.current || 0);
          barList[1].children.push(item.compare || 0);
        });
        this.barList = barList;
        this.BASE.closeLoading();
      }
    },
    // isNumber(val) {
    //     return typeof val === "number" && !isNaN(val);
    // },
    search() {
      this.BASE.showLoading();
      switch (this.selectValue) {
        case "MTBF":
          mtbfList({
            companys: this.company,
            type: this.tabIndex,
            year: this.monthChange(this.searchYear),
          }).then(({ data: res }) => {
            if (res.data.length) {
              let arr = [
                {
                  wpname: "",
                  data: {
                    wpname: "期次",
                    current: "本期",
                    sameperiod: "同期",
                  },
                },
              ];
              this.tableData = [...arr, ...res.data];
              this.rowClick(res.data[res.data.length - 1]);
            } else {
              this.BASE.closeLoading();
              this.barList = [];
              this.tableData = [];
            }
          });
          break;

        case "MTTR":
          mttrList({
            companys: this.company,
            type: this.tabIndex,
            year: this.monthChange(this.searchYear),
          }).then(({ data: res }) => {
            if (res.data.length) {
              let arr = [
                {
                  wpname: "",
                  data: {
                    wpname: "期次",
                    current: "本期",
                    sameperiod: "同期",
                  },
                },
              ];
              this.tableData = [...arr, ...res.data];
              this.rowClick(res.data[res.data.length - 1]);
            } else {
              this.BASE.closeLoading();
              this.barList = [];
              this.tableData = [];
            }
          });
          break;
      }
    },
    monthChange(data) {
      let year = new Date(data).getFullYear().toString();
      return year;
    },
    getmonthValue() {
      let year = new Date().getFullYear().toString();
      return year;
    },

    tabClick(data) {
      this.tabIndex = data;
      if (data == -2) {
        this.company = "SXJ_KGDL_GFFD_ZGS";
        this.search();
      } else {
        this.company = this.companyOptions[0].id;
        this.search();
      }
    },
    initialization() {
      companys().then(({ data: res }) => {
        if (res.data) {
          this.companyOptions = res.data;
          this.company = res.data[0].id;
          this.search();
        }
      });
    },
  },
  mounted() {},
  beforeUnmount() {},
};
</script>

<style lang="less" scoped>
.parcel-box {
  padding: 0 20px;
  box-sizing: border-box;
  height: 100%;
  .search {
    display: flex;
    flex-direction: row;
    padding-top: 10px;
    padding-bottom: 10px;
    align-items: center;
    justify-content: space-between;

    .search-left {
      display: flex;
      flex-direction: row;
      align-items: center;
    }

    .search-right {
      position: relative;

      .select-back {
        position: absolute;
        right: 5px;
        top: 0px;
        z-index: 0;
      }

      .title-select {
        z-index: 2;
      }
    }

    .tabCut {
      display: inline-block;
      margin: 0 20px;

      div {
        display: inline-block;
        width: 60px;
        height: 27px;
        border: 1px solid #274934;
        text-align: center;
        line-height: 25px;
        cursor: pointer;
      }

      div:nth-child(1) {
        border-radius: 13px 0px 0px 13px;
        border-right-width: 0;
      }

      div:nth-child(2) {
        border-radius: 0px 13px 13px 0px;
      }

      .active {
        background-color: rgba(5, 187, 76, 0.9);
        color: #fff;
      }
    }

    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;
      }
    }
  }
  .data-bodys {
    height: calc(100% - 58px - 350px - 20px);
    display: flex;
    flex-direction: column;
    background-color: rgba(0, 0, 0, 0.45);
    border-radius: 5px;
  }
  .economicTable {
    height: calc(100% - 32px);
    .el-table__body-wrapper {
      .columnFlex {
        display: flex;
        align-items: center;
      }
      .box-item {
        flex: 1;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
    }
    .topSvg {
      width: 1em;
      height: 1em;
      color: #1c99ff;
    }

    .botSvg {
      width: 1em;
      height: 1em;
      color: #ff8300;
    }
  }

  .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;
    }
  }

  .echarts {
    padding-top: 20px;
    padding-bottom: 15px;
    background-color: rgba(0, 0, 0, 0.45);
    border-radius: 5px;
    width: 100%;
    height: 350px;
  }
}

.el-table::before {
  height: 0;
}

.compare-lift-down {
  margin-left: 7px;
  font-size: 14px;
  font-family: Arial;
  font-weight: 400;
  color: #ff8300;
}

.compare-lift-up {
  margin-left: 7px;
  font-size: 14px;
  font-family: Arial;
  font-weight: 400;
  color: #1c99ff;
}

.chart-name {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  width: 100%;
  height: 40px;
  border-bottom: 1px solid rgba(106, 106, 106, 0.5);
  font-size: 16px;
  font-family: Microsoft YaHei;
  font-weight: 400;
  color: #ffffff;
}
</style>