报表界面的显示调整,OEE管理的各个界面的导入模板,设备监控界面的设备信息的展示,加班管理界面的绘制
已添加12个文件
已修改14个文件
2142 ■■■■■ 文件已修改
public/static/假期管理.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/加工数量.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/加班管理.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/合格率管理.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/标准加工时间.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/计划停机.xls 补丁 | 查看 | 原始文档 | blame | 历史
public/static/非计划停机.xls 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/MdcplancloseList.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/OvertimeManagement.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/HolidayManagement/HolidayManagementList.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/MdcplancloseList/MdcplancloseForm.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementList.vue 724 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalEdit.vue 341 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalList.vue 340 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/StatisticalAnalysis/StatisticalAnalysisMain.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerList.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/mdcPassRate/mdcPassRateList.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/mdcProcessQuantity/mdcProcessQuantityList.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationList.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/modules/QuartzJobListModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/static/¼ÙÆÚ¹ÜÀí.xls
Binary files differ
public/static/¼Ó¹¤ÊýÁ¿.xls
Binary files differ
public/static/¼Ó°à¹ÜÀí.xls
Binary files differ
public/static/ºÏ¸ñÂʹÜÀí.xls
Binary files differ
public/static/±ê×¼¼Ó¹¤Ê±¼ä.xls
Binary files differ
public/static/¼Æ»®Í£»ú.xls
Binary files differ
public/static/·Ç¼Æ»®Í£»ú.xls
Binary files differ
src/main.js
@@ -51,11 +51,11 @@
import { rules } from '@/utils/rules'
import * as echarts from 'echarts'
import qs from 'qs'
import VCalendar from 'v-calendar'; // å¼•入日历插件
Vue.use(VCalendar, {
  componentPrefix: 'vc',
});
// import VCalendar from 'v-calendar'; // å¼•入日历插件
//
// Vue.use(VCalendar, {
//   componentPrefix: 'vc',
// });
//注入全局属性$message
import {message,notification } from 'ant-design-vue'
src/views/mdc/base/MdcplancloseList.vue
@@ -33,10 +33,11 @@
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <!--<a-button type="primary" icon="download" @click="handleExportXls('mdcPlanClose')">导出</a-button>-->
      <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
        <!--<a-button type="primary" icon="import">导入</a-button>-->
      <!--</a-upload>-->
      <a-button type="primary" icon="download" @click="importTemplate('计划停机模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('计划停机')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
        <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
      <!-- é«˜çº§æŸ¥è¯¢åŒºåŸŸ -->
      <!--<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
      <a-dropdown v-if="selectedRowKeys.length > 0">
