1、设备TEEP、设备开动率以及班次利用率页面时间选择器新增用户选择时对时间范围的限制功能并测试大数据导出功能
2、生产设备自主维护点检表设备编号的输入方式由手动输入调整为弹窗选择输入
3、生产设备自主维护点检表页面调整周保执行记录渲染逻辑(日期对应到周)
已添加1个文件
已修改5个文件
546 ■■■■ 文件已修改
src/views/eam/SelfMaintenanceAndInspectionList.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/SelfMaintenanceAndInspectionList/EamEquipmentListModal.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/EquipmentList/DeviceListModal.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/SelfMaintenanceAndInspectionList.vue
@@ -7,7 +7,8 @@
          <a-col :md="4" :sm="4">
            <a-form-item label="设备编号">
              <a-input placeholder="请输入设备编号" v-model="queryParam.num" :allow-clear="false"/>
              <a-input-search :readOnly="true" v-model="queryParam.num" @search="handleOpenEamEquipmentListModal"
                              enter-button placeholder='请选择设备编号'/>
            </a-form-item>
          </a-col>
@@ -43,7 +44,9 @@
          <th colspan="3"></th>
          <th colspan="6">统一编号:{{dataSource.equipentNum}}</th>
          <th colspan="3"></th>
          <th colspan="6">{{queryParam.dataTime.split('-')[0]}}&nbsp;å¹´&nbsp;{{queryParam.dataTime.split('-')[1]}}&nbsp;月</th>
          <th colspan="6">
            {{queryParam.dataTime.split('-')[0]}}&nbsp;å¹´&nbsp;{{queryParam.dataTime.split('-')[1]}}&nbsp;月
          </th>
          <th colspan="6">单位:{{dataSource.workCenterName}}</th>
          <th colspan="3"></th>
        </tr>
@@ -88,7 +91,7 @@
          <td>序号</td>
          <td colspan="5">周保养项目</td>
          <td colspan="5">检查标准</td>
          <td colspan="31">周报执行记录</td>
          <td colspan="31">周保执行记录</td>
        </tr>
        <tr v-for="(item,index) in dataSource.list4">
@@ -96,36 +99,37 @@
          <td colspan="5">{{item.name}}</td>
          <td colspan="5">{{item.detectionStandard}}</td>
          <td v-for="childItem in 4" colspan="6">
            {{item.dataList&&item.dataList[childItem-1]?item.dataList[childItem-1].insResult:''}}
            {{item.dataList&&item.dataList.find(item=>item.weekOfMonth===childItem)?item.dataList.find(item=>item.weekOfMonth===childItem).insResult:''}}
          </td>
          <td colspan="7">
            {{item.dataList&&item.dataList[4]?item.dataList[4].insResult:''}}
            {{item.dataList&&item.dataList.find(item=>item.weekOfMonth===5)?item.dataList.find(item=>item.weekOfMonth===5).insResult:''}}
          </td>
        </tr>
        <tr>
          <td colspan="11">周保养操作者执行(操作者签字)</td>
          <td v-for="childItem in 4" colspan="6">
            {{dataSource.list5&&dataSource.list5[0]&&dataSource.list5[0].dataList&&dataSource.list5[0].dataList[childItem-1]?dataSource.list5[0].dataList[childItem-1].inspectionUserName:''}}
            {{dataSource.list5&&dataSource.list5[0]&&dataSource.list5[0].dataList&&dataSource.list5[0].dataList.find(item=>item.weekOfMonth===childItem)?dataSource.list5[0].dataList.find(item=>item.weekOfMonth===childItem).inspectionUserName:''}}
          </td>
          <td colspan="7">
            {{dataSource.list5&&dataSource.list5[0]&&dataSource.list5[0].dataList&&dataSource.list5[0].dataList[4]?dataSource.list5[0].dataList[4].inspectionUserName:''}}
            {{dataSource.list5&&dataSource.list5[0]&&dataSource.list5[0].dataList&&dataSource.list5[0].dataList.find(item=>item.weekOfMonth===5)?dataSource.list5[0].dataList.find(item=>item.weekOfMonth===5).inspectionUserName:''}}
          </td>
        </tr>
        <tr>
          <td colspan="11">间保养检查人确认(维修人员签字)</td>
          <td colspan="11">周保养检查人确认(维修人员签字)</td>
          <td v-for="childItem in 4" colspan="6">
            {{dataSource.list6&&dataSource.list6[0]&&dataSource.list6[0].dataList&&dataSource.list6[0].dataList[childItem-1]?dataSource.list6[0].dataList[childItem-1].repairConfirmPerson:''}}
            {{dataSource.list5&&dataSource.list6[0]&&dataSource.list6[0].dataList&&dataSource.list6[0].dataList.find(item=>item.weekOfMonth===childItem)?dataSource.list6[0].dataList.find(item=>item.weekOfMonth===childItem).repairConfirmPerson:''}}
          </td>
          <td colspan="7">
            {{dataSource.list6&&dataSource.list6[0]&&dataSource.list6[0].dataList&&dataSource.list6[0].dataList[4]?dataSource.list6[0].dataList[4].repairConfirmPerson:''}}
            {{dataSource.list5&&dataSource.list6[0]&&dataSource.list6[0].dataList&&dataSource.list6[0].dataList.find(item=>item.weekOfMonth===5)?dataSource.list6[0].dataList.find(item=>item.weekOfMonth===5).repairConfirmPerson:''}}
          </td>
        </tr>
        <tr>
          <td colspan="42" style="text-align: left">
            å¡«å†™è¦æ±‚:正常=/,异常=x,故障停机=△,没开机=T:设备日常点检记录由操作人员执行并记录。执行情况检查由维修人员负责执行并记录,对发现问题记录至点检表背面各注栏,对发现问题进行全程闭环记录。
            å¡«å†™è¦æ±‚:正常=√,异常=×,故障停机=△,没开机=T:设备日常点检记录由操作人员执行并记录。执行情况检查由维修人员负责执行并记录,对发现问题记录至点检表背面备注栏,对发现问题进行全程闭环记录。
          </td>
        </tr>
