永康嘉持电器有限公司前端
小小儁爺
2025-06-13 a2bce22a3a4df5f4662c373e57c07fa4268aeee1
src/views/statistic/installationLampList.vue
@@ -1,955 +1,960 @@
<template>
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
        <el-button v-waves type="primary" icon="el-icon-download" @click="download">导出</el-button>
      </div>
      <div v-show="currentTabPositionName==='安灯明细'" class="bodyTopFormGroup">
        <el-form
          ref="form"
          :model="form"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm">
            <el-form-item label="生产车间" style=" display: flex;">
              <el-select v-model="form.wkshopcode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in wkshopSelectArr"
                  :key="item.torg_code"
                  :label="item.torg_name"
                  :value="item.torg_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫类型" style=" display: flex;">
              <el-select v-model="form.calltypecode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in calltypeSelectArr"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫人员" style=" display: flex;">
              <el-input v-model="form.calluser" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item label="呼叫时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="form.calldate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="设备编码" style=" display: flex;">
              <el-input v-model="form.eqpcode" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="设备名称" style=" display: flex;">
              <el-input v-model="form.eqpname" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="响应人员" style=" display: flex;">
              <el-input v-model="form.responduser" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="响应时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="form.responddate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
          </div>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        >
          <svg-icon
            v-show="mouseHoverType==='mouseout'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
            @mouseenter="mouseHoverType=$event.type"
          />
          <svg-icon
            v-show="mouseHoverType==='mouseenter'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
            @click="isExpandForm=!isExpandForm"
            @mouseout="mouseHoverType=$event.type"
          />
        </div>
      </div>
      <div v-show="currentTabPositionName==='安灯汇总'" class="bodyTopFormGroup">
        <el-form
          ref="formSum"
          :model="formSum"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm">
            <el-form-item label="生产车间" style=" display: flex;">
              <el-select
                v-model="formSum.wkshopcode"
                style="width: 200px"
                placeholder="请选择"
                @change="getWhkspIsEqpSearch"
              >
                <el-option
                  v-for="item in wkshopSelectArr"
                  :key="item.torg_code"
                  :label="item.torg_name"
                  :value="item.torg_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="生产设备" style=" display: flex;">
              <el-select
                v-model="formSum.eqpcode"
                :disabled="formSum.wkshopcode===''"
                style="width: 200px"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in devicetypeArr"
                  :key="item.eqp_code"
                  :label="item.eqp_name"
                  :value="item.eqp_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫类型" style=" display: flex;">
              <el-select v-model="formSum.calltypecode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in calltypeSelectArr"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="formSum.calldate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
            <el-form-item
              v-show="isExpandForm"
              label="响应时间"
              style="display: flex;font-size: 14px;align-items: center"
            >
              <el-date-picker
                v-model="formSum.responddate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
          </div>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        >
          <svg-icon
            v-show="mouseHoverType==='mouseout'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
            @mouseenter="mouseHoverType=$event.type"
          />
          <svg-icon
            v-show="mouseHoverType==='mouseenter'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
            @click="isExpandForm=!isExpandForm"
            @mouseout="mouseHoverType=$event.type"
          />
        </div>
      </div>
      <el-tabs
        ref="elTabsRef"
        type="border-card"
        :style="{height:isExpandForm?tableHeight+'px':(tableHeight+40)+'px'}"
        @tab-click="tabClick"
      >
        <el-tab-pane label="安灯明细">
          <div class="elTableDiv">
            <TableColumnSettings
              v-if="false"
              :list1="tableColumnSettingsArray"
              @tableColumnUpdate="tableColumnUpdate"
            />
            <el-table
              ref="tableDataRef"
              :key="tableTimeStampKey"
              class="tableFixed"
              :data="tableData"
              border
              :height="isExpandForm?(tableHeight-130):(tableHeight-90)+'px'"
              :row-class-name="tableRowClassName"
              :style="{width: 100+'%' ,height:isExpandForm?(tableHeight-130):(tableHeight-90)+'px'}"
              highlight-current-row
              :header-cell-style="this.$headerCellStyle"
              :cell-style="this.$cellStyle"
              @sort-change="sortChange"
            >
              <el-table-column
                v-for="item in tableColumnSettingsArray"
                v-if="item.show"
                :key="item.id"
                :sortable="item.sortable"
                :prop="item.prop"
                :min-width="item.minWidth"
                :label="item.label"
                :width="item.width"
                show-tooltip-when-overflow
                :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
              >
                <template slot-scope="{row}">
                  <div v-if="!row[item.prop]">/</div>
                  <div v-else-if="item.prop==='status'">
                    <div v-if="row.status==='已响应'" style="display: flex;align-items: center">
                      <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                      已响应
                    </div>
                    <div v-if="row.status==='待响应'" style="display: flex;align-items: center">
                      <i class="el-icon-info" style="margin-right: 2px" />
                      待响应
                    </div>
                  </div>
                  <div v-else>{{ row[item.prop] }}</div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <!--分页-->
          <pagination
            :total="total"
            :page.sync="form.page"
            :limit.sync="form.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getAnDonReportDefinitSearch"
          />
        </el-tab-pane>
        <el-tab-pane label="安灯汇总">
          <div class="elTableDiv">
            <TableColumnSettings
              v-if="false"
              :list1="tableColumnSettingsArray2"
              @tableColumnUpdate="tableColumnUpdate2"
            />
            <el-table
              ref="tableDataRef2"
              :key="tableTimeStampKey2"
              class="tableFixed"
              :data="tableDataSum"
              border
              :height="isExpandForm?(tableHeight-130):(tableHeight-90)+'px'"
              :row-class-name="tableRowClassName"
              :style="{width: 100+'%' ,height:isExpandForm?(tableHeight-130):(tableHeight-90)+'px'}"
              highlight-current-row
              :header-cell-style="this.$headerCellStyle"
              :cell-style="this.$cellStyle"
              @sort-change="sortChange"
            >
              <el-table-column
                v-for="item in tableColumnSettingsArray2"
                v-if="item.show"
                :key="item.id"
                :sortable="item.sortable"
                :prop="item.prop"
                :min-width="item.minWidth"
                :label="item.label"
                :width="item.width"
                show-tooltip-when-overflow
                :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
              >
                <template slot-scope="{row}">
                  <div v-if="!row[item.prop]">/</div>
                  <div v-else-if="item.prop==='repondtime'">
                    {{ row.repondtime }} 分钟
                  </div>
                  <div v-else>{{ row[item.prop] }}</div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <!--分页-->
          <pagination
            :total="totalSum"
            :page.sync="formSum.page"
            :limit.sync="formSum.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getAnDonReportDefinitSearch"
          />
        </el-tab-pane>
      </el-tabs>
    </div>
  </div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { AnDengTypeSearch, WhkspIsEqpSearch } from '@/api/basicSettings'