@@ -172,6 +173,15 @@
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/计划停机.xls";
        a.download = "计划停机.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      initDictConfig(){
      },
      getSuperFieldList(){
src/views/mdc/base/OvertimeManagement.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <div style="width: 100%; height: 100%;">
    <a-card :bordered="false">
      <a-row type="flex" :gutter="16">
        <a-col :md="4">
          <a-tabs :activeKey="activeKey"  @change="tabChange">
            <a-tab-pane key="1" tab="车间层级" force-render>
              <base-tree @getCurrSelected="changeSelectionNode"></base-tree>
            </a-tab-pane>
            <a-tab-pane  v-if="isDepartType == 0" key="2" tab="部门层级">,
              <depart-tree  @getCurrSelectedDD="changeSelectionNodedd"></depart-tree>
            </a-tab-pane>
          </a-tabs>
        </a-col>
        <a-col :md="20">
          <overtime-management-list   ref="OvertimeManagementList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></overtime-management-list>
        </a-col>
      </a-row>
    </a-card>
  </div>
</template>
<script>
  import { putAction, getAction } from '@/api/manage'
  import { frozenBatch } from '@/api/api'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import JInput from '@/components/jeecg/JInput'
  import BaseTree from '../common/BaseTree'
  import OvertimeManagementList from './modules/OvertimeManagement/OvertimeManagementList'
  import JSuperQuery from '@/components/jeecg/JSuperQuery'
  import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton'
  import DepartTree from './modules/DepartList/DepartListTree/DepartTree'
  import {mapActions} from 'vuex'
  export default {
    name: 'OvertimeManagement',
    components: {
      JThirdAppButton,
      JInput,
      BaseTree,
      JSuperQuery,
      DepartTree,
      OvertimeManagementList
    },
    data() {
      return {
        activeKey: '1',
        description: '设备信息',
        selectEquementId: '',
        selectEquement: {},
        selectPeople:{},
        slectTypeTree:"",
        url: {
          equipmentStatistics: '/mdc/equipment/equipmentStatistics'
        },
        isDepartType:'',
      }
    },
    created() {
      this.queryTreeData()
    },
    methods: {
      ...mapActions(['QueryDepartTree']),
      queryTreeData() {
        this.QueryDepartTree().then(res => {
          if (res.success) {
            this.isDepartType = res.result[0].value
          } else {
            // this.$message.warn(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() =>{
        })
      },
      tabChange(val) {
        // console.log(val);
        this.activeKey = val
        this.slectTypeTree = val
      },
      // changeSelection(val) {
      //   this.selectEquementId = val
      //   this.$refs.efficiencyList.pQuery(val)
      //   this.$refs.efficiencyList.searchQuery()
      // },
      changeSelectionNode(val) {
        this.selectEquement = val
        this.slectTypeTree = "1"
      },
      changeSelectionNodedd(val) {
        this.selectPeople = val
        this.slectTypeTree = "2"
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
  .equipMessage {
    width: 100%;
    height: 10%;
  }
  .equipMessage table {
    width: 60%;
    height: 100%;
    line-height: 50%;
  }
  .equipMessage table td {
    text-align: center;
  }
  .equipMessage table td span {
    display: inline-block;
    width: 15px;
    height: 15px;
  }
  .equipMessage table td .equipShutdown {
    background-color: #808080;
  }
  .equipMessage table td .equipStandby {
    background-color: #ffbf37;
  }
  .equipMessage table td .equipRun {
    background-color: #19FE01;
  }
  .equipMessage table td .equipAlarm {
    background-color: #FD0008;
  }
</style>
src/views/mdc/base/modules/HolidayManagement/HolidayManagementList.vue
@@ -25,9 +25,9 @@
          <a-col :md="2" :sm="2" :xs="2">
            <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
          </a-col>
          <!--<a-col :lg="2" :md="3" :sm="3" :xs="3">-->
            <!--<a-button type="primary" @click="exportExcel" icon="download">导出</a-button>-->
          <!--</a-col>-->
          <a-col :lg="2" :md="3" :sm="3" :xs="3">
            <a-button type="primary" @click="exportExcel" icon="download">导出</a-button>
          </a-col>
        </a-row>
      </a-form>
    </div>
@@ -35,10 +35,12 @@
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <!--<a-button type="primary" icon="download" @click="handleExportXls('假期管理')">导出</a-button>-->
      <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
      <!--<a-button type="primary" icon="import">导入</a-button>-->
      <!--</a-upload>-->
      <a-button type="primary" icon="download" @click="importTemplate('假期管理模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('假期管理')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel">
@@ -565,6 +567,15 @@
          });
        }
      },
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/假期管理.xls";
        a.download = "假期管理.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      handleAdd() {
        this.$refs.modalForm.add(this.node)
        this.$refs.modalForm.title = '新增'
src/views/mdc/base/modules/MdcplancloseList/MdcplancloseForm.vue
@@ -112,7 +112,7 @@
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                // that.$message.success(res.message);
                that.$notification.warning({
                that.$notification.success({
                  message:'消息',
                  description:res.message
                });
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,724 @@
<template>
  <a-card :bordered="false" class="device_list">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div style="width: 100%; background-color: #fff" class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="7" :sm="7">
            <a-form-item label="时间">
              <a-range-picker @change="dateParamChange" v-model="dates"  format="YYYY-MM-DD HH:mm:ss" showTime/>
            </a-form-item>
          </a-col>
          <a-col :md="4" :sm="4">
            <a-form-item label="设备编号">
              <a-input placeholder="输入设备编号查询" v-model="queryParams.equipmentId"></a-input>
            </a-form-item>
          </a-col>
          <!--<a-col :md="4" :sm="4" :xs="4">-->
            <!--<a-form-item label="设备名称">-->
              <!--<a-input placeholder="输入设备名称查询" v-model="queryParams.equipmentName"></a-input>-->
            <!--</a-form-item>-->
          <!--</a-col>-->
          <a-col :md="2" :sm="3" :xs="3">
            <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
          </a-col>
          <a-col :md="2" :sm="2" :xs="2">
            <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
          </a-col>
          <!--<a-col :lg="2" :md="3" :sm="3" :xs="3">-->
            <!--<a-button type="primary" @click="exportExcel" icon="download">导出</a-button>-->
          <!--</a-col>-->
        </a-row>
      </a-form>
    </div>
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <a-button type="primary" icon="download" @click="importTemplate('加班管理模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('加班管理')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <!--<a-button type="primary" icon="import">导入</a-button>-->
      </a-upload>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel">
            <a-icon type="delete"/>
            åˆ é™¤
          </a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ
          <a-icon type="down"/>
        </a-button>
      </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div id="DeviceList">
      <a-table ref="table" bordered size="middle" rowKey="id" :columns="columns"
               :scroll="{x:1000}" :dataSource="dataSource" :pagination="ipagination" :loading="loading"
               :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
               @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
        <a @click="handleEdit(record)">编辑</a>
            <a-divider type="vertical" />
          <a @click="handleDelete(record.id)">删除</a>
        </span>
        <!--字符串超长截取省略号显示-->
        <span slot="num" slot-scope="text" style="font-weight: bold">
          <j-ellipsis :value="text" :length="8"/>
        </span>
        <span slot="name" slot-scope="text" style="font-weight: bold">
          <j-ellipsis :value="text" :length="8"/>
        </span>
        <span slot="model" slot-scope="text" style="font-weight: bold">
          <j-ellipsis :value="text" :length="8"/>
        </span>
      </a-table>
    </div>
    <!-- table区域-end -->
    <!--<device-repair-model></device-repair-model>-->
    <torqueconfiguration-modal ref="modalForm" @ok="modalFormOk"></torqueconfiguration-modal>
    <torqueconfiguration-modaledit  ref="modalFormedit" @ok="modalFormOk">></torqueconfiguration-modaledit>
    <!--<device-repair-model-add  ref="modalFormadd" @ok="modalFormOk"></device-repair-model-add>-->
    <!--<device-repair-model-edit ref="modalFormedit" @ok="modalFormOk"></device-repair-model-edit>-->
    <!--<repair-model ref="repairModelFrom" @ok="modalFormOk"></repair-model>-->
  </a-card>
</template>
<script>
  import moment from 'moment'
  import $ from 'jquery'
  import JDictSelectTag from '@/components/dict/JDictSelectTag'
  import JDate from '../../../../../components/jeecg/JDate'
  import {
    requestPut,
    deleteAction,
    getAction,
    downFile,
    getFileAccessHttpUrl
  } from '@/api/manage'
  import TorqueconfigurationModal from './OvertimeManagementModal'
  import TorqueconfigurationModaledit from './OvertimeManagementModalEdit'
  // import DeviceRepairModelAdd from './DeviceRepairModelAdd'
  // import DeviceRepairModelEdit from './DeviceRepairModelEdit'
  import '@/components/table2excel/table2excel'
  import {
    JeecgListMixin
  } from '@/mixins/JeecgListMixin'
  import JInput from '@/components/jeecg/JInput'
  import JEllipsis from '@/components/jeecg/JEllipsis'
  import Tooltip from 'ant-design-vue/es/tooltip'
  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
  export default {
    name: 'OvertimeManagementList',
    mixins: [JeecgListMixin],
    components: {
      Tooltip,
      TorqueconfigurationModal,
      TorqueconfigurationModaledit,
      // DeviceRepairModelAdd,
      // DeviceRepairModelEdit,
      JDictSelectTag,
      JInput,
      JDate,
      JEllipsis
    },
    props: {  nodeTree: '', Type:'',nodePeople: '' },
    data() {
      return {
        typeTree:"",
        typeParent:1,
        typeEquipment:1,
        dates: [],
        xianshi:"",
        readOnly:true,
        queryParam: {},
        queryParams:{},
        queryParamEquip:{},
        queryParamPeople:{},
        dataStartsoucre:[],
        columns: [
          {
            title: '设备编号',
            align: 'center',
            dataIndex: 'equipmentId'
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentName',
            // defaultSortOrder:'descend',
            // sorter: (a, b) => {return a.equipmentName>b.equipmentName?1:-1}
          },
          {
            title: '日期',
            align: 'center',
            dataIndex: 'torqueDate',
            // scopedSlots:{customRender:'startTime'},
            // customRender:(text,row,index) => {
            //   return moment(text).format("YYYY-MM-DD HH:mm:ss")
            // }
          },
          {
            title: '班次开始时间',
            align: 'center',
            dataIndex: 'torqueValue'
          },
          {
            title: '班次结束时间',
            align: 'center',
            dataIndex: 'torqueValue'
          },
          {
            title: '加班开始时间',
            align: 'center',
            dataIndex: 'torqueValue'
          },
          {
            title: '加班结束时间',
            align: 'center',
            dataIndex: 'torqueValue'
          },
          {
            title: '备注',
            align: 'center',
            dataIndex: 'notes'
          },
          {
            title: '操作',
            dataIndex: 'action',
            scopedSlots: {customRender: 'action'},
            align: "center",
            width: 150
          }
        ],
        url: {
          list: '/mdc/MdcTorqueConfig/pageList',
          delete: '/mdc/MdcTorqueConfig/deleteMdcTorqueConfig',
          deleteBatch: '/mdc/MdcTorqueConfig/deleteBatchMdcTorqueConfig',
          getEquipmentByPid: '/mdc/mdcequipment/getEquipmentByPid',
          exportXlsUrl: "/mdc/MdcTorqueConfig/exportXls",
          importExcelUrl: "/mdc/MdcTorqueConfig/importExcel",
        }
      }
    },
    watch:{
      Type(valmath){
        this.dataList = [];
        this.queryParams.typeTree = valmath
        // console.log(this.queryParams.typeTree)
      },
      nodeTree(val) { //监听currSelected å˜åŒ–,将变化后的数值传递给 getCurrSelected äº‹ä»¶
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId) {
            this.queryParamEquip.parentId =  ""
            this.queryParams.equipmentId = val.equipmentId
            this.queryParamEquip.equipmentId = val.equipmentId
          } else {
            this.queryParamEquip.parentId = val.key
            this.queryParams.equipmentId = ''
          }
          this.searchQuery()
        }
      },
      nodePeople(val){
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId) {
            this.queryParamEquip.parentId =  ""
            this.queryParams.equipmentId = val.equipmentId
            this.queryParamEquip.equipmentId = val.equipmentId
          } else {
            this.queryParamPeople.parentId = val.key
            this.queryParams.equipmentId = ''
          }
          this.searchQuery()
        }
      }
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/加班管理.xls";
        a.download = "加班管理.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
        // console.log(v2[0],v2[1])
      },
      onChange(value, dateString) {
        // console.log('Selected Time: ', value);
        // console.log('Formatted Selected Time: ', dateString);
      },
      onOk(value) {
        console.log('onOk: ', value);
      },
      searchReset() {
        if(this.queryParams.typeTree == "1"){
          this.typeTree = this.queryParams.typeTree
          this.typeParent =  this.queryParams.parentId
          this.typeEquipment = this.queryParams.equipmentId
          this.queryParams = {}
          this.queryParam = {}
          this.dates = []
          this.queryParams.typeTree = this.typeTree
          this.queryParams.parentId = this.typeParent
          if(this.queryParams.parentId !=  ""){
            this.queryParams.equipmentId =  ""
          }else{
            if(this.queryParams.equipmentId == this.queryParamEquip.equipmentId){
              this.queryParams.equipmentId =  this.typeEquipment
            }else{
              this.queryParams.equipmentId = this.queryParamEquip.equipmentId
            }
          }
          this.ipagination.current = 1
          this.ResetloadData();
        }else{
          this.typeTree = this.queryParams.typeTree
          this.typeParent =  this.queryParams.parentId
          // this.typeEquipment = this.queryParams.equipmentId
          this.queryParams = {}
          this.queryParam = {}
          this.dates = []
          this.queryParams.typeTree = this.typeTree
          this.queryParams.parentId = this.typeParent
          // this.queryParams.equipmentId =  this.typeEquipment
          this.ipagination.current = 1
          this.ResetloadData();
        }
      },
      ResetloadData() {
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        var params = this.getQueryParams();//查询条件
        if(!params){
          return false;
        }
        params.typeTree = this.queryParams.typeTree
        params.parentId = this.queryParams.parentId
        params.equipmentId = this.queryParams.equipmentId
        this.loading = true;
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            this.dataSource = res.result.records||res.result;
            // this.initDeviceType(this.dataSource)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            // this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      handleEdit: function (record) {
        this.$refs.modalFormedit.edit(record);
        this.$refs.modalFormedit.title = "编辑";
        this.$refs.modalFormedit.disableSubmit = false;
      },
      handleTableChange(pagination, filters, sorter) {
        this.dataSource = []
        //分页、排序、筛选变化时触发
        //TODO ç­›é€‰
        // console.log(pagination)
        if (Object.keys(sorter).length > 0) {
          this.isorter.column = sorter.field;
          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
        }
        this.ipagination = pagination;
        //获取查询条件
        let sqp = {}
        if(this.superQueryParams){
          sqp['superQueryParams']=encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        var param = Object.assign(sqp, this.queryParams, this.isorter ,this.filters);
        param.pageNo = this.ipagination.current;
        param.pageSize = this.ipagination.pageSize;
        param.field = this.getQueryField();
        param.parentId = this.queryParams.parentId;
        param.equipmentId = this.queryParams.equipmentId;
        param.startTime = this.queryParam.startTime;
        param.endTime =  this.queryParam.endTime;
        getAction(this.url.list,param).then((res) => {
          if(res.success){
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      searchQueryEdit(){
        if(this.queryParams.typeTree == "1"){
          this.queryParams.parentId =  this.queryParamEquip.parentId
        }else{
          this.queryParams.parentId = this.queryParamPeople.parentId
          this.queryParams.equipmentIds = ""
        }
        this.dataSource = [];
        //获取查询条件
        let sqp = {}
        if(this.superQueryParams){
          sqp['superQueryParams']=encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        var param = Object.assign(sqp, this.queryParams, this.isorter ,this.filters);
        param.pageNo = this.ipagination.current;
        param.pageSize = this.ipagination.pageSize;
        param.field = this.getQueryField();
        param.parentId = this.queryParams.parentId;
        param.equipmentId = this.queryParams.equipmentId;
        param.startTime = this.queryParam.startTime;
        param.endTime =  this.queryParam.endTime;
        getAction(this.url.list,param).then((res) => {
          if(res.success){
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      searchQuery(){
        if(this.queryParams.typeTree == "1"){
          this.queryParams.parentId =  this.queryParamEquip.parentId
          // this.queryParams.equipmentId =  this.queryParamEquip.equipmentId
        }else{
          this.queryParams.parentId = this.queryParamPeople.parentId
          // this.queryParams.equipmentId = ""
        }
        this.dataSource = [];
        //获取查询条件
        let sqp = {}
        if(this.superQueryParams){
          sqp['superQueryParams']=encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        var param = Object.assign(sqp, this.queryParams, this.isorter ,this.filters);
        param.pageNo = 1;
        param.pageSize = this.ipagination.pageSize;
        param.field = this.getQueryField();
        param.parentId = this.queryParams.parentId;
        param.equipmentId = this.queryParams.equipmentId;
        param.startTime = this.queryParam.startTime;
        param.endTime =  this.queryParam.endTime;
        // console.log(param);
        getAction(this.url.list,param).then((res) => {
          if(res.success){
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      handleExportXls(fileName){
        if(!fileName || typeof fileName != "string"){
          fileName = "导出文件"
        }
        let param = this.getQueryParams();
        if(this.selectedRowKeys && this.selectedRowKeys.length>0){
          param['selections'] = this.selectedRowKeys.join(",")
        }
        param.pageSize = this.ipagination.pageSize;
        param.field = this.getQueryField();
        param.parentId = this.queryParams.parentId;
        param.equipmentId = this.queryParams.equipmentId;
        param.startTime = this.queryParam.startTime;
        param.endTime =  this.queryParam.endTime;
        console.log("导出参数",param)
        downFile(this.url.exportXlsUrl,param).then((data)=>{
          if (!data) {
            this.$message.warning("文件下载失败")
            return
          }
          if (typeof window.navigator.msSaveBlob !== 'undefined') {
            window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls')
          }else{
            let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'}))
            let link = document.createElement('a')
            link.style.display = 'none'
            link.href = url
            link.setAttribute('download', fileName+'.xls')
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link); //下载完成移除元素
            window.URL.revokeObjectURL(url); //释放掉blob对象
          }
        })
      },
      loadData(arg) {
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1;
        }
        var params = this.getQueryParams();//查询条件
        if(!params){
          return false;
        }
        this.loading = true;
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            this.dataSource = res.result.records||res.result;
            // this.initDeviceType(this.dataSource)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            // this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      modalFormOk(val) {
        // æ–°å¢ž/修改 æˆåŠŸæ—¶ï¼Œé‡è½½åˆ—è¡¨
        this.searchQueryEdit();
        // this.$emit('openBasetree','')
        this.selectedRowKeys = []
      },
      handleDelete: function (id) {
        if(!this.url.delete){
          this.$message.error("请设置url.delete属性!")
          return
        }
        var that = this;
        deleteAction(that.url.delete, {id: id}).then((res) => {
          if (res.success) {
            //重新计算分页问题
            that.reCalculatePage(1)
            // that.$message.success(res.message);
            that.$notification.warning({
              message:'消息',
              description:res.message
            });
            that.searchQuery();
          } else {
            // that.$message.warning(res.message);
            that.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        });
      },
      batchDel: function () {
        if(!this.url.deleteBatch){
          this.$message.error("请设置url.deleteBatch属性!")
          return
        }
        if (this.selectedRowKeys.length <= 0) {
          // this.$message.warning('请选择一条记录!');
          this.$notification.warning({
            message:'消息',
            description:"请选择一条记录"
        });
          return;
        } else {
          var ids = "";
          for (var a = 0; a < this.selectedRowKeys.length; a++) {
            ids += this.selectedRowKeys[a] + ",";
          }
          var that = this;
          this.$confirm({
            title: "确认删除",
            content: "是否删除选中数据?",
            onOk: function () {
              that.loading = true;
              deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
                if (res.success) {
                  //重新计算分页问题
                  that.reCalculatePage(that.selectedRowKeys.length)
                  // that.$message.success(res.message);
                  that.$notification.warning({
                    message:'消息',
                    description:res.message
                  });
                  that.loadData();
                  that.onClearSelected();
                } else {
                  // that.$message.warning(res.message);
                  that.$notification.warning({
                    message:'消息',
                    description:res.message
                  });
                }
              }).finally(() => {
                that.loading = false;
              });
            }
          });
        }
      },
      handleAdd() {
        this.$refs.modalForm.add(this.node)
        this.$refs.modalForm.title = '新增'
        this.$refs.modalForm.disableSubmit = false
      },
      handleAddXIU() {
        this.$refs.modalFormadd.add()
        this.$refs.modalFormadd.title = '新增'
        this.$refs.modalFormadd.disableSubmit = false
      },
      pQuery(parentId) {
        this.queryParam.parentId = parentId[0]
        if(this.selectedRowKeys.length >= 1) {
          this.selectedRowKeys.length = 0
        }
        this.loadData()
      },
      onSelectChange(selectedRowKeys) {
        this.selectedRowKeys = selectedRowKeys
      },
      initEquipment(id) {
        let _this = this
        getAction(this.url.getEquipmentByPid, { pid: id }).then((res) => {
          if (res.success) {
            if (res.result) {
              _this.$set(this.queryParams, 'equipmentName', res.result.equipmentName)
              _this.$set(this.queryParams, 'equipmentId', res.result.equipmentId)
              _this.equipment = res.result
              _this.searchQuery()
            } else {
              // _this.$message.warning('请配置设备!')
              _this.$notification.warning({
                message:'消息',
                description:'请联系管理员,开放设备权限!'
              });
            }
          }
        })
      },
      exportExcel() {
        $("#DeviceList").table2excel({
          exclude: ".noExl",
          name: "Excel Document Name",
          filename: "扭矩配置",
          exclude_img: true,
          fileext: ".xls",
          exclude_links: true,
          exclude_inputs: true
        });
      },
    },
    created() {
      this.queryParam.typeTree = "1"
    }
  }
</script>
<style lang="less" scoped>
  @import '~@assets/less/common.less';
  @media screen and (min-width: 1920px){
    .device_list{
      height: 811px!important;
      overflow: scroll;
    }
  }
  @media screen and (min-width: 1680px) and (max-width: 1920px){
    .device_list{
      height: 811px!important;
      overflow: scroll;
    }
  }
  @media screen and (min-width: 1400px) and (max-width: 1680px){
    .device_list{
      height: 663px!important;
      overflow: scroll;
    }
  }
  @media screen and (min-width: 1280px) and (max-width: 1400px){
    .device_list{
      height: 564px!important;
      overflow: scroll;
    }
  }
  @media screen and (max-width: 1280px){
    .device_list{
      height: 564px!important;
      overflow: scroll;
    }
  }
</style>
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
<template>
  <a-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading"
           :okButtonProps="{ props: {disabled: disableSubmit} }" @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
    <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="['equipmentIds', validatorRules.equipmentIds]"
                              @search="deviceSearch" enter-button/>
            </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-time-picker :disabled="disableSubmit" :readOnly="disableSubmit" allow-clear
                             v-decorator="['startDate',validatorRules.startDate]"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item label="加班结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-time-picker :disabled="disableSubmit" :readOnly="disableSubmit"
                             v-decorator="['endDate',validatorRules.endDate]"/>
            </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-col>
        </a-row>
      </a-form>
    </a-spin>
    <torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list>
  </a-modal>
</template>
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  import TorqueconfigurationModalList from './OvertimeManagementModalList'
  // import JDate from './JDate'
  import {
    getAction,
    postAction,
    requestPut
  } from '@/api/manage'
  import {
    duplicateCheck
  } from '@/api/api'
  export default {
    name: 'TorqueconfigurationModal',
    components: {TorqueconfigurationModalList},
    props: {},
    data() {
      return {
        mesag:21,
        readOnly:true,
        title: '',
        visible: false,
        show: false,
        model: {},
        checked: false,
        startData:"",
        endData:"",
        labelCol: {
          xs: {
            span: 24
          },
          sm: {
            span: 6
          }
        },
        wrapperCol: {
          xs: {
            span: 24
          },
          sm: {
            span: 18
          }
        },
        labelColLong: {
          xs: {
            span: 24
          },
          sm: {
            span: 3
          }
        },
        wrapperColLong: {
          xs: {
            span: 24
          },
          sm: {
            span: 21
          }
        },
        confirmLoading: false,
        form: this.$form.createForm(this),
        validatorRules: {
          equipmentIds:{
            rules:[
              {
                required:true,
                message: "请选择设备"
              },
            ],
          },
        },
        url: {
          add: '/mdc/MdcTorqueConfig/addMdcTorqueConfig',
          edit: '/mdc/MdcTorqueConfig/editMdcTorqueConfig'
        },
        disableSubmit: true,
        partCategoryCascade: [],
        cascadeDefaultValue: []
      }
    },
    created() {
    },
    methods: {
      // disabledDate(current){
      //   //Can not slect days before today and today
      //   // return current && current < moment().endOf("day");
      //   return current < moment().subtract(+1, 'day')//今天之前的年月日不可选,不包括今天
      // },
      moment,
      // onChange(dates) {
      //   // console.log(111)
      //   // console.log(dates,dateStrings)
      //   // console.log('From: ', dates[0], ', to: ', dates[1]);
      //   // console.log('From: ', dateStrings[0], ', to: ', dateStrings[1]);
      //   // this.startTime = dateStrings[0];
      //   // this.endData = dateStrings[1];
      //   // console.log(this.startData,this.endData);
      // },
      onChangeEnd(dates, dateStrings){
        this.endTime = dateStrings[0];
      },
      getDeviceRows(val) {
        var equipmentIds;
        for(var i = 0;i<val.length;i++){
          if (i == 0) {
            equipmentIds =  val[i].equipmentId;
          } else {
            equipmentIds = equipmentIds + "," + val[i].equipmentId;
          }
        }
        // console.log("========",equipmentIds);
        this.form.setFieldsValue({
          equipmentIds: equipmentIds,
        })
        //   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
      },
      //级联框onChange事件
      // onChange(value) {
      //
      // },
      getParentIdsById(id) {
        let that = this
        getAction(this.url.getParentIdsById, {
          id: id
        }).then((res) => {
          if (res.success) {
            that.form.setFieldsValue({
              partCategoryId: res.result
            })
          }
        })
      },
      add(node) {
        let _this = this
        this.visible = true
        this.form.resetFields()
        this.model = {}
        this.$nextTick(() => {
          // _this.form.setFieldsValue({ 'tierType': node.entity.tierType + 1, 'parentName': node.title })
          // _this.model.parentId = node.key
        })
      },
      edit(record) {
        this.form.resetFields()
        this.model = Object.assign({}, record)
        this.visible = true
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model, 'equipmentIds', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime',
          ))
        })
      },
      close() {
        this.$emit('close')
        this.visible = false
        this.show = false
      },
      handleOk() {
        const that = this
        // è§¦å‘表单验证
        this.form.validateFields((err, values) => {
          if (!err) {
            that.confirmLoading = true
            let formData = Object.assign(this.model, values)
            // let start = moment(formData.startTime).format('YYYY-MM-DD HH:mm:ss');
            // let end = moment(formData.endTime).format('YYYY-MM-DD HH:mm:ss');
            // let startOne = start.replace(/:/g,'');
            // let endOne = end.replace(/:/g,'');
            // var data = new Date();
            // let stertDate = moment(data).format("YYYY-MM-DD HH:mm:ss");
            // let dataStart = stertDate.replace(/:/g,'');
            // if(startOne < dataStart){
            //   that.$message.warning("开始时间不能小于当前时间")
            //   that.confirmLoading = false
            // }else{
            //   if(startOne>=endOne){
            //     that.$message.warning("结束时间不能小于开始时间");
            //     // console.log(this.model)
            //     // 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()
                })
              }
            // }
          // }
        })
      },
      handleCancel() {
        this.close()
      },
      // loadCascade() {
      //   getAction(this.url.loadCascadeData).then((res) => {
      //     if (res.success) {
      //       this.partCategoryCascade = res.result
      //     }
      //   })
      // },
      onCascadeChange(value, selectedOptions) {
        this.cascadeDefaultValue = [...value]
      },
      filter(inputValue, path) {
        return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1)
      },
      //验证 ç¼–码
      validateNum(rule, value, callback) {
        var params = {
          tableName: 'lxmes_base_part',
          fieldName: 'num',
          fieldVal: value,
          dataId: this.model.id,
          //数据库中存在字段del_flag并使用该字段作为未删除策略,真删除:false å‡åˆ é™¤ï¼štrue
          delFlag: 'true'
        }
        duplicateCheck(params).then((res) => {
          if (res.success) {
            callback()
          } else {
            callback('存货编码已存在!')
          }
        })
      },
      checkboxChange(e) {
        this.checked = e.target.checked
      }
    }
  }
</script>
<style scoped lang="less">
  .ant-btn {
    padding: 0 10px;
    margin-left: 3px;
  }
  .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-input-number{
    width: 100%!important;
  }
</style>
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalEdit.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,341 @@
<template>
  <a-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading"
           :okButtonProps="{ props: {disabled: disableSubmit} }" @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <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>
          </a-col>
          <a-col :span="12">
            <a-form-item label="设备名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-input :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备名称"
                       v-decorator="['equipmentName',validatorRules.equipmentName]"/>
            </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-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 :disabled="disableSubmit" :readOnly="readOnly" allow-clear placeholder="请输入设备编号"
                       v-decorator="['equipmentId',validatorRules.equipmentId]"/>
            </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="['notes', validatorRules.notes]" placeholder="请输入备注"  ></a-textarea>
          </a-form-item>
        </a-row>
      </a-form>
    </a-spin>
    <!--<device-repair-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></device-repair-list-model>-->
    <!--<device-repair-edit-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></device-repair-edit-list-model>-->
  </a-modal>
</template>
<script>
  import moment from 'moment'
  import pick from 'lodash.pick'
  // import DeviceRepairListModel from './DeviceRepairListModel'
  // import DeviceRepairEditListModel from './DeviceRepairEditListModel'
  // import JDate from './JDate'
  import {
    getAction,
    postAction,
    requestPut
  } from '@/api/manage'
  import {
    duplicateCheck
  } from '@/api/api'
  export default {
    name: 'TorqueconfigurationModalEdit',
    // components: {DeviceRepairListModel,JDate,DeviceRepairEditListModel},
    props: {},
    data() {
      return {
        readOnly:true,
        title: '',
        visible: false,
        show: false,
        model: {},
        checked: false,
        startData:"",
        endData:"",
        labelCol: {
          xs: {
            span: 24
          },
          sm: {
            span: 6
          }
        },
        wrapperCol: {
          xs: {
            span: 24
          },
          sm: {
            span: 18
          }
        },
        labelColLong: {
          xs: {
            span: 24
          },
          sm: {
            span: 3
          }
        },
        wrapperColLong: {
          xs: {
            span: 24
          },
          sm: {
            span: 21
          }
        },
        confirmLoading: false,
        form: this.$form.createForm(this),
        validatorRules: {
          equipmentId:{
            rules:[
              {
                required:true,
                message: ""
              },
            ],
          },
          equipmentName:{
            rules:[
              {
                required:true,
                message: ""
              },
            ],
          },
          // mdcRepairType:{
          //   rules:[
          //     {
          //       required:true,
          //       message: ""
          //     },
          //   ],
          //   initialValue: '休班'
          // }
        },
        url: {
          add: '/mdc/mdcEquipmentRepair/add',
          edit: '/mdc/MdcTorqueConfig/editMdcTorqueConfig'
        },
        disableSubmit: true,
        partCategoryCascade: [],
        cascadeDefaultValue: [],
        editStart:''
      }
    },
    created() {
    },
    methods: {
      disabledDate(current){
        //Can not slect days before today and today
        // return current && current < moment().endOf("day");
        return current < moment().subtract(+1, 'day')//今天之前的年月日不可选,不包括今天
      },
      moment,
      // onChange(dates) {
      //   console.log(111)
      //   console.log(dates,dateStrings)
      //   // console.log('From: ', dates[0], ', to: ', dates[1]);
      //   // console.log('From: ', dateStrings[0], ', to: ', dateStrings[1]);
      //   // this.startTime = dateStrings[0];
      //   // this.endData = dateStrings[1];
      //   // console.log(this.startData,this.endData);
      // },
      onChangeEnd(dates, dateStrings){
        this.endTime = dateStrings[0];
      },
      getDeviceRows(val) {
        this.form.setFieldsValue({
          equipmentId: val.equipmentId,
          equipmentName: val.equipmentName,
        //   // equipmentModel: val.equipmentModel,
        //   // equipmentIp: val.equipmentIp,
        //   // dataPort: val.dataPort,
        //   // driveType: val.driveType
        })
        // var equipmentIds;
        // for(var i = 0;i<val.length;i++){
        //   if (i == 0) {
        //     equipmentIds =  val[i].equipmentId;
        //   } else {
        //     equipmentIds = equipmentIds + "," + val[i].equipmentId;
        //   }
        // }
        // console.log("========",equipmentIds);
        // this.form.setFieldsValue({
        //   equipmentId: equipmentIds,
        // })
      },
      deviceSearch() {
        this.$refs.deviceRepairListModel.openPage()
        this.$refs.deviceRepairListModel.title = '选择设备'
        this.$refs.deviceRepairListModel.disableSubmit = false
      },
      //级联框onChange事件
      // onChange(value) {
      //
      // },
      getParentIdsById(id) {
        let that = this
        getAction(this.url.getParentIdsById, {
          id: id
        }).then((res) => {
          if (res.success) {
            that.form.setFieldsValue({
              partCategoryId: res.result
            })
          }
        })
      },
      add(node) {
        let _this = this
        this.visible = true
        this.form.resetFields()
        this.model = {}
        this.$nextTick(() => {
          // _this.form.setFieldsValue({ 'tierType': node.entity.tierType + 1, 'parentName': node.title })
          // _this.model.parentId = node.key
        })
      },
      edit(record) {
        this.form.resetFields()
        this.model = Object.assign({}, record)
        // this.editStart  = (this.model.startTime).replace(/:/g,'');
        this.visible = true
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model,'equipmentId', 'equipmentName','torqueDate', 'torqueValue','notes'
          ))
        })
      },
      close() {
        this.$emit('close')
        this.visible = false
        this.show = false
      },
      handleOk() {
        const that = this
        // è§¦å‘表单验证
        this.form.validateFields((err, values) => {
          if (!err) {
            that.confirmLoading = true
            let formData = Object.assign(this.model, values)
            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()
            })
          }
        })
      },
      handleCancel() {
        this.close()
      },
      // loadCascade() {
      //   getAction(this.url.loadCascadeData).then((res) => {
      //     if (res.success) {
      //       this.partCategoryCascade = res.result
      //     }
      //   })
      // },
      onCascadeChange(value, selectedOptions) {
        this.cascadeDefaultValue = [...value]
      },
      filter(inputValue, path) {
        return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1)
      },
      //验证 ç¼–码
      validateNum(rule, value, callback) {
        var params = {
          tableName: 'lxmes_base_part',
          fieldName: 'num',
          fieldVal: value,
          dataId: this.model.id,
          //数据库中存在字段del_flag并使用该字段作为未删除策略,真删除:false å‡åˆ é™¤ï¼štrue
          delFlag: 'true'
        }
        duplicateCheck(params).then((res) => {
          if (res.success) {
            callback()
          } else {
            callback('存货编码已存在!')
          }
        })
      },
      checkboxChange(e) {
        this.checked = e.target.checked
      }
    }
  }
