From fb345cc1a3fb3408bc9c0dd59a0a7935c5344afa Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期三, 05 七月 2023 16:21:19 +0800
Subject: [PATCH] 扭矩配置界面调取接口渲染,利用率界面增加层级并合并显示

---
 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue     |  354 ++++++++++-
 src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue                      |  106 +++
 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue |  331 ++++++++++
 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue      |  663 ++++++++++++++++-----
 src/views/mdc/base/Torqueconfiguration.vue                                          |   63 +
 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalList.vue |  284 +++++++++
 6 files changed, 1,582 insertions(+), 219 deletions(-)

diff --git a/src/views/mdc/base/Torqueconfiguration.vue b/src/views/mdc/base/Torqueconfiguration.vue
index 3d9239f..6196264 100644
--- a/src/views/mdc/base/Torqueconfiguration.vue
+++ b/src/views/mdc/base/Torqueconfiguration.vue
@@ -1,20 +1,30 @@
 <template>
-  <a-card :bordered="false">
-    <div style="width: 100%; height: 100%;overflow: hidden">
+  <div style="width: 100%; height: 100%;">
+    <a-card :bordered="false">
       <a-row type="flex" :gutter="16">
-        <a-col :md="5" :sm="24">
-          <base-tree @getCurrSelected="changeSelectionNode"></base-tree>
+        <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 key="2" tab="閮ㄩ棬灞傜骇">,
+              <depart-tree  @getCurrSelectedDD="changeSelectionNodedd"
+              ></depart-tree>
+            </a-tab-pane>
+          </a-tabs>
         </a-col>
-        <a-col :md="24-5" :sm="24">
-          <torqueconfiguration-list :equement="selectEquement"></torqueconfiguration-list>
+        <a-col :md="20">
+          <!--<EfficiencyList ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></EfficiencyList>-->
+          <torqueconfiguration-list  ref="TorqueconfigurationList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></torqueconfiguration-list>
         </a-col>
       </a-row>
-    </div>
-  </a-card>
+    </a-card>
+  </div>
+
 </template>
 
 <script>
-  import { putAction,getAction } from '@/api/manage'
+  import { putAction, getAction } from '@/api/manage'
   import { frozenBatch } from '@/api/api'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import JInput from '@/components/jeecg/JInput'
@@ -22,7 +32,7 @@
   import TorqueconfigurationList from './modules/TorqueconfigurationList/TorqueconfigurationList'
   import JSuperQuery from '@/components/jeecg/JSuperQuery'
   import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton'
