소스 검색

按照IOT TPM样式修改;以及因为样式修改的文件和代码

yuhan 4 달 전
부모
커밋
e0efa8f2e6

+ 4 - 0
src/assets/drag.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="32" viewBox="0 0 24 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="4.5" y="0.5" width="15" height="31" rx="7.5" fill="#FAFAFA" stroke="#E1E1E1"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.9998 14C13.1045 14 14 13.1045 14 12.0001C14 10.8955 13.1045 10 11.9998 10C10.8955 10 10 10.8955 10 12.0001C10 13.1045 10.8955 14 11.9998 14ZM11.9998 22.0005C13.1045 22.0005 14 21.105 14 20.0006C14 18.896 13.1045 18.0005 11.9998 18.0005C10.8955 18.0005 10 18.896 10 20.0006C10 21.105 10.8955 22.0005 11.9998 22.0005Z" fill="#89898A"/>
+</svg>

+ 3 - 0
src/assets/group-hover.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.61399 2H1.99985V22.0001H22V3.99968H11.6136L9.61399 2ZM3.99998 5.99982H19.9998V20H3.99998V5.99982Z" fill="#323233"/>
+</svg>

+ 229 - 21
src/assets/less/interLock.css

@@ -12,13 +12,129 @@
     }
   } 
 */
+/* flex布局 */
+.u-flex,
+.u-flex-jac,
+.u-flex-jab,
+.u-flex-jaa,
+.u-flex-cjac,
+.u-flex-cjab {
+  display: flex;
+}
+.fd-column,
+.u-flex-cjac,
+.u-flex-cjab {
+  flex-direction: column;
+}
+.jc-center,
+.u-flex-jac,
+.u-flex-cjac {
+  justify-content: center;
+}
+.jc-sb,
+.u-flex-jab,
+.u-flex-cjab {
+  justify-content: space-between;
+}
+.jc-sa,
+.u-flex-jaa {
+  justify-content: space-around;
+}
+.jc-start {
+  justify-content: flex-start;
+}
+.jc-end {
+  justify-content: flex-end;
+}
+.ai-center,
+.u-flex-jab,
+.u-flex-jac,
+.u-flex-jaa,
+.u-flex-cjac {
+  align-items: center;
+}
+.ai-start {
+  align-items: flex-start;
+}
+.ai-end {
+  align-items: flex-end;
+}
+.ai-stretch {
+  align-items: stretch;
+}
+.f1 {
+  flex: 1;
+}
+.f-auto {
+  flex: auto;
+}
 /**IoT TPM相关 修改框架 */