</script>
<style scoped lang="less">
  .ant-btn {
    padding: 0 10px;
    margin-left: 3px;
  }
  .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-input-number{
    width: 100%!important;
  }
</style>
src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModalList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,340 @@
<template>
  <a-modal :title="title" width="70%" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel"
           cancelText="关闭">
    <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="6"  v-if="isDepartType == 0">
              <a-form-item label="部门" v-if="isDepartType == 0">
                <!--<a-select v-model="queryParam.sectionPid" placeholder="请选择部门" :options="sectionPData" @change="initGroupOptions" />-->
                <a-tree-select
                  v-model="value"
                  style="width: 100%"
                  :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
                  :tree-data="treeData"
                  placeholder="请选择部门"
                  tree-default-expand-all
                >
                  <!--<span v-if="key === '0-0-1'" slot="title" slot-scope="{ key, value }" style="color: #08c">-->
                  <!--Child Node1 {{ value }}-->
                  <!--</span>-->
                </a-tree-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6">
              <a-form-item label="车间" >
                <!--<a-select v-model="queryParam.sectionId" placeholder="请选择团队" :options="sectionData"/>-->
                <a-tree-select
                  v-model="valueProduct"
                  style="width: 100%"
                  :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
                  :tree-data="sectionData"
                  placeholder="请选择车间"
                  tree-default-expand-all
                >
                  <!--<span v-if="key === '0-0-1'" slot="title" slot-scope="{ key, value }" style="color: #08c">-->
                  <!--Child Node1 {{ value }}-->
                  <!--</span>-->
                </a-tree-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6">
              <a-form-item label="设备编码">
                <a-input placeholder="请输入设备编码检索" v-model="queryParam.equipmentId"></a-input>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6">
              <a-form-item label="设备名称">
                <a-input placeholder="请输入设备名称检索" v-model="queryParam.equipmentName"></a-input>
              </a-form-item>
            </a-col>
          </a-row>
        </a-form>
      </div>
      <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
      <div class="table-operator">
        <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
        <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
      </div>
      <!-- table区域-begin -->
      <div>
        <a-table ref="table" size="middle" bordered rowKey="id" :scroll="{  y: 400 }" :columns="columns"
                 :dataSource="dataSource" :pagination="ipagination" :loading="loading"
                 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
                 @change="handleTableChange">
        </a-table>
      </div>
      <!-- table区域-end -->
    </a-card>
  </a-modal>