-
+  import DepartTree from './modules/DepartList/DepartListTree/DepartTree'
   export default {
     name: 'Torqueconfiguration',
     components: {
@@ -30,23 +40,42 @@
       JInput,
       BaseTree,
       JSuperQuery,
-      TorqueconfigurationList,
+      DepartTree,
+      TorqueconfigurationList
     },
     data() {
       return {
-        description: '鎵煩閰嶇疆绠$悊椤甸潰',
-        selectEquement:{},
-        equipmentStatisticsInfo:{},
-        url:{
-          equipmentStatistics:"/mdc/equipment/equipmentStatistics"
+        activeKey: '1',
+        description: '璁惧淇℃伅',
+        selectEquementId: '',
+        selectEquement: {},
+        selectPeople:{},
+        slectTypeTree:"",
+        url: {
+          equipmentStatistics: '/mdc/equipment/equipmentStatistics'
         }
       }
     },
     created() {
     },
     methods: {
-      changeSelectionNode(val){
+      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"
       }
     }
 
diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue
index de33d06..dfeec49 100644
--- a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue
+++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationList.vue
@@ -1,209 +1,211 @@
 <template>
-  <a-card :bordered="false">
+  <a-card :bordered="false" class="device_list">
     <!-- 鏌ヨ鍖哄煙 -->
-    <div class="table-page-search-wrapper">
+    <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 :xl="6" :lg="7" :md="8" :sm="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="queryParam.equipmentid"></a-input>
+              <a-input placeholder="杈撳叆璁惧缂栧彿鏌ヨ" v-model="queryParams.equipmentId"></a-input>
             </a-form-item>
           </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :md="4" :sm="4" :xs="4">
             <a-form-item label="璁惧鍚嶇О">
-              <a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentname"></a-input>
+              <a-input placeholder="杈撳叆璁惧鍚嶇О鏌ヨ" v-model="queryParams.equipmentName"></a-input>
             </a-form-item>
           </a-col>
-          <template v-if="toggleSearchStatus">
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="鏃ユ湡">
-                <j-date placeholder="璇烽�夋嫨鏃ユ湡" v-model="queryParam.startdate"></j-date>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="鎵煩鍊�">
-                <a-input placeholder="璇疯緭鍏ユ壄鐭╁��" v-model="queryParam.torquevalue"></a-input>
-              </a-form-item>
-            </a-col>
-          </template>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
-              <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
-              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
-              </a>
-            </span>
+          <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>
-    <!-- 鏌ヨ鍖哄煙-END -->
-
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
-    <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
+    <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-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">
-        <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>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
-        <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
-      </div>
-
-      <a-table
-        ref="table"
-        size="middle"
-        :scroll="{x:true}"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        class="j-table-force-nowrap"
-        @change="handleTableChange">
-
-        <!--<template slot="htmlSlot" slot-scope="text">-->
-          <!--<div v-html="text"></div>-->
-        <!--</template>-->
-        <!--<template slot="imgSlot" slot-scope="text,record">-->
-          <!--<span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span>-->
-          <!--<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>-->
-        <!--</template>-->
-        <!--<template slot="fileSlot" slot-scope="text">-->
-          <!--<span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span>-->
-          <!--<a-button-->
-            <!--v-else-->
-            <!--:ghost="true"-->
-            <!--type="primary"-->
-            <!--icon="download"-->
-            <!--size="small"-->
-            <!--@click="downloadFile(text)">-->
-            <!--涓嬭浇-->
-          <!--</a-button>-->
-        <!--</template>-->
-
+    <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-dropdown>
-            <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a>
-            <a-menu slot="overlay">
-              <a-menu-item>
-                <a @click="handleDetail(record)">璇︽儏</a>
-              </a-menu-item>
-              <a-menu-item>
-                <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">
-                  <a>鍒犻櫎</a>
-                </a-popconfirm>
-              </a-menu-item>
-            </a-menu>
-          </a-dropdown>
+        <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 '@/assets/less/TableExpand.less'
-  import { mixinDevice } from '@/utils/mixin'
-  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import moment from 'moment'
+  import $ from 'jquery'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+  import JDate from '../../../../../components/jeecg/JDate'
+  import {
+    requestPut,
+    deleteAction,
+    getAction
+  } from '@/api/manage'
   import TorqueconfigurationModal from './TorqueconfigurationModal'
-
+  import TorqueconfigurationModaledit from './TorqueconfigurationModalEdit'
+  // 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: 'TorqueconfigurationList',
-    mixins:[JeecgListMixin, mixinDevice],
+    mixins: [JeecgListMixin],
     components: {
-      TorqueconfigurationModal
+      Tooltip,
+      TorqueconfigurationModal,
+      TorqueconfigurationModaledit,
+      // DeviceRepairModelAdd,
+      // DeviceRepairModelEdit,
+      JDictSelectTag,
+      JInput,
+      JDate,
+      JEllipsis
     },
-    data () {
+    props: {  nodeTree: '', Type:'',nodePeople: '' },
+    data() {
       return {
-        description: '鎵煩閰嶇疆绠$悊椤甸潰',
-        // 琛ㄥご
+        typeTree:"",
+        typeParent:1,
+        typeEquipment:1,
+        dates: [],
+        xianshi:"",
+        readOnly:true,
+        queryParam: {},
+        queryParams:{},
+        queryParamEquip:{},
+        queryParamPeople:{},
+        dataStartsoucre:[],
         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: 'equipmentid'
+            title: '璁惧鍚嶇О',
+            align: 'center',
+            dataIndex: 'equipmentName',
+            // defaultSortOrder:'descend',
+            // sorter: (a, b) => {return a.equipmentName>b.equipmentName?1:-1}
           },
           {
-            title:'璁惧鍚嶇О',
-            align:"center",
-            dataIndex: 'equipmentname'
+            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: 'startdate',
-            customRender:function (text) {
-              return !text?"":(text.length>10?text.substr(0,10):text)
-            }
+            title: '鎵煩鍊�',
+            align: 'center',
+            dataIndex: 'torqueValue'
           },
           {
-            title:'鎵煩鍊�',
-            align:"center",
-            dataIndex: 'torquevalue'
-          },
-          {
-            title:'澶囨敞',
-            align:"center",
+            title: '澶囨敞',
+            align: 'center',
             dataIndex: 'notes'
           },
           {
             title: '鎿嶄綔',
             dataIndex: 'action',
-            align:"center",
-            fixed:"right",
-            width:147,
-            scopedSlots: { customRender: 'action' }
+            scopedSlots: {customRender: 'action'},
+            align: "center",
+            width: 150
           }
         ],
         url: {
-          list: "/torquec/torqueconfiguration/list",
-          delete: "/torquec/torqueconfiguration/delete",
-          deleteBatch: "/torquec/torqueconfiguration/deleteBatch",
-          exportXlsUrl: "/torquec/torqueconfiguration/exportXls",
-          importExcelUrl: "torquec/torqueconfiguration/importExcel",
-
-        },
-        dictOptions:{},
-        superFieldList:[],
+          list: '/mdc/MdcTorqueConfig/pageList',
+          deleteBatch: '/mdc/MdcTorqueConfig/deleteMdcTorqueConfig',
+          getEquipmentByPid: '/mdc/mdcequipment/getEquipmentByPid',
+          exportXlsUrl: "/mdc/MdcTorqueConfig/exportXls",
+          importExcelUrl: "/mdc/MdcTorqueConfig/importExcel",
+        }
       }
     },
