qushaowei
2024-01-26 5a74ff63f47921f97b6c3c35751b24b085a1a78c
Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop
已添加1个文件
已修改13个文件
675 ■■■■■ 文件已修改
src/views/WorkshopSignage.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/DeviceBaseInfo.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/EquipmentOperationParamsAlarm.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementList.vue 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalEdit.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/deviceBaseInfo/EquipmentList.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/WorkshopSignage.vue
@@ -37,6 +37,7 @@
          v-on:resizing="resize($event, index)"
          v-on:dragging="resize($event, index)"
          :parentLimitation="parentLimitation"
          :parentH="parentH"
          :minw="70"
          :minh="70"
          :isDraggable="isDraggable"
@@ -108,6 +109,7 @@
        isResizable: false, // æ˜¯å¦å¼€å¯ç¼©æ”¾
        isSwitchChecked: false, // æ˜¯å¦å¼€å¯åŠŸèƒ½
        timingAcquisition: null, // å®šæ—¶åˆ·æ–°æ˜¯å¦å¼€å¯
        parentH: 5000,//父级高度
        deviceList: [
          // {
          //   equipmentId: '123213213123232',// è®¾å¤‡ID
@@ -190,6 +192,7 @@
          )})`
          this.$refs.deviceContainerRef.style.height = (this.windowHeight - this.pageHeaderHeight) + 'px'
          this.parentH = this.windowHeight - this.pageHeaderHeight
          this.parentLimitation = true // åœ¨çˆ¶å…ƒç´ é«˜åº¦è®¾ç½®åŽå†è®¾ç½®é™åˆ¶æ‹–拽区域,不这样有概率导致父元素高度未设置就限制拖拽
        })
      },
@@ -277,7 +280,6 @@
      openDetail(item) {
        if (!this.isSwitchChecked) {
          if (item.equipmentStatus == 0) {
            // this.$message.warn("设备处于关机状态!");
            this.$message.warning('设备处于关机状态!')
            return false
          }
@@ -295,7 +297,8 @@
       * æµè§ˆå™¨å°ºå¯¸å‘生改变时触发
       */
      handleWindowSizeChange() {
        if (this.isFullScreen) location.reload() // å¦‚果页面进入时为全屏模式,则在切换模式时重新加载页面以重新获取浏览器可视区域高度
        this.isFullScreen = !this.isFullScreen
        if (!this.isFullScreen) location.reload() // å¦‚果为全屏模式,则在切换模式时重新加载页面以重新获取浏览器可视区域高度
      }
    },
    created() {
@@ -359,10 +362,6 @@
        justify-content: space-between;
        .single-status-info {
          /*width: 70px;*/
          /*display: flex;*/
          /*align-items: center;*/
          /*justify-content: space-between;*/
          .status-square {
            width: 14px;
@@ -376,8 +375,6 @@
    .content-container {
      width: 100%;
      /*height: calc(100% - 200px);*/
      /*height: 100%;*/
      background-repeat: no-repeat;
      background-size: 100% 100%;
src/views/mdc/base/DeviceBaseInfo.vue
@@ -36,7 +36,7 @@
              <equipment-layout :dataList="dataList" :equipmentId="selectEquementId" :node="selectEquement"></equipment-layout>
            </a-tab-pane>
            <a-tab-pane key="2" tab="列表" force-render>
              <equipment-list :dataSource="dataList"></equipment-list>
              <equipment-list :dataSource="dataList" @editEquipmentStatus="editEquipmentStatus"></equipment-list>
            </a-tab-pane>
          </a-tabs>
        </div>
@@ -81,8 +81,10 @@
        workNumber: 0,
        allNumber: 0,
        url: {
          list: '/mdc/mdcEquipment/queryEquipmentMonitorList'
          list: '/mdc/mdcEquipment/queryEquipmentMonitorList',
          updateEquipmentStatus:'/mdc/mdcEquipment/updateEquipmentStatus'
        },
        param:{},
        timer:null,
        timerzhun:null
      }
@@ -92,7 +94,7 @@
      // setInterval(this.equipmentStatistics(), 5*1000);
    },
    methods: {
      equipmentStatistics(param) {
      equipmentStatistics(param,resopnse={key:false}) {
        getAction(this.url.list, param).then((res) => {
          this.dataList = []
          if (res.success) {
@@ -105,6 +107,13 @@
              this.dataList = res.result
              // console.log(this.dataList)
              this.allNumber = this.dataList.length
              if(resopnse.key){
                this.$notification.success({
                  key:'equipmentStatus',
                  message: '消息',
                  description: resopnse.message,
                });
              }
              for (let i = 0; i < this.dataList.length; i++) {
                let item = this.dataList[i]
                switch (item.oporationDict) {
@@ -140,24 +149,54 @@
        this.selectEquement = val.equipmentId
        clearInterval(this.timer);
        this.timer = null
        let param = {}
        if (!val.equipmentId) {
          param.key = val.key
          this.param.key=val.key
          clearInterval(this.timerzhun);
          this.timerzhun = null
          this.equipmentStatistics(param)
          this.equipmentStatistics(this.param)
          this.timer = setInterval(() => {
            setTimeout( this.equipmentStatistics(param),0)
            setTimeout( this.equipmentStatistics(this.param),0)
          },1000*10)
        }else{
          param.key = val.parentId
          this.param.key=val.parentId
          clearInterval(this.timerzhun);
          this.timerzhun = null
          this.equipmentStatistics(param)
          this.equipmentStatistics(this.param)
          this.timer = setInterval(() => {
            setTimeout( this.equipmentStatistics(param),0)
            setTimeout( this.equipmentStatistics(this.param),0)
          },1000*10)
        }
      },
      /**
       * å•击状态反馈后触发
       * @param record
       */
      editEquipmentStatus(record){
        console.log('子组件record',record.id)
        const _this=this
        this.$notification.info({
          key:'equipmentStatus',
          message: '消息',
          description: '反馈中...',
        });
        getAction(this.url.updateEquipmentStatus,{id:record.id})
          .then(res=>{
            if(res.success) {
              _this.equipmentStatistics(this.param,{key:true,message:res.message})
            }else{
              this.$notification.warning({
                message:'消息',
                description:res.message
              });
            }
          })
          .catch(err=>{
            this.$notification.error({
              message:'消息',
              description:err.message
            });
          })
      }
    },
    mounted(){
src/views/mdc/base/EquipmentOperationParamsAlarm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="6" :sm="12">
            <a-form-item label="设备编号">
              <a-input placeholder="请输入设备编号" v-model="queryParam.equipmentid"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
            <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <a-table
      ref="table"
      bordered
      size="middle"
      rowKey="equipmentid"
      :scroll="{x:'max-content',y:600}"
      :columns="columns"
      :dataSource="dataSource"
      :pagination="ipagination"
      :loading="loading"></a-table>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  export default {
    name: 'EquipmentOperationParamsAlarm',
    mixins: [JeecgListMixin],
    data() {
      return {
        name: 'EquipmentOperationParamsAlarm',
        description: '这是设备运行参数报警页面',
        queryParam: {},
        columns: [
          {
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
            }
          },
          {
            title: '设备编号',
            align: 'center',
            dataIndex: 'equipmentid',
            width: 250
          },
          {
            title: '报警时间',
            align: 'center',
            dataIndex: 'collecttime',
            width: 250
          },
          {
            title: '设定值',
            align: 'center',
            width: 250,
            dataIndex: 'setvalue'
          },
          {
            title: '实际值',
            align: 'center',
            width: 250,
            dataIndex: 'realvalue'
          },
          {
            title: '报警号',
            align: 'center',
            width: 250,
            dataIndex: 'alarmno'
          },
          {
            title: '报警内容',
            align: 'center',
            width: 250,
            dataIndex: 'alarmcontent'
          }
        ],
        url: {
          list: '/mdc/equipmentBeilvAlarm/list'
        },
        /* æŽ’序参数 */
        isorter: {
          column: 'collecttime',
          order: 'desc'
        }
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less'
</style>
src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue
@@ -41,23 +41,23 @@
      </div>
      <div class="container" id="EfficiencyShift" style="flex:1;overflow: hidden">
        <a-table :columns="columns"  rowKey="equipmentId" :dataSource="dataSource.records" :scroll="{x:'max-content',y:scrollY}" :pagination="false" bordered>
        <a-table :columns="columns"  rowKey="equipmentId" :dataSource="dataSource" :scroll="{x:'max-content',y:scrollY}" :pagination="false" bordered>
          <span slot="duration" slot-scope="text">{{getFormattedTime(text)}}</span>
        </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 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>
@@ -95,7 +95,7 @@
            title: '序号',
            dataIndex: '',
            key: 'rowIndex',
            width: 70,
            width: 60,
            align: 'center',
            customRender: function(t, r, index) {
              return parseInt(index) + 1
@@ -106,18 +106,18 @@
            title: '设备统一编号',
            align: 'center',
            dataIndex: 'equipmentId',
            width: 120
            width: 200
          },
          {
            title: '设备名称',
            align: 'center',
            width: 150,
            width: 200,
            dataIndex: 'equipmentName'
          },
          {
            title: '驱动类型',
            align: 'center',
            width: 110,
            width: 100,
            dataIndex: 'driveType'
          },
          {
@@ -129,7 +129,7 @@
          {
            title: '加工件数',
            align: 'center',
            width: 80,
            width: 100,
            dataIndex: 'processCount'
          },
          {
@@ -137,14 +137,14 @@
            dataIndex: 'duration',
            align: 'center',
            scopedSlots: { customRender: 'duration' },
            width: 110
            width: 150
          },
          {
            title: '日期',
            dataIndex: 'theDate',
            align: 'center',
            width: 110
          }
          // {
          //   title: '日期',
          //   dataIndex: 'theDate',
          //   align: 'center',
          //   width: 110
          // }
        ],
        dataSource: [],
        driveTypeList: [],
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementList.vue
@@ -6,7 +6,7 @@
        <a-row :gutter="24">
          <a-col :md="7" :sm="7">
            <a-form-item label="时间">
              <a-range-picker @change="dateParamChange" v-model="dates"  format="YYYY-MM-DD HH:mm:ss"/>
              <a-range-picker @change="dateParamChange" v-model="dates"  format="YYYYMMDD"/>
            </a-form-item>
          </a-col>
          <a-col :md="5" :sm="5">
@@ -79,6 +79,9 @@
        </span>
        <span slot="model" slot-scope="text" style="font-weight: bold">
          <j-ellipsis :value="text" :length="8"/>
        </span>
        <span slot="duration" slot-scope="text">
          {{text|getFormattedTime}}
        </span>
      </a-table>
    </div>
@@ -163,25 +166,25 @@
          {
            title: '日期',
            align: 'center',
            dataIndex: 'effectiveDate',
            dataIndex: 'theDate',
            width:150
            // scopedSlots:{customRender:'startTime'},
            // customRender:(text,row,index) => {
            //   return moment(text).format("YYYY-MM-DD HH:mm:ss")
            // }
          },
          {
            title: '班次开始时间',
            align: 'center',
            dataIndex: 'startDate',
            width:150
          },
          {
            title: '班次结束时间',
            align: 'center',
            dataIndex: 'endDate',
            width:150
          },
          // {
          //   title: '班次开始时间',
          //   align: 'center',
          //   dataIndex: 'startDate',
          //   width:150
          // },
          // {
          //   title: '班次结束时间',
          //   align: 'center',
          //   dataIndex: 'endDate',
          //   width:150
          // },
          {
            title: '加班开始时间',
            align: 'center',
@@ -195,10 +198,17 @@
            width:150
          },
          {
            title: '加班时长',
            align: 'center',
            dataIndex: 'duration',
            scopedSlots: {customRender: 'duration'},
            width:200
          },
          {
            title: '备注',
            align: 'center',
            dataIndex: 'remark',
            width:150
            width:210
          },
          {
            title: '操作',
@@ -257,6 +267,36 @@
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    filters:{
      /**
       * æ ¼å¼åŒ–æ—¶é—´
       * @param seconds ç§’æ•°
       * @returns '' æ ¼å¼åŒ–后时间字符串
       */
      getFormattedTime(seconds) {
        var hours = Math.floor(seconds / 3600)
        var minutes = Math.floor((seconds % 3600) / 60)
        var secs = seconds % 60
        if (hours === 0) {
          if (minutes === 0) {
            return secs === 0 ? 0 : `${secs}秒`
          } else {
            if (secs === 0) {
              return `${minutes}分`
            }
            return `${minutes}分 ${secs}秒`
          }
        } else {
          if (minutes === 0 && secs === 0) {
            return `${hours}小时`
          } else if (minutes !== 0 && secs === 0) {
            return `${hours}小时 ${minutes}分`
          }
        }
        return `${hours}小时 ${minutes}分 ${secs}秒`
      }
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue
@@ -4,10 +4,22 @@
    <a-spin :spinning="confirmLoading">
      <a-form :form="form">
        <a-row :gutter="24">
          <a-col :span="24">
            <a-form-item label="班次选择" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['calendarId', validatorRules.calendarId]"
                              @search="deviceSearch" enter-button/>
          <!--<a-col :span="24">-->
            <!--<a-form-item label="班次选择" :labelCol="labelColLong" :wrapperCol="wrapperColLong">-->
              <!--<a-input-search :readOnly="true" v-decorator="['calendarId', validatorRules.calendarId]"-->
                              <!--@search="deviceSearch" enter-button/>-->
            <!--</a-form-item>-->
          <!--</a-col>-->
          <a-col :span="12">
            <a-form-item label="设备组" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input-search :readOnly="true" v-decorator="['equipmentId', validatorRules.equipmentId]"
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-date-picker :disabled="disableSubmit" :readOnly="disableSubmit"
                             v-decorator="['theDate',validatorRules.theDate]" format="YYYYMMDD" valueFormat="YYYYMMDD" style="width: 100%" placeholder="请选择加班日期"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -15,27 +27,27 @@
          <a-col :span="12">
            <a-form-item label="加班开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-time-picker :disabled="disableSubmit" :readOnly="disableSubmit" allow-clear
                             v-decorator="['startTime',validatorRules.startTime]"  valueFormat="HH:mm:ss"/>
                             v-decorator="['startTime',validatorRules.startTime]"  valueFormat="HH:mm:ss" style="width: 100%"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="加班结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-time-picker :disabled="disableSubmit" :readOnly="disableSubmit"
                             v-decorator="['endTime',validatorRules.endTime]" valueFormat="HH:mm:ss"/>
                             v-decorator="['endTime',validatorRules.endTime]" valueFormat="HH:mm:ss" style="width: 100%"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="24">
          <a-form-item label="备注" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
            <a-textarea :maxLength="20"  v-decorator="['remark', validatorRules.remark]" placeholder="请输入备注"  ></a-textarea>
            <a-textarea :maxLength="20"  v-decorator="['remark', validatorRules.remark]" placeholder="请输入备注"></a-textarea>
          </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </a-spin>
    <torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list>
    <!--<torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list>-->
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
@@ -52,10 +64,11 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'TorqueconfigurationModal',
    components: {TorqueconfigurationModalList},
    components: { SelectDeviceModal, TorqueconfigurationModalList},
    props: {},
    data() {
      return {
@@ -103,7 +116,7 @@
        confirmLoading: false,
        form: this.$form.createForm(this),
        validatorRules: {
          equipmentIds:{
          equipmentId:{
            rules:[
              {
                required:true,
@@ -111,11 +124,19 @@
              },
            ],
          },
          calendarId:{
          // calendarId:{
          //   rules:[
          //     {
          //       required:true,
          //       message: "请选择班次"
          //     },
          //   ],
          // },
          theDate:{
            rules:[
              {
                required:true,
                message: "请选择班次"
                message: "请选择加班日期"
              },
            ],
          },
@@ -169,32 +190,33 @@
      onChangeEnd(dates, dateStrings){
        this.endTime = dateStrings[0];
      },
      getDeviceRows(val) {
        var calendarId;
        for(var i = 0;i<val.length;i++){
          if (i == 0) {
            calendarId =  val[i].id;
          } else {
            calendarId = calendarId + "," + val[i].id;
          }
        }
        // console.log("========",equipmentIds);
        this.form.setFieldsValue({
          calendarId: calendarId,
        })
        //   this.form.setFieldsValue({
        // equipmentId: val.equipmentId,
        // equipmentName: val.equipmentName,
        // equipmentModel: val.equipmentModel,
        // equipmentIp: val.equipmentIp,
        // dataPort: val.dataPort,
        // driveType: val.driveType
        // })
      },
      // getDeviceRows(val) {
      //   var calendarId;
      //   for(var i = 0;i<val.length;i++){
      //     if (i == 0) {
      //       calendarId =  val[i].id;
      //     } else {
      //       calendarId = calendarId + "," + val[i].id;
      //     }
      //   }
      //   // console.log("========",equipmentIds);
      //   this.form.setFieldsValue({
      //     calendarId: calendarId,
      //   })
      //   //   this.form.setFieldsValue({
      //   // equipmentId: val.equipmentId,
      //   // equipmentName: val.equipmentName,
      //   // equipmentModel: val.equipmentModel,
      //   // equipmentIp: val.equipmentIp,
      //   // dataPort: val.dataPort,
      //   // driveType: val.driveType
      //   // })
      // },
      deviceSearch() {
        this.$refs.deviceRepairListModel.openPage()
        this.$refs.deviceRepairListModel.title = '选择设备'
        this.$refs.deviceRepairListModel.disableSubmit = false
        this.$refs.selectDeviceModal.visible = true
        this.$refs.selectDeviceModal.selectedRowKeys = []
        this.$refs.selectDeviceModal.selectedRows = []
        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -227,7 +249,7 @@
        this.model = Object.assign({}, record)
        this.visible = true
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model, 'equipmentIds', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime',
          this.form.setFieldsValue(pick(this.model, 'equipmentId', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime',
          ))
        })
      },
@@ -322,6 +344,22 @@
      },
      checkboxChange(e) {
        this.checked = e.target.checked
      },
      /**
       * é€‰æ‹©å·²æœ‰è®¾å¤‡åŽç‚¹å‡»ç¡®å®šæ—¶è§¦å‘
       * @param data å·²é€‰æ‹©çš„设备
       */
      selectOK(data) {
        // let params = {}
        // params.equipmentIdList = []
        // for (var a = 0; a < data.length; a++) {
        //   params.equipmentIdList.push(data[a])
        // }
        console.log('data=', data)
        this.form.setFieldsValue({
          equipmentId: data.join(',')
        })
      }
    }
  }
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalEdit.vue
@@ -9,12 +9,11 @@
              <a-input :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备编号"
                       v-decorator="['equipmentId',validatorRules.equipmentId]"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="加班开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-time-picker :disabled="disableSubmit" :readOnly="disableSubmit"  @change="changeStartTime"
                             v-decorator="['startTime',validatorRules.startTime]"/>
                             v-decorator="['startTime',validatorRules.startTime]" style="width: 100%"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -25,17 +24,24 @@
                       v-decorator="['equipmentName',validatorRules.equipmentName]"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="加班结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-time-picker :disabled="disableSubmit" :readOnly="disableSubmit" @change="changeEndTime"
                             v-decorator="['endTime',validatorRules.endTime]"/>
                             v-decorator="['endTime',validatorRules.endTime]" style="width: 100%"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-date-picker :disabled="disableSubmit" :readOnly="disableSubmit"
                             v-decorator="['theDate',validatorRules.theDate]" format="YYYYMMDD" valueFormat="YYYYMMDD" style="width: 100%" placeholder="请选择加班日期"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-form-item label="备注" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
            <a-textarea :maxLength="20" :disabled="disableSubmit"  v-decorator="['remark', validatorRules.remark]" placeholder="请输入备注"  ></a-textarea>
            <a-textarea :maxLength="20" :disabled="disableSubmit"  v-decorator="['remark', validatorRules.remark]" placeholder="请输入备注"></a-textarea>
          </a-form-item>
        </a-row>
      </a-form>
@@ -62,6 +68,7 @@
  export default {
    name: 'TorqueconfigurationModalEdit',
    components: {  },
    // components: {DeviceRepairListModel,JDate,DeviceRepairEditListModel},
    props: {},
    data() {
@@ -141,6 +148,14 @@
              },
            ],
          },
          theDate:{
            rules:[
              {
                required:true,
                message: "请选择加班日期"
              },
            ],
          }
          // mdcRepairType:{
          //   rules:[
          //     {
@@ -264,7 +279,7 @@
        // this.editStart  = (this.model.startTime).replace(/:/g,'');
        this.visible = true
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model,'equipmentId', 'equipmentName','startTime', 'endTime','remark'
          this.form.setFieldsValue(pick(this.model,'equipmentId', 'equipmentName','startTime', 'endTime','theDate','remark'
          ))
          this.form.setFieldsValue({
            startTime: moment(this.model.startTime, 'HH:mm:ss'),
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue
@@ -150,7 +150,7 @@
            title: '设备编号',
            align: 'center',
            dataIndex: 'equipmentId',
            width:250
            width:200
          },
          {
            title: '设备名称',
@@ -177,10 +177,16 @@
            width:150
          },
          {
            title: '进给参数',
            align: 'center',
            dataIndex: 'feedParameter',
            width:150
          },
          {
            title: '备注',
            align: 'center',
            dataIndex: 'notes',
            width:350
            width:250
          },
          {
            title: '操作',
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
@@ -4,24 +4,29 @@
    <a-spin :spinning="confirmLoading">
      <a-form :form="form">
        <a-row :gutter="24">
          <a-col :span="24">
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
          <a-col :span="12">
            <a-form-item label="设备组" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间"
                      v-decorator="['torqueDate', validatorRules.torqueDate]" style="width: 100%"></j-date>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间"
                      v-decorator="['torqueDate', validatorRules.torqueDate]"></j-date>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="扭矩值" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input-number :min="0" :disabled="disableSubmit" placeholder="请输入扭矩值"
                              v-decorator="['torqueValue', validatorRules.torqueValue]"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="进给参数" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input placeholder="请输入进给参数" v-decorator="['feedParameter', validatorRules.feedParameter]"></a-input>
            </a-form-item>
          </a-col>
        </a-row>
@@ -127,6 +132,14 @@
                message: '请输入扭矩值'
              }
            ]
          },
          feedParameter:{
            rules:[
              {
                required:true,
                message:'请输入进给参数'
              }
            ]
          }
        },
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue
@@ -5,12 +5,12 @@
      <a-form :form="form">
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间"
                      class="query-group-cust" v-decorator="['torqueDate', validatorRules.torqueDate]"></j-date>
            <a-form-item label="设备编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备编号"
                       v-decorator="['equipmentId',validatorRules.equipmentId]"/>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="设备名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备名称"
@@ -20,16 +20,23 @@
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间"
                      class="query-group-cust" v-decorator="['torqueDate', validatorRules.torqueDate]" style="width: 100%"></j-date>
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item label="扭矩值" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input-number :min="0" :disabled="disableSubmit" placeholder="请输入扭矩值"
                       v-decorator="['torqueValue', validatorRules.torqueValue]"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="设备编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备编号"
                       v-decorator="['equipmentId',validatorRules.equipmentId]"/>
            <a-form-item label="进给参数" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input placeholder="请输入进给参数" v-decorator="['feedParameter', validatorRules.feedParameter]"></a-input>
            </a-form-item>
          </a-col>
        </a-row>
@@ -141,6 +148,14 @@
              },
            ],
          },
          feedParameter:{
            rules:[
              {
                required:true,
                message:'请输入进给参数'
              }
            ]
          }
          // mdcRepairType:{
          //   rules:[
          //     {
@@ -244,7 +259,7 @@
        // this.editStart  = (this.model.startTime).replace(/:/g,'');
        this.visible = true
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model,'equipmentId', 'equipmentName','torqueDate', 'torqueValue','notes'
          this.form.setFieldsValue(pick(this.model,'equipmentId', 'equipmentName','torqueDate', 'torqueValue','feedParameter','notes'
          ))
        })
      },
src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue
@@ -81,18 +81,18 @@
                title="基础信息"
                :column="4"
              >
                <a-descriptions-item label="设备编号">{{resultData.equipmentID}}</a-descriptions-item>
                <a-descriptions-item label="设备名称">{{resultData.equipmentName}}</a-descriptions-item>
                <a-descriptions-item label="IP地址">{{resultData.equipmentIP}}</a-descriptions-item>
                <a-descriptions-item label="端口号">{{resultData.dataPort}}</a-descriptions-item>
                <a-descriptions-item label="系统版本号">{{resultData.systemVersion}}</a-descriptions-item>
                <a-descriptions-item label="驱动类型">{{resultData.driveType}}</a-descriptions-item>
                <a-descriptions-item label="设备型号">{{resultData.equipmentModel}}</a-descriptions-item>
                <a-descriptions-item label="设备类型">{{resultData.deviceType}}</a-descriptions-item>
                <a-descriptions-item label="设备功率">{{resultData.devicePower}}</a-descriptions-item>
                <a-descriptions-item label="有效轴数">{{resultData.validAxis}}</a-descriptions-item>
                <a-descriptions-item label="最大轴数">{{resultData.maxAxis}}</a-descriptions-item>
                <a-descriptions-item label="备注">{{resultData.remark}}</a-descriptions-item>
                <a-descriptions-item label="设备编号">{{resultData.equipmentID|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="设备名称">{{resultData.equipmentName|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="IP地址">{{resultData.equipmentIP|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="端口号">{{resultData.dataPort|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="系统版本号">{{resultData.systemVersion|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="驱动类型">{{resultData.driveType|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="设备型号">{{resultData.equipmentModel|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="设备类型">{{resultData.deviceType|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="设备功率">{{resultData.devicePower|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="有效轴数">{{resultData.validAxis|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="最大轴数">{{resultData.maxAxis|formatDescriptionsItem}}</a-descriptions-item>
                <a-descriptions-item label="备注">{{resultData.remark|formatDescriptionsItem}}</a-descriptions-item>
              </a-descriptions>
              <!-- <a-descriptions
@@ -239,9 +239,9 @@
                >
                  <a-tooltip @mouseenter="mouseEnterItem">
                    <template slot="title">
                      {{item.value}}
                      {{item.value|formatDescriptionsItem}}
                    </template>
                    <div class="description-item-class">{{item.value}}</div>
                    <div class="description-item-class">{{item.value|formatDescriptionsItem}}</div>
                  </a-tooltip>
                </a-descriptions-item>
@@ -331,6 +331,11 @@
    },
    watch: {},
    filters:{
      formatDescriptionsItem(value){
        return value?value:'无'
      }
    },
    methods: {
      drawLine() {
        let _this = this
@@ -1423,10 +1428,7 @@
      },
      mouseEnterItem(e){
        console.log(e, e.target, e.target.clientWidth, e.target.scrollWidth)
        if (e.target.clientWidth >= e.target.scrollWidth) {
          e.target.style.pointerEvents = 'none' // é˜»æ­¢é¼ æ ‡äº‹ä»¶    pointer-events å±žæ€§ç”¨äºŽè®¾ç½®å…ƒç´ æ˜¯å¦å¯¹é¼ æ ‡äº‹ä»¶åšå‡ºååº”。
        }
        if (e.target.clientWidth >= e.target.scrollWidth)  e.target.style.pointerEvents = 'none' // é˜»æ­¢é¼ æ ‡äº‹ä»¶    pointer-events å±žæ€§ç”¨äºŽè®¾ç½®å…ƒç´ æ˜¯å¦å¯¹é¼ æ ‡äº‹ä»¶åšå‡ºååº”。
      }
    },
    beforeDestroy() {
@@ -1495,9 +1497,9 @@
    margin-bottom: 0;
  }
  /deep/ .ant-descriptions-view {
    padding: 0 20px;
  }
  /*/deep/ .ant-descriptions-view {*/
    /*padding: 0 20px;*/
  /*}*/
  /deep/ .ant-descriptions-view .ant-descriptions-row .ant-descriptions-item {
    padding-bottom: 5px;
@@ -1505,63 +1507,18 @@
  /deep/ .ant-descriptions-item-colon {
    color: #fff;
    width: 5.1vw;
    /*width: 5.1vw;*/
  }
  /deep/ .ant-descriptions-item-content {
    color: #fff;
    border: 1px solid #4bcfc8;
    padding: 0 10px;
    width: auto;
    min-width: 130px;
    /*max-width: 300px;*/
    height: 25px;
  }
  .mdcEquipMon {
    color: #fff;
  }
  fieldset {
    border: 1px solid #16738d;
    padding: 17px;
    margin: 14px;
  }
  fieldset legend {
    display: inline;
    width: 88px;
  }
  table tr td {
    text-align: left;
    color: #fff;
  }
  table tr td input {
    border: 1px solid #a6eff9;
  }
  .ant-btn {
    padding: 0 10px;
    margin-left: 3px;
    color: #fff !important;
    background-color: #1191b0;
    border: none;
  }
  .ant-form-item-control {
    line-height: 0px;
  }
  /** ä¸»è¡¨å•行间距 */
  .ant-form .ant-form-item {
    margin-bottom: 10px;
  }
  /** Tab页面行间距 */
  .ant-tabs-content .ant-form-item {
    margin-bottom: 0px;
  }
  /deep/ .ant-descriptions-item-label{
@@ -1574,7 +1531,7 @@
  .lsv2Data .ant-descriptions-item-content
  {
    width: 130px;
    overflow: hidden;
    vertical-align: bottom;
  }
  .description-item-class{
src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue
@@ -159,10 +159,10 @@
    },
    mounted() {
      this.drawWrin()
      window.addEventListener('resize',this.handleWindowResize)
      window.addEventListener('resize', this.handleWindowResize)
    },
    beforeDestroy(){
      window.removeEventListener('resize',this.handleWindowResize)
    beforeDestroy() {
      window.removeEventListener('resize', this.handleWindowResize)
    },
    watch: {
      Type(valmath) {
@@ -560,10 +560,10 @@
      handleExpandChange(expanded, record) {
        let _this = this
        // å½“展开时若该行未被展开过才会请求后台数据,展开过的数据会被缓存无需重复请求
        const param = Object.assign({ alarmCode: record.alarmCode }, this.queryParam)
        this.queryParam.alarmCode = record.alarmCode
        if (expanded && !this.hasRequsetAlarmCodeList.includes(record.alarmCode)) {
          this.innerDataLoading = true
          getAction(this.url.equipmentAlarmList, param).then(res => {
          getAction(this.url.equipmentAlarmList, this.queryParam).then(res => {
            if (res.success) {
              _this.dataList.forEach(item => {
                if (item.alarmCode === record.alarmCode) {
@@ -582,9 +582,9 @@
      /**
       * å½“浏览器可视窗口尺寸发生改变时触发
       */
      handleWindowResize(){
        if(this.equipmentWarningPie) this.equipmentWarningPie.resize()
        if(this.equipmentWarningLine) this.equipmentWarningLine.resize()
      handleWindowResize() {
        if (this.equipmentWarningPie) this.equipmentWarningPie.resize()
        if (this.equipmentWarningLine) this.equipmentWarningLine.resize()
      }
    }
  }
src/views/mdc/base/modules/deviceBaseInfo/EquipmentList.vue
@@ -57,16 +57,38 @@
      <a-table ref="table" bordered size="middle" rowKey="equipmentId" :columns="columns" :dataSource="dataSource"
               :pagination="false" :loading="loading" :scroll="{x:'max-content',y:scrollY}">
        <template slot="equipmentId" slot-scope="text, record">
          <div :style="{color:record.equipmentStatus!==0?'#f00':null}">{{text}}</div>
        </template>
        <template slot="equipmentName" slot-scope="text, record">
          <div :style="{color:record.equipmentStatus!==0?'#f00':null}">{{text}}</div>
        </template>
        <template slot="oporationDict" slot-scope="text, record">
          <div :style="{color:record.equipmentStatus!==0?'#f00':null}">{{text}}</div>
        </template>
        <template slot="equipmentStatus" slot-scope="text">
          <div :style="{color:text!==0?'#f00':null}">{{text===0?'正常':'异常'}}</div>
        </template>
        <template slot="collecttime" slot-scope="text, record">
          <div :style="{color:record.equipmentStatus!==0?'#f00':null}">{{text}}</div>
        </template>
        <template slot="action" slot-scope="text, record">
          <a-popconfirm title="确定反馈吗?" @confirm="$emit('editEquipmentStatus',record)" v-has="'deiveBaseInfo:responseStatus'">
            <a>状态反馈</a>
          </a-popconfirm>
        </template>
      </a-table>
    </div>
  </a-card>
</template>
<script>
  import { postAction } from '@/api/manage'
  export default {
    name: 'EquipmentLayout',
    components: {},
    components: {   },
    data() {
      return {
        loading:false,
@@ -78,19 +100,29 @@
            title: '设备ID',
            align: "center",
            dataIndex: 'equipmentId',
            width:250
            scopedSlots: {customRender: 'equipmentId'},
            width:210
          },
          {
            title: '设备名称',
            align: "center",
            dataIndex: 'equipmentName',
            scopedSlots: {customRender: 'equipmentName'},
            width:300
          },
          {
            title: '状态',
            align: "center",
            dataIndex: 'oporationDict',
            width:150
            scopedSlots: {customRender: 'oporationDict'},
            width:200
          },
          {
            title: '设备异常',
            align: "center",
            dataIndex: 'equipmentStatus',
            scopedSlots: {customRender: 'equipmentStatus'},
            width:200
          },
          {
            title: '采集时间',
@@ -98,8 +130,17 @@
            dataIndex: 'collecttime',
            defaultSortOrder:'descend',
            sorter: (a, b) => {return a.collecttime>b.collecttime?1:-1},
            scopedSlots: {customRender: 'collecttime'},
            width:350
          },
          {
            title: '操作',
            dataIndex: 'action',
            scopedSlots: {customRender: 'action'},
            align: "center",
            width: 150,
            fixed:'right'
          }
        ],
        scrollY:465,
      }
@@ -116,7 +157,7 @@
        const boxHeight = +window.getComputedStyle(document.getElementById('DeviceList')).height.slice(0,-2)
        const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0,-2)
        this.scrollY = boxHeight - tableHeadHeight
      }
      },
    },
    mounted(){
      window.addEventListener('resize',this.handleWindowResize)
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -27,6 +27,7 @@
                  <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="'#Efficiency'" v-has="'efficiency:print'">打印</a-button>
                </a-space>
                <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;margin-left: 24px">
                  <tr>