src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue
@@ -1,77 +1,78 @@
<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="4" :sm="4" :xs="4">
              <a-form-item label="驱动类型">
                <a-auto-complete
                  v-model="queryParam.driveType"
                  :data-source="driveTypeList"
                  placeholder="请选择驱动类型"
                  :filter-option="filterOption"
                  :allowClear="true"
                />
              </a-form-item>
            </a-col>
            <a-col :md="4" :sm="4" :xs="4">
              <a-form-item label="设备级别">
                <j-dict-select-tag placeholder="请选择设备级别" dictCode="device_level" v-model="queryParam.deviceLevel"
                                   allow-clear/>
              </a-form-item>
            </a-col>
            <a-col :md="4" :sm="4" :xs="4">
              <a-form-item label="设备种类">
                <j-dict-select-tag placeholder="请选择设备种类" dictCode="device_category" v-model="queryParam.deviceCategory"
                                   allow-clear/>
              </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="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>
              <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>
        </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: 3200, 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="['20','30','40','50']"
          @change="handlePageNoChange"
          @showSizeChange="handlePageSizeChange"
        />
      </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>
    <!--<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="['20','30','40','50']"-->
    <!--@change="handlePageNoChange"-->
    <!--@showSizeChange="handlePageSizeChange"-->
    <!--/>-->
    <!--</div>-->
  </div>
</template>
@@ -81,21 +82,16 @@
  import $ from 'jquery'
  import '@/components/table2excel/table2excel'
  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } 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: 20,
          pageSize: 10000,
          pageNo: 1
        },
        queryParamEquip: {},
@@ -117,21 +113,18 @@
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
            // fixed: 'left'
          },
          {
            title: '设备统一编号',
            align: 'center',
            dataIndex: 'equipmentId',
            width: 120
            // fixed: 'left'
          },
          {
            title: '设备名称',
            align: 'center',
            width: 200,
            dataIndex: 'equipmentName'
            // fixed: 'left'
          },
          {
            title: '设备型号',
@@ -148,9 +141,9 @@
          {
            title: '班次',
            align: 'center',
            width: 300,
            width: 100,
            dataIndex: 'shift',
            ellipsis: true,
            ellipsis: true
          },
          {
            title: '每班小时',
@@ -250,7 +243,7 @@
            dataIndex: 'timeActuationRate',
            align: 'center',
            width: 110,
            customRender: text => text != 0 ? text * 100 + '%' : 0
            customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
          },
          {
            title: '加工零件数(件)',
@@ -269,7 +262,7 @@
            dataIndex: 'performanceRate',
            align: 'center',
            width: 110,
            customRender: text => text != 0 ? text * 100 + '%' : 0
            customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
          },
          {
            title: '废品数',
@@ -282,26 +275,36 @@
            dataIndex: 'passRate',
            align: 'center',
            width: 100,
            customRender: text => text != 0 ? text * 100 + '%' : 0
            customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
          },
          {
            title: '设备综合效率',
            dataIndex: 'overallEquipmentEfficiency',
            align: 'center',
            width: 120,
            customRender: text => text != 0 ? text * 100 + '%' : 0
            customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0
          }
        ],
        dataSource: []
        dataSource: [],
        driveTypeList: [],
        scrollY: 465,
        tableLoading: false
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
    created() {
      this.initShiftList()
      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()
    },
    mounted() {
      window.addEventListener('resize', this.handleWindowResize)
      this.handleWindowResize()
    },
    beforeDestroy() {
      window.removeEventListener('resize', this.handleWindowResize)
    },
    watch: {
      Type(valmath) {
@@ -345,11 +348,19 @@
    },
    methods: {
      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')
      },
      handleDateChange(value) {
        console.log('handleDateChangeValue', value)
        if (!value.length) {
          delete this.queryParam.startTime
          delete this.queryParam.endTime
          this.dates = []
        }
      },
      initShiftList() {
        getAction(this.url.initShiftList).then((res) => {
          if (res.success) {
@@ -389,41 +400,47 @@
      },
      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()
        if (this.queryParam.typeTree == '1') {
          this.queryParam.parentId = this.queryParamEquip.parentId
          this.queryParam.equipmentId = this.queryParamEquip.equipmentId
        } else {
          // this.$message.warning("请选择时间")
          this.$notification.warning({
            message: '消息',
            description: '请选择时间'
          })
          this.queryParam.parentId = this.queryParamPeople.parentId
          this.queryParam.equipmentId = ''
        }
        // this.onClearSelected()
        this.queryParam.pageNo = 1
        this.loadData()
      },
      searchReset() {
        this.queryParam = {
          pageSize: 20,
          pageSize: 10000,
          pageNo: 1
        }
        this.dates = []
        this.loadData()
      },
      loadData() {
        getAction(this.url.list, this.queryParam).then(res => {
          if (res.success) {
            this.dataSource = res.result
          }
      /**
       * 调用接口获取控制系统类型
       */
      getDriveTypeByApi() {
        api.getDriveTypeApi().then((res) => {
          this.driveTypeList = res.result.map(item => item.value)
        })
      },
      loadData() {
        this.tableLoading = true
        getAction(this.url.list, this.queryParam)
          .then(res => {
            if (res.success) {
              this.dataSource = res.result
              this.tableLoading = false
            }
          })
          .finally(() => {
            this.tableLoading = false
          })
      },
      /**
@@ -444,112 +461,71 @@
      handlePageSizeChange(current, size) {
        this.queryParam.pageSize = size
        this.loadData()
      },
      /**
       * 联想输入框筛选功能
       * @param input 输入的内容
       * @param option 配置
       * @returns {boolean} 判断是否筛选
       */
      filterOption(input, option) {
        return (
          option.componentOptions.children[0].text.toUpperCase().indexOf(input.toUpperCase()) >= 0
        )
      },
      /**
       * 当浏览器可视窗口尺寸发生改变时触发
       */
      handleWindowResize() {
        const boxHeight = +window.getComputedStyle(document.getElementById('EfficiencyShift')).height.slice(0, -2)
        const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2)
        this.scrollY = boxHeight - tableHeadHeight
      }
    }
  }
</script>
<style scoped>
  .table2 {
    width: 100%;
    height: 100%;
    overflow: auto;
  }
  .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;
    .device_list {
      height: 811px !important;
    }
  }
  @media screen and (min-width: 1680px) and (max-width: 1920px) {
    #EfficiencyShift {
      height: 670px !important;
      overflow: scroll;
    .device_list {
      height: 811px !important;
    }
  }
  @media screen and (min-width: 1400px) and (max-width: 1680px) {
    #EfficiencyShift {
      height: 522px !important;
      overflow: scroll;
    .device_list {
      height: 663px !important;
    }
  }
  @media screen and (min-width: 1280px) and (max-width: 1400px) {
    #EfficiencyShift {
      height: 414px !important;
      overflow: scroll;
    .device_list {
      height: 564px !important;
    }
  }
  @media screen and (max-width: 1280px) {
    #EfficiencyShift {
      height: 414px !important;
      overflow: scroll;
    .device_list {
      height: 564px !important;
    }
  }
  .identifyingclass {
    width: 55px;
    height: 15px;
    display: inline-block
  }
  .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>