-    created() {
-    this.getSuperFieldList();
+    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(){
@@ -211,20 +213,357 @@
       },
     },
     methods: {
-      initDictConfig(){
+      dateParamChange(v1, v2) {
+        // console.log(v1,v2)
+        this.queryParam.startTime = v2[0]
+        this.queryParam.endTime = v2[1]
+        // console.log(v2[0],v2[1])
       },
-      getSuperFieldList(){
-        let fieldList=[];
-        fieldList.push({type:'string',value:'equipmentid',text:'璁惧缂栧彿',dictCode:''})
-        fieldList.push({type:'string',value:'equipmentname',text:'璁惧鍚嶇О',dictCode:''})
-        fieldList.push({type:'date',value:'startdate',text:'鏃ユ湡'})
-        fieldList.push({type:'string',value:'torquevalue',text:'鎵煩鍊�',dictCode:''})
-        fieldList.push({type:'string',value:'notes',text:'澶囨敞',dictCode:''})
-        this.superFieldList = fieldList
-      }
+      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("璇疯缃畊rl.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)
+          }
+        }).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)
+          }
+        }).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)
+          }
+        }).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)
+          }
+        }).finally(() => {
+          this.loading = false
+        })
+      },
+      loadData(arg) {
+        if(!this.url.list){
+          this.$message.error("璇疯缃畊rl.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)
+          }
+        }).finally(() => {
+          this.loading = false
+        })
+      },
+      modalFormOk(val) {
+        // 鏂板/淇敼 鎴愬姛鏃讹紝閲嶈浇鍒楄〃
+        this.searchQueryEdit();
+        // this.$emit('openBasetree','')
+        this.selectedRowKeys = []
+      },
+      handleDelete: function (id) {
+        if(!this.url.deleteBatch){
+          this.$message.error("璇疯缃畊rl.delete灞炴��!")
+          return
+        }
+        var that = this;
+        deleteAction(that.url.deleteBatch, {id: id}).then((res) => {
+          if (res.success) {
+            //閲嶆柊璁$畻鍒嗛〉闂
+            that.reCalculatePage(1)
+            that.$message.success(res.message);
+            that.searchQuery();
+          } else {
+            that.$message.warning(res.message);
+          }
+        });
+      },
+      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('璇烽厤缃澶囷紒')
+            }
+          }
+        })
+      },
+      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 scoped>
+
+<style lang="less" scoped>
   @import '~@assets/less/common.less';
