
<template>
      <el-card v-loading="loading" shadow="always" class="common-card-container common-card-container-no-title-bg">
        <div slot="header">
          <span class="large-title">单体电池实时数据</span>
        </div>
      <!--    搜索栏-->
      <el-form :inline="true" class="select-container">
        <el-form-item label="电池堆">
          <el-select v-model="search.stackId" placeholder="请选择" @change="changeStackId">
            <el-option :label="item.deviceName" :value="item.id" v-for="(item,index) in stackOptions" :key="index+'stackOptions'"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="电池簇">
          <el-select v-model="search.clusterId" :no-data-text="!search.stackId && stackOptions.length > 0 ? '请先选择电池堆':'无数据'" placeholder="请选择" :loading="clusterloading" loading-text="正在加载数据">
            <el-option :label="item.deviceName" :value="item.id" v-for="(item,index) in clusterOptions" :key="index+'clusterOptions'"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSearch" native-type="button">搜索</el-button>
        </el-form-item>
        <el-form-item>
          <el-button @click="onReset" native-type="button">重置</el-button>
        </el-form-item>
      </el-form>
        <!--    图表-->
<!--      <div style="margin:30px 0;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);">-->
<!--        <el-row style="background:#fff;margin:30px 0;">-->
<!--          <el-col :xs="24" :sm="24" :lg="24">-->
<!--            <bar-chart ref="barChart"/>-->
<!--          </el-col>-->
<!--        </el-row>-->
<!--      </div>-->
        <el-table
          class="common-table"
          :data="tableData"
          stripe
          style="width: 100%;margin-top: 25px">
          <el-table-column
            prop="deviceId"
            label="单体编号">
          </el-table-column>
          <el-table-column
            prop="clusterDeviceId"
            label="簇号">
          </el-table-column>
          <el-table-column
            prop="voltage"
            label="电压（V）"
          >
            <template slot-scope="scope">
              <el-button
                @click="chartDetail(scope.row,'voltage')"
                type="text"
                size="small">
                {{scope.row.voltage}}
              </el-button>
            </template>
          </el-table-column>
          <el-table-column
            prop="temperature"
            label="温度（℃）">
            <template slot-scope="scope">
              <el-button
                @click="chartDetail(scope.row,'temperature')"
                type="text"
                size="small">
                {{scope.row.temperature}}
              </el-button>
            </template>
          </el-table-column>
          <el-table-column
            prop="soc"
            label="SOC（%）">
            <template slot-scope="scope">
              <el-button
                @click="chartDetail(scope.row,'soc')"
                type="text"
                size="small">
                {{scope.row.soc}}
              </el-button>
            </template>
          </el-table-column>
          <el-table-column
            prop="soh"
            label="SOH（%）">
            <template slot-scope="scope">
              <el-button
                @click="chartDetail(scope.row,'soh')"
                type="text"
                size="small">
                {{scope.row.soh}}
              </el-button>
            </template>
          </el-table-column>
          <el-table-column
            label="曲线图">
            <template slot-scope="scope">
              <el-button
                @click="chartDetail(scope.row)"
                type="text"
                size="small">
                展示
              </el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
          v-show="tableData.length>0"
          background
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="pageNum"
          :page-size="pageSize"
          :page-sizes="[10, 20, 30, 40]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="totalSize"
          style="margin-top:15px;text-align: center"
          >
        </el-pagination>
      <chart-detail ref="chartDetail"/>
    </el-card>
</template>


<script>
import BarChart from './BarChart'
import {getStackNameList, getClusterNameList, getClusterDataInfoList} from '@/api/ems/dzjk'
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
import ChartDetail from "./ChartDetail.vue";
export default {
  name:'DzjkSbjkDtdc',
  mixins:[getQuerySiteId],
  components:{BarChart, ChartDetail},
  data() {
    return {
      loading:false,
      clusterloading:false,
      search:{stackId:'',clusterId:''},
      stackOptions:[],//{id:'',deviceName:''}
      clusterOptions:[],//{id:'',deviceName:''}
      tableData:[],
      pageSize:10,//分页栏当前每个数据总数
      pageNum:1,//分页栏当前页数
      totalSize:0,//table表格数据总数
    }
  },
  methods:{
    //查看表格行图表
    chartDetail(row,dataType = ''){
      const { clusterDeviceId, deviceId} = row,{siteId} = this
      this.$refs.chartDetail.initChart({siteId,clusterDeviceId,deviceId},dataType)
    },
    // 分页
    handleSizeChange(val) {
      this.pageSize = val;
      this.$nextTick(()=>{
        this.getTableData()
      })
    },
    handleCurrentChange(val) {
      this.pageNum = val
      this.$nextTick(()=>{
        this.getTableData()
      })
    },
    // 搜索
    onSearch(){
      this.pageNum =1//每次搜索从1开始搜索
      this.getTableData()
    },
    // 重置
    // 清空搜索栏选中数据
    // 清空电池簇列表，保留电池堆列表
    onReset(){
      this.search={stackId:'',clusterId:''}
      this.clusterOptions=[]
      this.pageNum = 1
      this.getTableData()
    },
    changeStackId(val){
      if(val){
        console.log('选择了电池堆，需要获取对应的电池簇',val,this.search.stackId)
        this.search.clusterId=''
        this.getClusterList()
      }
    },
    //表格数据
    getTableData(){
      this.loading=true;
      const {stackId:stackDeviceId,clusterId:clusterDeviceId} =this.search
      const {siteId,pageNum,pageSize}=this
      getClusterDataInfoList({stackDeviceId,clusterDeviceId,siteId,pageNum,pageSize}).then(response => {
        this.tableData=response?.rows || [];
        this.totalSize = response?.total || 0
      }).finally(()=>{
        this.loading=false;
      })
    },
    getStackList(){
      getStackNameList(this.siteId).then(response => {
        this.stackOptions = JSON.parse(JSON.stringify(response?.data || []))
      })
    },
    getClusterList(){
      this.clusterloading =true
      getClusterNameList(this.search.stackId).then(response => {
        this.clusterOptions = JSON.parse(JSON.stringify(response?.data || []))
      }).finally(() => {this.clusterloading =false})
    },
    init(){
      // 只有页面初次加载或切换站点的时候调用电池堆列表，其他情况不需要
      this.search={stackId:'',clusterId:''}//保证切换站点时，清空选择项
      this.getStackList()
      this.getTableData()
    }
  },
  mounted(){


  }
}
</script>

