Newer
Older
operation_web / src / components / Engineering / HistoricalFault.vue
<template>
  <div id="HistoricalFault">
    <div id="HFTopSearchBox">
      <span class="SelectTitle">平台:</span>
      <el-select
        v-model="Project"
        filterable
        placeholder="请选择"
        @change="loadProjectUser(Project)"
      >
        <el-option
          v-for="item in ProjectOptions"
          :key="item.index"
          :label="item.platformName"
          :value="item.platformCode"
        ></el-option>
      </el-select>
      <span class="SelectTitle">站点:</span>
      <el-select v-model="Site" filterable placeholder="请选择">
        <el-option
          v-for="item in SiteOptions"
          :key="item.index"
          :label="item.siteName"
          :value="item.siteNo"
        ></el-option>
      </el-select>
      <span class="SelectTitle">时间选择:</span>
      <el-date-picker
        v-model="TimeValue"
        type="datetimerange"
        align="right"
        unlink-panels
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        :picker-options="pickerOptions"
        value-format="yyyy-MM-dd HH:mm:ss"
      ></el-date-picker>
      <el-button
        type="primary"
        icon="el-icon-search"
        @click="loadDataGridData"
        v-has="'Search'"
        >搜索</el-button
      >
    </div>
    <div id="HFCertent">
      <el-table
        :data="HistoryTableData"
        style="width: 100%;height:calc(100% - 45px)"
        v-loading="loading"
        element-loading-text="拼命加载中"
        element-loading-spinner="el-icon-loading"
        element-loading-background="rgba(0, 0, 0, 0.8)"
      >
        <el-table-column prop="siteNo" label="站点编号"></el-table-column>
        <el-table-column prop="siteName" label="站点名称"></el-table-column>
        <el-table-column prop="fromType" label="上报类型"></el-table-column>
        <el-table-column prop="faultTime" label="上报时间"></el-table-column>
        <el-table-column
          prop="faultValueName"
          label="故障因子"
        ></el-table-column>
      </el-table>
      <el-pagination
        @size-change="SizeChange"
        @current-change="CurrentChange"
        :current-page="Page"
        :page-sizes="[10, 20, 50, 100]"
        :page-size="Size"
        layout="total, sizes, prev, pager, next, jumper"
        :total="DataLength"
        style="margin-top:10px;"
      ></el-pagination>
    </div>
  </div>
</template>

<script>
export default {
  name: "HistoricalFault",
  data: function() {
    return {
      condition: "",
      HistoryTableData: [], //历史数据表格数据
      Page: 1, //分页默认显示页
      DataLength: 0, //分页上显示的数据总条数
      Size: 10, //分页上显示的每页的条数
      loading: false,
      TimeValue: [
        this.moment()
          .subtract("days", 3)
          .format("YYYY-MM-DD HH:mm:ss"),
        this.moment().format("YYYY-MM-DD HH:mm:ss")
      ], //时间
      pickerOptions: {
        shortcuts: [
          {
            text: "最近一周",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", [start, end]);
            }
          },
          {
            text: "最近一个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
              picker.$emit("pick", [start, end]);
            }
          },
          {
            text: "最近三个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
              picker.$emit("pick", [start, end]);
            }
          }
        ]
      }, //时间快捷选项
      Project: "", //平台
      ProjectOptions: [
        {
          platformName: "全部",
          platformCode: "",
          dropSiteList: []
        }
      ], //平台的数据源
      Site: "", //平台
      SiteOptions: [
        {
          siteName: "全部",
          siteNo: ""
        }
      ] //平台的数据源
    };
  },
  methods: {
    SizeChange(val) {
      // 改变每页的条数
      this.Size = val;
      this.loadDataGridData();
    },
    CurrentChange(val) {
      //改变页数
      this.Page = val;
      this.loadDataGridData();
    },
    loadDataGridData() {
      this.loading = true;
      this.$http
        .post(this.nozzle.faultInfoGetHisInfo, {
          platCode: this.Project,
          siteNo: this.Site,
          st: this.TimeValue[0],
          et: this.TimeValue[1],
          pageNo: this.Page,
          pageSize: this.Size
        })
        .then(response => {
          this.loading = false;
          this.HistoryTableData = response.data.data;
          this.DataLength = response.data.total;
        })
        .catch(response => {
          this.loading = false;
          this.$message({
            showClose: true,
            message: "请求日志失败",
            type: "warning"
          });
        });
    },
    // 获取所有平台
    loadAllProject() {
      this.$http
        .get(this.nozzle.StationBaseControllerGetPlatFormSiteTree)
        .then(response => {
          if (response.data.data.length > 0) {
            this.ProjectOptions = this.ProjectOptions.concat(
              response.data.data
            );
            this.Project = this.ProjectOptions[0].platformCode;
            this.loadProjectUser(this.ProjectOptions[0].dropSiteList);
          } else {
            this.$message({
              showClose: true,
              message: "无项目",
              type: "warning"
            });
          }
          this.loadDataGridData();
        })
        .catch(response => {
          this.$message({
            showClose: true,
            message: "请求平台失败",
            type: "warning"
          });
        });
    },
    // 获取平台的站点
    loadProjectUser(CODE) {
      this.SiteOptions = [
        {
          siteName: "全部",
          siteNo: ""
        }
      ];
      this.Site = "";
      for (var i = 0; i < this.ProjectOptions.length; i++) {
        if (this.ProjectOptions[i].platformCode == CODE) {
          this.SiteOptions = this.SiteOptions.concat(
            this.ProjectOptions[i].dropSiteList
          );
          return;
        }
      }
    }
  },
  mounted: function() {
    this.loadAllProject();
  }
};
</script>

<style scoped>
#HistoricalFault {
  width: 100%;
  height: 100%;
}
/* 顶部搜索 */
#HFTopSearchBox {
  width: 100%;
  height: 60px;
  line-height: 60px;
  text-align: left;
  color: var(--white);
}
#HFTopSearchBox .el-input {
  width: 200px;
  margin: 0 10px;
}
.SelectTitle {
  display: inline-block;
  margin-left: 5px;
  text-align: center;
  height: 60px;
  line-height: 60px;
}
/* 主体内容 */
#HFCertent {
  width: 100%;
  height: calc(100% - 70px);
  margin-top: 10px;
  /* background: rgba(53, 53, 53, 0.5); */
}
</style>