-</style>
\ No newline at end of file
+
+  @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>
diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
index 0b2f139..7e8f53d 100644
--- a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
+++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
@@ -1,60 +1,340 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="width"
-    :visible="visible"
-    switchFullscreen
-    @ok="handleOk"
-    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
-    @cancel="handleCancel"
-    cancelText="鍏抽棴">
-    <torqueconfiguration-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></torqueconfiguration-form>
-  </j-modal>
+  <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="['equipmentId', validatorRules.equipmentId]"
+                              @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 :disabled="disableSubmit" placeholder="璇疯緭鍏ユ壄鐭╁��"
+                       v-decorator="['torqueValue', validatorRules.torqueValue]"/>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-form-item label="澶囨敞" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
+            <a-input   v-decorator="['notes', validatorRules.notes]" placeholder="璇疯緭鍏ュ娉�"  ></a-input>
+          </a-form-item>
+        </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 './TorqueconfigurationModalList'
+  // import JDate from './JDate'
+  import {
+    getAction,
+    postAction,
+    requestPut
+  } from '@/api/manage'
+  import {
+    duplicateCheck
+  } from '@/api/api'
 
-  import TorqueconfigurationForm from './TorqueconfigurationForm'
   export default {
     name: 'TorqueconfigurationModal',
-    components: {
-      TorqueconfigurationForm
-    },
-    data () {
+    components: {TorqueconfigurationModalList},
+    props: {},
+    data() {
       return {
-        title:'',
-        width:800,
+        mesag:21,
+        readOnly:true,
+        title: '',
         visible: false,
-        disableSubmit: 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: 1
+          }
+        },
+
+        url: {
+          add: '/mdc/MdcTorqueConfig/addMdcTorqueConfig',
+          edit: '/mdc/MdcTorqueConfig/editMdcTorqueConfig'
+        },
+
+        disableSubmit: true,
+        partCategoryCascade: [],
+        cascadeDefaultValue: []
       }
     },
+    created() {
+    },
+
     methods: {
-      add () {
-        this.visible=true
-        this.$nextTick(()=>{
-          this.$refs.realForm.add();
+      // 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 equipmentId;
+        for(var i = 0;i<val.length;i++){
+          if (i == 0) {
+            equipmentId =  val[i].equipmentId;
+          } else {
+            equipmentId = equipmentId + "," + val[i].equipmentId;
+          }
+        }
+        // console.log("========",equipmentIds);
+        this.form.setFieldsValue({
+          equipmentId: equipmentId,
+        })
+        //   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
+      },
+      //绾ц仈妗唎nChange浜嬩欢
+      // onChange(value) {
+      //
+      // },
+      getParentIdsById(id) {
+        let that = this
+        getAction(this.url.getParentIdsById, {
+          id: id
+        }).then((res) => {
+          if (res.success) {
+            that.form.setFieldsValue({
+              partCategoryId: res.result
+            })
+          }
         })
       },
-      edit (record) {
-        this.visible=true
-        this.$nextTick(()=>{
-          this.$refs.realForm.edit(record);
+      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
         })
       },
-      close () {
-        this.$emit('close');
-        this.visible = false;
+      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',
+          ))
+        })
       },
-      handleOk () {
-        this.$refs.realForm.submitForm();
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.show = false
       },
-      submitCallback(){
-        this.$emit('ok');
-        this.visible = 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.$message.success(res.message)
+                    that.$emit('ok', res.result)
+                  } else {
+                    that.$message.warning(res.message)
+                  }
+                }).finally(() => {
+                  that.confirmLoading = false
+                  that.close()
+                })
+              }
+            // }
+
+          // }
+        })
       },
