zhaowei
10 天以前 008245cbe95c63a80f9a255378a5ffbe25d15085
src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue
@@ -1,562 +1,666 @@
<template>
  <div style="width: 100%;">
    <div :bordered="false">
      <!-- 查询区域 -->
      <div class="seach-content">
        <div class="table-page-search-wrapper">
          <a-form layout="inline" @keyup.enter.native="searchQuery">
            <a-row :gutter="24">
              <a-col :md="5" :sm="5" :xs="5">
                <a-form-item label="时间">
                  <a-range-picker
                    :placeholder="['开始时间', '结束时间']"
                    format="YYYY-MM"
                    :value="dates"
                    :mode="['month', 'month']"
                    @panelChange="dateParamChange"
                  />
                </a-form-item>
              </a-col>
              <!--<a-col :md="5" :sm="5" :xs="5">-->
                <!--<a-form-item label="班制">-->
                  <!--<a-select v-model="queryParam.shiftId" placeholder="请选择班制"-->
                            <!--@change="initShiftSubList" :allowClear="allowClear">-->
                    <!--<a-select-option v-for="(em,index) in shiftList" :key="index" :value="em.value">-->
                      <!--{{ em.label }}-->
                    <!--</a-select-option>-->
                  <!--</a-select>-->
                <!--</a-form-item>-->
              <!--</a-col>-->
              <!--<a-col :md="5" :sm="5" :xs="5">-->
                <!--<a-form-item label="班次">-->
                  <!--<a-select v-model="queryParam.shiftSubId" placeholder="请选择班次" @change="initShiftSubListChange"-->
                            <!--:allowClear="allowClearSu">-->
                    <!--<a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.value">-->
                      <!--{{ em.label }}-->
                    <!--</a-select-option>-->
                  <!--</a-select>-->
                <!--</a-form-item>-->
              <!--</a-col>-->
  <div class="device_list">
    <!-- 查询区域 -->
    <div class="seach-content">
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <a-col :md="6" :sm="6" :xs="6">
              <a-form-item label="设备类型">
                <a-select
                  :value="queryParams.equipmentType"
                  mode="multiple"
                  placeholder="请选择设备类型"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'equipmentType')"
                >
                  <a-select-option v-for="(item,index) in equipmentTypeList" :value="item.value" :key="index">
                    {{ item.label }}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6" :xs="6">
              <a-form-item label="驱动类型">
                <a-select
                  :value="queryParams.driveType"
                  mode="multiple"
                  placeholder="请选择驱动类型"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'driveType')"
                >
                  <a-select-option v-for="(item,index) in driveTypeList" :value="item.value" :key="index">
                    {{ item.label }}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="5" :sm="5" :xs="5">
              <a-form-item label="时间">
                <a-range-picker
                  :placeholder="['开始时间', '结束时间']"
                  format="YYYY-MM"
                  :value="dates"
                  :mode="['month', 'month']"
                  @panelChange="dateParamChange"
                  @change="handleDateChange"
                />
              </a-form-item>
            </a-col>
            <!--            <a-col :md="5" :sm="5" :xs="5">-->
            <!--              <a-form-item label="设备种类">-->
            <!--                <a-select-->
            <!--                  :value="queryParams.deviceCategory"-->
            <!--                  mode="multiple"-->
            <!--                  placeholder="请选择设备种类"-->
            <!--                  allow-clear-->
            <!--                  :maxTagCount="1"-->
            <!--                  @change="selectChange($event,'deviceCategory')"-->
            <!--                >-->
            <!--                  <a-select-option v-for="(item,index) in device_category_list" :value="item.value" :key="index">-->
            <!--                    {{item.label}}-->
            <!--                  </a-select-option>-->
            <!--                </a-select>-->
            <!--              </a-form-item>-->
            <!--            </a-col>-->
            <a-col :md="5" :sm="5" :xs="5">
              <a-form-item label="设备级别">
                <a-select
                  :value="queryParams.deviceLevel"
                  mode="multiple"
                  placeholder="请选择设备级别"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'deviceLevel')"
                >
                  <a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index">
                    {{ item.label }}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="2" :sm="2">
              <a
                @click="toggleSearchStatus=!toggleSearchStatus"
                @selectstart="$event.preventDefault()"
                style="display: inline-block;height: 32px;line-height: 32px"
              >
                {{ toggleSearchStatus ? '收起' : '展开' }}
                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
              </a>
            </a-col>
          </a-row>
              <a-col :md="8" :sm="8" :xs="8">
                <a-space>
                  <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                  <!--<a-button type="primary" @click="searchReset" icon="reload">重置</a-button>-->
                  <a-button type="primary" @click="exportExcel" icon="download">导出</a-button>
                </a-space>
              </a-col>
            </a-row>
          </a-form>
          <a-row :gutter="24" v-if="toggleSearchStatus">
        </div>
            <!--<a-col :md="5" :sm="5" :xs="5">-->
            <!--<a-form-item label="数据分布">-->
            <!--<a-select-->
            <!--:value="queryParams.deviceLevel"-->
            <!--mode="multiple"-->
            <!--placeholder="请选择数据分布"-->
            <!--allow-clear-->
            <!--:maxTagCount="1"-->
            <!--@change="selectChange($event,'deviceLevel')"-->
            <!--&gt;-->
            <!--<a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index">-->
            <!--{{item.label}}-->
            <!--</a-select-option>-->
            <!--</a-select>-->
            <!--</a-form-item>-->
            <!--</a-col>-->
            <a-col :md="6" :sm="6" :xs="6">
              <a-form-item label="重要程度">
                <a-select
                  v-model="queryParam.deviceImportanceLevel"
                  placeholder="请选择设备重要程度"
                  allow-clear
                >
                  <a-select-option v-for="(item,index) in device_importance_level_list" :value="item.value"
                                   :key="index">
                    {{ item.label }}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6" :xs="6">
              <a-form-item label="百分比筛选">
                <a-select
                  :value="queryParams.percentageLevel"
                  mode="multiple"
                  placeholder="请选择百分比筛选"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'percentageLevel')"
                >
                  <a-select-option v-for="(item,index) in percentage_level_list" :value="item.value"
                                   :key="index">
                    {{ item.label }}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
          </a-row>
          <a-row :gutter="24" style="margin-bottom: 20px">
            <a-col :md="4" :sm="4" :xs="4">
              <a-space>
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
                <a-button type="primary" @click="exportExcel" icon="download">导出</a-button>
                <a-button type="primary" icon="printer" v-print="'#EfficiencyShift'" v-has="'efficiencyShift:print'">
                  打印
                </a-button>
              </a-space>
            </a-col>
          </a-row>
        </a-form>
      </div>
    </div>
      <div class="container" id="EfficiencyShift" style="margin-top: 20px;">
        <div class="table2">
          <a-table :columns="columns" :dataSource="dataSource.records" :pagination="false" bordered
                   :scroll="{ x: 1500, y: false }">
          </a-table>
        </div>
      </div>
      <div class="pagination">
        <a-pagination
          :total=dataSource.total
          :show-total="(total, range) => `${range[0]}-${range[1]} 共 ${total} 条`"
          :page-size="+queryParam.pageSize"
          :default-current="1"
          :current=+queryParam.pageNo
          show-size-changer
          :pageSizeOptions="['10','15','20','25']"
          @change="handlePageNoChange"
          @showSizeChange="handlePageSizeChange"
        />
      </div>
    <div id="EfficiencyShift" style="flex:1;overflow: hidden;height: inherit">
      <a-table :columns="columns" rowKey="id" :dataSource="dataSource.records?dataSource.records:[]"
               :loading="tableLoading"
               :pagination="false" :scroll="{x:'max-content',y:scrollY}" bordered>
        <!--<template slot="equipmentModel" slot-scope="text, record">-->
        <!--<editable-cell :text="text" @change="onCellChange(record.id, 'equipmentModel', $event)"/>-->
        <!--</template>-->
      </a-table>
    </div>
  </div>