</template>
<script>
  import {mapActions} from 'vuex'
  import {
    ajaxGetSelectItems
  } from '@/api/api'
  import JDictSelectTag from '@/components/dict/JDictSelectTag'
  import {
    deleteAction,
    requestPut,
    getAction,
    postAction
  } from '@/api/manage'
  import {
    JeecgListMixin
  } from '@/mixins/JeecgListMixin'
  import JInput from '@/components/jeecg/JInput'
  import JEllipsis from '@/components/jeecg/JEllipsis'
  import Tooltip from 'ant-design-vue/es/tooltip'
  import JDate from '@/components/jeecg/JDate'
  import moment from 'moment'
  export default {
    name: 'DeviceCalendarListModel',
    mixins: [JeecgListMixin],
    components: {
      JDictSelectTag,
      JEllipsis,
      JInput,
      Tooltip,
      JDate
    },
    props: {
      status: {
        type: Number,
        default: 1
      }
    },
    data() {
      return {
        isDepartType:'',
        /*readOnly:true,*/
        title:'',
        visible: false,
        SelectedList:[],
        treeData:[],
        /*disableMixinCreated: true,
        queryParam: {},*/
        columns: [
          {
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: "center",
            customRender: function (t, r, index) {
              return parseInt(index) + 1;
            }
          },{
            title: '设备编码',
            align: 'center',
            dataIndex: 'equipmentId',
          },
          {
            title: '设备名称',
            align: 'center',
            dataIndex: 'equipmentName',
          },
          {
            title: '驱动类型',
            align: 'center',
            dataIndex: 'driveType'
          },
          {
            title: '数控系统',
            align: 'center',
            dataIndex: 'controlSystem'
          },
        ],
        sectionPData: [],
        sectionData: [],
        url: {
          list: '/mdc/mdcEquipment/findEquipmentList',
          loadOptions: '/sys/sysDepart/loadDepartTreeOptions',
          loadProductionOptions:'/mdc/mdcProduction/loadProductionTreeOptions'
        },
        value:undefined,
        valueProduct:undefined
      }
    },
    created() {
      this.queryTreeData()
    },
    watch: {
      value(value) {
        // console.log(value);
        this.queryParam.departId = value
      },
      valueProduct(value){
        this.queryParam.productionId = value
      }
    },
    methods: {
      ...mapActions(['QueryDepartTree']),
      queryTreeData() {
        this.QueryDepartTree().then(res => {
          if (res.success) {
            this.isDepartType = res.result[0].value
          } else {
            // this.$message.warn(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() =>{
        })
      },
      onSelectChange(selectedRowKeys, selectionRows) {
        // this.SelectedList.push(selectedRowKeys);
        this.selectedRowKeys = selectedRowKeys;
        this.selectionRows = selectionRows
        // this.SelectedList =[...this.SelectedList,...selectionRows];
        // console.log(this.SelectedList);
      },
      handleTableChange(pagination, filters, sorter) {
        // this.onClearSelected()
        //分页、排序、筛选变化时触发
        //TODO ç­›é€‰
        if (Object.keys(sorter).length > 0) {
          this.isorter.column = sorter.field;
          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
        }
        this.ipagination = pagination;
        this.loadData();
      },
      openPage() {
        this.visible = true
        this.onClearSelected()
        this.dataSource = [];
        this.queryParam = {
          status: this.status
        };
        this.loadData();
        this.initOptions();
        this.initGroupOptions()
      },
      loadData(arg) {
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1;
        }
        var params = this.getQueryParams();//查询条件
        if(!params){
          return false;
        }
        this.loading = true;
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            // console.log(res)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      modalFormOk(val) {
        // æ–°å¢ž/修改 æˆåŠŸæ—¶ï¼Œé‡è½½åˆ—è¡¨
        this.loadData();
        this.selectedRowKeys = [val.id];
      },
      searchQuery() {
        this.loadData();
        this.onClearSelected()
      },
      searchReset() {
        this.queryParam = {
          status: 1
        };
        this.loadData();
        this.onClearSelected()
      },
      close() {
        this.$emit('close')
        this.visible = false
      },
      handleCancel() {
        this.close()
      },
      handleOk() {
        // this.selectionRows =  this.SelectedList;
        // console.log(this.selectionRows);
        this.$emit('sendSelectionRows', this.selectionRows)
        this.close()
      },
      initOptions() {
        getAction(this.url.loadOptions).then(res => {
          if (res.success) {
            this.treeData = res.result
          } else {
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        })
      },
      initGroupOptions() {
        getAction(this.url.loadProductionOptions).then(res => {
          if (res.success) {
            this.sectionData = res.result
          } else {
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        })
      }
    },
  }
</script>
<style>
  @import '~@assets/less/common.less';
  .frozenRowClass {
    color: #c9c9c9;
  }
  .success {
    color: green;
  }
  .error {
    color: red;
  }
</style>
src/views/mdc/base/modules/StatisticalAnalysis/StatisticalAnalysisMain.vue
@@ -127,13 +127,8 @@
      }
    },
    created(){
      let collectTime = moment(moment().add(-1,'d'),'YYYY-MM-DD');
      this.queryParams.collectTime = collectTime;
      this.queryParams.dateTime = this.queryParams.collectTime.format('YYYYMMDD')
      this.initEquipmentNode()
      this.queryStatistical();
src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerList.vue
@@ -35,10 +35,11 @@
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <!--<a-button type="primary" icon="download" @click="handleExportXls('假期管理')">导出</a-button>-->
      <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
      <!--<a-button type="primary" icon="import">导入</a-button>-->
      <!--</a-upload>-->
      <a-button type="primary" icon="download" @click="importTemplate('非计划停机模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('非计划停机')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel">
@@ -239,6 +240,15 @@
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/非计划停机.xls";
        a.download = "非计划停机.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue
@@ -225,6 +225,7 @@
              <a-descriptions
                title="运行数据"
                v-show="mdcDriveTypeParamConfigList != null"
                v-if="driverType != 'PLC'"
                :column="4"
              >
@@ -239,6 +240,7 @@
              <a-descriptions
                title="坐标信息"
                v-show="xyzAliasesList != null"
                v-if="driverType != 'PLC'"
                :column="4"
              >
src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
@@ -47,9 +47,9 @@
          <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: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <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>
@@ -71,9 +71,9 @@
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td  class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
              <td  class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
              <td  class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
              <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>
@@ -401,33 +401,38 @@
  left: 0;
  z-index: 1;
}
.table tbody tr .wenzi{
  writing-mode: vertical-lr;
  text-orientation: upright;
  letter-spacing: 2px;
}
.table tbody tr .kaitou{
  z-index: 1;
  background-color: white;
}
.table tbody tr .tdgu1{
  position: sticky;
  left: 150px;
  left: 50px;
  z-index: 2;
}
.table tbody tr .tdgu2{
  position: sticky;
  left: 300px;
  left: 100px;
  z-index: 2;
}
.table tbody tr .tdgu3{
  position: sticky;
  left: 450px;
  left: 150px;
  z-index: 2;
}
.table tbody tr .tdgu4{
  position: sticky;
  left: 550px;
  left: 250px;
  z-index: 2;
}
.table tbody tr .tdgu5{
  position: sticky;
  left: 700px;
  left: 400px;
  z-index: 2;
}
@@ -452,23 +457,23 @@
}
.table2 thead .equipname .dong2{
  z-index: 5;
  left: 150px;
  left: 50px;
}
.table2 thead .equipname .dong3{
  z-index: 5;
  left: 300px;
  left: 100px;
}
.table2 thead .equipname .dong4{
  z-index: 5;
  left: 450px;
  left: 150px;
}
.table2 thead .equipname .dong5{
  z-index: 5;
  left: 550px;
  left: 250px;
}
.table2 thead .equipname .dong6{
  z-index: 5;
  left: 700px;
  left: 400px;
}
@@ -539,9 +544,9 @@
  width: auto;
}
.dataContent tr td {
  height: 35px;
}
/*.dataContent tr td {*/
  /*height: 35px;*/