@@ -144,6 +148,8 @@
        </tbody>
      </table>
    </a-spin>
    <eam-equipment-list-modal ref="eamEquipmentListModal" @sendSelectionRows="setSelectedEquipmentId"/>
  </a-card>
</template>
@@ -152,9 +158,11 @@
  import { getAction } from '@/api/manage'
  import $ from 'jquery'
  import '@/components/table2excel/table2excel'
  import EamEquipmentListModal from './modules/SelfMaintenanceAndInspectionList/EamEquipmentListModal'
  export default {
    name: 'SelfMaintenanceAndInspectionList',
    components: { EamEquipmentListModal },
    mixins: [JeecgListMixin],
    data() {
      return {
@@ -189,18 +197,7 @@
                that.$message.warning(`${dataTime.split('-')[0]}å¹´${dataTime.split('-')[1]}月  è®¾å¤‡ç¼–号为${num}设备 æ— ç‚¹æ£€è®°å½•`)
                return
              }
              that.dataSource = res.result
              for (let index = 4; index <= 6; index++) {
                that.dataSource[`list${index}`] = that.dataSource[`list${index}`].map(item => {
                  return {
                    ...item,
                    dataList: item.dataList.sort((x, y) => x.dayTime - y.dayTime)
                  }
                })
              }
              this.$nextTick(() => this.tableElement = document.getElementById('dataTable'))
            }
            else that.$message.warning(res.message)
@@ -210,6 +207,16 @@
          })
      },
      // æŽ§åˆ¶é€‰æ‹©è®¾å¤‡å¼¹çª—弹出
      handleOpenEamEquipmentListModal() {
        this.$refs.eamEquipmentListModal.visible = true
        this.$refs.eamEquipmentListModal.openPage()
      },
      setSelectedEquipmentId(record) {
        this.$set(this.queryParam, 'num', record.num)
      },
      exportExcel() {
        if (!this.tableElement) this.$message.warning('请查询后再进行导出')
src/views/eam/modules/SelfMaintenanceAndInspectionList/EamEquipmentListModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
<template>
  <a-modal :title="title" :width="1000" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel"
           cancelText="关闭">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="7" :sm="7">
            <a-form-item label="统一编码">
              <a-input placeholder="请输入统一编码" v-model="queryParam.num"/>
            </a-form-item>
          </a-col>
          <a-col :md="7" :sm="7">
            <a-form-item label="设备名称">
              <a-input placeholder="请输入设备名称" v-model="queryParam.name"/>
            </a-form-item>
          </a-col>
          <a-col :md="3" :sm="3">
            <a-space>
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button @click="searchReset" icon="reload">重置</a-button>
            </a-space>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <!-- table区域-begin -->
    <div>
      <a-table bordered rowKey="id" :scroll="{  y: 300 }" :columns="columns" :customRow="customRow"
               :dataSource="dataSource" :pagination="ipagination" :loading="loading"
               :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
               @change="handleTableChange">
      </a-table>
    </div>
    <!-- table区域-end -->
  </a-modal>
</template>
<script>
  import { getAction } from '@/api/manage'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { filterObj } from '@/utils/util'
  export default {
    name: 'EamEquipmentListModal',
    mixins: [JeecgListMixin],
    data() {
      return {
        title: '选择设备',
        visible: false,
        disableMixinCreated: true,
        columns: [
          {
            title: '统一编码',
            align: 'center',
            dataIndex: 'num'
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'name'
          },
          {
            title: '使用部门',
            align: 'center',
            dataIndex: 'useId_dictText'
          },
          {
            title: '中心',
            align: 'center',
            dataIndex: 'workCenterId_dictText'
          },
          {
            title: '工区',
            align: 'center',
            dataIndex: 'factoryModelId_dictText'
          },
          {
            title: '工段',
            align: 'center',
            dataIndex: 'areaId_dictText'
          },
        ],
        url: {
          list: '/eam/equipment/getEquipmentTZList'
        }
      }
    },
    methods: {
      openPage() {
        this.visible = true
        this.onClearSelected()
        this.dataSource = []
        this.loadData(1)
      },
      getQueryParams() {
        //获取查询条件
        let sqp = {}
        if (this.superQueryParams) {
          sqp['superQueryParams'] = encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        const param = Object.assign(sqp, this.queryParam)
        param.pageNo = this.ipagination.current
        param.pageSize = this.ipagination.pageSize
        return filterObj(param)
      },
      loadData(arg) {
        if (!this.url.list) {
          this.$message.error('请设置url.list属性!')
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1
        }
        const params = this.getQueryParams()//查询条件
        if (!params) {
          return false
        }
        this.loading = true
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            this.dataSource = res.result.records || res.result
            if (res.result.total) {
              this.ipagination.total = res.result.total
            } else {
              this.ipagination.total = 0
            }
          } else {
            this.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        }).finally(() => {
          this.loading = false
        })
      },
      customRow(record) {
        return {
          style: {
            cursor: 'pointer'
          },
          on: {
            click: () => {
              this.onSelectChange([record.id], [record])
            }
          }
        }
      },
      modalFormOk(val) {
        // æ–°å¢ž/修改 æˆåŠŸæ—¶ï¼Œé‡è½½åˆ—è¡¨
        this.loadData()
        this.selectedRowKeys = [val.id]
      },
      searchQuery() {
        this.loadData()
        this.onClearSelected()
      },
      searchReset() {
        this.queryParam = {}
        this.loadData()
        this.onClearSelected()
      },
      close() {
        this.$emit('close')
        this.visible = false
      },
      handleCancel() {
        this.close()
      },
      handleOk() {
        this.$emit('sendSelectionRows', this.selectionRows[0])
        this.close()
      }
    }
  }