-      handleCancel () {
+      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>
\ No newline at end of file
+</script>
+
+<style scoped>
+  .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;
+  }
+</style>
diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue
new file mode 100644
index 0000000..39c77fd
--- /dev/null
+++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalEdit.vue
@@ -0,0 +1,331 @@
+<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 :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-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/mdcEquipmentRepair/edit'
+        },
+
+        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
+      },
+      //绾ц仈妗唎nChange浜嬩欢
+      // 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',
+          ))
+        })
+      },
+      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
+                  })
+                  let shijian = startOne
+                }
+                obj.then((res) => {
+                  if (res.success) {
+                    // that.$message.success("淇敼鎴愬姛")
+                    that.$message.success(res.message)
+                    that.$emit('ok', res.result)
+                  } else {
+                    that.$message.warning(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>
+  .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;
+  }
+</style>
diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalList.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalList.vue
new file mode 100644
index 0000000..270c9d8
--- /dev/null
+++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModalList.vue
@@ -0,0 +1,284 @@
+<template>
+  <a-modal :title="title" :width="1000" :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">
+              <a-form-item label="閮ㄩ棬" >
+                <!--<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: 300聽}" :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 {
+    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: 'DeviceRepairListModel',
+    mixins: [JeecgListMixin],
+    components: {
+      JDictSelectTag,
+      JEllipsis,
+      JInput,
+      Tooltip,
+      JDate
+    },
+    props: {
+      status: {
+        type: Number,
+        default: 1
+      }
+    },
+    data() {
+      return {
+        treeData:[],
+        readOnly:true,
+        title:'',
+        visible: false,
+        disableMixinCreated: true,
+        queryParam: {},
+        columns: [{
+          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() {
+
+    },
+    watch: {
+      value(value) {
+        // console.log(value);
+        this.queryParam.departId = value
+      },
+      valueProduct(value){
+        this.queryParam.productionId = value
+      }
+    },
+
+    methods: {
+      openPage() {
+        this.visible = true
+        this.onClearSelected()
+        this.dataSource = [];
+        this.queryParam = {
+          status: this.status
+        };
+        this.loadData();
+        this.initOptions();
+        this.initGroupOptions()
+      },
+      onSelectChange(selectedRowKeys, selectionRows) {
+        // this.SelectedList.push(selectedRowKeys);
+        this.selectedRowKeys = selectedRowKeys;
+        this.selectionRows = selectionRows
+        // this.SelectedList =[...this.SelectedList,...selectionRows];
+        // console.log(this.SelectedList);
+      },
+      loadData(arg) {
+        if(!this.url.list){
+          this.$message.error("璇疯缃畊rl.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)
+          }
+        }).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.$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)
+          }
+        })
+      },
+
+
+      initGroupOptions() {
+        getAction(this.url.loadProductionOptions).then(res => {
+          if (res.success) {
+            this.sectionData = res.result
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      }
+    },
+  }
+</script>
+<style>
+  @import '~@assets/less/common.less';
+
+  .frozenRowClass {
+    color: #c9c9c9;
+  }
+
+  .success {
+    color: green;
+  }
+
+  .error {
+    color: red;
+  }
+</style>
diff --git a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
index 6352ce8..5b9905b 100644
--- a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
+++ b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -50,6 +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: 100px; max-width: 100px;width: 100px;"></th>
+              <th  class="thgu dong1 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;"></th>
+              <th  class="thgu dong1 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;"></th>
               <th class="thgu dong1 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿</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: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th>
@@ -71,10 +74,12 @@
             </thead>
             <tbody>
             <tr class="mathData" v-for="(item, index) in dataList">
+              <td :rowspan="item.level1span" :class="{hidden: item.level1dis}"  v-show="!item.level1dis">{{item.level1}}</td>
+              <td :rowspan="item.level2span" :class="{hidden: item.level2dis}"  v-show="!item.level2dis">{{item.level2}}</td>
+              <td :rowspan="item.level3span" :class="{hidden: item.level3dis}"  v-show="!item.level3dis">{{item.level3}}</td>
               <td class="tdgu  kaitou">{{item.equipmentId}}</td>
               <td  class="tdgu1 kaitou">{{item.equipmentName}}</td>
               <td  class="tdgu2 kaitou">{{item.equipmentType}}</td>
-              <!--<td>{{item.tierType}}</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">
@@ -139,7 +144,8 @@
         list: '/mdc/efficiencyReport/efficiencyList',
         listByType: '/mdc/MdcUtilizationRate/listByType'
       },
-      tableHeads: []
+      tableHeads: [],
+
     }
   },
   props: { nodeTree: '',Type:'',nodePeople:'' },
