1、全局车间层级以及部门层级树默认展开
2、车间看板页面设备详情弹窗背景透明度改为不透明
3、所有含有车间层级树页面新增弹窗中的选择设备弹窗内容由表格选择调整为树方式
4、报警分析页面表格字段出现次数与合计持续时间增加排序功能以及表格请求数据设置加载中动画
5、设备利用率、设备开动率以及班次利用率页面表格有关时间值调整为小时并保留两位小数以及通过与后端数据联调,增加表格平均值及合计值展示
6、设备综合效率分析页面表格班次字段若数据过长则省略
7、用户管理页面添加用户与重新设定密码弹窗中的登录密码校验长度与数据字典password_length设置保持一致以及表格车间字段若数据过长则省略
已修改22个文件
1167 ■■■■■ 文件已修改
src/views/mdc/base/EfficiencyPOReport.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/EfficiencyReport.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/common/BaseTree.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/UserList.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/modules/PasswordModal.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/modules/SelectDeviceModal.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/modules/UserModal.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/EfficiencyPOReport.vue
@@ -2,7 +2,7 @@
  <div style="width: 100%; height: 100%;">
    <a-card :bordered="false">
      <a-row type="flex" :gutter="16">
        <a-col :md="4">
        <a-col :md="5">
          <a-tabs :activeKey="activeKey"  @change="tabChange">
            <a-tab-pane key="1" tab="车间层级" force-render>
              <base-tree @getCurrSelected="changeSelectionNode"></base-tree>
@@ -12,7 +12,7 @@
            </a-tab-pane>
          </a-tabs>
        </a-col>
        <a-col :md="20">
        <a-col :md="19">
          <efficiencyPO-list ref="EfficiencyPOList" :nodeTree='selectEquement'  :nodePeople='selectPeople' :Type="slectTypeTree"/>
        </a-col>
      </a-row>
src/views/mdc/base/EfficiencyReport.vue
@@ -2,7 +2,7 @@
  <div style="width: 100%; height: 100%;">
    <a-card :bordered="false">
      <a-row type="flex" :gutter="16">
        <a-col :md="4">
        <a-col :md="5">
          <a-tabs :activeKey="activeKey"  @change="tabChange">
            <a-tab-pane key="1" tab="车间层级" force-render>
              <base-tree @getCurrSelected="changeSelectionNode"></base-tree>
@@ -12,7 +12,7 @@
            </a-tab-pane>
          </a-tabs>
        </a-col>
        <a-col :md="20">
        <a-col :md="19">
          <EfficiencyList ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></EfficiencyList>
        </a-col>
      </a-row>