</script>
src/views/mdc/base/modules/EquipmentList/DeviceListModal.vue
@@ -30,10 +30,10 @@
      <!-- table区域-begin -->
      <div>
        <a-table ref="table" size="middle" bordered rowKey="id" :scroll="{  y: 300 }" :columns="columns"
        <a-table ref="table" size="middle" bordered rowKey="equipmentid" :scroll="{  y: 300 }" :columns="columns"
                 :dataSource="dataSource" :pagination="ipagination" :loading="loading"
                 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
                 @change="handleTableChange">
                 @change="handleTableChange" :customRow="customRow">
        </a-table>
      </div>
      <!-- table区域-end -->
@@ -59,7 +59,7 @@
  import Tooltip from 'ant-design-vue/es/tooltip'
  import JDate from '@/components/jeecg/JDate'
  import moment from 'moment'
  import { filterObj } from '@/utils/util';
  import { filterObj } from '@/utils/util'
  export default {
    name: 'DeviceListModel',
@@ -79,24 +79,24 @@
    },
    data() {
      return {
        title:'',
        title: '',
        visible: false,
        disableMixinCreated: true,
        queryParam: {},
        columns: [{
          title: '统一编码',
          align: 'center',
          dataIndex: 'equipmentid',
          dataIndex: 'equipmentid'
        },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentname',
            dataIndex: 'equipmentname'
          },
          {
            title: '设备型号',
            align: 'center',
            dataIndex: 'equipmentmodel',
            dataIndex: 'equipmentmodel'
          },
          // {
          //   title: '设备类型',
@@ -106,27 +106,27 @@
          {
            title: '机床IP',
            align: 'center',
            dataIndex: 'equipmentip',
            dataIndex: 'equipmentip'
          },
          {
            title: '驱动类型',
            align: 'center',
            dataIndex: 'drivetype',
            dataIndex: 'drivetype'
          },
          {
            title: '端口',
            align: 'center',
            dataIndex: 'dataport',
            dataIndex: 'dataport'
          },
          {
            title: '数控系统',
            align: 'center',
            dataIndex: 'controlsystem',
            dataIndex: 'controlsystem'
          }
        ],
        url: {
          list: '/mdc/equipment/list',
        },
          list: '/mdc/equipment/list'
        }
      }
    },
