zhaowei
2024-08-01 b66eab74b627b0e3746f5cb4f6a7d7cb142e9a6d
src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue
@@ -15,7 +15,7 @@
                  :maxTagCount="1"
                  @change="selectChange($event,'equipmentType')"
                >
                  <a-select-option v-for="item in equipmentTypeList" :value="item.value">
                  <a-select-option v-for="(item,index) in equipmentTypeList" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
@@ -31,7 +31,7 @@
                  :maxTagCount="1"
                  @change="selectChange($event,'driveType')"
                >
                  <a-select-option v-for="item in driveTypeList" :value="item.value">
                  <a-select-option v-for="(item,index) in driveTypeList" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
@@ -47,7 +47,7 @@
                  :maxTagCount="1"
                  @change="selectChange($event,'deviceLevel')"
                >
                  <a-select-option v-for="item in device_level_list" :value="item.value">
                  <a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
@@ -63,7 +63,7 @@
                  :maxTagCount="1"
                  @change="selectChange($event,'deviceCategory')"
                >
                  <a-select-option v-for="item in device_category_list" :value="item.value">
                  <a-select-option v-for="(item,index) in device_category_list" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
@@ -101,9 +101,14 @@
      </div>
    </div>
    <div id="EfficiencyShift" style="flex:1;overflow: hidden">
      <a-table :columns="columns" rowKey="id" :dataSource="dataSource.records" :loading="tableLoading"
               :pagination="false" :scroll="{x:'max-content',y:scrollY}" bordered></a-table>
    <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 class="pagination">-->
    <!--<a-pagination-->
@@ -129,9 +134,11 @@
  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
  import api from '@api/mdc'
  // import EditableCell from './EditableCell.vue'
  export default {
    name: 'OEEAnalysisList',
    components: {},
    components: {  },
    data() {
      return {
        dates: [moment().subtract('month', 1), moment().subtract('month', 1)],
@@ -163,6 +170,12 @@
            }
          },
          {
            title: '车间',
            align: 'center',
            dataIndex: 'productionName',
            width: 200
          },
          {
            title: '设备统一编号',
            align: 'center',
            dataIndex: 'equipmentId',
@@ -177,8 +190,9 @@
          {
            title: '设备型号',
            align: 'center',
            width: 110,
            dataIndex: 'equipmentModel'
            width: 200,
            dataIndex: 'equipmentModel',
            scopedSlots: { customRender: 'equipmentModel' }
          },
          {
            title: '日期',
@@ -189,9 +203,8 @@
          {
            title: '班次',
            align: 'center',
            width: 100,
            dataIndex: 'shift',
            ellipsis: true
            width: 300,
            dataIndex: 'shift'
          },
          {
            title: '每班小时',
@@ -293,18 +306,18 @@
            width: 110,
            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: 'processQuantity',
          //   align: 'center',
          //   width: 120
          // },
          // {
          //   title: '标准加工时间(分钟)',
          //   dataIndex: 'standardProcessDuration',
          //   align: 'center',
          //   width: 120
          // },
          {
            title: '性能开动率',
            dataIndex: 'performanceRate',
@@ -363,7 +376,7 @@
    },
    mounted() {
      window.addEventListener('resize', this.handleWindowResize)
      this.handleWindowResize()
      // this.handleWindowResize()
    },
    beforeDestroy() {
      window.removeEventListener('resize', this.handleWindowResize)
@@ -508,13 +521,14 @@
        this.tableLoading = true
        getAction(this.url.list, this.queryParam)
          .then(res => {
            if (res.success) {
            if (res.success && res.result) {
              this.dataSource = res.result
              this.tableLoading = false
            }
          })
          .finally(() => {
            this.tableLoading = false
            this.handleWindowResize()
          })
      },
@@ -538,21 +552,40 @@
        this.loadData()
      },
      onCellChange(key, dataIndex, value) {
        console.log('触发onCellChange', key, dataIndex, value)
      },
      /**
       * 当浏览器可视窗口尺寸发生改变时触发
       */
      handleWindowResize() {
        const devicePixelRatio = window.devicePixelRatio // 浏览器缩放比
        console.log('devicePixelRatio', devicePixelRatio)
        if (devicePixelRatio < 1) return // 缩放比小于1时不进行高度重新设置,因为scrollY变大后表格超出部分会被隐藏导致滚动条不可见
        const clientHeight = document.body.clientHeight // 浏览器可视区域高度
        const clientHeight = document.body.clientHeight || document.documentElement.clientHeight// 浏览器可视区域高度
        console.log('clientHeight', clientHeight)
        const containerTopToClientTopHeight = document.getElementById('EfficiencyShift').getBoundingClientRect().top // 表格容器顶部到浏览器可视区域顶部的间距
        const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) // 表格表头高度
        this.scrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight  // 表格垂直滚动条高度
        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>
<style scoped lang="less">
  .pagination {
    display: flex;
    justify-content: end;
@@ -595,4 +628,10 @@
    }
  }
  /deep/ .ant-table-body {
    &::-webkit-scrollbar {
      height: 12px;
    }
  }
</style>