</template>
<script>
  import moment from 'moment'
  import { putAction, getAction } from '@/api/manage'
  import $ from 'jquery'
  import '@/components/table2excel/table2excel'
  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
import moment from 'moment'
import { getAction } from '@/api/manage'
import $ from 'jquery'
import '@/components/table2excel/table2excel'
import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
import api from '@api/mdc'
  export default {
    name: 'OEEAnalysisList',
    components: {},
    data() {
      return {
        typeTree: '',
        typeParent: 1,
        typeEquipment: 1,
        allowClear: true,
        allowClearSu: true,
        dates: [moment().subtract('month', 1), moment().subtract('month', 1)],
        identifying: [],
        queryParam: {
          pageSize: 10,
          pageNo: 1
        },
        queryParamEquip: {},
        queryParamPeople: {},
        url: {
          list: '/mdc/mdcOverallEquipmentEfficiency/list',
          initShiftList: '/mdc/mdcMdcShift/initShiftList',
          initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList'
        },
        shiftList: [],
        shiftSubList: [],
        columns: [
          {
            title: '序号',
            dataIndex: '',
            key: 'rowIndex',
            width: 70,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            },
            // fixed: 'left'
          },
          {
            title: '设备统一编号',
            align: 'center',
            dataIndex: 'equipmentId',
            width: 120,
            // fixed: 'left'
          },
          {
            title: '设备名称',
            align: 'center',
            width: 150,
            dataIndex: 'equipmentName',
            // fixed: 'left'
          },
          {
            title: '设备型号',
            align: 'center',
            width: 110,
            dataIndex: 'equipmentModel'
          },
          {
            title: '日期',
            align: 'center',
            width: 100,
            dataIndex: 'validDate'
          },
          {
            title: '班次',
            align: 'center',
            width: 80,
            dataIndex: 'shift'
          },
          {
            title: '每班小时',
            dataIndex: 'shiftTimeCount',
            align: 'center',
            width: 110
          },
          {
            title: '加班时间(分钟)',
            dataIndex: 'overtime',
            align: 'center',
            width: 110
          },
          {
            title: '实际班产天数',
            dataIndex: 'actualWorkDayCount',
            align: 'center',
            width: 120
          },
          {
            title: '月度实际班产总时间(分钟)',
            dataIndex: 'monthActualWorkDayTimeCount',
            align: 'center',
            width: 110
          },
          {
            title: '非计划停机损失(分钟)(一个月)',
            children: [
              {
                title: '故障停机',
                dataIndex: 'breakdownDownDuration',
                align: 'center',
                width: 100
              },
              {
                title: '换型调试',
                dataIndex: 'conversionDebugDuration',
                align: 'center',
                width: 100
              },
              {
                title: '物料短缺',
                dataIndex: 'materialShortageDuration',
                align: 'center',
                width: 100
              },
              {
                title: '计划等任务',
                dataIndex: 'plannedTaskDuration',
                align: 'center',
                width: 110
              },
              {
                title: '检验',
                dataIndex: 'inspectDuration',
                align: 'center',
                width: 100
              },
              {
                title: '其他',
                dataIndex: 'otherDuration',
                align: 'center',
                width: 100
              }
            ]
          },
          {
            title: '计划停机时间(分钟)(一个月)',
            children: [
              {
                title: '计划保养',
                dataIndex: 'plannedMaintenanceDuration',
                align: 'center',
                width: 100
              },
              {
                title: '会议/培训',
                dataIndex: 'conferenceTrainingDuration',
                align: 'center',
                width: 110
              },
              {
                title: '其他休息等',
                dataIndex: 'otherRestDuration',
                align: 'center',
                width: 110
              }]
          },
          {
            title: '负荷时间(小时)',
            dataIndex: 'loadTime',
            align: 'center',
            width: 110
          },
          {
            title: '时间开动率',
            dataIndex: 'timeActuationRate',
            align: 'center',
            width: 110,
            customRender: text => text != 0 ? text * 100 + '%' : 0
          },
          {
            title: '加工零件数(件)',
            dataIndex: 'processQuantity',
            align: 'center',
            width: 120
          },
          {
            title: '标准加工时间(分钟)',
            dataIndex: 'standardProcessDuration',
            align: 'center',
            width: 120
          },
          {
            title: '性能开动率',
            dataIndex: 'performanceRate',
            align: 'center',
            width: 110,
            customRender: text => text != 0 ? text * 100 + '%' : 0
          },
          {
            title: '废品数',
            dataIndex: 'unqualifiedQuantity',
            align: 'center',
            width: 100
          },
          {
            title: '合格率',
            dataIndex: 'passRate',
            align: 'center',
            width: 100,
            customRender: text => text != 0 ? text * 100 + '%' : 0
          },
          {
            title: '设备综合效率',
            dataIndex: 'overallEquipmentEfficiency',
            align: 'center',
            width: 120,
            customRender: text => text != 0 ? text * 100 + '%' : 0
// import EditableCell from './EditableCell.vue'
export default {
  name: 'OEEAnalysisList',
  components: {},
  data() {
    return {
      dates: [moment().subtract('month', 1), moment().subtract('month', 1)],
      queryParam: {
        pageSize: 10000,
        pageNo: 1
      },
      queryParams: {
        equipmentType: [],
        driveType: [],
        deviceLevel: [],
        percentageLevel: []
      },
      queryParamEquip: {},
      queryParamPeople: {},
      url: {
        list: '/mdc/mdcOverallEquipmentEfficiency/list',
        queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
      },
      columns: [
        {
          title: '序号',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
          }
        ],
        dataSource: []
        },
        {
          title: '车间',
          align: 'center',
          dataIndex: 'productionName',
          width: 110
        },
        {
          title: '设备编号',
          align: 'center',
          dataIndex: 'equipmentId',
          width: 120
        },
        {
          title: '设备名称',
          align: 'center',
          width: 120,
          dataIndex: 'equipmentName'
        },
        {
          title: '设备型号',
          align: 'center',
          width: 120,
          dataIndex: 'equipmentModel',
          scopedSlots: { customRender: 'equipmentModel' }
        },
        {
          title: '日期',
          align: 'center',
          width: 100,
          dataIndex: 'validDate'
        },
        {
          title: '班次',
          align: 'center',
          width: 100,
          dataIndex: 'shift'
        },
        {
          title: '每班小时',
          dataIndex: 'shiftTimeCount',
          align: 'center',
          width: 100
        },
        {
          title: '加班时间(分钟)',
          dataIndex: 'overtime',
          align: 'center',
          width: 100
        },
        {
          title: '实际班产天数',
          dataIndex: 'actualWorkDayCount',
          align: 'center',
          width: 100
        },
        {
          title: '月度实际班产总时间(分钟)',
          dataIndex: 'monthActualWorkDayTimeCount',
          align: 'center',
          width: 100
        },
        {
          title: '非计划停机损失(分钟)(一个月)',
          children: [
            {
              title: '故障停机',
              dataIndex: 'breakdownDownDuration',
              align: 'center',
              width: 100
            },
            {
              title: '换型调试',
              dataIndex: 'conversionDebugDuration',
              align: 'center',
              width: 100
            },
            {
              title: '物料短缺',
              dataIndex: 'materialShortageDuration',
              align: 'center',
              width: 100
            },
            {
              title: '计划等任务',
              dataIndex: 'plannedTaskDuration',
              align: 'center',
              width: 100
            },
            {
              title: '检验',
              dataIndex: 'inspectDuration',
              align: 'center',
              width: 100
            },
            {
              title: '其他',
              dataIndex: 'otherDuration',
              align: 'center',
              width: 100
            }
          ]
        },
        {
          title: '计划停机时间(分钟)(一个月)',
          children: [
            {
              title: '计划保养',
              dataIndex: 'plannedMaintenanceDuration',
              align: 'center',
              width: 100
            },
            {
              title: '会议/培训',
              dataIndex: 'conferenceTrainingDuration',
              align: 'center',
              width: 100
            },
            {
              title: '其他休息等',
              dataIndex: 'otherRestDuration',
              align: 'center',
              width: 100
            }]
        },
        {
          title: '负荷时间(小时)',
          dataIndex: 'loadTime',
          align: 'center',
          width: 100
        },
        {
          title: '时间开动率',
          dataIndex: 'timeActuationRate',
          align: 'center',
          width: 100,
          customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
        },
        // {
        //   title: '加工零件数(件)',
        //   dataIndex: 'processQuantity',
        //   align: 'center',
        //   width: 120
        // },
        // {
        //   title: '标准加工时间(分钟)',
        //   dataIndex: 'standardProcessDuration',
        //   align: 'center',
        //   width: 120
        // },
        {
          title: '性能开动率',
          dataIndex: 'performanceRate',
          align: 'center',
          width: 100,
          customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
        },
        {
          title: '废品数',
          dataIndex: 'unqualifiedQuantity',
          align: 'center',
          width: 100
        },
        {
          title: '合格率',
          dataIndex: 'passRate',
          align: 'center',
          width: 100,
          customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
        },
        {
          title: '设备综合效率',
          dataIndex: 'overallEquipmentEfficiency',
          align: 'center',
          width: 100,
          customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
        }
      ],
      dataSource: [],
      driveTypeList: [],
      equipmentTypeList: [],
      device_level_list: [],
      device_importance_level_list: [],
      percentage_level_list: [],
      scrollY: 465,
      tableLoading: false,
      toggleSearchStatus: false
    }
  },
  props: { nodeTree: '', Type: '', nodePeople: '' },
  created() {
    const { isEquipment, productionId } = this.$route.params
    if (productionId) {
      console.log('productionId', productionId)
      console.log('isEquipment', isEquipment)
      if (!isEquipment) this.queryParam.parentId = productionId
      else this.queryParam.equipmentId = productionId
    }
    this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM')
    this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM')
    this.queryParam.typeTree = '1'
    this.loadData()
    this.getDriveTypeByApi()
    this.queryGroup()
    this.initDictData('device_level')
    this.initDictData('device_category')
    this.initDictData('device_importance_level')
    this.initDictData('percentage_level')
  },
  mounted() {
    window.addEventListener('resize', this.handleWindowResize)
    // this.handleWindowResize()
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.handleWindowResize)
  },
  watch: {
    Type(valmath) {
      this.dataList = []
      this.queryParam.typeTree = valmath
    },
    nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件
      console.log(val)
      if (JSON.stringify(val) != '{}') {
        if (val.equipmentId != null) {
          this.queryParamEquip.parentId = ''
          this.queryParamEquip.equipmentId = val.equipmentId
        } else {
          this.queryParamEquip.parentId = val.key
          this.queryParamEquip.equipmentId = ''
        }
        this.searchQuery()
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
    created() {
      this.initShiftList()
    nodePeople(val) {
      if (JSON.stringify(val) != '{}') {
        if (val.equipmentId != null) {
          this.queryParamPeople.parentId = val.equipmentId
          this.queryParamPeople.equipmentId = ''
        } else {
          this.queryParamPeople.parentId = val.key
          this.queryParamPeople.equipmentId = ''
        }
        this.searchQuery()
      }
    }
  },
  methods: {
    initDictData(dictCode) {
      // //优先从缓存中读取字典配置
      if (getDictItemsFromCache(dictCode)) {
        this[dictCode + '_list'] = getDictItemsFromCache(dictCode)
        return
      }
      //根据字典Code, 初始化字典数组
      ajaxGetDictItems(dictCode, null).then((res) => {
        if (res.success) {
          this[dictCode + '_list'] = res.result
          return
        }
      })
    },
    selectChange(value, key) {
      this.queryParams[key] = value
    },
    dateParamChange(value) {
      console.log('dateParamChangeValue', value)
      this.dates = value
      this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM')
      this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM')
      this.queryParam.typeTree = '1'
    },
    handleDateChange(value) {
      console.log('handleDateChangeValue', value)
      if (!value.length) {
        delete this.queryParam.startTime
        delete this.queryParam.endTime
        this.dates = []
      }
    },
    exportExcel() {
      $('#EfficiencyShift').table2excel({
        exclude: '.noExl',
        name: 'Excel Document Name',
        filename: '设备综合效率分析',
        exclude_img: true,
        fileext: '.xls',
        exclude_links: true,
        exclude_inputs: true
      })
    },
    searchQuery() {
      if (this.queryParam.typeTree == '1') {
        this.queryParam.parentId = this.queryParamEquip.parentId
        this.queryParam.equipmentId = this.queryParamEquip.equipmentId
      } else {
        this.queryParam.parentId = this.queryParamPeople.parentId
        this.queryParam.equipmentId = ''
      }
      Object.keys(this.queryParams).forEach(item => {
        if (Array.isArray(this.queryParams[item])) {
          // 此处为保证接口参数不多余,可省略
          this.queryParam[item] = this.queryParams[item].join()
          if (this.queryParams[item].length === 0) delete this.queryParam[item]
        }
      })
      this.loadData()
    },
    watch: {
      Type(valmath) {
        this.dataList = []
        this.queryParam.typeTree = valmath
      },
      nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件
        console.log(val)
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId != null) {
            this.queryParamEquip.parentId = ''
            this.queryParamEquip.equipmentId = val.equipmentId
          } else {
            this.queryParamEquip.parentId = val.key
            this.queryParamEquip.equipmentId = ''
          }
          this.searchQuery()
        }
      },
      nodePeople(val) {
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId != null) {
            this.queryParamPeople.parentId = val.equipmentId
            this.queryParamPeople.equipmentId = ''
          } else {
            this.queryParamPeople.parentId = val.key
            this.queryParamPeople.equipmentId = ''
          }
          this.searchQuery()
        }
    searchReset() {
      this.queryParam = {
        pageSize: 10000,
        pageNo: 1,
        typeTree: 1
      }
    },
    filters: {
      numFilter(value) {
        if (value) {
          return parseFloat((value * 100).toFixed(2))
        } else {
          return '0'
        }
      this.queryParams = {
        equipmentType: [],
        driveType: [],
        deviceLevel: []
      }
      this.dates = []
      this.loadData()
    },
    methods: {
      dateParamChange(value) {
        this.dates = value
        this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM')
        this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM')
      },
      initShiftList() {
        getAction(this.url.initShiftList).then((res) => {
          if (res.success) {
            this.shiftList = res.result
          }
        })
      },
    /**
     * 调用接口获取控制系统类型
     */
    getDriveTypeByApi() {
      api.getDriveTypeApi().then((res) => {
        if (res.success) this.driveTypeList = res.result
      })
    },
      initShiftSubList(val) {
        //每次重新选择班制时班次清空且显示placeholder内容
        this.queryParam.shiftSubId = undefined
        getAction(this.url.initShiftSubList, { shiftId: val }).then((res) => {
          if (res.success) {
            this.shiftSubList = res.result
          }
        })
      },
      initShiftSubListChange() {
        getAction(this.url.initShiftSubList, { shiftId: this.queryParam.shiftId }).then((res) => {
          if (res.success) {
            this.shiftSubList = res.result
          }
        })
      },
      exportExcel() {
        $('#EfficiencyShift').table2excel({
          exclude: '.noExl',
          name: 'Excel Document Name',
          filename: '设备综合效率分析',
          exclude_img: true,
          fileext: '.xls',
          exclude_links: true,
          exclude_inputs: true
        })
      },
      searchQuery() {
        if (this.dates != '') {
          if (this.queryParam.typeTree == '1') {
            this.queryParam.parentId = this.queryParamEquip.parentId
            this.queryParam.equipmentId = this.queryParamEquip.equipmentId
          } else {
            this.queryParam.parentId = this.queryParamPeople.parentId
            this.queryParam.equipmentId = ''
          }
          this.queryParam.pageNo = 1
          this.loadData()
    queryGroup() {
      getAction(this.url.queryEquipmentType).then(res => {
        if (res.success) {
          this.equipmentTypeList = res.result.map(item => {
            return {
              label: item.equipmentTypeName,
              value: item.equipmentTypeName
            }
          })
        } else {
          // this.$message.warning("请选择时间")
          this.$notification.warning({
            message: '消息',
            description: '请选择时间'
            description: res.message
          })
        }
        // this.onClearSelected()
      },
      })
    },
      searchReset() {
        this.typeTree = this.queryParam.typeTree
        this.typeParent = this.queryParam.parentId
        this.typeEquipment = this.queryParam.equipmentId
        this.queryParam = {
          pageSize: 10,
          pageNo: 1
        }
        this.dates = []
        this.shiftSubList = []
        this.queryParam.typeTree = this.typeTree
        this.queryParam.parentId = this.typeParent
        this.queryParam.equipmentId = this.typeEquipment
        this.loadData()
      },
      loadData() {
        getAction(this.url.list, this.queryParam).then(res => {
          if (res.success) {
    loadData() {
      this.tableLoading = true
      getAction(this.url.list, this.queryParam)
        .then(res => {
          if (res.success && res.result) {
            this.dataSource = res.result
            this.tableLoading = false
          }
        })
      },
        .finally(() => {
          this.tableLoading = false
          this.handleWindowResize()
        })
    },
      /**
       * 分页器页数发生改变时触发
       * @param page 改变后页数
       * @param pageSize 改变后每页展示数据条数
       */
      handlePageNoChange(page, pageSize) {
        this.queryParam.pageNo = page
        this.loadData()
      },
      /**
       * 分页器每页展示数据条数发生改变时触发
       * @param current 改变后页数
       * @param size 改变后每页展示数据条数
       */
      handlePageSizeChange(current, size) {
        this.queryParam.pageSize = size
        this.loadData()
      }
    /**
     * 当浏览器可视窗口尺寸发生改变时触发
     */
    handleWindowResize() {
      const devicePixelRatio = window.devicePixelRatio // 浏览器缩放比
      console.log('devicePixelRatio', devicePixelRatio)
      if (devicePixelRatio < 1) return // 缩放比小于1时不进行高度重新设置,因为scrollY变大后表格超出部分会被隐藏导致滚动条不可见
      const clientHeight = document.body.clientHeight || document.documentElement.clientHeight// 浏览器可视区域高度
      console.log('clientHeight', clientHeight)
      const containerTopToClientTopHeight = document.getElementById('EfficiencyShift').getBoundingClientRect().top // 表格容器顶部到浏览器可视区域顶部的间距
      console.log('containerTopToClientTopHeight', containerTopToClientTopHeight)
      // const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) // 表格表头高度
      const tableHeadHeight = document.querySelector('.ant-table-thead th').offsetHeight // 表格表头高度
      console.log('tableHeadHeight', tableHeadHeight)
      // this.scrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight
      const tableSuitableScrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight // 表格垂直滚动条合适高度(表格水平滚动条刚好在可视区域最下方)
      // const tableSuitableScrollY = 600
      console.log('tableSuitableScrollY', tableSuitableScrollY)
      const tableContainerHeight = document.getElementById('EfficiencyShift').offsetHeight
      console.log('tableContainerHeight', tableContainerHeight)
      const tableMaxScrollY = tableContainerHeight - tableHeadHeight // 表格垂直滚动条最大高度(若超出则水平滚动条被遮挡)
      console.log('tableMaxScrollY', tableMaxScrollY)
      if (tableSuitableScrollY && tableSuitableScrollY < tableMaxScrollY) this.scrollY = tableSuitableScrollY
      else this.scrollY = tableMaxScrollY
      console.log('scrollY', this.scrollY)
    }
  }
}
</script>
<style scoped>
  .table2 {
    width: 100%;
    height: 100%;
    overflow: auto;
  }
<style scoped lang="less">
.pagination {
  display: flex;
  justify-content: end;
  margin: 20px 0;
}
  .pagination {
    display: flex;
    justify-content: end;
    margin: 20px 0;
  }
.device_list {
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
  @media screen and (min-width: 1920px) {
    #EfficiencyShift {
      height: 670px !important;
      overflow: scroll;
    }
@media screen and (min-width: 1920px) {
  .device_list {
    height: 811px !important;
  }
}
  @media screen and (min-width: 1680px) and (max-width: 1920px) {
    #EfficiencyShift {
      height: 670px !important;
      overflow: scroll;
    }
@media screen and (min-width: 1680px) and (max-width: 1920px) {
  .device_list {
    height: 811px !important;
  }
}
  @media screen and (min-width: 1400px) and (max-width: 1680px) {
    #EfficiencyShift {
      height: 522px !important;
      overflow: scroll;
    }
@media screen and (min-width: 1400px) and (max-width: 1680px) {
  .device_list {
    height: 663px !important;
  }
}
  @media screen and (min-width: 1280px) and (max-width: 1400px) {
    #EfficiencyShift {
      height: 414px !important;
      overflow: scroll;
    }
@media screen and (min-width: 1280px) and (max-width: 1400px) {
  .device_list {
    height: 564px !important;
  }
}
  @media screen and (max-width: 1280px) {
    #EfficiencyShift {
      height: 414px !important;
      overflow: scroll;
    }
@media screen and (max-width: 1280px) {
  .device_list {
    height: 564px !important;
  }
}
  .identifyingclass {
    width: 55px;
    height: 15px;
    display: inline-block
/deep/ .ant-table-body {
  &::-webkit-scrollbar {
    height: 12px;
  }
  .dataContent {
    white-space: nowrap;
    /*margin: 0;*/
    /*border: none;*/
    border-collapse: separate;
    border-spacing: 0;
    /*table-layout: fixed;*/
    border: 1px solid #ccc;
    /*border: 1px solid #ccc;*/
    width: 100%;
    /*height: 100%;*/
    /*overflow: hidden;*/
    /*overflow-y: auto;*/
    text-align: center;
  }
  .dataContent .fixed th {
    width: 50px;
  }
  .dataContent .thead th {
    background-color: #fafafa;
    text-align: center;
    height: 30px;
    padding: 5px;
  }
  .dataContent .notfixed th {
    width: auto;
  }
  /*.dataContent tr td {*/
  /*height: 35px*/
  /*}*/
  .dataContent .mathData td {
    padding: 10px;
    /*display: none;*/
  }
  .dataContent .mathData .td {
    /*background-color: #ff9bd2;*/
    display: inline-block;
    padding: 10px;
  }
  .dataContent .mathData .tdd {
    /*display: none;*/
  }
}
</style>