<template>
  <div class="bg"
    style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
    <a-spin :spinning="loading" />
    <div id="grout3D" v-show="!loading" style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
    <!-- <div id="damper3DCSS" v-show="!loading" style="width: 100%; height: 100%; top:0; left: 0; position: absolute; overflow: hidden;">
      <div>
        <div ref="elementContent" class="elementContent">
          <p><span class="data-title">压力(Pa)：</span>{{selectData.frontRearDP}}</p>
          <p><span class="data-title">动力源压力(MPa)：</span>{{selectData.sourcePressure}}</p>
          <p><span class="data-title">故障诊断：</span>
            <i
              :class="{'state-icon': true, 'open': selectData.messageBoxStatus, 'close': !selectData.messageBoxStatus}"
            ></i>{{selectData.fault}}</p>
        </div>
      </div>
    </div> -->
  </div>
  <div class="scene-box">
    <customHeader :fieldNames="{ label: 'systemname', value: 'id', options: 'children' }" :options = 'options' @change="getSelectRow" :optionValue="optionValue">智能注浆系统</customHeader>
    <div class="center-container">
      <groutHome v-if="activeKey == 'monitor'" :deviceId = 'optionValue' :device-type="currentDeviceType" />
      <div v-else class="history-group">
        <div class="history-container">
          <groutHistory v-if="activeKey == 'monitor_history'" :device-type="currentDeviceType" :device-id="optionValue" ref="historyTable" class="vent-margin-t-20"/>
          <groutHandleHistoryVue v-if="activeKey == 'handler_history'" ref="alarmHistoryTable" class="vent-margin-t-20"  />
          <groutAlarmHistory v-if="activeKey == 'faultRecord'" ref="handlerHistoryTable" class="vent-margin-t-20"/>
        </div> 
      </div>      
    </div>
    <BottomMenu @change="changeActive"/>
  </div>
  
</template>

<script setup lang="ts">
import customHeader from '/@/components/vent/customHeader.vue';
import { ref, onMounted, onUnmounted, reactive, toRaw } from 'vue';
import { systemList, getTableList } from './grout.api';
import BottomMenu from '/@/views/vent/comment/components/bottomMenu.vue';
import {getMonitorComponent} from './grout.data'
import groutHistory from './components/groutHistory.vue';
import groutHandleHistoryVue from './components/groutHandleHistory.vue';
import groutAlarmHistory from './components/groutAlarmHistory.vue';
import { useRouter } from 'vue-router';

const groutHome = getMonitorComponent()
type DeviceType = { deviceType: string, deviceName: string, datalist: any[] };
const activeKey = ref('monitor');
const loading = ref(false);
const { currentRoute } = useRouter();

const historyTable = ref()
const alarmHistoryTable = ref()
const handlerHistoryTable = ref()

const options = ref()
const optionValue = ref('')
const currentDeviceType = ref('')

const selectRowIndex = ref(0);
const dataSource = ref([])

const deviceList = ref<DeviceType[]>([])
const deviceActive = ref('')
const deviceType = ref('')



// 监测数据
const selectData = reactive({});

function changeActive(activeValue) {
  activeKey.value = activeValue
}

function deviceChange(index) {
  deviceActive.value = deviceType.value = deviceList.value[index].deviceType
}

// 查询关联设备列表
async function getDeviceList() {
  const res = await systemList({ devicetype: 'sys', systemID: optionValue.value });
  const result = res.msgTxt;
  const deviceArr = <DeviceType[]>[]
  result.forEach(item => {
    const data = item['datalist'].filter((data: any) => {
      const readData = data.readData;
      return Object.assign(data, readData);
    })
    if (item.type != 'sys') {
      deviceArr.unshift({ deviceType: item.type, deviceName: item['typeName'] ? item['typeName'] : item['datalist'][0]['typeName'], datalist: data })
    }
  })
  deviceList.value = deviceArr
  if(deviceArr[0]){
    deviceActive.value = deviceArr[0].deviceType
    deviceChange(0)
  }
};

async function getSysDataSource() {
  const res = await getTableList({ strtype: 'sys_pulping', pagetype: 'normal' });
  if (!options.value) {
    // 初始时选择第一条数据
    options.value = res.records || [];
    if (!optionValue.value) {
      optionValue.value = options.value[0]['id']
    }
    getSelectRow(optionValue.value)
    getDeviceList()
  }
  // dataSource.value = res.msgTxt[0].datalist || [];
  // dataSource.value.forEach((data: any) => {
  //   const readData = data.readData;
  //   data = Object.assign(data, readData);
  // });

  // if (!options.value) {
  //   // 初始时选择第一条数据
  //   options.value = dataSource.value
  //   if (!optionValue.value) {
  //     optionValue.value = dataSource.value[0]['deviceID']
  //     Object.assign(selectData, dataSource.value[0])
  //   } else {
  //     const currentData = dataSource.value.find(item => item['deviceID'] === optionValue.value) || {}
  //     Object.assign(selectData, currentData)
  //   }
  // }
  // const data: any = toRaw(dataSource.value[selectRowIndex.value]); //maxarea
  // return data;
};

// 切换检测数据
function getSelectRow(deviceID) {
  optionValue.value = deviceID;
  getDeviceList()
  // const currentData = dataSource.value.find((item: any) => {
  //   return item.deviceID == deviceID
  // })
  // if (currentData) {
  //   optionValue.value = currentData['deviceID']
  //   currentDeviceType.value = currentData['deviceType']
  //   Object.assign(selectData, currentData)
  // }
}

onMounted(async() => {
  if (currentRoute.value && currentRoute.value['query'] && currentRoute.value['query']['id']) optionValue.value = currentRoute.value['query']['id']
  await getSysDataSource()
});

onUnmounted(() => {
 
});
</script>
<style lang="less" scoped>
@import '/@/design/vent/modal.less';
@ventSpace: zxm;
.scene-box{
  pointer-events: none;
  .history-group{
    padding: 0 20px;
    .history-container{
      position: relative;
      width: calc(100% + 10px);
      top: 50px;
      left: -10px;
      padding: 10px 0;
      pointer-events: auto;
      height: auto;
    }
  }
  .device-button-group{
    // margin: 0 20px;
    display: flex;
    pointer-events: auto;
    position: relative;
    margin-top: 90px;
    &::after{
      position:absolute;
      content: '';
      width: calc(100% + 10px);
      height: 2px;
      top: 30px;
      left: -10px;
      border-bottom: 1px solid #0efcff;
    }
    .device-button{
      padding: 4px 15px;
      position: relative;
      display: flex;
      justify-content: center;
      align-items: center;
      font-size: 14px;
      
      color: #fff;
      cursor: pointer;
      margin: 0 3px;

      &::before{
        content: '';
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        border: 1px solid #6176AF;
        transform: skewX(-38deg);
        background-color: rgba(0, 77, 103,85%);
        z-index: -1;
      }
    }
    .device-active{
      // color: #0efcff;
      &::before{
        border-color: #0efcff;
        box-shadow: 1px 1px 3px 1px #0efcff inset;
      }
    }
  }
}
.center-container{
  width: 100%;
  height: calc(100% - 200px);
}

:deep(.@{ventSpace}-tabs-tabpane-active) {
  overflow: auto;
}

.input-box {
  display: flex;
  align-items: center;
  padding-left: 10px;

  .input-title {
    color: #73e8fe;
    width: auto;
  }

  .@{ventSpace}-input-number {
    border-color: #ffffff88 !important;
  }

  margin-right: 10px;
}
</style>