@@ -137,23 +137,23 @@
      openPage() {
        this.visible = true
        this.onClearSelected()
        this.dataSource = [];
        this.dataSource = []
        // this.queryParam = {
        //   status: this.status
        // };
        this.loadData();
        this.loadData()
      },
      getQueryParams() {
        //获取查询条件
        let sqp = {}
        if(this.superQueryParams){
          sqp['superQueryParams']=encodeURI(this.superQueryParams)
        if (this.superQueryParams) {
          sqp['superQueryParams'] = encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        var param = Object.assign(sqp, this.queryParam);
        var param = Object.assign(sqp, this.queryParam)
        // param.field = this.getQueryField();
        param.pageNo = this.ipagination.current;
        param.pageSize = this.ipagination.pageSize;
        param.pageNo = this.ipagination.current
        param.pageSize = this.ipagination.pageSize
        //获取用户定制的参数属性
        // if (this.getCustomQueryParams) {
        //   param = this.getCustomQueryParams(param);
@@ -162,42 +162,41 @@
        //   }
        // }
        return filterObj(param);
        return filterObj(param)
      },
      loadData(arg) {
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
        if (!this.url.list) {
          this.$message.error('请设置url.list属性!')
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1;
          this.ipagination.current = 1
        }
        var params = this.getQueryParams();//查询条件
        var params = this.getQueryParams()//查询条件
        if(!params){
          return false;
        if (!params) {
          return false
        }
        this.loading = true;
        this.loading = true
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            // console.log(res)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            this.dataSource = res.result.records || res.result
            if (res.result.total) {
              this.ipagination.total = res.result.total
            } else {
              this.ipagination.total = 0
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
          } else {
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
              message: '消息',
              description: res.message
            })
          }
        }).finally(() => {
          this.loading = false
@@ -211,18 +210,31 @@
        // });
        // return str;
      },
      customRow(record) {
        return {
          style: {
            cursor: 'pointer'
          },
          on: {
            click: () => {
              console.log('触发点击')
              this.onSelectChange([record.equipmentid], [record])
            }
          }
        }
      },
      modalFormOk(val) {
        // æ–°å¢ž/修改 æˆåŠŸæ—¶ï¼Œé‡è½½åˆ—è¡¨
        this.loadData();
        this.selectedRowKeys = [val.id];
        this.loadData()
        this.selectedRowKeys = [val.id]
      },
      searchQuery() {
        this.loadData();
        this.loadData()
        this.onClearSelected()
      },
      searchReset() {
        this.queryParam = {}
        this.loadData();
        this.loadData()
        this.onClearSelected()
      },
      close() {
@@ -235,8 +247,8 @@
      handleOk() {
        this.$emit('sendSelectionRows', this.selectionRows[0])
        this.close()
      },
    },
      }
    }
  }