import { handleDatetime } from '@/utils/global'
import {
  AnDonReportDefinitExcelSearch,
  AnDonReportDefinitSearch,
  AnDonReportSumExcelSearch,
  AnDonReportSumSearch
} from '@/api/ReportManager'
import waves from '@/directive/waves'
import TableColumnSettings from '@/components/TableColumnSettings'
import { PrentOrganization } from '@/api/GeneralBasicData'
export default {
  name: 'InstallationLampList',
  components: {
    Pagination, TableColumnSettings
  },
  directives: { waves },
  data() {
    return {
      mouseHoverType: 'mouseout',
      isExpandForm: false,
      mainHeight: 0,
      tableHeight: 0,
      form: {
        wkshopcode: '', // 车间编码
        calltypecode: '', // 呼叫类型编码
        calluser: '', // 呼叫人员
        calldate: '', // 呼叫时间
        eqpcode: '', // 设备编码
        eqpname: '', // 设备名称
        responduser: '', // 响应人员
        responddate: '', // 响应时间
        prop: 'eqp_code', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
      },
      total: 10,
      wkshopSelectArr: [], // 生产车间下拉数组
      calltypeSelectArr: [], // 呼叫类型下拉数组
      tableData: [],
      tableColumnSettingsArray: [
        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'rowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_code',
          label: '车间编码',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_name',
          label: '车间名称',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_code',
          label: '设备编码',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'eqp_name',
          label: '设备名称',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'typename',
          label: '呼叫类型',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'start_user',
          label: '呼叫人',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 160,
          width: false,
          prop: 'start_date',
          label: '呼叫时间',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'resp_user',
          label: '响应人',
          id: 10,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 160,
          width: false,
          prop: 'resp_date',
          label: '响应时间',
          id: 11,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 130,
          width: false,
          prop: 'respondcont',
          label: '响应时长',
          id: 12,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'status',
          label: '状态',
          id: 13,
          show: true,
          fixed: 'right',
          sortable: true
        }
      ],
      tableTimeStampKey: new Date().getTime(), // 表格key
      currentTabPositionName: '安灯明细', // Tab标签位于的位置 默认第‘0’个
      formSum: {
        wkshopcode: '', // 车间编码
        calltypecode: '', // 呼叫类型编码
        calldate: '', // 呼叫时间
        eqpcode: '', // 设备编码
        responddate: '', // 响应时间
        prop: 'eqp_code', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
      },
      tableDataSum: [],
      totalSum: 0,
      tableColumnSettingsArray2: [
        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'RowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_name',
          label: '生产车间',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_code',
          label: '设备编码',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_name',
          label: '设备名称',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'calltypename',
          label: '呼叫类型',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'callcount',
          label: '呼叫总次数',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'repondcount',
          label: '响应总次数',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'repondtime',
          label: '总响应时长',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        }
      ],
      tableTimeStampKey2: new Date().getTime(), // 表格key
      devicetypeArr: []// 生产设备下拉数组
    }
  },
  activated() {   window.addEventListener('resize', this.getHeight)   this.getHeight() }, created() {
    this.handleRequest()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
  },
  methods: {
    tableColumnUpdate(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray = val
      }
      this.tableTimeStampKey = new Date().getTime()
      this.$refs.tableDataRef.doLayout()
    },
    tableColumnUpdate2(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray2 = val
      }
      this.tableTimeStampKey2 = new Date().getTime()
      this.$refs.tableDataRef2.doLayout()
    },
    handleRequest() {
      this.getAnDonReportDefinitSearch().then(res => {
        if (res.code === '200') {
          this.getShopSearch()
          this.getAnDengTypeSearch()
        }
      })
    },
    async getAnDonReportDefinitSearch() {
      let tempDate = this.form.calldate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      let tempDate2 = this.form.responddate
      if (tempDate2.length > 0) {
        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      }
      const data = {
        wkshopcode: this.form.wkshopcode, // 车间编码
        calltypecode: this.form.calltypecode, // 呼叫类型编码
        calluser: this.form.calluser, // 呼叫人员
        calldate: tempDate, // 呼叫时间
        eqpcode: this.form.eqpcode, // 设备编码
        eqpname: this.form.eqpname, // 设备名称
        responduser: this.form.responduser, // 响应人员
        responddate: tempDate2, // 响应时间
        prop: this.form.prop, // 排序字段
        order: this.form.order, // 排序字段
        page: this.form.page, // 第几页
        rows: this.form.rows // 每页多少条
      }
      const res = await AnDonReportDefinitSearch(data)
      this.tableData = res.data
      this.total = res.count
      return { code: res.code }
    },
    async getAnDonReportSumSearch() {
      let tempDate = this.formSum.calldate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      let tempDate2 = this.formSum.responddate
      if (tempDate2.length > 0) {
        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      }
      const data = {
        wkshopcode: this.formSum.wkshopcode, // 车间编码
        calltypecode: this.formSum.calltypecode, // 呼叫类型编码
        calldate: tempDate, // 呼叫时间
        eqpcode: this.formSum.eqpcode, // 设备编码
        responddate: tempDate2, // 响应时间
        prop: this.formSum.prop, // 排序字段
        order: this.formSum.order, // 排序字段
        page: this.formSum.page, // 第几页
        rows: this.formSum.rows // 每页多少条
      }
      const res = await AnDonReportSumSearch(data)
      this.tableDataSum = res.data
      this.totalSum = res.count
    },
    // 获取生产车间
    async getShopSearch() {
      const { data: res } = await PrentOrganization()
      this.wkshopSelectArr = res
    },
    // 获取呼叫类型
    async getAnDengTypeSearch() {
      const { data: res } = await AnDengTypeSearch()
      this.calltypeSelectArr = res
    },
    async getWhkspIsEqpSearch(val) {
      this.formSum.eqpcode = ''
      const { data: res } = await WhkspIsEqpSearch({ wkshpcode: val })
      this.devicetypeArr = res
    },
    // tab标签切换
    tabClick(val) {
      this.currentTabPositionName = val.label
      if (this.currentTabPositionName === '安灯明细') {
        this.getAnDonReportDefinitSearch()
      } else {
        this.getAnDonReportSumSearch()
      }
      this.$nextTick(() => {
        this.$refs['tableDataRef'].doLayout()
        this.$refs['tableDataRef2'].doLayout()
      })
    },
    // 排序改变时
    sortChange({ column, prop, order }) {
      if (this.currentTabPositionName === '安灯明细') {
        if (order === 'descending') {
          order = 'desc'
        } else if (order === 'ascending') {
          order = 'asc'
        } else {
          order = 'desc'
        }
        this.form.order = order
        this.form.prop = prop
        this.getAnDonReportDefinitSearch()
      } else {
        if (order === 'descending') {
          order = 'desc'
        } else if (order === 'ascending') {
          order = 'asc'
        } else {
          order = 'desc'
        }
        this.formSum.order = order
        this.formSum.prop = prop
        this.getAnDonReportSumSearch()
      }
    },
    // 查询
    search() {
      if (this.currentTabPositionName === '安灯明细') {
        this.getAnDonReportDefinitSearch()
      } else {
        this.getAnDonReportSumSearch()
      }
    },
    // 重置
    reset() {
      if (this.currentTabPositionName === '安灯明细') {
        this.form.wkshopcode = ''
        this.form.calltypecode = ''
        this.form.calluser = ''
        this.form.calldate = ''
        this.form.eqpcode = ''
        this.form.eqpname = ''
        this.form.responduser = ''
        this.form.responddate = ''
        this.getAnDonReportDefinitSearch()
      } else {
        this.formSum.wkshopcode = ''
        this.formSum.calltypecode = ''
        this.formSum.calldate = ''
        this.formSum.eqpcode = ''
        this.formSum.responddate = ''
        this.getAnDonReportSumSearch()
      }
    },
    async download() {
      if (this.currentTabPositionName === '安灯明细') {
        let calldate = this.form.calldate
        if (calldate.length > 0) {
          calldate = handleDatetime(calldate[0]) + '~' + handleDatetime(calldate[1])
        }
        let responddate = this.form.responddate
        if (responddate.length > 0) {
          responddate = handleDatetime(responddate[0]) + '~' + handleDatetime(responddate[1])
        }
        const data = {
          wkshopcode: this.form.wkshopcode,
          calltypecode: this.form.calltypecode,
          calluser: this.form.calluser,
          calldate: calldate,
          eqpcode: this.form.eqpcode,
          eqpname: this.form.eqpname,
          responduser: this.form.responduser,
          responddate: responddate
        }
        const { data: res } = await AnDonReportDefinitExcelSearch(data)
        console.log(res)
        window.location.href = res
      } else {
        let calldate = this.formSum.calldate
        if (calldate.length > 0) {
          calldate = handleDatetime(calldate[0]) + '~' + handleDatetime(calldate[1])
        }
        let responddate = this.formSum.responddate
        if (responddate.length > 0) {
          responddate = handleDatetime(responddate[0]) + '~' + handleDatetime(responddate[1])
        }
        const data = {
          wkshopcode: this.formSum.wkshopcode,
          calltypecode: this.formSum.calltypecode,
          calldate: calldate,
          eqpcode: this.formSum.eqpcode,
          responddate: responddate
        }
        const { data: res } = await AnDonReportSumExcelSearch(data)
        window.location.href = res
      }
    },
    // 获取页面高度
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 180
        this.$refs.tableDataRef.doLayout()
        this.$refs.tableDataRef2.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
      return 'custom-row'
    }
  }
}
</script>
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-tabs--border-card > .el-tabs__content {
  padding: 0 10px;
}
::v-deep .el-range__icon {
  line-height: 28px !important;
}
::v-deep .el-range-separator {
  line-height: 28px !important;
}
::v-deep .el-range-input {
  font-size: 14px;
}
::v-deep .el-range-separator {
  display: flex;
  justify-content: center;
  align-items: center;
}
::v-deep .el-button--text {
  font-size: 14px;
  cursor: pointer;
}
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline {
  margin-right: 15px;
}
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
  align-items: center;
  padding: 0 15px;
}
::v-deep .el-button--primary {
  //background-color: $main_color !important;
}
::v-deep .el-button--default {
  background-color: #f8f8fa;
  border: none;
}
::v-deep .el-input__inner {
  height: 34px;
  line-height: 34px;
  //color: #a7a7a7;
}
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
::v-deep .dialogVisibleRoles .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .importPickerClass .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
  display: flex;
  justify-content: flex-end;
}
::v-deep .el-table .caret-wrapper {
  transform: scale(0.8);
}
::v-deep .cell {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
::v-deep .el-table::before {
  height: 0;
}
::v-deep .el-table__body-wrapper {
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
  color: #a7a7a7;
}
.body ::v-deep .el-divider {
  border: 1px solid #eee;
  width: 99%;
  margin: 10px auto;
}
.body ::v-deep .el-form-item {
  margin-bottom: 0;
}
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
::v-deep .el-select__caret {
  display: flex;
  align-items: center;
  justify-content: center;
}
.tableFixed {
  ::v-deep .el-table__fixed-right {
    height: 100% !important;
  }
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
</style>
<style>
.el-table .custom-row {
  background: #f8f8fa;
}
</style>
<template>
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
        <el-button v-waves type="primary" icon="el-icon-download" @click="download">导出</el-button>
      </div>
      <div v-show="currentTabPositionName==='安灯明细'" class="bodyTopFormGroup">
        <el-form
          ref="form"
          :model="form"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm">
            <el-form-item label="生产车间" style=" display: flex;">
              <el-select v-model="form.wkshopcode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in wkshopSelectArr"
                  :key="item.torg_code"
                  :label="item.torg_name"
                  :value="item.torg_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫类型" style=" display: flex;">
              <el-select v-model="form.calltypecode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in calltypeSelectArr"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫人员" style=" display: flex;">
              <el-input v-model="form.calluser" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item label="呼叫时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="form.calldate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="设备编码" style=" display: flex;">
              <el-input v-model="form.eqpcode" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="设备名称" style=" display: flex;">
              <el-input v-model="form.eqpname" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="响应人员" style=" display: flex;">
              <el-input v-model="form.responduser" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="响应时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="form.responddate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
          </div>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        >
          <svg-icon
            v-show="mouseHoverType==='mouseout'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
            @mouseenter="mouseHoverType=$event.type"
          />
          <svg-icon
            v-show="mouseHoverType==='mouseenter'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
            @click="isExpandForm=!isExpandForm"
            @mouseout="mouseHoverType=$event.type"
          />
        </div>
      </div>
      <div v-show="currentTabPositionName==='安灯汇总'" class="bodyTopFormGroup">
        <el-form
          ref="formSum"
          :model="formSum"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm">
            <el-form-item label="生产车间" style=" display: flex;">
              <el-select
                v-model="formSum.wkshopcode"
                style="width: 200px"
                placeholder="请选择"
                @change="getWhkspIsEqpSearch"
              >
                <el-option
                  v-for="item in wkshopSelectArr"
                  :key="item.torg_code"
                  :label="item.torg_name"
                  :value="item.torg_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="生产设备" style=" display: flex;">
              <el-select
                v-model="formSum.eqpcode"
                :disabled="formSum.wkshopcode===''"
                style="width: 200px"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in devicetypeArr"
                  :key="item.eqp_code"
                  :label="item.eqp_name"
                  :value="item.eqp_code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫类型" style=" display: flex;">
              <el-select v-model="formSum.calltypecode" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in calltypeSelectArr"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="呼叫时间" style="display: flex;font-size: 14px;align-items: center">
              <el-date-picker
                v-model="formSum.calldate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
            <el-form-item
              v-show="isExpandForm"
              label="响应时间"
              style="display: flex;font-size: 14px;align-items: center"
            >
              <el-date-picker
                v-model="formSum.responddate"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              />
            </el-form-item>
          </div>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        >
          <svg-icon
            v-show="mouseHoverType==='mouseout'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
            @mouseenter="mouseHoverType=$event.type"
          />
          <svg-icon
            v-show="mouseHoverType==='mouseenter'"
            style="cursor: pointer"
            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
            @click="isExpandForm=!isExpandForm"
            @mouseout="mouseHoverType=$event.type"
          />
        </div>
      </div>
      <el-tabs
        ref="elTabsRef"
        type="border-card"
        :style="{height:isExpandForm?tableHeight+'px':(tableHeight+40)+'px'}"
        @tab-click="tabClick"
      >
        <el-tab-pane label="安灯明细">
          <div class="elTableDiv">
            <TableColumnSettings
              v-if="false"
              :list1="tableColumnSettingsArray"
              @tableColumnUpdate="tableColumnUpdate"
            />
            <el-table
              ref="tableDataRef"
              :key="tableTimeStampKey"
              class="tableFixed"
              :data="tableData"
              border
              :height="isExpandForm?(tableHeight-130):(tableHeight-90)+'px'"
              :row-class-name="tableRowClassName"
              :style="{width: 100+'%' ,height:isExpandForm?(tableHeight-130):(tableHeight-90)+'px'}"
              highlight-current-row
              :header-cell-style="this.$headerCellStyle"
              :cell-style="this.$cellStyle"
              @sort-change="sortChange"
            >
              <el-table-column
                v-for="item in tableColumnSettingsArray"
                v-if="item.show"
                :key="item.id"
                :sortable="item.sortable"
                :prop="item.prop"
                :min-width="item.minWidth"
                :label="item.label"
                :width="item.width"
                show-tooltip-when-overflow
                :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
              >
                <template slot-scope="{row}">
                  <div v-if="!row[item.prop]">/</div>
                  <div v-else-if="item.prop==='status'">
                    <div v-if="row.status==='已响应'" style="display: flex;align-items: center">
                      <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                      已响应
                    </div>
                    <div v-if="row.status==='待响应'" style="display: flex;align-items: center">
                      <i class="el-icon-info" style="margin-right: 2px" />
                      待响应
                    </div>
                  </div>
                  <div v-else>{{ row[item.prop] }}</div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <!--分页-->
          <pagination
            :total="total"
            :page.sync="form.page"
            :limit.sync="form.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getAnDonReportDefinitSearch"
          />
        </el-tab-pane>
        <el-tab-pane label="安灯汇总">
          <div class="elTableDiv">
            <TableColumnSettings
              v-if="false"
              :list1="tableColumnSettingsArray2"
              @tableColumnUpdate="tableColumnUpdate2"
            />
            <el-table
              ref="tableDataRef2"
              :key="tableTimeStampKey2"
              class="tableFixed"
              :data="tableDataSum"
              border
              :height="isExpandForm?(tableHeight-130):(tableHeight-90)+'px'"
              :row-class-name="tableRowClassName"
              :style="{width: 100+'%' ,height:isExpandForm?(tableHeight-130):(tableHeight-90)+'px'}"
              highlight-current-row
              :header-cell-style="this.$headerCellStyle"
              :cell-style="this.$cellStyle"
              @sort-change="sortChange"
            >
              <el-table-column
                v-for="item in tableColumnSettingsArray2"
                v-if="item.show"
                :key="item.id"
                :sortable="item.sortable"
                :prop="item.prop"
                :min-width="item.minWidth"
                :label="item.label"
                :width="item.width"
                show-tooltip-when-overflow
                :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
              >
                <template slot-scope="{row}">
                  <div v-if="!row[item.prop]">/</div>
                  <div v-else-if="item.prop==='repondtime'">
                    {{ row.repondtime }} 分钟
                  </div>
                  <div v-else>{{ row[item.prop] }}</div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <!--分页-->
          <pagination
            :total="totalSum"
            :page.sync="formSum.page"
            :limit.sync="formSum.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getAnDonReportDefinitSearch"
          />
        </el-tab-pane>
      </el-tabs>
    </div>
  </div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { AnDengTypeSearch, WhkspIsEqpSearch } from '@/api/basicSettings'
import { handleDatetime } from '@/utils/global'
import {
  AnDonReportDefinitExcelSearch,
  AnDonReportDefinitSearch,
  AnDonReportSumExcelSearch,
  AnDonReportSumSearch
} from '@/api/ReportManager'
import waves from '@/directive/waves'
import TableColumnSettings from '@/components/TableColumnSettings'
import { PrentOrganization } from '@/api/GeneralBasicData'
export default {
  name: 'InstallationLampList',
  components: {
    Pagination, TableColumnSettings
  },
  directives: { waves },
  data() {
    return {
      mouseHoverType: 'mouseout',
      isExpandForm: false,
      mainHeight: 0,
      tableHeight: 0,
      form: {
        wkshopcode: '', // 车间编码
        calltypecode: '', // 呼叫类型编码
        calluser: '', // 呼叫人员
        calldate: '', // 呼叫时间
        eqpcode: '', // 设备编码
        eqpname: '', // 设备名称
        responduser: '', // 响应人员
        responddate: '', // 响应时间
        prop: 'eqp_code', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
      },
      total: 10,
      wkshopSelectArr: [], // 生产车间下拉数组
      calltypeSelectArr: [], // 呼叫类型下拉数组
      tableData: [],
      tableColumnSettingsArray: [
        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'rowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_code',
          label: '车间编码',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_name',
          label: '车间名称',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_code',
          label: '设备编码',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'eqp_name',
          label: '设备名称',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'typename',
          label: '呼叫类型',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'start_user',
          label: '呼叫人',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 160,
          width: false,
          prop: 'start_date',
          label: '呼叫时间',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'resp_user',
          label: '响应人',
          id: 10,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 160,
          width: false,
          prop: 'resp_date',
          label: '响应时间',
          id: 11,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 130,
          width: false,
          prop: 'respondcont',
          label: '响应时长',
          id: 12,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'status',
          label: '状态',
          id: 13,
          show: true,
          fixed: 'right',
          sortable: true
        }
      ],
      tableTimeStampKey: new Date().getTime(), // 表格key
      currentTabPositionName: '安灯明细', // Tab标签位于的位置 默认第‘0’个
      formSum: {
        wkshopcode: '', // 车间编码
        calltypecode: '', // 呼叫类型编码
        calldate: '', // 呼叫时间
        eqpcode: '', // 设备编码
        responddate: '', // 响应时间
        prop: 'eqp_code', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
      },
      tableDataSum: [],
      totalSum: 0,
      tableColumnSettingsArray2: [
        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'RowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 110,
          width: false,
          prop: 'wkshp_name',
          label: '生产车间',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_code',
          label: '设备编码',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'eqp_name',
          label: '设备名称',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'calltypename',
          label: '呼叫类型',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'callcount',
          label: '呼叫总次数',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'repondcount',
          label: '响应总次数',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'repondtime',
          label: '总响应时长',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        }
      ],
      tableTimeStampKey2: new Date().getTime(), // 表格key
      devicetypeArr: []// 生产设备下拉数组
    }
  },
  activated() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
    this.handleRequest()
  },
  created() {
    this.handleRequest()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
  },
  methods: {
    tableColumnUpdate(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray = val
      }
      this.tableTimeStampKey = new Date().getTime()
      this.$refs.tableDataRef.doLayout()
    },
    tableColumnUpdate2(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray2 = val
      }
      this.tableTimeStampKey2 = new Date().getTime()
      this.$refs.tableDataRef2.doLayout()
    },
    handleRequest() {
      this.getAnDonReportDefinitSearch().then(res => {
        if (res.code === '200') {
          this.getShopSearch()
          this.getAnDengTypeSearch()
        }
      })
    },
    async getAnDonReportDefinitSearch() {
      let tempDate = this.form.calldate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      let tempDate2 = this.form.responddate
      if (tempDate2.length > 0) {
        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      }
      const data = {
        wkshopcode: this.form.wkshopcode, // 车间编码
        calltypecode: this.form.calltypecode, // 呼叫类型编码
        calluser: this.form.calluser, // 呼叫人员
        calldate: tempDate, // 呼叫时间
        eqpcode: this.form.eqpcode, // 设备编码
        eqpname: this.form.eqpname, // 设备名称
        responduser: this.form.responduser, // 响应人员
        responddate: tempDate2, // 响应时间
        prop: this.form.prop, // 排序字段
        order: this.form.order, // 排序字段
        page: this.form.page, // 第几页
        rows: this.form.rows // 每页多少条
      }
      const res = await AnDonReportDefinitSearch(data)
      this.tableData = res.data
      this.total = res.count
      return { code: res.code }
    },
    async getAnDonReportSumSearch() {
      let tempDate = this.formSum.calldate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      let tempDate2 = this.formSum.responddate
      if (tempDate2.length > 0) {
        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      }
      const data = {
        wkshopcode: this.formSum.wkshopcode, // 车间编码
        calltypecode: this.formSum.calltypecode, // 呼叫类型编码
        calldate: tempDate, // 呼叫时间
        eqpcode: this.formSum.eqpcode, // 设备编码
        responddate: tempDate2, // 响应时间
        prop: this.formSum.prop, // 排序字段
        order: this.formSum.order, // 排序字段
        page: this.formSum.page, // 第几页
        rows: this.formSum.rows // 每页多少条
      }
      const res = await AnDonReportSumSearch(data)
      this.tableDataSum = res.data
      this.totalSum = res.count
    },
    // 获取生产车间
    async getShopSearch() {
      const { data: res } = await PrentOrganization()
      this.wkshopSelectArr = res
    },
    // 获取呼叫类型
    async getAnDengTypeSearch() {
      const { data: res } = await AnDengTypeSearch()
      this.calltypeSelectArr = res
    },
    async getWhkspIsEqpSearch(val) {
      this.formSum.eqpcode = ''
      const { data: res } = await WhkspIsEqpSearch({ wkshpcode: val })
      this.devicetypeArr = res
    },
    // tab标签切换
    tabClick(val) {
      this.currentTabPositionName = val.label
      if (this.currentTabPositionName === '安灯明细') {
        this.getAnDonReportDefinitSearch()
      } else {
        this.getAnDonReportSumSearch()
      }
      this.$nextTick(() => {
        this.$refs['tableDataRef'].doLayout()
        this.$refs['tableDataRef2'].doLayout()
      })
    },
    // 排序改变时
    sortChange({ column, prop, order }) {
      if (this.currentTabPositionName === '安灯明细') {
        if (order === 'descending') {
          order = 'desc'
        } else if (order === 'ascending') {
          order = 'asc'
        } else {
          order = 'desc'
        }
        this.form.order = order
        this.form.prop = prop
        this.getAnDonReportDefinitSearch()
      } else {
        if (order === 'descending') {
          order = 'desc'
        } else if (order === 'ascending') {
          order = 'asc'
        } else {
          order = 'desc'
        }
        this.formSum.order = order
        this.formSum.prop = prop
        this.getAnDonReportSumSearch()
      }
    },
    // 查询
    search() {
      if (this.currentTabPositionName === '安灯明细') {
        this.getAnDonReportDefinitSearch()
      } else {
        this.getAnDonReportSumSearch()
      }
    },
    // 重置
    reset() {
      if (this.currentTabPositionName === '安灯明细') {
        this.form.wkshopcode = ''
        this.form.calltypecode = ''
        this.form.calluser = ''
        this.form.calldate = ''
        this.form.eqpcode = ''
        this.form.eqpname = ''
        this.form.responduser = ''
        this.form.responddate = ''
        this.getAnDonReportDefinitSearch()
      } else {
        this.formSum.wkshopcode = ''
        this.formSum.calltypecode = ''
        this.formSum.calldate = ''
        this.formSum.eqpcode = ''
        this.formSum.responddate = ''
        this.getAnDonReportSumSearch()
      }
    },
    async download() {
      if (this.currentTabPositionName === '安灯明细') {
        let calldate = this.form.calldate
        if (calldate.length > 0) {
          calldate = handleDatetime(calldate[0]) + '~' + handleDatetime(calldate[1])
        }
        let responddate = this.form.responddate
        if (responddate.length > 0) {
          responddate = handleDatetime(responddate[0]) + '~' + handleDatetime(responddate[1])
        }
        const data = {
          wkshopcode: this.form.wkshopcode,
          calltypecode: this.form.calltypecode,
          calluser: this.form.calluser,
          calldate: calldate,
          eqpcode: this.form.eqpcode,
          eqpname: this.form.eqpname,
          responduser: this.form.responduser,
          responddate: responddate
        }
        const { data: res } = await AnDonReportDefinitExcelSearch(data)
        console.log(res)
        window.location.href = res
      } else {
        let calldate = this.formSum.calldate
        if (calldate.length > 0) {
          calldate = handleDatetime(calldate[0]) + '~' + handleDatetime(calldate[1])
        }
        let responddate = this.formSum.responddate
        if (responddate.length > 0) {
          responddate = handleDatetime(responddate[0]) + '~' + handleDatetime(responddate[1])
        }
        const data = {
          wkshopcode: this.formSum.wkshopcode,
          calltypecode: this.formSum.calltypecode,
          calldate: calldate,
          eqpcode: this.formSum.eqpcode,
          responddate: responddate
        }
        const { data: res } = await AnDonReportSumExcelSearch(data)
        window.location.href = res
      }
    },
    // 获取页面高度
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 180
        this.$refs.tableDataRef.doLayout()
        this.$refs.tableDataRef2.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
      return 'custom-row'
    }
  }
}
</script>
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-tabs--border-card > .el-tabs__content {
  padding: 0 10px;
}
::v-deep .el-range__icon {
  line-height: 28px !important;
}
::v-deep .el-range-separator {
  line-height: 28px !important;
}
::v-deep .el-range-input {
  font-size: 14px;
}
::v-deep .el-range-separator {
  display: flex;
  justify-content: center;
  align-items: center;
}
::v-deep .el-button--text {
  font-size: 14px;
  cursor: pointer;
}
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline {
  margin-right: 15px;
}
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
  align-items: center;
  padding: 0 15px;
}
::v-deep .el-button--primary {
  //background-color: $main_color !important;
}
::v-deep .el-button--default {
  background-color: #f8f8fa;
  border: none;
}
::v-deep .el-input__inner {
  height: 34px;
  line-height: 34px;
  //color: #a7a7a7;
}
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
::v-deep .dialogVisibleRoles .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .importPickerClass .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
  display: flex;
  justify-content: flex-end;
}
::v-deep .el-table .caret-wrapper {
  transform: scale(0.8);
}
::v-deep .cell {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
::v-deep .el-table::before {
  height: 0;
}
::v-deep .el-table__body-wrapper {
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
  color: #a7a7a7;
}
.body ::v-deep .el-divider {
  border: 1px solid #eee;
  width: 99%;
  margin: 10px auto;
}
.body ::v-deep .el-form-item {
  margin-bottom: 0;
}
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
::v-deep .el-select__caret {
  display: flex;
  align-items: center;
  justify-content: center;
}
.tableFixed {
  ::v-deep .el-table__fixed-right {
    height: 100% !important;
  }
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
</style>
<style>
.el-table .custom-row {
  background: #f8f8fa;
}
</style>