/*}*/
.dataContent .mathData td {
  padding: 10px;
src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -50,9 +50,9 @@
          <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: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <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>
@@ -74,9 +74,9 @@
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td  class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
              <td  class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
              <td  class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
              <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>
@@ -431,33 +431,38 @@
  left: 0;
  z-index: 1;
}
.table tbody tr .wenzi{
  writing-mode: vertical-lr;
  text-orientation: upright;
  letter-spacing: 2px;
}
.table tbody tr .kaitou{
  z-index: 1;
  background-color: white;
}
.table tbody tr .tdgu1{
  position: sticky;
  left: 150px;
  left: 50px;
  z-index: 2;
}
.table tbody tr .tdgu2{
  position: sticky;
  left: 300px;
  left: 100px;
  z-index: 2;
}
.table tbody tr .tdgu3{
  position: sticky;
  left: 450px;
  left: 150px;
  z-index: 2;
}
.table tbody tr .tdgu4{
  position: sticky;
  left: 550px;
  left: 250px;
  z-index: 2;
}
.table tbody tr .tdgu5{
  position: sticky;
  left: 700px;
  left: 400px;
  z-index: 2;
}
.table2 thead tr .timeth,
@@ -481,23 +486,23 @@
}
.table2 thead .equipname .dong2{
  z-index: 5;
  left: 150px;
  left: 50px;
}
.table2 thead .equipname .dong3{
  z-index: 5;
  left: 300px;
  left: 100px;
}
.table2 thead .equipname .dong4{
  z-index: 5;
  left: 450px;
  left: 150px;
}
.table2 thead .equipname .dong5{
  z-index: 5;
  left: 550px;
  left: 250px;
}
.table2 thead .equipname .dong6{
  z-index: 5;
  left: 700px;
  left: 400px;
}
@media screen and (min-width: 1920px){
@@ -576,9 +581,9 @@
  /*width: auto;*/
}
.dataContent tr td {
  height: 35px;
}
/*.dataContent tr td {*/
  /*height: 35px;*/