@@ -191,6 +197,93 @@
     }
   },
   methods: {
+    checkSameData(dataList){
+      let cache = {};  //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣
+      let indices = [];  //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍�
+      dataList.map((item,index)=>{
+        let level1 = item.level1;
+        let _index = cache[level1];
+        if(_index!==undefined){
+          indices[_index].push(index)
+        }else{
+          cache[level1] = indices.length
+          indices.push([index])
+        }
+      })
+      let result = [];
+      indices.map((item)=>{
+        item.map((index)=>{
+          result.push(dataList[index])
+        })
+      })
+      this.dataList = result
+    },
+    checkSameData1(dataList){
+      let cache = {};  //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣
+      let indices = [];  //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍�
+      dataList.map((item,index)=>{
+        let level2 = item.level2;
+        let _index = cache[level2];
+        if(_index!==undefined){
+          indices[_index].push(index)
+        }else{
+          cache[level2] = indices.length
+          indices.push([index])
+        }
+      })
+      let result = [];
+      indices.map((item)=>{
+        item.map((index)=>{
+          result.push(dataList[index])
+        })
+      })
+      this.dataList = result
+    },
+    checkSameData2(dataList){
+      let cache = {};  //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣
+      let indices = [];  //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍�
+      dataList.map((item,index)=>{
+        let level3 = item.level3;
+        let _index = cache[level3];
+        if(_index!==undefined){
+          indices[_index].push(index)
+        }else{
+          cache[level3] = indices.length
+          indices.push([index])
+        }
+      })
+      let result = [];
+      indices.map((item)=>{
+        item.map((index)=>{
+          result.push(dataList[index])
+        })
+      })
+      this.dataList = result
+    },
+    // 鍚堝苟
+    combineCell() {
+      console.log(this.dataList)
+      let list =this.dataList;
+      for (let field in list[0]) {
+        var k = 0;
+        while (k < list.length) {
+          list[k][field + 'span'] = 1;
+          list[k][field + 'dis'] = false;
+          for (var i = k + 1; i <= list.length - 1; i++) {
+            if (list[k][field] == list[i][field] && list[k][field] != '') {
+              list[k][field + 'span']++;
+              list[k][field + 'dis'] = false;
+              list[i][field + 'span'] = 1;
+              list[i][field + 'dis'] = true;
+            } else {
+              break;
+            }
+          }
+          k = i;
+        }
+      }
+      return list;
+    },
     disabledDate(current){
       //Can not slect days before today and today
       return current && current > moment().subtract('days', 1);
@@ -282,7 +375,12 @@
         if (res.success) {
           this.tableHeads = res.result.dates
           this.dataList = res.result.mdcEfficiencyList
+          this.checkSameData(this.dataList)
+          this.checkSameData1(this.dataList)
+          this.checkSameData2(this.dataList)
+          this.combineCell();
           this.initDeviceType(this.dataList)
+
         }
       })
     }
@@ -437,7 +535,9 @@
 .dataContent .mathData .tdd {
   /*display: none;*/
 }
-
+td {
+  vertical-align: middle;
+}
 .pink {
   background-color: #ff9bd2;
 }

--
Gitblit v1.9.3