</script>
<style>
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
@@ -39,26 +39,12 @@
            </a-col>
            <a-col :md="6" :sm="6">
              <a-form-item label="时间">
                <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"
                <a-range-picker @change="dateParamChange" :disabledDate="disabledDate"
                                @calendarChange="handleCalendarChange" @openChange="handleCalendarOpenChange"
                                format="YYYYMMDD" v-model="dates"
                                :allowClear="false"/>
              </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
@@ -113,7 +99,9 @@
                  <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" @click="handleShowFeedbackModal" icon="plus" v-has="'EfficiencyPO:feedback'">异常反馈</a-button>
                  <a-button type="primary" @click="handleShowFeedbackModal" icon="plus" v-has="'EfficiencyPO:feedback'">
                    å¼‚常反馈
                  </a-button>
                  <a-button type="primary" icon="printer" v-print="'#EfficiencyPO'"
                            v-has="'EfficiencyPO:print'">打印
                  </a-button>
@@ -268,7 +256,7 @@
        queryParams: {
          equipmentType: [],
          driveType: [],
          deviceLevel: [],
          deviceLevel: []
        },
        queryParamEquip: {},
        queryParamPeople: {},
@@ -291,7 +279,8 @@
        tableHeads: [],
        spinning: false,
        toggleSearchStatus: false,
        modalVisible: false// å¼‚常反馈弹窗是否弹出
        modalVisible: false,// å¼‚常反馈弹窗是否弹出
        preSelectFirstDate: null
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -447,7 +436,6 @@
      },
      // åˆå¹¶
      combineCell() {
        console.log(this.dataList)
        let list = this.dataList
        for (let field in list[0]) {
          var k = 0
@@ -469,10 +457,37 @@
        }
        return list
      },
      disabledDate(current) {
        //Can not slect days before today and today
        return current && current > moment().subtract('days', 1)
      /**
       * æ—¶é—´é€‰æ‹©å™¨é¢æ¿ä¸Šçš„值发生改变时触发
       * @param dates é¢æ¿ä¸Šçš„两个值组成的数组
       */
      handleCalendarChange(dates) {
        if (dates.length === 1) this.preSelectFirstDate = dates[0]
      },
      /**
       * æŽ§åˆ¶æ—¶é—´é€‰æ‹©å™¨é¢æ¿å¼€å¯ä¸Žå…³é—­
       * @param status å¼€å¯çŠ¶æ€
       */
      handleCalendarOpenChange(status) {
        if (status) this.preSelectFirstDate = null
      },
      /**
       * é¢æ¿ä¸Šç¦æ­¢é€‰æ‹©çš„æ—¥æœŸ
       * @param current ç¦æ­¢çš„æ—¶é—´èŒƒå›´
       */
      disabledDate(current) {
        if (!this.preSelectFirstDate) {
          return current > moment().startOf('days')
        } else {
          return current < moment(this.preSelectFirstDate).subtract(365, 'days').startOf('days')
            || current > moment().startOf('days')
            || current > moment(this.preSelectFirstDate).add(365, 'days').endOf('days')
        }
      },
      initDeviceType(deviceList) {
        let dictCode = 'mdc_equipmentType'
        let items = []
@@ -521,19 +536,8 @@
      dateParamChange(v1, v2) {
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
        // ç‚¹å‡»æ—¶é—´é€‰æ‹©å™¨çš„æ¸…空按钮时会触发此判断(点击重置按钮不会触发),实现重置列表功能,切实改变列表显示效果
        if (!this.queryParam.startTime && !this.queryParam.endTime) this.searchReset()
      },
      efficiencyOptionsOnChange(checkedList) {
        // let index = checkedList.indexOf('lyl')
        // if (index < 0) {
        //   // this.$message.warn('不能取消查询利用率')
        //   this.$notification.warning({
        //     message:'消息',
        //     description:"不能取消查询利用率"
        //   })
        //   return false
        // }
        this.checkedList = checkedList
      },
      searchQuery() {
@@ -568,7 +572,7 @@
        this.queryParams = {
          equipmentType: [],
          driveType: [],
          deviceLevel: [],
          deviceLevel: []
        }
        this.loadData()
      },
@@ -578,7 +582,6 @@
        this.dataList = []
        getAction(this.url.list, this.queryParam).then(res => {
          if (res.success) {
            // console.log(res.result)
            this.tableHeads = res.result.dates
            this.dataList = res.result.mdcEfficiencyList
            if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) {
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -38,7 +38,9 @@
          </a-col>
          <a-col :md="6" :sm="6">
            <a-form-item label="时间">
              <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD"
              <a-range-picker @change="dateParamChange" :disabledDate="disabledDate"
                              @calendarChange="handleCalendarChange" @openChange="handleCalendarOpenChange"
                              format="YYYYMMDD"
                              v-model="dates" :allowClear="false"/>
            </a-form-item>
          </a-col>
@@ -95,8 +97,10 @@
                <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" @click="exportOneYearExcel('设备TEEP')" icon="download">大数据导出</a-button>-->
                <a-button type="primary" @click="handleShowFeedbackModal" icon="plus" v-has="'efficiency:feedback'">异常反馈</a-button>
                <a-button type="primary" @click="exportLongTimeExcel('设备TEEP')" icon="download">大数据导出</a-button>
                <a-button type="primary" @click="handleShowFeedbackModal" icon="plus" v-has="'efficiency:feedback'">
                  å¼‚常反馈
                </a-button>
                <a-button type="primary" icon="printer" v-print="'#Efficiency'"
                          v-has="'efficiency:print'">打印
                </a-button>
@@ -275,7 +279,7 @@
          list: '/mdc/efficiencyReport/efficiencyList',
          listByType: '/mdc/MdcUtilizationRate/getByType',
          queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType',
          exportOneYearXlsUrl: ''
          exportLongTimeXlsUrl: '/mdc/efficiencyReport/exportEfficiencyXls'
        },
        tableHeads: [],
        utilizationRateRowAverage: '',
@@ -289,7 +293,8 @@
        requestAllDataSize: 8,// æ€»å…±è¯·æ±‚的列表项数目(默认值为默认日期的差值+1)
        everyRequestDataSize: 15,// æ¯æ¬¡è¯·æ±‚的列表项数目
        toggleSearchStatus: false,
        modalVisible: false// å¼‚常反馈弹窗是否弹出
        modalVisible: false,// å¼‚常反馈弹窗是否弹出
        preSelectFirstDate: null
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -469,10 +474,42 @@
        }
        return list
      },
      disabledDate(current) {
        //Can not slect days before today and today
        return current && current > moment().subtract('days', 1)
      dateParamChange(v1, v2) {
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
      },
      /**
       * æ—¶é—´é€‰æ‹©å™¨é¢æ¿ä¸Šçš„值发生改变时触发
       * @param dates é¢æ¿ä¸Šçš„两个值组成的数组
       */
      handleCalendarChange(dates) {
        if (dates.length === 1) this.preSelectFirstDate = dates[0]
      },
      /**
       * æŽ§åˆ¶æ—¶é—´é€‰æ‹©å™¨é¢æ¿å¼€å¯ä¸Žå…³é—­
       * @param status å¼€å¯çŠ¶æ€
       */
      handleCalendarOpenChange(status) {
        if (status) this.preSelectFirstDate = null
      },
      /**
       * é¢æ¿ä¸Šç¦æ­¢é€‰æ‹©çš„æ—¥æœŸ
       * @param current ç¦æ­¢çš„æ—¶é—´èŒƒå›´
       */
      disabledDate(current) {
        if (!this.preSelectFirstDate) {
          return current > moment().startOf('days')
        } else {
          return current < moment(this.preSelectFirstDate).subtract(365, 'days').startOf('days')
            || current > moment().startOf('days')
            || current > moment(this.preSelectFirstDate).add(365, 'days').endOf('days')
        }
      },
      exportExcel() {
        $('#Efficiency').table2excel({
          exclude: '.noExl',
@@ -484,10 +521,14 @@
          exclude_inputs: false
        })
      },
      exportOneYearExcel(fileName) {
      exportLongTimeExcel(fileName) {
        // let param = this.getQueryParams()
        // console.log('导出参数', param)
        downFile(this.url.exportOneYearXlsUrl)
        const param = {
          startTime: moment(this.dates[0]).format('YYYYMMDD'),
          endTime: moment(this.dates[1]).format('YYYYMMDD')
        }
        downFile(this.url.exportLongTimeXlsUrl, param)
          .then((data) => {
            if (!data) {
              this.$notification.warning({
@@ -517,11 +558,6 @@
            this.identifying = res.result
          }
        })
      },
      dateParamChange(v1, v2) {
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
        this.dates = [v1[0], v1[1]]
      },
      efficiencyOptionsOnChange(checkedList) {
        this.checkedList = checkedList
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
@@ -40,7 +40,9 @@
              </a-col>
              <a-col :md="4" :sm="4" :xs="4">
                <a-form-item label="时间">
                  <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD"
                  <a-range-picker @change="dateParamChange" :disabledDate="disabledDate"
                                  @calendarChange="handleCalendarChange" @openChange="handleCalendarOpenChange"
                                  format="YYYYMMDD"
                                  v-model="dates" :allowClear="false"/>
                </a-form-item>
              </a-col>
@@ -77,22 +79,6 @@
            </a-row>
            <a-row :gutter="24" v-if="toggleSearchStatus">
              <!--              <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
@@ -133,7 +119,9 @@
                    <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" @click="handleShowFeedbackModal" icon="plus" v-has="'efficiencyShiftReport:feedback'">异常反馈</a-button>
                    <a-button type="primary" @click="handleShowFeedbackModal" icon="plus"
                              v-has="'efficiencyShiftReport:feedback'">异常反馈
                    </a-button>
                    <a-button type="primary" icon="printer" v-print="'#EfficiencyShift'"
                              v-has="'efficiencyShiftReport:print'">打印
                    </a-button>
@@ -320,7 +308,8 @@
        shiftSubList: [],
        spinning: false,
        toggleSearchStatus: false,
        modalVisible: false// å¼‚常反馈弹窗是否弹出
        modalVisible: false,// å¼‚常反馈弹窗是否弹出
        preSelectFirstDate: null
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -500,10 +489,37 @@
        }
        return list
      },
      disabledDate(current) {
        //Can not slect days before today and today
        return current && current > moment().subtract('days', 1)
      /**
       * æ—¶é—´é€‰æ‹©å™¨é¢æ¿ä¸Šçš„值发生改变时触发
       * @param dates é¢æ¿ä¸Šçš„两个值组成的数组
       */
      handleCalendarChange(dates) {
        if (dates.length === 1) this.preSelectFirstDate = dates[0]
      },
      /**
       * æŽ§åˆ¶æ—¶é—´é€‰æ‹©å™¨é¢æ¿å¼€å¯ä¸Žå…³é—­
       * @param status å¼€å¯çŠ¶æ€
       */
      handleCalendarOpenChange(status) {
        if (status) this.preSelectFirstDate = null
      },
      /**
       * é¢æ¿ä¸Šç¦æ­¢é€‰æ‹©çš„æ—¥æœŸ
       * @param current ç¦æ­¢çš„æ—¶é—´èŒƒå›´
       */
      disabledDate(current) {
        if (!this.preSelectFirstDate) {
          return current > moment().startOf('days')
        } else {
          return current < moment(this.preSelectFirstDate).subtract(365, 'days').startOf('days')
            || current > moment().startOf('days')
            || current > moment(this.preSelectFirstDate).add(365, 'days').endOf('days')
        }
      },
      initDeviceType(deviceList) {
        let dictCode = 'mdc_equipmentType'
        let items = []
@@ -575,8 +591,6 @@
      dateParamChange(v1, v2) {
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
        // ç‚¹å‡»æ—¶é—´é€‰æ‹©å™¨çš„æ¸…空按钮时会触发此判断(点击重置按钮不会触发),实现重置列表功能,切实改变列表显示效果
        // if(!this.queryParam.startTime&&!this.queryParam.endTime)this.searchReset()
      },
      efficiencyOptionsOnChange(checkedList) {
        this.checkedList = checkedList
@@ -595,7 +609,6 @@
          if (this.queryParams[item].length === 0) delete this.queryParam[item]
        })
        this.loadData()
        // this.onClearSelected()
      },
      searchReset() {
        this.typeTree = this.queryParam.typeTree