/*}*/
.dataContent .mathData td {
  padding: 10px;
src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
@@ -67,9 +67,9 @@
          <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: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <th  class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"></th>
              <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>
@@ -101,9 +101,9 @@
            </thead>
            <tbody>
            <tr class="mathData" v-for="(item, index) in dataList">
              <td  class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
              <td  class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
              <td  class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
              <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>
@@ -472,38 +472,43 @@
    left: 0;
    z-index: 1;
  }
  .table tbody tr .wenzi{
    writing-mode: vertical-lr;
    text-orientation: upright;
    letter-spacing: 2px;
  }
  .table tbody tr .kaitou{
    z-index: 1;
    background-color: white;
  }
  .table tbody tr .tdgu1{
    position: sticky;
    left: 150px;
    left: 50px;
    z-index: 2;
  }
  .table tbody tr .tdgu2{
    position: sticky;
    left: 300px;
    left: 100px;
    z-index: 2;
  }
  .table tbody tr .tdgu3{
    position: sticky;
    left: 450px;
    left: 150px;
    z-index: 2;
  }
  .table tbody tr .tdgu4{
    position: sticky;
    left: 550px;
    left: 250px;
    z-index: 2;
  }
  .table tbody tr .tdgu5{
    position: sticky;
    left: 700px;
    left: 400px;
    z-index: 2;
  }
  .table tbody tr .tdgu6{
    position: sticky;
    left: 800px;
    left: 500px;
    z-index: 2;
  }