-.iotmenu-content-container .iotmenu-content-layout {
+/** 布局设置 */
+.iotmenu {
+  display: block !important;
+  height: 100vh;
+  overflow: hidden;
+  background-color: #EDEDED !important;
+}
+.iotmenu .ant-layout-header {
+  background: transparent;
+  height: 56px !important;
+}
+.iotmenu .ant-layout-header .header {
+  background-color: #fff !important;
+  color: #000000 !important;
+  box-shadow: 0 2px 4px 0 rgba(50, 50, 51, 0.5) !important;
+  z-index: 999 !important;
+  padding: 0 !important;
+}
+.iotmenu .ant-layout-header .iotmenu-header {
+  height: 56px !important;
+}
+.iotmenu .ant-layout-header .iotmenu-header .top-line {
+  width: 100%;
+  height: 8px;
+  background: linear-gradient(90deg, #019ff3, #004280);
+}
+.iotmenu .ant-layout-header .iotmenu-header .iotmenu-header-content {
+  height: 48px !important;
+  line-height: 48px !important;
+}
+.iotmenu .ant-layout-header .iotmenu-header .iotmenu-header-content .user-wrapper .avatar {
+  margin: 0 10px 0 0 !important;
+}
+.iotmenu .ant-layout-header .iotmenu-header .iotmenu-header-text {
+  font-size: 23px;
+  font-weight: 700;
+  color: #004280;
+  letter-spacing: 1px;
+}
+.iotmenu .ant-layout-content {
+  display: flex !important;
+  height: calc(100vh - 56px) !important;
+  overflow: hidden;
+}
+.iotmenu .ant-layout-content .ant-layout-sider {
+  height: 100%;
+  overflow: auto;
+}
+.iotmenu .ant-layout-content .iotmenu-content-container {
+  width: 100%;
+  height: calc(100% - 6px);
+  overflow: hidden;
+}
+/** 内容设置 */
+.iotmenu-content-container,
+.iotmenu-modal-box {
+  /** tag不同样式 */
+}
+.iotmenu-content-container .iotmenu-content-layout,
+.iotmenu-modal-box .iotmenu-content-layout {
   height: 100%;
   overflow: hidden;
   /** 系统自带的main */
 }
-.iotmenu-content-container .iotmenu-content-layout .iotmenu-content-header {
+.iotmenu-content-container .iotmenu-content-layout .iotmenu-content-header,
+.iotmenu-modal-box .iotmenu-content-layout .iotmenu-content-header {
   width: 160px;
   height: 48px;
   display: flex;
@@ -31,49 +147,73 @@
   font-size: 16px;
   font-weight: 700;
 }
-.iotmenu-content-container .iotmenu-content-layout .iotmenu-content-header .anticon {
+.iotmenu-content-container .iotmenu-content-layout .iotmenu-content-header .anticon,
+.iotmenu-modal-box .iotmenu-content-layout .iotmenu-content-header .anticon {
   color: #008cd6;
   padding-right: 12px;
 }
-.iotmenu-content-container .iotmenu-content-layout .iotmenu-content {
-  height: calc(100vh - 59px - 48px - 6px);
+.iotmenu-content-container .iotmenu-content-layout .iotmenu-content,
+.iotmenu-modal-box .iotmenu-content-layout .iotmenu-content {
+  height: calc(100vh - 56px - 48px - 6px);
   background: #FAFAFA;
   overflow: auto;
 }
-.iotmenu-content-container .ant-btn-primary {
+.iotmenu-content-container .ant-btn-primary,
+.iotmenu-modal-box .ant-btn-primary {
   background: #008cd6 !important;
   border-color: #1890ff !important;
   font-size: 16px;
 }
-.iotmenu-content-container .table-page-search-wrapper .ant-form .ant-form-item .ant-form-item-label label {
+.iotmenu-content-container .table-page-search-wrapper .ant-form .ant-form-item .ant-form-item-label label,
+.iotmenu-modal-box .table-page-search-wrapper .ant-form .ant-form-item .ant-form-item-label label {
   color: #323233;
   font-size: 16px;
   font-weight: 400;
 }
-.iotmenu-content-container .ant-table {
+.iotmenu-content-container .ant-input,
+.iotmenu-modal-box .ant-input,
+.iotmenu-content-container .ant-select-selection,
+.iotmenu-modal-box .ant-select-selection {
+  background: transparent;
+  color: #323233;
+}
+.iotmenu-content-container .ant-table,
+.iotmenu-modal-box .ant-table {
   background: transparent !important;
 }
-.iotmenu-content-container .ant-table .ant-table-thead tr th {
+.iotmenu-content-container .ant-table .ant-table-thead tr th,
+.iotmenu-modal-box .ant-table .ant-table-thead tr th {
   color: #323233 !important;
   font-size: 16px !important;
   font-weight: 700 !important;
 }
-.iotmenu-content-container .ant-table .ant-table-tbody tr td {
+.iotmenu-content-container .ant-table .ant-table-tbody tr td,
+.iotmenu-modal-box .ant-table .ant-table-tbody tr td {
   color: #323233 !important;
   font-size: 15px;
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar {
+.iotmenu-content-container .ant-table-fixed-left table,
+.iotmenu-modal-box .ant-table-fixed-left table,
+.iotmenu-content-container .ant-table-fixed-right table,
+.iotmenu-modal-box .ant-table-fixed-right table {
+  background: #FAFAFA;
+}
+.iotmenu-content-container .ant-tabs .ant-tabs-bar,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar {
   margin: 0 !important;
   border: none;
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container {
+.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar .ant-tabs-nav-container {
   height: 48px !important;
   margin: 0;
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap {
+.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap {
   height: 48px !important;
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab {
+.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab {
   width: 160px;
   height: 48px !important;
   line-height: 48px;
@@ -86,25 +226,93 @@
   border: transparent;
   border-radius: 8px 8px 0 0;
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active {
+.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active {
   color: #323233;
   background: #fafafa;
   border: transparent;
   box-shadow: 0 3px 8px 0 rgba(2, 72, 109, 0.15);
 }
-.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active .anticon {
+.iotmenu-content-container .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active .anticon,
+.iotmenu-modal-box .ant-tabs .ant-tabs-bar .ant-tabs-nav-container .ant-tabs-nav-wrap .ant-tabs-nav .ant-tabs-tab-active .anticon {
   color: #008cd6;
 }
-.iotmenu-content-container .interlock-detail-header {
-  font-size: 24px;
+.iotmenu-content-container .interlock-detail-header,
+.iotmenu-modal-box .interlock-detail-header {
+  font-size: 22px;
   font-weight: 700;
   color: #323233;
   padding: 8px 24px;
+  line-height: 40px;
 }
-.iotmenu-content-container .interlock-detail-header .anticon {
+.iotmenu-content-container .interlock-detail-header .anticon,
+.iotmenu-modal-box .interlock-detail-header .anticon {
   color: #008cd6;
-  padding-right: 4px;
+  padding-right: 8px;
 }
-.iotmenu-content-container .ant-card {
+.iotmenu-content-container .ant-card,
+.iotmenu-modal-box .ant-card {
   background: #FAFAFA;
 }
+.iotmenu-content-container .normal-tag,
+.iotmenu-modal-box .normal-tag {
+  display: inline-block;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  font-size: 15px;
+  padding: 0 8px;
+  border-radius: 16px;
+  color: #00cc66;
+  background: linear-gradient(0deg, rgba(182, 240, 211, 0.5), rgba(182, 240, 211, 0.5)), #ffffff;
+  border: 1px solid #b6f0d3;
+}
+.iotmenu-content-container .abnormal-tag,
+.iotmenu-modal-box .abnormal-tag {
+  display: inline-block;
+  border-color: #ff9d34;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  font-size: 15px;
+  padding: 0 8px;
+  border-radius: 16px;
+  color: #fa8c16;
+  background: linear-gradient(0deg, rgba(240, 220, 182, 0.5), rgba(240, 217, 182, 0.5)), #ffffff;
+  border: 1px solid #f0e2b6;
+}
+.iotmenu-modal-box .ant-modal .ant-modal-title {
+  font-size: 18px;
+}
+.iotmenu-modal-box .ant-modal .ant-modal-body .ant-form label {
+  font-size: 15px !important;
+  color: #323233;
+}
+.iotmenu-modal-box .ant-modal .ant-modal-body .ant-form .ant-form-item-children {
+  font-size: 15px;
+}
+.iotmenu-modal-box .ant-modal .ant-modal-body .ant-form .ant-form-item .ant-form-item-control {
+  font-size: 15px !important;
+}
+.iotmenu-modal-box .ant-modal .ant-divider {
+  font-size: 14px;
+}
+.iotmenu-modal-box .ant-modal .ant-table .ant-table-thead tr th {
+  color: #323233 !important;
+  font-size: 15px !important;
+  font-weight: 700 !important;
+}
+.iotmenu-modal-box .ant-modal .ant-table .ant-table-tbody tr td {
+  color: #323233 !important;
+  font-size: 15px;
+}
+.iotmenu-modal-box .ant-modal .ant-table-fixed-left table,
+.iotmenu-modal-box .ant-modal .ant-table-fixed-right table {
+  background: #fff;
+}
+::-webkit-scrollbar {
+  width: 6px !important;
+}
+::-webkit-scrollbar-track {
+  background: #FFFFFF !important;
+}

+ 186 - 4
src/assets/less/interLock.less

@@ -13,12 +13,87 @@
   } 
 */
 
+/* flex布局 */
+.u-flex,.u-flex-jac,.u-flex-jab,.u-flex-jaa,.u-flex-cjac,.u-flex-cjab{ display: flex; }
+.fd-column,.u-flex-cjac,.u-flex-cjab{ flex-direction: column; }
+.jc-center,.u-flex-jac,.u-flex-cjac{ justify-content: center; }
+.jc-sb,.u-flex-jab,.u-flex-cjab{ justify-content: space-between; }
+.jc-sa,.u-flex-jaa{ justify-content: space-around; }
+.jc-start{ justify-content: flex-start; }
+.jc-end{ justify-content: flex-end; }
+.ai-center,.u-flex-jab,.u-flex-jac,.u-flex-jaa,.u-flex-cjac{ align-items: center; }
+.ai-start{ align-items: flex-start; }
+.ai-end{ align-items: flex-end; }
+.ai-stretch{ align-items: stretch; }
+.f1{ flex: 1; }
+.f-auto{ flex: auto; }
+
 /**IoT TPM相关 修改框架 */
 @iotTpmFontColor: #323233;
 @iotTpmContentBg: #FAFAFA;
 
+@iotHContentHeight: 48px;
+@iotHLineHeight: 8px;
+@iotHHeight: 56px;
 
-.iotmenu-content-container{
+/** 布局设置 */
+.iotmenu{
+  display: block !important;
+  height: 100vh;
+  overflow: hidden;
+  background-color: #EDEDED !important;
+  .ant-layout-header{
+    background: transparent;
+    height: @iotHHeight !important;
+    .header{
+      // height: 56px !important;
+      background-color: #fff !important;
+      color: rgba(0,0,0,65) !important;
+      box-shadow: 0 2px 4px 0 rgba(50,50,51,.5) !important;
+      z-index: 999 !important;
+      padding: 0 !important;
+    }
+    .iotmenu-header{
+      height: @iotHHeight !important;
+      .top-line{
+        width: 100%;
+        height: @iotHLineHeight;
+        background: linear-gradient(90deg,#019ff3,#004280);
+      }
+      .iotmenu-header-content{
+        height: @iotHContentHeight !important;
+        line-height: @iotHContentHeight !important;
+        .user-wrapper{
+          .avatar{
+            margin: 0 10px 0 0 !important;
+          }
+        }
+      }
+      .iotmenu-header-text{
+        font-size: 23px;
+        font-weight: 700;
+        color: #004280;
+        letter-spacing: 1px;
+      }
+    }
+  }
+  .ant-layout-content{
+    display: flex !important;
+    height: calc(100vh - 56px) !important;
+    overflow: hidden;
+    .ant-layout-sider{
+      height: 100%;
+      overflow: auto;
+    }
+    .iotmenu-content-container{
+      width: 100%;
+      height: calc(100% - 6px);
+      overflow: hidden;
+    }
+  }
+}
+/** 内容设置 */
+.iotmenu-content-container, .iotmenu-modal-box{
   .iotmenu-content-layout{
     height: 100%;
     overflow: hidden;
@@ -53,7 +128,7 @@
     }
     .iotmenu-content{
       // height: calc(100% - 48px);
-      height: calc(100vh - 59px - 48px - 6px);
+      height: calc(100vh - @iotHHeight - 48px - 6px);
       background: @iotTpmContentBg;
       overflow: auto;
     }
@@ -76,6 +151,11 @@
       }
     }
   }
+  // 
+  .ant-input, .ant-select-selection{
+    background: transparent;
+    color: #323233;
+  }
   // 表格
   .ant-table{
     background: transparent !important;
@@ -97,6 +177,9 @@
       }
     }
   }
+  .ant-table-fixed-left table, .ant-table-fixed-right table{
+    background: #FAFAFA;
+  }
   // tab标签
   .ant-tabs{
     .ant-tabs-bar{
@@ -146,16 +229,115 @@
   }
   // 详情页面头部
   .interlock-detail-header{
-    font-size: 24px; 
+    font-size: 22px; 
     font-weight: 700;
     color: @iotTpmFontColor;
     padding: 8px 24px;
+    line-height: 40px;
     .anticon{
       color: #008cd6;
-      padding-right: 4px;
+      padding-right: 8px;
     }
   }
   .ant-card{
     background: @iotTpmContentBg;
   }
+  /** tag不同样式 */
+  .normal-tag{
+    // color: #52c41a;
+
+    // color: #52c41a;
+    // background: #f6ffed;
+    // border-color: #b7eb8f;
+
+    display: inline-block;
+    height: 24px;
+    line-height: 24px;
+    text-align: center;
+    font-size: 15px;
+    padding: 0 8px;
+    border-radius: 16px;
+    color: rgb(0, 204, 102);
+    background: linear-gradient(0deg, rgba(182, 240, 211, 0.5), rgba(182, 240, 211, 0.5)), rgb(255, 255, 255);
+    border: 1px solid rgb(182, 240, 211);
+  }
+  .abnormal-tag{
+    // color: #f56c6c;
+
+    // color: #fa8c16;
+    // background: #fff7e6;
+    // border-color: #ffd591;
+
+    display: inline-block;
+    border-color: #ff9d34;
+    height: 24px;
+    line-height: 24px;
+    text-align: center;
+    font-size: 15px;
+    padding: 0 8px;
+    border-radius: 16px;
+    color: #fa8c16;
+    background: linear-gradient(0deg, rgba(240, 220, 182, 0.5), rgba(240, 217, 182, 0.5)), rgb(255, 255, 255);
+    border: 1px solid rgb(240, 226, 182);
+  }
+}
+.iotmenu-modal-box{
+  .ant-modal{
+    .ant-modal-title{
+      font-size: 18px;
+    }
+    .ant-modal-body{
+      .ant-form{
+        label{
+          font-size: 15px !important;
+          color: #323233;
+        }
+        .ant-form-item-children{
+          font-size: 15px;
+        }
+        .ant-form-item{
+          .ant-form-item-label{
+          }
+          .ant-form-item-control{
+            font-size: 15px !important;
+          }
+        }
+      }
+    }
+    // 分割线
+    .ant-divider{
+      font-size: 14px;
+    }
+    // 表格
+    .ant-table{
+      // background: transparent !important;
+      .ant-table-thead{
+        tr{
+          th{
+            color: @iotTpmFontColor !important;
+            font-size: 15px !important;
+            font-weight: 700 !important;
+          }
+        }
+      }
+      .ant-table-tbody{
+        tr{
+          td{
+            color: @iotTpmFontColor !important;
+            font-size: 15px;
+          }
+        }
+      }
+    }
+    .ant-table-fixed-left table, .ant-table-fixed-right table{
+      background: #fff;
+    }
+  }
+}
+// 滚动条样式
+::-webkit-scrollbar{
+  width: 6px !important;
 }
+::-webkit-scrollbar-track{
+  background: #FFFFFF !important;
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
src/assets/refresh-hover.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
src/assets/refresh.svg


+ 3 - 0
src/components/jeecg/JModal/JModal.vue

@@ -102,6 +102,9 @@ export default {
       modalClass() {
         return {
           'j-modal-box': true,
+          // IoT TPM相关 修改框架
+          'iotmenu-modal-box': true,
+          // 'iotmenu-modal-box': this.layoutMode === 'iotmenu' ? true : false,
           'fullscreen': this.innerFullscreen,
           'no-title': this.isNoTitle,
           'no-footer': this.isNoFooter,

+ 33 - 1
src/components/menu/SideMenu.vue

@@ -131,6 +131,7 @@
           color: #323233;
           // line-height: 24px;
           font-weight: 700;
+          // margin: 0; // 一模一样
         }
         // 子级每一个
         .ant-menu-item{
@@ -153,13 +154,44 @@
       }
       // 打开状态下当前菜单的子级区域 
       ul.ant-menu-sub{
+        position: relative;
+        &::before{
+          content: "";
+          display: table;
+          position: absolute;
+          // left: 38px; // 一模一样
+          left: 54px;
+          background-color: #c8c8c8;
+          width: 1px;
+          height: 100%;
+          z-index: 8;
+        }
         // 每一个子级页面菜单(无子级)
         .ant-menu-item{
-
+          // margin: 0; // 一模一样
+          margin-top: 0;
+          padding-left: 64px !important;
         }
         // 选中的子级页面菜单(无子级)
         .ant-menu-item-selected{
           background: linear-gradient(315deg,rgba(11,76,217,.1) 0%,rgba(0,140,214,.1) 100%),#ffffff;
+          position: relative;
+          &::after{
+            display: table;
+            content: "";
+            position: absolute;
+            // left: 38px; // 一模一样
+            left: 54px;
+            background-color: #008cd6;
+            width: 4px;
+            height: 24px;
+            top: 8px;
+            z-index: 8;
+          }
+          a{
+            color: #008cd6;
+            font-weight: 700;
+          }
         }
       }
       

+ 2 - 2
src/components/module_interLock/UEquipmentTree/UEquipmentTree.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="interlock-tree-container">
+  <div class="u-interlock-tree">
     <div v-if="treeData.type != 'history'">
       <a-button  type="primary" icon="plus"  style="width:12%;" @click="handleAdd" v-has="'add:tree'"/>
       <a-input-search style="width:86%;margin-left:2%" allow-clear placeholder="请输入" @change="onChange" />
@@ -215,7 +215,7 @@
 </script>
 
 <style lang="less">
-.interlock-tree-container{
+.u-interlock-tree{
   width: 100%;
   height: 100%;
   background-color: transparent;

+ 168 - 88
src/components/module_interLock/UEquipmentTree/UEquipmentTreeDrag.vue

@@ -2,20 +2,24 @@
   <div id="dragBox" ref="dragBoxRef" class="u-tree-drag">
     <!-- 左侧树 -->
     <div id="leftTree" class="left-tree">
+      <!-- 标题 -->
+      <div class="top-title u-flex-jab">
+        <div class="title">{{ treeTitle }}</div>
+        <div class="refresh" @click="handleRefresh"></div>
+      </div>
       <div class="interlock-tree-container">
-        <div v-if="treeData.type != 'history'">
-          <a-button  type="primary" icon="plus"  style="width:12%;" @click="handleAdd" v-has="'add:tree'"/>
-          <a-input-search style="width:86%;margin-left:2%" allow-clear placeholder="请输入" @change="onChange" />
-        </div>
-        <div v-if="treeData.type == 'history'">
-          <a-input-search style="width:100%;margin-left:2%" allow-clear placeholder="请输入" @change="onChange" />
+        <!-- 搜索+新增 -->
+        <div class="tree-search">
+          <a-button v-if="hasHandleBtn" type="primary" icon="plus" @click="handleAdd" v-has="'add:tree'"/>
+          <a-input-search allow-clear placeholder="请输入" @change="onChange" :class="hasHandleBtn?'has-btn':'noHas-btn'"/>
         </div>
-
+        <!-- 树列表 -->
         <div class="interlock-tree-content">
           <a-tree
             :expanded-keys="expandedKeys"
             auto-expand-parent
             :tree-data="tpmTreeData"
+            :selectedKeys="selectedKeys"
             @expand="onExpand"
             :replace-fields="replaceFields"
             @select="selectNode"
@@ -27,7 +31,7 @@
                   <a-icon slot="icon" type="carry-out" />
                   <span class="item-node-name">{{nodeData.interlockName}}</span>
                 </div>
-                <div v-if="treeData.type != 'history'" v-has="'edit:tree'">
+                <div v-if="hasHandleBtn" v-has="'edit:tree'">
                   <a-dropdown>
                     <a-icon type="more" />
                     <a-menu slot="overlay">
@@ -50,7 +54,10 @@
       </div>
     </div>
     <!-- 拖拽盒子 -->
-    <div class="resize" id="resize" title="收缩侧边栏">⋮</div>
+    <div class="resize" id="resize" title="收缩侧边栏">
+      <span class="resize-btn"></span>
+      <!-- <span class="resize-btn">⋮</span> -->
+    </div>
     <!-- 右侧slot -->
     <div id="rightSlot" class="right-content">
       <slot></slot>
@@ -69,12 +76,20 @@
       BaseInterLockModal
     },
     props: {
-      treeData: {
-        type: Object,
-        default: function(){
-            return {} // 使用工厂函数返回默认值
-        }
+      treeTitle: {
+        type: String,
+        default: '列表'
       },
+      // treeData: {
+      //   type: Array,
+      //   default: function(){
+      //       return [] // 使用工厂函数返回默认值
+      //   }
+      // },
+      hasHandleBtn: {
+        type: Boolean,
+        default: true
+      }
     },
     data () {
       return {
@@ -87,6 +102,7 @@
           children: 'children',
           title: 'interlockName',
         },
+        selectedKeys: [], // 为了设置再次点击不高亮
         url: {
           delete: "/base/interlockBase/delete",
         },
@@ -143,8 +159,6 @@
         // 循环寻找父级
         // console.log(this.findParents(this.tpmTreeData, '287813167808513'))
 
-
-
         // 原版本
         this.tpmTreeData = this.handleTree(filterData, "id", "pid")
         // 现版本
@@ -162,6 +176,20 @@
         //   autoExpandParent: true,
         // });
       },
+      // 树节点选择操作
+      selectNode(selectedKeys, e){
+        if (!e.selected){
+          // 再次点击节点时,不取消高亮
+          return
+        }
+        this.selectedKeys = selectedKeys
+        this.$emit('select', selectedKeys, e)
+      },
+      // 树重置/刷新操作
+      handleRefresh(){
+        this.selectedKeys = []
+        this.$emit('select', this.selectedKeys)
+      },
       // findParents(treeData,id){
       //   let allparents = []
       //   if(treeData.length==0){
@@ -188,9 +216,6 @@
       //   return allparents
 
       // },
-      selectNode(selectedKeys, e){
-        this.$emit('select', selectedKeys, e)
-      },
       handleAdd: function () {
         this.$refs.modalForm.add();
         this.$refs.modalForm.title = "新增";
@@ -250,8 +275,8 @@
             // 左右两边区域的总宽度 = 大容器宽度 - 中间区域拖拉框的宽度
             let maxWidth = dragBox.clientWidth - resize.offsetWidth;
 
-            // 限制左边区域的最小宽度为80px
-            if (moveLen < 180) moveLen = 180;
+            // 限制左边区域的最小宽度为220px
+            if (moveLen < 220) moveLen = 220;
 
             // 右边区域最小宽度为 150px 限制左边区域到150后不能再拉宽
             if (moveLen > maxWidth - 420) moveLen = maxWidth - 420;
@@ -286,26 +311,40 @@
   height: 100%;
   width: 100%;
   display: flex;
+  overflow: hidden;
+  /** 样式设置开始 */
+  // 左侧树
   .left-tree{
     height: 100%;
-    width: 20%;
+    width: 300px;
+    overflow: hidden;
   }
   /*拖拽区div样式*/
   .resize {
-    cursor: col-resize;
-    float: left;
+    width: 1px;
+    height: 100%;
+    background-color: #c8c8c8;
     position: relative;
-    top: 45%;
-    background-color: #d6d6d6;
-    border-radius: 5px;
-    margin-top: -10px;
-    width: 10px;
-    height: 50px;
-    background-size: cover;
-    background-position: center;
-    /*z-index: 99999;*/
-    font-size: 32px;
-    color: white;
+    .resize-btn{
+      width: 16px;
+      height: 32px;
+      cursor: col-resize;
+      z-index: 99;
+      position: absolute;
+      top: 8px;
+      left: -8px;
+      background: url('../../../assets/drag.svg') no-repeat;
+      background-size: 16px 32px;
+      // width: 11px;
+      // height: 50px;
+      // font-size: 32px;
+      // text-align: center;
+      // color: #d6d6d6;
+      // border-radius: 10px;
+      // background-color: #ffffff;
+      // background-size: cover;
+      // background-position: center;
+    }
   }
   /*拖拽区鼠标悬停样式*/
   .resize:hover {
@@ -313,67 +352,108 @@
   }
   /* 右侧 */
   .right-content{
+    width: calc(100% - 301px);
     height: 100%;
-    width: 80%;
+    overflow: auto;
   }
-}
-.interlock-tree-container{
-  width: 100%;
-  height: 100%;
-  background-color: transparent;
-  padding: 15px;
-  // border: 1px solid #CADAE6;
-  // box-shadow: 0px 5px 10px 0 #CADAE6;
-  .interlock-tree-content{
+  /** 样式设置结束 */
+
+  .top-title{
+    height: 48px;
+    line-height: 24px;
+    padding: 12px 24px;
+    border-bottom: 1px solid #e1e1e1;
+    .title{
+      color: #323233;
+      font-size: 16px;
+      font-weight: 700;
+    }
+    .refresh{
+      width: 24px;
+      height: 24px;
+      background: url('../../../assets/refresh.svg') no-repeat;
+      background-size: 24px 24px;
+      cursor: pointer;
+    }
+    .refresh:hover{
+      background: url('../../../assets/refresh-hover.svg') no-repeat;
+      background-size: 24px 24px;
+    }
+  }
+  /** 树区域设置 */
+  .interlock-tree-container{
     width: 100%;
-    height: calc(100% - 40px);
+    height: calc(100% - 48px);
+    background-color: transparent;
     overflow: auto;
-    .ant-tree{
-      li{
-        padding: 0;
-        span.ant-tree-switcher{
-          height: 40px;
-          line-height: 40px;
-        }
-        .ant-tree-node-content-wrapper{
-          height: 40px;
-        }
-        .ant-tree-node-content-wrapper:hover{
-          background: linear-gradient(315deg,rgba(11,76,217,.05) 0%,rgba(11,76,217,.05) 0%,rgba(0,140,214,.05) 100%),#ffffff;
-        }
+    // border: 1px solid #CADAE6;
+    // box-shadow: 0px 5px 10px 0 #CADAE6;
+    .tree-search{
+      padding: 8px 15px;
+      .ant-btn{
+        width: 32px;
+        height: 32px;
+        margin-right: 8px;
       }
-      .ant-tree-title{
-        .item-node-container{
-          width: 100%;
-          display: flex;
-          justify-content: space-between;
-          align-items: center;
-          font-size: 16px;
-          color: #323233;
-          height: 40px;
-        }
-        .item-node-name{
-          padding-left: 8px;
-        }
+      .has-btn{
+        width: calc(100% - 40px);
       }
-      // 节点折叠时
-      .ant-tree-treenode-switcher-close{
-        
+      .noHas-btn{
+        width: 100%;
       }
-      // 节点打开时
-      .ant-tree-treenode-switcher-open{
-
-      }
-      // 节点行被选择时
-      .ant-tree-treenode-selected{
-        // 节点文字
-        .ant-tree-node-selected{
-          background: linear-gradient(to right,#a1c4fd8a 0%,#c2e9fb8a 100%)!important;
-          // background: linear-gradient(to right,#a1c4fd 0%,#c2e9fb 100%)!important;
-          // background: transparent;
+    }
+    .interlock-tree-content{
+      width: 100%;
+      // height: calc(100% - 40px);
+      overflow: auto;
+      padding: 0 15px 10px;
+      .ant-tree{
+        li{
+          padding: 0;
+          span.ant-tree-switcher{
+            height: 40px;
+            line-height: 40px;
+          }
+          .ant-tree-node-content-wrapper{
+            height: 40px;
+          }
+          .ant-tree-node-content-wrapper:hover{
+            background: linear-gradient(315deg,rgba(11,76,217,.05) 0%,rgba(11,76,217,.05) 0%,rgba(0,140,214,.05) 100%),#ffffff;
+          }
+        }
+        .ant-tree-title{
           .item-node-container{
-            // color: #008cd6;
-            // font-weight: 700;
+            width: 100%;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            font-size: 16px;
+            color: #323233;
+            height: 40px;
+          }
+          .item-node-name{
+            padding-left: 8px;
+          }
+        }
+        // 节点折叠时
+        .ant-tree-treenode-switcher-close{
+          
+        }
+        // 节点打开时
+        .ant-tree-treenode-switcher-open{
+  
+        }
+        // 节点行被选择时
+        .ant-tree-treenode-selected{
+          // 节点文字
+          .ant-tree-node-selected{
+            background: linear-gradient(to right,#a1c4fd8a 0%,#c2e9fb8a 100%)!important;
+            // background: linear-gradient(to right,#a1c4fd 0%,#c2e9fb 100%)!important;
+            // background: transparent;
+            .item-node-container{
+              // color: #008cd6;
+              // font-weight: 700;
+            }
           }
         }
       }

+ 1 - 21
src/components/page/GlobalHeader.vue

@@ -39,7 +39,7 @@
           class="trigger"
           :type="collapsed ? 'menu-unfold' : 'menu-fold'"
           @click="toggle"/>
-        <span v-if="device === 'desktop'" style="font-size: 20px;">联锁管理平台</span>
+        <span v-if="device === 'desktop'" class="iotmenu-header-text">联锁管理平台</span>
         <span v-else>联锁管理平台</span>
         <user-menu :theme="theme"/>
       </div>
@@ -215,26 +215,6 @@
   //     }
   //   }
   // }
-  // IoT TPM相关 修改框架
-  @iotHContentHeight: 48px;
-  @iotHLineHeight: 8px;
-  .iotmenu-header{
-    // height: @iotHContentHeight !important;
-    .top-line{
-      width: 100%;
-      height: @iotHLineHeight;
-      background: linear-gradient(90deg,#019ff3,#004280);
-    }
-    .iotmenu-header-content{
-      height: @iotHContentHeight !important;
-      line-height: @iotHContentHeight !important;
-      .user-wrapper{
-        /deep/ .avatar{
-          margin: 0 10px 0 0 !important;
-        }
-      }
-    }
-  }
 
   /* update_begin author:scott date:20190220 for: 缩小首页布局顶部的高度*/
 

+ 0 - 31
src/components/page/GlobalLayout.vue

@@ -358,37 +358,6 @@
       }
     }
 
-    // IoT TPM相关 修改框架 --强制修改布局样式
-    .iotmenu{
-      display: block !important;
-      height: 100vh;
-      overflow: hidden;
-      background-color: #EDEDED !important;
-      .ant-layout-header{
-        .header{
-          // height: 56px !important;
-          background-color: #fff;
-          color: rgba(0,0,0,65);
-          box-shadow: 0 2px 4px 0 rgba(50,50,51,.5);
-          z-index: 999;
-          padding: 0;
-        }
-      }
-      .ant-layout-content{
-        display: flex !important;
-        height: calc(100vh - 56px) !important;
-        overflow: hidden;
-        .ant-layout-sider{
-          height: 100%;
-          overflow: auto;
-        }
-        .iotmenu-content-container{
-          width: 100%;
-          height: calc(100% - 6px);
-          overflow: hidden;
-        }
-      }
-    }
     // // IoT Edge相关 修改框架 --强制修改布局样式
     // .iotmenu{
     //   display: block !important;

+ 17 - 11
src/components/tools/UserMenu.vue

@@ -2,11 +2,13 @@
   <div class="user-wrapper" :class="theme">
     <!-- update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
     <!-- update-begin author:sunjianlei date:20191@20 for: 解决全局样式冲突的问题 -->
-    <span class="action" @click="showClick">
+
+    <!-- IoT TPM相关 修改框架 -->
+    <!-- <span class="action" @click="showClick">
       <a-icon type="search"></a-icon>
-    </span>
+    </span> -->
     <!-- update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
-    <component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false">
+    <!-- <component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false">
       <a-select
         class="search-input"
         showSearch
@@ -22,7 +24,7 @@
       >
         <a-select-option v-for="(site,index) in searchMenuOptions" :key="index" :value="site.id">{{site.meta.title}}</a-select-option>
       </a-select>
-    </component>
+    </component> -->
     <!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
     <!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 -->
     <!-- update_end  author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
@@ -32,14 +34,18 @@
         <a-icon type="question-circle-o"></a-icon>
       </a>
     </span> -->
-    <header-notice class="action"/>
+
+    <!-- IoT TPM相关 修改框架 -->
+    <!-- <header-notice class="action"/> -->
+
+    <!-- IoT TPM相关 修改框架 -->
     <a-dropdown>
       <span class="action action-full ant-dropdown-link user-dropdown-menu">
         <a-avatar class="avatar" size="small" :src="getAvatar()"/>
         <span v-if="isDesktop()">欢迎您,{{ nickname() }}</span>
       </span>
       <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
-        <a-menu-item key="0">
+        <!-- <a-menu-item key="0">
           <router-link :to="{ name: 'account-center' }">
             <a-icon type="user"/>
             <span>个人中心</span>
@@ -50,19 +56,19 @@
             <a-icon type="setting"/>
             <span>账户设置</span>
           </router-link>
-        </a-menu-item>
-        <a-menu-item key="3"  @click="systemSetting">
+        </a-menu-item> -->
+        <!-- <a-menu-item key="3"  @click="systemSetting">
            <a-icon type="tool"/>
            <span>系统设置</span>
-        </a-menu-item>
+        </a-menu-item> -->
         <a-menu-item key="4" @click="updatePassword">
           <a-icon type="setting"/>
           <span>密码修改</span>
         </a-menu-item>
-        <a-menu-item key="5" @click="updateCurrentDepart">
+        <!-- <a-menu-item key="5" @click="updateCurrentDepart">
           <a-icon type="cluster"/>
           <span>切换部门</span>
-        </a-menu-item>
+        </a-menu-item> -->
         <a-menu-item key="6" @click="clearCache">
           <a-icon type="sync"/>
           <span>清理缓存</span>

+ 128 - 126
src/views/module_interLock/InterlockDetail/InterlockDetailList.vue

@@ -2,132 +2,134 @@
   <div>
     <div class="interlock-detail-header">
       <a-icon type="arrow-left" @click="goBack"/>
-      <span>联锁名称</span>
+      <span>{{currentData.detailName ? currentData.detailName : '详情'}}</span>
     </div>
-    <a-card :bordered="false" style="background-color: #FAFAFA;">
-      <!-- 查询区域 -->
-      <div 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-form-item label="联锁总表id">
-                <a-input placeholder="请输入联锁总表id" v-model="queryParam.summaryid"></a-input>
-              </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.interlockname"></a-input>
-              </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.interlockConditionTag"></a-input>
+    <div class="iotmenu-content">
+      <a-card :bordered="false" style="background-color: #FAFAFA;">
+        <!-- 查询区域 -->
+        <div 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-form-item label="联锁总表id">
+                  <a-input placeholder="请输入联锁总表id" v-model="queryParam.summaryid"></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-dict-select-tag placeholder="请选择仪表状态判断方式" v-model="queryParam.instrumentStatusJuge" dictCode="instrument_status_juge"/>
+              </a-col> -->
+              <!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">
+                <a-form-item label="联锁名称">
+                  <a-input placeholder="请输入联锁名称" v-model="queryParam.interlockname"></a-input>
                 </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.interlockConditionTag"></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-dict-select-tag placeholder="请选择仪表状态判断方式" v-model="queryParam.instrumentStatusJuge" dictCode="instrument_status_juge"/>
+                  </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>
-            </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>
-          </a-row>
-        </a-form>
-      </div>
-      <!-- 查询区域-END -->
-  
-      <!-- 操作按钮区域 -->
-      <!-- <div class="table-operator">
-        <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> -->
-        <!-- 高级查询区域 -->
-        <!-- <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>
+            </a-row>
+          </a-form>
+        </div>
+        <!-- 查询区域-END -->
+    
+        <!-- 操作按钮区域 -->
+        <!-- <div class="table-operator">
+          <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> -->
+          <!-- 高级查询区域 -->
+          <!-- <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> -->
-  
-        <a-table
-          ref="table"
-          size="middle"
-          :scroll="{x:true}"
-          bordered
-          rowKey="id"
-          :columns="columns"
-          :dataSource="dataSource"
-          :pagination="ipagination"
-          :loading="loading"
-          class="j-table-force-nowrap"
-          @change="handleTableChange">
-          <!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" -->
-  
-          <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>
-  
-          <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>
-          </span>
-  
-        </a-table>
-      </div>
-  
-      <interlock-detail-modal ref="modalForm" @ok="modalFormOk"></interlock-detail-modal>
-    </a-card>
+    
+        <!-- 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"
+            class="j-table-force-nowrap"
+            @change="handleTableChange">
+            <!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" -->
+    
+            <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>
+    
+            <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>
+            </span>
+    
+          </a-table>
+        </div>
+    
+        <interlock-detail-modal ref="modalForm" @ok="modalFormOk"></interlock-detail-modal>
+      </a-card>
+    </div>
   </div>
 </template>
 
@@ -195,7 +197,7 @@
           {
             title:'逻辑关系',
             align:"center",
-            dataIndex: 'ljgx',
+            dataIndex: 'ljgx_dictText',
             customRender:function (t,r,index) {
               return {children: t,attrs: {rowSpan:r.rowSpan2}};
             },
@@ -213,7 +215,7 @@
           {
             title:'是否旁路',
             align:"center",
-            dataIndex: 'ifBypass_dictText'
+            dataIndex: 'bypassName'
           },
           {
             title:'联锁输出值',
@@ -226,17 +228,17 @@
           {
             title:'输入卡件状态',
             align:"center",
-            dataIndex: 'inputStatus_dictText'
+            dataIndex: 'inputStatusName'
           },
           {
             title:'输出卡件状态',
             align:"center",
-            dataIndex: 'outputStatus_dictText'
+            dataIndex: 'outputStatusName'
           },
           {
             title:'MP状态',
             align:"center",
-            dataIndex: 'mpStatus_dictText'
+            dataIndex: 'mpStatusName'
           },
           // {
           //   title: '操作',

+ 60 - 46
src/views/module_interLock/InterlockSummary/InterlockSummaryList.vue

@@ -57,10 +57,9 @@
 
     <!-- table区域-begin -->
     <div>
-      <!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <span style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
-        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-      </div> -->
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;padding-left: 18px;">
+        <span style="color: #a3a3a3;">回路健康级别:A代表回路健康;B代表回路有故障;C代表回路有严重故障;D代表回路失效;</span>
+      </div>
 
       <a-table
         ref="table"
@@ -77,12 +76,33 @@
         @change="handleTableChange">
         <!-- :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" -->
 
-        <!-- 状态标签 -->
-        <span slot="statusTags" slot-scope="text">
-          <a-tag color="orange">
+        <!-- 仪表状态 -->
+        <span slot="instrumentStatus" slot-scope="text, record">
+          <span :class="record.instrumentStatus === record.instrumentStatusNormal ? 'normal-tag':'abnormal-tag'">
             {{ text }}
-          </a-tag>
+          </span>
+          <!-- <a-tag :color="record.instrumentStatus === record.instrumentStatusNormal ? 'green':'orange'">
+            {{ text }}
+          </a-tag> -->
         </span>
+        <!-- 控制系统状态 -->
+        <span slot="controlSystemStatus" slot-scope="text, record">
+          <span :class="record.controlSystemStatus === record.controlSystemStatusNormal ? 'normal-tag':'abnormal-tag'">
+            {{ text }}
+          </span>
+        </span>
+        <!-- 旁路状态 -->
+        <span slot="bypassStatus" slot-scope="text, record">
+          <span :class="record.bypass === record.bypassYes ? 'normal-tag':'abnormal-tag'">
+            {{ text }}
+          </span>
+        </span>
+        <!-- 联锁状态 -->
+        <!-- <span slot="interlockStatus" slot-scope="text, record">
+          <a-tag :color="record.bypass === record.bypassYes ? 'green':'orange'">
+            {{ text }}
+          </a-tag>
+        </span> -->
 
         <!-- <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
@@ -153,7 +173,7 @@
             title:'联锁名称',
             align:"center",
             dataIndex: 'interlockname',
-            customRender:(t,record,index)=> {
+            customRender:(text,record,index)=> {
               return {children: record.interlockname,attrs: {rowSpan:record.rowSpan}};
             },
             customCell: (record, index)=>{ return this.customCellDetail(record, index)}
@@ -168,7 +188,7 @@
             title:'仪表状态',
             align:"center",
             dataIndex: 'instrumentStatusName',
-            scopedSlots: { customRender: 'statusTags' }
+            scopedSlots: { customRender: 'instrumentStatus' }
           },
           // {
           //   title:'系统id',
@@ -184,41 +204,50 @@
             title:'控制系统状态',
             align:"center",
             dataIndex: 'controlSystemStatusName',
+            scopedSlots: { customRender: 'controlSystemStatus' }
           },
           {
             title:'旁路状态',
             align:"center",
             dataIndex: 'bypassName',
+            scopedSlots: { customRender: 'bypassStatus' }
           },
           {
             title:'联锁状态',
             align:"center",
             dataIndex: 'interlockStatusName',
-            customRender:function (t,r,index) {
-              return {children: t,attrs: {rowSpan:r.rowSpan2}};
+            customRender:function (text,record,index) {
+              let classTag = {
+                class: `${record.interlockStatus === record.interlockStatusTy ? 'normal-tag':'abnormal-tag'}`
+              }
+              return {
+                children: (
+                  <span {...classTag}>{text}</span>
+                ),
+                attrs: {rowSpan:record.rowSpan2}
+              };
             },
           },
           {
             title:'回路健康级别',
             align:"center",
             dataIndex: 'loopHealthLevel',
-            // customRender:function (t,r,index) {
-            //   return {children: t,attrs: {rowSpan:r.rowSpan3}};
-            // },
-            customRender:(t,record,index)=> {
-              const text = record.loopHealthLevel
-              var childrenMore = (
-                // <a-tooltip>
-                //   <template slot="title">
-                //     A:全部正常;
-                //     B:有一个有问题;
-                //     C:有两个有问题;
-                //     D:全部故障
-                //   </template>
-                  <span >{{ text }}</span>
-                // </a-tooltip>
-              )
-              return {children: childrenMore,attrs: {rowSpan:record.rowSpan3}};
+            customRender:(text,record,index)=> {
+              var children
+              if(text === 'A'){
+                children = (<span style="color: #52c41a">{text}</span>)
+                // children = (<a-tag style="color: red">{text}</a-tag>)
+              }
+              if(text === 'B'){
+                children = (<span style="color: #eddf19">{text}</span>)
+              }
+              if(text === 'C'){
+                children = (<span style="color: #fa8c16">{text}</span>)
+              }
+              if(text === 'D'){
+                children = (<span style="color: #f56c6c">{text}</span>)
+              }
+              return {children: children, attrs: {rowSpan:record.rowSpan3}};
             },
           },
           // {
@@ -252,21 +281,6 @@
             customRender: (text,record,index)=> {
               var childrenEdit = (<a onclick={() => { this.handleEdit(record) }}>编辑</a>)
               var childrenDivider = (<a-divider type="vertical"/>)
-              // var childrenMore = (
-              //   <a-dropdown>
-              //     <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
-              //     <a-menu slot="overlay">
-              //       <a-menu-item>
-              //         <a onClick={() => {this.handleDetail(record)}}>详情</a>
-              //       </a-menu-item>
-              //       <a-menu-item>
-              //         <a-popconfirm title="确定删除吗?" onConfirm={() => this.handleDelete(record.summaryid)}>
-              //           <a>删除</a>
-              //         </a-popconfirm>
-              //       </a-menu-item>
-              //     </a-menu>
-              //   </a-dropdown>
-              // )
               var childrenMore = (
                 <a-popconfirm title="确定删除吗?" onConfirm={() => this.handleDelete(record.summaryid)}>
                   <a>删除</a>
@@ -354,7 +368,8 @@
               // this.$router.push({path: '/interLock/detail',query:{summaryid:record.summaryid,interlockSystemId:record.interlockSystemId}})
               var data = {
                 summaryid: record.summaryid,
-                interlockSystemId: record.interlockSystemId
+                interlockSystemId: record.interlockSystemId,
+                detailName: record.interlockname,
               }
               this.$emit('click', data)
             },
@@ -363,7 +378,6 @@
       },
       // 处理父组件传过来的数据
       getDataList(){
-        console.log(111,this.selectData)
         this.interlockType = this.selectData.interlockType
         if (this.selectData.interlockType == 1) {
           this.queryParam.interlockApparatusId = ''

+ 1 - 2
src/views/module_interLock/InterlockSummary/index.vue

@@ -14,7 +14,7 @@
         <span>联锁总表</span>
       </div>
       <div class="iotmenu-content">
-        <u-equipment-tree-drag @select="selectEquipment">
+        <u-equipment-tree-drag treeTitle="装置系统" @select="selectEquipment">
           <interlock-summary-list ref="summaryList" :selectData="selectData" @click="summaryListClick"></interlock-summary-list>
         </u-equipment-tree-drag>
       </div>
@@ -44,7 +44,6 @@
     },
     methods: {
       selectEquipment(selectedKeys,e){
-        // console.log(99,selectedKeys,e)
         if (selectedKeys.length == 0) {
           this.$nextTick(()=>{
             this.$refs.summaryList.searchReset();

+ 3 - 3
src/views/module_interLock/InterlockSummary/modules/InterlockConditionForm.vue

@@ -3,7 +3,7 @@
     <j-form-container>
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
         <a-row>
-          <a-divider orientation="left"> <span style="font-size: 12px;">基本信息</span> </a-divider>
+          <a-divider orientation="left"> <span>基本信息</span> </a-divider>
           <a-col :span="24">
             <a-form-model-item label="联锁条件" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="interlockConditionData">
               <a-cascader
@@ -69,7 +69,7 @@
             </a-form-model-item>
           </a-col>
           <!-- 仪表状态开始 -->
-          <a-divider orientation="left"> <span style="font-size: 12px;">仪表状态</span> </a-divider>
+          <a-divider orientation="left"> <span>仪表状态</span> </a-divider>
           <a-col :span="24">
             <a-form-model-item label="仪表状态判定依据" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="instrumentStatusJuge">
               <a-radio-group name="radioGroup" v-model="model.instrumentStatusJuge" @change="instrumentStatusJugeChange">
@@ -179,7 +179,7 @@
           <!-- 仪表状态结束 -->
 
           <!-- 是否旁路 -->
-          <a-divider orientation="left"> <span style="font-size: 12px;">旁路状态</span> </a-divider>
+          <a-divider orientation="left"> <span>旁路状态</span> </a-divider>
           <a-col :span="24">
             <a-form-model-item label="是否有旁路" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ifBypass">
               <a-radio-group name="radioGroup" v-model="model.ifBypass">

+ 2 - 1
src/views/module_interLock/InterlockSummary/modules/InterlockSummaryForm.vue

@@ -485,10 +485,11 @@
   .interlock-summary-item-title{
     background-color: #F5F7FA;
     line-height: 40px;
-    font-size: 15px;
+    font-size: 16px;
     padding: 0 20px;
     margin-bottom: 10px;
     border-bottom: 1px solid #f3f3f3;
+    color: #323233;
   }
   .u-flex-jab{
     display: flex;

+ 84 - 23
src/views/module_interLock/baseInterLock/modules/BaseInterLockModal.vue

@@ -55,10 +55,11 @@
               </a-select>
               <!-- :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" -->
           </a-form-model-item>
-          <a-divider orientation="left"> <span style="font-size: 12px;">状态值设置</span> </a-divider>
+          <a-divider orientation="left"> <span>状态值设置</span> </a-divider>
           <!-- 控制系统状态 -->
-          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mpStatusNormal">
+          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="controlSystemStatus" ref="controlSystemStatus">
             <span slot="label">
+              <span class="red-star-label">*</span>
               控制系统状态&nbsp;
               <a-tooltip title="选择对应状态代表的参数值并自定义系统中显示的名称">
                 <a-icon type="question-circle-o" />
@@ -67,11 +68,11 @@
             <div style="display: flex;align-items: center;">
               <span style="width: 100px;">正常状态:</span>
               <a-input-group compact>
-                <a-select v-model="model.controlSystemStatusNormal" style="width: 15%" @change="controlNormalChange">
+                <a-select v-model="model.controlSystemStatusNormal" style="width: 15%">
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.controlSystemStatusNormalName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.controlSystemStatusNormalName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('controlSystemStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
             <div style="display: flex;align-items: center;">
@@ -81,14 +82,15 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.controlSystemStatusAbnormalName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.controlSystemStatusAbnormalName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('controlSystemStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
           </a-form-model-item>
 
           <!-- 旁路状态 -->
-          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mpStatusNormal">
+          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bypassStatus" ref="bypassStatus">
             <span slot="label">
+              <span class="red-star-label">*</span>
               旁路状态&nbsp;
               <a-tooltip title="选择对应状态代表的参数值并自定义系统中显示的名称">
                 <a-icon type="question-circle-o" />
@@ -101,7 +103,7 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.bypassYesName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.bypassYesName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('bypassStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
             <div style="display: flex;align-items: center;">
@@ -111,14 +113,15 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.bypassNoName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.bypassNoName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('bypassStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
           </a-form-model-item>
 
           <!-- 仪表状态(位号读取) -->
-          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mpStatusNormal">
+          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="instrumentStatus" ref="instrumentStatus">
             <span slot="label">
+              <span class="red-star-label">*</span>
               仪表状态&nbsp;
               <a-tooltip title="选择对应状态代表的参数值并自定义系统中显示的名称">
                 <a-icon type="question-circle-o" />
@@ -131,7 +134,7 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.instrumentStatusNormalName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.instrumentStatusNormalName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('instrumentStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
             <div style="display: flex;align-items: center;">
@@ -141,14 +144,15 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.instrumentStatusAbnormalName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.instrumentStatusAbnormalName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('instrumentStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
           </a-form-model-item>
 
           <!-- 联锁状态 -->
-          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mpStatusNormal">
+          <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="interlockStatus" ref="interlockStatus">
             <span slot="label">
+              <span class="red-star-label">*</span>
               联锁状态&nbsp;
               <a-tooltip title="选择对应状态代表的参数值并自定义系统中显示的名称">
                 <a-icon type="question-circle-o" />
@@ -161,7 +165,7 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.interlockStatusTyName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.interlockStatusTyName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('interlockStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
             <div style="display: flex;align-items: center;">
@@ -171,7 +175,7 @@
                   <a-select-option value="0"> 0 </a-select-option>
                   <a-select-option value="1"> 1 </a-select-option>
                 </a-select>
-                <a-input v-model="model.interlockStatusWtyName" placeholder="请输入该状态系统中显示名称" style="width: 85%"/>
+                <a-input v-model="model.interlockStatusWtyName" placeholder="请输入该状态系统中显示名称" @change="onStatusChange('interlockStatus')" style="width: 85%"/>
               </a-input-group>
             </div>
           </a-form-model-item>
@@ -231,14 +235,58 @@
 
         confirmLoading: false,
         validatorRules: {
-          // interlockType: [{required: true, message: '请选择类型'}],
-          // interlockName: [{required: true, message: '请输入名称'}],
-          // pid: [{required: true, message: '请选择上级'}],
-          // inputStatusNormal: [{required: true, message: '请设置状态'}],
-          // outputStatusNormal: [{required: true, message: '请设置状态'}],
-          // mpStatusNormal: [{required: true, message: '请设置状态'}],
-          // bypassYes: [{required: true, message: '请设置状态'}],
-          // instrumentStatusNormal: [{required: true, message: '请设置状态'}],
+          interlockType: [{required: true, message: '请选择类型'}],
+          interlockName: [{required: true, message: '请输入名称'}],
+          pid: [{required: true, message: '请选择上级'}],
+          controlSystemStatus: [
+            {
+              validator: (rule, value, callback) => {
+                if(!this.model.controlSystemStatusNormal || !this.model.controlSystemStatusAbnormal || !this.model.controlSystemStatusNormalName || !this.model.controlSystemStatusAbnormalName){
+                  callback(new Error('控制系统状态未全部设置'));
+                } else {
+                  callback()
+                }
+              },
+              trigger: ['blur', 'change']
+            },
+          ],
+          bypassStatus: [
+            // {required: true, message: '请设置控制系统状态'},
+            {
+              validator: (rule, value, callback) => {
+                if(!this.model.bypassYes || !this.model.bypassNo || !this.model.bypassYesName || !this.model.bypassNoName){
+                  callback(new Error('旁路状态未全部设置'));
+                } else {
+                  callback()
+                }
+              },
+              trigger: ['blur', 'change']
+            },
+          ],
+          instrumentStatus: [
+            {
+              validator: (rule, value, callback) => {
+                if(!this.model.instrumentStatusNormal || !this.model.instrumentStatusAbnormal || !this.model.instrumentStatusNormalName || !this.model.instrumentStatusAbnormalName){
+                  callback(new Error('仪表状态未全部设置'));
+                } else {
+                  callback()
+                }
+              },
+              trigger: ['blur', 'change']
+            },
+          ],
+          interlockStatus: [
+            {
+              validator: (rule, value, callback) => {
+                if(!this.model.interlockStatusTy || !this.model.interlockStatusWty || !this.model.interlockStatusTyName || !this.model.interlockStatusWtyName){
+                  callback(new Error('联锁状态未全部设置'));
+                } else {
+                  callback()
+                }
+              },
+              trigger: ['blur', 'change']
+            },
+          ],
         },
         url: {
           add: "/base/interlockBase/add",
@@ -260,6 +308,10 @@
       this.modelDefault = JSON.parse(JSON.stringify(this.model));
     },
     methods: {
+      // 输入框内容变化时调用对应的检验
+      onStatusChange(ref){
+        this.$refs[ref].onFieldChange()
+      },
       // 参数值选择改变时
       controlNormalChange(e){
         this.model.controlSystemStatusAbnormal = e === '0' ? '1' : '0'
@@ -425,4 +477,13 @@
       
     }
   }
-</script>
+</script>
+<style lang="less">
+  .red-star-label{
+    margin-right: 4px;
+    color: #ff4d4f;
+    font-size: 14px;
+    font-family: SimSun, sans-serif;
+    line-height: 1;
+  }
+</style>

+ 15 - 15
src/views/module_interLock/interlockHistoryData/InterlockHistory/InterlockHistoryList.vue

@@ -182,11 +182,6 @@
             align:"center",
             dataIndex: 'interlockConditionTag'
           },
-          {
-            title:'仪表状态',
-            align:"center",
-            dataIndex: 'instrumentStatusName'
-          },
           // {
           //   title:'系统id',
           //   align:"center",
@@ -198,12 +193,9 @@
           //   dataIndex: 'interlockApparatusId'
           // },
           {
-            title:'联锁状态',
+            title:'仪表状态',
             align:"center",
-            dataIndex: 'interlockStatusName',
-            customRender:function (t,r,index) {
-              return {children: t,attrs: {rowSpan:r.rowSpan2}};
-            },
+            dataIndex: 'instrumentStatusName'
           },
           {
             title:'控制系统状态',
@@ -211,17 +203,25 @@
             dataIndex: 'controlSystemStatusName',
           },
           {
-            title:'回路健康级别',
+            title:'旁路状态',
             align:"center",
-            dataIndex: 'loopHealthLevel',
+            dataIndex: 'bypassName',
+          },
+          {
+            title:'联锁状态',
+            align:"center",
+            dataIndex: 'interlockStatusName',
             customRender:function (t,r,index) {
-              return {children: t,attrs: {rowSpan:r.rowSpan3}};
+              return {children: t,attrs: {rowSpan:r.rowSpan2}};
             },
           },
           {
-            title:'旁路状态',
+            title:'回路健康级别',
             align:"center",
-            dataIndex: 'bypass_dictText',
+            dataIndex: 'loopHealthLevel',
+            customRender:function (t,r,index) {
+              return {children: t,attrs: {rowSpan:r.rowSpan3}};
+            },
           },
           {
             title:'时间',

+ 0 - 28
src/views/module_interLock/interlockHistoryData/InterlockTimedReport.vue

@@ -1,28 +0,0 @@
-<template>
-  <div class="iotmenu-content">
-    <InterlockTimedReportList></InterlockTimedReportList>
-  </div>
-</template>
-
-<script>
-import InterlockTimedReportList from '../interlockTimedReport/InterlockTimedReportList.vue'
-export default {
-  name: '',
-  components: {
-    InterlockTimedReportList,
-  },
-  data () {
-    return {
-    }
-  },
-  created () {
-  },
-  mounted () {
-  },
-  methods: {
-  }
-}
-</script>
-
-<style lang="less" scoped>
-</style>

+ 5 - 5
src/views/module_interLock/interlockHistoryData/index.vue

@@ -9,7 +9,7 @@
           </span>
           <!-- <interlock-history-index></interlock-history-index> -->
           <div class="iotmenu-content">
-            <u-equipment-tree-drag @select="selectEquipment" :treeData="treeData">
+            <u-equipment-tree-drag treeTitle="装置系统" @select="selectEquipment" :hasHandleBtn="false">
               <interlock-history-list ref="summaryList" :selectData="selectData" @click="historyListClick"></interlock-history-list>
             </u-equipment-tree-drag>
           </div>
@@ -19,7 +19,9 @@
             <a-icon type="file-text" />
             定时报表
           </span>
-          <interlock-timed-report></interlock-timed-report>
+          <div class="iotmenu-content">
+            <interlock-timed-report></interlock-timed-report>
+          </div>
         </a-tab-pane>
       </a-tabs>
     </template>
@@ -44,9 +46,7 @@
     data () {
       return {
         showPage: 'summary',
-        treeData: {
-          type: 'history',
-        },
+        treeData: [],
         selectData: {}
       }
     },