src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue
@@ -145,6 +145,7 @@
            this.allTreeKeys = []
            this.treeDataSource = res.result
            this.generateList(res.result)
            this.expandedKeys=this.allTreeKeys
          } else {
            // this.$message.warn(res.message)
            this.$notification.warning({
src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue
@@ -7,7 +7,7 @@
          <a-col :span="24">
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -36,7 +36,7 @@
      </a-form>
    </a-spin>
    <holiday-management-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></holiday-management-modal-list>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
@@ -53,10 +53,11 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'HolidayManagementModal',
    components: {HolidayManagementModalList},
    components: { SelectDeviceModal, HolidayManagementModalList},
    props: {},
    data() {
      return {
@@ -184,9 +185,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -322,6 +324,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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue
@@ -54,7 +54,7 @@
      <div class="container" id="EfficiencyShift" style="margin-top: 20px;">
        <div class="table2">
          <a-table :columns="columns" :dataSource="dataSource.records" :pagination="false" bordered
                   :scroll="{ x: 3000, y: false }">
                   :scroll="{ x: 3200, y: false }">
          </a-table>
        </div>
      </div>
@@ -129,7 +129,7 @@
          {
            title: '设备名称',
            align: 'center',
            width: 150,
            width: 200,
            dataIndex: 'equipmentName'
            // fixed: 'left'
          },
@@ -148,8 +148,9 @@
          {
            title: '班次',
            align: 'center',
            width: 80,
            dataIndex: 'shift'
            width: 300,
            dataIndex: 'shift',
            ellipsis: true,
          },
          {
            title: '每班小时',
src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
@@ -7,7 +7,7 @@
          <a-col :span="24">
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -15,27 +15,27 @@
          <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>
                      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]"/>
                              v-decorator="['torqueValue', validatorRules.torqueValue]"/>
            </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="['notes', validatorRules.notes]" placeholder="请输入备注"  ></a-textarea>
          </a-form-item>
            <a-form-item label="备注" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-textarea :maxLength="20" v-decorator="['notes', validatorRules.notes]"
                          placeholder="请输入备注"></a-textarea>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </a-spin>
    <torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
@@ -52,22 +52,23 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'TorqueconfigurationModal',
    components: {TorqueconfigurationModalList},
    components: { SelectDeviceModal },
    props: {},
    data() {
      return {
        mesag:21,
        readOnly:true,
        mesag: 21,
        readOnly: true,
        title: '',
        visible: false,
        show: false,
        model: {},
        checked: false,
        startData:"",
        endData:"",
        startData: '',
        endData: '',
        labelCol: {
          xs: {
            span: 24
@@ -103,30 +104,30 @@
        confirmLoading: false,
        form: this.$form.createForm(this),
        validatorRules: {
          equipmentIds:{
            rules:[
          equipmentIds: {
            rules: [
              {
                required:true,
                message: "请选择设备"
              },
            ],
                required: true,
                message: '请选择设备'
              }
            ]
          },
          torqueDate:{
            rules:[
          torqueDate: {
            rules: [
              {
                required:true,
                message: "请选择时间"
              },
            ],
                required: true,
                message: '请选择时间'
              }
            ]
          },
          torqueValue:{
            rules:[
          torqueValue: {
            rules: [
              {
                required:true,
                message: "请输入扭矩值"
              },
            ],
          },
                required: true,
                message: '请输入扭矩值'
              }
            ]
          }
        },
        url: {
@@ -158,21 +159,21 @@
      //   // this.endData = dateStrings[1];
      //   // console.log(this.startData,this.endData);
      // },
      onChangeEnd(dates, dateStrings){
        this.endTime = dateStrings[0];
      onChangeEnd(dates, dateStrings) {
        this.endTime = dateStrings[0]
      },
      getDeviceRows(val) {
        var equipmentIds;
        for(var i = 0;i<val.length;i++){
        var equipmentIds
        for (var i = 0; i < val.length; i++) {
          if (i == 0) {
            equipmentIds =  val[i].equipmentId;
            equipmentIds = val[i].equipmentId
          } else {
            equipmentIds = equipmentIds + "," + val[i].equipmentId;
            equipmentIds = equipmentIds + ',' + val[i].equipmentId
          }
        }
        // console.log("========",equipmentIds);
        this.form.setFieldsValue({
          equipmentIds: equipmentIds,
          equipmentIds: equipmentIds
        })
        //   this.form.setFieldsValue({
        // equipmentId: val.equipmentId,
@@ -184,9 +185,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -219,7 +221,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, 'equipmentIds', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime'
          ))
        })
      },
@@ -252,36 +254,36 @@
            //     // this.endTime = ''
            //     that.confirmLoading = false
            //   }else{
                let obj
                if (!this.model.id) {
                  obj = postAction(this.url.add, formData)
                } else {
                  obj = requestPut(this.url.edit, formData, {
                    id: this.model.id
                  })
                }
                obj.then((res) => {
                  if (res.success) {
                    // that.$message.success("添加成功")
                    that.$notification.success({
                      message:'消息',
                      description:"添加成功"
                    });
                    // that.$message.success(res.message)
                    that.$emit('ok', res.result)
                  } else {
                    // that.$message.warning(res.message)
                    that.$notification.warning({
                      message:'消息',
                      description:res.message
                    });
                  }
                }).finally(() => {
                  that.confirmLoading = false
                  that.close()
            let obj
            if (!this.model.id) {
              obj = postAction(this.url.add, formData)
            } else {
              obj = requestPut(this.url.edit, formData, {
                id: this.model.id
              })
            }
            obj.then((res) => {
              if (res.success) {
                // that.$message.success("添加成功")
                that.$notification.success({
                  message: '消息',
                  description: '添加成功'
                })
                // that.$message.success(res.message)
                that.$emit('ok', res.result)
              } else {
                // that.$message.warning(res.message)
                that.$notification.warning({
                  message: '消息',
                  description: res.message
                })
              }
            // }
            }).finally(() => {
              that.confirmLoading = false
              that.close()
            })
          }
          // }
          // }
        })
@@ -322,7 +324,24 @@
      },
      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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
</script>
@@ -346,7 +365,8 @@
  .ant-tabs-content .ant-form-item {
    margin-bottom: 0px;
  }
  /deep/ .ant-input-number{
    width: 100%!important;
  /deep/ .ant-input-number {
    width: 100% !important;
  }
</style>
src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue
@@ -7,7 +7,7 @@
          <a-col :span="24">
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -43,15 +43,13 @@
        </a-row>
      </a-form>
    </a-spin>
    <plan-downtime-maintenance-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></plan-downtime-maintenance-modal-list>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  import PlanDowntimeMaintenanceModalList from './UnplannedDowntimemManagerModalList'
  import JDate from '../deviceRepair/JDate'
  import {
    getAction,
@@ -61,10 +59,11 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'UnplannedDowntimemManagerModal',
    components: {PlanDowntimeMaintenanceModalList,JDate},
    components: { SelectDeviceModal,JDate},
    props: {},
    data() {
      return {
@@ -201,9 +200,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -336,6 +336,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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue
@@ -1464,7 +1464,7 @@
    /*background: -ms-linear-gradient(left, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/
    /*background: linear-gradient(to right, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/
    background-color: #312c2c;
    opacity: 0.7;
    opacity: 1;
  }
  /deep/ .ant-modal-close {
src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue
@@ -56,9 +56,9 @@
          <!--</table>-->
          <!--</div>-->
          <!--</div>-->
          <a-table :columns="columns" :data-source="dataList" bordered :pagination="false" :scroll="{y:168}"
          <a-table :columns="columns" :data-source="dataList" bordered :pagination="false" :scroll="{y:210}"
                   :customRow="customRow"
                   rowKey="alarmCode"
                   rowKey="alarmCode" @expand="handleExpandChange"
          >
            <span slot="timeCount" slot-scope="text">{{getFormattedTime(text)}}</span>
            <!--<a-table-->
@@ -68,6 +68,7 @@
              <!--:data-source="row.innerDataList"-->
              <!--:pagination="false"-->
              <!--rowKey="equipmentId"-->
              <!--:loading="loading"-->
            <!--&gt;-->
              <!--<span slot="duration" slot-scope="text">{{getFormattedTime(text)}}</span>-->
            <!--</a-table>-->
@@ -97,13 +98,14 @@
  const columns = [
    { title: '报警号', dataIndex: 'alarmCode', key: 'alarmCode', align: 'center' },
    { title: '出现次数', dataIndex: 'count', key: 'count', align: 'center' },
    { title: '出现次数', dataIndex: 'count', key: 'count', align: 'center', sorter: (a, b) => b.count - a.count },
    {
      title: '合计持续时间',
      dataIndex: 'timeCount',
      key: 'timeCount',
      scopedSlots: { customRender: 'timeCount' },
      align: 'center'
      align: 'center',
      sorter: (a, b) => b.timeCount - a.timeCount
    },
    { title: '报警信息', dataIndex: 'alarmContent', key: 'alarmContent', align: 'center' }
  ]
@@ -131,7 +133,7 @@
        dataSource: [],
        /* table加载状态 */
        loading: false,
        spinning:false,
        spinning: false,
        typeTree: '',
        typeParent: 1,
        typeEquipment: 1,
@@ -164,7 +166,8 @@
        XData: [0],
        YData: [0],
        columns,
        innerColumns
        innerColumns,
        hasRequsetAlarmCodeList: []
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -232,34 +235,34 @@
      },
      TableDraw(key, val) {
        let that = this
        that.spinning=true
        that.spinning = true
        that.queryParam.alarmCode = val.alarmCode
        console.log(this.queryParam)
        getAction(that.url.alarmTrend, that.queryParam)
          .then(res => {
          if (res.success) {
            that.pieDate=res.result.equipmentCountList.map(item=>{
              return {
                name:item.key,
                value:item.count
              }
            })
            that.XData=res.result.dateCountList.map(item=>item.key)
            that.YData=res.result.dateCountList.map(item=>item.count)
            if (res.success) {
              that.pieDate = res.result.equipmentCountList.map(item => {
                return {
                  name: item.key,
                  value: item.count
                }
              })
              that.XData = res.result.dateCountList.map(item => item.key)
              that.YData = res.result.dateCountList.map(item => item.count)
            // this.tableHeads = res.result.dates
            // this.dataList = res.result
            // this.draw()
            // this.checkSameData(this.dataList)
            // this.checkSameData1(this.dataList)
            // this.checkSameData2(this.dataList)
            // this.combineCell();
            // this.initDeviceType(this.dataList)
            that.drawWrin()
          }
        })
          .finally(()=>{
            that.spinning=false
              // this.tableHeads = res.result.dates
              // this.dataList = res.result
              // this.draw()
              // this.checkSameData(this.dataList)
              // this.checkSameData1(this.dataList)
              // this.checkSameData2(this.dataList)
              // this.combineCell();
              // this.initDeviceType(this.dataList)
              that.drawWrin()
            }
          })
          .finally(() => {
            that.spinning = false
          })
        console.log(this.YData)
@@ -394,31 +397,7 @@
          if (res.success) {
            // this.tableHeads = res.result.dates
            this.dataList = res.result
            this.dataList[0].innerDataList=[
              {
                equipmentId: '11234',
                equipmentName: '立体机床',
                alarmTime: 20,
                endTime: 20,
                duration: 123
              },
              {
                equipmentId: '4213',
                equipmentName: '卧室机床',
                alarmTime: 312,
                endTime: 31,
                duration: 421
              }
            ]
            this.dataList[1].innerDataList=[
              {
                equipmentId: '4213',
                equipmentName: '卧室机床',
                alarmTime: 312,
                endTime: 31,
                duration: 421
              }
            ]
            this.hasRequsetAlarmCodeList = []
            // this.draw()
            // this.checkSameData(this.dataList)
            // this.checkSameData1(this.dataList)
@@ -552,10 +531,10 @@
        var secs = seconds % 60
        if (hours === 0) {
          if (minutes === 0 ) {
          if (minutes === 0) {
            return secs === 0 ? 0 : `${secs}秒`
          } else {
            if(secs=== 0 ){
            if (secs === 0) {
              return `${minutes}分`
            }
            return `${minutes}分 ${secs}秒`
@@ -581,37 +560,70 @@
          on: {
            click: (event) => {
              // 如果点击的不是展开图标区域则渲染图表,相反则相当于点击展开图标
              if(event.target.className !== 'ant-table-row-expand-icon-cell'){
              if (event.target.className !== 'ant-table-row-expand-icon-cell') {
                this.TableDraw(index, record)
              }else{
                if(event.target.children && event.target.children.length>0) event.target.children[0].click()
              } else {
                if (event.target.children && event.target.children.length > 0) event.target.children[0].click()
              }
            }
          }
        }
      },
      /**
       * 自定义展开表格图标
       * @param props 图标属性
       * @returns {null} 若主表数据下无数据则不显示图标
       */
      expandIcon(props){
        console.log('props',props)
        if (props.record.innerDataList&&props.record.innerDataList.length>0){
          if (props.expanded) {
            return <a style="margin-right:0px;color:#999" onClick={e=> {
              props.onExpand(props.record, e);
            }}><a-icon type="minus" /></a>
          } else{
            return <a style="margin-right:0px;color:#999" onClick={e => {
              props.onExpand(props.record, e);
            }}><a-icon type="plus"/></a>
          }
        }else{
          return null
      handleExpandChange(expanded, record) {
        console.log('expanded', expanded, 'record', record)
        let _this = this
        // 当展开时若该行未被展开过才会请求后台数据,展开过的数据会被缓存无需重复请求
        if (expanded && !this.hasRequsetAlarmCodeList.includes(record.alarmCode)) {
          this.loading = true
          setTimeout(() => {
            _this.dataList.forEach(item => {
              if (record.alarmCode === item.alarmCode) {
                item.innerDataList = [
                  {
                    equipmentId: '11234',
                    equipmentName: '立体机床',
                    alarmTime: 20,
                    endTime: 20,
                    duration: 123
                  },
                  {
                    equipmentId: '4213',
                    equipmentName: '卧室机床',
                    alarmTime: 312,
                    endTime: 31,
                    duration: 421
                  }
                ]
              }
            })
            this.loading = false
          }, 1000)
          this.hasRequsetAlarmCodeList.push(record.alarmCode)
        }
      }
      // /**
      //  * 自定义展开表格图标
      //  * @param props 图标属性
      //  * @returns {null} 若主表数据下无数据则不显示图标
      //  */
      // expandIcon(props){
      //   console.log('props',props)
      //   if (props.record.innerDataList&&props.record.innerDataList.length>0){
      //     if (props.expanded) {
      //       return <a style="margin-right:0px;color:#999" onClick={e=> {
      //         props.onExpand(props.record, e);
      //       }}><a-icon type="minus" /></a>
      //     } else{
      //       return <a style="margin-right:0px;color:#999" onClick={e => {
      //         props.onExpand(props.record, e);
      //       }}><a-icon type="plus"/></a>
      //     }
      //   }else{
      //     return null
      //   }
      // }
    }
  }
</script>
@@ -835,12 +847,19 @@
    cursor: pointer;
  }
  /deep/ .ant-spin-nested-loading{
  /deep/ .ant-spin-nested-loading {
    height: 55%;
  }
  /deep/ .ant-spin-container{
  /deep/ .ant-spin-container {
    height: 100%;
  }
  /deep/ .ant-table.ant-table-bordered {
    height: 265px;
  }
  /deep/ .ant-table-scroll>.ant-table-placeholder {
    height: 210px;
  }
</style>
src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue
@@ -442,7 +442,6 @@
        this.$refs.selectDeviceModal.selectedRowKeys = []
        this.$refs.selectDeviceModal.selectedRows = []
        this.$refs.selectDeviceModal.checkedKeys = this.queryParam.equipmentId.split(',')
        this.$refs.selectDeviceModal.expandAll()
      },
      /**
src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue
@@ -8,7 +8,7 @@
            <a-col :span="24">
              <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
                <a-input-search :readOnly="true" v-decorator="['equipmentId', validatorRules.equipmentId]"
                                @search="deviceSearch" enter-button/>
                                @search="deviceSearch" enter-button placeholder="请选择设备"/>
              </a-form-item>
            </a-col>
          </a-row>
@@ -44,6 +44,7 @@
        </a-form>
      </a-spin>
      <device-calend-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></device-calend-list-model>
      <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
    </a-modal>
  </div>
</template>
@@ -62,10 +63,11 @@
  } from '@/api/api'
  import Calendar from 'vue-calendar-component';
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'ShiftInfoModel',
    components: {DeviceCalendListModel,Calendar},
    components: { SelectDeviceModal, DeviceCalendListModel,Calendar},
    props: {},
    data() {
      return {
@@ -239,9 +241,10 @@
        this.value = value;
      },
      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(',') : []
      },
      getDeviceRows(val) {
        console.log("========",val);
@@ -342,6 +345,21 @@
        this.close()
      },
      /**
       * 选择已有设备后点击确定时触发
       * @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(',')
        })
      }
    }
  }
</script>
src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue
@@ -19,7 +19,7 @@
            <!--</a-form-item>-->
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
              <!--<a-input :disabled="disableSubmit" :readOnly="disableSubmit" allow-clear placeholder="请输入设备编号"-->
              <!--v-decorator="['equipmentId',validatorRules.equipmentId]"/>-->
            </a-form-item>
@@ -74,17 +74,13 @@
        <!--</a-row>-->
      </a-form>
    </a-spin>
    <device-repair-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"
                              :selectedEquipmentIds="selectedEquipmentIds"
    ></device-repair-list-model>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  import DeviceRepairListModel from './DeviceRepairListModel'
  import JDate from './JDate'
  import {
    getAction,
@@ -94,12 +90,12 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import AFormItem from 'ant-design-vue/es/form/FormItem'
  import Vue from 'vue'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'DeviceRepairModel',
    components: { AFormItem, DeviceRepairListModel, JDate },
    components: { SelectDeviceModal, JDate },
    props: {
      equipmentId: {
        type: String
@@ -277,9 +273,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -477,6 +474,22 @@
        return {
          disabledSeconds: () => this.range(1, 60)
        }
      },
      /**
       * 选择已有设备后点击确定时触发
       * @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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
@@ -49,65 +49,73 @@
          </tr>
        </table>
      </div>
      <div class="container" id="EfficiencyPO" style="margin-top: 20px;">
        <div class="table2">
          <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap">
            <thead>
            <tr class="thead fixed equipname">
              <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th  class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th  class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号</th>
              <th class="thgu dong5 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">设备名称</th>
              <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型</th>
              <!--<th rowspan="2">组别</th>-->
              <template v-for="(tableHead, index) in tableHeads">
                <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
              </template>
            </tr>
            <tr class="thead notfixed gudingth">
              <template v-for="(tableHead, index) in tableHeads">
                <th>开动率(%)</th>
                <th v-if="checkedList.indexOf('kjl') > -1">开机率(%)</th>
                <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(s)</th>
                <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(s)</th>
                <th v-if="checkedList.indexOf('djsj') > -1">待机时间(s)</th>
                <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(s)</th>
              </template>
            </tr>
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td  class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
              <td  class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
              <td  class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
              <td  class="tdgu3  kaitou">{{item.equipmentId}}</td>
              <td  class="tdgu4 kaitou">{{item.equipmentName}}</td>
              <td  class="tdgu5 kaitou">{{item.equipmentType}}</td>
              <!--<td>{{item.tierType}}</td>-->
              <template v-for="(tableHead, index) in item.dataList">
                <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1">
                  {{tableHead.openRate | numFilter}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                  {{tableHead.openLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                  {{tableHead.processLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                  {{tableHead.waitLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                  {{tableHead.closeLong}}
                </td>
              </template>
            </tr>
            </tbody>
          </table>
      <a-spin :spinning="spinning">
        <div class="container" id="EfficiencyPO" style="margin-top: 20px;" >
          <div class="table2">
            <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap" v-if="dataList.length>0">
              <thead>
              <tr class="thead fixed equipname">
                <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">公司</th>
                <th  class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">车间</th>
                <th  class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">工段</th>
                <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号</th>
                <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">设备名称</th>
                <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型</th>
                <!--<th rowspan="2">组别</th>-->
                <template v-for="(tableHead, index) in tableHeads">
                  <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
                </template>
              </tr>
              <tr class="thead notfixed gudingth">
                <template v-for="(tableHead, index) in tableHeads">
                  <th>开动率(%)</th>
                  <th v-if="checkedList.indexOf('kjl') > -1">开机率(%)</th>
                  <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(小时)</th>
                  <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(小时)</th>
                  <th v-if="checkedList.indexOf('djsj') > -1">待机时间(小时)</th>
                  <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(小时)</th>
                </template>
              </tr>
              </thead>
              <tbody>
              <tr class="mathData" v-for="(item, index) in dataList">
                <template v-if="item.level1!=='合计'&&item.level1!=='平均值'">
                  <td  class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
                  <td  class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
                  <td  class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
                  <td  class="tdgu3  kaitou">{{item.equipmentId}}</td>
                  <td style="min-width: 162px; max-width: 162px;width: 162px;"  class="tdgu4 kaitou">{{item.equipmentName}}</td>
                  <td  class="tdgu5 kaitou">{{item.equipmentType}}</td>
                </template>
                <template v-else>
                  <td colspan="6" class="tdgu kaitou">{{item.level1}}</td>
                </template>
                <!--<td>{{item.tierType}}</td>-->
                <template v-for="(tableHead, index) in item.dataList">
                  <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1">
                    {{tableHead.openRate | numFilter}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                    {{tableHead.openLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                    {{tableHead.processLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                    {{tableHead.waitLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                    {{tableHead.closeLong | getFormattedTime}}
                  </td>
                </template>
              </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
      </a-spin>
    </div>
  </div>
</template>
@@ -147,7 +155,8 @@
        listByType: '/mdc/MdcUtilizationRate/getByType',
        queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
      },
      tableHeads: []
      tableHeads: [],
      spinning:false
    }
  },
  props: { nodeTree: '', Type:'',nodePeople: ''},
@@ -197,7 +206,20 @@
      } else {
        return '0'
      }
    }
    },
    /**
     * 格式化时间
     * @param seconds 秒数
     * @returns '' 格式化后时间字符串
     */
    getFormattedTime(seconds) {
      if (seconds) {
        return parseFloat((seconds / 3600).toFixed(2)) + '小时'
      } else {
        return '0'
      }
    },
  },
  methods: {
    checkSameData(dataList){
@@ -389,6 +411,7 @@
      // this.onClearSelected()
    },
    loadData() {
      this.spinning=true
      this.tableHeads = []
      this.dataList = []
      getAction(this.url.list, this.queryParam).then(res => {
@@ -402,6 +425,8 @@
          this.combineCell();
          // this.initDeviceType(this.dataList)
        }
      }).finally(()=>{
        this.spinning=false
      })
    },
    queryGroup() {
@@ -471,7 +496,7 @@
}
.table tbody tr .tdgu5{
  position: sticky;
  left: 400px;
  left: 412px;
  z-index: 2;
}
@@ -512,7 +537,7 @@
}
.table2 thead .equipname .dong6{
  z-index: 5;
  left: 400px;
  left: 412px;
}
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -8,7 +8,8 @@
            <a-row :gutter="24">
              <a-col :md="4" :sm="4">
                <a-form-item label="设备类型">
                  <a-select placeholder="请选择设备类型" :triggerChange="true" v-model="queryParam.equipmentType" :allowClear="true">
                  <a-select placeholder="请选择设备类型" :triggerChange="true" v-model="queryParam.equipmentType"
                            :allowClear="true">
                    <a-select-option v-for='item in selectList' :key='item.id' :value='item.equipmentTypeName'>
                      {{item.equipmentTypeName}}
                    </a-select-option>
@@ -53,70 +54,89 @@
        </div>
      </div>
      <div id="Efficiency" class="container" style="margin-top: 20px;">
        <div class="table2">
          <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap">
            <thead>
            <tr class="thead fixed equipname">
              <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号</th>
              <th class="thgu dong5 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">设备名称</th>
              <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型</th>
              <!--<th rowspan="2">组别</th>-->
              <template v-for="(tableHead, index) in tableHeads">
                <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
              </template>
            </tr>
            <tr class="thead notfixed gudingth">
              <template v-for="(tableHead, index) in tableHeads">
                <th>利用率(%)</th>
                <th v-if="checkedList.indexOf('kjl') > -1">开机率(%)</th>
                <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(s)</th>
                <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(s)</th>
                <th v-if="checkedList.indexOf('djsj') > -1">待机时间(s)</th>
                <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(s)</th>
              </template>
            </tr>
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td class="tdgu kaitou wenzi" :rowspan="item.level1span"
                  :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}}
              </td>
              <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span"
                  :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}}
              </td>
              <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span"
                  :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}}
              </td>
              <td class="tdgu3  kaitou">{{item.equipmentId}}</td>
              <td class="tdgu4 kaitou">{{item.equipmentName}}</td>
              <td class="tdgu5 kaitou">{{item.equipmentType}}</td>
              <template v-for="(tableHead, index) in item.dataList">
                <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1">
                  {{tableHead.openRate | numFilter}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                  {{tableHead.openLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                  {{tableHead.processLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                  {{tableHead.waitLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                  {{tableHead.closeLong}}
                </td>
              </template>
            </tr>
            </tbody>
          </table>
      <a-spin :spinning="spinning">
        <div id="Efficiency" class="container" style="margin-top: 20px;">
          <div class="table2">
            <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap"
                   v-if="dataList.length>0">
              <thead>
              <tr class="thead fixed equipname">
                <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">公司</th>
                <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">车间</th>
                <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">工段</th>
                <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号
                </th>
                <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">设备名称
                </th>
                <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型
                </th>
                <!--<th rowspan="2">组别</th>-->
                <template v-for="(tableHead, index) in tableHeads">
                  <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
                </template>
              </tr>
              <tr class="thead notfixed gudingth">
                <template v-for="(tableHead, index) in tableHeads">
                  <th>利用率(%)</th>
                  <th v-if="checkedList.indexOf('kjl') > -1">开机率(%)</th>
                  <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(小时)</th>
                  <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(小时)</th>
                  <th v-if="checkedList.indexOf('djsj') > -1">待机时间(小时)</th>
                  <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(小时)</th>
                </template>
              </tr>
              </thead>
              <tbody>
              <tr class="mathData" v-for="(item, index) in dataList">
                <template v-if="item.level1!=='合计'&&item.level1!=='平均值'">
                  <td class="tdgu kaitou wenzi" :rowspan="item.level1span"
                      :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}}
                  </td>
                  <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span"
                      :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}}
                  </td>
                  <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span"
                      :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}}
                  </td>
                  <td class="tdgu3  kaitou">{{item.equipmentId}}</td>
                  <td class="tdgu4 kaitou" style="min-width: 162px; max-width: 162px;width: 162px;">{{item.equipmentName}}</td>
                  <td class="tdgu5 kaitou">{{item.equipmentType}}</td>
                </template>
                <!--合计与平均值区域-->
                <template v-else>
                  <td colspan="6" class="tdgu kaitou">{{item.level1}}</td>
                </template>
                <template v-for="(tableHead, index) in item.dataList">
                  <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1">
                    {{tableHead.openRate | numFilter}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                    {{tableHead.openLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                    {{tableHead.processLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                    {{tableHead.waitLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                    {{tableHead.closeLong | getFormattedTime}}
                  </td>
                </template>
              </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
      </a-spin>
    </div>
  </div>
</template>
@@ -161,8 +181,15 @@
          listByType: '/mdc/MdcUtilizationRate/getByType',
          queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
        },
        tableHeads: []
        tableHeads: [],
        distinguishColorList: [],
        utilizationRateRowAverage: '',
        openRateRowAverage: '',
        openLongRowAverage: '',
        processLongRowAverage: '',
        waitLongRowAverage: '',
        closeLongRowAverage: '',
        spinning: false
      }
    },
    props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -212,8 +239,22 @@
        } else {
          return '0'
        }
      },
      /**
       * 格式化时间
       * @param seconds 秒数
       * @returns '' 格式化后时间字符串
       */
      getFormattedTime(seconds) {
        if (seconds) {
          return parseFloat((seconds / 3600).toFixed(2)) + '小时'
        } else {
          return '0'
        }
      }
    },
    computed: {},
    methods: {
      checkSameData(dataList) {
        let cache = {}  //存储的是键是kclx 的值,值是kclx 在indeces中数组的下标
@@ -394,7 +435,7 @@
      //   // this.onClearSelected()
      // },
      searchQuery() {
        console.log('dates',this.dates)
        console.log('dates', this.dates)
        if (this.dates != '') {
          if (this.queryParam.typeTree == '1') {
            this.queryParam.parentId = this.queryParamEquip.parentId
@@ -431,17 +472,21 @@
      loadData() {
        this.tableHeads = []
        this.dataList = []
        this.spinning = true
        getAction(this.url.list, this.queryParam).then(res => {
          if (res.success) {
            this.tableHeads = res.result.dates
            this.dataList = res.result.mdcEfficiencyList
            this.distinguishColorList = res.result.utilizationRateList
            this.checkSameData(this.dataList)
            this.checkSameData1(this.dataList)
            this.checkSameData2(this.dataList)
            this.combineCell()
            // this.columns.push(...dataColumns)
            // this.initDeviceType(this.dataList)
          }
        }).finally(() => {
          this.spinning = false
        })
      },
      queryGroup() {
@@ -461,7 +506,7 @@
        }).finally(() => {
          this.loading = false
        })
      }
      },
    }
  }
</script>
@@ -518,7 +563,7 @@
  .table tbody tr .tdgu5 {
    position: sticky;
    left: 400px;
    left: 412px;
    z-index: 2;
  }
@@ -567,7 +612,7 @@
  .table2 thead .equipname .dong6 {
    z-index: 5;
    left: 400px;
    left: 412px;
  }
  @media screen and (min-width: 1920px) {
@@ -668,10 +713,6 @@
    padding: 10px;
  }
  .dataContent .mathData .tdd {
    /*display: none;*/
  }
  td {
    vertical-align: middle;
  }
@@ -687,4 +728,27 @@
  .green {
    background-color: #99ff4e;
  }
  .vertical-text {
    writing-mode: vertical-rl;
  }
  /*/deep/ .ant-table-body .ant-table-row td {*/
  /*padding-top: 10px;*/
  /*padding-bottom: 10px;*/
  /*}*/
  /deep/ .ant-table-body .ant-table-row td.data {
    min-width: 150px;
    max-width: 150px;
  }
  /deep/ .ant-table-tbody > tr.ant-table-row:hover > td {
    background: none !important;
  }
  /deep/ .ant-table-thead th {
    text-align: center;
  }
</style>
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
@@ -80,87 +80,91 @@
          <!--</table>-->
        <!--</div>-->
      </div>
      <div class="container" id="EfficiencyShift" style="margin-top: 20px;">
        <div class="table2">
          <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap">
            <thead>
            <tr class="thead fixed equipname">
              <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th  class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th  class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th>
              <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号</th>
              <th class="thgu dong5 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">设备名称</th>
              <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型</th>
              <th class="thgu dong7 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">班次</th>
              <template v-for="(tableHead, index) in tableHeads">
                <th  class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
              </template>
              <!--average-->
              <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">平均值(班次利用率)</th>-->
      <a-spin :spinning="spinning">
        <div class="container" id="EfficiencyShift" style="margin-top: 20px;">
          <div class="table2">
            <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap" v-if="dataList.length>0">
              <thead>
              <tr class="thead fixed equipname">
                <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">公司</th>
                <th  class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">车间</th>
                <th  class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">工段</th>
                <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备编号</th>
                <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">设备名称</th>
                <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">设备类型</th>
                <th class="thgu dong7 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">班次</th>
                <template v-for="(tableHead, index) in tableHeads">
                  <th  class="timeth" :colspan="checkedList.length">{{tableHead}}</th>
                </template>
                <!--average-->
                <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">平均值(班次利用率)</th>-->
            </tr>
            <tr class="thead notfixed gudingth">
              <template v-for="(tableHead, index) in tableHeads">
                <th>班次利用率(%)</th>
                <!--<th v-if="checkedList.indexOf('gzl') > -1">故障率(%)</th>-->
                <!--<th v-if="checkedList.indexOf('processingLong') > -1">运行时间(s)</th>-->
                <!--<th v-if="checkedList.indexOf('totalLong') > -1">有效时间(s)</th>-->
                <!--<th v-if="checkedList.indexOf('faultLong') > -1">故障时间(s)</th>-->
                <!--&lt;!&ndash;<th v-if="checkedList.indexOf('gjsj') > -1">关机时间(s)</th>&ndash;&gt;-->
                <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(s)</th>
                <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(s)</th>
                <th v-if="checkedList.indexOf('djsj') > -1">待机时间(s)</th>
                <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(s)</th>
              </template>
            </tr>
<!--            <tr>-->
<!--              <th rowspan="2">平均值</th>-->
<!--            </tr>-->
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td  class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
              <td  class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
              <td  class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
              <td class="tdgu3  kaitou">{{item.equipmentId}}</td>
              <td class="tdgu4  kaitou">{{item.equipmentName}}</td>
              <td class="tdgu5  kaitou">{{item.equipmentType}}</td>
              <td class="tdgu6  kaitou">{{item.shiftSubName}}</td>
              </tr>
              <tr class="thead notfixed gudingth">
                <template v-for="(tableHead, index) in tableHeads">
                  <th>班次利用率(%)</th>
                  <!--<th v-if="checkedList.indexOf('gzl') > -1">故障率(%)</th>-->
                  <!--<th v-if="checkedList.indexOf('processingLong') > -1">运行时间(s)</th>-->
                  <!--<th v-if="checkedList.indexOf('totalLong') > -1">有效时间(s)</th>-->
                  <!--<th v-if="checkedList.indexOf('faultLong') > -1">故障时间(s)</th>-->
                  <!--&lt;!&ndash;<th v-if="checkedList.indexOf('gjsj') > -1">关机时间(s)</th>&ndash;&gt;-->
                  <th v-if="checkedList.indexOf('kjsj') > -1">开机时间(小时)</th>
                  <th v-if="checkedList.indexOf('jgsj') > -1">加工时间(小时)</th>
                  <th v-if="checkedList.indexOf('djsj') > -1">待机时间(小时)</th>
                  <th v-if="checkedList.indexOf('gjsj') > -1">关机时间(小时)</th>
                </template>
              </tr>
              </thead>
              <tbody>
              <tr class="mathData" v-for="(item, index) in dataList">
                <template v-if="item.level1!=='合计'&&item.level1!=='平均值'">
                  <td  class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
                  <td  class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
                  <td  class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
                  <td class="tdgu3  kaitou">{{item.equipmentId}}</td>
                  <td class="tdgu4  kaitou" style="min-width: 162px; max-width: 162px;width: 162px;">{{item.equipmentName}}</td>
                  <td class="tdgu5  kaitou">{{item.equipmentType}}</td>
                  <td class="tdgu6  kaitou">{{item.shiftSubName}}</td>
                </template>
              <!--<td>{{item.tierType}}</td>-->
              <template v-for="(tableHead, index) in item.dataList">
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.utilizationRate !== 0'>{{tableHead.utilizationRate | numFilter}}</td>-->
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 1'>维修</td>-->
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 2'>休班</td>-->
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 10'>{{tableHead.lyl | numFilter}}</td>-->
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 11'>未计算</td>-->
                <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 12'>无班次</td>-->
                <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>
                <!--<td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1">-->
                <template v-else>
                  <td colspan="7" class="tdgu kaitou">{{item.level1}}</td>
                </template>
                <!--<td>{{item.tierType}}</td>-->
                <template v-for="(tableHead, index) in item.dataList">
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.utilizationRate !== 0'>{{tableHead.utilizationRate | numFilter}}</td>-->
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 1'>维修</td>-->
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 2'>休班</td>-->
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 10'>{{tableHead.lyl | numFilter}}</td>-->
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 11'>未计算</td>-->
                  <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 12'>无班次</td>-->
                  <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>
                  <!--<td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1">-->
                  <!--{{tableHead.gzl | numFilter}}-->
                <!--</td>-->
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                  {{tableHead.openLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                  {{tableHead.processLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                  {{tableHead.waitLong}}
                </td>
                <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                  {{tableHead.closeLong}}
                </td>
                <!--<td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1">-->
                  <!--</td>-->
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                    {{tableHead.openLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
                    {{tableHead.processLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
                    {{tableHead.waitLong | getFormattedTime}}
                  </td>
                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
                    {{tableHead.closeLong | getFormattedTime}}
                  </td>
                  <!--<td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1">-->
                  <!--{{item[tableHead].gjsj}}-->
                <!--</td>-->
              </template>
              <!--<td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td>-->
            </tr>
            </tbody>
          </table>
                  <!--</td>-->
                </template>
                <!--<td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td>-->
              </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
      </a-spin>
    </div>
  </div>
</template>
@@ -210,7 +214,8 @@
        },
        tableHeads: [],
        shiftList: [],
        shiftSubList: []
        shiftSubList: [],
        spinning:false
      }
    },
    props: {  nodeTree: '', Type:'',nodePeople: ''  },
@@ -262,7 +267,20 @@
        } else {
          return '0'
        }
      }
      },
      /**
       * 格式化时间
       * @param seconds 秒数
       * @returns '' 格式化后时间字符串
       */
      getFormattedTime(seconds) {
        if (seconds) {
          return parseFloat((seconds / 3600).toFixed(2)) + '小时'
        } else {
          return '0'
        }
      },
    },
    methods: {
      checkSameData(dataList){
@@ -474,6 +492,7 @@
        // this.onClearSelected()
      },
      loadData() {
        this.spinning=true
        this.tableHeads = []
        this.dataList = []
        getAction(this.url.list, this.queryParam).then(res => {
@@ -486,6 +505,8 @@
            this.combineCell();
            // this.initDeviceType(this.dataList)
          }
        }).finally(()=>{
          this.spinning=false
        })
      },
      queryGroup() {
@@ -554,12 +575,12 @@
  }
  .table tbody tr .tdgu5{
    position: sticky;
    left: 400px;
    left: 412px;
    z-index: 2;
  }
  .table tbody tr .tdgu6{
    position: sticky;
    left: 500px;
    left: 512px;
    z-index: 2;
  }
@@ -600,11 +621,11 @@
  }
  .table2 thead .equipname .dong6{
    z-index: 5;
    left: 400px;
    left: 412px;
  }
  .table2 thead .equipname .dong7{
    z-index: 6;
    left: 500px;
    left: 512px;
  }
  @media screen and (min-width: 1920px){
src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue
@@ -7,7 +7,7 @@
          <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/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
@@ -39,15 +39,13 @@
        </a-row>
      </a-form>
    </a-spin>
    <mdc-pass-rate-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></mdc-pass-rate-modal-list>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  import mdcPassRateModalList from './mdcPassRateModalList'
  // import JDate from './JDate'
  import {
    getAction,
@@ -57,10 +55,11 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'mdcPassRateModal',
    components: {mdcPassRateModalList},
    components: { SelectDeviceModal},
    props: {},
    data() {
      return {
@@ -197,9 +196,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -347,6 +347,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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue
@@ -7,7 +7,7 @@
          <a-col :span="24">
            <a-form-item label="设备组" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
                              @search="deviceSearch" enter-button placeholder="请选择设备"/>
            </a-form-item>
          </a-col>
        </a-row>
@@ -44,7 +44,7 @@
        </a-row>
      </a-form>
    </a-spin>
    <mdc-standard-process-duration-modal-list  ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></mdc-standard-process-duration-modal-list>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
@@ -52,7 +52,6 @@
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  import MdcStandardProcessDurationModalList from './MdcStandardProcessDurationModalList'
  // import JDate from './JDate'
  import {
    getAction,
@@ -62,10 +61,11 @@
  import {
    duplicateCheck
  } from '@/api/api'
  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
  export default {
    name: 'MdcStandardProcessDurationModal',
    components: {MdcStandardProcessDurationModalList},
    components: { SelectDeviceModal },
    props: {},
    data() {
      return {
@@ -210,9 +210,10 @@
        // })
      },
      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('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
      },
      //级联框onChange事件
      // onChange(value) {
@@ -348,6 +349,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({
          equipmentIds: data.join(',')
        })
      }
    }
  }
src/views/mdc/common/BaseTree.vue
@@ -149,6 +149,7 @@
            this.allTreeKeys = []
            this.treeDataSource = res.result
            this.generateList(res.result)
            this.expandedKeys=this.allTreeKeys
          } else {
            this.$message.warn(res.message)
          }
src/views/system/UserList.vue
@@ -269,7 +269,8 @@
            title: '车间',
            align: "center",
            width: 240,
            dataIndex: 'productionName'
            dataIndex: 'productionName',
            ellipsis: true,
          },
          {
            title: '状态',
@@ -363,7 +364,8 @@
                    title: '车间',
                    align: "center",
                    width: 240,
                    dataIndex: 'productionName'
                    dataIndex: 'productionName',
                    ellipsis: true,
                  },
                  {
                    title: '状态',
@@ -433,7 +435,8 @@
                    title: '车间',
                    align: "center",
                    width: 240,
                    dataIndex: 'productionName'
                    dataIndex: 'productionName',
                    ellipsis: true,
                  },
                  {
                    title: '班组',
src/views/system/modules/PasswordModal.vue
@@ -31,6 +31,7 @@
<script>
  import {changePassword} from '@/api/api'
  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
  export default {
    name: "PasswordModal",
@@ -69,6 +70,13 @@
          sm: { span: 16 },
        },
        form:this.$form.createForm(this)
      }
    },
    watch:{
      visible:{
        handler(value){
          if(value) this.initDictData('password_length')
        }
      }
    },
    created () {
@@ -136,7 +144,20 @@
      handleConfirmBlur  (e) {
        const value = e.target.value
        this.confirmDirty = this.confirmDirty || !!value
      }
      },
      initDictData(dictCode) {
        //根据字典Code, 初始化字典数组
        ajaxGetDictItems(dictCode, null).then((res) => {
          if (res.success) {
            const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{"+Number(res.result[0].value)+",}$");
            this.validatorRules.password.rules[0]={
              required:true,
              pattern: regExp,
              message: `密码由${res.result[0].value}位数字、大小写字母和特殊符号组成!`,
            }
          }
        })
      },
    }
  }
</script>
src/views/system/modules/SelectDeviceModal.vue
@@ -223,6 +223,7 @@
            this.treeDataSource = res.result
            this.generateList(this.treeDataSource)
            console.log('treeDataSource', this.treeDataSource)
            this.expandedKeys = this.allTreeKeys
          } else {
            this.$message.warn(res.message)
          }
@@ -276,9 +277,7 @@
        this.visible = false
      },
      handleOk() {
        if (this.checkedKeys.length > 0) {
          this.$emit('selectFinished', this.deviceNodes)
        }
        this.$emit('selectFinished', this.deviceNodes)
        this.visible = false
      }
src/views/system/modules/UserModal.vue
@@ -67,7 +67,7 @@
          <j-select-production  v-model="model.selectedProduction" :multi="true" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-production>
        </a-form-model-item>
        <a-form-model-item label="班组分配" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teamId">
          <j-dict-select-tag
          <j-dict-select-tag
          v-model="model.teamId"
          :triggerChange="true"
          dictCode="mom_base_team,name,id,del_flag = 0"
@@ -143,6 +143,7 @@
  import { duplicateCheck } from '@/api/api'
  import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction'
  import {mapActions} from 'vuex'
  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
  export default {
    name: "UserModal",
@@ -208,6 +209,13 @@
        nextProductionOptions:[],
        isDepartType:'',
      }
    },
    watch:{
      visible:{
        handler(value){
          if(value) this.initDictData('password_length')
        }
      }
    },
    created () {
@@ -541,7 +549,22 @@
        }else{
            this.departIdShow=true;
        }
      }
      },
      initDictData(dictCode) {
        //根据字典Code, 初始化字典数组
        ajaxGetDictItems(dictCode, null).then((res) => {
          if (res.success) {
            const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{"+Number(res.result[0].value)+",}$");
            this.validatorRules.password[0]={
              required:true,
              pattern: regExp,
              message: `密码由${res.result[0].value}位数字、大小写字母和特殊符号组成!`,
            }
          }
        })
      },
    }
  }
</script>