@@ -528,27 +533,27 @@
  }
  .table2 thead .equipname .dong2{
    z-index: 5;
    left: 150px;
    left: 50px;
  }
  .table2 thead .equipname .dong3{
    z-index: 5;
    left: 300px;
    left: 100px;
  }
  .table2 thead .equipname .dong4{
    z-index: 5;
    left: 450px;
    left: 150px;
  }
  .table2 thead .equipname .dong5{
    z-index: 5;
    left: 550px;
    left: 250px;
  }
  .table2 thead .equipname .dong6{
    z-index: 5;
    left: 700px;
    left: 400px;
  }
  .table2 thead .equipname .dong7{
    z-index: 6;
    left: 800px;
    left: 500px;
  }
  @media screen and (min-width: 1920px){
@@ -591,7 +596,7 @@
  .dataContent {
    white-space: nowrap;
    /*margin: 0;*/
    border: none;
    /*border: none;*/
    border-collapse: separate;
    border-spacing: 0;
    /*table-layout: fixed;*/
@@ -619,9 +624,9 @@
    width: auto;
  }
  .dataContent tr td {
    height: 35px
  }
  /*.dataContent tr td {*/
    /*height: 35px*/
  /*}*/
  .dataContent .mathData td {
    padding: 10px;
src/views/mdc/base/modules/mdcPassRate/mdcPassRateList.vue
@@ -35,6 +35,7 @@
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <a-button type="primary" icon="download" @click="importTemplate('合格率模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('合格率管理')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <a-button type="primary" icon="import">导入</a-button>
@@ -239,6 +240,15 @@
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/合格率管理.xls";
        a.download = "合格率管理.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
src/views/mdc/base/modules/mdcProcessQuantity/mdcProcessQuantityList.vue
@@ -35,6 +35,7 @@
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <a-button type="primary" icon="download" @click="importTemplate('加工数量模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('加工数量')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <a-button type="primary" icon="import">导入</a-button>
@@ -243,6 +244,15 @@
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/加工数量.xls";
        a.download = "加工数量.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationList.vue
@@ -35,6 +35,7 @@
    <div class="table-operator" style="display: inline;">
      <a-button @click="handleAdd" type="primary" icon="plus">新增
      </a-button>
      <a-button type="primary" icon="download" @click="importTemplate('标准加工时间模板')">导入模板</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('标准加工时间')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
      <a-button type="primary" icon="import">导入</a-button>
@@ -233,6 +234,15 @@
      },
    },
    methods: {
      importTemplate(fileName){
        var a = document.createElement("a");
        a.href = "/static/标准加工时间.xls";
        a.download = "标准加工时间.xls";
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        a.remove();
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
src/views/system/modules/QuartzJobListModal.vue
@@ -67,7 +67,7 @@
  import JDictSelectTag from '@/components/dict/JDictSelectTag'
  import {
    deleteAction,
    requestPut,
    requestPut,
    getAction,
    downFile,
    postAction